diff options
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/combine.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/ultrasp5.c | 12 |
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a470d16..9bc5b91 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2003-03-23 Eric Botcazou <ebotcazou@libertysurf.fr> + PR target/10072 + * combine.c (simplify_if_then_else): Check that the mode + has MODE_INT class before applying the (OP Z (mult COND C2)) + transformation. + +2003-03-23 Eric Botcazou <ebotcazou@libertysurf.fr> + PR optimization/9414 * config/sparc/sparc.md (widening peepholes): Use widen_memory_access instead of change_address. @@ -9040,3 +9047,4 @@ * doc/tm.texi (REGISTER_TARGET_PRAGMAS): Update See ChangeLog.8 for earlier changes. + diff --git a/gcc/combine.c b/gcc/combine.c index cd7261b..dd01706 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -4969,7 +4969,9 @@ simplify_if_then_else (x) neither 1 or -1, but it isn't worth checking for. */ if ((STORE_FLAG_VALUE == 1 || STORE_FLAG_VALUE == -1) - && comparison_p && mode != VOIDmode && ! side_effects_p (x)) + && comparison_p + && GET_MODE_CLASS (mode) == MODE_INT + && ! side_effects_p (x)) { rtx t = make_compound_operation (true_rtx, SET); rtx f = make_compound_operation (false_rtx, SET); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b796581..d5fbd91 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2003-03-23 Eric Botcazou <ebotcazou@libertysurf.fr> + + * gcc.dg/ultrasp5.c: New test. + 2003-03-23 Arpad Beszedes <beszedes@cc.u-szeged.hu> PR middle-end/9967 diff --git a/gcc/testsuite/gcc.dg/ultrasp5.c b/gcc/testsuite/gcc.dg/ultrasp5.c new file mode 100644 index 0000000..c366007 --- /dev/null +++ b/gcc/testsuite/gcc.dg/ultrasp5.c @@ -0,0 +1,12 @@ +/* PR target/10072 */ +/* Originator: Peter van Hoof <p.van-hoof@qub.ac.uk> +/* { dg-do compile } */ +/* { dg-options "-O1 -mcpu=ultrasparc -ffast-math" { target sparc-*-* } } */ + +void p(int v) +{ + int i=v,j; + float a,b,c,x[i]; + + x[i] = (a/(((b)>(c)) ? (b) : (c)) - (((i) == (j)) ? 1.f : 0.f)); +} |