summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-29 19:40:20 +0000
committermmitchel <mmitchel@138bc75d-0d04-0410-961f-82ee72b054a4>2004-08-29 19:40:20 +0000
commitd3cee69d8d446c9bd438868fcc6d9c71b279631d (patch)
tree645bc4e2cc150466118e298ff666849d6252a5c7
parentb9e83dce4f3fdff1ee8748526c773cca8bad1bfb (diff)
downloadppe42-gcc-d3cee69d8d446c9bd438868fcc6d9c71b279631d.tar.gz
ppe42-gcc-d3cee69d8d446c9bd438868fcc6d9c71b279631d.zip
PR rtl-optimization/16590
* gcse.c (pre_delete): Do not create invalid REG_EQUAL notes. PR rtl-optimization/16590 * g++.dg/opt/loop1.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@86732 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/gcse.c4
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/opt/loop1.C24
4 files changed, 37 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 2138bf64bc5..b168aa32851 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-29 Mark Mitchell <mark@codesourcery.com>
+
+ PR rtl-optimization/16590
+ * gcse.c (pre_delete): Do not create invalid REG_EQUAL notes.
+
2004-08-29 Diego Novillo <dnovillo@redhat.com>
* tree-ssa-ccp.c (ccp_visit_stmt): Remove #if 0 guards.
diff --git a/gcc/gcse.c b/gcc/gcse.c
index 16d76fe4d6c..0d602801594 100644
--- a/gcc/gcse.c
+++ b/gcc/gcse.c
@@ -4463,7 +4463,9 @@ pre_delete (void)
expr->reaching_reg
= gen_reg_rtx (GET_MODE (SET_DEST (set)));
- gcse_emit_move_after (expr->reaching_reg, SET_DEST (set), insn);
+ emit_insn_after (gen_move_insn (SET_DEST (set),
+ expr->reaching_reg),
+ insn);
delete_insn (insn);
occr->deleted_p = 1;
SET_BIT (pre_redundant_insns, INSN_CUID (insn));
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ada3528d9e2..4fcbd8b4438 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-29 Mark Mitchell <mark@codesourcery.com>
+
+ PR rtl-optimization/16590
+ * g++.dg/opt/loop1.C: New test.
+
2004-08-29 Tobias Schlueter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/13910
diff --git a/gcc/testsuite/g++.dg/opt/loop1.C b/gcc/testsuite/g++.dg/opt/loop1.C
new file mode 100644
index 00000000000..ad0308e7f95
--- /dev/null
+++ b/gcc/testsuite/g++.dg/opt/loop1.C
@@ -0,0 +1,24 @@
+// PR rtl-optimization/16590
+// { dg-do run }
+// { dg-options "-O2" }
+
+extern "C" void abort();
+
+struct iterator {
+ char * p;
+ int *dummy;
+};
+
+static iterator pend(char * start) {
+ iterator p = {start, 0};
+ if (p.p == start) p.p = start+5;
+ --p.p;
+ return p;
+}
+
+int main() {
+ char mem[4+1];
+
+ if(pend(mem).p != mem+4)
+ abort ();
+}
OpenPOWER on IntegriCloud