diff options
author | Max Ostapenko <m.ostapenko@partner.samsung.com> | 2015-04-01 14:18:03 +0300 |
---|---|---|
committer | Maxim Ostapenko <chefmax@gcc.gnu.org> | 2015-04-01 14:18:03 +0300 |
commit | 0ff2bf464e5b159a2634f8f83363378e5d8f06ef (patch) | |
tree | b4838745190f17732db95cdac8065f4d735bcc8b | |
parent | 41f669d825086c0d81407815b9c7371fd51815b0 (diff) | |
download | gcc-0ff2bf464e5b159a2634f8f83363378e5d8f06ef.zip gcc-0ff2bf464e5b159a2634f8f83363378e5d8f06ef.tar.gz gcc-0ff2bf464e5b159a2634f8f83363378e5d8f06ef.tar.bz2 |
re PR target/65624 (ICE in aarch64-builtins.c when expanding 4-argument aarch64 intrinsic.)
2015-04-01 Max Ostapenko <m.ostapenko@partner.samsung.com>
PR target/65624
gcc/
* config/aarch64/aarch64-builtins.c (aarch64_simd_expand_builtin): Increase
args array size by one to avoid buffer overflow.
gcc/testsuite/
* gcc.target/aarch64/pr65624.c: New test.
From-SVN: r221807
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/aarch64/aarch64-builtins.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/aarch64/pr65624.c | 15 |
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9c39d76..11a79db 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-04-01 Max Ostapenko <m.ostapenko@partner.samsung.com> + + PR target/65624 + * config/aarch64/aarch64-builtins.c (aarch64_simd_expand_builtin): Increase + args array size by one to avoid buffer overflow. + 2015-03-31 Jan Hubicka <hubicka@ucw.cz> * lto-cgraph.c (lto_output_node, input_overwrite_node): Stream diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c index a9b3305..8a9fff8 100644 --- a/gcc/config/aarch64/aarch64-builtins.c +++ b/gcc/config/aarch64/aarch64-builtins.c @@ -1025,7 +1025,7 @@ aarch64_simd_expand_builtin (int fcode, tree exp, rtx target) aarch64_simd_builtin_datum *d = &aarch64_simd_builtin_data[fcode - AARCH64_SIMD_PATTERN_START]; enum insn_code icode = d->code; - builtin_simd_arg args[SIMD_MAX_BUILTIN_ARGS]; + builtin_simd_arg args[SIMD_MAX_BUILTIN_ARGS + 1]; int num_args = insn_data[d->code].n_operands; int is_void = 0; int k; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 0dd0421..24fbed7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-04-01 Max Ostapenko <m.ostapenko@partner.samsung.com> + + PR target/65624 + * gcc.target/aarch64/pr65624.c: New test. + 2015-03-31 Jan Hubicka <hubicka@ucw.cz> * gcc.dg/ipa/inlinehint-4.c: New testcase. diff --git a/gcc/testsuite/gcc.target/aarch64/pr65624.c b/gcc/testsuite/gcc.target/aarch64/pr65624.c new file mode 100644 index 0000000..8eb3786 --- /dev/null +++ b/gcc/testsuite/gcc.target/aarch64/pr65624.c @@ -0,0 +1,15 @@ +/* { dg-do compile } */ + +#include <arm_neon.h> + +int32x4_t +foo (void) +{ + int32x4_t vector_int32x4; + int16x4_t vector3_int16x4; + int16x4_t vector4_int16x4; + static int32_t buffer_int32x4[32]; + + vector_int32x4 = vld1q_s32(buffer_int32x4); + return vqdmlsl_lane_s16(vector_int32x4, vector3_int16x4, vector4_int16x4, 0); +} |