On Nov 28, 2016, at 8:52 AM, Thomas Preudhomme <thomas.preudho...@foss.arm.com> 
wrote:
> 
> Ping?

Ok.

> On 17/11/16 20:42, Thomas Preudhomme wrote:
>> Ping?
>> 
>> Best regards,
>> 
>> Thomas
>> 
>> On 08/11/16 13:35, Thomas Preudhomme wrote:
>>> Ping,
>>> 
>>> Best regards,
>>> 
>>> Thomas
>>> 
>>> On 02/11/16 10:04, Thomas Preudhomme wrote:
>>>> Ping?
>>>> 
>>>> Best regards,
>>>> 
>>>> Thomas
>>>> 
>>>> On 28/10/16 10:49, Thomas Preudhomme wrote:
>>>>> On 22/09/16 16:47, Richard Earnshaw (lists) wrote:
>>>>>> On 22/09/16 15:51, Thomas Preudhomme wrote:
>>>>>>> Sorry, noticed an error in the patch. It was not caught during testing
>>>>>>> because GCC was built with --with-mode=thumb. Correct patch attached.
>>>>>>> 
>>>>>>> Best regards,
>>>>>>> 
>>>>>>> Thomas
>>>>>>> 
>>>>>>> On 22/09/16 14:49, Thomas Preudhomme wrote:
>>>>>>>> Hi,
>>>>>>>> 
>>>>>>>> ARMv6-M and ARMv8-M Baseline only support soft float ABI. Therefore, 
>>>>>>>> the
>>>>>>>> arm_arch_v8m_base add option should pass -mfloat-abi=soft, much like
>>>>>>>> -mthumb is
>>>>>>>> passed for architectures that only support Thumb instruction set. This
>>>>>>>> patch
>>>>>>>> adds -mfloat-abi=soft to both arm_arch_v6m and arm_arch_v8m_base add
>>>>>>>> options.
>>>>>>>> Patch is in attachment.
>>>>>>>> 
>>>>>>>> ChangeLog entry is as follows:
>>>>>>>> 
>>>>>>>> *** gcc/testsuite/ChangeLog ***
>>>>>>>> 
>>>>>>>> 2016-07-15  Thomas Preud'homme  <thomas.preudho...@arm.com>
>>>>>>>> 
>>>>>>>>        * lib/target-supports.exp (add_options_for_arm_arch_v6m): Add
>>>>>>>>        -mfloat-abi=soft option.
>>>>>>>>        (add_options_for_arm_arch_v8m_base): Likewise.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> Is this ok for trunk?
>>>>>>>> 
>>>>>>>> Best regards,
>>>>>>>> 
>>>>>>>> Thomas
>>>>>>> 
>>>>>>> 6_softfloat_testing_v6m_v8m_baseline.patch
>>>>>>> 
>>>>>>> 
>>>>>>> diff --git a/gcc/testsuite/lib/target-supports.exp
>>>>>>> b/gcc/testsuite/lib/target-supports.exp
>>>>>>> index
>>>>>>> 0dabea0850124947a7fe333e0b94c4077434f278..b5d72f1283be6a6e4736a1d20936e169c1384398
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> 100644
>>>>>>> --- a/gcc/testsuite/lib/target-supports.exp
>>>>>>> +++ b/gcc/testsuite/lib/target-supports.exp
>>>>>>> @@ -3540,24 +3540,25 @@ proc check_effective_target_arm_fp16_hw { } {
>>>>>>> # 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 } { v4 "-march=armv4 -marm" 
>>>>>>> __ARM_ARCH_4__
>>>>>>> -                     v4t "-march=armv4t" __ARM_ARCH_4T__
>>>>>>> -                     v5 "-march=armv5 -marm" __ARM_ARCH_5__
>>>>>>> -                     v5t "-march=armv5t" __ARM_ARCH_5T__
>>>>>>> -                     v5te "-march=armv5te" __ARM_ARCH_5TE__
>>>>>>> -                     v6 "-march=armv6" __ARM_ARCH_6__
>>>>>>> -                     v6k "-march=armv6k" __ARM_ARCH_6K__
>>>>>>> -                     v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
>>>>>>> -                     v6z "-march=armv6z" __ARM_ARCH_6Z__
>>>>>>> -                     v6m "-march=armv6-m -mthumb" __ARM_ARCH_6M__
>>>>>>> -                     v7a "-march=armv7-a" __ARM_ARCH_7A__
>>>>>>> -                     v7r "-march=armv7-r" __ARM_ARCH_7R__
>>>>>>> -                     v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__
>>>>>>> -                     v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__
>>>>>>> -                     v8a "-march=armv8-a" __ARM_ARCH_8A__
>>>>>>> -                     v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
>>>>>>> -                     v8m_base "-march=armv8-m.base -mthumb"
>>>>>>> __ARM_ARCH_8M_BASE__
>>>>>>> -                     v8m_main "-march=armv8-m.main -mthumb"
>>>>>>> __ARM_ARCH_8M_MAIN__ } {
>>>>>>> +foreach { armfunc armflag armdef } {
>>>>>>> +    v4 "-march=armv4 -marm" __ARM_ARCH_4__
>>>>>>> +    v4t "-march=armv4t" __ARM_ARCH_4T__
>>>>>>> +    v5 "-march=armv5 -marm" __ARM_ARCH_5__
>>>>>>> +    v5t "-march=armv5t" __ARM_ARCH_5T__
>>>>>>> +    v5te "-march=armv5te" __ARM_ARCH_5TE__
>>>>>>> +    v6 "-march=armv6" __ARM_ARCH_6__
>>>>>>> +    v6k "-march=armv6k" __ARM_ARCH_6K__
>>>>>>> +    v6t2 "-march=armv6t2" __ARM_ARCH_6T2__
>>>>>>> +    v6z "-march=armv6z" __ARM_ARCH_6Z__
>>>>>>> +    v6m "-march=armv6-m -mthumb -mfloat-abi=soft" __ARM_ARCH_6M__
>>>>>>> +    v7a "-march=armv7-a" __ARM_ARCH_7A__
>>>>>>> +    v7r "-march=armv7-r" __ARM_ARCH_7R__
>>>>>>> +    v7m "-march=armv7-m -mthumb" __ARM_ARCH_7M__
>>>>>>> +    v7em "-march=armv7e-m -mthumb" __ARM_ARCH_7EM__
>>>>>>> +    v8a "-march=armv8-a" __ARM_ARCH_8A__
>>>>>>> +    v8_1a "-march=armv8.1a" __ARM_ARCH_8A__
>>>>>>> +    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 ] {
>>>>>>>     proc check_effective_target_arm_arch_FUNC_ok { } {
>>>>>>>         if { [ string match "*-marm*" "FLAG" ] &&
>>>>>>> 
>>>>>> 
>>>>>> I think if you're going to do this you need to also check that changing
>>>>>> the ABI in this way isn't incompatible with other aspects of how the
>>>>>> user has invoked dejagnu.
>>>>> 
>>>>> The reason this patch was made is that without it 
>>>>> dg-require-effective-target
>>>>> arm_arch_v8m_base_ok evaluates to true for an arm-none-linux-gnueabihf
>>>>> toolchain
>>>>> but then any testcase containing a function for such a target (such as the
>>>>> atomic-op-* in gcc.target/arm) will error out because ARMv8-M Baseline 
>>>>> does not
>>>>> support hard float ABI.
>>>>> 
>>>>> I see 2 ways to fix this:
>>>>> 
>>>>> 1) the approach taken in this patch, ie saying that to select ARMv8-M 
>>>>> baseline
>>>>> architecture you need the right -march, -mthumb but also the right float 
>>>>> ABI.
>>>>> 
>>>>> Note that the comment at the top of that procedure says:
>>>>> # Creates a series of routines that return 1 if the given architecture
>>>>> # can be selected and a routine to give the flags to select that 
>>>>> architecture
>>>>> 
>>>>> 2) Add a function to the assembly that is used to test support for the
>>>>> architecture.
>>>>> 
>>>>> The reason I favor the first one is that it enables more test while the 
>>>>> second
>>>>> test would just skip ARMv6-M and ARMv8-M Baseline tests for
>>>>> arm-none-linux-gnueabihf toolchains.
>>>>> 
>>>>> Is this patch ok for trunk?
>>>>> 
>>>>> Best regards,
>>>>> 
>>>>> Thomas

Reply via email to