On Tue, Feb 16, 2016 at 09:27:00AM +0000, Kyrill Tkachov wrote:
> Hi all,
> 
> As Christophe reported at:
> https://gcc.gnu.org/ml/gcc-patches/2016-02/msg00784.html
> 
> The test gcc.target/aarch64/assembler_arch_1.c fails to assemble on older
> assemblers that don't support the LSE architecture extension.

Actually, Christophe's report is that the ".arch_extension" directive
isn't understood by older assemblers...

> I'd really like to keep the test an assemble test rather than just a compile
> one since it is extracted from a real error when building the Linux kernel,
> so this patch is the simplest way I can think of skipping the test for older
> assemblers.
> 
> I've tested that the test appears UNSUPPORTED when used with a binutils that
> doesn't support LSE and PASSes normally on latest binutils.
> 
> Do we want to have such a specialised check for assembler capabilities?  Or
> do we want to just let this test FAIL on older assemblers and see this
> failure go away in the future as users/testers migrate to later binutils
> releases?

...so, this test conflates two features we're asking for from the assembler,
support for LSE and support for .arch_extension. For your test, that's
exactly what you need, and for binutils it will never matter, but it feels
like a misnamed check to me.

> If such a check is desired, here's a patch that does it.

Yes, the check is probably useful (if we need to test other LSE features, we
will want it - e.g. if we wanted to bump some of the armv8.1+lse atomics
tests up to assemble tests).

Anyway, this patch is OK by me as is, as I don't see a way to disambiguate
the test name without ending up with two tiny effective-target checks. But
maybe someone who knows the testsuite better would have other opinions?

> 2016-02-16  Kyrylo Tkachov  <kyrylo.tkac...@arm.com>
> 
>     * lib/target-supports.exp
>     (check_effective_target_aarch64_lse_assembler): New effective target
>     check.
>     * gcc.target/aarch64/assembler_arch_1.c: Add arch64_lse_assembler
>     effective target check.

> diff --git a/gcc/testsuite/gcc.target/aarch64/assembler_arch_1.c 
> b/gcc/testsuite/gcc.target/aarch64/assembler_arch_1.c
> index 
> 901e50a178d7a4a443a5ad0abe63f624688db268..ef34e76cef9c3076a3c32e76aa7a7f658774f786
>  100644
> --- a/gcc/testsuite/gcc.target/aarch64/assembler_arch_1.c
> +++ b/gcc/testsuite/gcc.target/aarch64/assembler_arch_1.c
> @@ -1,4 +1,5 @@
>  /* { dg-do assemble } */
> +/* { dg-require-effective-target aarch64_lse_assembler } */
>  /* { dg-options "-march=armv8-a" } */
>  
>  /* Make sure that the function header in assembly doesn't override
> diff --git a/gcc/testsuite/lib/target-supports.exp 
> b/gcc/testsuite/lib/target-supports.exp
> index 
> 645981a8733b68a7c37919a53b324841d2c125aa..08b4eacc26f44506d00fda58f99c203a4199856b
>  100644
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> @@ -6718,6 +6718,18 @@ proc check_effective_target_aarch64_tiny { } {
>      }
>  }
>  
> +# Return 1 if the target AArch64 assembler supports the LSE extensions.

I think the "extensions" here is redundant :-).

Thanks,
James


Reply via email to