[Bug c++/45983] ICE: tree code 'template_parm_index' is not supported in gimple streams with -lto
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Oct 12 14:55:00 GMT 2010
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45983
--- Comment #8 from Richard Guenther <rguenth at gcc dot gnu.org> 2010-10-12 14:54:58 UTC ---
We have an array type with a TYPE_DOMAIN with TYPE_MAXVAL being
template_parm_index - 1. The array is field 'm' in chunk_array_t
which is the DECL_CONTEXT of scalar_type_t which is referenced by
the statement
D.1506_3 = this_1(D)->vals[0][cha_2(D)];
as the type of the reference.
I wonder why this uses chunk_array_t::scalar_type_t at all. Hmm.
We build that array-ref in the frontend:
#1 0x00000000006839ef in cp_build_array_ref (loc=2910, array=0x7ffff5b11480,
idx=0x7ffff5b10198, complain=3)
at /space/rguenther/src/svn/trunk/gcc/cp/typeck.c:3039
3039 rval = build4 (ARRAY_REF, type, array, idx, NULL_TREE,
NULL_TREE);
and the array has element type scalar_type_t already. It's array type
is already built with that element type by
0x00000000007056f8 in build_cplus_array_type (elt_type=0x7ffff5b011f8,
index_type=0x7ffff5aeebd0)
at /space/rguenther/src/svn/trunk/gcc/cp/tree.c:665
665 t = build_array_type (elt_type, index_type);
(gdb) up
#1 0x00000000007064d7 in cp_build_qualified_type_real (type=0x7ffff5aeef18,
type_quals=1, complain=7)
at /space/rguenther/src/svn/trunk/gcc/cp/tree.c:822
822 t = build_cplus_array_type (element_type, TYPE_DOMAIN
(type));
(gdb) up
#2 0x00000000004fb789 in grokdeclarator (declarator=0x1aa2330,
declspecs=0x7fffffffd5d0, decl_context=FIELD, initialized=0,
attrlist=0x7fffffffd380)
at /space/rguenther/src/svn/trunk/gcc/cp/decl.c:8322
8322 type = cp_build_qualified_type_real
which is ultimately derived from
#1 0x00000000004f9956 in create_array_type_for_decl (name=0x7ffff5afad68,
type=0x7ffff5aee690, size=0x7ffff5ae28c0)
at /space/rguenther/src/svn/trunk/gcc/cp/decl.c:7640
7640 return build_cplus_array_type (type, itype);
(gdb) up
#2 0x00000000004fc05c in grokdeclarator (declarator=0x1aa2130,
declspecs=0x7fffffffd5d0, decl_context=FIELD, initialized=0,
attrlist=0x7fffffffd380)
at /space/rguenther/src/svn/trunk/gcc/cp/decl.c:8525
8525 type = create_array_type_for_decl (dname, type,
which has type of scalar_type_t already.
So - I have no idea how scalar_type_t leaks there ...
Jason?
More information about the Gcc-bugs
mailing list