[Bug lto/50601] [4.7 Regression] New LTO failures

rguenth at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Tue Dec 6 10:57:00 GMT 2011


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).



More information about the Gcc-bugs mailing list