From: Richard Guenther Date: Thu, 14 Jul 2011 12:42:17 +0000 (+0000) Subject: fold-const.c (fold_binary_loc): Convert the !bool_var result... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fbf3fee2b959926c4df4295eba74ea144f0c6a00;p=gcc.git fold-const.c (fold_binary_loc): Convert the !bool_var result... 2011-07-14 Richard Guenther * fold-const.c (fold_binary_loc): Convert the !bool_var result, not bool_var when folding bool_var != 1 or bool_var == 0. From-SVN: r176272 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2341964fe70..61b45357296 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-07-14 Richard Guenther + + * fold-const.c (fold_binary_loc): Convert the !bool_var result, + not bool_var when folding bool_var != 1 or bool_var == 0. + 2011-07-14 Bernd Schmidt * haifa-sched.c (schedule_insns): Remove outdated comment. diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 9640264954a..94c8926b03d 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -12156,14 +12156,16 @@ fold_binary_loc (location_t loc, /* bool_var != 1 becomes !bool_var. */ if (TREE_CODE (TREE_TYPE (arg0)) == BOOLEAN_TYPE && integer_onep (arg1) && code == NE_EXPR) - return fold_build1_loc (loc, TRUTH_NOT_EXPR, type, - fold_convert_loc (loc, type, arg0)); + return fold_convert_loc (loc, type, + fold_build1_loc (loc, TRUTH_NOT_EXPR, + TREE_TYPE (arg0), arg0)); /* bool_var == 0 becomes !bool_var. */ if (TREE_CODE (TREE_TYPE (arg0)) == BOOLEAN_TYPE && integer_zerop (arg1) && code == EQ_EXPR) - return fold_build1_loc (loc, TRUTH_NOT_EXPR, type, - fold_convert_loc (loc, type, arg0)); + return fold_convert_loc (loc, type, + fold_build1_loc (loc, TRUTH_NOT_EXPR, + TREE_TYPE (arg0), arg0)); /* !exp != 0 becomes !exp */ if (TREE_CODE (arg0) == TRUTH_NOT_EXPR && integer_zerop (arg1)