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