From: Gary Funck Date: Fri, 24 Jul 2015 16:10:39 +0000 (+0000) Subject: re PR middle-end/66984 (ICE: fold_binary changes type of operand, causing failure... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=64447a2d5091ba15fbb1d7ce403533217e97163e;p=gcc.git re PR middle-end/66984 (ICE: fold_binary changes type of operand, causing failure in verify_gimple_assign_binary) 2015-07-24 Gary Funck PR middle-end/66984 * fold-const.c (fold_binary_loc): Call fold_convert on arguments to fold_build2 for CEIL_DIV_EXPR and FLOOR_DIV_EXPR optimization. From-SVN: r226168 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 59910bf992f..fc7bd761fcb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2015-07-24 Gary Funck + + PR middle-end/66984 + * fold-const.c (fold_binary_loc): Call fold_convert on arguments to + fold_build2 for CEIL_DIV_EXPR and FLOOR_DIV_EXPR optimization. + 2015-07-24 Tom de Vries * tree-parloops.c (gen_parallel_loop): Add debug print for alternative diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 739a3a98e29..e69b1d04133 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -10746,7 +10746,9 @@ fold_binary_loc (location_t loc, after the last round to changes to the DIV code in expmed.c. */ if ((code == CEIL_DIV_EXPR || code == FLOOR_DIV_EXPR) && multiple_of_p (type, arg0, arg1)) - return fold_build2_loc (loc, EXACT_DIV_EXPR, type, arg0, arg1); + return fold_build2_loc (loc, EXACT_DIV_EXPR, type, + fold_convert (type, arg0), + fold_convert (type, arg1)); strict_overflow_p = false; if (TREE_CODE (arg1) == INTEGER_CST