On Wed, Sep 24, 2014 at 8:46 AM, Bill Schmidt
<wschm...@linux.vnet.ibm.com> wrote:
> Hi,
>
> The analyze_swaps pass performs special handling on certain non-swapping
> loads and stores so that computations involving them can still be
> optimized.  However, the intent was to avoid this for lvx, stvx, lve*,
> and stve*.  The existing logic excludes these by looking for a PARALLEL
> as the rtx code for the insn body.  It turns out this works for lvx,
> stvx, and lve*, but stve* was implemented slightly differently, so this
> check doesn't catch it.  This patch fixes the problem by looking for the
> pattern that matches stve* as well; we now exclude any store with an
> UNSPEC as its SET_SRC.
>
> I've added a new compile-time test case to verify the fix.  The test
> ICEs on existing trunk but passes with the new changes.
>
> Bootstrapped and tested on powerpc64le-unknown-linux-gnu with no
> regressions.  Is this ok for trunk?
>
> Thanks,
> Bill
>
>
> [gcc]
>
> 2014-09-24  Bill Schmidt  <wschm...@linux.vnet.ibm.com>
>
>         * config/rs6000/rs6000.c (insn_is_swappable_p): Don't provide
>         special handling for stores whose SET_SRC is an UNSPEC (such as
>         UNSPEC_STVE).
>
>
> [gcc/testsuite]
>
> 2014-09-24  Bill Schmidt  <wschm...@linux.vnet.ibm.com>
>
>         * gcc.target/powerpc/swaps-p8-17.c: New test.

Okay.

Thanks, David

Reply via email to