diff options
author | Yury Gribov <y.gribov@samsung.com> | 2014-02-06 09:48:15 +0000 |
---|---|---|
committer | Yury Gribov <ygribov@gcc.gnu.org> | 2014-02-06 09:48:15 +0000 |
commit | c801e24619405cf2ca3eb3faea28c45f10ce00d7 (patch) | |
tree | 77b8aa162844ae23b4ae56b42af435cef8717ef5 /gcc | |
parent | d50f7b84e39784a14e96d095964d71fbdf53f5e9 (diff) | |
download | gcc-c801e24619405cf2ca3eb3faea28c45f10ce00d7.zip gcc-c801e24619405cf2ca3eb3faea28c45f10ce00d7.tar.gz gcc-c801e24619405cf2ca3eb3faea28c45f10ce00d7.tar.bz2 |
arm.c (arm_vector_alignment_reachable): Check unaligned_access.
2014-02-06 Yury Gribov <y.gribov@samsung.com>
Kugan Vivekanandarajah <kuganv@linaro.org>
gcc/
* config/arm/arm.c (arm_vector_alignment_reachable): Check
unaligned_access.
* config/arm/arm.c (arm_builtin_support_vector_misalignment): Likewise.
testsuite/
* gcc.target/arm/vect-noalign.c: New file.
Co-Authored-By: Kugan Vivekanandarajah <kuganv@linaro.org>
From-SVN: r207533
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/arm/vect-noalign.c | 20 |
4 files changed, 34 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b514a28..e83a824 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-02-06 Yury Gribov <y.gribov@samsung.com> + Kugan Vivekanandarajah <kuganv@linaro.org> + + * config/arm/arm.c (arm_vector_alignment_reachable): Check + unaligned_access. + * config/arm/arm.c (arm_builtin_support_vector_misalignment): Likewise. + 2014-02-06 Richard Biener <rguenther@suse.de> * tree-cfg.c (gimple_duplicate_sese_region): Fix ordering of diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c index 825407f..9d05e89 100644 --- a/gcc/config/arm/arm.c +++ b/gcc/config/arm/arm.c @@ -29551,7 +29551,7 @@ arm_vector_alignment_reachable (const_tree type, bool is_packed) { /* Vectors which aren't in packed structures will not be less aligned than the natural alignment of their element type, so this is safe. */ - if (TARGET_NEON && !BYTES_BIG_ENDIAN) + if (TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access) return !is_packed; return default_builtin_vector_alignment_reachable (type, is_packed); @@ -29562,7 +29562,7 @@ arm_builtin_support_vector_misalignment (enum machine_mode mode, const_tree type, int misalignment, bool is_packed) { - if (TARGET_NEON && !BYTES_BIG_ENDIAN) + if (TARGET_NEON && !BYTES_BIG_ENDIAN && unaligned_access) { HOST_WIDE_INT align = TYPE_ALIGN_UNIT (type); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index efa4247..70a8f62 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-02-06 Yury Gribov <y.gribov@samsung.com> + Kugan Vivekanandarajah <kuganv@linaro.org> + + * gcc.target/arm/vect-noalign.c: New file. + 2014-02-05 Jan Hubicka <hubicka@ucw.cz> Jakub Jelinek <jakub@redhat.com> diff --git a/gcc/testsuite/gcc.target/arm/vect-noalign.c b/gcc/testsuite/gcc.target/arm/vect-noalign.c new file mode 100644 index 0000000..a934233 --- /dev/null +++ b/gcc/testsuite/gcc.target/arm/vect-noalign.c @@ -0,0 +1,20 @@ +/* { dg-do run } */ +/* { dg-require-effective-target arm_neon_hw } */ +/* { dg-options "-mfpu=neon -ffast-math -ftree-vectorize -fno-common -O2 -mno-unaligned-access" } */ + + +/* Test for-mno-unaligned-access and -ftree-vectorize and results bus error. */ +#define N 128 + +char ia[N]; +char ib[N+1]; + +int main() { + int i; + for(i = 0; i < N; ++i) { + ia[i] = ib[i + 1]; + } + + return 0; +} + |