http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51992

Richard Guenther <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
           Keywords|                            |lto
   Last reconfirmed|                            |2012-01-25
          Component|lto                         |c++
                 CC|                            |jason at gcc dot gnu.org,
                   |                            |rguenth at gcc dot gnu.org
     Ever Confirmed|0                           |1
            Summary|internal compiler error:    |[4.7 Regression] internal
                   |tree code ‘target_expr’ is  |compiler error: tree code
                   |not supported in LTO        |‘target_expr’ is not
                   |streams                     |supported in LTO streams
   Target Milestone|---                         |4.7.0

--- Comment #1 from Richard Guenther <rguenth at gcc dot gnu.org> 2012-01-25 
10:27:01 UTC ---
Confirmed.  Happens when we stream a function type:

 <function_type 0x7ffff5ba19d8
    type <record_type 0x7ffff5ba1540 Ptr type_5 QI
        size <integer_cst 0x7ffff5a39120 constant 8>
        unit size <integer_cst 0x7ffff5a39140 constant 1>
        align 8 symtab 0 alias set -1 canonical type 0x7ffff5ba1498
        fields <type_decl 0x7ffff5b9eda8 KSharedPtr type <record_type
0x7ffff5ba6f18 KSharedPtr>
            external nonlocal suppress-debug decl_4 VOID file t.ii line 20 col
18
            align 8 context <record_type 0x7ffff5ba1498 KSharedPtr> result
<record_type 0x7ffff5ba1498 KSharedPtr>
           >
        full-name "KSharedConfig::Ptr"
        X() X(constX&) this=(X&) n_parents=0 use_template=1 interface-unknown
        pointer_to_this <pointer_type 0x7ffff5ba9a80> chain <type_decl
0x7ffff5b9e8a0 KSharedPtr>>
    QI size <integer_cst 0x7ffff5a39120 8> unit size <integer_cst
0x7ffff5a39140 1>
    align 8 symtab 0 alias set -1 canonical type 0x7ffff5ba1a80
    arg-types <tree_list 0x7ffff5ba40c8
        value <reference_type 0x7ffff5ba1930 type <record_type 0x7ffff5ba1888
KComponentData>
            unsigned DI
            size <integer_cst 0x7ffff5a1df60 constant 64>
            unit size <integer_cst 0x7ffff5a1df80 constant 8>
            align 64 symtab 0 alias set -1 canonical type 0x7ffff5ba1930>
        chain <tree_list 0x7ffff5ba40f0
            purpose <target_expr 0x7ffff5b7d7c0 type <record_type
0x7ffff5b8b930 QString>
                side-effects arg 0 <var_decl 0x7ffff5a29280 D.2247>
                arg 1 <constructor 0x7ffff5b94cc0 type <record_type
0x7ffff5b8b930 QString>
                    constant lngt 0>> value <reference_type 0x7ffff5ba1690>>>
    pointer_to_this <pointer_type 0x7ffff5ba93f0>>

The 2nd argument type has TREE_PURPOSE set.

Jason, any idea where that comes from?  Do we forget to clear it during
template instantiation somehow?

Works on the 4.6 branch.

Reply via email to