From 64447a2d5091ba15fbb1d7ce403533217e97163e Mon Sep 17 00:00:00 2001 From: Gary Funck Date: Fri, 24 Jul 2015 16:10:39 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/fold-const.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) 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 -- 2.30.2