[AArch64]Improve error message for non-constant immediates
authorAlan Lawrence <alan.lawrence@arm.com>
Tue, 9 Dec 2014 20:08:39 +0000 (20:08 +0000)
committerAlan Lawrence <alalaw01@gcc.gnu.org>
Tue, 9 Dec 2014 20:08:39 +0000 (20:08 +0000)
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

gcc/ChangeLog
gcc/config/aarch64/aarch64-builtins.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/aarch64/arg-type-diagnostics-1.c

index d6bb178733276e3d1efc4ee1a92ee3936aacef28..4ba56768e611a6ed7fd320c4ae305a9a10d24cf4 100644 (file)
@@ -1,3 +1,8 @@
+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,
index f52f524e55e25f73dfc6ebfa8c8fe302a7f3803b..e3779a499cb7e455ad867ff02c8aa870758d77c7 100644 (file)
@@ -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;
index 24822feb40974f59052423bd24cb0c240c7195d4..8e536a42325168054012a1379ca79b2a27c6209b 100644 (file)
@@ -1,3 +1,8 @@
+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.
index 55dd9f66f23cf6e6eff67bd68d875d24c0460d13..a7b7cd3bd8d40faaabbe48a1d382e9860d4497ff 100644 (file)
@@ -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 } */
 }