aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/combine.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.dg/ultrasp5.c12
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));
+}