[Bug middle-end/37359] [4.4 Regression] IRA miscompiled transfer.o in libgfortran, sejmp

hjl dot tools at gmail dot com gcc-bugzilla@gcc.gnu.org
Wed Sep 3 22:36:00 GMT 2008



------- Comment #3 from hjl dot tools at gmail dot com  2008-09-03 22:35 -------
[hjl@gnu-14 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);
}
[hjl@gnu-14 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 
[hjl@gnu-14 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]"
[hjl@gnu-14 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



More information about the Gcc-bugs mailing list