On Mon, Nov 14, 2011 at 4:58 AM, Yuehai Du <duyue...@gmail.com> wrote:
> Hi
>
>  i found IVOPTS didn't work well on some case if the loop contain
> some unaligned access. it didn't take this kind of memory access into
> account because this check in function:find_interesting_uses_address
>
>      /* Moreover, on strict alignment platforms, check that it is
>         sufficiently aligned.  */
>      if (STRICT_ALIGNMENT && may_be_unaligned_p (base, step))
>        goto fail;
>
>  and this is used to fix http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17949
> because it converting byte loads into a unaligned word load on strict
> alignment platform.
>
>  but there are some platform which is strict alignment and  it also
> support unaligned access for special mode. for example, ARM NEON support
> vector mode unaligned access  via VLD1/VST1, and they both support write back
> address mode.
>
>  Moreover, lately ARM add unaligned access support for  all ARMv6 , ARMv7-A,
> ARMv7-R, and ARMv7-M architecture-based processors which controlled by the
> option: munaligned-access.
> see http://gcc.gnu.org/ml/gcc-patches/2011-05/msg00513.html.
>
>  so what should we do now? should we use target hook to check this or
> something else?

Huh, IVOPTs should never cause a different size memory read.  I wonder
if the original issue would still reproduce with the fix reverted.  Can you
ponder in this direction (thus, remove the may_be_unaligned_p check
completely)?

Richard.

> --
> Yuehai Du
>

Reply via email to