AArch64: Remove "fndecl && TREE_PUBLIC (fndecl)" in aarch64_init_cumulative_args

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.
This commit is contained in:
Peixin Qiao 2020-08-19 10:55:19 +01:00 committed by Richard Sandiford
parent 7dbcb569b2
commit a5a635fc43
2 changed files with 11 additions and 1 deletions

View 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);

View File

@ -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" } */
}