Commit 7926a220 by Sandra Loosemore Committed by Sandra Loosemore

2019-09-23 Sandra Loosemore <sandra@codesourcery.com>

	gcc/testsuite/
	* lib/target-supports.exp
	(check_effective_target_arm_vfp_ok_nocache): New.
	(check_effective_target_arm_vfp_ok): Rewrite.
	(add_options_for_arm_vfp): New.
	(add_options_for_sqrt_insn): Add options for arm.
	* gcc.target/arm/attr-neon-builtin-fail2.c: Use dg-add-options.
	* gcc.target/arm/short-vfp-1.c: Likewise.

From-SVN: r276063
parent 33ba6ac3
2019-09-23 Sandra Loosemore <sandra@codesourcery.com>
* lib/target-supports.exp
(check_effective_target_arm_vfp_ok_nocache): New.
(check_effective_target_arm_vfp_ok): Rewrite.
(add_options_for_arm_vfp): New.
(add_options_for_sqrt_insn): Add options for arm.
* gcc.target/arm/attr-neon-builtin-fail2.c: Use dg-add-options.
* gcc.target/arm/short-vfp-1.c: Likewise.
2019-09-23 Marek Polacek <polacek@redhat.com> 2019-09-23 Marek Polacek <polacek@redhat.com>
PR c++/91844 - Implement CWG 2352, Similar types and reference binding. PR c++/91844 - Implement CWG 2352, Similar types and reference binding.
......
/* Check that calling a neon builtin from a function compiled with vfp fails. */ /* Check that calling a neon builtin from a function compiled with vfp fails. */
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-require-effective-target arm_vfp_ok } */ /* { dg-require-effective-target arm_vfp_ok } */
/* { dg-options "-O2 -mfloat-abi=softfp" } */ /* { dg-options "-O2" } */
/* { dg-add-options arm_vfp } */
extern __simd64_int8_t a, b; extern __simd64_int8_t a, b;
......
/* { dg-do compile } */ /* { dg-do compile } */
/* { dg-require-effective-target arm_vfp_ok } /* { dg-require-effective-target arm_vfp_ok }
/* { dg-options "-mfpu=vfp" } */ /* { dg-add-options arm_vfp } */
int int
test_sisf (float x) test_sisf (float x)
......
...@@ -3489,18 +3489,43 @@ proc check_effective_target_arm_soft_ok { } { ...@@ -3489,18 +3489,43 @@ proc check_effective_target_arm_soft_ok { } {
} }
} }
# Return 1 if this is an ARM target supporting -mfpu=vfp # Return 1 if this is an ARM target supporting -mfpu=vfp with an
# -mfloat-abi=softfp. Some multilibs may be incompatible with these # appropriate abi.
# options.
proc check_effective_target_arm_vfp_ok { } { proc check_effective_target_arm_vfp_ok_nocache { } {
global et_arm_vfp_flags
set et_arm_vfp_flags ""
if { [check_effective_target_arm32] } { if { [check_effective_target_arm32] } {
return [check_no_compiler_messages arm_vfp_ok object { foreach flags {"-mfpu=vfp" "-mfpu=vfp -mfloat-abi=softfp" "-mpu=vfp -mfloat-abi=hard"} {
int dummy; if { [check_no_compiler_messages_nocache arm_fp_ok object {
} "-mfpu=vfp -mfloat-abi=softfp"] #ifndef __ARM_FP
} else { #error __ARM_FP not defined
return 0 #endif
} "$flags"] } {
set et_arm_vfp_flags $flags
return 1
}
}
} }
return 0
}
proc check_effective_target_arm_vfp_ok { } {
return [check_cached_effective_target arm_vfp_ok \
check_effective_target_arm_vfp_ok_nocache]
}
# Add the options needed to compile code with -mfpu=vfp. We need either
# -mfloat-abi=softfp or -mfloat-abi=hard, but if one is already
# specified by the multilib, use it.
proc add_options_for_arm_vfp { flags } {
if { ! [check_effective_target_arm_vfp_ok] } {
return "$flags"
}
global et_arm_vfp_flags
return "$flags $et_arm_vfp_flags"
} }
# Return 1 if this is an ARM target supporting -mfpu=vfp3 # Return 1 if this is an ARM target supporting -mfpu=vfp3
...@@ -6678,6 +6703,9 @@ proc add_options_for_sqrt_insn { flags } { ...@@ -6678,6 +6703,9 @@ proc add_options_for_sqrt_insn { flags } {
if { [istarget amdgcn*-*-*] } { if { [istarget amdgcn*-*-*] } {
return "$flags -ffast-math" return "$flags -ffast-math"
} }
if { [istarget arm*-*-*] } {
return [add_options_for_arm_vfp "$flags"]
}
return $flags return $flags
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment