[Bug lto/57334] [4.9 regression] ICE: in input_gimple_stmt, at gimple-streamer-in.c:287
hubicka at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jun 17 16:29:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57334
--- Comment #5 from Jan Hubicka <hubicka at gcc dot gnu.org> ---
(gdb) p debug_tree (fn->decl)
<function_decl 0x7ffff7045f00 soap_getindependent
type <function_type 0x7ffff7042e70
type <integer_type 0x7ffff6f155e8 int public SI
size <integer_cst 0x7ffff6f190a0 constant 32>
unit size <integer_cst 0x7ffff6f190c0 constant 4>
align 32 symtab 0 alias set -1 canonical type 0x7ffff6f155e8
precision 32 min <integer_cst 0x7ffff6f19040 -2147483648> max <integer_cst
0x7ffff6f19060 2147483647>
pointer_to_this <pointer_type 0x7ffff6f1d2a0>>
QI
size <integer_cst 0x7ffff6f04ee0 constant 8>
unit size <integer_cst 0x7ffff6f04f00 constant 1>
align 8 symtab 0 alias set 0 canonical type 0x7ffff7042dc8>
public static QI file a.i line 5 col 1 align 8 context
<translation_unit_decl 0x7ffff7049000 D.2387> initial <block 0x7ffff704d000>
result <result_decl 0x7ffff7047438 D.2391 type <integer_type 0x7ffff6f155e8
int>
ignored SI file a.i line 5 col 1 size <integer_cst 0x7ffff6f190a0 32>
unit size <integer_cst 0x7ffff6f190c0 4>
align 32 context <function_decl 0x7ffff7045b00 soap_getindependent>>
struct-function 0x7ffff6f10140>
$1 = void
(gdb) p debug_tree (gimple_label_label (stmt))
<label_decl 0x7ffff704e000 D.2393
type <void_type 0x7ffff6f15bd0 void VOID
align 8 symtab 0 alias set -1 canonical type 0x7ffff6f15bd0
pointer_to_this <pointer_type 0x7ffff6f15c78>>
ignored VOID file a.i line 8 col 1
align 1 context <function_decl 0x7ffff7045b00 soap_getindependent>>
$2 = void
(gdb) p debug_tree ((tree)0x7ffff7045b00)
<function_decl 0x7ffff7045b00 soap_getindependent
type <function_type 0x7ffff7042e70
type <integer_type 0x7ffff6f155e8 int public SI
size <integer_cst 0x7ffff6f190a0 constant 32>
unit size <integer_cst 0x7ffff6f190c0 constant 4>
align 32 symtab 0 alias set -1 canonical type 0x7ffff6f155e8
precision 32 min <integer_cst 0x7ffff6f19040 -2147483648> max <integer_cst
0x7ffff6f19060 2147483647>
pointer_to_this <pointer_type 0x7ffff6f1d2a0>>
QI
size <integer_cst 0x7ffff6f04ee0 constant 8>
unit size <integer_cst 0x7ffff6f04f00 constant 1>
align 8 symtab 0 alias set 0 canonical type 0x7ffff7042dc8>
static QI file b.i line 2 col 1 align 8 context <translation_unit_decl
0x7ffff6f20f18 D.2381>
result <result_decl 0x7ffff7047168 D.2382 type <integer_type 0x7ffff6f155e8
int>
ignored SI file b.i line 2 col 1 size <integer_cst 0x7ffff6f190a0 32>
unit size <integer_cst 0x7ffff6f190c0 4>
align 32 context <function_decl 0x7ffff7045b00 soap_getindependent>>>
$3 = void
(gdb) p debug_symtab_node (symtab_get_node ((tree)0x7ffff7045b00))
soap_getindependent/2 (soap_getindependent) @0x7ffff6f0d980
Type: function definition analyzed
Visibility: force_output prevailing_def_ironly
next sharing asm name: 6
References:
Referring:
Read from file: libx.a
Availability: available
Function flags:
Called by:
Calls:
$6 = void
(gdb) p debug_symtab_node (symtab_get_node (fn->decl))
soap_getindependent/6 (soap_getindependent) @0x7ffff6f0de40
Type: function definition analyzed
Visibility: force_output externally_visible prevailing_def_ironly public
previous sharing asm name: 2
References:
Referring:
Read from file: libx.a
Availability: available
Function flags: body
Called by:
Calls:
so the problem seems to be that while reading body of the static function
soap_getindependent we manage to mess the context with global function in the
other file. I am not terribly familiar on how LTO sections are mapped...
More information about the Gcc-bugs
mailing list