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