http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50601
Richard Guenther <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |ASSIGNED AssignedTo|unassigned at gcc dot |rguenth at gcc dot gnu.org |gnu.org | --- Comment #4 from Richard Guenther <rguenth at gcc dot gnu.org> 2011-12-06 10:56:50 UTC --- FAIL: g++.dg/lto/20100302 cp_lto_20100302_0.o-cp_lto_20100302_1.o link, -flto -fabi-version=2 (internal compiler error) is lto1: internal compiler error: in make_decl_rtl, at varasm.c:1141 an ICE during ltrans stage: 1136 /* A weak alias has TREE_PUBLIC set but not the other bits. */ 1137 gcc_assert (TREE_CODE (decl) != VAR_DECL 1138 || TREE_STATIC (decl) 1139 || TREE_PUBLIC (decl) 1140 || DECL_EXTERNAL (decl) 1141 || DECL_REGISTER (decl)); and the decl is the VAR_DECL _ZN1AIDv4_fE1tE (A<float __vector(4)>::t). This ABI forward-compatibility alias the C++ frontend generates does not honor the constraints that assert asserts: (gdb) call debug_tree (decl) <var_decl 0x7ffff5a2c140 _ZN1AIDv4_fE1tE type <vector_type 0x7ffff5b5f888 mm128 type <real_type 0x7ffff5a31e70 float SF size <integer_cst 0x7ffff5a34240 constant 32> unit size <integer_cst 0x7ffff5a34260 constant 4> align 32 symtab 0 alias set -1 canonical type 0x7ffff5a31e70 precision 32 pointer_to_this <pointer_type 0x7ffff5a3f0a8>> V4SF size <integer_cst 0x7ffff5a34400 constant 128> unit size <integer_cst 0x7ffff5a34420 constant 16> align 128 symtab 0 alias set -1 canonical type 0x7ffff5b5f930 nunits 4 pointer_to_this <pointer_type 0x7ffff5b5f7e0>> addressable used ignored V4SF file /space/rguenther/src/svn/trunk/gcc/testsuite/g++.dg/lto/20100302_0.C line 9 col 19 size <integer_cst 0x7ffff5a34400 128> unit size <integer_cst 0x7ffff5a34420 16> align 128> we create RTL for this decl because do_assemble_alias does 5452 /* We must force creation of DECL_RTL for debug info generation, even though 5453 we don't use it here. */ 5454 make_decl_rtl (decl); but the alias has DECL_IGNORED set, so we can fix this by not creating RTL for DECL_IGNORED decls (hopefully).