This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug tree-optimization/30178] New: FAIL: gcc.c-torture/execute/20010422-1.c execution, -O1
- From: "danglin at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 12 Dec 2006 19:50:22 -0000
- Subject: [Bug tree-optimization/30178] New: FAIL: gcc.c-torture/execute/20010422-1.c execution, -O1
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
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