This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug target/29840] [4.3 Regression] build/genconditions ../../gcc/gcc/config/pa/pa.md > tmp-condmd.c: /bin/sh: 13354 Memory fault(coredump)
- From: "steven at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Nov 2006 23:17:49 -0000
- Subject: [Bug target/29840] [4.3 Regression] build/genconditions ../../gcc/gcc/config/pa/pa.md > tmp-condmd.c: /bin/sh: 13354 Memory fault(coredump)
- References: <bug-29840-276@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #10 from steven at gcc dot gnu dot org 2006-11-25 23:17 -------
>From the cse1 dump:
Register 72 used 1 times across 0 insns; set 1 time; dies in 0 places; pointer.
So there is only a single DEF for reg 72. The set for this DEF is:
(insn 112 2 7 2 foo.c:13 (set (reg/f:DI 72)
(plus:DI (reg/f:DI 29 %r29)
(const_int -64 [0xffffffffffffffc0]))) -1 (nil)
(nil))
fwprop replaces occurences of (reg 72) with (plus (reg 29) (const_int -64)).
This is the diff between the cse1 and fwprop dump:
--- attachment.cse1 2006-11-26 00:13:55.000000000 +0100
+++ attachment.fwprop1 2006-11-26 00:14:06.000000000 +0100
(....)
@@ -112,7 +172,8 @@
(const_int -64 [0xffffffffffffffc0]))) -1 (nil)
(nil))
-(insn 7 112 8 2 foo.c:13 (set (mem/f/c/i:DI (reg/f:DI 72) [8 cond+0 S8 A64])
+(insn 7 112 8 2 foo.c:13 (set (mem/f/c/i:DI (plus:DI (reg/f:DI 29 %r29)
+ (const_int -64 [0xffffffffffffffc0])) [8 cond+0 S8 A64])
(reg:DI 26 %r26 [ cond ])) 124 {*pa.md:4480} (nil)
(nil))
@@ -397,7 +458,8 @@
(insn 71 70 74 5 foo.c:25 (set (mem:QI (reg/f:DI 68 [ D.1944 ]) [0 S1 A8])
(reg:QI 88)) 104 {*pa.md:3322} (nil)
- (nil))
+ (expr_list:REG_EQUAL (const_int 10 [0xa])
+ (nil)))
(insn 74 71 75 5 foo.c:25 (set (reg/f:DI 91)
(plus:DI (reg/f:DI 68 [ D.1944 ])
@@ -462,7 +524,8 @@
(note 89 88 91 7 [bb 7] NOTE_INSN_BASIC_BLOCK)
(insn 91 89 92 7 foo.c:26 (set (reg/f:DI 26 %r26 [ cond ])
- (mem/f/c/i:DI (reg/f:DI 72) [8 cond+0 S8 A64])) 124 {*pa.md:4480}
(nil)
+ (mem/f/c/i:DI (plus:DI (reg/f:DI 29 %r29)
+ (const_int -64 [0xffffffffffffffc0])) [8 cond+0 S8 A64])) 124
{*pa.md:4480} (nil)
(nil))
(insn 92 91 93 7 foo.c:26 (set (reg/f:DI 29 %r29)
@@ -503,7 +566,8 @@
(nil)))
(insn 98 97 99 7 foo.c:27 (set (reg/f:DI 25 %r25 [ cond ])
- (mem/f/c/i:DI (reg/f:DI 72) [8 cond+0 S8 A64])) 124 {*pa.md:4480}
(nil)
+ (mem/f/c/i:DI (plus:DI (reg/f:DI 29 %r29)
+ (const_int -64 [0xffffffffffffffc0])) [8 cond+0 S8 A64])) 124
{*pa.md:4480} (nil)
(nil))
(insn 99 98 100 7 foo.c:27 (set (reg/f:DI 29 %r29)
Someone care to explain why this is a wrong transformation by fwprop?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29840