AArch64: Remove "fndecl && TREE_PUBLIC (fndecl)" in aarch64_init_cumulative_args
authorPeixin Qiao <qiaopeixin@huawei.com>
Wed, 19 Aug 2020 09:55:19 +0000 (10:55 +0100)
committerRichard Sandiford <richard.sandiford@arm.com>
Wed, 19 Aug 2020 09:55:19 +0000 (10:55 +0100)
This check will prevent the function type check of static funtion or calling
via a funtion pointer. The function type should be checked no matter if the
function has external linkage.

gcc/ChangeLog:

* config/aarch64/aarch64.c (aarch64_init_cumulative_args): Remove
"fndecl && TREE_PUBLIC (fndecl)" check since it prevents the funtion
type check when calling via a function pointer or when calling a static
function.

gcc/testsuite/ChangeLog:

* gcc.target/aarch64/mgeneral-regs_7.c: New test.

gcc/config/aarch64/aarch64.c
gcc/testsuite/gcc.target/aarch64/mgeneral-regs_7.c [new file with mode: 0644]

index b7f5bc7..b6d7449 100644 (file)
@@ -6017,7 +6017,6 @@ aarch64_init_cumulative_args (CUMULATIVE_ARGS *pcum,
 
   if (!silent_p
       && !TARGET_FLOAT
-      && fndecl && TREE_PUBLIC (fndecl)
       && fntype && fntype != error_mark_node)
     {
       const_tree type = TREE_TYPE (fntype);
diff --git a/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_7.c b/gcc/testsuite/gcc.target/aarch64/mgeneral-regs_7.c
new file mode 100644 (file)
index 0000000..3998947
--- /dev/null
@@ -0,0 +1,11 @@
+/* { dg-options "-mgeneral-regs-only" } */
+
+typedef int v4si __attribute__ ((__vector_size__ ((16))));
+
+v4si (*foo) ();
+
+void
+f0 (v4si *ptr)
+{
+  *ptr = foo (); /* { dg-error "'-mgeneral-regs-only' is incompatible with the use of vector types" } */
+}