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 testsuite/33153] FAIL: gcc.dg/pr32912-[12].c (test for excess errors)



------- 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


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