diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 17baae3bb98f4c55b63e0713687c910567948f4e..fcaf921c281ddab39d77f92acd54935e0aad7243 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +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. diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 50db7d4a6ae72fbb56b5b595a181e8d4689f99d9..66b109ecf3ea86754b3564a5d0929b850233effe 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -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),