[Bug middle-end/54850] New: [4.8 Regression] FAIL: gcc.c-torture/execute/20041113-1.c execution, -Os

danglin at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Sun Oct 7 19:27:00 GMT 2012


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54850

             Bug #: 54850
           Summary: [4.8 Regression] FAIL:
                    gcc.c-torture/execute/20041113-1.c execution,  -Os
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: middle-end
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: danglin@gcc.gnu.org
              Host: hppa64-hp-hpux11.11
            Target: hppa64-hp-hpux11.11
             Build: hppa64-hp-hpux11.11


Created attachment 28380
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28380
rtl dump

Executing on host: /test/gnu/gcc/objdir/gcc/xgcc -B/test/gnu/gcc/objdir/gcc/
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c 
-fno-diagnostics-show-caret  -w  -Os   -lm   -o
/test/gnu/gcc/objdir/gcc/testsuite/gcc/20041113-1.x5    (timeout = 300)
spawn /test/gnu/gcc/objdir/gcc/xgcc -B/test/gnu/gcc/objdir/gcc/
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c
-fno-diagnostics-show-caret -w -Os -lm -o
/test/gnu/gcc/objdir/gcc/testsuite/gcc/20041113-1.x5
PASS: gcc.c-torture/execute/20041113-1.c compilation,  -Os 
Setting LD_LIBRARY_PATH to :/test/gnu/gcc/objdir/gcc::/test/gnu/gcc/objdir/gcc
spawn [open ...]
FAIL: gcc.c-torture/execute/20041113-1.c execution,  -Os 

Function test is miscompiled:

test:
        .PROC
        .CALLINFO FRAME=144,CALLS,SAVE_RP,ENTRY_GR=3
        .ENTRY
        std %r2,-16(%r30)
        ldo 144(%r30),%r30
        ldo -56(%r29),%r29
        std %r4,-128(%r30)
        ldw 4(%r29),%r28
        std %r26,-8(%r29)
        std %r25,0(%r29)
        std %r24,8(%r29)
        std %r23,16(%r29)
        std %r22,24(%r29)
        std %r21,32(%r29)
        std %r20,40(%r29)
        std %r19,48(%r29)
        cmpib,= 1,%r28,L$0002
        std %r29,-136(%r30)
        ...

The cmpib instruction fails because the "ldw 4(%r29),%r28" was incorrectly
scheduled before the "std %r25,0(%r29)" instruction.  This happens in the
20041113-1.c.223r.sched2 pass.  In the previous pass, we had

(note 5 1 50 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn/f 50 5 51 2 (set (mem:DI (plus:DI (reg/f:DI 30 %r30)
                (const_int -16 [0xfffffffffffffff0])) [0 S8 A64])
        (reg:DI 2 %r2))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:4 121
{*pa.md:4105}
     (expr_list:REG_DEAD (reg:DI 2 %r2)
        (nil)))
(insn/f 51 50 52 2 (set (reg/f:DI 30 %r30)
        (plus:DI (reg/f:DI 30 %r30)
            (const_int 144 [0x90])))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:4 161
{*pa.md:4945}
     (nil))
(insn/f 52 51 53 2 (set (mem:DI (plus:DI (reg/f:DI 30 %r30)
                (const_int -128 [0xffffffffffffff80])) [0 S8 A64])
        (reg:DI 4 %r4))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:4 121
{*pa.md:4105}
     (expr_list:REG_DEAD (reg:DI 4 %r4)
        (nil)))
(note 53 52 8 2 NOTE_INSN_PROLOGUE_END)
(insn 8 53 9 2 (set (mem:DI (plus:DI (reg/f:DI 29 %r29)
                (const_int -64 [0xffffffffffffffc0])) [0 S8 A64])
        (reg:DI 26 %r26))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:7 121
{*pa.md:4105}
     (expr_list:REG_DEAD (reg:DI 26 %r26)
        (nil)))
(insn 9 8 10 2 (set (mem:DI (plus:DI (reg/f:DI 29 %r29)
                (const_int -56 [0xffffffffffffffc8])) [0 S8 A64])
        (reg:DI 25 %r25))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:7 121
{*pa.md:4105}
     (expr_list:REG_DEAD (reg:DI 25 %r25)
        (nil)))
(insn 10 9 11 2 (set (mem:DI (plus:DI (reg/f:DI 29 %r29)
                (const_int -48 [0xffffffffffffffd0])) [0 S8 A64])
        (reg:DI 24 %r24))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:7 121
{*pa.md:4105}
     (expr_list:REG_DEAD (reg:DI 24 %r24)
        (nil)))
(insn 11 10 12 2 (set (mem:DI (plus:DI (reg/f:DI 29 %r29)
                (const_int -40 [0xffffffffffffffd8])) [0 S8 A64])
        (reg:DI 23 %r23))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:7 121
{*pa.md:4105}
     (expr_list:REG_DEAD (reg:DI 23 %r23)
        (nil)))
(insn 12 11 13 2 (set (mem:DI (plus:DI (reg/f:DI 29 %r29)
                (const_int -32 [0xffffffffffffffe0])) [0 S8 A64])
        (reg:DI 22 %r22))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:7 121
{*pa.md:4105}
     (expr_list:REG_DEAD (reg:DI 22 %r22)
        (nil)))
(insn 13 12 14 2 (set (mem:DI (plus:DI (reg/f:DI 29 %r29)
                (const_int -24 [0xffffffffffffffe8])) [0 S8 A64])
        (reg:DI 21 %r21))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:7 121
{*pa.md:4105}
     (expr_list:REG_DEAD (reg:DI 21 %r21)
        (nil)))
(insn 14 13 15 2 (set (mem:DI (plus:DI (reg/f:DI 29 %r29)
                (const_int -16 [0xfffffffffffffff0])) [0 S8 A64])
        (reg:DI 20 %r20))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:7 121
{*pa.md:4105}
     (expr_list:REG_DEAD (reg:DI 20 %r20)
        (nil)))
(insn 15 14 17 2 (set (mem:DI (plus:DI (reg/f:DI 29 %r29)
                (const_int -8 [0xfffffffffffffff8])) [0 S8 A64])
        (reg:DI 19 %r19))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:7 121
{*pa.md:4105}
     (expr_list:REG_DEAD (reg:DI 19 %r19)
        (nil)))
(insn 17 15 4 2 (set (reg/f:DI 29 %r29 [76])
        (plus:DI (reg/f:DI 29 %r29)
            (const_int -56 [0xffffffffffffffc8])))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:7 161
{*pa.md:4945}
     (nil))
(note 4 17 19 2 NOTE_INSN_FUNCTION_BEG)
(insn 19 4 21 2 (set (mem/f/c:DI (plus:DI (reg/f:DI 30 %r30)
                (const_int -136 [0xffffffffffffff78])) [2 MEM[(void * *)&ap]+0
S8 A64])
        (reg/f:DI 29 %r29 [76]))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:7 121
{*pa.md:4105}
     (nil))
(insn 21 19 22 2 (set (reg:DI 28 %r28)
        (zero_extend:DI (mem:SI (plus:DI (reg/f:DI 29 %r29 [76])
                    (const_int 4 [0x4])) [3 MEM[(int *)ap.0_3 + 4B]+0 S4
A32]))) /test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20041113-1.c:8
134 {*pa.md:4637}
     (expr_list:REG_EQUIV (mem:SI (plus:DI (reg/f:DI 29 %r29 [76])
                (const_int 4 [0x4])) [3 MEM[(int *)ap.0_3 + 4B]+0 S4 A32])
        (nil)))

The regression was introduced between revisions 191481 and 191764.

Other similar fails are:

FAIL: gcc.c-torture/execute/920501-8.c execution,  -Os 
FAIL: gcc.c-torture/execute/980608-1.c execution,  -Os 
FAIL: gcc.c-torture/execute/stdarg-4.c execution,  -Os 
FAIL: gcc.c-torture/execute/va-arg-19.c execution,  -Os



More information about the Gcc-bugs mailing list