From: Thomas Preud'homme Date: Fri, 9 Jun 2017 12:55:38 +0000 (+0000) Subject: [ARM] Allow arm_arch_*_ok to test several macros X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=051508d769162f11d48b185a253408ffd849ee07;p=gcc.git [ARM] Allow arm_arch_*_ok to test several macros 2017-06-09 Thomas Preud'homme gcc/testsuite/ * lib/target-supports.exp (check_effective_target_arm_arch_FUNC_ok): Test for null definitions instead of them being undefined. Add entry for ARMv7VE. Reindent entry for ARMv8-M Baseline. Add comment warning about using the effective target for architecture extension. (check_effective_target_arm_arch_v7ve_ok): Remove. (add_options_for_arm_arch_v7ve): Likewise. From-SVN: r249059 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 7bef1b5435e..1a709466b2e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2017-06-09 Thomas Preud'homme + + * lib/target-supports.exp (check_effective_target_arm_arch_FUNC_ok): + Test for null definitions instead of them being undefined. Add entry + for ARMv7VE. Reindent entry for ARMv8-M Baseline. Add comment warning + about using the effective target for architecture extension. + (check_effective_target_arm_arch_v7ve_ok): Remove. + (add_options_for_arm_arch_v7ve): Likewise. + 2017-06-09 Richard Biener PR tree-optimization/66623 diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp index d0b35beb7a2..9c9a26fe1dc 100644 --- a/gcc/testsuite/lib/target-supports.exp +++ b/gcc/testsuite/lib/target-supports.exp @@ -3772,12 +3772,13 @@ proc check_effective_target_arm_fp16_hw { } { # can be selected and a routine to give the flags to select that architecture # Note: Extra flags may be added to disable options from newer compilers # (Thumb in particular - but others may be added in the future). -# -march=armv7ve is special and is handled explicitly after this loop because -# it needs more than one predefine check to identify. +# Warning: Do not use check_effective_target_arm_arch_*_ok for architecture +# extension (eg. ARMv8.1-A) since there is no macro defined for them. See +# how only __ARM_ARCH_8A__ is checked for ARMv8.1-A. # Usage: /* { dg-require-effective-target arm_arch_v5_ok } */ # /* { dg-add-options arm_arch_v5 } */ # /* { dg-require-effective-target arm_arch_v5_multilib } */ -foreach { armfunc armflag armdef } { +foreach { armfunc armflag armdefs } { v4 "-march=armv4 -marm" __ARM_ARCH_4__ v4t "-march=armv4t" __ARM_ARCH_4T__ v5 "-march=armv5 -marm" __ARM_ARCH_5__ @@ -3792,20 +3793,23 @@ foreach { armfunc armflag armdef } { v7r "-march=armv7-r" __ARM_ARCH_7R__ v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__ v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__ + v7ve "-march=armv7ve -marm" + "__ARM_ARCH_7A__ && __ARM_FEATURE_IDIV" v8a "-march=armv8-a" __ARM_ARCH_8A__ v8_1a "-march=armv8.1a" __ARM_ARCH_8A__ v8_2a "-march=armv8.2a" __ARM_ARCH_8A__ - v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft" __ARM_ARCH_8M_BASE__ + v8m_base "-march=armv8-m.base -mthumb -mfloat-abi=soft" + __ARM_ARCH_8M_BASE__ v8m_main "-march=armv8-m.main -mthumb" __ARM_ARCH_8M_MAIN__ } { - eval [string map [list FUNC $armfunc FLAG $armflag DEF $armdef ] { + eval [string map [list FUNC $armfunc FLAG $armflag DEFS $armdefs ] { proc check_effective_target_arm_arch_FUNC_ok { } { if { [ string match "*-marm*" "FLAG" ] && ![check_effective_target_arm_arm_ok] } { return 0 } return [check_no_compiler_messages arm_arch_FUNC_ok assembly { - #if !defined (DEF) - #error !DEF + #if !(DEFS) + #error !(DEFS) #endif } "FLAG" ] } @@ -3826,26 +3830,6 @@ foreach { armfunc armflag armdef } { }] } -# Same functions as above but for -march=armv7ve. To uniquely identify -# -march=armv7ve we need to check for __ARM_ARCH_7A__ as well as -# __ARM_FEATURE_IDIV otherwise it aliases with armv7-a. - -proc check_effective_target_arm_arch_v7ve_ok { } { - if { [ string match "*-marm*" "-march=armv7ve" ] && - ![check_effective_target_arm_arm_ok] } { - return 0 - } - return [check_no_compiler_messages arm_arch_v7ve_ok assembly { - #if !defined (__ARM_ARCH_7A__) || !defined (__ARM_FEATURE_IDIV) - #error !armv7ve - #endif - } "-march=armv7ve" ] -} - -proc add_options_for_arm_arch_v7ve { flags } { - return "$flags -march=armv7ve" -} - # Return 1 if GCC was configured with --with-mode= proc check_effective_target_default_mode { } {