mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-12-04 17:24:15 +08:00
AArch64: Add if condition in aarch64_function_value [PR96479]
Report diagnostic information instead of ICE if it generats fp/simd for return register when fp/simd is disabled by -mgeneral-regs-only. gcc/ChangeLog: * config/aarch64/aarch64.c (aarch64_function_value): Add if condition to check ag_mode after entering if condition of aarch64_vfp_is_call_or_return_candidate. If TARGET_FLOAT is set as false by -mgeneral-regs-only, report the diagnostic information of -mgeneral-regs-only imcompatible with the use of fp/simd register(s). gcc/testsuite/ChangeLog: * gcc.target/aarch64/mgeneral-regs_1.c: Add the comment that -mgeneral-regs-only is compatible with the use of vector type used in the test case.
This commit is contained in:
parent
21cfe724cb
commit
b418ccb358
@ -5554,6 +5554,10 @@ aarch64_function_value (const_tree type, const_tree func,
|
||||
if (aarch64_vfp_is_call_or_return_candidate (mode, type, &ag_mode, &count,
|
||||
NULL, false))
|
||||
{
|
||||
/* TYPE passed in fp/simd registers. */
|
||||
if (!TARGET_FLOAT)
|
||||
aarch64_err_no_fpadvsimd (ag_mode);
|
||||
|
||||
gcc_assert (!sve_p);
|
||||
if (!aarch64_composite_type_p (type, mode))
|
||||
{
|
||||
|
@ -4,6 +4,6 @@ typedef int int32x2_t __attribute__ ((__vector_size__ ((8))));
|
||||
|
||||
/* { dg-error "'-mgeneral-regs-only' is incompatible with the use of vector types" "" {target "aarch64*-*-*"} .+1 } */
|
||||
int32x2_t test (int32x2_t a, int32x2_t b)
|
||||
{
|
||||
return a + b;
|
||||
{ /* { dg-error "'-mgeneral-regs-only' is incompatible with the use of vector types" } */
|
||||
return a + b; /* { dg-error "'-mgeneral-regs-only' is incompatible with the use of vector types" } */
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user