aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAlan Lawrence <alan.lawrence@arm.com>2014-12-09 20:08:39 +0000
committerAlan Lawrence <alalaw01@gcc.gnu.org>2014-12-09 20:08:39 +0000
commitfca051af18ffcc9e44763c106e21fe3cf5e0d3ca (patch)
tree2a6552dbf063942d900e657879d12892db75ca5b /gcc
parentd1e5f2c7e2a800e99509aadb9cdc6d3e76eeb1a9 (diff)
downloadgcc-fca051af18ffcc9e44763c106e21fe3cf5e0d3ca.zip
gcc-fca051af18ffcc9e44763c106e21fe3cf5e0d3ca.tar.gz
gcc-fca051af18ffcc9e44763c106e21fe3cf5e0d3ca.tar.bz2
[AArch64]Improve error message for non-constant immediates
gcc/: * gcc/config/aarch64-builtins.c (aarch64_simd_expand_args): Update error message for SIMD_ARG_CONSTANT. gcc/testsuite/: * gcc.target/aarch64/arg-type-diagnostics-1.c: Call intrinsic, update expected error message. From-SVN: r218534
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/aarch64/aarch64-builtins.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c9
4 files changed, 18 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index d6bb178..4ba5676 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2014-12-09 Alan Lawrence <alan.lawrence@arm.com>
+ * gcc/config/aarch64-builtins.c (aarch64_simd_expand_args): Update error
+ message for SIMD_ARG_CONSTANT.
+
+2014-12-09 Alan Lawrence <alan.lawrence@arm.com>
+
* config/aarch64/aarch64-builtins.c (aarch64_types_binopv_qualifiers,
TYPES_BINOPV): Delete.
(enum aarch64_builtins): Add AARCH64_BUILTIN_SIMD_LANE_CHECK and
diff --git a/gcc/config/aarch64/aarch64-builtins.c b/gcc/config/aarch64/aarch64-builtins.c
index f52f524..e3779a4 100644
--- a/gcc/config/aarch64/aarch64-builtins.c
+++ b/gcc/config/aarch64/aarch64-builtins.c
@@ -926,8 +926,8 @@ aarch64_simd_expand_args (rtx target, int icode, int have_retval,
if (!(*insn_data[icode].operand[opc].predicate)
(op[opc], mode))
{
- error_at (EXPR_LOCATION (exp), "incompatible type for argument %d, "
- "expected %<const int%>", opc + 1);
+ error ("%Kargument %d must be a constant immediate",
+ exp, opc + 1 - have_retval);
return const0_rtx;
}
break;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 24822fe..8e536a4 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,10 @@
2014-12-09 Alan Lawrence <alan.lawrence@arm.com>
+ * gcc.target/aarch64/arg-type-diagnostics-1.c: Call intrinsic, update
+ expected error message.
+
+2014-12-09 Alan Lawrence <alan.lawrence@arm.com>
+
* gcc.target/aarch64/simd/vset_lane_s16_const_1.c: New test.
2014-12-09 Alan Lawrence <alan.lawrence@arm.com>
diff --git a/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c b/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
index 55dd9f6..a7b7cd3 100644
--- a/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
+++ b/gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c
@@ -3,13 +3,16 @@
#include "arm_neon.h"
-void foo ()
+void foo (int a)
{
- int a;
int32x2_t arg1;
int32x2_t arg2;
int32x2_t result;
arg1 = vcreate_s32 (UINT64_C (0x0000ffffffffffff));
arg2 = vcreate_s32 (UINT64_C (0x16497fffffffffff));
- result = __builtin_aarch64_srsra_nv2si (arg1, arg2, a); /* { dg-error "incompatible type for argument" } */
+ /* The correct line number is in the preamble to the error message,
+ not in the final line (which is all that dg-error inspects). Hence,
+ we have to tell dg-error to ignore the line number. */
+ result = vrsra_n_s32 (arg1, arg2, a);
+ /* { dg-error "must be a constant immediate" "" { target *-*-* } 0 } */
}