On 11/01/12 13:55, Matthew Gretton-Dann wrote:
> All,
> 
> The attached patch corrects the mov_notscc pattern in arm.md.
> 
> This issue also exists in 4.5 and 4.6, is it okay for me to backport the
> fix to those branches, as well as trunk?
> 
> OK?
> 

OK all.

R.

> Thanks,
> 
> Matt
> 
> gcc/ChangeLog:
> 2012-01-10  Matthew Gretton-Dann  <matthew.gretton-d...@arm.com>
> 
>       * config/arm/arm.md (mov_notscc): Use MVN for false condition.
> 
> gcc/testsuite/ChangeLog:
> 2012-01-10  Matthew Gretton-Dann  <matthew.gretton-d...@arm.com>
> 
>       * testsuite/gcc.c-torture/execute/20120110-1.c: New testcase.
> 
> 
> 1-RFC-ARM-Correct-mov_notscc-pattern.txt
> 
> 
> diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
> index 0e4bc3e..5620d7d 100644
> --- a/gcc/config/arm/arm.md
> +++ b/gcc/config/arm/arm.md
> @@ -7726,7 +7726,7 @@
>       (not:SI (match_operator:SI 1 "arm_comparison_operator"
>                [(match_operand 2 "cc_register" "") (const_int 0)])))]
>    "TARGET_ARM"
> -  "mov%D1\\t%0, #0\;mvn%d1\\t%0, #1"
> +  "mvn%D1\\t%0, #0\;mvn%d1\\t%0, #1"
>    [(set_attr "conds" "use")
>     (set_attr "insn" "mov")
>     (set_attr "length" "8")]
> diff --git a/gcc/testsuite/gcc.c-torture/execute/20120111-1.c 
> b/gcc/testsuite/gcc.c-torture/execute/20120111-1.c
> new file mode 100644
> index 0000000..eac086e
> --- /dev/null
> +++ b/gcc/testsuite/gcc.c-torture/execute/20120111-1.c
> @@ -0,0 +1,18 @@
> +#include <stdlib.h>
> +#include <stdint.h>
> +
> +uint32_t f0a (uint64_t arg2) __attribute__((noinline));
> +
> +uint32_t
> +f0a (uint64_t arg)
> +{
> +  return ~(arg > -3);
> +}
> +
> +int main() {
> +  uint32_t r1;
> +  r1 = f0a (12094370573988097329ULL);
> +  if (r1 != ~0U)
> +    abort ();
> +  return 0;
> +}


Reply via email to