aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorZdenek Dvorak <dvorakz@suse.cz>2007-06-20 08:56:26 +0200
committerZdenek Dvorak <rakdver@gcc.gnu.org>2007-06-20 06:56:26 +0000
commit6848da6a81bb4889f8022d94a2c9365340136a86 (patch)
tree0586f0d4e8a33a16d92e40e1e9ca7e7d5b3a3c3b /gcc
parent6330585d9768e16b4cbc8edb9094abb8a327362d (diff)
downloadgcc-6848da6a81bb4889f8022d94a2c9365340136a86.zip
gcc-6848da6a81bb4889f8022d94a2c9365340136a86.tar.gz
gcc-6848da6a81bb4889f8022d94a2c9365340136a86.tar.bz2
re PR rtl-optimization/32405 (assertion failure in loop-iv.c; probable dataflow regression)
PR rtl-optimization/32405 * loop-iv.c (iv_get_reaching_def): Fail for partial defs. From-SVN: r125881
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/loop-iv.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3eaa168..2790196 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2007-06-20 Zdenek Dvorak <dvorakz@suse.cz>
+
+ PR rtl-optimization/32405
+ * loop-iv.c (iv_get_reaching_def): Fail for partial defs.
+
2007-06-20 Jakub Jelinek <jakub@redhat.com>
* Makefile.in (omega.o): Depend on $(DIAGNOSTIC_H).
diff --git a/gcc/loop-iv.c b/gcc/loop-iv.c
index 5016aaf..f87f968 100644
--- a/gcc/loop-iv.c
+++ b/gcc/loop-iv.c
@@ -347,6 +347,11 @@ iv_get_reaching_def (rtx insn, rtx reg, struct df_ref **def)
return GRD_INVALID;
adef = DF_REF_CHAIN (use)->ref;
+
+ /* We do not handle setting only part of the register. */
+ if (adef->flags & DF_REF_READ_WRITE)
+ return GRD_INVALID;
+
def_insn = DF_REF_INSN (adef);
def_bb = DF_REF_BB (adef);
use_bb = BLOCK_FOR_INSN (insn);