This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug testsuite/33153] FAIL: gcc.dg/pr32912-[12].c (test for excess errors)
- 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: 26 Aug 2007 23:20:25 -0000
- Subject: [Bug testsuite/33153] FAIL: gcc.dg/pr32912-[12].c (test for excess errors)
- References: <bug-33153-276@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #4 from danglin at gcc dot gnu dot org 2007-08-26 23:20 -------
The patch proposed here fixes the failures on hppa2.0w-hp-hpux11.11.
However, I'm still left with the failure of pr32912-2.c on hppa64-hp-hpux*.
The function foo is miscompiled:
.align 8
L$C0000:
.dword 0x11111111222222224444444400000000
.text
.align 8
.globl foo
.type foo, @function
foo:
.PROC
.CALLINFO FRAME=0,NO_CALLS
.ENTRY
addil LT'L$C0000,%r27
ldd RT'L$C0000(%r1),%r31
ldd 0(%r31),%r28
bve (%r2)
copy %r28,%r29
.EXIT
.PROCEND
This is foo after final_cleanup:
;; Function foo (foo)
foo ()
{
<bb 2>:
return { 286331153, 572662306, 1145324612 };
}
This is the RTL generated by expand:
;;
;; Full RTL generated for this function:
;;
(note 1 0 4 NOTE_INSN_DELETED)
;; Start of basic block ( 0) -> 2
;; Pred edge ENTRY [100.0%] (fallthru)
(note 4 1 2 2 [bb 2] NOTE_INSN_BASIC_BLOCK)
(insn 2 4 3 2 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:10 (set
(reg/f:
DI 68)
(reg/f:DI 61 virtual-incoming-args)) -1 (nil))
(note 3 2 5 2 NOTE_INSN_FUNCTION_BEG)
;; End of basic block 2 -> ( 3)
;; Succ edge 3 [100.0%] (fallthru)
;; Start of basic block ( 2) -> 3
;; Pred edge 2 [100.0%] (fallthru)
(note 5 3 6 3 [bb 3] NOTE_INSN_BASIC_BLOCK)
(insn 6 5 7 3 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:10 (set
(reg:DI
71)
(plus:DI (reg:DI 27 %r27)
(high:DI (symbol_ref/u:DI ("*L$C0000") [flags 0x2])))) -1 (nil))
(insn 7 6 8 3 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:10 (set
(reg/f:
DI 70)
(mem/u/c:DI (lo_sum:DI (reg:DI 71)
(unspec:DI [
(symbol_ref/u:DI ("*L$C0000") [flags 0x2])
] 2)) [0 S8 A64])) -1 (expr_list:REG_EQUAL (symbol_ref/u:DI
("*L$C0000") [flags 0x2])
(nil)))
(insn 8 7 9 3 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:10 (set
(reg:DI
66 [ <result> ])
(mem/u/c/i:DI (reg/f:DI 70) [2 S8 A64])) -1 (expr_list:REG_EQUAL
(const_
double 4919131751843889152 [0x4444444400000000] 1229782938533634594
[0x111111112
2222222] 0 [0x0] 0 [0x0])
(nil)))
(insn 9 8 10 3 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:10 (set
(reg:D
I 73)
(plus:DI (reg:DI 27 %r27)
(high:DI (symbol_ref/u:DI ("*L$C0000") [flags 0x2])))) -1 (nil))
(insn 10 9 11 3 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:10 (set
(reg/
f:DI 72)
(mem/u/c:DI (lo_sum:DI (reg:DI 73)
(unspec:DI [
(symbol_ref/u:DI ("*L$C0000") [flags 0x2])
] 2)) [0 S8 A64])) -1 (expr_list:REG_EQUAL (symbol_ref/u:DI
("*L$C0000") [flags 0x2])
(nil)))
(insn 11 10 12 3 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:10 (set
(reg
/f:DI 67 [ <result>+8 ])
(mem/u/c/i:DI (reg/f:DI 72) [2 S8 A64])) -1 (expr_list:REG_EQUAL
(const_
double 4919131751843889152 [0x4444444400000000] 1229782938533634594
[0x111111112
2222222] 0 [0x0] 0 [0x0])
(nil)))
(jump_insn 12 11 13 3 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:10
(set
(pc)
(label_ref 14)) -1 (nil))
;; End of basic block 3 -> ( 5)
;; Succ edge 5 [100.0%]
(barrier 13 12 24)
;; Start of basic block () -> 4
(note 24 13 17 4 [bb 4] NOTE_INSN_BASIC_BLOCK)
(insn 17 24 18 4 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:13 (clobber
(reg:DI 28 %r28)) -1 (nil))
(insn 18 17 19 4 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:13 (clobber
(reg/f:DI 29 %r29)) -1 (nil))
(jump_insn 19 18 20 4 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:13
(set
(pc)
(label_ref 21)) -1 (nil))
;; End of basic block 4 -> ( 6)
;; Succ edge 6 [100.0%]
(barrier 20 19 14)
;; Start of basic block ( 3) -> 5
;; Pred edge 3 [100.0%]
(code_label 14 20 25 5 1 "" [1 uses])
(note 25 14 15 5 [bb 5] NOTE_INSN_BASIC_BLOCK)
(insn 15 25 16 5 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:13 (set
(reg
:DI 28 %r28)
(reg:DI 66 [ <result> ])) -1 (nil))
(insn 16 15 21 5 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:13 (set
(reg
/f:DI 29 %r29)
(reg/f:DI 67 [ <result>+8 ])) -1 (nil))
;; End of basic block 5 -> ( 6)
;; Succ edge 6 [100.0%] (fallthru)
;; Start of basic block ( 4 5) -> 6
;; Pred edge 4 [100.0%]
;; Pred edge 5 [100.0%] (fallthru)
(code_label 21 16 26 6 2 "" [1 uses])
(note 26 21 22 6 [bb 6] NOTE_INSN_BASIC_BLOCK)
(insn 22 26 23 6 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:13 (use
(reg
:DI 28 %r28)) -1 (nil))
(insn 23 22 0 6 /test/gnu/gcc/gcc/gcc/testsuite/gcc.dg/pr32912-2.c:13 (use
(reg/
f:DI 29 %r29)) -1 (nil))
;; End of basic block 6 -> ( 1)
;; Succ edge EXIT [100.0%] (fallthru)
There isn't any increment in the memory addressing for the two halves of
the vector. I'm also concerned about using .dword for a 128 bit value.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33153