aboutsummaryrefslogtreecommitdiff
path: root/gcc/cfgloop.h
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cfgloop.h')
-rw-r--r--gcc/cfgloop.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/gcc/cfgloop.h b/gcc/cfgloop.h
index eff0213..432f8fe 100644
--- a/gcc/cfgloop.h
+++ b/gcc/cfgloop.h
@@ -76,7 +76,7 @@ struct GTY ((chain_next ("%h.next"))) nb_iter_bound {
/* Description of the loop exit. */
-struct GTY (()) loop_exit {
+struct GTY ((for_user)) loop_exit {
/* The exit edge. */
edge e;
@@ -88,6 +88,15 @@ struct GTY (()) loop_exit {
struct loop_exit *next_e;
};
+struct loop_exit_hasher : ggc_hasher<loop_exit *>
+{
+ typedef edge compare_type;
+
+ static hashval_t hash (loop_exit *);
+ static bool equal (loop_exit *, edge);
+ static void remove (loop_exit *);
+};
+
typedef struct loop *loop_p;
/* An integer estimation of the number of iterations. Estimate_state
@@ -229,7 +238,7 @@ struct GTY (()) loops {
/* Maps edges to the list of their descriptions as loop exits. Edges
whose sources or destinations have loop_father == NULL (which may
happen during the cfg manipulations) should not appear in EXITS. */
- htab_t GTY((param_is (struct loop_exit))) exits;
+ hash_table<loop_exit_hasher> *GTY(()) exits;
/* Pointer to root of loop hierarchy tree. */
struct loop *tree_root;