$ cat osdep.i static void do_date (char *); void rfc822_date (char *date) { do_date (date); } $ gcc -c -O2 -fno-omit-frame-pointer -w osdep.i osdep.s: Assembler messages: osdep.s:19: Error: Epilogue count of 4294967296 exceeds number of nested prologues (0) This is due to an extra '.restore sp' before the tail call. .file "osdep.i" .pred.safe_across_calls p1-p5,p16-p63 .text .align 16 .global rfc822_date# .proc rfc822_date# rfc822_date: .prologue 2, 2 .mii nop 0 .vframe r2 mov r2 = r12 .body ;; .restore sp mov r12 = r2 ;; .mfb .restore sp .prologue alloc r2 = ar.pfs, 0, 0, 1, 0 nop 0 br.sptk.many do_date# ;; break.f 0 ;; .endp rfc822_date# .ident "GCC: (GNU) 4.0.0 20041214 (experimental)"
-- Summary: [4.0 regression] [ia64] Extra '.restore sp' in tail call Product: gcc Version: 4.0.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P2 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: schwab at suse dot de CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: ia64-*-linux http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18987