This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/30178] New: FAIL: gcc.c-torture/execute/20010422-1.c execution, -O1


Executing on host: /test/gnu/gcc/objdir/gcc/xgcc -B/test/gnu/gcc/objdir/gcc/
/te
st/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/20010422-1.c  -w  -O1 
-fno-s
how-column  -lm   -o /test/gnu/gcc/objdir/gcc/testsuite/gcc/20010422-1.x1   
(ti
meout = 300)
PASS: gcc.c-torture/execute/20010422-1.c compilation,  -O1
Setting LD_LIBRARY_PATH to :/test/gnu/gcc/objdir/gcc::/test/gnu/gcc/objdir/gcc
FAIL: gcc.c-torture/execute/20010422-1.c execution,  -O1

The function foo is miscompiled.

unsigned int foo(unsigned int x)
{
  if (x < 5)
    x = 4;
  else
    x = 8;
  return x;
}

        .SPACE $TEXT$
        .NSUBSPA $CODE$
        .align 4
        .EXPORT foo,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR
foo
        .PROC
        .CALLINFO FRAME=0,NO_CALLS
        .ENTRY
        ldi 8,%r19
        comiclr,<< 4,%r28,%r0
        ldi 4,%r19
        bv %r0(%r2)
        copy %r19,%r28
        .EXIT
        .PROCEND

The "comiclr" instruction should test the first argument register, %r26,
not %r28.  The value of %r28 could be anything at the point of the comiclr
instruction.  As a result, the test passes on some targets.

This is the .expand rtl:

;;
;; Full RTL generated for this function:
;;
(note 2 0 8 NOTE_INSN_DELETED)

;; Start of basic block 2, registers live: (nil)
;; Pred edge  ENTRY [100.0%]  (fallthru)
(note 8 2 6 2 [bb 2] NOTE_INSN_BASIC_BLOCK)

(insn 6 8 7 2 (set (reg/v:SI 96 [ x ])
        (reg:SI 26 %r26 [ x ])) -1 (nil)
    (expr_list:REG_EQUIV (mem/c/i:SI (plus:SI (reg/f:SI 89
virtual-incoming-args
)
                (const_int -4 [0xfffffffc])) [0 x+0 S4 A32])
        (nil)))

(note 7 6 9 2 NOTE_INSN_FUNCTION_BEG)
;; End of basic block 2, registers live: (nil)
;; Succ edge  3 [100.0%]  (fallthru)

;; Start of basic block 3, registers live: (nil)
;; Pred edge  2 [100.0%]  (fallthru)
(note 9 7 11 3 [bb 3] NOTE_INSN_BASIC_BLOCK)

(jump_insn 11 9 12 3 (set (pc)
        (if_then_else (gtu (reg/v:SI 94 [ x___24 ])
                (const_int 4 [0x4]))
            (label_ref 17)
            (pc))) -1 (nil)
    (expr_list:REG_BR_PROB (const_int 3300 [0xce4])
        (nil)))
;; End of basic block 3, registers live: (nil)
;; Succ edge  4 [67.0%]  (fallthru)
;; Succ edge  5 [33.0%]

;; Start of basic block 4, registers live: (nil)
;; Pred edge  3 [67.0%]  (fallthru)
(code_label 12 11 13 4 3 "" [0 uses])

(note 13 12 14 4 [bb 4] NOTE_INSN_BASIC_BLOCK)

(insn 14 13 15 4 (set (reg/v:SI 96 [ x ])
        (const_int 4 [0x4])) -1 (nil)
    (nil))

(jump_insn 15 14 16 4 (set (pc)
        (label_ref 20)) -1 (nil)
    (nil))
;; End of basic block 4, registers live: (nil)
;; Succ edge  6 [100.0%]

(barrier 16 15 17)

;; Start of basic block 5, registers live: (nil)
;; Pred edge  3 [33.0%]
(code_label 17 16 18 5 2 "" [1 uses])

(note 18 17 19 5 [bb 5] NOTE_INSN_BASIC_BLOCK)

(insn 19 18 20 5 (set (reg/v:SI 96 [ x ])
        (const_int 8 [0x8])) -1 (nil)
    (nil))
;; End of basic block 5, registers live: (nil)
;; Succ edge  6 [100.0%]  (fallthru)

;; Start of basic block 6, registers live: (nil)
;; Pred edge  4 [100.0%]
;; Pred edge  5 [100.0%]  (fallthru)
(code_label 20 19 21 6 4 "" [1 uses])

(note 21 20 22 6 [bb 6] NOTE_INSN_BASIC_BLOCK)

(insn 22 21 23 6 (set (reg:SI 95 [ <result> ])
        (reg/v:SI 96 [ x ])) -1 (nil)
    (nil))

(jump_insn 23 22 24 6 (set (pc)
        (label_ref 26)) -1 (nil)
    (nil))
;; End of basic block 6, registers live: (nil)
;; Succ edge  8 [100.0%]

(barrier 24 23 34)

;; Start of basic block 7, registers live: (nil)
(note 34 24 28 7 [bb 7] NOTE_INSN_BASIC_BLOCK)

(insn 28 34 29 7 (clobber (reg/i:SI 28 %r28)) -1 (nil)
    (nil))

(insn 29 28 30 7 (clobber (reg:SI 95 [ <result> ])) -1 (nil)
    (nil))

(jump_insn 30 29 31 7 (set (pc)
        (label_ref 32)) -1 (nil)
    (nil))
;; End of basic block 7, registers live: (nil)
;; Succ edge  9 [100.0%]

(barrier 31 30 26)

;; Start of basic block 8, registers live: (nil)
;; Pred edge  6 [100.0%]
(code_label 26 31 35 8 1 "" [1 uses])

(note 35 26 27 8 [bb 8] NOTE_INSN_BASIC_BLOCK)

(insn 27 35 32 8 (set (reg/i:SI 28 %r28)
        (reg:SI 95 [ <result> ])) -1 (nil)
    (nil))
;; End of basic block 8, registers live: (nil)
;; Succ edge  9 [100.0%]  (fallthru)

;; Start of basic block 9, registers live: (nil)
;; Pred edge  7 [100.0%]
;; Pred edge  8 [100.0%]  (fallthru)
(code_label 32 27 36 9 5 "" [1 uses])

(note 36 32 33 9 [bb 9] NOTE_INSN_BASIC_BLOCK)

(insn 33 36 0 9 (use (reg/i:SI 28 %r28)) -1 (nil)
    (nil))
;; End of basic block 9, registers live: (nil)
;; Succ edge  EXIT [100.0%]  (fallthru)


-- 
           Summary: FAIL: gcc.c-torture/execute/20010422-1.c execution,  -O1
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: danglin at gcc dot gnu dot org
 GCC build triplet: hppa*-*-* (32 bit)
  GCC host triplet: hppa*-*-* (32 bit)
GCC target triplet: hppa*-*-* (32 bit)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]