~/trunk-install/bin/g++ -O3 -fwhopr a.ii b.ii -r -nostdlib leads to <function_decl 0x7ffff71d6800 _Z20POVMS_AssertFunctioniPKcS0_i.part.0.2033.constprop.2 type <function_type 0x7ffff71d83f0 type <integer_type 0x7ffff7ed8498 public SI size <integer_cst 0x7ffff7ec7708 constant 32> unit size <integer_cst 0x7ffff7ec7410 constant 4> align 32 symtab 0 alias set -1 canonical type 0x7ffff7ed8498 precision 32 min <integer_cst 0x7ffff7ec7690 -2147483648> max <integer_cst 0x7ffff7ec76b8 2147483647> pointer_to_this <pointer_type 0x7ffff7ee53f0>> QI size <integer_cst 0x7ffff7ec74d8 constant 8> unit size <integer_cst 0x7ffff7ec7500 constant 1> align 8 symtab 0 alias set -1 canonical type 0x7ffff71d83f0 arg-types <tree_list 0x7ffff71d9118 value <pointer_type 0x7ffff71d82a0> chain <tree_list 0x7ffff71d9140 value <integer_type 0x7ffff7ed8498> chain <tree_list 0x7ffff7ec7fa0 value <void_type 0x7ffff7ed8d20>>>>> addressable used nothrow static external QI file b.ii line 39 col 11 align 8 abstract_origin <function_decl 0x7ffff71d6700 POVMS_AssertFunction> arguments <parm_decl 0x7ffff7eceaa0 str type <pointer_type 0x7ffff71d82a0 type <integer_type 0x7ffff71d8000 char> unsigned DI size <integer_cst 0x7ffff7ec77d0 constant 64> unit size <integer_cst 0x7ffff7ec77f8 constant 8> align 64 symtab 0 alias set -1 canonical type 0x7ffff71d82a0> used unsigned DI file b.ii line 39 col 54 size <integer_cst 0x7ffff7ec77d0 64> unit size <integer_cst 0x7ffff7ec77f8 8> align 64 context <function_decl 0x7ffff71d6600 _Z20POVMS_AssertFunctioniPKcS0_i.part.0> abstract_origin <parm_decl 0x7ffff7ece908 str> arg-type <pointer_type 0x7ffff71d82a0> chain <parm_decl 0x7ffff7eceb28 filename type <pointer_type 0x7ffff71d82a0> used unsigned DI file b.ii line 39 col 71 size <integer_cst 0x7ffff7ec77d0 64> unit size <integer_cst 0x7ffff7ec77f8 8> align 64 context <function_decl 0x7ffff71d6600 _Z20POVMS_AssertFunctioniPKcS0_i.part.0> abstract_origin <parm_decl 0x7ffff7ece990 filename> arg-type <pointer_type 0x7ffff71d82a0> chain <parm_decl 0x7ffff7ecebb0 line>>> result <result_decl 0x7ffff7ed0380 D.2026 type <integer_type 0x7ffff7ed8498> used ignored SI file b.ii line 39 col 89 size <integer_cst 0x7ffff7ec7708 32> unit size <integer_cst 0x7ffff7ec7410 4> align 32 context <function_decl 0x7ffff71d6600 _Z20POVMS_AssertFunctioniPKcS0_i.part.0> abstract_origin <result_decl 0x7ffff7ed0300 D.2022>>> Instead of: <function_decl 0x7ffff71d6600 _Z20POVMS_AssertFunctioniPKcS0_i.part.0 type <function_type 0x7ffff71d81f8 type <integer_type 0x7ffff7ed8498 public SI size <integer_cst 0x7ffff7ec7708 constant 32> unit size <integer_cst 0x7ffff7ec7410 constant 4> align 32 symtab 0 alias set -1 canonical type 0x7ffff7ed8498 precision 32 min <integer_cst 0x7ffff7ec7690 -2147483648> max <integer_cst 0x7ffff7ec76b8 2147483647> pointer_to_this <pointer_type 0x7ffff7ee53f0>> QI size <integer_cst 0x7ffff7ec74d8 constant 8> unit size <integer_cst 0x7ffff7ec7500 constant 1> align 8 symtab 0 alias set -1 canonical type 0x7ffff71d81f8 arg-types <tree_list 0x7ffff71cfe38 value <pointer_type 0x7ffff71d82a0> chain <tree_list 0x7ffff71cfe60 value <pointer_type 0x7ffff71d82a0> chain <tree_list 0x7ffff71cfe88 value <integer_type 0x7ffff7ed8498> chain <tree_list 0x7ffff7ec7fa0 value <void_type 0x7ffff7ed8d20>>>>> pointer_to_this <pointer_type 0x7ffff71dfa80>> addressable used static QI file b.ii line 39 col 11 align 8 initial <block 0x7ffff71f6478> abstract_origin <function_decl 0x7ffff71d6700 POVMS_AssertFunction> arguments <parm_decl 0x7ffff7eceaa0 str type <pointer_type 0x7ffff71d82a0 type <integer_type 0x7ffff71d8000 char> unsigned DI size <integer_cst 0x7ffff7ec77d0 constant 64> unit size <integer_cst 0x7ffff7ec77f8 constant 8> align 64 symtab 0 alias set -1 canonical type 0x7ffff71d82a0> used unsigned DI file b.ii line 39 col 54 size <integer_cst 0x7ffff7ec77d0 64> unit size <integer_cst 0x7ffff7ec77f8 8> align 64 context <function_decl 0x7ffff71d6600 _Z20POVMS_AssertFunctioniPKcS0_i.part.0> abstract_origin <parm_decl 0x7ffff7ece908 str> arg-type <pointer_type 0x7ffff71d82a0> chain <parm_decl 0x7ffff7eceb28 filename type <pointer_type 0x7ffff71d82a0> used unsigned DI file b.ii line 39 col 71 size <integer_cst 0x7ffff7ec77d0 64> unit size <integer_cst 0x7ffff7ec77f8 8> align 64 context <function_decl 0x7ffff71d6600 _Z20POVMS_AssertFunctioniPKcS0_i.part.0> abstract_origin <parm_decl 0x7ffff7ece990 filename> arg-type <pointer_type 0x7ffff71d82a0> chain <parm_decl 0x7ffff7ecebb0 line>>> result <result_decl 0x7ffff7ed0380 D.2026 type <integer_type 0x7ffff7ed8498> used ignored SI file b.ii line 39 col 89 size <integer_cst 0x7ffff7ec7708 32> unit size <integer_cst 0x7ffff7ec7410 4> align 32 context <function_decl 0x7ffff71d6600 _Z20POVMS_AssertFunctioniPKcS0_i.part.0> abstract_origin <result_decl 0x7ffff7ed0300 D.2022>> struct-function 0x7ffff71dbb48> _Z20POVMS_AssertFunctioniPKcS0_i.constprop.0/10(-1) @0x7ffff71e2d70 (asm: _Z20POVMS_AssertFunctioniPKcS0_i.constprop.0.2043) (inline copy in POVMSObject_Copy/7) (clone of _Z20POVMS_AssertFunctioniPKcS0_i.constprop.0/14) availability:local analyzed 7 time, 15 benefit 7 size, 6 benefit reachable body local finalized inlinable called by: _Z16POVMSObject_CopyP9POVMSDataS0_.part.2/8 (0.01 per call) (inlined) (can throw external) calls: _Z20POVMS_AssertFunctioniPKcS0_i.part.0.2033.constprop.2/1 (0.00 per call) (nested in 2 loops) References: Refering this function:
-- Summary: ICE at lto1: error: edge points to wrong declaration while compiling povray Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: lto AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: hubicka at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45679