diff mbox

[ARM] fix testsuite failures for arm-none-linux-gnueabihf

Message ID CADnVucBAL5d+Qgi2M_w=X-sR84c55gkKWNgBX8Dfv1ErUVnLVA@mail.gmail.com
State New
Headers show

Commit Message

Charles Baylis Sept. 19, 2013, 5:21 p.m. UTC
Hi

Here is an updated version.

Changelog:

        * gcc.dg/builtin-apply2.c: skip test on arm hardfloat ABI targets
        * gcc.dg/tls/pr42894.c: Remove options, forcing -mthumb fails
with hardfloat, and test is not thumb-specific
        * gcc,target/arm/thumb-ltu.c: Avoid test failure with
hardfloat ABI by requiring arm_thumb1_ok
        * lib/target-supports.exp
(check_effective_target_arm_fp16_ok_nocache): don't force
-mfloat-abi=soft when building for hardfloat target

On 19 August 2013 16:34, Richard Earnshaw <rearnsha@arm.com> wrote:
> On 15/08/13 15:10, Charles Baylis wrote:
>> Hi
>>
>> The attached patch fixes some tests which fail when testing gcc for a
>> arm-none-linux-gnueabihf target because they do not expect to be built
>> with a hard float ABI.
>>
>> The change in target-supports.exp fixes arm-fp16-ops-5.c and arm-fp16-ops-6.c.
>>
>> Tested on arm-none-linux-gnueabihf using qemu-arm, and does not cause
>> any other tests to break.
>>
>> Comments? This is my first patch, so please point out anything wrong.
>>
>>
>
>>
>>
>> 2013-08-15  Charles Baylis  <charles.baylis@linaro.org>
>>
>>         * gcc.dg/builtin-apply2.c: skip test on arm hardfloat ABI targets
>>         * gcc.dg/tls/pr42894.c: Use -mfloat-abi=soft as Thumb1 does
>> not support hardfloat ABI
>>         * arm/thumb-ltu.c: Use -mfloat-abi=soft as Thumb1 does not
>> support hardfloat ABI
>>         * target-supports.exp: don't force -mfloat-abi=soft when
>> building for hardfloat target
>>
>>
>> hf-fixes.txt
>>
>>
>> Index: gcc/testsuite/gcc.dg/builtin-apply2.c
>> ===================================================================
>> --- gcc/testsuite/gcc.dg/builtin-apply2.c     (revision 201726)
>> +++ gcc/testsuite/gcc.dg/builtin-apply2.c     (working copy)
>> @@ -1,6 +1,7 @@
>>  /* { dg-do run } */
>>  /* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { "aarch64*-*-* avr-*-* " } { "*" } { "" } } */
>>  /* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-*" } { "-mfloat-abi=hard" } { "" } } */
>> +/* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-gnueabihf" } { "*" } { "-mfloat-abi=soft*" } } */
>>
>
>
> As you've noticed, basing the test's behaviour on the config variant
> doesn't work reliably.  The builtin-apply2 test really should be skipped
> if the current test variant is not soft-float.  We already have
> check_effective_target_arm_hf_eabi in target-supports.exp that checks
> whether __ARM_PCS_VFP is defined during a compilation.  So can  replace
> both arm related lines in builtin-apply2 with
>
>  /* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP
> variant." { "arm*-*-*" && arm_hf_eabi} { "*" } { "" } } */
>
>>  /* PR target/12503 */
>>  /* Origin: <pierre.nguyen-tuong@asim.lip6.fr> */
>> Index: gcc/testsuite/gcc.dg/tls/pr42894.c
>> ===================================================================
>> --- gcc/testsuite/gcc.dg/tls/pr42894.c        (revision 201726)
>> +++ gcc/testsuite/gcc.dg/tls/pr42894.c        (working copy)
>> @@ -1,6 +1,7 @@
>>  /* PR target/42894 */
>>  /* { dg-do compile } */
>>  /* { dg-options "-march=armv5te -mthumb" { target arm*-*-* } } */
>> +/* { dg-options "-march=armv5te -mthumb -mfloat-abi=soft" { target arm*-*-*hf } } */
>>  /* { dg-require-effective-target tls } */
>>
>
> Although the original PR was for Thumb1, this is a generic test.  I'm
> not convinced that on ARM it should try to force thumb1.  Removing the
> original dg-options line should solve the problem and we then get better
> multi-lib testing as well.
>
>>  extern __thread int t;
>> Index: gcc/testsuite/gcc.target/arm/thumb-ltu.c
>> ===================================================================
>> --- gcc/testsuite/gcc.target/arm/thumb-ltu.c  (revision 201726)
>> +++ gcc/testsuite/gcc.target/arm/thumb-ltu.c  (working copy)
>> @@ -1,6 +1,6 @@
>>  /* { dg-do compile } */
>>  /* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv6" "-march=armv6j" "-march=armv6z" } } */
>> -/* { dg-options "-mcpu=arm1136jf-s -mthumb -O2" } */
>> +/* { dg-options "-mcpu=arm1136jf-s -mthumb -O2 -mfloat-abi=soft" } */
>>
>
> This won't work if there's an explict -mfloat-abi={softfp,hard} on the
> multilib options.  Probably the best thing to do here is to skip the
> test if arm_thumb1_ok is not true.
>
>>  void f(unsigned a, unsigned b, unsigned c, unsigned d)
>>  {
>> Index: gcc/testsuite/lib/target-supports.exp
>> ===================================================================
>> --- gcc/testsuite/lib/target-supports.exp     (revision 201726)
>> +++ gcc/testsuite/lib/target-supports.exp     (working copy)
>> @@ -2445,6 +2445,11 @@
>>       # Must generate floating-point instructions.
>>       return 0
>>      }
>> +    if [check-flags [list "" { *-*-gnueabihf } { "*" } { "" } ]] {
>> +        # Use existing float-abi and force an fpu which supports fp16
>
> This should use arm_hf_eabi as described above.
>
>> +     set et_arm_fp16_flags "-mfpu=vfpv4"
>> +     return 1;
>> +    }
>>      if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "" } ]] {
>>          # The existing -mfpu value is OK; use it, but add softfp.
>>       set et_arm_fp16_flags "-mfloat-abi=softfp"
>>
>
> Kyrill's comments re ChangeLogs also apply.
>
> R.
>

Comments

Charles Baylis Oct. 16, 2013, 10 a.m. UTC | #1
PIng?

On 19 September 2013 18:21, Charles Baylis <charles.baylis@linaro.org> wrote:
> Hi
>
> Here is an updated version.
>
> Changelog:
>
>         * gcc.dg/builtin-apply2.c: skip test on arm hardfloat ABI targets
>         * gcc.dg/tls/pr42894.c: Remove options, forcing -mthumb fails
> with hardfloat, and test is not thumb-specific
>         * gcc,target/arm/thumb-ltu.c: Avoid test failure with
> hardfloat ABI by requiring arm_thumb1_ok
>         * lib/target-supports.exp
> (check_effective_target_arm_fp16_ok_nocache): don't force
> -mfloat-abi=soft when building for hardfloat target
>
> On 19 August 2013 16:34, Richard Earnshaw <rearnsha@arm.com> wrote:
>> On 15/08/13 15:10, Charles Baylis wrote:
>>> Hi
>>>
>>> The attached patch fixes some tests which fail when testing gcc for a
>>> arm-none-linux-gnueabihf target because they do not expect to be built
>>> with a hard float ABI.
>>>
>>> The change in target-supports.exp fixes arm-fp16-ops-5.c and arm-fp16-ops-6.c.
>>>
>>> Tested on arm-none-linux-gnueabihf using qemu-arm, and does not cause
>>> any other tests to break.
>>>
>>> Comments? This is my first patch, so please point out anything wrong.
>>>
>>>
>>
>>>
>>>
>>> 2013-08-15  Charles Baylis  <charles.baylis@linaro.org>
>>>
>>>         * gcc.dg/builtin-apply2.c: skip test on arm hardfloat ABI targets
>>>         * gcc.dg/tls/pr42894.c: Use -mfloat-abi=soft as Thumb1 does
>>> not support hardfloat ABI
>>>         * arm/thumb-ltu.c: Use -mfloat-abi=soft as Thumb1 does not
>>> support hardfloat ABI
>>>         * target-supports.exp: don't force -mfloat-abi=soft when
>>> building for hardfloat target
>>>
>>>
>>> hf-fixes.txt
>>>
>>>
>>> Index: gcc/testsuite/gcc.dg/builtin-apply2.c
>>> ===================================================================
>>> --- gcc/testsuite/gcc.dg/builtin-apply2.c     (revision 201726)
>>> +++ gcc/testsuite/gcc.dg/builtin-apply2.c     (working copy)
>>> @@ -1,6 +1,7 @@
>>>  /* { dg-do run } */
>>>  /* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { "aarch64*-*-* avr-*-* " } { "*" } { "" } } */
>>>  /* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-*" } { "-mfloat-abi=hard" } { "" } } */
>>> +/* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-gnueabihf" } { "*" } { "-mfloat-abi=soft*" } } */
>>>
>>
>>
>> As you've noticed, basing the test's behaviour on the config variant
>> doesn't work reliably.  The builtin-apply2 test really should be skipped
>> if the current test variant is not soft-float.  We already have
>> check_effective_target_arm_hf_eabi in target-supports.exp that checks
>> whether __ARM_PCS_VFP is defined during a compilation.  So can  replace
>> both arm related lines in builtin-apply2 with
>>
>>  /* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP
>> variant." { "arm*-*-*" && arm_hf_eabi} { "*" } { "" } } */
>>
>>>  /* PR target/12503 */
>>>  /* Origin: <pierre.nguyen-tuong@asim.lip6.fr> */
>>> Index: gcc/testsuite/gcc.dg/tls/pr42894.c
>>> ===================================================================
>>> --- gcc/testsuite/gcc.dg/tls/pr42894.c        (revision 201726)
>>> +++ gcc/testsuite/gcc.dg/tls/pr42894.c        (working copy)
>>> @@ -1,6 +1,7 @@
>>>  /* PR target/42894 */
>>>  /* { dg-do compile } */
>>>  /* { dg-options "-march=armv5te -mthumb" { target arm*-*-* } } */
>>> +/* { dg-options "-march=armv5te -mthumb -mfloat-abi=soft" { target arm*-*-*hf } } */
>>>  /* { dg-require-effective-target tls } */
>>>
>>
>> Although the original PR was for Thumb1, this is a generic test.  I'm
>> not convinced that on ARM it should try to force thumb1.  Removing the
>> original dg-options line should solve the problem and we then get better
>> multi-lib testing as well.
>>
>>>  extern __thread int t;
>>> Index: gcc/testsuite/gcc.target/arm/thumb-ltu.c
>>> ===================================================================
>>> --- gcc/testsuite/gcc.target/arm/thumb-ltu.c  (revision 201726)
>>> +++ gcc/testsuite/gcc.target/arm/thumb-ltu.c  (working copy)
>>> @@ -1,6 +1,6 @@
>>>  /* { dg-do compile } */
>>>  /* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv6" "-march=armv6j" "-march=armv6z" } } */
>>> -/* { dg-options "-mcpu=arm1136jf-s -mthumb -O2" } */
>>> +/* { dg-options "-mcpu=arm1136jf-s -mthumb -O2 -mfloat-abi=soft" } */
>>>
>>
>> This won't work if there's an explict -mfloat-abi={softfp,hard} on the
>> multilib options.  Probably the best thing to do here is to skip the
>> test if arm_thumb1_ok is not true.
>>
>>>  void f(unsigned a, unsigned b, unsigned c, unsigned d)
>>>  {
>>> Index: gcc/testsuite/lib/target-supports.exp
>>> ===================================================================
>>> --- gcc/testsuite/lib/target-supports.exp     (revision 201726)
>>> +++ gcc/testsuite/lib/target-supports.exp     (working copy)
>>> @@ -2445,6 +2445,11 @@
>>>       # Must generate floating-point instructions.
>>>       return 0
>>>      }
>>> +    if [check-flags [list "" { *-*-gnueabihf } { "*" } { "" } ]] {
>>> +        # Use existing float-abi and force an fpu which supports fp16
>>
>> This should use arm_hf_eabi as described above.
>>
>>> +     set et_arm_fp16_flags "-mfpu=vfpv4"
>>> +     return 1;
>>> +    }
>>>      if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "" } ]] {
>>>          # The existing -mfpu value is OK; use it, but add softfp.
>>>       set et_arm_fp16_flags "-mfloat-abi=softfp"
>>>
>>
>> Kyrill's comments re ChangeLogs also apply.
>>
>> R.
>>
Richard Earnshaw Oct. 17, 2013, 10:32 a.m. UTC | #2
On 19/09/13 18:21, Charles Baylis wrote:
> Hi
> 
> Here is an updated version.
> 
> Changelog:
> 
>         * gcc.dg/builtin-apply2.c: skip test on arm hardfloat ABI targets
>         * gcc.dg/tls/pr42894.c: Remove options, forcing -mthumb fails
> with hardfloat, and test is not thumb-specific
>         * gcc,target/arm/thumb-ltu.c: Avoid test failure with
> hardfloat ABI by requiring arm_thumb1_ok
>         * lib/target-supports.exp
> (check_effective_target_arm_fp16_ok_nocache): don't force
> -mfloat-abi=soft when building for hardfloat target
> 

ChangeLogs should be formatted to 80 columns.

Otherwise OK.

R.

> On 19 August 2013 16:34, Richard Earnshaw <rearnsha@arm.com> wrote:
>> On 15/08/13 15:10, Charles Baylis wrote:
>>> Hi
>>>
>>> The attached patch fixes some tests which fail when testing gcc for a
>>> arm-none-linux-gnueabihf target because they do not expect to be built
>>> with a hard float ABI.
>>>
>>> The change in target-supports.exp fixes arm-fp16-ops-5.c and arm-fp16-ops-6.c.
>>>
>>> Tested on arm-none-linux-gnueabihf using qemu-arm, and does not cause
>>> any other tests to break.
>>>
>>> Comments? This is my first patch, so please point out anything wrong.
>>>
>>>
>>
>>>
>>>
>>> 2013-08-15  Charles Baylis  <charles.baylis@linaro.org>
>>>
>>>         * gcc.dg/builtin-apply2.c: skip test on arm hardfloat ABI targets
>>>         * gcc.dg/tls/pr42894.c: Use -mfloat-abi=soft as Thumb1 does
>>> not support hardfloat ABI
>>>         * arm/thumb-ltu.c: Use -mfloat-abi=soft as Thumb1 does not
>>> support hardfloat ABI
>>>         * target-supports.exp: don't force -mfloat-abi=soft when
>>> building for hardfloat target
>>>
>>>
>>> hf-fixes.txt
>>>
>>>
>>> Index: gcc/testsuite/gcc.dg/builtin-apply2.c
>>> ===================================================================
>>> --- gcc/testsuite/gcc.dg/builtin-apply2.c     (revision 201726)
>>> +++ gcc/testsuite/gcc.dg/builtin-apply2.c     (working copy)
>>> @@ -1,6 +1,7 @@
>>>  /* { dg-do run } */
>>>  /* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { "aarch64*-*-* avr-*-* " } { "*" } { "" } } */
>>>  /* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-*" } { "-mfloat-abi=hard" } { "" } } */
>>> +/* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-gnueabihf" } { "*" } { "-mfloat-abi=soft*" } } */
>>>
>>
>>
>> As you've noticed, basing the test's behaviour on the config variant
>> doesn't work reliably.  The builtin-apply2 test really should be skipped
>> if the current test variant is not soft-float.  We already have
>> check_effective_target_arm_hf_eabi in target-supports.exp that checks
>> whether __ARM_PCS_VFP is defined during a compilation.  So can  replace
>> both arm related lines in builtin-apply2 with
>>
>>  /* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP
>> variant." { "arm*-*-*" && arm_hf_eabi} { "*" } { "" } } */
>>
>>>  /* PR target/12503 */
>>>  /* Origin: <pierre.nguyen-tuong@asim.lip6.fr> */
>>> Index: gcc/testsuite/gcc.dg/tls/pr42894.c
>>> ===================================================================
>>> --- gcc/testsuite/gcc.dg/tls/pr42894.c        (revision 201726)
>>> +++ gcc/testsuite/gcc.dg/tls/pr42894.c        (working copy)
>>> @@ -1,6 +1,7 @@
>>>  /* PR target/42894 */
>>>  /* { dg-do compile } */
>>>  /* { dg-options "-march=armv5te -mthumb" { target arm*-*-* } } */
>>> +/* { dg-options "-march=armv5te -mthumb -mfloat-abi=soft" { target arm*-*-*hf } } */
>>>  /* { dg-require-effective-target tls } */
>>>
>>
>> Although the original PR was for Thumb1, this is a generic test.  I'm
>> not convinced that on ARM it should try to force thumb1.  Removing the
>> original dg-options line should solve the problem and we then get better
>> multi-lib testing as well.
>>
>>>  extern __thread int t;
>>> Index: gcc/testsuite/gcc.target/arm/thumb-ltu.c
>>> ===================================================================
>>> --- gcc/testsuite/gcc.target/arm/thumb-ltu.c  (revision 201726)
>>> +++ gcc/testsuite/gcc.target/arm/thumb-ltu.c  (working copy)
>>> @@ -1,6 +1,6 @@
>>>  /* { dg-do compile } */
>>>  /* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv6" "-march=armv6j" "-march=armv6z" } } */
>>> -/* { dg-options "-mcpu=arm1136jf-s -mthumb -O2" } */
>>> +/* { dg-options "-mcpu=arm1136jf-s -mthumb -O2 -mfloat-abi=soft" } */
>>>
>>
>> This won't work if there's an explict -mfloat-abi={softfp,hard} on the
>> multilib options.  Probably the best thing to do here is to skip the
>> test if arm_thumb1_ok is not true.
>>
>>>  void f(unsigned a, unsigned b, unsigned c, unsigned d)
>>>  {
>>> Index: gcc/testsuite/lib/target-supports.exp
>>> ===================================================================
>>> --- gcc/testsuite/lib/target-supports.exp     (revision 201726)
>>> +++ gcc/testsuite/lib/target-supports.exp     (working copy)
>>> @@ -2445,6 +2445,11 @@
>>>       # Must generate floating-point instructions.
>>>       return 0
>>>      }
>>> +    if [check-flags [list "" { *-*-gnueabihf } { "*" } { "" } ]] {
>>> +        # Use existing float-abi and force an fpu which supports fp16
>>
>> This should use arm_hf_eabi as described above.
>>
>>> +     set et_arm_fp16_flags "-mfpu=vfpv4"
>>> +     return 1;
>>> +    }
>>>      if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "" } ]] {
>>>          # The existing -mfpu value is OK; use it, but add softfp.
>>>       set et_arm_fp16_flags "-mfloat-abi=softfp"
>>>
>>
>> Kyrill's comments re ChangeLogs also apply.
>>
>> R.
>>
> 
> 
> hf-fixes3.txt
> 
> 
> Index: gcc/testsuite/gcc.dg/builtin-apply2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/builtin-apply2.c	(revision 202747)
> +++ gcc/testsuite/gcc.dg/builtin-apply2.c	(working copy)
> @@ -1,6 +1,6 @@
>  /* { dg-do run } */
>  /* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { "aarch64*-*-* avr-*-* " } { "*" } { "" } } */
> -/* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-*" } { "-mfloat-abi=hard" } { "" } } */
> +/* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { arm*-*-* && arm_hf_eabi } { "*" } { "" } } */
>  
>  /* PR target/12503 */
>  /* Origin: <pierre.nguyen-tuong@asim.lip6.fr> */
> Index: gcc/testsuite/gcc.dg/tls/pr42894.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/tls/pr42894.c	(revision 202747)
> +++ gcc/testsuite/gcc.dg/tls/pr42894.c	(working copy)
> @@ -1,6 +1,5 @@
>  /* PR target/42894 */
>  /* { dg-do compile } */
> -/* { dg-options "-march=armv5te -mthumb" { target arm*-*-* } } */
>  /* { dg-require-effective-target tls } */
>  
>  extern __thread int t;
> Index: gcc/testsuite/gcc.target/arm/thumb-ltu.c
> ===================================================================
> --- gcc/testsuite/gcc.target/arm/thumb-ltu.c	(revision 202747)
> +++ gcc/testsuite/gcc.target/arm/thumb-ltu.c	(working copy)
> @@ -1,5 +1,5 @@
>  /* { dg-do compile } */
> -/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv6" "-march=armv6j" "-march=armv6z" } } */
> +/* { dg-require-effective-target arm_thumb1_ok } */
>  /* { dg-options "-mcpu=arm1136jf-s -mthumb -O2" } */
>  
>  void f(unsigned a, unsigned b, unsigned c, unsigned d)
> Index: gcc/testsuite/lib/target-supports.exp
> ===================================================================
> --- gcc/testsuite/lib/target-supports.exp	(revision 202747)
> +++ gcc/testsuite/lib/target-supports.exp	(working copy)
> @@ -2467,6 +2467,11 @@
>  	# Must generate floating-point instructions.
>  	return 0
>      }
> +    if [check_effective_target_arm_hf_eabi] {
> +	# Use existing float-abi and force an fpu which supports fp16
> +	set et_arm_fp16_flags "-mfpu=vfpv4"
> +	return 1;
> +    }
>      if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "" } ]] {
>          # The existing -mfpu value is OK; use it, but add softfp.
>  	set et_arm_fp16_flags "-mfloat-abi=softfp"
>
Richard Earnshaw Oct. 17, 2013, 10:34 a.m. UTC | #3
On 17/10/13 11:32, Richard Earnshaw wrote:
> On 19/09/13 18:21, Charles Baylis wrote:
>> Hi
>>
>> Here is an updated version.
>>
>> Changelog:
>>
>>         * gcc.dg/builtin-apply2.c: skip test on arm hardfloat ABI targets
>>         * gcc.dg/tls/pr42894.c: Remove options, forcing -mthumb fails
>> with hardfloat, and test is not thumb-specific
>>         * gcc,target/arm/thumb-ltu.c: Avoid test failure with
>> hardfloat ABI by requiring arm_thumb1_ok
>>         * lib/target-supports.exp
>> (check_effective_target_arm_fp16_ok_nocache): don't force
>> -mfloat-abi=soft when building for hardfloat target
>>
> 
> ChangeLogs should be formatted to 80 columns.
> 

Oh, and they should be complete sentences.  So start with a capital
letter, and end with a full stop.

R.

> Otherwise OK.
> 
> R.
> 
>> On 19 August 2013 16:34, Richard Earnshaw <rearnsha@arm.com> wrote:
>>> On 15/08/13 15:10, Charles Baylis wrote:
>>>> Hi
>>>>
>>>> The attached patch fixes some tests which fail when testing gcc for a
>>>> arm-none-linux-gnueabihf target because they do not expect to be built
>>>> with a hard float ABI.
>>>>
>>>> The change in target-supports.exp fixes arm-fp16-ops-5.c and arm-fp16-ops-6.c.
>>>>
>>>> Tested on arm-none-linux-gnueabihf using qemu-arm, and does not cause
>>>> any other tests to break.
>>>>
>>>> Comments? This is my first patch, so please point out anything wrong.
>>>>
>>>>
>>>
>>>>
>>>>
>>>> 2013-08-15  Charles Baylis  <charles.baylis@linaro.org>
>>>>
>>>>         * gcc.dg/builtin-apply2.c: skip test on arm hardfloat ABI targets
>>>>         * gcc.dg/tls/pr42894.c: Use -mfloat-abi=soft as Thumb1 does
>>>> not support hardfloat ABI
>>>>         * arm/thumb-ltu.c: Use -mfloat-abi=soft as Thumb1 does not
>>>> support hardfloat ABI
>>>>         * target-supports.exp: don't force -mfloat-abi=soft when
>>>> building for hardfloat target
>>>>
>>>>
>>>> hf-fixes.txt
>>>>
>>>>
>>>> Index: gcc/testsuite/gcc.dg/builtin-apply2.c
>>>> ===================================================================
>>>> --- gcc/testsuite/gcc.dg/builtin-apply2.c     (revision 201726)
>>>> +++ gcc/testsuite/gcc.dg/builtin-apply2.c     (working copy)
>>>> @@ -1,6 +1,7 @@
>>>>  /* { dg-do run } */
>>>>  /* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { "aarch64*-*-* avr-*-* " } { "*" } { "" } } */
>>>>  /* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-*" } { "-mfloat-abi=hard" } { "" } } */
>>>> +/* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-gnueabihf" } { "*" } { "-mfloat-abi=soft*" } } */
>>>>
>>>
>>>
>>> As you've noticed, basing the test's behaviour on the config variant
>>> doesn't work reliably.  The builtin-apply2 test really should be skipped
>>> if the current test variant is not soft-float.  We already have
>>> check_effective_target_arm_hf_eabi in target-supports.exp that checks
>>> whether __ARM_PCS_VFP is defined during a compilation.  So can  replace
>>> both arm related lines in builtin-apply2 with
>>>
>>>  /* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP
>>> variant." { "arm*-*-*" && arm_hf_eabi} { "*" } { "" } } */
>>>
>>>>  /* PR target/12503 */
>>>>  /* Origin: <pierre.nguyen-tuong@asim.lip6.fr> */
>>>> Index: gcc/testsuite/gcc.dg/tls/pr42894.c
>>>> ===================================================================
>>>> --- gcc/testsuite/gcc.dg/tls/pr42894.c        (revision 201726)
>>>> +++ gcc/testsuite/gcc.dg/tls/pr42894.c        (working copy)
>>>> @@ -1,6 +1,7 @@
>>>>  /* PR target/42894 */
>>>>  /* { dg-do compile } */
>>>>  /* { dg-options "-march=armv5te -mthumb" { target arm*-*-* } } */
>>>> +/* { dg-options "-march=armv5te -mthumb -mfloat-abi=soft" { target arm*-*-*hf } } */
>>>>  /* { dg-require-effective-target tls } */
>>>>
>>>
>>> Although the original PR was for Thumb1, this is a generic test.  I'm
>>> not convinced that on ARM it should try to force thumb1.  Removing the
>>> original dg-options line should solve the problem and we then get better
>>> multi-lib testing as well.
>>>
>>>>  extern __thread int t;
>>>> Index: gcc/testsuite/gcc.target/arm/thumb-ltu.c
>>>> ===================================================================
>>>> --- gcc/testsuite/gcc.target/arm/thumb-ltu.c  (revision 201726)
>>>> +++ gcc/testsuite/gcc.target/arm/thumb-ltu.c  (working copy)
>>>> @@ -1,6 +1,6 @@
>>>>  /* { dg-do compile } */
>>>>  /* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv6" "-march=armv6j" "-march=armv6z" } } */
>>>> -/* { dg-options "-mcpu=arm1136jf-s -mthumb -O2" } */
>>>> +/* { dg-options "-mcpu=arm1136jf-s -mthumb -O2 -mfloat-abi=soft" } */
>>>>
>>>
>>> This won't work if there's an explict -mfloat-abi={softfp,hard} on the
>>> multilib options.  Probably the best thing to do here is to skip the
>>> test if arm_thumb1_ok is not true.
>>>
>>>>  void f(unsigned a, unsigned b, unsigned c, unsigned d)
>>>>  {
>>>> Index: gcc/testsuite/lib/target-supports.exp
>>>> ===================================================================
>>>> --- gcc/testsuite/lib/target-supports.exp     (revision 201726)
>>>> +++ gcc/testsuite/lib/target-supports.exp     (working copy)
>>>> @@ -2445,6 +2445,11 @@
>>>>       # Must generate floating-point instructions.
>>>>       return 0
>>>>      }
>>>> +    if [check-flags [list "" { *-*-gnueabihf } { "*" } { "" } ]] {
>>>> +        # Use existing float-abi and force an fpu which supports fp16
>>>
>>> This should use arm_hf_eabi as described above.
>>>
>>>> +     set et_arm_fp16_flags "-mfpu=vfpv4"
>>>> +     return 1;
>>>> +    }
>>>>      if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "" } ]] {
>>>>          # The existing -mfpu value is OK; use it, but add softfp.
>>>>       set et_arm_fp16_flags "-mfloat-abi=softfp"
>>>>
>>>
>>> Kyrill's comments re ChangeLogs also apply.
>>>
>>> R.
>>>
>>
>>
>> hf-fixes3.txt
>>
>>
>> Index: gcc/testsuite/gcc.dg/builtin-apply2.c
>> ===================================================================
>> --- gcc/testsuite/gcc.dg/builtin-apply2.c	(revision 202747)
>> +++ gcc/testsuite/gcc.dg/builtin-apply2.c	(working copy)
>> @@ -1,6 +1,6 @@
>>  /* { dg-do run } */
>>  /* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { "aarch64*-*-* avr-*-* " } { "*" } { "" } } */
>> -/* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-*" } { "-mfloat-abi=hard" } { "" } } */
>> +/* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { arm*-*-* && arm_hf_eabi } { "*" } { "" } } */
>>  
>>  /* PR target/12503 */
>>  /* Origin: <pierre.nguyen-tuong@asim.lip6.fr> */
>> Index: gcc/testsuite/gcc.dg/tls/pr42894.c
>> ===================================================================
>> --- gcc/testsuite/gcc.dg/tls/pr42894.c	(revision 202747)
>> +++ gcc/testsuite/gcc.dg/tls/pr42894.c	(working copy)
>> @@ -1,6 +1,5 @@
>>  /* PR target/42894 */
>>  /* { dg-do compile } */
>> -/* { dg-options "-march=armv5te -mthumb" { target arm*-*-* } } */
>>  /* { dg-require-effective-target tls } */
>>  
>>  extern __thread int t;
>> Index: gcc/testsuite/gcc.target/arm/thumb-ltu.c
>> ===================================================================
>> --- gcc/testsuite/gcc.target/arm/thumb-ltu.c	(revision 202747)
>> +++ gcc/testsuite/gcc.target/arm/thumb-ltu.c	(working copy)
>> @@ -1,5 +1,5 @@
>>  /* { dg-do compile } */
>> -/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv6" "-march=armv6j" "-march=armv6z" } } */
>> +/* { dg-require-effective-target arm_thumb1_ok } */
>>  /* { dg-options "-mcpu=arm1136jf-s -mthumb -O2" } */
>>  
>>  void f(unsigned a, unsigned b, unsigned c, unsigned d)
>> Index: gcc/testsuite/lib/target-supports.exp
>> ===================================================================
>> --- gcc/testsuite/lib/target-supports.exp	(revision 202747)
>> +++ gcc/testsuite/lib/target-supports.exp	(working copy)
>> @@ -2467,6 +2467,11 @@
>>  	# Must generate floating-point instructions.
>>  	return 0
>>      }
>> +    if [check_effective_target_arm_hf_eabi] {
>> +	# Use existing float-abi and force an fpu which supports fp16
>> +	set et_arm_fp16_flags "-mfpu=vfpv4"
>> +	return 1;
>> +    }
>>      if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "" } ]] {
>>          # The existing -mfpu value is OK; use it, but add softfp.
>>  	set et_arm_fp16_flags "-mfloat-abi=softfp"
>>
>
Jakub Jelinek Oct. 17, 2013, 10:39 a.m. UTC | #4
On Thu, Oct 17, 2013 at 11:32:42AM +0100, Richard Earnshaw wrote:
> On 19/09/13 18:21, Charles Baylis wrote:
> > Here is an updated version.
> > 
> > Changelog:
> > 
> >         * gcc.dg/builtin-apply2.c: skip test on arm hardfloat ABI targets
> >         * gcc.dg/tls/pr42894.c: Remove options, forcing -mthumb fails
> > with hardfloat, and test is not thumb-specific
> >         * gcc,target/arm/thumb-ltu.c: Avoid test failure with
> > hardfloat ABI by requiring arm_thumb1_ok
> >         * lib/target-supports.exp
> > (check_effective_target_arm_fp16_ok_nocache): don't force
> > -mfloat-abi=soft when building for hardfloat target
> > 
> 
> ChangeLogs should be formatted to 80 columns.

Not only that.  The descriptions should start with capital letter
and end with a dot.  For pr42894.c, you are not removing options,
you are removing dg-options, and the rest is why, not what, so doesn't
belong into the ChangeLog description.  Similarly, for thumb-ltu.c,
what are doing is remove dg-skip-if and require affective target
arm_thumb1_ok.

	Jakub
Christophe Lyon Oct. 17, 2013, 9 p.m. UTC | #5
Committed on Charles' behalf as rev 203799 with this ChangeLog entry:
2013-10-17  Charles Bayis  <charles.baylis@linaro.org>

* gcc.dg/builtin-apply2.c: Skip test on arm hardfloat ABI targets.
* gcc.dg/tls/pr42894.c: Remove dg-options for arm*-*-* targets.
* gcc.target/arm/thumb-ltu.c: Remove dg-skip-if and require
effective target arm_thumb1_ok.
* lib/target-supports.exp
(check_effective_target_arm_fp16_ok_nocache): Don't force
-mfloat-abi=soft when building for hardfloat target.

(sorry, despite selecting 'plain text mode', gmail seems to change formatting)

Christophe.


On 17 October 2013 12:39, Jakub Jelinek <jakub@redhat.com> wrote:
> On Thu, Oct 17, 2013 at 11:32:42AM +0100, Richard Earnshaw wrote:
>> On 19/09/13 18:21, Charles Baylis wrote:
>> > Here is an updated version.
>> >
>> > Changelog:
>> >
>> >         * gcc.dg/builtin-apply2.c: skip test on arm hardfloat ABI targets
>> >         * gcc.dg/tls/pr42894.c: Remove options, forcing -mthumb fails
>> > with hardfloat, and test is not thumb-specific
>> >         * gcc,target/arm/thumb-ltu.c: Avoid test failure with
>> > hardfloat ABI by requiring arm_thumb1_ok
>> >         * lib/target-supports.exp
>> > (check_effective_target_arm_fp16_ok_nocache): don't force
>> > -mfloat-abi=soft when building for hardfloat target
>> >
>>
>> ChangeLogs should be formatted to 80 columns.
>
> Not only that.  The descriptions should start with capital letter
> and end with a dot.  For pr42894.c, you are not removing options,
> you are removing dg-options, and the rest is why, not what, so doesn't
> belong into the ChangeLog description.  Similarly, for thumb-ltu.c,
> what are doing is remove dg-skip-if and require affective target
> arm_thumb1_ok.
>
>         Jakub
diff mbox

Patch

Index: gcc/testsuite/gcc.dg/builtin-apply2.c
===================================================================
--- gcc/testsuite/gcc.dg/builtin-apply2.c	(revision 202747)
+++ gcc/testsuite/gcc.dg/builtin-apply2.c	(working copy)
@@ -1,6 +1,6 @@ 
 /* { dg-do run } */
 /* { dg-skip-if "Variadic funcs have all args on stack. Normal funcs have args in registers." { "aarch64*-*-* avr-*-* " } { "*" } { "" } } */
-/* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { "arm*-*-*" } { "-mfloat-abi=hard" } { "" } } */
+/* { dg-skip-if "Variadic funcs use Base AAPCS.  Normal funcs use VFP variant." { arm*-*-* && arm_hf_eabi } { "*" } { "" } } */
 
 /* PR target/12503 */
 /* Origin: <pierre.nguyen-tuong@asim.lip6.fr> */
Index: gcc/testsuite/gcc.dg/tls/pr42894.c
===================================================================
--- gcc/testsuite/gcc.dg/tls/pr42894.c	(revision 202747)
+++ gcc/testsuite/gcc.dg/tls/pr42894.c	(working copy)
@@ -1,6 +1,5 @@ 
 /* PR target/42894 */
 /* { dg-do compile } */
-/* { dg-options "-march=armv5te -mthumb" { target arm*-*-* } } */
 /* { dg-require-effective-target tls } */
 
 extern __thread int t;
Index: gcc/testsuite/gcc.target/arm/thumb-ltu.c
===================================================================
--- gcc/testsuite/gcc.target/arm/thumb-ltu.c	(revision 202747)
+++ gcc/testsuite/gcc.target/arm/thumb-ltu.c	(working copy)
@@ -1,5 +1,5 @@ 
 /* { dg-do compile } */
-/* { dg-skip-if "incompatible options" { arm*-*-* } { "-march=*" } { "-march=armv6" "-march=armv6j" "-march=armv6z" } } */
+/* { dg-require-effective-target arm_thumb1_ok } */
 /* { dg-options "-mcpu=arm1136jf-s -mthumb -O2" } */
 
 void f(unsigned a, unsigned b, unsigned c, unsigned d)
Index: gcc/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp	(revision 202747)
+++ gcc/testsuite/lib/target-supports.exp	(working copy)
@@ -2467,6 +2467,11 @@ 
 	# Must generate floating-point instructions.
 	return 0
     }
+    if [check_effective_target_arm_hf_eabi] {
+	# Use existing float-abi and force an fpu which supports fp16
+	set et_arm_fp16_flags "-mfpu=vfpv4"
+	return 1;
+    }
     if [check-flags [list "" { *-*-* } { "-mfpu=*" } { "" } ]] {
         # The existing -mfpu value is OK; use it, but add softfp.
 	set et_arm_fp16_flags "-mfloat-abi=softfp"