diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-02-06 22:54:21 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-02-06 22:54:21 +0100 |
commit | 47d552eb018f0ccd92a5d0c38a79ff702b4f1b70 (patch) | |
tree | 1ad8acb219a7c1a5747f7a617239862981e10f5b | |
parent | 45c75ea7f14555859d41f8141eae669bdbe84f89 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/internal-fn.c | 3 |
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); |