[Bug middle-end/23408] New: ICE on valid, if checking enabled
e9925248 at stud4 dot tuwien dot ac dot at
gcc-bugzilla@gcc.gnu.org
Mon Aug 15 21:31:00 GMT 2005
If the following code is compiled by a GCC with checking enabled (configured
with --enable-checking=misc,tree,rtl,rtlflag,gc,gcac) and -O1, a ICE happen:
static __inline__ int f () { return g (); }
int g () { return f (); }
With checking disabled, the ICE does not happen.
gcc version:
GNU C version 4.1.0 20050815 (experimental) (i686-pc-linux-gnu)
Backtrace:Analyzing compilation unit {GC 733k -> 718k} {GC 719k -> 719k} {GC
719k -> 719k}Performing intraprocedural optimizations
{GC 721k -> 694k}
Program received signal SIGSEGV, Segmentation fault.
0x08aea1eb in cgraph_decide_inlining_incrementally (node=0xb7c62c98, early=1
'\001') at ../.././gcc/ipa-inline.c:1029
1029 if (e->callee->local.disregard_inline_limits
(gdb) bt
#0 0x08aea1eb in cgraph_decide_inlining_incrementally (node=0xb7c62c98, early=1
'\001') at ../.././gcc/ipa-inline.c:1029
#1 0x08aea64d in cgraph_early_inlining () at ../.././gcc/ipa-inline.c:1131
#2 0x08a59ff0 in execute_one_pass (pass=0x8e71bc0) at ../.././gcc/passes.c:797
#3 0x08a5a0ed in execute_ipa_pass_list (pass=0x8e71bc0) at ../.././gcc/passes.c:843
#4 0x08ae6807 in ipa_passes () at ../.././gcc/cgraphunit.c:1202
#5 0x08ae68c7 in cgraph_optimize () at ../.././gcc/cgraphunit.c:1236
#6 0x0806cdf1 in c_write_global_declarations () at ../.././gcc/c-decl.c:7618
#7 0x089fcc5c in compile_file () at ../.././gcc/toplev.c:984
#8 0x089fe491 in do_compile () at ../.././gcc/toplev.c:1914
#9 0x089fe4f3 in toplev_main (argc=3, argv=0xbff6eb44) at ../.././gcc/toplev.c:1946
#10 0x080ed5ca in main (argc=3, argv=0xbff6eb44) at ../.././gcc/main.c:35
(gdb) p e
$1 = (struct cgraph_edge *) 0xa5a5a5a5
(gdb) up
#1 0x08aea64d in cgraph_early_inlining () at ../.././gcc/ipa-inline.c:1131
1131 cgraph_decide_inlining_incrementally (node, true);
(gdb) p *node
$2 = {decl = 0xa5a5a5a5, callees = 0xa5a5a5a5, callers = 0xa5a5a5a5, next =
0xa5a5a5a5, previous = 0xa5a5a5a5, origin = 0xa5a5a5a5,
nested = 0xa5a5a5a5, next_nested = 0xa5a5a5a5, next_needed = 0xa5a5a5a5,
next_clone = 0xa5a5a5a5, prev_clone = 0xa5a5a5a5,
master_clone = 0xa5a5a5a5, aux = 0xa5a5a5a5, local = {self_insns =
-1515870811, local = 165 'Â¥', externally_visible = 165 'Â¥',
finalized = 165 'Â¥', inlinable = 165 'Â¥', disregard_inline_limits = 165 'Â¥',
redefined_extern_inline = 165 'Â¥',
for_functions_valid = 165 'Â¥', vtable_method = 165 'Â¥'}, global =
{inlined_to = 0xa5a5a5a5, insns = -1515870811,
estimated_growth = -1515870811, inlined = 165 'Â¥'}, rtl =
{preferred_incoming_stack_boundary = -1515870811},
count = -6510615555426900571, uid = -1515870811, needed = 165 'Â¥', reachable =
165 'Â¥', lowered = 165 'Â¥', analyzed = 165 'Â¥',
output = 165 'Â¥', externally_visible = 165 'Â¥', alias = 165 'Â¥'}
As far as I can tell, the garbage collector seems to free some used memory.
It is a regression, as GCC version 20050606 did not showed this error.
--
Summary: ICE on valid, if checking enabled
Product: gcc
Version: 4.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P2
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: e9925248 at stud4 dot tuwien dot ac dot at
CC: gcc-bugs at gcc dot gnu dot org
GCC build triplet: i686-pc-linux-gnu
GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu (exists also on avr)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23408
More information about the Gcc-bugs
mailing list