+2004-10-15  Joseph S. Myers  <jsm@polyomino.org.uk>
+
+       * c-typeck.c (build_compound_expr, build_c_cast): Don't try to use
+       non_lvalue to stop something being a null pointer constant.
+
 2004-10-15  Aldy Hernandez  <aldyh@redhat.com>
 
        * config/rs6000/rs6000.h (FUNCTION_ARG_REGNO_P): FPRs are only
 
   /* Convert arrays and functions to pointers.  */
   expr2 = default_function_array_conversion (expr2);
 
-  /* Don't let (0, 0) be null pointer constant.  */
-  if (integer_zerop (expr2))
-    expr2 = non_lvalue (expr2);
-
   if (!TREE_SIDE_EFFECTS (expr1))
     {
       /* The left-hand operand of a comma expression is like an expression
        }
     }
 
-  /* Don't let (void *) (FOO *) 0 be a null pointer constant.  */
-  if (TREE_CODE (value) == INTEGER_CST
-      && TREE_CODE (expr) == INTEGER_CST
-      && TREE_CODE (TREE_TYPE (expr)) != INTEGER_TYPE)
-    value = non_lvalue (value);
-
   /* Don't let a cast be an lvalue.  */
   if (value == expr)
     value = non_lvalue (value);