diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92c4299a1d55..3f64b73dd93c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-06-20 Roger Sayle <roger@eyesopen.com> +2005-06-20 Fariborz Jahanian <fjahanian@apple.com> + + * combine.c (simplify_set): Simplify setting of CC register + by removing redundant compare with 0 on RHS. + 2005-06-20 Jan Beulich <jbeulich@novell.com> * config/i386/netware-libgcc.def: Update copyright. diff --git a/gcc/combine.c b/gcc/combine.c index c4e6f95fa48b..e10d29f7e814 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -5274,6 +5274,11 @@ simplify_set (rtx x) SUBST (SET_SRC (x), gen_rtx_COMPARE (compare_mode, op0, op1)); src = SET_SRC (x); } + else if (GET_MODE (op0) == compare_mode && op1 == const0_rtx) + { + SUBST(SET_SRC (x), op0); + src = SET_SRC (x); + } else { /* Otherwise, update the COMPARE if needed. */ diff --git a/gcc/testsuite/gcc.dg/altivec-nomfcr.c b/gcc/testsuite/gcc.dg/altivec-nomfcr.c new file mode 100644 index 000000000000..5c8c96b6b69d --- /dev/null +++ b/gcc/testsuite/gcc.dg/altivec-nomfcr.c @@ -0,0 +1,10 @@ +/* { dg-do compile { target powerpc-*-* } } */ +/* { dg-options "-O3 -maltivec" } */ +/* { dg-final { scan-assembler-not "mfcr" } } */ + +#include <altivec.h> + +int foo(vector float x, vector float y) { + if (vec_all_eq(x,y)) return 3245; + else return 12; +}