This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: fix for strct-pack-1.c regressions
- From: Richard Henderson <rth at redhat dot com>
- To: Richard Kenner <kenner at vlsi1 dot ultra dot nyu dot edu>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Wed, 13 Mar 2002 11:39:43 -0800
- Subject: Re: fix for strct-pack-1.c regressions
- References: <10203131920.AA00180@vlsi1.ultra.nyu.edu>
On Wed, Mar 13, 2002 at 02:20:12PM -0500, Richard Kenner wrote:
> Right, but you could strip off *two*.
Yes, but that (as with adjusting mem_attr.expr) going to take a
reasonable-sized hunk o logic to coordinate with what
store/extract_bit_field is actually going to do.
> However, I don't think we should be trying to use the alias set
> of a mis-aligned field, so I'm not sure I understand the original problem.
Digging up Aldy's first message on this...
The problem actually observed is
(insn 12 11 15 (set (mem/s:HI (plus:SI (reg/f:SI 31 r31)
(const_int 16 [0x10])) [6 trial.s+0 S2 A128])
(reg:HI 116)) 296 {*rs6000.md:8555} (insn_list 11 (nil))
(expr_list:REG_DEAD (reg:HI 116)
(nil)))
(insn 16 15 18 (set (reg:SI 118)
(zero_extend:SI (mem/s:HI (plus:SI (reg/f:SI 31 r31)
(const_int 16 [0x10])) [4 trial.d+-2 S2 A128])))
30 {*rs6000.md:2318} (nil)
(nil))
being considered not to alias, and thus mis-scheduled.
I consider [trial.d-2] to be incorrect. You also find that the
alias set is set as for short and int, which also prevents these
from being considered to alias. Thus my suggestion to (in the
short term) smash both of these values to known-safe settings.
r~
BTW, it's "-mstrict-align -mlittle -O2" on powerpc-eabialtivec
that is supposed to show this failure.