diff options
| author | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-24 11:29:11 +0000 |
|---|---|---|
| committer | ebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-24 11:29:11 +0000 |
| commit | 692e0f79aaf6fbc3a9186483fb0a74ab7d69fa6f (patch) | |
| tree | 420839c3baf4ce62bb9390453b158cc7001f3df3 | |
| parent | 0d5e981c0927b0318fc4925b0c960a96ee6ff5d5 (diff) | |
| download | ppe42-gcc-692e0f79aaf6fbc3a9186483fb0a74ab7d69fa6f.tar.gz ppe42-gcc-692e0f79aaf6fbc3a9186483fb0a74ab7d69fa6f.zip | |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@64785 138bc75d-0d04-0410-961f-82ee72b054a4
| -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 a470d16cad8..9bc5b91838a 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 cd7261bf1eb..dd017062daa 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 b7965819754..d5fbd913f71 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 00000000000..c3660073cb9 --- /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)); +} |

