[AArch64] Backport to gcc-7 PR71727 fix -mstrict-align

Richard Earnshaw (lists) Richard.Earnshaw@arm.com
Thu Oct 5 13:49:00 GMT 2017


On 04/10/17 14:35, Christophe Lyon wrote:
> Hi,
> 
> I've recently committed a follow-up fix for PR71727 for -mstrict-align
> on aarch64 (r253242).
> I think it would be appropriate to apply it to gcc-7-branch. The patch
> from trunk applies cleanly to gcc-7-branch.
> 
> Although the original bug was reported against 4.9.4, 5.3.1, 6.1.0,
> Naveen's patch was not backported to these branches, so it's not
> appropriate to backport my patch there.
> 
> OK?
> 
> Thanks,
> 
> Christophe
> 
> 
> aarch64-strict-align3.chlog.txt
> 
> 
> 2017-09-20  Christophe Lyon  <christophe.lyon@linaro.org>
> 
> 	PR target/71727
> 	gcc/
> 	* config/aarch64/aarch64.c
> 	(aarch64_builtin_support_vector_misalignment): Always return false
> 	when misalignment is unknown.
> 
> 	gcc/testsuite/
> 	* gcc.target/aarch64/pr71727-2.c: New test.
> 

OK.

R.

> 
> aarch64-strict-align3.patch.txt
> 
> 
> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
> index 799989a..7cc67ec 100644
> --- a/gcc/config/aarch64/aarch64.c
> +++ b/gcc/config/aarch64/aarch64.c
> @@ -11757,19 +11757,9 @@ aarch64_builtin_support_vector_misalignment (machine_mode mode,
>        if (optab_handler (movmisalign_optab, mode) == CODE_FOR_nothing)
>          return false;
>  
> +      /* Misalignment factor is unknown at compile time.  */
>        if (misalignment == -1)
> -	{
> -	  /* Misalignment factor is unknown at compile time but we know
> -	     it's word aligned.  */
> -	  if (aarch64_simd_vector_alignment_reachable (type, is_packed))
> -            {
> -              int element_size = TREE_INT_CST_LOW (TYPE_SIZE (type));
> -
> -              if (element_size != 64)
> -                return true;
> -            }
> -	  return false;
> -	}
> +	return false;
>      }
>    return default_builtin_support_vector_misalignment (mode, type, misalignment,
>  						      is_packed);
> diff --git a/gcc/testsuite/gcc.target/aarch64/pr71727-2.c b/gcc/testsuite/gcc.target/aarch64/pr71727-2.c
> new file mode 100644
> index 0000000..2bc803a
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/aarch64/pr71727-2.c
> @@ -0,0 +1,16 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mstrict-align -O3" } */
> +
> +unsigned char foo(const unsigned char *buffer, unsigned int length)
> +{
> +  unsigned char sum;
> +  unsigned int  count;
> +
> +  for (sum = 0, count = 0; count < length; count++) {
> +    sum = (unsigned char) (sum + *(buffer + count));
> +  }
> +
> +  return sum;
> +}
> +
> +/* { dg-final { scan-assembler-times "and\tw\[0-9\]+, w\[0-9\]+, 15" 1 } } */
> 



More information about the Gcc-patches mailing list