On 03/06/16 09:30, Kyrill Tkachov wrote:
> Hi all,
> 
> The test gcc.target/arm/builtin-bswap16-1.c refuses to compile when
> testing a toolchain configured with
> --with-mode=thumb --with-float=hard and an architecture that supports
> Thumb2.
> This is because the test explicitly sets the -march option to armv6 and
> we get an error complaining
> about Thumb1 used with the hard-float ABI.
> 
> The proposed solution in this patch is to bump the architecture to
> armv6t2 so that it uses Thumb2 when
> -mthumb is used.
> 
> But we don't want to lose Thumb1 test coverage. So this patch moves the
> actual C code into a separate
> .x file and includes it in two different tests, each testing Thumb1 or
> Thumb2.
> 
> The new test passes and builtin-bswap16-1.c also now passes rather than
> complaining about the float ABI.
> 
> Ok for trunk?
> 

Traditionally, the old C-torture testsuite (now gcc.c-torture) used .x
as the filename extension for a test control script.  So I'm not too
keen on overloading that meaning (though I note that has been used in
quite a few aarch64 tests).  So OK, but please rename it to use a
different extension letter.  Any reason why you can't use .h?

R.


> Thanks,
> Kyrill
> 
> 2016-06-03  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>
> 
>     * gcc.target/arm/builtin-bswap16-1.c: Add -mfloat-abi=soft
>     and -mthumb to dg-options.  Include builtin-bswap16.x.
>     * gcc.target/arm/builtin-bswap16: New file.
>     * gcc.target/arm/builtin-bswap16-2.c: New test.
> 
> arm-bswap-test.patch
> 
> 
> diff --git a/gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c 
> b/gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c
> index 
> 6920f004eab42443441227029c579aeb2bb981ee..7c3f8370e132b4c41ad7b3dac973b552c4ddbfe1
>  100644
> --- a/gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c
> +++ b/gcc/testsuite/gcc.target/arm/builtin-bswap16-1.c
> @@ -1,15 +1,10 @@
>  /* { dg-do compile } */
> -/* { dg-options "-O2" } */
> +/* { dg-options "-O2 -mthumb -mfloat-abi=soft" } */
>  /* { dg-require-effective-target arm_arch_v6_ok } */
>  /* { dg-add-options arm_arch_v6 } */
> -/* { dg-final { scan-assembler-not "orr\[ \t\]" } } */
>  
> -unsigned short swapu16_1 (unsigned short x)
> -{
> -  return (x << 8) | (x >> 8);
> -}
> +/* Test Thumb1 code generation when -mthumb is used.  */
> +
> +#include "builtin-bswap16.x"
>  
> -unsigned short swapu16_2 (unsigned short x)
> -{
> -  return (x >> 8) | (x << 8);
> -}
> +/* { dg-final { scan-assembler-not "orr\[ \t\]" } } */
> diff --git a/gcc/testsuite/gcc.target/arm/builtin-bswap16-2.c 
> b/gcc/testsuite/gcc.target/arm/builtin-bswap16-2.c
> new file mode 100644
> index 
> 0000000000000000000000000000000000000000..a4927e3ab0ced7a272e5acb4a5c2bcb1b2badafc
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/arm/builtin-bswap16-2.c
> @@ -0,0 +1,11 @@
> +/* { dg-do compile } */
> +/* { dg-options "-O2" } */
> +/* { dg-require-effective-target arm_arch_v6t2_ok } */
> +/* { dg-add-options arm_arch_v6t2 } */
> +
> +/* Test Thumb2 code generation when -mthumb is used.  */
> +
> +#include "builtin-bswap16.x"
> +
> +/* { dg-final { scan-assembler-not "orr\[ \t\]" } } */
> +
> diff --git a/gcc/testsuite/gcc.target/arm/builtin-bswap16.x 
> b/gcc/testsuite/gcc.target/arm/builtin-bswap16.x
> new file mode 100644
> index 
> 0000000000000000000000000000000000000000..1e7f41edf013e353944f0a4879a1248c8a8b2f11
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/arm/builtin-bswap16.x
> @@ -0,0 +1,9 @@
> +unsigned short swapu16_1 (unsigned short x)
> +{
> +  return (x << 8) | (x >> 8);
> +}
> +
> +unsigned short swapu16_2 (unsigned short x)
> +{
> +  return (x >> 8) | (x << 8);
> +}
> 

Reply via email to