OSDN Git Service

* c-typeck.c (null_pointer_constant_p): Replace use of
authorsayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Jan 2007 05:39:57 +0000 (05:39 +0000)
committersayle <sayle@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 13 Jan 2007 05:39:57 +0000 (05:39 +0000)
TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
(build_c_cast): Likewise.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@120747 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-typeck.c

index 17baae3..fcaf921 100644 (file)
@@ -1,5 +1,11 @@
 2007-01-12  Roger Sayle  <roger@eyesopen.com>
 
+       * c-typeck.c (null_pointer_constant_p): Replace use of
+       TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
+       (build_c_cast): Likewise.
+
+2007-01-12  Roger Sayle  <roger@eyesopen.com>
+
        * tree.h (force_fit_type_double): Remove unused final argument.
        * c-common.c (constant_expression_warning): Replace use of
        TREE_CONSTANT_OVERFLOW with TREE_OVERFLOW.
index 50db7d4..66b109e 100644 (file)
@@ -1,6 +1,6 @@
 /* Build expressions with type checking for C compiler.
    Copyright (C) 1987, 1988, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
-   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+   1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
    Free Software Foundation, Inc.
 
 This file is part of GCC.
@@ -117,7 +117,7 @@ null_pointer_constant_p (tree expr)
      yet available everywhere required.  */
   tree type = TREE_TYPE (expr);
   return (TREE_CODE (expr) == INTEGER_CST
-         && !TREE_CONSTANT_OVERFLOW (expr)
+         && !TREE_OVERFLOW (expr)
          && integer_zerop (expr)
          && (INTEGRAL_TYPE_P (type)
              || (TREE_CODE (type) == POINTER_TYPE
@@ -3588,15 +3588,16 @@ build_c_cast (tree type, tree expr)
       /* Ignore any integer overflow caused by the cast.  */
       if (TREE_CODE (value) == INTEGER_CST)
        {
-         if (CONSTANT_CLASS_P (ovalue)
-             && (TREE_OVERFLOW (ovalue) || TREE_CONSTANT_OVERFLOW (ovalue)))
+         if (CONSTANT_CLASS_P (ovalue) && TREE_OVERFLOW (ovalue))
            {
-             /* Avoid clobbering a shared constant.  */
-             value = copy_node (value);
-             TREE_OVERFLOW (value) = TREE_OVERFLOW (ovalue);
-             TREE_CONSTANT_OVERFLOW (value) = TREE_CONSTANT_OVERFLOW (ovalue);
+             if (!TREE_OVERFLOW (value))
+               {
+                 /* Avoid clobbering a shared constant.  */
+                 value = copy_node (value);
+                 TREE_OVERFLOW (value) = TREE_OVERFLOW (ovalue);
+               }
            }
-         else if (TREE_OVERFLOW (value) || TREE_CONSTANT_OVERFLOW (value))
+         else if (TREE_OVERFLOW (value))
            /* Reset VALUE's overflow flags, ensuring constant sharing.  */
            value = build_int_cst_wide (TREE_TYPE (value),
                                        TREE_INT_CST_LOW (value),