------- Comment #3 from hjl dot tools at gmail dot com 2008-09-03 22:35 ------- [EMAIL PROTECTED] ira-2]$ cat foo.c #include <setjmp.h>
extern jmp_buf eof_jump; extern bar (void *); void foo (void *p) { if (setjmp (eof_jump)) bar (p); } [EMAIL PROTECTED] ira-2]$ /export/build/gnu/gcc-ira/build-ia64-linux/gcc/xgcc -B/export/build/gnu/gcc-ira/build-ia64-linux/gcc/ -O2 -S foo.c [EMAIL PROTECTED] ira-2]$ cat foo.s .file "foo.c" .pred.safe_across_calls p1-p5,p16-p63 .text .align 16 .global foo# .type foo#, @function .proc foo# foo: .prologue 12, 33 .mmb .save ar.pfs, r34 alloc r34 = ar.pfs, 1, 2, 1, 0 adds r16 = 8, r12 nop 0 .mmi .fframe 16 adds r12 = -16, r12 addl r35 = @ltoffx(eof_jump#), r1 .save rp, r33 mov r33 = b0 ;; .mmi .mem.offset -8, 0 st8.spill [r16] = r1 .body ld8.mov r35 = [r35], eof_jump# nop 0 .mib nop 0 nop 0 br.call.sptk.many b0 = _setjmp# ;; .mmi adds r1 = 24, r12 nop 0 cmp4.eq p6, p7 = 0, r8 ;; .mib ld8 r1 = [r1] nop 0 (p7) br.cond.dpnt .L5 .mii nop 0 mov ar.pfs = r34 mov b0 = r33 .mmb nop 0 .label_state 1 .restore sp adds r12 = 16, r12 br.ret.sptk.many b0 ;; .L5: .body .copy_state 1 .mib mov r35 = r32 <<<< r32 isn't preserved. nop 0 br.call.sptk.many b0 = bar# ;; .mmi nop 0 adds r1 = 24, r12 nop 0 ;; .mii ld8 r1 = [r1] mov ar.pfs = r34 mov b0 = r33 .mmb nop 0 .restore sp adds r12 = 16, r12 br.ret.sptk.many b0 .endp foo# .ident "GCC: (GNU) 4.4.0 20080826 (experimental) [ira-merge revision 139942]" [EMAIL PROTECTED] ira-2]$ -- hjl dot tools at gmail dot com changed: What |Removed |Added ---------------------------------------------------------------------------- Severity|blocker |normal Target Milestone|4.4.0 |--- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37359