aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2006-02-14 00:19:49 +0100
committerZdenek Dvorak <rakdver@gcc.gnu.org>2006-02-13 23:19:49 +0000
commit8e1409e877b665217f4033b42e1da5153c7a2516 (patch)
treec40e57f8c09dbac796305b735c941b4008537d44 /gcc
parent74290e83e768bde9d1f1db3b25024c2ca87dccdb (diff)
downloadgcc-8e1409e877b665217f4033b42e1da5153c7a2516.zip
gcc-8e1409e877b665217f4033b42e1da5153c7a2516.tar.gz
gcc-8e1409e877b665217f4033b42e1da5153c7a2516.tar.bz2
re PR rtl-optimization/26235 (FAIL: gcc.c-torture/execute/ieee/fp-cmp-8l.c execution at -O1, -O2 and -Os)
PR rtl-optimization/26235 * loop-invariant.c (hash_invariant_expr_1): Handle 'i' and 'n' formats. (invariant_expr_equal_p): Handle 'i' and 'n' formats. Fail on unknown format. From-SVN: r110939
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/loop-invariant.c10
2 files changed, 17 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2498b57..a1a30e3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2006-02-13 Zdenek Dvorak <dvorakz@suse.cz>
+
+ PR rtl-optimization/26235
+ * loop-invariant.c (hash_invariant_expr_1): Handle 'i' and 'n' formats.
+ (invariant_expr_equal_p): Handle 'i' and 'n' formats. Fail on unknown
+ format.
+
2006-02-13 Jeff Law <law@redhat.com>
* tree-vrp.c (extract_range_from_binary_expr): Remove handling of
diff --git a/gcc/loop-invariant.c b/gcc/loop-invariant.c
index ce82780..a57857d 100644
--- a/gcc/loop-invariant.c
+++ b/gcc/loop-invariant.c
@@ -292,6 +292,8 @@ hash_invariant_expr_1 (rtx insn, rtx x)
for (j = 0; j < XVECLEN (x, i); j++)
val ^= hash_invariant_expr_1 (insn, XVECEXP (x, i, j));
}
+ else if (fmt[i] == 'i' || fmt[i] == 'n')
+ val ^= XINT (x, i);
}
return val;
@@ -373,6 +375,14 @@ invariant_expr_equal_p (rtx insn1, rtx e1, rtx insn2, rtx e2)
return false;
}
}
+ else if (fmt[i] == 'i' || fmt[i] == 'n')
+ {
+ if (XINT (e1, i) != XINT (e2, i))
+ return false;
+ }
+ /* Unhandled type of subexpression, we fail conservatively. */
+ else
+ return false;
}
return true;