]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR c++/42655 (! causes the qualified types for rvalue)
authorJason Merrill <jason@redhat.com>
Thu, 14 Jan 2010 20:21:58 +0000 (15:21 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Thu, 14 Jan 2010 20:21:58 +0000 (15:21 -0500)
PR c++/42655
* call.c (convert_like_real): Do full decay_conversion for ck_rvalue.

From-SVN: r155913

gcc/cp/ChangeLog
gcc/cp/call.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/overload/rvalue1.C [new file with mode: 0644]

index 11fa60d3a16b864f4cc5523a2252d8ac6bc7f626..1374a5b02de88dbad53a7fc744647baf7e712308 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/42655
+       * call.c (convert_like_real): Do full decay_conversion for ck_rvalue.
+
 2010-01-13  Dodji Seketeli  <dodji@redhat.com>
 
        PR c++/42634
index 02fc4b36623015190baba359e4f2cf47ea81fb6d..935aea865f9fe4ac79e687756549b97ed95e66cc 100644 (file)
@@ -5013,7 +5013,7 @@ convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
   switch (convs->kind)
     {
     case ck_rvalue:
-      expr = convert_bitfield_to_declared_type (expr);
+      expr = decay_conversion (expr);
       if (! MAYBE_CLASS_TYPE_P (totype))
        return expr;
       /* Else fall through.  */
index cfebc861535cb101e44d271d9a5c40a4d5985d6d..7c747c39dbe26cc2a55dbea7a958b74128fa4108 100644 (file)
@@ -1,3 +1,8 @@
+2010-01-14  Jason Merrill  <jason@redhat.com>
+
+       PR c++/42655
+       * g++.dg/overload/rvalue1.C: New.
+
 2010-01-14  Martin Jambor  <mjambor@suse.cz>
 
        PR tree-optimization/42706
diff --git a/gcc/testsuite/g++.dg/overload/rvalue1.C b/gcc/testsuite/g++.dg/overload/rvalue1.C
new file mode 100644 (file)
index 0000000..4180594
--- /dev/null
@@ -0,0 +1,10 @@
+// PR c++/42655
+
+void unused(const bool &) { }
+
+int main() {
+  volatile bool x = false;
+  unused(!!x); // type of "!x" is bool
+  unused(!x); // type of "!x" is bool
+}
+