[Bug tree-optimization/38401] TreeSSA-PRE load after store misoptimization
sergeid at il dot ibm dot com
gcc-bugzilla@gcc.gnu.org
Thu Dec 4 17:55:00 GMT 2008
------- Comment #7 from sergeid at il dot ibm dot com 2008-12-04 17:54 -------
Subject: Re: TreeSSA-PRE load after store
misoptimization
You're right, it worked for me only on powerpc. This is RTL snippet
_before_ elimination (load + xor + store):
...
(insn 20 19 21 5 ../loop.c:10 (set (reg:SI 128)
(mem:SI (reg/v/f:SI 123 [ res ]) [2 S4 A32])) 324
{*movsi_internal1} (nil))
(insn 21 20 22 5 ../loop.c:10 (set (reg:SI 129)
(xor:SI (reg:SI 128)
(const_int 234 [0xea]))) 139 {*boolsi3_internal1} (nil))
(insn 22 21 23 5 ../loop.c:10 (set (mem:SI (reg/v/f:SI 123 [ res ]) [2 S4
A32])
(reg:SI 129)) 324 {*movsi_internal1} (nil)):
...
And this is _after_ (xor + store only):
...
(insn 21 19 22 5 ../loop.c:10 (set (reg:SI 131)
(xor:SI (reg:SI 131)
(const_int 234 [0xea]))) 139 {*boolsi3_internal1}
(expr_list:REG_DEAD (reg:SI 131)
(nil)))
(insn 22 21 23 5 ../loop.c:10 (set (mem:SI (reg/v/f:SI 123 [ res ]) [2 S4
A32])
(reg:SI 131)) 324 {*movsi_internal1} (expr_list:REG_DEAD (reg:SI
129)])
(nil)))
...
On x86 it produces complex set instructions:
...
(insn 18 17 19 5 ../loop.c:10 (parallel [
(set (mem:SI (reg/v/f:DI 62 [ res ]) [2 S4 A32])
(xor:SI (mem:SI (reg/v/f:DI 62 [ res ]) [2 S4 A32])
(const_int 234 [0xea])))
(clobber (reg:CC 17 flags))
]) 417 {*xorsi_1} (expr_list:REG_UNUSED (reg:CC 17 flags)])
(nil)))
...
and that's why (probably) GCSE can't optimize it.
PS. BTW, I _do_ compile it with "-O3" and tree PRE doesn't catch it.
"steven at gcc dot gnu dot org" <gcc-bugzilla@gcc.gnu.org> wrote on
04/12/2008 19:08:57:
> I do not see RTL PRE catch this on ia64, with or without -fgcse-las.
>
> Can you show, please, the RTL dumps before and after GCSE?
>
>
> --
>
>
> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38401
>
> ------- You are receiving this mail because: -------
> You reported the bug, or are watching the reporter.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38401
More information about the Gcc-bugs
mailing list