aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorFranz Sirl <Franz.Sirl-kernel@lauterbach.com>1999-11-30 23:19:06 +0000
committerRichard Henderson <rth@gcc.gnu.org>1999-11-30 15:19:06 -0800
commit481c7efae8707188049cf59ad97f682ba68576ce (patch)
tree10ef6387bd38b7dc0190a20805b1b218e93a1188 /gcc
parente5b7ca327d3df06a69998bd72ae2cccad3759d25 (diff)
downloadgcc-481c7efae8707188049cf59ad97f682ba68576ce.zip
gcc-481c7efae8707188049cf59ad97f682ba68576ce.tar.gz
gcc-481c7efae8707188049cf59ad97f682ba68576ce.tar.bz2
combine.c (try_combine): Only pass SET or CLOBBER to SET_DEST
* combine.c (try_combine): Only pass SET or CLOBBER to SET_DEST * rs6000.md: Only access a CONST_INT with INTVAL From-SVN: r30729
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/combine.c4
-rw-r--r--gcc/config/rs6000/rs6000.md9
3 files changed, 15 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 317ee8f..b77d214 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+Tue Nov 30 15:18:35 1999 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
+
+ * combine.c (try_combine): Only pass SET or CLOBBER to SET_DEST
+ * rs6000.md: Only access a CONST_INT with INTVAL
+
Tue Nov 30 14:21:00 1999 Richard Henderson <rth@cygnus.com>
* lcm.c (compute_laterin): Cast bb->aux to size_t not int.
diff --git a/gcc/combine.c b/gcc/combine.c
index 8f14d7d..e7e0a69 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -1547,7 +1547,9 @@ try_combine (i3, i2, i1)
if (i == XVECLEN (p2, 0))
for (i = 0; i < XVECLEN (p2, 0); i++)
- if (SET_DEST (XVECEXP (p2, 0, i)) == SET_SRC (PATTERN (i3)))
+ if ((GET_CODE (XVECEXP (p2, 0, i)) == SET
+ || GET_CODE (XVECEXP (p2, 0, i)) == CLOBBER)
+ && SET_DEST (XVECEXP (p2, 0, i)) == SET_SRC (PATTERN (i3)))
{
combine_merges++;
diff --git a/gcc/config/rs6000/rs6000.md b/gcc/config/rs6000/rs6000.md
index 7d313ab..8d6e85c 100644
--- a/gcc/config/rs6000/rs6000.md
+++ b/gcc/config/rs6000/rs6000.md
@@ -1717,11 +1717,16 @@
""
"
{
- int i = exact_log2 (INTVAL (operands[2]));
+ int i;
rtx temp1;
rtx temp2;
- if (GET_CODE (operands[2]) != CONST_INT || i < 0)
+ if (GET_CODE (operands[2]) != CONST_INT)
+ FAIL;
+
+ i = exact_log2 (INTVAL (operands[2]));
+
+ if (i < 0)
FAIL;
temp1 = gen_reg_rtx (SImode);