From 021f9aecca36f486b0f6d5ea609f505b16737e89 Mon Sep 17 00:00:00 2001 From: law Date: Thu, 9 Nov 2017 22:57:18 +0000 Subject: [PATCH] * tree-vrp.c (set_value_range): Do not reference vrp_equiv_obstack. Get it from the existing bitmap instead. (vrp_intersect_ranges_1): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@254611 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/tree-vrp.c | 11 ++++++++--- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0dc2057c08d..16bec6ec00b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2017-11-09 Jeff Law + + * 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 * gimple-ssa-store-merging.c (struct store_immediate_info): Add diff --git a/gcc/tree-vrp.c b/gcc/tree-vrp.c index 2b7d9622f69..8e86b060ae7 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); } } -- 2.11.4.GIT