fold-const.c (fold): Make sure the type is of BOOLEAN_TYPE.
authorAndrew Pinski <pinskia@physics.uc.edu>
Sun, 30 May 2004 16:18:59 +0000 (16:18 +0000)
committerAndrew Pinski <pinskia@gcc.gnu.org>
Sun, 30 May 2004 16:18:59 +0000 (09:18 -0700)
2004-05-30  Andrew Pinski  <pinskia@physics.uc.edu>

        * fold-const.c (fold) [case TRUTH_NOT_EXPR]: Make sure the type is
        of BOOLEAN_TYPE.

From-SVN: r82456

gcc/ChangeLog
gcc/fold-const.c

index 79149e498d69c951de93bcc1bb40b752317175fe..f72a6e274fd4badfc9c133739c6e94052c197531 100644 (file)
@@ -1,3 +1,8 @@
+2004-05-30  Andrew Pinski  <pinskia@physics.uc.edu>
+
+       * fold-const.c (fold) [case TRUTH_NOT_EXPR]: Make sure the type is
+       of BOOLEAN_TYPE.
+
 2004-05-30  Kazu Hirata  <kazu@cs.umass.edu>
 
        * c-common.c, calls.c, cfgcleanup.c, cgraph.c, cgraphunit.c,
index 743f4ae47ee7da4beae41db465d4ddc9d082e9e0..7445408ce52aa7cd0a6d4620dde0e3a361a66dcc 100644 (file)
@@ -7215,6 +7215,10 @@ fold (tree expr)
       goto associate;
 
     case TRUTH_NOT_EXPR:
+      /* The argument to invert_truthvalue must have Boolean type.  */
+      if (TREE_CODE (TREE_TYPE (arg0)) != BOOLEAN_TYPE)
+          arg0 = fold_convert (boolean_type_node, arg0);
+      
       /* Note that the operand of this must be an int
         and its values must be 0 or 1.
         ("true" is a fixed value perhaps depending on the language,