DR 799
authorJason Merrill <jason@redhat.com>
Mon, 10 Nov 2014 05:00:05 +0000 (00:00 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Mon, 10 Nov 2014 05:00:05 +0000 (00:00 -0500)
DR 799
* typeck.c (build_reinterpret_cast_1): reinterpret_cast to the
same scalar type is an rvalue.

From-SVN: r217276

gcc/cp/ChangeLog
gcc/cp/typeck.c
gcc/testsuite/g++.dg/conversion/reinterpret1.C

index f92e002d19ac56409049c592ed2c6e2881aee728..dd0dc2f76d9e273e6ca7aa6b6d879d982ba42c53 100644 (file)
@@ -1,5 +1,9 @@
 2014-11-09  Jason Merrill  <jason@redhat.com>
 
+       DR 799
+       * typeck.c (build_reinterpret_cast_1): reinterpret_cast to the
+       same scalar type is an rvalue.
+
        DR 2007
        * call.c (build_new_op_1): Don't do non-class lookup for =, -> or [].
 
index 99f4b8830d2b7424b42a49ebc562903e68de1dab..d0f5ccdc07ac3e42ad03ab8f6ad5d2fe4c9bc767 100644 (file)
@@ -6898,7 +6898,7 @@ build_reinterpret_cast_1 (tree type, tree expr, bool c_cast_p,
            || TYPE_PTR_OR_PTRMEM_P (type))
           && same_type_p (type, intype))
     /* DR 799 */
-    return fold_if_not_in_template (build_nop (type, expr));
+    return rvalue (expr);
   else if ((TYPE_PTRFN_P (type) && TYPE_PTRFN_P (intype))
           || (TYPE_PTRMEMFUNC_P (type) && TYPE_PTRMEMFUNC_P (intype)))
     return fold_if_not_in_template (build_nop (type, expr));
index aa55f6f4cf51d9c792e5c171800644cd6499ba8f..d4567822e2a0b81b5b99e50dffcd0bac82be40a5 100644 (file)
@@ -3,4 +3,4 @@
 struct Y { Y(int &); };
 
 int v;
-Y y1(reinterpret_cast<int>(v));
+Y y1(reinterpret_cast<int>(v));  // { dg-error "" }