From eba9b5f1260409f8fedfd77e4a18d49ff80fdc50 Mon Sep 17 00:00:00 2001 From: fjahanian Date: Mon, 20 Jun 2005 17:59:35 +0000 Subject: [PATCH] PR 22077. Oked by Roger Sayle. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101211 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/combine.c | 5 +++++ gcc/testsuite/gcc.dg/altivec-nomfcr.c | 10 ++++++++++ 3 files changed, 21 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/altivec-nomfcr.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 92c4299a1d5..3f64b73dd93 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-06-20 Roger Sayle +2005-06-20 Fariborz Jahanian + + * combine.c (simplify_set): Simplify setting of CC register + by removing redundant compare with 0 on RHS. + 2005-06-20 Jan Beulich * config/i386/netware-libgcc.def: Update copyright. diff --git a/gcc/combine.c b/gcc/combine.c index c4e6f95fa48..e10d29f7e81 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 00000000000..5c8c96b6b69 --- /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 + +int foo(vector float x, vector float y) { + if (vec_all_eq(x,y)) return 3245; + else return 12; +} -- 2.11.0