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

Charles Baylis charles.baylis@linaro.org
Fri Aug 16 15:16:00 GMT 2013


Hi Kyrylo

Thanks for the comments. I've done version 2 of the patch with the
changes incorporated



2013-08-16  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
        * gcc,target/arm/thumb-ltu.c: Use -mfloat-abi=soft as Thumb1
does not support hardfloat ABI
        * lib/target-supports.exp
(check_effective_target_arm_fp16_ok_nocache): don't force
-mfloat-abi=soft when building for hardfloat target

On 15 August 2013 16:13, Kyrylo Tkachov <kyrylo.tkachov@arm.com> wrote:
> Hi Charles,
>
> CC'ing some of the ARM maintainers...
>
>> 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.
>>
>
> --- 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 } */
>
> This test also fails for a bare-metal arm-none-eabi target configured with
> hard float, so perhaps this could be:
>
> -/* { dg-options "-march=armv5te -mthumb" { target arm*-*-* } } */
> +/* { dg-options "-march=armv5te -mthumb -mfloat-abi=soft" { target arm*-*-* }
> } */
>
>
>>
>>
>>
>> 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
>
> ChangeLog entries are specified relative to the ChangeLog location. This
> should be:
>
>         * gcc.target/arm/thumb-ltu.c:...
>
>>         * target-supports.exp: don't force -mfloat-abi=soft when
>> building for hardfloat target
>
> Likewise, and also it's a good idea to specify which function/construct you're
> changing. In this case I think you're modifying
> check_effective_target_arm_fp16_ok_nocache. So this entry would be:
>
>         * lib/target-supports.exp
>         (check_effective_target_arm_fp16_ok_nocache):...
>
>
> Thanks,
> Kyrill
>
>
>
>
-------------- next part --------------
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*" } } */
 
 /* 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,6 @@
 /* PR target/42894 */
 /* { dg-do compile } */
-/* { dg-options "-march=armv5te -mthumb" { target arm*-*-* } } */
+/* { dg-options "-march=armv5te -mthumb -mfloat-abi=soft" { 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 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" } */
 
 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 @@ proc check_effective_target_arm_fp16_ok_
 	# Must generate floating-point instructions.
 	return 0
     }
+    if [check-flags [list "" { *-*-gnueabihf } { "*" } { "" } ]] {
+        # 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"


More information about the Gcc-patches mailing list