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.