re PR bootstrap/68346 (Bootstrap failure on i686-linux)
authorJason Merrill <jason@redhat.com>
Tue, 17 Nov 2015 21:49:23 +0000 (16:49 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Tue, 17 Nov 2015 21:49:23 +0000 (16:49 -0500)
PR bootstrap/68346

* typeck.c (build_static_cast_1): Force a NOP when converting to
the same type.

From-SVN: r230508

gcc/cp/ChangeLog
gcc/cp/typeck.c

index b46362dfe7d6269cc5a6175a17113acbeac53c03..267bd192335ef4fdf6c4167cc30de65ae2c87d6e 100644 (file)
@@ -1,5 +1,9 @@
 2015-11-17  Jason Merrill  <jason@redhat.com>
 
+       PR bootstrap/68346
+       * typeck.c (build_static_cast_1): Force a NOP when converting to
+       the same type.
+
        * cp-tree.h (LITERAL_ZERO_P): Remove.
        * parser.c (cp_parser_postfix_expression, literal_zeros)
        (cp_parser_parenthesized_expression_list): Don't mess with it.
index b7395cf072a418e468776be2d3d31dfa302d155f..5f7d4bb994adfec3ee42215a2495b35bf7bc531a 100644 (file)
@@ -6668,7 +6668,13 @@ build_static_cast_1 (tree type, tree expr, bool c_cast_p,
         If T is a reference type, the result is an lvalue; otherwise,
         the result is an rvalue.  */
       if (TREE_CODE (type) != REFERENCE_TYPE)
-       result = rvalue (result);
+       {
+         result = rvalue (result);
+
+         if (result == expr && SCALAR_TYPE_P (type))
+           /* Leave some record of the cast.  */
+           result = build_nop (type, expr);
+       }
       return result;
     }