Created attachment 26248 [details] preprocessed source Building trustedgrub reveals: > ./cc1 -quiet -m32 stage1_5.i -g -Os -fomit-frame-pointer -fno-asynchronous-unwind-tables stage1_5.c: In function 'cmain': stage1_5.c:69:1: internal compiler error: in maybe_record_trace_start, at dwarf2cfi.c:2231 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions.
/* PR debug/51762 */ /* { dg-do compile } */ /* { dg-options "-g -Os -fomit-frame-pointer -fno-asynchronous-unwind-tables" } */ void noret (void) __attribute__ ((noreturn)); int bar (void); void baz (const char *); static int v = -1; void foo (void) { if (bar () && v == -1) { baz ("baz"); noret (); } noret (); } Started with http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=176705
Seems cross-jumping during csa pass cross-jumps the two noret calls, eventhough they have different args size depths.
Author: jakub Date: Thu Jan 5 20:47:16 2012 New Revision: 182924 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=182924 Log: PR debug/51762 * calls.c (emit_call_1): For noreturn calls force a REG_ARGS_SIZE note when !ACCUMULATE_OUTGOING_ARGS. * gcc.dg/pr51762.c: New test. Added: trunk/gcc/testsuite/gcc.dg/pr51762.c Modified: trunk/gcc/ChangeLog trunk/gcc/calls.c trunk/gcc/testsuite/ChangeLog
Fixed.