From: jakub Date: Fri, 16 Nov 2018 16:40:53 +0000 (+0000) Subject: PR middle-end/88032 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1cc6e4a452be9430c5a59e5d5be0a9b68e0dafaf;p=thirdparty%2Fgcc.git PR middle-end/88032 * optabs.c (expand_binop): For op0_mode use GET_MODE (op0), unless it is VOIDmode, in which case use int_mode. Similarly for op1_mode. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@266216 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a71710795172..a6881d218be7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-11-16 Jakub Jelinek + + PR middle-end/88032 + * optabs.c (expand_binop): For op0_mode use GET_MODE (op0), unless it + is VOIDmode, in which case use int_mode. Similarly for op1_mode. + 2018-11-16 Eric Botcazou * tree-switch-conversion.h (switch_decision_tree::emit_case_nodes): Add diff --git a/gcc/optabs.c b/gcc/optabs.c index c7d1f22e7a86..130b1182ef00 100644 --- a/gcc/optabs.c +++ b/gcc/optabs.c @@ -1377,8 +1377,12 @@ expand_binop (machine_mode mode, optab binoptab, rtx op0, rtx op1, start_sequence (); /* Do the actual arithmetic. */ - enum machine_mode op0_mode = CONSTANT_P (op0) ? int_mode : VOIDmode; - enum machine_mode op1_mode = CONSTANT_P (op1) ? int_mode : VOIDmode; + enum machine_mode op0_mode = GET_MODE (op0); + enum machine_mode op1_mode = GET_MODE (op1); + if (op0_mode == VOIDmode) + op0_mode = int_mode; + if (op1_mode == VOIDmode) + op1_mode = int_mode; for (i = 0; i < GET_MODE_BITSIZE (int_mode) / BITS_PER_WORD; i++) { rtx target_piece = operand_subword (target, i, 1, int_mode);