[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