aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorYury Gribov <y.gribov@samsung.com>2014-02-06 09:48:15 +0000
committerYury Gribov <ygribov@gcc.gnu.org>2014-02-06 09:48:15 +0000
commitc801e24619405cf2ca3eb3faea28c45f10ce00d7 (patch)
tree77b8aa162844ae23b4ae56b42af435cef8717ef5 /gcc
parentd50f7b84e39784a14e96d095964d71fbdf53f5e9 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/arm/arm.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/arm/vect-noalign.c20
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;
+}
+