Commit c801e246 by Yury Gribov Committed by Yury Gribov

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
parent d50f7b84
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
......
......@@ -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);
......
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>
......
/* { 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;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment