While trying to reduce another testcase for 3.4 miscompilation, I came along the following ICE (maybe ice-on-invalid, because I'm at removing unneccesary #includes, maybe not): bellatrix:~/src/C19/rhalk/tramp/obj$ g++-3.4 -c tramp3d.ii tramp3d.cpp: In instantiation of `CartesianURM<MeshTraits<3, double, UniformRectilinearTag, CartesianTag, 3> >': /home/rguenth/ix86/pooma/tat-mpich/linux/src/Field/Mesh/UniformRectilinearMesh.h:212: instantiated from `UniformRectilinearMesh<MeshTraits<3, double, UniformRectilinearTag, CartesianTag, 3> >' tramp3d.cpp:25: instantiated from here tramp3d.cpp:10: internal compiler error: in tsubst_decl, at cp/pt.c:6065 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. bellatrix:~/src/C19/rhalk/tramp/obj$ g++-3.4 --version g++-3.4 (GCC) 3.4.0
Created attachment 6120 [details] preprocessed testcase Testcase - somewhat huge, but an ICE should be easy to debug, no?
Ok, spending 5 minutes more would have created the following minimal testcase: template <class T> struct Foo; template <class T> struct Bar : Foo<T> { }; struct Foo {}; void foo() { Bar<double> v; } same ICE. Regression from 3.3, happens with 3.4 and 3.5 and tree-ssa.
Note I filed PR 15025 which is related to this problem and found while looking into this bug. I can confirm this on the mainline and 3.4.0 branch.
I almost think this is just a smpymton of the problem and the problem is filed in PR 15025.
Yeah, they are dups. The double declaration confuses the lookup code and causes an ICE later. Anyway, no harm in keeping this open meanwhile.
This is indeed a duplicate of 15025. *** This bug has been marked as a duplicate of 15025 ***