summaryrefslogtreecommitdiff
path: root/src/analysis/block.h
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2013-01-05 13:30:19 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2013-01-05 13:30:19 (GMT)
commitd626276398a3cdd3cd6432e073a8866aa91418ce (patch)
tree15e4b325ebb0636b26058cd39fda3e1e87b534cc /src/analysis/block.h
parentbfd81d1f289913f4d6e09cd8d99f4aaeed98436b (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.h16
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 *);