PING.

On Tue, Jan 24, 2012 at 04:10:19PM +0000, Sameera Deshpande wrote:
> Hi,
> 
> Please find attached the patch fixing bug 49069.
> 
> This patch is tested with check-gcc on trunk and 4.6 without regression.
> OK for trunk?
> Is it fine to backport to 4.6 branch?
> 
> ChangeLog:
> 2012-01-24  Sameera Deshpande  <sameera.deshpa...@arm.com>
>         PR target/49069
>         gcc/config/arm/arm.md (cstoredi4): Handle the case when both
> operands are const_int.
> 
> gcc/testsuite/ChangeLog:
> 2012-01-24  Sameera Deshpande  <sameera.deshpa...@arm.com>
>         PR target/49069
>         gcc.target/arm/pr49069.c: New compile-only test.
> 
> - Thanks and regards,
>   Sameera D.

> diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
> index 751997f..e3dc98f 100644
> --- a/gcc/config/arm/arm.md
> +++ b/gcc/config/arm/arm.md
> @@ -7911,8 +7911,9 @@
>       enum rtx_code code = GET_CODE (operands[1]);
>  
>       /* We should not have two constants.  */
> -     gcc_assert (GET_MODE (operands[2]) == DImode
> -              || GET_MODE (operands[3]) == DImode);
> +     if (!(GET_MODE (operands[2]) == DImode || GET_MODE (operands[3]) == 
> DImode)
> +         && !(reload_in_progress || reload_completed))
> +       operands[3] = force_reg (DImode, operands[3]);
>  
>      /* Flip unimplemented DImode comparisons to a form that
>         arm_gen_compare_reg can handle.  */
> diff --git a/gcc/testsuite/gcc.target/arm/pr49069.c 
> b/gcc/testsuite/gcc.target/arm/pr49069.c
> new file mode 100644
> index 0000000..3cc903e
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/arm/pr49069.c
> @@ -0,0 +1,24 @@
> +/* { dg-do compile } */
> +/* { dg-options "-Os -mfloat-abi=softfp -mfpu=vfpv3-d16" } */
> +
> +__extension__ typedef unsigned long long int uint64_t;
> +
> +static int
> +func2 (int a, int b)
> +{
> +  return a == 0 ? a : a / b;
> +}
> +
> +int array1[1];
> +const uint64_t array2[1] = { 1 };
> +
> +void
> +foo (void)
> +{
> +  for (array1[0] = 0; array1[0] == 1; array1[0]++)
> +    {
> +    }
> +  if (bar (array2[0] == func2 (array1[0], 0)) == 0)
> +    {
> +    }
> +}

-- 
Matthew Gretton-Dann
Principal Engineer, PD Software, ARM Ltd.

Reply via email to