diff options
author | Nathaniel Shead <nathanieloshead@gmail.com> | 2024-10-04 10:46:57 +1000 |
---|---|---|
committer | Nathaniel Shead <nathanieloshead@gmail.com> | 2024-10-04 20:30:03 +1000 |
commit | 6a1e109158940ce3a2d1ceed3e1b614ea6c9a2de (patch) | |
tree | 779047dda8867ef16202b793cfb83211b7129392 /gcc/cp | |
parent | 7fb6526652ddd722931407f749a176cfea779147 (diff) | |
download | gcc-6a1e109158940ce3a2d1ceed3e1b614ea6c9a2de.zip gcc-6a1e109158940ce3a2d1ceed3e1b614ea6c9a2de.tar.gz gcc-6a1e109158940ce3a2d1ceed3e1b614ea6c9a2de.tar.bz2 |
c++: Return the underlying decl rather than the USING_DECL from update_binding [PR116913]
Users of pushdecl assume that the returned decl will be a possibly
updated decl matching the one that was passed in. My r15-3910 change
broke this since in some cases we would now return USING_DECLs; this
patch fixes the situation.
PR c++/116913
gcc/cp/ChangeLog:
* name-lookup.cc (update_binding): Return the strip_using'd old
decl rather than the binding.
gcc/testsuite/ChangeLog:
* g++.dg/lookup/using70.C: New test.
Signed-off-by: Nathaniel Shead <nathanieloshead@gmail.com>
Diffstat (limited to 'gcc/cp')
-rw-r--r-- | gcc/cp/name-lookup.cc | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gcc/cp/name-lookup.cc b/gcc/cp/name-lookup.cc index 4754ef5..609bd6e 100644 --- a/gcc/cp/name-lookup.cc +++ b/gcc/cp/name-lookup.cc @@ -3101,7 +3101,7 @@ update_binding (cp_binding_level *level, cxx_binding *binding, tree *slot, { if (same_type_p (TREE_TYPE (old), TREE_TYPE (decl))) /* Two type decls to the same type. Do nothing. */ - return old_bval; + return old; else goto conflict; } @@ -3114,7 +3114,7 @@ update_binding (cp_binding_level *level, cxx_binding *binding, tree *slot, /* The new one must be an alias at this point. */ gcc_assert (DECL_NAMESPACE_ALIAS (decl)); - return old_bval; + return old; } else if (TREE_CODE (old) == VAR_DECL) { |