diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-02-06 21:54:21 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-02-06 21:54:21 +0000 |
commit | 45e9ff98671e9f61d9ec16cda4d3692157fe344c (patch) | |
tree | 1ad8acb219a7c1a5747f7a617239862981e10f5b /gcc/internal-fn.c | |
parent | 73648acf9b94e25bcfd707f4b10f418af0a54417 (diff) | |
download | gcc-45e9ff98671e9f61d9ec16cda4d3692157fe344c.tar.gz |
PR rtl-optimization/60030
* internal-fn.c (ubsan_expand_si_overflow_mul_check): Surround
lopart with paradoxical subreg before shifting it up by hprec.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207582 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/internal-fn.c')
-rw-r--r-- | gcc/internal-fn.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/internal-fn.c b/gcc/internal-fn.c index 3efd2b11934..568a96b94b1 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); |