Tamar Christina <tamar.christ...@arm.com> writes:
> Hi All,
>
> This a partial backport for 0f801e0b6cc9f67c9a8983127e23161f6025c5b6 which 
> fixes
> a truncation error for the inline memcopy on AArch64 on GCC-8.
>
> Bootstrapped Regtested on aarch64-none-linux-gnu and no issues.
>
> Ok for GCC-8?

OK, thanks.

Richard

>
> gcc/ChangeLog:
>
>       PR target/97535
>       * config/aarch64/aarch64.c (aarch64_expand_movme): Use
>       unsigned HOST_WIDE_INT.
>
> gcc/testsuite/ChangeLog:
>
>       PR target/97535
>       * gcc.target/aarch64/pr97535.c: New test.
>
> Thanks,
> Tamar
>
> --- inline copy of patch -- 
> diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c
> index 
> 72c11e3565908916d42c2d6481b5177f6cc07a5e..8faadabc996232cb37d876c973aba7f9aff39b6f
>  100644
> --- a/gcc/config/aarch64/aarch64.c
> +++ b/gcc/config/aarch64/aarch64.c
> @@ -15968,7 +15968,7 @@ aarch64_copy_one_block_and_progress_pointers (rtx 
> *src, rtx *dst,
>  bool
>  aarch64_expand_movmem (rtx *operands)
>  {
> -  unsigned int n;
> +  unsigned HOST_WIDE_INT n;
>    rtx dst = operands[0];
>    rtx src = operands[1];
>    rtx base;
> diff --git a/gcc/testsuite/gcc.target/aarch64/pr97535.c 
> b/gcc/testsuite/gcc.target/aarch64/pr97535.c
> new file mode 100644
> index 
> 0000000000000000000000000000000000000000..55586c6e5c5f74f0422ec52484459e31cda99cf0
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/aarch64/pr97535.c
> @@ -0,0 +1,16 @@
> +/* { dg-do compile { target { ! ilp32 } } } */
> +
> +#include <string.h>
> +
> +#define SIZE 0xFF00000000
> +
> +extern char raw_buffer[SIZE];
> +
> +void setRaw(const void *raw)
> +{
> +        memcpy(raw_buffer, raw, SIZE);
> +}
> +
> +/* At any optimization level this should be a function call
> +   and not inlined.  */
> +/* { dg-final { scan-assembler "bl\tmemcpy" } } */

Reply via email to