diff options
author | Nathan Sidwell <nathan@acm.org> | 2021-02-17 05:28:09 -0800 |
---|---|---|
committer | Nathan Sidwell <nathan@acm.org> | 2021-02-17 05:41:37 -0800 |
commit | d46c7e2c546b26d036856cf570694b832d3b1f54 (patch) | |
tree | 9dd6d1ef2e769259684badf235fd4e2ec7cf8760 /gcc | |
parent | 06505e701dcfdb1b9855601d6cf0aa1caea62975 (diff) | |
download | gcc-d46c7e2c546b26d036856cf570694b832d3b1f54.zip gcc-d46c7e2c546b26d036856cf570694b832d3b1f54.tar.gz gcc-d46c7e2c546b26d036856cf570694b832d3b1f54.tar.bz2 |
c++: ICE with header-units [PR 99071]
This ICE was caused by dereferencing the wrong pointer and not finding the
expected thing there. Pointers are like that.
PR c++/99071
gcc/cp/
* name-lookup.c (maybe_record_mergeable_decl): Deref the correct
pointer.
gcc/testsuite/
* g++.dg/modules/pr99071_a.H: New.
* g++.dg/modules/pr99071_b.H: New.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/name-lookup.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/modules/pr99071_a.H | 6 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/modules/pr99071_b.H | 8 |
3 files changed, 15 insertions, 1 deletions
diff --git a/gcc/cp/name-lookup.c b/gcc/cp/name-lookup.c index 5aa206d..fda987e 100644 --- a/gcc/cp/name-lookup.c +++ b/gcc/cp/name-lookup.c @@ -3525,7 +3525,7 @@ maybe_record_mergeable_decl (tree *slot, tree name, tree decl) if (!partition) { binding_slot &orig - = BINDING_VECTOR_CLUSTER (*gslot, 0).slots[BINDING_SLOT_CURRENT]; + = BINDING_VECTOR_CLUSTER (*slot, 0).slots[BINDING_SLOT_CURRENT]; if (!STAT_HACK_P (tree (orig))) orig = stat_hack (tree (orig)); diff --git a/gcc/testsuite/g++.dg/modules/pr99071_a.H b/gcc/testsuite/g++.dg/modules/pr99071_a.H new file mode 100644 index 0000000..44bc7c4 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/pr99071_a.H @@ -0,0 +1,6 @@ +// PR 99071 ICE with global-module merging +// { dg-additional-options -fmodule-header } +// { dg-module-cmi {} } + +template<typename T> +void begin (T *); diff --git a/gcc/testsuite/g++.dg/modules/pr99071_b.H b/gcc/testsuite/g++.dg/modules/pr99071_b.H new file mode 100644 index 0000000..1c773d7 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/pr99071_b.H @@ -0,0 +1,8 @@ +// PR 99071 ICE with global-module merging +// { dg-additional-options -fmodule-header } +// { dg-module-cmi {} } + +import "pr99071_a.H"; + +template<typename T> +void begin(T &); |