This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: Why does loop-35.c store motion testcase fail for AVR?
Thanks for explanation.
Do you think I should report this as BUG/missed optimsation? and XFAIL
test for AVR?
or somehow make test target size dependent (I guess pointer size !=
long)
Andy
----------------------------------------------
Sent from my Dingleberry wired device.
-----Original Message-----
From: Richard Guenther <richard.guenther@gmail.com>
To: Andy H <hutchinsonandy@aim.com>
Cc: gcc-patches@gcc.gnu.org
Sent: Tue, 17 Jun 2008 8:33 am
Subject: Re: Why does loop-35.c store motion testcase fail for AVR?
On Mon, Jun 16, 2008 at 9:29 PM, Andy H <hutchinsonandy@aim.com> wrote:
Help !
gcc.dg/tree-ssa/loop-35.c is a test that looks for "Executing store
motion"
in dump-tree-lim-details
As the load and store of memory location should be pulled out of loop.
This works for 3 out of 4 tescases. But on AVR target test3() will
fail.
The only difference between this and test1() is that index is
unsigned long
rather than int.
Index of char or int work fine.
Why????
Even considering pointers and int are only HImode, I cant see why a
long
(SImode) should affect this.
This is because the alias-oracle for store-motion doesn't handle
conversions
to sizetype well in the offset disambiguation.
Richard.
void test3(unsigned long b)
{
unsigned i;
/* And here. */
for (i = 0; i < 100; i++)
{
arr[b+8].X += i;
arr[b+9].X += i;
}
}