aboutsummaryrefslogtreecommitdiff
path: root/gcc/ree.c
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2012-10-26 17:19:35 +0000
committerTeresa Johnson <tejohnson@gcc.gnu.org>2012-10-26 17:19:35 +0000
commitca3f371f1246db1bf2b71abfdf844a08e0f5dc31 (patch)
treea2eaa87b296b3829f298c857f1de301049610cf6 /gcc/ree.c
parent8256d5ca7870ab4aa5f74b9cb9183393b1024d0b (diff)
downloadgcc-ca3f371f1246db1bf2b71abfdf844a08e0f5dc31.zip
gcc-ca3f371f1246db1bf2b71abfdf844a08e0f5dc31.tar.gz
gcc-ca3f371f1246db1bf2b71abfdf844a08e0f5dc31.tar.bz2
Avoid conservative behavior in REE by allowing removal of redundant extends when...
Avoid conservative behavior in REE by allowing removal of redundant extends when the def feeds another extend with a different mode. This works because in merge_def_and_ext only calls combine_set_extension if the candidate for removal has a wider mode than the def extend's mode, otherwise the def extend mode is preserved. In combine_set_extension the def is modified to use the wider candidate's mode. 2012-10-26 Teresa Johnson <tejohnson@google.com> * ree.c (add_removable_extension): Remove unnecessary mode check with other extension. * testsuite/gcc.c-torture/execute/20111227-2.c: New test. * testsuite/gcc.c-torture/execute/20111227-3.c: Ditto. From-SVN: r192850
Diffstat (limited to 'gcc/ree.c')
-rw-r--r--gcc/ree.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/ree.c b/gcc/ree.c
index 167efa3..a2ede97 100644
--- a/gcc/ree.c
+++ b/gcc/ree.c
@@ -803,7 +803,7 @@ add_removable_extension (const_rtx expr, rtx insn,
for (def = defs; def; def = def->next)
if ((idx = def_map[INSN_UID(DF_REF_INSN (def->ref))])
&& (cand = &VEC_index (ext_cand, *insn_list, idx - 1))
- && (cand->code != code || cand->mode != mode))
+ && cand->code != code)
{
if (dump_file)
{