aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2014-02-06 22:54:21 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2014-02-06 22:54:21 +0100
commit47d552eb018f0ccd92a5d0c38a79ff702b4f1b70 (patch)
tree1ad8acb219a7c1a5747f7a617239862981e10f5b
parent45c75ea7f14555859d41f8141eae669bdbe84f89 (diff)
downloadgcc-47d552eb018f0ccd92a5d0c38a79ff702b4f1b70.zip
gcc-47d552eb018f0ccd92a5d0c38a79ff702b4f1b70.tar.gz
gcc-47d552eb018f0ccd92a5d0c38a79ff702b4f1b70.tar.bz2
re PR rtl-optimization/60030 (ICE in simplify_subreg, at simplify-rtx.c:5903)
PR rtl-optimization/60030 * internal-fn.c (ubsan_expand_si_overflow_mul_check): Surround lopart with paradoxical subreg before shifting it up by hprec. From-SVN: r207582
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/internal-fn.c3
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index e489b62..33f1ccf 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2014-02-06 Jakub Jelinek <jakub@redhat.com>
+
+ PR rtl-optimization/60030
+ * internal-fn.c (ubsan_expand_si_overflow_mul_check): Surround
+ lopart with paradoxical subreg before shifting it up by hprec.
+
2014-02-06 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* config/arm/aarch-cost-tables.h (cortexa57_extra_costs): New table.
diff --git a/gcc/internal-fn.c b/gcc/internal-fn.c
index 3efd2b1..568a96b 100644
--- a/gcc/internal-fn.c
+++ b/gcc/internal-fn.c
@@ -646,7 +646,8 @@ ubsan_expand_si_overflow_mul_check (gimple stmt)
emit_cmp_and_jump_insns (hipart, const0_rtx, GE, NULL_RTX, hmode,
false, after_hipart_neg, PROB_EVEN);
- tem = expand_shift (LSHIFT_EXPR, mode, lopart, hprec, NULL_RTX, 1);
+ tem = convert_modes (mode, hmode, lopart, 1);
+ tem = expand_shift (LSHIFT_EXPR, mode, tem, hprec, NULL_RTX, 1);
tem = expand_simple_binop (mode, MINUS, loxhi, tem, NULL_RTX,
1, OPTAB_DIRECT);
emit_move_insn (loxhi, tem);