aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2012-11-06 10:16:34 +0100
committerKaz Kojima <kkojima@gcc.gnu.org>2012-11-06 09:16:34 +0000
commit11e185566b2122be2da3d71878286aeec0c71f10 (patch)
treeae46f24c4d0df5da48dc73221e22aee42706373c
parent3020bfd1c22e6fcfbb06327d4d72b04cefa75164 (diff)
downloadgcc-11e185566b2122be2da3d71878286aeec0c71f10.zip
gcc-11e185566b2122be2da3d71878286aeec0c71f10.tar.gz
gcc-11e185566b2122be2da3d71878286aeec0c71f10.tar.bz2
re PR target/41993 ([sh] ICE in create_pre_exit, at mode-switching.c:399)
PR target/41993 * mode-switching.c (create_pre_exit): Set return_copy to last_insn when copy_start is a pseudo reg. Co-Authored-By: Kaz Kojima <kkojima@gcc.gnu.org> From-SVN: r193210
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/mode-switching.c5
2 files changed, 11 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index fff511f..5f9bb44 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2012-11-06 Uros Bizjak <ubizjak@gmail.com>
+ Kaz Kojima <kkojima@gcc.gnu.org>
+
+ PR target/41993
+ * mode-switching.c (create_pre_exit): Set return_copy to
+ last_insn when copy_start is a pseudo reg.
+
2012-11-06 Andrey Turetskiy <andrey.turetskiy@gmail.com>
* config/i386/i386.c (bdesc_args): Rename CODE_FOR_avx2_umulhrswv16hi3 to
diff --git a/gcc/mode-switching.c b/gcc/mode-switching.c
index 2f7455a..386f8d1 100644
--- a/gcc/mode-switching.c
+++ b/gcc/mode-switching.c
@@ -324,7 +324,10 @@ create_pre_exit (int n_entities, int *entity_map, const int *num_modes)
else
break;
if (copy_start >= FIRST_PSEUDO_REGISTER)
- break;
+ {
+ last_insn = return_copy;
+ continue;
+ }
copy_num
= hard_regno_nregs[copy_start][GET_MODE (copy_reg)];