aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorEric Botcazou <ebotcazou@libertysurf.fr>2003-03-24 12:29:11 +0100
committerEric Botcazou <ebotcazou@gcc.gnu.org>2003-03-24 11:29:11 +0000
commit02484af985da5f2f56cf2f8aecb69f7d50848807 (patch)
tree420839c3baf4ce62bb9390453b158cc7001f3df3 /gcc
parent941bc65971482ba8194d7ab1b3eb2514b481cc70 (diff)
downloadgcc-02484af985da5f2f56cf2f8aecb69f7d50848807.zip
gcc-02484af985da5f2f56cf2f8aecb69f7d50848807.tar.gz
gcc-02484af985da5f2f56cf2f8aecb69f7d50848807.tar.bz2
re PR target/10072 ([Sparc] internal compiler error: in trunc_int_for_mode, at explow.c:54)
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. From-SVN: r64785
Diffstat (limited to 'gcc')
-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));
+}