diff options
author | Cyrille Bagard <nocbos@gmail.com> | 2013-01-05 13:30:19 (GMT) |
---|---|---|
committer | Cyrille Bagard <nocbos@gmail.com> | 2013-01-05 13:30:19 (GMT) |
commit | d626276398a3cdd3cd6432e073a8866aa91418ce (patch) | |
tree | 15e4b325ebb0636b26058cd39fda3e1e87b534cc /src/analysis/block.h | |
parent | bfd81d1f289913f4d6e09cd8d99f4aaeed98436b (diff) |
Refined the definition of basic blocks and used them to build extra clusters for dot.
git-svn-id: svn://svn.gna.org/svn/chrysalide/trunk@317 abbe820e-26c8-41b2-8c08-b7b2b41f8b0a
Diffstat (limited to 'src/analysis/block.h')
-rw-r--r-- | src/analysis/block.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/analysis/block.h b/src/analysis/block.h index 9e136a3..a85e4aa 100644 --- a/src/analysis/block.h +++ b/src/analysis/block.h @@ -79,9 +79,25 @@ typedef struct _GInstrBlock GInstrBlock; typedef struct _GInstrBlockClass GInstrBlockClass; +/* Position au cours d'une visite */ +typedef enum _BlockVisitOrder +{ + BVO_IN, /* Entrée dans un gros bloc */ + BVO_PENDING, /* Visite d'un bloc simple */ + BVO_OUT /* Sortie d'un gros bloc */ + +} BlockVisitOrder; + +/* Rappel à chaque bloc visité */ +typedef bool (* instr_block_visitor_cb) (GInstrBlock *, BlockVisitOrder, void *); + + /* Indique le type défini pour un bloc d'instructions. */ GType g_instr_block_get_type(void); +/* Parcours tous les blocs d'instructions dans un ordre donné. */ +bool g_instr_block_visit(GInstrBlock *, instr_block_visitor_cb, void *); + /* Etablit la liste de tous les blocs présents. */ void g_instr_block_list_all_blocks(const GInstrBlock *, GInstrBlock ***, size_t *); |