Patchwork C++ PATCH for nullptr decay

login
register
mail settings
Submitter Jason Merrill
Date Aug. 6, 2010, 7:34 p.m.
Message ID <4C5C63B9.6040004@redhat.com>
Download mbox | patch
Permalink /patch/61134/
State New
Headers show

Comments

Jason Merrill - Aug. 6, 2010, 7:34 p.m.
On the constexpr branch, some testcases were confused by nullptr_t 
variables not clearly having a constant value.  I've fixed this by 
causing them to decay to nullptr.

Tested x86_64-pc-linux-gnu, applied to trunk.

Patch

commit 171913d18ec1a2ccefc1921cf259cdef1ca37dac
Author: Jason Merrill <jason@redhat.com>
Date:   Fri Aug 6 20:10:29 2010 +0200

    	* typeck.c (decay_conversion): Any expression with type nullptr_t
    	decays to nullptr.

diff --git a/gcc/cp/typeck.c b/gcc/cp/typeck.c
index 484d299..177f4bb 100644
--- a/gcc/cp/typeck.c
+++ b/gcc/cp/typeck.c
@@ -1920,6 +1920,9 @@  decay_conversion (tree exp)
   if (error_operand_p (exp))
     return error_mark_node;
 
+  if (NULLPTR_TYPE_P (type))
+    return nullptr_node;
+
   /* build_c_cast puts on a NOP_EXPR to make the result not an lvalue.
      Leave such NOP_EXPRs, since RHS is being used in non-lvalue context.  */
   code = TREE_CODE (type);