aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>2017-11-09 15:57:18 -0700
committerJeff Law <law@gcc.gnu.org>2017-11-09 15:57:18 -0700
commit51308fc3b6cb2d73b52eed78b431a8fd7223c00d (patch)
tree5cf7b700d7275c9f8e406ca0ae7bebdfc1e51711
parent5ac29058f01502c407a7b77ec57a08c96941f796 (diff)
downloadgcc-51308fc3b6cb2d73b52eed78b431a8fd7223c00d.zip
gcc-51308fc3b6cb2d73b52eed78b431a8fd7223c00d.tar.gz
gcc-51308fc3b6cb2d73b52eed78b431a8fd7223c00d.tar.bz2
tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack.
* tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack. Get it from the existing bitmap instead. (vrp_intersect_ranges_1): Likewise. From-SVN: r254611
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-vrp.c11
2 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0dc2057..16bec6e 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2017-11-09 Jeff Law <law@redhat.com>
+
+ * tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack.
+ Get it from the existing bitmap instead.
+ (vrp_intersect_ranges_1): Likewise.
+
2017-11-09 Jakub Jelinek <jakub@redhat.com>
* gimple-ssa-store-merging.c (struct store_immediate_info): Add
diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c
index 2b7d962..8e86b06 100644
--- a/gcc/tree-vrp.c
+++ b/gcc/tree-vrp.c
@@ -272,10 +272,13 @@ set_value_range (value_range *vr, enum value_range_type t, tree min,
vr->max = max;
/* Since updating the equivalence set involves deep copying the
- bitmaps, only do it if absolutely necessary. */
+ bitmaps, only do it if absolutely necessary.
+
+ All equivalence bitmaps are allocated from the same obstack. So
+ we can use the obstack associated with EQUIV to allocate vr->equiv. */
if (vr->equiv == NULL
&& equiv != NULL)
- vr->equiv = BITMAP_ALLOC (&vrp_equiv_obstack);
+ vr->equiv = BITMAP_ALLOC (equiv->obstack);
if (equiv != vr->equiv)
{
@@ -8828,7 +8831,9 @@ vrp_intersect_ranges_1 (value_range *vr0, value_range *vr1)
bitmap_ior_into (vr0->equiv, vr1->equiv);
else if (vr1->equiv && !vr0->equiv)
{
- vr0->equiv = BITMAP_ALLOC (&vrp_equiv_obstack);
+ /* All equivalence bitmaps are allocated from the same obstack. So
+ we can use the obstack associated with VR to allocate vr0->equiv. */
+ vr0->equiv = BITMAP_ALLOC (vr1->equiv->obstack);
bitmap_copy (vr0->equiv, vr1->equiv);
}
}