diff options
author | Patrick Palka <ppalka@gcc.gnu.org> | 2016-01-29 01:51:03 +0000 |
---|---|---|
committer | Patrick Palka <ppalka@gcc.gnu.org> | 2016-01-29 01:51:03 +0000 |
commit | e9f690692b275e87089aedd84cf3325985136e2e (patch) | |
tree | 590e1b14b8e42dbbf8b2efd9ee68b1eb77d4d817 /gcc | |
parent | 3a7d8a85a32cd3d1c2a9ac0de5e6d83260bc85e0 (diff) | |
download | gcc-e9f690692b275e87089aedd84cf3325985136e2e.zip gcc-e9f690692b275e87089aedd84cf3325985136e2e.tar.gz gcc-e9f690692b275e87089aedd84cf3325985136e2e.tar.bz2 |
Fix cp_binding_level reuse logic
gcc/cp/ChangeLog:
* name-lookup.c (begin_scope): After reusing a cp_binding_level
structure, update free_binding_level before the structure's
level_chain field gets cleared, not after.
From-SVN: r232965
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/cp/name-lookup.c | 2 |
2 files changed, 7 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 83a25f7..2c2cdfb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2016-01-29 Patrick Palka <ppalka@gcc.gnu.org> + + * name-lookup.c (begin_scope): After reusing a cp_binding_level + structure, update free_binding_level before the structure's + level_chain field gets cleared, not after. + 2016-01-28 Jason Merrill <jason@redhat.com> PR c++/67407 diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index c52d236..92d99aa 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -1557,8 +1557,8 @@ begin_scope (scope_kind kind, tree entity) if (!ENABLE_SCOPE_CHECKING && free_binding_level) { scope = free_binding_level; - memset (scope, 0, sizeof (cp_binding_level)); free_binding_level = scope->level_chain; + memset (scope, 0, sizeof (cp_binding_level)); } else scope = ggc_cleared_alloc<cp_binding_level> (); |