[PATCH PR target/67366 2/2] [gimple-fold.c] Support movmisalign optabs in gimple...
authorRamana Radhakrishnan <ramana@gcc.gnu.org>
Fri, 9 Oct 2015 10:58:06 +0000 (10:58 +0000)
committerRamana Radhakrishnan <ramana@gcc.gnu.org>
Fri, 9 Oct 2015 10:58:06 +0000 (10:58 +0000)
commitf869c12f4c930a233b02e31843d7a255d50ce5d1
tree28e427e367439d44f5e2009524bd7c9f75a8d3b0
parenta46b23e136f56e1bb44065d260b49c24b656bd8b
[PATCH PR target/67366 2/2] [gimple-fold.c] Support movmisalign optabs in gimple-fold.c

This patch by Richard allows for movmisalign optabs to be supported
in gimple-fold.c. This caused a bit of pain in the testsuite with strlenopt-8.c
in conjunction with the ARM support for movmisalign_optabs as the test
was coded up to do different things depending on whether the target
supported misaligned access or not. However now with unaligned access
being allowed for different levels of the architecture in the arm backend,
the concept of the helper function non_strict_align mapping identically
to the definition of STRICT_ALIGNMENT disappears.

Adjusted thusly for ARM. The testsuite/lib changes were tested with an
arm-none-eabi multilib that included architecture variants that did not
support unaligned access and architecture variants that did.

The testing matrix for this patch was:

1. x86_64 bootstrap and regression test - no regressions.
2. armhf bootstrap and regression test - no regressions.
3. arm-none-eabi cross build and regression test for

{-marm/-march=armv7-a/-mfpu=vfpv3-d16/-mfloat-abi=softfp}
{-mthumb/-march=armv8-a/-mfpu=crypto-neon-fp-armv8/-mfloat-abi=hard}
{-marm/-mcpu=arm7tdmi/-mfloat-abi=soft}
{-mthumb/-mcpu=arm7tdmi/-mfloat-abi=soft}

with no regressions.

Ok to apply ?

2015-10-09  Richard Biener  <rguenth@suse.de>

PR target/67366
* gimple-fold.c (optabs-query.h): Include
(gimple_fold_builtin_memory_op): Allow unaligned stores
when movmisalign_optabs are available.

2015-10-09  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>

PR target/67366
* lib/target-supports.exp (check_effective_target_non_strict_align):
Adjust for arm*-*-*.
* gcc.target/arm/pr67366.c: New test.

From-SVN: r228644
gcc/ChangeLog
gcc/gimple-fold.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/arm/pr67366.c [new file with mode: 0644]
gcc/testsuite/lib/target-supports.exp