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-Tag: releases/gcc-4.7.0~5364 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=fbf3fee2b959926c4df4295eba74ea144f0c6a00;p=thirdparty%2Fgcc.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 2341964fe701..61b453572960 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 9640264954a2..94c8926b03da 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)