C++ PATCH for nullptr decay

Submitted by Jason Merrill on Aug. 6, 2010, 7:34 p.m.


Message ID 4C5C63B9.6040004@redhat.com
State New
Headers show

Commit Message

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 hide | download patch | download mbox

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);