aboutsummaryrefslogtreecommitdiff
path: root/gcc/compare-elim.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/compare-elim.c')
-rw-r--r--gcc/compare-elim.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/gcc/compare-elim.c b/gcc/compare-elim.c
index 1761d0d..cc1502d 100644
--- a/gcc/compare-elim.c
+++ b/gcc/compare-elim.c
@@ -120,10 +120,8 @@ struct comparison
};
typedef struct comparison *comparison_struct_p;
-DEF_VEC_P(comparison_struct_p);
-DEF_VEC_ALLOC_P(comparison_struct_p, heap);
-static VEC(comparison_struct_p, heap) *all_compares;
+static vec<comparison_struct_p> all_compares;
/* Look for a "conforming" comparison, as defined above. If valid, return
the rtx for the COMPARE itself. */
@@ -337,7 +335,7 @@ find_comparisons_in_bb (struct dom_walk_data *data ATTRIBUTE_UNUSED,
last_cmp->in_a = XEXP (src, 0);
last_cmp->in_b = XEXP (src, 1);
last_cmp->orig_mode = src_mode;
- VEC_safe_push (comparison_struct_p, heap, all_compares, last_cmp);
+ all_compares.safe_push (last_cmp);
/* It's unusual, but be prepared for comparison patterns that
also clobber an input, or perhaps a scratch. */
@@ -623,24 +621,23 @@ execute_compare_elim_after_reload (void)
{
df_analyze ();
- gcc_checking_assert (all_compares == NULL);
+ gcc_checking_assert (!all_compares.exists ());
/* Locate all comparisons and their uses, and eliminate duplicates. */
find_comparisons ();
- if (all_compares)
+ if (all_compares.exists ())
{
struct comparison *cmp;
size_t i;
/* Eliminate comparisons that are redundant with flags computation. */
- FOR_EACH_VEC_ELT (comparison_struct_p, all_compares, i, cmp)
+ FOR_EACH_VEC_ELT (all_compares, i, cmp)
{
try_eliminate_compare (cmp);
XDELETE (cmp);
}
- VEC_free (comparison_struct_p, heap, all_compares);
- all_compares = NULL;
+ all_compares.release ();
}
return 0;