Patchwork C++0x PATCHes for implicitly deleted, implicit move

login
register
mail settings
Submitter Jason Merrill
Date June 30, 2010, 12:49 a.m.
Message ID <4C2A948A.8010908@redhat.com>
Download mbox | patch
Permalink /patch/57341/
State New
Headers show

Comments

Jason Merrill - June 30, 2010, 12:49 a.m.
This series of patches implements C++0x implicitly deleted member 
functions as per N2346 (corrected by later DRs) and implicit move 
constructors/assignment ops as per N3053 (with a few corrections I've 
noticed).

copy-rename.patch just renames *_init_ref, *_assign_ref and the like to 
*_copy_ctor and *_copy_assign since move ctors also take a reference.

copy-minor.patch is a few minor cleanups that are correct on their own 
and I split out from the main patch to make it easier to read.

deleted-machinery is the main body of the change: it introduces all the 
code to make implicit delete/move happen without actually turning it on. 
  It removes the old locate_copy et al that were used to look up which 
functions would be called by a synthesized method in order to synthesize 
an exception specification, and replaces them with new code that just 
uses overload resolution.  Because access control is not subject to 
SFINAE, I needed to add a new LOOKUP_SPECULATIVE flag to prevent access 
control errors.

deleted-diag.patch just changes the diagnostic for use of a deleted 
function to work better with the diagnostic that explains why an 
implicitly deleted function is deleted.

implicit-delete.patch just throws the switch to turn on implicitly 
deleted functions.  I separated this out from the machinery patch in 
order to simplify bug hunting if code starts having trouble as a result 
of this change; it should be easier to tell if the bug is due to the 
code overhaul or the change in behavior if the two things are at 
different revisions.

implicit-move.patch throws the further switch to turn on implicitly 
declared move constructors and assignment operators.  Most code 
continues to work fine with this change, but a few pieces of C++0x code 
assume that a move constructor does not suppress a copy constructor and 
will break as a result; I needed to add explicit defaults to 
unordered_map et al.

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

Patch

commit fb3c59ced748720020e0aa4ef6756aa562e5554e
Author: Jason Merrill <jason@redhat.com>
Date:   Fri Jun 25 21:54:13 2010 -0400

    	Enable implicitly declared move constructor/operator= (N3053).
    gcc/cp/
    	* class.c (add_implicitly_declared_members): A class with no
    	explicitly declared copy or move constructor gets both declared
    	implicitly, and similarly for operator=.
    	(check_bases): A type with no copy ctor does not inhibit
    	a const copy ctor in a derived class.
    	(check_field_decl): Likewise.
    	(check_bases_and_members): A nonexistent copy ctor/op= is non-trivial.
    	* tree.c (type_has_nontrivial_copy_init): Adjust semantics.
    	(trivially_copyable_p): Likewise.
    	* call.c (convert_like_real): Use type_has_nontrivial_copy_init.
    	* class.c (finish_struct_bits): Likewise.
    	* tree.c (build_target_expr_with_type): Likewise.
    	* typeck2.c (store_init_value): Likewise.
    libstdc++-v3/
    	* include/bits/unordered_map.h: Explicitly default copy constructors.
    	* include/bits/unordered_set.h: Likewise.

diff --git a/gcc/cp/call.c b/gcc/cp/call.c
index 9f4a520..7e632d0 100644
--- a/gcc/cp/call.c
+++ b/gcc/cp/call.c
@@ -5197,7 +5197,7 @@  convert_like_real (conversion *convs, tree expr, tree fn, int argnum,
 	       OK.  */
 	    if ((lvalue & clk_packed)
 		&& CLASS_TYPE_P (type)
-		&& !TYPE_HAS_TRIVIAL_COPY_CTOR (type))
+		&& type_has_nontrivial_copy_init (type))
 	      {
 		if (complain & tf_error)
 		  error ("cannot bind packed field %qE to %qT",
@@ -5905,7 +5905,7 @@  build_over_call (struct z_candidate *cand, int flags, tsubst_flags_t complain)
 	  if (TREE_CODE (arg) == TARGET_EXPR)
 	    return arg;
 	  else if (trivial)
-	    return build_target_expr_with_type (arg, DECL_CONTEXT (fn));
+	    return force_target_expr (DECL_CONTEXT (fn), arg);
 	}
       else if (TREE_CODE (arg) == TARGET_EXPR || trivial)
 	{
diff --git a/gcc/cp/class.c b/gcc/cp/class.c
index 031a4ea..a2ed863 100644
--- a/gcc/cp/class.c
+++ b/gcc/cp/class.c
@@ -1282,7 +1282,8 @@  check_bases (tree t,
 	 assignment operators that take const references, then the
 	 derived class cannot have such a member automatically
 	 generated.  */
-      if (! TYPE_HAS_CONST_COPY_CTOR (basetype))
+      if (TYPE_HAS_COPY_CTOR (basetype)
+	  && ! TYPE_HAS_CONST_COPY_CTOR (basetype))
 	*cant_have_const_ctor_p = 1;
       if (TYPE_HAS_COPY_ASSIGN (basetype)
 	  && !TYPE_HAS_CONST_COPY_ASSIGN (basetype))
@@ -1312,8 +1313,10 @@  check_bases (tree t,
       TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t)
 	|= TYPE_HAS_NONTRIVIAL_DESTRUCTOR (basetype);
       TYPE_HAS_COMPLEX_COPY_ASSIGN (t)
-	|= TYPE_HAS_COMPLEX_COPY_ASSIGN (basetype);
-      TYPE_HAS_COMPLEX_COPY_CTOR (t) |= TYPE_HAS_COMPLEX_COPY_CTOR (basetype);
+	|= (TYPE_HAS_COMPLEX_COPY_ASSIGN (basetype)
+	    || !TYPE_HAS_COPY_ASSIGN (basetype));
+      TYPE_HAS_COMPLEX_COPY_CTOR (t) |= (TYPE_HAS_COMPLEX_COPY_CTOR (basetype)
+					 || !TYPE_HAS_COPY_CTOR (basetype));
       TYPE_HAS_COMPLEX_MOVE_ASSIGN (t)
 	|= TYPE_HAS_COMPLEX_MOVE_ASSIGN (basetype);
       TYPE_HAS_COMPLEX_MOVE_CTOR (t) |= TYPE_HAS_COMPLEX_MOVE_CTOR (basetype);
@@ -1545,7 +1548,8 @@  finish_struct_bits (tree t)
      mode to be BLKmode, and force its TREE_ADDRESSABLE bit to be
      nonzero.  This will cause it to be passed by invisible reference
      and prevent it from being returned in a register.  */
-  if (! TYPE_HAS_TRIVIAL_COPY_CTOR (t) || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t))
+  if (type_has_nontrivial_copy_init (t)
+      || TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t))
     {
       tree variants;
       DECL_MODE (TYPE_MAIN_DECL (t)) = BLKmode;
@@ -2647,27 +2651,28 @@  add_implicitly_declared_members (tree t,
 
      If a class definition does not explicitly declare a copy
      constructor, one is declared implicitly.  */
-  if (! TYPE_HAS_COPY_CTOR (t) && ! TYPE_FOR_JAVA (t))
+  if (! TYPE_HAS_COPY_CTOR (t) && ! TYPE_FOR_JAVA (t)
+      && !type_has_move_constructor (t))
     {
       TYPE_HAS_COPY_CTOR (t) = 1;
       TYPE_HAS_CONST_COPY_CTOR (t) = !cant_have_const_cctor;
       CLASSTYPE_LAZY_COPY_CTOR (t) = 1;
+      if (cxx_dialect >= cxx0x)
+	CLASSTYPE_LAZY_MOVE_CTOR (t) = 1;
     }
 
-  /* Currently only lambdas get a lazy move ctor, but N3053 adds them for
-     other classes.  */
-  if (LAMBDA_TYPE_P (t))
-    CLASSTYPE_LAZY_MOVE_CTOR (t) = 1;
-
   /* If there is no assignment operator, one will be created if and
      when it is needed.  For now, just record whether or not the type
      of the parameter to the assignment operator will be a const or
      non-const reference.  */
-  if (!TYPE_HAS_COPY_ASSIGN (t) && !TYPE_FOR_JAVA (t))
+  if (!TYPE_HAS_COPY_ASSIGN (t) && !TYPE_FOR_JAVA (t)
+      && !type_has_move_assign (t))
     {
       TYPE_HAS_COPY_ASSIGN (t) = 1;
       TYPE_HAS_CONST_COPY_ASSIGN (t) = !cant_have_const_assignment;
       CLASSTYPE_LAZY_COPY_ASSIGN (t) = 1;
+      if (cxx_dialect >= cxx0x)
+	CLASSTYPE_LAZY_MOVE_ASSIGN (t) = 1;
     }
 
   /* We can't be lazy about declaring functions that might override
@@ -2863,18 +2868,23 @@  check_field_decl (tree field,
 	  TYPE_NEEDS_CONSTRUCTING (t) |= TYPE_NEEDS_CONSTRUCTING (type);
 	  TYPE_HAS_NONTRIVIAL_DESTRUCTOR (t)
 	    |= TYPE_HAS_NONTRIVIAL_DESTRUCTOR (type);
-	  TYPE_HAS_COMPLEX_COPY_ASSIGN (t) |= TYPE_HAS_COMPLEX_COPY_ASSIGN (type);
-	  TYPE_HAS_COMPLEX_COPY_CTOR (t) |= TYPE_HAS_COMPLEX_COPY_CTOR (type);
+	  TYPE_HAS_COMPLEX_COPY_ASSIGN (t)
+	    |= (TYPE_HAS_COMPLEX_COPY_ASSIGN (type)
+		|| !TYPE_HAS_COPY_ASSIGN (type));
+	  TYPE_HAS_COMPLEX_COPY_CTOR (t) |= (TYPE_HAS_COMPLEX_COPY_CTOR (type)
+					     || !TYPE_HAS_COPY_CTOR (type));
 	  TYPE_HAS_COMPLEX_MOVE_ASSIGN (t) |= TYPE_HAS_COMPLEX_MOVE_ASSIGN (type);
 	  TYPE_HAS_COMPLEX_MOVE_CTOR (t) |= TYPE_HAS_COMPLEX_MOVE_CTOR (type);
 	  TYPE_HAS_COMPLEX_DFLT (t) |= (!TYPE_HAS_DEFAULT_CONSTRUCTOR (type)
 					|| TYPE_HAS_COMPLEX_DFLT (type));
 	}
 
-      if (!TYPE_HAS_CONST_COPY_CTOR (type))
+      if (TYPE_HAS_COPY_CTOR (type)
+	  && !TYPE_HAS_CONST_COPY_CTOR (type))
 	*cant_have_const_ctor = 1;
 
-      if (!TYPE_HAS_CONST_COPY_ASSIGN (type))
+      if (TYPE_HAS_COPY_ASSIGN (type)
+	  && !TYPE_HAS_CONST_COPY_ASSIGN (type))
 	*no_const_asn_ref = 1;
     }
   if (DECL_INITIAL (field) != NULL_TREE)
diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c
index 3367a09..6d1ff10 100644
--- a/gcc/cp/tree.c
+++ b/gcc/cp/tree.c
@@ -479,7 +479,7 @@  build_target_expr_with_type (tree init, tree type)
 
   if (TREE_CODE (init) == TARGET_EXPR)
     return init;
-  else if (CLASS_TYPE_P (type) && !TYPE_HAS_TRIVIAL_COPY_CTOR (type)
+  else if (CLASS_TYPE_P (type) && type_has_nontrivial_copy_init (type)
 	   && !VOID_TYPE_P (TREE_TYPE (init))
 	   && TREE_CODE (init) != COND_EXPR
 	   && TREE_CODE (init) != CONSTRUCTOR
@@ -497,7 +497,8 @@  build_target_expr_with_type (tree init, tree type)
 
 /* Like the above function, but without the checking.  This function should
    only be used by code which is deliberately trying to subvert the type
-   system, such as call_builtin_trap.  */
+   system, such as call_builtin_trap.  Or build_over_call, to avoid
+   infinite recursion.  */
 
 tree
 force_target_expr (tree type, tree init)
@@ -2368,7 +2369,9 @@  type_has_nontrivial_default_init (const_tree t)
     return 0;
 }
 
-/* Returns true iff copying an object of type T is non-trivial.  */
+/* Returns true iff copying an object of type T (including via move
+   constructor) is non-trivial.  That is, T has no non-trivial copy
+   constructors and no non-trivial move constructors.  */
 
 bool
 type_has_nontrivial_copy_init (const_tree t)
@@ -2376,7 +2379,12 @@  type_has_nontrivial_copy_init (const_tree t)
   t = strip_array_types (CONST_CAST_TREE (t));
 
   if (CLASS_TYPE_P (t))
-    return TYPE_HAS_COMPLEX_COPY_CTOR (t);
+    {
+      gcc_assert (COMPLETE_TYPE_P (t));
+      return ((TYPE_HAS_COPY_CTOR (t)
+	       && TYPE_HAS_COMPLEX_COPY_CTOR (t))
+	      || TYPE_HAS_COMPLEX_MOVE_CTOR (t));
+    }
   else
     return 0;
 }
@@ -2390,8 +2398,12 @@  trivially_copyable_p (const_tree t)
   t = strip_array_types (CONST_CAST_TREE (t));
 
   if (CLASS_TYPE_P (t))
-    return (TYPE_HAS_TRIVIAL_COPY_CTOR (t)
-	    && TYPE_HAS_TRIVIAL_COPY_ASSIGN (t)
+    return ((!TYPE_HAS_COPY_CTOR (t)
+	     || !TYPE_HAS_COMPLEX_COPY_CTOR (t))
+	    && !TYPE_HAS_COMPLEX_MOVE_CTOR (t)
+	    && (!TYPE_HAS_COPY_ASSIGN (t)
+		|| !TYPE_HAS_COMPLEX_COPY_ASSIGN (t))
+	    && !TYPE_HAS_COMPLEX_MOVE_ASSIGN (t)
 	    && TYPE_HAS_TRIVIAL_DESTRUCTOR (t));
   else
     return scalarish_type_p (t);
diff --git a/gcc/cp/typeck2.c b/gcc/cp/typeck2.c
index c8dae54..f62bbb5 100644
--- a/gcc/cp/typeck2.c
+++ b/gcc/cp/typeck2.c
@@ -714,7 +714,7 @@  store_init_value (tree decl, tree init, int flags)
 
   if (MAYBE_CLASS_TYPE_P (type))
     {
-      gcc_assert (TYPE_HAS_TRIVIAL_COPY_CTOR (type)
+      gcc_assert (!type_has_nontrivial_copy_init (type)
 		  || TREE_CODE (init) == CONSTRUCTOR);
 
       if (TREE_CODE (init) == TREE_LIST)
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit-copy.C b/gcc/testsuite/g++.dg/cpp0x/implicit-copy.C
index ea680a8..861fe20 100644
--- a/gcc/testsuite/g++.dg/cpp0x/implicit-copy.C
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit-copy.C
@@ -3,13 +3,13 @@  struct S
 {
   S();
 private:
-  S(S const &&);
-  S & operator=(S const &&);
+  S(S const &&);		// { dg-error "" }
+  S & operator=(S const &&);	// { dg-error "" }
 };
 
 void f()
 {
   S a;
-  S b(a);
-  a = b;
+  S b(a);			// { dg-error "" }
+  a = b;			// { dg-error "" }
 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit3.C b/gcc/testsuite/g++.dg/cpp0x/implicit3.C
new file mode 100644
index 0000000..a43eca7
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit3.C
@@ -0,0 +1,56 @@ 
+// Basic runtime test for implicit move constructor
+// { dg-do run }
+// { dg-options -std=c++0x }
+
+int m;
+
+struct A
+{
+  A() = default;
+  A(A&&) { ++m; }
+  A& operator=(A&&) { ++m; return *this; }
+};
+
+struct B
+{
+  B() = default;
+  B(const B&);
+  B(B&&) { ++m; }
+  B& operator=(const B&);
+  B& operator=(B&&) { ++m; return *this; }
+};
+
+struct C
+{
+  C() = default;
+  C(C&);
+  C(C&&) { ++m; }
+  C& operator=(C&);
+  C& operator=(C&&) { ++m; return *this; }
+};
+
+struct D: public A, public B
+{
+  C c;
+  int i;
+};
+
+struct E: public A, public B
+{
+  C c;
+  int i;
+  E() = default;
+  E(E&&) = default;
+  E& operator=(E&&) = default;
+};
+
+int main()
+{
+  D d1;
+  D d2 (static_cast<D&&>(d1));
+  d1 = static_cast<D&&>(d2);
+  E e1;
+  E e2 (static_cast<E&&>(e1));
+  e1 = static_cast<E&&>(e2);
+  return m != 12;
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit4.C b/gcc/testsuite/g++.dg/cpp0x/implicit4.C
new file mode 100644
index 0000000..75606a3
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit4.C
@@ -0,0 +1,20 @@ 
+// Test that a base with only a move constructor causes the implicit copy
+// constructor to be deleted.
+// { dg-options "-std=c++0x" }
+
+struct A
+{
+  A();				// { dg-message "A::A" }
+  A(A&&);			// { dg-message "A::A" }
+};
+
+struct B: A			// { dg-error "implicit|no match" }
+{
+};
+
+int main()
+{
+  B b1;
+  B b2(b1);		    // { dg-error "deleted function .B::B.const" }
+  B b3(static_cast<B&&>(b1));
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/implicit5.C b/gcc/testsuite/g++.dg/cpp0x/implicit5.C
new file mode 100644
index 0000000..f25c085
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp0x/implicit5.C
@@ -0,0 +1,19 @@ 
+// Test that the default B copy constructor calls the A member template
+// constructor.
+// { dg-options -std=c++0x }
+
+struct A
+{
+  A() = default;
+  A(A&&) = default;
+  template <class T>
+  A(const T& t) { t.i; }	// { dg-error "no member" }
+};
+
+struct B: A { };
+
+int main()
+{
+  B b;
+  B b2(b);
+}
diff --git a/gcc/testsuite/g++.dg/cpp0x/not_special.C b/gcc/testsuite/g++.dg/cpp0x/not_special.C
index f94b82a..6d73bd0 100644
--- a/gcc/testsuite/g++.dg/cpp0x/not_special.C
+++ b/gcc/testsuite/g++.dg/cpp0x/not_special.C
@@ -1,11 +1,9 @@ 
 // I, Howard Hinnant, hereby place this code in the public domain.
 
-// Test that move constructor and move assignement are not special.
-//   That is, their presence should not inhibit compiler generated
-//   copy ctor or assignment.  Rather they should overload with the
-//   compiler generated special members.
+// Test that move constructor and move assignement are special.
+//   That is, their presence should inhibit compiler generated
+//   copy ctor or assignment.
 
-// { dg-do run }
 // { dg-options "-std=c++0x" }
 
 #include <assert.h>
@@ -30,8 +28,8 @@  struct derived
     : base
 {
     derived() {}
-    derived(derived&&) {}
-    derived& operator=(derived&&) {return *this;}
+    derived(derived&&) {}			  // { dg-error "argument 1" }
+    derived& operator=(derived&&) {return *this;} // { dg-error "argument 1" }
 };
 
 int test1()
@@ -39,11 +37,11 @@  int test1()
     derived d;
     derived d2(static_cast<derived&&>(d));  // should not call base::(const base&)
     assert(copy == 0);
-    derived d3(d);                          // should     call base::(const base&)
+    derived d3(d);		// { dg-error "lvalue" }
     assert(copy == 1);
     d2 = static_cast<derived&&>(d);         // should not call base::operator=
     assert(assign == 0);
-    d3 = d;                                 // should     call base::operator=
+    d3 = d;			// { dg-error "lvalue" }
     assert(assign == 1);
     return 0;
 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
index beb8acb..2765b5f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv-trivial-bug.C
@@ -1,4 +1,3 @@ 
-// { dg-do "run" }
 // { dg-options "-std=c++0x" }
 // PR c++/33235
 #include <cassert>
@@ -9,19 +8,19 @@  int move_assign = 0;
 struct base2
 {
     base2() {}
-    base2(base2&&) {++move_construct;}
-    base2& operator=(base2&&) {++move_assign; return *this;}
+    base2(base2&&) {++move_construct;} // { dg-error "argument 1" }
+    base2& operator=(base2&&) {++move_assign; return *this;} // { dg-error "argument 1" }
 };
 
 int test2()
 {
     base2 b;
-    base2 b2(b);
+    base2 b2(b);		// { dg-error "lvalue" }
     assert(move_construct == 0);
     base2 b3(static_cast<base2&&>(b));
     base2 b4 = static_cast<base2&&>(b);
     assert(move_construct == 2);
-    b = b2;
+    b = b2;			// { dg-error "lvalue" }
     assert(move_assign == 0);
     b = static_cast<base2&&>(b2);
     assert(move_assign == 1);
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv1n.C b/gcc/testsuite/g++.dg/cpp0x/rv1n.C
index b7b9b6e..5224d3e 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv1n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv1n.C
@@ -20,7 +20,7 @@  struct eight {char x[8];};
 struct A
 {
     A();
-    A(const volatile A&&);
+    A(const volatile A&&);	// { dg-error "argument 1" }
 };
 
                A    source();
@@ -35,9 +35,9 @@  one   sink_1_1(               A&);  // { dg-error "" }
 int test1_1()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a;	// { dg-error "cannot bind" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a;	// { dg-error "cannot bind" }
     sink_1_1(ca);           // { dg-error "invalid initialization" }
     sink_1_1(va);           // { dg-error "invalid initialization" }
     sink_1_1(cva);          // { dg-error "invalid initialization" }
@@ -53,9 +53,9 @@  two   sink_1_2(const          A&);  // { dg-error "" }
 int test1_2()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_1_2(va);           // { dg-error "invalid initialization" }
     sink_1_2(cva);          // { dg-error "invalid initialization" }
     sink_1_2(v_source());   // { dg-error "invalid initialization" }
@@ -68,9 +68,9 @@  three sink_1_3(volatile       A&);  // { dg-error "" }
 int test1_3()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_1_3(ca);           // { dg-error "invalid initialization" }
     sink_1_3(cva);          // { dg-error "invalid initialization" }
     sink_1_3(source());     // { dg-error "invalid initialization" }
@@ -85,9 +85,9 @@  four  sink_1_4(const volatile A&);  // { dg-error "" }
 int test1_4()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_1_4(source());     // { dg-error "invalid initialization" }
     sink_1_4(c_source());   // { dg-error "invalid initialization" }
     sink_1_4(v_source());   // { dg-error "invalid initialization" }
@@ -100,9 +100,9 @@  five  sink_1_5(               A&&);  // { dg-error "" }
 int test1_5()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_1_5(a);		// { dg-error "lvalue" }
     sink_1_5(ca);           // { dg-error "invalid initialization" }
     sink_1_5(va);           // { dg-error "invalid initialization" }
@@ -118,9 +118,9 @@  six   sink_1_6(const          A&&);  // { dg-error "" }
 int test1_6()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_1_6(a);		// { dg-error "lvalue" }
     sink_1_6(ca);		// { dg-error "lvalue" }
     sink_1_6(va);           // { dg-error "invalid initialization" }
@@ -135,9 +135,9 @@  seven sink_1_7(volatile       A&&);  // { dg-error "" }
 int test1_7()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_1_7(a);	    // { dg-error "lvalue" }
     sink_1_7(ca);           // { dg-error "invalid initialization" }
     sink_1_7(va);	    // { dg-error "lvalue" }
@@ -152,9 +152,9 @@  eight sink_1_8(const volatile A&&); // { dg-error "" }
 int test1_8()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_1_8(a);		// { dg-error "lvalue" }
     sink_1_8(ca);		// { dg-error "lvalue" }
     sink_1_8(va);		// { dg-error "lvalue" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv1p.C b/gcc/testsuite/g++.dg/cpp0x/rv1p.C
index b2770ef..4990165 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv1p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv1p.C
@@ -35,9 +35,9 @@  one   sink_1_1(               A&);
 int test1_1()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_1_1(a))           == 1> t1;
     return 0;
 }
@@ -47,9 +47,9 @@  two   sink_1_2(const          A&);
 int test1_2()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_1_2(a))           == 2> t1;
     sa<sizeof(sink_1_2(ca))          == 2> t2;
     sa<sizeof(sink_1_2(source()))    == 2> t5;
@@ -62,9 +62,9 @@  three sink_1_3(volatile       A&);
 int test1_3()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_1_3(a))           == 3> t1;
     sa<sizeof(sink_1_3(va))          == 3> t3;
     return 0;
@@ -75,9 +75,9 @@  four  sink_1_4(const volatile A&);
 int test1_4()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_1_4(a))           == 4> t1;
     sa<sizeof(sink_1_4(ca))          == 4> t2;
     sa<sizeof(sink_1_4(va))          == 4> t3;
@@ -90,9 +90,9 @@  five  sink_1_5(               A&&);
 int test1_5()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_1_5(source()))    == 5> t5;
     return 0;
 }
@@ -102,9 +102,9 @@  six   sink_1_6(const          A&&);
 int test1_6()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_1_6(source()))    == 6> t5;
     sa<sizeof(sink_1_6(c_source()))  == 6> t6;
     return 0;
@@ -115,9 +115,9 @@  seven sink_1_7(volatile       A&&);
 int test1_7()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_1_7(source()))    == 7> t5;
     sa<sizeof(sink_1_7(v_source()))  == 7> t7;
     return 0;
@@ -128,9 +128,9 @@  eight sink_1_8(const volatile A&&);
 int test1_8()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_1_8(source()))    == 8> t5;
     sa<sizeof(sink_1_8(c_source()))  == 8> t6;
     sa<sizeof(sink_1_8(v_source()))  == 8> t7;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv2n.C b/gcc/testsuite/g++.dg/cpp0x/rv2n.C
index 5eee82c..a5c5177 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv2n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv2n.C
@@ -20,7 +20,7 @@  struct eight {char x[8];};
 struct A
 {
     A();
-    A(const volatile A&&);
+    A(const volatile A&&);	// { dg-error "argument 1" }
 };
 
                A    source();
@@ -36,9 +36,9 @@  two   sink_2_12(const          A&);  // { dg-message "note|argument" }
 int test2_12()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_12(va);           // { dg-error "no match" }
     sink_2_12(cva);          // { dg-error "no match" }
     sink_2_12(v_source());   // { dg-error "no match" }
@@ -52,9 +52,9 @@  three sink_2_13(volatile       A&);  // { dg-message "note|argument" }
 int test2_13()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_13(ca);           // { dg-error "no match" }
     sink_2_13(cva);          // { dg-error "no match" }
     sink_2_13(source());     // { dg-error "no match" }
@@ -70,9 +70,9 @@  four  sink_2_14(const volatile A&);  // { dg-message "note|argument" }
 int test2_14()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_14(source());     // { dg-error "no match" }
     sink_2_14(c_source());   // { dg-error "no match" }
     sink_2_14(v_source());   // { dg-error "no match" }
@@ -86,9 +86,9 @@  five  sink_2_15(               A&&);  // { dg-message "note|argument" }
 int test2_15()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
    sink_2_15(ca);           // { dg-error "no match" }
    sink_2_15(va);           // { dg-error "no match" }
    sink_2_15(cva);          // { dg-error "no match" }
@@ -104,9 +104,9 @@  six   sink_2_16(const          A&&);  // { dg-message "note|argument" }
 int test2_16()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_16(ca);	     // { dg-error "lvalue" }
     sink_2_16(va);           // { dg-error "no match" }
     sink_2_16(cva);          // { dg-error "no match" }
@@ -121,9 +121,9 @@  seven sink_2_17(volatile       A&&);  // { dg-message "note|argument" }
 int test2_17()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_17(ca);           // { dg-error "no match" }
     sink_2_17(va);           // { dg-error "lvalue" }
     sink_2_17(cva);          // { dg-error "no match" }
@@ -138,9 +138,9 @@  eight sink_2_18(const volatile A&&); // { dg-error "argument" }
 int test2_18()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_18(ca);		// { dg-error "lvalue" }
     sink_2_18(va);		// { dg-error "lvalue" }
     sink_2_18(cva);		// { dg-error "lvalue" }
@@ -152,9 +152,9 @@  three sink_2_23(volatile       A&);  // { dg-message "note|argument" }
 int test2_23()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_23(a);            // { dg-error "ambiguous" }
     sink_2_23(cva);          // { dg-error "no match" }
     sink_2_23(v_source());   // { dg-error "no match" }
@@ -168,9 +168,9 @@  four  sink_2_24(const volatile A&);  // { dg-message "note|argument" }
 int test2_24()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_24(v_source());   // { dg-error "no match" }
     sink_2_24(cv_source());  // { dg-error "no match" }
     return 0;
@@ -182,9 +182,9 @@  four  sink_2_34(const volatile A&);  // { dg-message "note|argument" }
 int test2_34()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_34(source());     // { dg-error "no match" }
     sink_2_34(c_source());   // { dg-error "no match" }
     sink_2_34(v_source());   // { dg-error "no match" }
@@ -198,9 +198,9 @@  five  sink_2_25(               A&&);  // { dg-message "note|argument" }
 int test2_25()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
    sink_2_25(va);           // { dg-error "no match" }
    sink_2_25(cva);          // { dg-error "no match" }
    sink_2_25(v_source());   // { dg-error "no match" }
@@ -214,9 +214,9 @@  six   sink_2_26(const          A&&);  // { dg-message "note|argument" }
 int test2_26()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_26(va);           // { dg-error "no match" }
     sink_2_26(cva);          // { dg-error "no match" }
     sink_2_26(v_source());   // { dg-error "no match" }
@@ -230,9 +230,9 @@  seven sink_2_27(volatile       A&&);  // { dg-message "note|argument" }
 int test2_27()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_27(va);	     // { dg-error "lvalue" }
     sink_2_27(cva);          // { dg-error "no match" }
     sink_2_27(cv_source());  // { dg-error "no match" }
@@ -245,9 +245,9 @@  eight sink_2_28(const volatile A&&); // { dg-error "argument" }
 int test2_28()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_28(va);		// { dg-error "lvalue" }
     sink_2_28(cva);		// { dg-error "lvalue" }
 }
@@ -258,9 +258,9 @@  five  sink_2_35(               A&&);  // { dg-message "note|argument" }
 int test2_35()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_35(ca);           // { dg-error "no match" }
     sink_2_35(cva);          // { dg-error "no match" }
     sink_2_35(c_source());   // { dg-error "no match" }
@@ -275,9 +275,9 @@  six   sink_2_36(const          A&&);  // { dg-message "note|argument" }
 int test2_36()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_36(ca);		// { dg-error "lvalue" }
     sink_2_36(cva);          // { dg-error "no match" }
     sink_2_36(v_source());   // { dg-error "no match" }
@@ -291,9 +291,9 @@  seven sink_2_37(volatile       A&&);  // { dg-message "note|argument" }
 int test2_37()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_37(ca);           // { dg-error "no match" }
     sink_2_37(cva);          // { dg-error "no match" }
     sink_2_37(c_source());   // { dg-error "no match" }
@@ -307,9 +307,9 @@  eight sink_2_38(const volatile A&&); // { dg-error "argument" }
 int test2_38()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_38(ca);		// { dg-error "lvalue" }
     sink_2_38(cva);		// { dg-error "lvalue" }
 }
@@ -320,9 +320,9 @@  five  sink_2_45(               A&&);  // { dg-message "note|argument" }
 int test2_45()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_45(c_source());   // { dg-error "no match" }
     sink_2_45(v_source());   // { dg-error "no match" }
     sink_2_45(cv_source());  // { dg-error "no match" }
@@ -335,9 +335,9 @@  six   sink_2_46(const          A&&);  // { dg-message "note|argument" }
 int test2_46()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_46(v_source());   // { dg-error "no match" }
     sink_2_46(cv_source());  // { dg-error "no match" }
     return 0;
@@ -349,9 +349,9 @@  seven sink_2_47(volatile       A&&);  // { dg-message "note|argument" }
 int test2_47()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_47(c_source());   // { dg-error "no match" }
     sink_2_47(cv_source());  // { dg-error "no match" }
     return 0;
@@ -363,9 +363,9 @@  six   sink_2_56(const          A&&);  // { dg-message "note|argument" }
 int test2_56()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_56(a);		// { dg-error "lvalue" }
     sink_2_56(ca);		// { dg-error "lvalue" }
     sink_2_56(va);           // { dg-error "no match" }
@@ -381,9 +381,9 @@  seven sink_2_57(volatile       A&&);  // { dg-message "note|argument" }
 int test2_57()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_57(a);		// { dg-error "lvalue" }
     sink_2_57(va);		// { dg-error "lvalue" }
     sink_2_57(ca);           // { dg-error "no match" }
@@ -399,9 +399,9 @@  eight sink_2_58(const volatile A&&); // { dg-error "argument" }
 int test2_58()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_58(a);		// { dg-error "lvalue" }
     sink_2_58(ca);		// { dg-error "lvalue" }
     sink_2_58(va);		// { dg-error "lvalue" }
@@ -414,9 +414,9 @@  seven sink_2_67(volatile       A&&);  // { dg-message "note|argument" }
 int test2_67()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_67(a);            // { dg-error "ambiguous" }
     sink_2_67(ca);	     // { dg-error "lvalue" }
     sink_2_67(va);	     // { dg-error "lvalue" }
@@ -432,9 +432,9 @@  eight sink_2_68(const volatile A&&); // { dg-error "argument" }
 int test2_68()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_68(a);		// { dg-error "lvalue" }
     sink_2_68(ca);		// { dg-error "lvalue" }
     sink_2_68(va);		// { dg-error "lvalue" }
@@ -447,9 +447,9 @@  eight sink_2_78(const volatile A&&); // { dg-error "argument" }
 int test2_78()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_2_78(a);		// { dg-error "lvalue" }
     sink_2_78(ca);		// { dg-error "lvalue" }
     sink_2_78(va);		// { dg-error "lvalue" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv2p.C b/gcc/testsuite/g++.dg/cpp0x/rv2p.C
index 61c4fb0..4ed9238 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv2p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv2p.C
@@ -36,9 +36,9 @@  two   sink_2_12(const          A&);
 int test2_12()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_12(a))           == 1> t1;
     sa<sizeof(sink_2_12(ca))          == 2> t2;
     sa<sizeof(sink_2_12(source()))    == 2> t5;
@@ -52,9 +52,9 @@  three sink_2_13(volatile       A&);
 int test2_13()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_13(a))           == 1> t1;
     sa<sizeof(sink_2_13(va))          == 3> t3;
     return 0;
@@ -66,9 +66,9 @@  four  sink_2_14(const volatile A&);
 int test2_14()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_14(a))           == 1> t1;
     sa<sizeof(sink_2_14(ca))          == 4> t2;
     sa<sizeof(sink_2_14(va))          == 4> t3;
@@ -82,9 +82,9 @@  five  sink_2_15(               A&&);
 int test2_15()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_15(a))           == 1> t1;
     sa<sizeof(sink_2_15(source()))    == 5> t5;
     return 0;
@@ -96,9 +96,9 @@  six   sink_2_16(const          A&&);
 int test2_16()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_16(a))           == 1> t1;
     sa<sizeof(sink_2_16(source()))    == 6> t5;
     sa<sizeof(sink_2_16(c_source()))  == 6> t6;
@@ -111,9 +111,9 @@  seven sink_2_17(volatile       A&&);
 int test2_17()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_17(a))           == 1> t1;
     sa<sizeof(sink_2_17(source()))    == 7> t5;
     sa<sizeof(sink_2_17(v_source()))  == 7> t7;
@@ -126,9 +126,9 @@  eight sink_2_18(const volatile A&&);
 int test2_18()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_18(a))           == 1> t1;
     sa<sizeof(sink_2_18(source()))    == 8> t5;
     sa<sizeof(sink_2_18(c_source()))  == 8> t6;
@@ -143,9 +143,9 @@  three sink_2_23(volatile       A&);
 int test2_23()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_23(ca))          == 2> t2;
     sa<sizeof(sink_2_23(va))          == 3> t3;
     sa<sizeof(sink_2_23(source()))    == 2> t5;
@@ -159,9 +159,9 @@  four  sink_2_24(const volatile A&);
 int test2_24()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_24(a))           == 2> t1;
     sa<sizeof(sink_2_24(ca))          == 2> t2;
     sa<sizeof(sink_2_24(va))          == 4> t3;
@@ -179,9 +179,9 @@  five  sink_2_25(               A&&);
 int test2_25()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_25(a))           == 2> t1;
     sa<sizeof(sink_2_25(ca))          == 2> t2;
     sa<sizeof(sink_2_25(source()))    == 5> t5;
@@ -195,9 +195,9 @@  six   sink_2_26(const          A&&);
 int test2_26()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_26(a))           == 2> t1;
     sa<sizeof(sink_2_26(ca))          == 2> t2;
     sa<sizeof(sink_2_26(source()))    == 6> t5;
@@ -211,9 +211,9 @@  seven sink_2_27(volatile       A&&);
 int test2_27()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_27(a))           == 2> t1;
     sa<sizeof(sink_2_27(ca))          == 2> t2;
     sa<sizeof(sink_2_27(source()))    == 7> t5;
@@ -228,9 +228,9 @@  eight sink_2_28(const volatile A&&);
 int test2_28()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_28(a))           == 2> t1;
     sa<sizeof(sink_2_28(ca))          == 2> t2;
     sa<sizeof(sink_2_28(source()))    == 8> t5;
@@ -246,9 +246,9 @@  four  sink_2_34(const volatile A&);
 int test2_34()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_34(a))           == 3> t1;
     sa<sizeof(sink_2_34(ca))          == 4> t2;
     sa<sizeof(sink_2_34(va))          == 3> t3;
@@ -266,9 +266,9 @@  five  sink_2_35(               A&&);
 int test2_35()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_35(a))           == 3> t1;
     sa<sizeof(sink_2_35(va))          == 3> t3;
     sa<sizeof(sink_2_35(source()))    == 5> t5;
@@ -281,9 +281,9 @@  six   sink_2_36(const          A&&);
 int test2_36()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_36(a))           == 3> t1;
     sa<sizeof(sink_2_36(va))          == 3> t3;
     sa<sizeof(sink_2_36(source()))    == 6> t5;
@@ -297,9 +297,9 @@  seven sink_2_37(volatile       A&&);
 int test2_37()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_37(a))           == 3> t1;
     sa<sizeof(sink_2_37(va))          == 3> t3;
     sa<sizeof(sink_2_37(source()))    == 7> t5;
@@ -313,9 +313,9 @@  eight sink_2_38(const volatile A&&);
 int test2_38()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_38(a))           == 3> t1;
     sa<sizeof(sink_2_38(va))          == 3> t3;
     sa<sizeof(sink_2_38(source()))    == 8> t5;
@@ -331,9 +331,9 @@  five  sink_2_45(               A&&);
 int test2_45()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_45(a))           == 4> t1;
     sa<sizeof(sink_2_45(ca))          == 4> t2;
     sa<sizeof(sink_2_45(va))          == 4> t3;
@@ -351,9 +351,9 @@  six   sink_2_46(const          A&&);
 int test2_46()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_46(a))           == 4> t1;
     sa<sizeof(sink_2_46(ca))          == 4> t2;
     sa<sizeof(sink_2_46(va))          == 4> t3;
@@ -371,9 +371,9 @@  seven sink_2_47(volatile       A&&);
 int test2_47()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_47(a))           == 4> t1;
     sa<sizeof(sink_2_47(ca))          == 4> t2;
     sa<sizeof(sink_2_47(va))          == 4> t3;
@@ -391,9 +391,9 @@  eight sink_2_48(const volatile A&&);
 int test2_48()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_48(a))           == 4> t1;
     sa<sizeof(sink_2_48(ca))          == 4> t2;
     sa<sizeof(sink_2_48(va))          == 4> t3;
@@ -411,9 +411,9 @@  six   sink_2_56(const          A&&);
 int test2_56()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_56(source()))    == 5> t5;
     sa<sizeof(sink_2_56(c_source()))  == 6> t6;
     return 0;
@@ -425,9 +425,9 @@  seven sink_2_57(volatile       A&&);
 int test2_57()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_57(source()))    == 5> t5;
     sa<sizeof(sink_2_57(v_source()))  == 7> t7;
     return 0;
@@ -439,9 +439,9 @@  eight sink_2_58(const volatile A&&);
 int test2_58()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_58(source()))    == 5> t5;
     sa<sizeof(sink_2_58(c_source()))  == 8> t6;
     sa<sizeof(sink_2_58(v_source()))  == 8> t7;
@@ -455,9 +455,9 @@  seven sink_2_67(volatile       A&&);
 int test2_67()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_67(c_source()))  == 6> t6;
     sa<sizeof(sink_2_67(v_source()))  == 7> t7;
     return 0;
@@ -469,9 +469,9 @@  eight sink_2_68(const volatile A&&);
 int test2_68()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_68(source()))    == 6> t5;
     sa<sizeof(sink_2_68(c_source()))  == 6> t6;
     sa<sizeof(sink_2_68(v_source()))  == 8> t7;
@@ -485,9 +485,9 @@  eight sink_2_78(const volatile A&&);
 int test2_78()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_2_78(source()))    == 7> t5;
     sa<sizeof(sink_2_78(c_source()))  == 8> t6;
     sa<sizeof(sink_2_78(v_source()))  == 7> t7;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv3n.C b/gcc/testsuite/g++.dg/cpp0x/rv3n.C
index 0c208ab..cacbdb3 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv3n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv3n.C
@@ -20,7 +20,7 @@  struct eight {char x[8];};
 struct A
 {
     A();
-    A(const volatile A&&);
+    A(const volatile A&&);	// { dg-error "argument 1" }
 };
 
                A    source();
@@ -37,9 +37,9 @@  three sink_3_123(volatile       A&);  // { dg-message "note" }
 int test3_123()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_123(cva);          // { dg-error "no match" }
     sink_3_123(v_source());   // { dg-error "no match" }
     sink_3_123(cv_source());  // { dg-error "no match" }
@@ -57,9 +57,9 @@  four  sink_3_124(const volatile A&);  // { dg-message "note" }
 int test3_124()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_124(v_source());   // { dg-error "no match" }
     sink_3_124(cv_source());  // { dg-error "no match" }
     return 0;
@@ -68,9 +68,9 @@  int test3_124()
 int test3_125()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_125(va);           // { dg-error "no match" }
     sink_3_125(cva);          // { dg-error "no match" }
     sink_3_125(v_source());   // { dg-error "no match" }
@@ -85,9 +85,9 @@  six   sink_3_126(const          A&&);  // { dg-message "note" }
 int test3_126()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_126(va);           // { dg-error "no match" }
     sink_3_126(cva);          // { dg-error "no match" }
     sink_3_126(v_source());   // { dg-error "no match" }
@@ -102,9 +102,9 @@  seven sink_3_127(volatile       A&&);  // { dg-message "" }
 int test3_127()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_127(va);		// { dg-error "lvalue" }
     sink_3_127(cva);          // { dg-error "no match" }
     sink_3_127(cv_source());  // { dg-error "no match" }
@@ -118,9 +118,9 @@  eight sink_3_128(const volatile A&&); // { dg-message "" }
 int test3_128()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
 
     sink_3_128(va);		// { dg-error "lvalue" }
     sink_3_128(cva);		// { dg-error "lvalue" }
@@ -133,9 +133,9 @@  four  sink_3_134(const volatile A&);  // { dg-message "note" }
 int test3_134()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_134(source());     // { dg-error "no match" }
     sink_3_134(c_source());   // { dg-error "no match" }
     sink_3_134(v_source());   // { dg-error "no match" }
@@ -150,9 +150,9 @@  five  sink_3_135(               A&&);  // { dg-message "note" }
 int test3_135()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_135(ca);           // { dg-error "no match" }
     sink_3_135(cva);          // { dg-error "no match" }
     sink_3_135(c_source());   // { dg-error "no match" }
@@ -168,9 +168,9 @@  six   sink_3_136(const          A&&);  // { dg-message "" }
 int test3_136()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_136(ca);		// { dg-error "lvalue" }
     sink_3_136(cva);          // { dg-error "no match" }
     sink_3_136(v_source());   // { dg-error "no match" }
@@ -185,9 +185,9 @@  seven sink_3_137(volatile       A&&);  // { dg-message "note" }
 int test3_137()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_137(ca);           // { dg-error "no match" }
     sink_3_137(cva);          // { dg-error "no match" }
     sink_3_137(c_source());   // { dg-error "no match" }
@@ -202,9 +202,9 @@  eight sink_3_138(const volatile A&&); // { dg-message "" }
 int test3_138()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_138(ca);		// { dg-error "lvalue" }
     sink_3_138(cva);		// { dg-error "lvalue" }
     return 0;
@@ -217,9 +217,9 @@  five  sink_3_145(               A&&);  // { dg-message "note" }
 int test3_145()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_145(c_source());   // { dg-error "no match" }
     sink_3_145(v_source());   // { dg-error "no match" }
     sink_3_145(cv_source());  // { dg-error "no match" }
@@ -233,9 +233,9 @@  six   sink_3_146(const          A&&);  // { dg-message "note" }
 int test3_146()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_146(v_source());   // { dg-error "no match" }
     sink_3_146(cv_source());  // { dg-error "no match" }
     return 0;
@@ -248,9 +248,9 @@  seven sink_3_147(volatile       A&&);  // { dg-message "note" }
 int test3_147()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_147(c_source());   // { dg-error "no match" }
     sink_3_147(cv_source());  // { dg-error "no match" }
     return 0;
@@ -263,9 +263,9 @@  six   sink_3_156(const          A&&);  // { dg-message "" }
 int test3_156()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_156(ca);		// { dg-error "lvalue" }
     sink_3_156(va);           // { dg-error "no match" }
     sink_3_156(cva);          // { dg-error "no match" }
@@ -281,9 +281,9 @@  seven sink_3_157(volatile       A&&);  // { dg-message "" }
 int test3_157()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_157(ca);           // { dg-error "no match" }
     sink_3_157(va);	      // { dg-error "lvalue" }
     sink_3_157(cva);          // { dg-error "no match" }
@@ -299,9 +299,9 @@  eight sink_3_158(const volatile A&&); // { dg-message "" }
 int test3_158()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_158(ca);		// { dg-error "lvalue" }
     sink_3_158(va);		// { dg-error "lvalue" }
     sink_3_158(cva);		// { dg-error "lvalue" }
@@ -315,9 +315,9 @@  seven sink_3_167(volatile       A&&);  // { dg-message "" }
 int test3_167()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_167(ca);		// { dg-error "lvalue" }
     sink_3_167(va);		// { dg-error "lvalue" }
     sink_3_167(cva);          // { dg-error "no match" }
@@ -333,9 +333,9 @@  eight sink_3_168(const volatile A&&); // { dg-message "" }
 int test3_168()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_168(ca);		// { dg-error "lvalue" }
     sink_3_168(va);		// { dg-error "lvalue" }
     sink_3_168(cva);		// { dg-error "lvalue" }
@@ -349,9 +349,9 @@  eight sink_3_178(const volatile A&&); // { dg-message "" }
 int test3_178()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_178(ca);		// { dg-error "lvalue" }
     sink_3_178(va);		// { dg-error "lvalue" }
     sink_3_178(cva);		// { dg-error "lvalue" }
@@ -365,9 +365,9 @@  four  sink_3_234(const volatile A&);  // { dg-message "note" }
 int test3_234()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_234(a);            // { dg-error "ambiguous" }
     sink_3_234(v_source());   // { dg-error "no match" }
     sink_3_234(cv_source());  // { dg-error "no match" }
@@ -381,9 +381,9 @@  five  sink_3_235(               A&&);  // { dg-message "note" }
 int test3_235()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_235(a);            // { dg-error "ambiguous" }
     sink_3_235(cva);          // { dg-error "no match" }
     sink_3_235(v_source());   // { dg-error "no match" }
@@ -398,9 +398,9 @@  six   sink_3_236(const          A&&);  // { dg-message "note" }
 int test3_236()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_236(a);            // { dg-error "ambiguous" }
     sink_3_236(cva);          // { dg-error "no match" }
     sink_3_236(v_source());   // { dg-error "no match" }
@@ -415,9 +415,9 @@  seven sink_3_237(volatile       A&&);  // { dg-message "note" }
 int test3_237()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_237(a);            // { dg-error "ambiguous" }
     sink_3_237(cva);          // { dg-error "no match" }
     sink_3_237(cv_source());  // { dg-error "no match" }
@@ -431,9 +431,9 @@  eight sink_3_238(const volatile A&&);  // { dg-message "" }
 int test3_238()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_238(a);  // { dg-error "ambiguous" }
     sink_3_238(cva); // { dg-error "lvalue" }
     return 0;
@@ -446,9 +446,9 @@  five  sink_3_245(               A&&);  // { dg-message "note" }
 int test3_245()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_245(v_source());   // { dg-error "no match" }
     sink_3_245(cv_source());  // { dg-error "no match" }
     return 0;
@@ -461,9 +461,9 @@  six   sink_3_246(const          A&&);  // { dg-message "note" }
 int test3_246()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_246(v_source());   // { dg-error "no match" }
     sink_3_246(cv_source());  // { dg-error "no match" }
     return 0;
@@ -476,9 +476,9 @@  seven sink_3_247(volatile       A&&);  // { dg-message "note" }
 int test3_247()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_247(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -490,9 +490,9 @@  six   sink_3_256(const          A&&);  // { dg-message "note" }
 int test3_256()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_256(va);           // { dg-error "no match" }
     sink_3_256(cva);          // { dg-error "no match" }
     sink_3_256(v_source());   // { dg-error "no match" }
@@ -507,9 +507,9 @@  seven sink_3_257(volatile       A&&);  // { dg-message "" }
 int test3_257()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_257(va);		// { dg-error "lvalue" }
     sink_3_257(cva);          // { dg-error "no match" }
     sink_3_257(cv_source());  // { dg-error "no match" }
@@ -523,9 +523,9 @@  eight sink_3_258(const volatile A&&); // { dg-message "" }
 int test3_258()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_258(va);		// { dg-error "lvalue" }
     sink_3_258(cva);		// { dg-error "lvalue" }
     return 0;
@@ -538,9 +538,9 @@  seven sink_3_267(volatile       A&&);  // { dg-message "" }
 int test3_267()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_267(va);		// { dg-error "lvalue" }
     sink_3_267(cva);          // { dg-error "no match" }
     sink_3_267(source());     // { dg-error "ambiguous" }
@@ -555,9 +555,9 @@  eight sink_3_268(const volatile A&&); // { dg-message "" }
 int test3_268()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_268(va);		// { dg-error "lvalue" }
     sink_3_268(cva);		// { dg-error "lvalue" }
     return 0;
@@ -570,9 +570,9 @@  eight sink_3_278(const volatile A&&); // { dg-message "" }
 int test3_278()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_278(va);		// { dg-error "lvalue" }
     sink_3_278(cva);		// { dg-error "lvalue" }
     return 0;
@@ -585,9 +585,9 @@  five  sink_3_345(               A&&);  // { dg-message "note" }
 int test3_345()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_345(c_source());   // { dg-error "no match" }
     sink_3_345(v_source());   // { dg-error "no match" }
     sink_3_345(cv_source());  // { dg-error "no match" }
@@ -601,9 +601,9 @@  six   sink_3_346(const          A&&);  // { dg-message "note" }
 int test3_346()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_346(v_source());   // { dg-error "no match" }
     sink_3_346(cv_source());  // { dg-error "no match" }
     return 0;
@@ -616,9 +616,9 @@  seven sink_3_347(volatile       A&&);  // { dg-message "note" }
 int test3_347()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_347(c_source());   // { dg-error "no match" }
     sink_3_347(cv_source());  // { dg-error "no match" }
     return 0;
@@ -631,9 +631,9 @@  six   sink_3_356(const          A&&);  // { dg-message "" }
 int test3_356()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_356(ca);		// { dg-error "lvalue" }
     sink_3_356(cva);          // { dg-error "no match" }
     sink_3_356(v_source());   // { dg-error "no match" }
@@ -648,9 +648,9 @@  seven sink_3_357(volatile       A&&);  // { dg-message "note" }
 int test3_357()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_357(ca);           // { dg-error "no match" }
     sink_3_357(cva);          // { dg-error "no match" }
     sink_3_357(c_source());   // { dg-error "no match" }
@@ -665,9 +665,9 @@  eight sink_3_358(const volatile A&&); // { dg-message "" }
 int test3_358()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_358(ca);		// { dg-error "lvalue" }
     sink_3_358(cva);		// { dg-error "lvalue" }
     return 0;
@@ -680,9 +680,9 @@  seven sink_3_367(volatile       A&&);  // { dg-message "note" }
 int test3_367()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_367(ca);		// { dg-error "lvalue" }
     sink_3_367(cva);          // { dg-error "no match" }
     sink_3_367(source());     // { dg-error "ambiguous" }
@@ -697,9 +697,9 @@  eight sink_3_368(const volatile A&&); // { dg-message "" }
 int test3_368()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_368(ca);		// { dg-error "lvalue" }
     sink_3_368(cva);		// { dg-error "lvalue" }
     return 0;
@@ -712,9 +712,9 @@  eight sink_3_378(const volatile A&&); // { dg-message "" }
 int test3_378()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_378(ca);		// { dg-error "lvalue" }
     sink_3_378(cva);		// { dg-error "lvalue" }
     return 0;
@@ -727,9 +727,9 @@  six   sink_3_456(const          A&&);  // { dg-message "note" }
 int test3_456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_456(v_source());   // { dg-error "no match" }
     sink_3_456(cv_source());  // { dg-error "no match" }
     return 0;
@@ -742,9 +742,9 @@  seven sink_3_457(volatile       A&&);  // { dg-message "note" }
 int test3_457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_457(c_source());   // { dg-error "no match" }
     sink_3_457(cv_source());  // { dg-error "no match" }
     return 0;
@@ -757,9 +757,9 @@  seven sink_3_467(volatile       A&&);  // { dg-message "note" }
 int test3_467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_467(source());     // { dg-error "ambiguous" }
     sink_3_467(cv_source());  // { dg-error "no match" }
     return 0;
@@ -772,9 +772,9 @@  seven sink_3_567(volatile       A&&);  // { dg-message "" }
 int test3_567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_567(a);		// { dg-error "lvalue" }
     sink_3_567(ca);		// { dg-error "lvalue" }
     sink_3_567(va);		// { dg-error "lvalue" }
@@ -790,9 +790,9 @@  eight sink_3_568(const volatile A&&); // { dg-message "" }
 int test3_568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_568(a);		// { dg-error "lvalue" }
     sink_3_568(ca);		// { dg-error "lvalue" }
     sink_3_568(va);		// { dg-error "lvalue" }
@@ -807,9 +807,9 @@  eight sink_3_578(const volatile A&&); // { dg-message "" }
 int test3_578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_578(a);		// { dg-error "lvalue" }
     sink_3_578(ca);		// { dg-error "lvalue" }
     sink_3_578(va);		// { dg-error "lvalue" }
@@ -824,9 +824,9 @@  eight sink_3_678(const volatile A&&);  // { dg-message "" }
 int test3_678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_3_678(a);          // { dg-error "ambiguous" }
     sink_3_678(ca);	    // { dg-error "lvalue" }
     sink_3_678(va);	    // { dg-error "lvalue" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv3p.C b/gcc/testsuite/g++.dg/cpp0x/rv3p.C
index 5ab171f..5f59920 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv3p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv3p.C
@@ -37,9 +37,9 @@  three sink_3_123(volatile       A&);
 int test3_123()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_123(a))           == 1> t1;
     sa<sizeof(sink_3_123(ca))          == 2> t2;
     sa<sizeof(sink_3_123(va))          == 3> t3;
@@ -55,9 +55,9 @@  four  sink_3_124(const volatile A&);
 int test3_124()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_124(a))           == 1> t1;
     sa<sizeof(sink_3_124(ca))          == 2> t2;
     sa<sizeof(sink_3_124(va))          == 4> t3;
@@ -74,9 +74,9 @@  five  sink_3_125(               A&&);
 int test3_125()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_125(a))           == 1> t1;
     sa<sizeof(sink_3_125(ca))          == 2> t2;
     sa<sizeof(sink_3_125(source()))    == 5> t5;
@@ -91,9 +91,9 @@  six   sink_3_126(const          A&&);
 int test3_126()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_126(a))           == 1> t1;
     sa<sizeof(sink_3_126(ca))          == 2> t2;
     sa<sizeof(sink_3_126(source()))    == 6> t5;
@@ -108,9 +108,9 @@  seven sink_3_127(volatile       A&&);
 int test3_127()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_127(a))           == 1> t1;
     sa<sizeof(sink_3_127(ca))          == 2> t2;
     sa<sizeof(sink_3_127(source()))    == 7> t5;
@@ -126,9 +126,9 @@  eight sink_3_128(const volatile A&&);
 int test3_128()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_128(a))           == 1> t1;
     sa<sizeof(sink_3_128(ca))          == 2> t2;
     sa<sizeof(sink_3_128(source()))    == 8> t5;
@@ -145,9 +145,9 @@  four  sink_3_134(const volatile A&);
 int test3_134()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_134(a))           == 1> t1;
     sa<sizeof(sink_3_134(ca))          == 4> t2;
     sa<sizeof(sink_3_134(va))          == 3> t3;
@@ -162,9 +162,9 @@  five  sink_3_135(               A&&);
 int test3_135()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_135(a))           == 1> t1;
     sa<sizeof(sink_3_135(va))          == 3> t3;
     sa<sizeof(sink_3_135(source()))    == 5> t5;
@@ -178,9 +178,9 @@  six   sink_3_136(const          A&&);
 int test3_136()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_136(a))           == 1> t1;
     sa<sizeof(sink_3_136(va))          == 3> t3;
     sa<sizeof(sink_3_136(source()))    == 6> t5;
@@ -195,9 +195,9 @@  seven sink_3_137(volatile       A&&);
 int test3_137()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_137(a))           == 1> t1;
     sa<sizeof(sink_3_137(va))          == 3> t3;
     sa<sizeof(sink_3_137(source()))    == 7> t5;
@@ -212,9 +212,9 @@  eight sink_3_138(const volatile A&&);
 int test3_138()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_138(a))           == 1> t1;
     sa<sizeof(sink_3_138(va))          == 3> t3;
     sa<sizeof(sink_3_138(source()))    == 8> t5;
@@ -231,9 +231,9 @@  five  sink_3_145(               A&&);
 int test3_145()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_145(a))           == 1> t1;
     sa<sizeof(sink_3_145(ca))          == 4> t2;
     sa<sizeof(sink_3_145(va))          == 4> t3;
@@ -249,9 +249,9 @@  six   sink_3_146(const          A&&);
 int test3_146()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_146(a))           == 1> t1;
     sa<sizeof(sink_3_146(ca))          == 4> t2;
     sa<sizeof(sink_3_146(va))          == 4> t3;
@@ -268,9 +268,9 @@  seven sink_3_147(volatile       A&&);
 int test3_147()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_147(a))           == 1> t1;
     sa<sizeof(sink_3_147(ca))          == 4> t2;
     sa<sizeof(sink_3_147(va))          == 4> t3;
@@ -287,9 +287,9 @@  eight sink_3_148(const volatile A&&);
 int test3_148()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_148(a))           == 1> t1;
     sa<sizeof(sink_3_148(ca))          == 4> t2;
     sa<sizeof(sink_3_148(va))          == 4> t3;
@@ -308,9 +308,9 @@  six   sink_3_156(const          A&&);
 int test3_156()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_156(a))           == 1> t1;
     sa<sizeof(sink_3_156(source()))    == 5> t5;
     sa<sizeof(sink_3_156(c_source()))  == 6> t6;
@@ -324,9 +324,9 @@  seven sink_3_157(volatile       A&&);
 int test3_157()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_157(a))           == 1> t1;
     sa<sizeof(sink_3_157(source()))    == 5> t5;
     sa<sizeof(sink_3_157(v_source()))  == 7> t7;
@@ -340,9 +340,9 @@  eight sink_3_158(const volatile A&&);
 int test3_158()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_158(a))           == 1> t1;
     sa<sizeof(sink_3_158(source()))    == 5> t5;
     sa<sizeof(sink_3_158(c_source()))  == 8> t6;
@@ -358,9 +358,9 @@  seven sink_3_167(volatile       A&&);
 int test3_167()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_167(a))           == 1> t1;
     sa<sizeof(sink_3_167(c_source()))  == 6> t6;
     sa<sizeof(sink_3_167(v_source()))  == 7> t7;
@@ -374,9 +374,9 @@  eight sink_3_168(const volatile A&&);
 int test3_168()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_168(a))           == 1> t1;
     sa<sizeof(sink_3_168(source()))    == 6> t5;
     sa<sizeof(sink_3_168(c_source()))  == 6> t6;
@@ -392,9 +392,9 @@  eight sink_3_178(const volatile A&&);
 int test3_178()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_178(a))           == 1> t1;
     sa<sizeof(sink_3_178(source()))    == 7> t5;
     sa<sizeof(sink_3_178(c_source()))  == 8> t6;
@@ -410,9 +410,9 @@  four  sink_3_234(const volatile A&);
 int test3_234()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_234(ca))          == 2> t2;
     sa<sizeof(sink_3_234(va))          == 3> t3;
     sa<sizeof(sink_3_234(cva))         == 4> t4;
@@ -428,9 +428,9 @@  five  sink_3_235(               A&&);
 int test3_235()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_235(ca))          == 2> t2;
     sa<sizeof(sink_3_235(va))          == 3> t3;
     sa<sizeof(sink_3_235(source()))    == 5> t5;
@@ -445,9 +445,9 @@  six   sink_3_236(const          A&&);
 int test3_236()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_236(ca))          == 2> t2;
     sa<sizeof(sink_3_236(va))          == 3> t3;
     sa<sizeof(sink_3_236(source()))    == 6> t5;
@@ -462,9 +462,9 @@  seven sink_3_237(volatile       A&&);
 int test3_237()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_237(ca))          == 2> t2;
     sa<sizeof(sink_3_237(va))          == 3> t3;
     sa<sizeof(sink_3_237(source()))    == 7> t5;
@@ -480,9 +480,9 @@  eight sink_3_238(const volatile A&&);
 int test3_238()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_238(ca))          == 2> t2;
     sa<sizeof(sink_3_238(va))          == 3> t3;
     sa<sizeof(sink_3_238(source()))    == 8> t5;
@@ -499,9 +499,9 @@  five  sink_3_245(               A&&);
 int test3_245()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_245(a))           == 2> t1;
     sa<sizeof(sink_3_245(ca))          == 2> t2;
     sa<sizeof(sink_3_245(va))          == 4> t3;
@@ -518,9 +518,9 @@  six   sink_3_246(const          A&&);
 int test3_246()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_246(a))           == 2> t1;
     sa<sizeof(sink_3_246(ca))          == 2> t2;
     sa<sizeof(sink_3_246(va))          == 4> t3;
@@ -537,9 +537,9 @@  seven sink_3_247(volatile       A&&);
 int test3_247()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_247(a))           == 2> t1;
     sa<sizeof(sink_3_247(ca))          == 2> t2;
     sa<sizeof(sink_3_247(va))          == 4> t3;
@@ -557,9 +557,9 @@  eight sink_3_248(const volatile A&&);
 int test3_248()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_248(a))           == 2> t1;
     sa<sizeof(sink_3_248(ca))          == 2> t2;
     sa<sizeof(sink_3_248(va))          == 4> t3;
@@ -578,9 +578,9 @@  six   sink_3_256(const          A&&);
 int test3_256()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_256(a))           == 2> t1;
     sa<sizeof(sink_3_256(ca))          == 2> t2;
     sa<sizeof(sink_3_256(source()))    == 5> t5;
@@ -595,9 +595,9 @@  seven sink_3_257(volatile       A&&);
 int test3_257()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_257(a))           == 2> t1;
     sa<sizeof(sink_3_257(ca))          == 2> t2;
     sa<sizeof(sink_3_257(source()))    == 5> t5;
@@ -613,9 +613,9 @@  eight sink_3_258(const volatile A&&);
 int test3_258()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_258(a))           == 2> t1;
     sa<sizeof(sink_3_258(ca))          == 2> t2;
     sa<sizeof(sink_3_258(source()))    == 5> t5;
@@ -632,9 +632,9 @@  seven sink_3_267(volatile       A&&);
 int test3_267()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_267(a))           == 2> t1;
     sa<sizeof(sink_3_267(ca))          == 2> t2;
     sa<sizeof(sink_3_267(c_source()))  == 6> t6;
@@ -649,9 +649,9 @@  eight sink_3_268(const volatile A&&);
 int test3_268()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_268(a))           == 2> t1;
     sa<sizeof(sink_3_268(ca))          == 2> t2;
     sa<sizeof(sink_3_268(source()))    == 6> t5;
@@ -668,9 +668,9 @@  eight sink_3_278(const volatile A&&);
 int test3_278()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_278(a))           == 2> t1;
     sa<sizeof(sink_3_278(ca))          == 2> t2;
     sa<sizeof(sink_3_278(source()))    == 7> t5;
@@ -687,9 +687,9 @@  five  sink_3_345(               A&&);
 int test3_345()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_345(a))           == 3> t1;
     sa<sizeof(sink_3_345(ca))          == 4> t2;
     sa<sizeof(sink_3_345(va))          == 3> t3;
@@ -705,9 +705,9 @@  six   sink_3_346(const          A&&);
 int test3_346()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_346(a))           == 3> t1;
     sa<sizeof(sink_3_346(ca))          == 4> t2;
     sa<sizeof(sink_3_346(va))          == 3> t3;
@@ -724,9 +724,9 @@  seven sink_3_347(volatile       A&&);
 int test3_347()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_347(a))           == 3> t1;
     sa<sizeof(sink_3_347(ca))          == 4> t2;
     sa<sizeof(sink_3_347(va))          == 3> t3;
@@ -743,9 +743,9 @@  eight sink_3_348(const volatile A&&);
 int test3_348()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_348(a))           == 3> t1;
     sa<sizeof(sink_3_348(ca))          == 4> t2;
     sa<sizeof(sink_3_348(va))          == 3> t3;
@@ -764,9 +764,9 @@  six   sink_3_356(const          A&&);
 int test3_356()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_356(a))           == 3> t1;
     sa<sizeof(sink_3_356(va))          == 3> t3;
     sa<sizeof(sink_3_356(source()))    == 5> t5;
@@ -781,9 +781,9 @@  seven sink_3_357(volatile       A&&);
 int test3_357()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_357(a))           == 3> t1;
     sa<sizeof(sink_3_357(va))          == 3> t3;
     sa<sizeof(sink_3_357(source()))    == 5> t5;
@@ -798,9 +798,9 @@  eight sink_3_358(const volatile A&&);
 int test3_358()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_358(a))           == 3> t1;
     sa<sizeof(sink_3_358(va))          == 3> t3;
     sa<sizeof(sink_3_358(source()))    == 5> t5;
@@ -817,9 +817,9 @@  seven sink_3_367(volatile       A&&);
 int test3_367()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_367(a))           == 3> t1;
     sa<sizeof(sink_3_367(va))          == 3> t3;
     sa<sizeof(sink_3_367(c_source()))  == 6> t6;
@@ -834,9 +834,9 @@  eight sink_3_368(const volatile A&&);
 int test3_368()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_368(a))           == 3> t1;
     sa<sizeof(sink_3_368(va))          == 3> t3;
     sa<sizeof(sink_3_368(source()))    == 6> t5;
@@ -853,9 +853,9 @@  eight sink_3_378(const volatile A&&);
 int test3_378()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_378(a))           == 3> t1;
     sa<sizeof(sink_3_378(va))          == 3> t3;
     sa<sizeof(sink_3_378(source()))    == 7> t5;
@@ -872,9 +872,9 @@  six   sink_3_456(const          A&&);
 int test3_456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_456(a))           == 4> t1;
     sa<sizeof(sink_3_456(ca))          == 4> t2;
     sa<sizeof(sink_3_456(va))          == 4> t3;
@@ -891,9 +891,9 @@  seven sink_3_457(volatile       A&&);
 int test3_457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_457(a))           == 4> t1;
     sa<sizeof(sink_3_457(ca))          == 4> t2;
     sa<sizeof(sink_3_457(va))          == 4> t3;
@@ -910,9 +910,9 @@  eight sink_3_458(const volatile A&&);
 int test3_458()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_458(a))           == 4> t1;
     sa<sizeof(sink_3_458(ca))          == 4> t2;
     sa<sizeof(sink_3_458(va))          == 4> t3;
@@ -931,9 +931,9 @@  seven sink_3_467(volatile       A&&);
 int test3_467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_467(a))           == 4> t1;
     sa<sizeof(sink_3_467(ca))          == 4> t2;
     sa<sizeof(sink_3_467(va))          == 4> t3;
@@ -950,9 +950,9 @@  eight sink_3_468(const volatile A&&);
 int test3_468()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_468(a))           == 4> t1;
     sa<sizeof(sink_3_468(ca))          == 4> t2;
     sa<sizeof(sink_3_468(va))          == 4> t3;
@@ -971,9 +971,9 @@  eight sink_3_478(const volatile A&&);
 int test3_478()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_478(a))           == 4> t1;
     sa<sizeof(sink_3_478(ca))          == 4> t2;
     sa<sizeof(sink_3_478(va))          == 4> t3;
@@ -992,9 +992,9 @@  seven sink_3_567(volatile       A&&);
 int test3_567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_567(source()))    == 5> t5;
     sa<sizeof(sink_3_567(c_source()))  == 6> t6;
     sa<sizeof(sink_3_567(v_source()))  == 7> t7;
@@ -1008,9 +1008,9 @@  eight sink_3_568(const volatile A&&);
 int test3_568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_568(source()))    == 5> t5;
     sa<sizeof(sink_3_568(c_source()))  == 6> t6;
     sa<sizeof(sink_3_568(v_source()))  == 8> t7;
@@ -1025,9 +1025,9 @@  eight sink_3_578(const volatile A&&);
 int test3_578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_578(source()))    == 5> t5;
     sa<sizeof(sink_3_578(c_source()))  == 8> t6;
     sa<sizeof(sink_3_578(v_source()))  == 7> t7;
@@ -1042,9 +1042,9 @@  eight sink_3_678(const volatile A&&);
 int test3_678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_3_678(c_source()))  == 6> t6;
     sa<sizeof(sink_3_678(v_source()))  == 7> t7;
     sa<sizeof(sink_3_678(cv_source())) == 8> t8;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv4n.C b/gcc/testsuite/g++.dg/cpp0x/rv4n.C
index cf627ae..524885f 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv4n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv4n.C
@@ -20,7 +20,7 @@  struct eight {char x[8];};
 struct A
 {
     A();
-    A(const volatile A&&);
+    A(const volatile A&&);	// { dg-error "argument 1" }
 };
 
                A    source();
@@ -38,9 +38,9 @@  four  sink_4_1234(const volatile A&);  // { dg-message "note" }
 int test4_1234()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1234(v_source());   // { dg-error "no match" }
     sink_4_1234(cv_source());  // { dg-error "no match" }
     return 0;
@@ -54,9 +54,9 @@  five  sink_4_1235(               A&&);  // { dg-message "note" }
 int test4_1235()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1235(cva);          // { dg-error "no match" }
     sink_4_1235(v_source());   // { dg-error "no match" }
     sink_4_1235(cv_source());  // { dg-error "no match" }
@@ -71,9 +71,9 @@  six   sink_4_1236(const          A&&);  // { dg-message "note" }
 int test4_1236()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1236(cva);          // { dg-error "no match" }
     sink_4_1236(v_source());   // { dg-error "no match" }
     sink_4_1236(cv_source());  // { dg-error "no match" }
@@ -88,9 +88,9 @@  seven sink_4_1237(volatile       A&&);  // { dg-message "note" }
 int test4_1237()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1237(cva);          // { dg-error "no match" }
     sink_4_1237(cv_source());  // { dg-error "no match" }
     return 0;
@@ -104,9 +104,9 @@  eight sink_4_1238(const volatile A&&); // { dg-message "" }
 int test4_1238()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1238(cva);		// { dg-error "lvalue" }
     return 0;
 }
@@ -119,9 +119,9 @@  five  sink_4_1245(               A&&);  // { dg-message "note" }
 int test4_1245()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1245(v_source());   // { dg-error "no match" }
     sink_4_1245(cv_source());  // { dg-error "no match" }
     return 0;
@@ -135,9 +135,9 @@  six   sink_4_1246(const          A&&);  // { dg-message "note" }
 int test4_1246()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1246(v_source());   // { dg-error "no match" }
     sink_4_1246(cv_source());  // { dg-error "no match" }
     return 0;
@@ -151,9 +151,9 @@  seven sink_4_1247(volatile       A&&);  // { dg-message "note" }
 int test4_1247()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1247(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -166,9 +166,9 @@  six   sink_4_1256(const          A&&);  // { dg-message "note" }
 int test4_1256()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1256(va);           // { dg-error "no match" }
     sink_4_1256(cva);          // { dg-error "no match" }
     sink_4_1256(v_source());   // { dg-error "no match" }
@@ -184,9 +184,9 @@  seven sink_4_1257(volatile       A&&);  // { dg-message "" }
 int test4_1257()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1257(va);		// { dg-error "lvalue" }
     sink_4_1257(cva);          // { dg-error "no match" }
     sink_4_1257(cv_source());  // { dg-error "no match" }
@@ -201,9 +201,9 @@  eight sink_4_1258(const volatile A&&); // { dg-message "" }
 int test4_1258()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1258(va);		// { dg-error "lvalue" }
     sink_4_1258(cva);		// { dg-error "lvalue" }
     return 0;
@@ -217,9 +217,9 @@  seven sink_4_1267(volatile       A&&);  // { dg-message "" }
 int test4_1267()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1267(va);		// { dg-error "lvalue" }
     sink_4_1267(cva);          // { dg-error "no match" }
     sink_4_1267(source());     // { dg-error "ambiguous" }
@@ -235,9 +235,9 @@  eight sink_4_1268(const volatile A&&); // { dg-message "" }
 int test4_1268()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1268(va);		// { dg-error "lvalue" }
     sink_4_1268(cva);		// { dg-error "lvalue" }
     return 0;
@@ -251,9 +251,9 @@  eight sink_4_1278(const volatile A&&); // { dg-message "" }
 int test4_1278()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1278(va);		// { dg-error "lvalue" }
     sink_4_1278(cva);		// { dg-error "lvalue" }
     return 0;
@@ -267,9 +267,9 @@  five  sink_4_1345(               A&&);  // { dg-message "note" }
 int test4_1345()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1345(c_source());   // { dg-error "no match" }
     sink_4_1345(v_source());   // { dg-error "no match" }
     sink_4_1345(cv_source());  // { dg-error "no match" }
@@ -284,9 +284,9 @@  six   sink_4_1346(const          A&&);  // { dg-message "note" }
 int test4_1346()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1346(v_source());   // { dg-error "no match" }
     sink_4_1346(cv_source());  // { dg-error "no match" }
     return 0;
@@ -300,9 +300,9 @@  seven sink_4_1347(volatile       A&&);  // { dg-message "note" }
 int test4_1347()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1347(c_source());   // { dg-error "no match" }
     sink_4_1347(cv_source());  // { dg-error "no match" }
     return 0;
@@ -316,9 +316,9 @@  six   sink_4_1356(const          A&&);  // { dg-message "" }
 int test4_1356()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1356(ca);		// { dg-error "lvalue" }
     sink_4_1356(cva);          // { dg-error "no match" }
     sink_4_1356(v_source());   // { dg-error "no match" }
@@ -334,9 +334,9 @@  seven sink_4_1357(volatile       A&&);  // { dg-message "note" }
 int test4_1357()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1357(ca);           // { dg-error "no match" }
     sink_4_1357(cva);          // { dg-error "no match" }
     sink_4_1357(c_source());   // { dg-error "no match" }
@@ -352,9 +352,9 @@  eight sink_4_1358(const volatile A&&); // { dg-message "" }
 int test4_1358()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1358(ca);		// { dg-error "lvalue" }
     sink_4_1358(cva);		// { dg-error "lvalue" }
     return 0;
@@ -368,9 +368,9 @@  seven sink_4_1367(volatile       A&&);  // { dg-message "note" }
 int test4_1367()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1367(ca);		// { dg-error "lvalue" }
     sink_4_1367(cva);          // { dg-error "no match" }
     sink_4_1367(source());     // { dg-error "ambiguous" }
@@ -386,9 +386,9 @@  eight sink_4_1368(const volatile A&&); // { dg-message "" }
 int test4_1368()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1368(ca);		// { dg-error "lvalue" }
     sink_4_1368(cva);		// { dg-error "lvalue" }
     return 0;
@@ -402,9 +402,9 @@  eight sink_4_1378(const volatile A&&); // { dg-message "" }
 int test4_1378()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1378(ca);		// { dg-error "lvalue" }
     sink_4_1378(cva);		// { dg-error "lvalue" }
     return 0;
@@ -418,9 +418,9 @@  six   sink_4_1456(const          A&&);  // { dg-message "note" }
 int test4_1456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1456(v_source());   // { dg-error "no match" }
     sink_4_1456(cv_source());  // { dg-error "no match" }
     return 0;
@@ -434,9 +434,9 @@  seven sink_4_1457(volatile       A&&);  // { dg-message "note" }
 int test4_1457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1457(c_source());   // { dg-error "no match" }
     sink_4_1457(cv_source());  // { dg-error "no match" }
     return 0;
@@ -450,9 +450,9 @@  seven sink_4_1467(volatile       A&&);  // { dg-message "note" }
 int test4_1467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1467(source());     // { dg-error "ambiguous" }
     sink_4_1467(cv_source());  // { dg-error "no match" }
     return 0;
@@ -466,9 +466,9 @@  seven sink_4_1567(volatile       A&&);  // { dg-message "" }
 int test4_1567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1567(ca);	       // { dg-error "lvalue" }
     sink_4_1567(va);	       // { dg-error "lvalue" }
     sink_4_1567(cva);          // { dg-error "no match" }
@@ -484,9 +484,9 @@  eight sink_4_1568(const volatile A&&); // { dg-message "" }
 int test4_1568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1568(ca);		// { dg-error "lvalue" }
     sink_4_1568(va);		// { dg-error "lvalue" }
     sink_4_1568(cva);		// { dg-error "lvalue" }
@@ -501,9 +501,9 @@  eight sink_4_1578(const volatile A&&); // { dg-message "" }
 int test4_1578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1578(ca);		// { dg-error "lvalue" }
     sink_4_1578(va);		// { dg-error "lvalue" }
     sink_4_1578(cva);		// { dg-error "lvalue" }
@@ -518,9 +518,9 @@  eight sink_4_1678(const volatile A&&);  // { dg-message "" }
 int test4_1678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_1678(ca);		// { dg-error "lvalue" }
     sink_4_1678(va);		// { dg-error "lvalue" }
     sink_4_1678(cva);		// { dg-error "lvalue" }
@@ -536,9 +536,9 @@  five  sink_4_2345(               A&&);  // { dg-message "note" }
 int test4_2345()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2345(a);            // { dg-error "ambiguous" }
     sink_4_2345(v_source());   // { dg-error "no match" }
     sink_4_2345(cv_source());  // { dg-error "no match" }
@@ -553,9 +553,9 @@  six   sink_4_2346(const          A&&);  // { dg-message "note" }
 int test4_2346()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2346(a);            // { dg-error "ambiguous" }
     sink_4_2346(v_source());   // { dg-error "no match" }
     sink_4_2346(cv_source());  // { dg-error "no match" }
@@ -570,9 +570,9 @@  seven sink_4_2347(volatile       A&&);  // { dg-message "note" }
 int test4_2347()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2347(a);            // { dg-error "ambiguous" }
     sink_4_2347(cv_source());  // { dg-error "no match" }
     return 0;
@@ -586,9 +586,9 @@  eight sink_4_2348(const volatile A&&);  // { dg-message "note" }
 int test4_2348()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2348(a);  // { dg-error "ambiguous" }
     return 0;
 }
@@ -601,9 +601,9 @@  six   sink_4_2356(const          A&&);  // { dg-message "note" }
 int test4_2356()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2356(a);            // { dg-error "ambiguous" }
     sink_4_2356(cva);          // { dg-error "no match" }
     sink_4_2356(v_source());   // { dg-error "no match" }
@@ -619,9 +619,9 @@  seven sink_4_2357(volatile       A&&);  // { dg-message "note" }
 int test4_2357()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2357(a);            // { dg-error "ambiguous" }
     sink_4_2357(cva);          // { dg-error "no match" }
     sink_4_2357(cv_source());  // { dg-error "no match" }
@@ -636,9 +636,9 @@  eight sink_4_2358(const volatile A&&);  // { dg-message "" }
 int test4_2358()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2358(a);  // { dg-error "ambiguous" }
     sink_4_2358(cva); // { dg-error "lvalue" }
     return 0;
@@ -652,9 +652,9 @@  seven sink_4_2367(volatile       A&&);  // { dg-message "note" }
 int test4_2367()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2367(a);            // { dg-error "ambiguous" }
     sink_4_2367(cva);          // { dg-error "no match" }
     sink_4_2367(source());     // { dg-error "ambiguous" }
@@ -670,9 +670,9 @@  eight sink_4_2368(const volatile A&&);  // { dg-message "" }
 int test4_2368()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2368(a);  // { dg-error "ambiguous" }
     sink_4_2368(cva); // { dg-error "lvalue" }
     return 0;
@@ -686,9 +686,9 @@  eight sink_4_2378(const volatile A&&);  // { dg-message "" }
 int test4_2378()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2378(a);  // { dg-error "ambiguous" }
     sink_4_2378(cva); // { dg-error "lvalue" }
     return 0;
@@ -702,9 +702,9 @@  six   sink_4_2456(const          A&&);  // { dg-message "note" }
 int test4_2456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2456(v_source());   // { dg-error "no match" }
     sink_4_2456(cv_source());  // { dg-error "no match" }
     return 0;
@@ -718,9 +718,9 @@  seven sink_4_2457(volatile       A&&);  // { dg-message "note" }
 int test4_2457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2457(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -733,9 +733,9 @@  seven sink_4_2467(volatile       A&&);  // { dg-message "note" }
 int test4_2467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2467(source());     // { dg-error "ambiguous" }
     sink_4_2467(cv_source());  // { dg-error "no match" }
     return 0;
@@ -749,9 +749,9 @@  seven sink_4_2567(volatile       A&&);  // { dg-message "" }
 int test4_2567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2567(va);		// { dg-error "lvalue" }
     sink_4_2567(cva);          // { dg-error "no match" }
     sink_4_2567(cv_source());  // { dg-error "no match" }
@@ -766,9 +766,9 @@  eight sink_4_2568(const volatile A&&); // { dg-message "" }
 int test4_2568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2568(va); // { dg-error "lvalue" }
     sink_4_2568(cva); // { dg-error "lvalue" }
     return 0;
@@ -782,9 +782,9 @@  eight sink_4_2578(const volatile A&&); // { dg-message "" }
 int test4_2578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2578(va); // { dg-error "lvalue" }
     sink_4_2578(cva); // { dg-error "lvalue" }
     return 0;
@@ -798,9 +798,9 @@  eight sink_4_2678(const volatile A&&);  // { dg-message "" }
 int test4_2678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_2678(va); // { dg-error "lvalue" }
     sink_4_2678(cva); // { dg-error "lvalue" }
     sink_4_2678(source());  // { dg-error "ambiguous" }
@@ -815,9 +815,9 @@  six   sink_4_3456(const          A&&);  // { dg-message "note" }
 int test4_3456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_3456(v_source());   // { dg-error "no match" }
     sink_4_3456(cv_source());  // { dg-error "no match" }
     return 0;
@@ -831,9 +831,9 @@  seven sink_4_3457(volatile       A&&);  // { dg-message "note" }
 int test4_3457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_3457(c_source());   // { dg-error "no match" }
     sink_4_3457(cv_source());  // { dg-error "no match" }
     return 0;
@@ -847,9 +847,9 @@  seven sink_4_3467(volatile       A&&);  // { dg-message "note" }
 int test4_3467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_3467(source());     // { dg-error "ambiguous" }
     sink_4_3467(cv_source());  // { dg-error "no match" }
     return 0;
@@ -863,9 +863,9 @@  seven sink_4_3567(volatile       A&&);  // { dg-message "note" }
 int test4_3567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_3567(ca);		// { dg-error "lvalue" }
     sink_4_3567(cva);          // { dg-error "no match" }
     sink_4_3567(cv_source());  // { dg-error "no match" }
@@ -880,9 +880,9 @@  eight sink_4_3568(const volatile A&&); // { dg-message "" }
 int test4_3568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_3568(ca); // { dg-error "lvalue" }
     sink_4_3568(cva); // { dg-error "lvalue" }
     return 0;
@@ -896,9 +896,9 @@  eight sink_4_3578(const volatile A&&); // { dg-message "" }
 int test4_3578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_3578(ca); // { dg-error "lvalue" }
     sink_4_3578(cva); // { dg-error "lvalue" }
     return 0;
@@ -912,9 +912,9 @@  eight sink_4_3678(const volatile A&&);  // { dg-message "" }
 int test4_3678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_3678(ca);		// { dg-error "lvalue" }
     sink_4_3678(cva);		// { dg-error "lvalue" }
     sink_4_3678(source());  // { dg-error "ambiguous" }
@@ -929,9 +929,9 @@  seven sink_4_4567(volatile       A&&);  // { dg-message "note" }
 int test4_4567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_4567(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -944,9 +944,9 @@  eight sink_4_4678(const volatile A&&);  // { dg-message "note" }
 int test4_4678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_4678(source());  // { dg-error "ambiguous" }
     return 0;
 }
@@ -959,9 +959,9 @@  eight sink_4_5678(const volatile A&&); // { dg-message "" }
 int test4_5678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_4_5678(a);		// { dg-error "lvalue" }
     sink_4_5678(ca);		// { dg-error "lvalue" }
     sink_4_5678(va);		// { dg-error "lvalue" }
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv4p.C b/gcc/testsuite/g++.dg/cpp0x/rv4p.C
index 03ad973..33a90f8 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv4p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv4p.C
@@ -38,9 +38,9 @@  four  sink_4_1234(const volatile A&);
 int test4_1234()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1234(a))           == 1> t1;
     sa<sizeof(sink_4_1234(ca))          == 2> t2;
     sa<sizeof(sink_4_1234(va))          == 3> t3;
@@ -58,9 +58,9 @@  five  sink_4_1235(               A&&);
 int test4_1235()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1235(a))           == 1> t1;
     sa<sizeof(sink_4_1235(ca))          == 2> t2;
     sa<sizeof(sink_4_1235(va))          == 3> t3;
@@ -77,9 +77,9 @@  six   sink_4_1236(const          A&&);
 int test4_1236()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1236(a))           == 1> t1;
     sa<sizeof(sink_4_1236(ca))          == 2> t2;
     sa<sizeof(sink_4_1236(va))          == 3> t3;
@@ -96,9 +96,9 @@  seven sink_4_1237(volatile       A&&);
 int test4_1237()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1237(a))           == 1> t1;
     sa<sizeof(sink_4_1237(ca))          == 2> t2;
     sa<sizeof(sink_4_1237(va))          == 3> t3;
@@ -116,9 +116,9 @@  eight sink_4_1238(const volatile A&&);
 int test4_1238()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1238(a))           == 1> t1;
     sa<sizeof(sink_4_1238(ca))          == 2> t2;
     sa<sizeof(sink_4_1238(va))          == 3> t3;
@@ -137,9 +137,9 @@  five  sink_4_1245(               A&&);
 int test4_1245()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1245(a))           == 1> t1;
     sa<sizeof(sink_4_1245(ca))          == 2> t2;
     sa<sizeof(sink_4_1245(va))          == 4> t3;
@@ -157,9 +157,9 @@  six   sink_4_1246(const          A&&);
 int test4_1246()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1246(a))           == 1> t1;
     sa<sizeof(sink_4_1246(ca))          == 2> t2;
     sa<sizeof(sink_4_1246(va))          == 4> t3;
@@ -177,9 +177,9 @@  seven sink_4_1247(volatile       A&&);
 int test4_1247()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1247(a))           == 1> t1;
     sa<sizeof(sink_4_1247(ca))          == 2> t2;
     sa<sizeof(sink_4_1247(va))          == 4> t3;
@@ -198,9 +198,9 @@  eight sink_4_1248(const volatile A&&);
 int test4_1248()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1248(a))           == 1> t1;
     sa<sizeof(sink_4_1248(ca))          == 2> t2;
     sa<sizeof(sink_4_1248(va))          == 4> t3;
@@ -220,9 +220,9 @@  six   sink_4_1256(const          A&&);
 int test4_1256()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1256(a))           == 1> t1;
     sa<sizeof(sink_4_1256(ca))          == 2> t2;
     sa<sizeof(sink_4_1256(source()))    == 5> t5;
@@ -238,9 +238,9 @@  seven sink_4_1257(volatile       A&&);
 int test4_1257()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1257(a))           == 1> t1;
     sa<sizeof(sink_4_1257(ca))          == 2> t2;
     sa<sizeof(sink_4_1257(source()))    == 5> t5;
@@ -257,9 +257,9 @@  eight sink_4_1258(const volatile A&&);
 int test4_1258()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1258(a))           == 1> t1;
     sa<sizeof(sink_4_1258(ca))          == 2> t2;
     sa<sizeof(sink_4_1258(source()))    == 5> t5;
@@ -277,9 +277,9 @@  seven sink_4_1267(volatile       A&&);
 int test4_1267()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1267(a))           == 1> t1;
     sa<sizeof(sink_4_1267(ca))          == 2> t2;
     sa<sizeof(sink_4_1267(c_source()))  == 6> t6;
@@ -295,9 +295,9 @@  eight sink_4_1268(const volatile A&&);
 int test4_1268()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1268(a))           == 1> t1;
     sa<sizeof(sink_4_1268(ca))          == 2> t2;
     sa<sizeof(sink_4_1268(source()))    == 6> t5;
@@ -315,9 +315,9 @@  eight sink_4_1278(const volatile A&&);
 int test4_1278()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1278(a))           == 1> t1;
     sa<sizeof(sink_4_1278(ca))          == 2> t2;
     sa<sizeof(sink_4_1278(source()))    == 7> t5;
@@ -335,9 +335,9 @@  five  sink_4_1345(               A&&);
 int test4_1345()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1345(a))           == 1> t1;
     sa<sizeof(sink_4_1345(ca))          == 4> t2;
     sa<sizeof(sink_4_1345(va))          == 3> t3;
@@ -354,9 +354,9 @@  six   sink_4_1346(const          A&&);
 int test4_1346()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1346(a))           == 1> t1;
     sa<sizeof(sink_4_1346(ca))          == 4> t2;
     sa<sizeof(sink_4_1346(va))          == 3> t3;
@@ -374,9 +374,9 @@  seven sink_4_1347(volatile       A&&);
 int test4_1347()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1347(a))           == 1> t1;
     sa<sizeof(sink_4_1347(ca))          == 4> t2;
     sa<sizeof(sink_4_1347(va))          == 3> t3;
@@ -394,9 +394,9 @@  eight sink_4_1348(const volatile A&&);
 int test4_1348()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1348(a))           == 1> t1;
     sa<sizeof(sink_4_1348(ca))          == 4> t2;
     sa<sizeof(sink_4_1348(va))          == 3> t3;
@@ -416,9 +416,9 @@  six   sink_4_1356(const          A&&);
 int test4_1356()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1356(a))           == 1> t1;
     sa<sizeof(sink_4_1356(va))          == 3> t3;
     sa<sizeof(sink_4_1356(source()))    == 5> t5;
@@ -434,9 +434,9 @@  seven sink_4_1357(volatile       A&&);
 int test4_1357()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1357(a))           == 1> t1;
     sa<sizeof(sink_4_1357(va))          == 3> t3;
     sa<sizeof(sink_4_1357(source()))    == 5> t5;
@@ -452,9 +452,9 @@  eight sink_4_1358(const volatile A&&);
 int test4_1358()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1358(a))           == 1> t1;
     sa<sizeof(sink_4_1358(va))          == 3> t3;
     sa<sizeof(sink_4_1358(source()))    == 5> t5;
@@ -472,9 +472,9 @@  seven sink_4_1367(volatile       A&&);
 int test4_1367()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1367(a))           == 1> t1;
     sa<sizeof(sink_4_1367(va))          == 3> t3;
     sa<sizeof(sink_4_1367(c_source()))  == 6> t6;
@@ -490,9 +490,9 @@  eight sink_4_1368(const volatile A&&);
 int test4_1368()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1368(a))           == 1> t1;
     sa<sizeof(sink_4_1368(va))          == 3> t3;
     sa<sizeof(sink_4_1368(source()))    == 6> t5;
@@ -510,9 +510,9 @@  eight sink_4_1378(const volatile A&&);
 int test4_1378()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1378(a))           == 1> t1;
     sa<sizeof(sink_4_1378(va))          == 3> t3;
     sa<sizeof(sink_4_1378(source()))    == 7> t5;
@@ -530,9 +530,9 @@  six   sink_4_1456(const          A&&);
 int test4_1456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1456(a))           == 1> t1;
     sa<sizeof(sink_4_1456(ca))          == 4> t2;
     sa<sizeof(sink_4_1456(va))          == 4> t3;
@@ -550,9 +550,9 @@  seven sink_4_1457(volatile       A&&);
 int test4_1457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1457(a))           == 1> t1;
     sa<sizeof(sink_4_1457(ca))          == 4> t2;
     sa<sizeof(sink_4_1457(va))          == 4> t3;
@@ -570,9 +570,9 @@  eight sink_4_1458(const volatile A&&);
 int test4_1458()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1458(a))           == 1> t1;
     sa<sizeof(sink_4_1458(ca))          == 4> t2;
     sa<sizeof(sink_4_1458(va))          == 4> t3;
@@ -592,9 +592,9 @@  seven sink_4_1467(volatile       A&&);
 int test4_1467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1467(a))           == 1> t1;
     sa<sizeof(sink_4_1467(ca))          == 4> t2;
     sa<sizeof(sink_4_1467(va))          == 4> t3;
@@ -612,9 +612,9 @@  eight sink_4_1468(const volatile A&&);
 int test4_1468()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1468(a))           == 1> t1;
     sa<sizeof(sink_4_1468(ca))          == 4> t2;
     sa<sizeof(sink_4_1468(va))          == 4> t3;
@@ -634,9 +634,9 @@  eight sink_4_1478(const volatile A&&);
 int test4_1478()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1478(a))           == 1> t1;
     sa<sizeof(sink_4_1478(ca))          == 4> t2;
     sa<sizeof(sink_4_1478(va))          == 4> t3;
@@ -656,9 +656,9 @@  seven sink_4_1567(volatile       A&&);
 int test4_1567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1567(a))           == 1> t1;
     sa<sizeof(sink_4_1567(source()))    == 5> t5;
     sa<sizeof(sink_4_1567(c_source()))  == 6> t6;
@@ -674,9 +674,9 @@  eight sink_4_1568(const volatile A&&);
 int test4_1568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1568(a))           == 1> t1;
     sa<sizeof(sink_4_1568(source()))    == 5> t5;
     sa<sizeof(sink_4_1568(c_source()))  == 6> t6;
@@ -693,9 +693,9 @@  eight sink_4_1578(const volatile A&&);
 int test4_1578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1578(a))           == 1> t1;
     sa<sizeof(sink_4_1578(source()))    == 5> t5;
     sa<sizeof(sink_4_1578(c_source()))  == 8> t6;
@@ -712,9 +712,9 @@  eight sink_4_1678(const volatile A&&);
 int test4_1678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_1678(a))           == 1> t1;
     sa<sizeof(sink_4_1678(c_source()))  == 6> t6;
     sa<sizeof(sink_4_1678(v_source()))  == 7> t7;
@@ -730,9 +730,9 @@  five  sink_4_2345(               A&&);
 int test4_2345()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2345(ca))          == 2> t2;
     sa<sizeof(sink_4_2345(va))          == 3> t3;
     sa<sizeof(sink_4_2345(cva))         == 4> t4;
@@ -749,9 +749,9 @@  six   sink_4_2346(const          A&&);
 int test4_2346()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2346(ca))          == 2> t2;
     sa<sizeof(sink_4_2346(va))          == 3> t3;
     sa<sizeof(sink_4_2346(cva))         == 4> t4;
@@ -768,9 +768,9 @@  seven sink_4_2347(volatile       A&&);
 int test4_2347()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2347(ca))          == 2> t2;
     sa<sizeof(sink_4_2347(va))          == 3> t3;
     sa<sizeof(sink_4_2347(cva))         == 4> t4;
@@ -788,9 +788,9 @@  eight sink_4_2348(const volatile A&&);
 int test4_2348()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2348(ca))          == 2> t2;
     sa<sizeof(sink_4_2348(va))          == 3> t3;
     sa<sizeof(sink_4_2348(cva))         == 4> t4;
@@ -809,9 +809,9 @@  six   sink_4_2356(const          A&&);
 int test4_2356()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2356(ca))          == 2> t2;
     sa<sizeof(sink_4_2356(va))          == 3> t3;
     sa<sizeof(sink_4_2356(source()))    == 5> t5;
@@ -827,9 +827,9 @@  seven sink_4_2357(volatile       A&&);
 int test4_2357()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2357(ca))          == 2> t2;
     sa<sizeof(sink_4_2357(va))          == 3> t3;
     sa<sizeof(sink_4_2357(source()))    == 5> t5;
@@ -846,9 +846,9 @@  eight sink_4_2358(const volatile A&&);
 int test4_2358()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2358(ca))          == 2> t2;
     sa<sizeof(sink_4_2358(va))          == 3> t3;
     sa<sizeof(sink_4_2358(source()))    == 5> t5;
@@ -866,9 +866,9 @@  seven sink_4_2367(volatile       A&&);
 int test4_2367()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2367(ca))          == 2> t2;
     sa<sizeof(sink_4_2367(va))          == 3> t3;
     sa<sizeof(sink_4_2367(c_source()))  == 6> t6;
@@ -884,9 +884,9 @@  eight sink_4_2368(const volatile A&&);
 int test4_2368()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2368(ca))          == 2> t2;
     sa<sizeof(sink_4_2368(va))          == 3> t3;
     sa<sizeof(sink_4_2368(source()))    == 6> t5;
@@ -904,9 +904,9 @@  eight sink_4_2378(const volatile A&&);
 int test4_2378()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2378(ca))          == 2> t2;
     sa<sizeof(sink_4_2378(va))          == 3> t3;
     sa<sizeof(sink_4_2378(source()))    == 7> t5;
@@ -924,9 +924,9 @@  six   sink_4_2456(const          A&&);
 int test4_2456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2456(a))           == 2> t1;
     sa<sizeof(sink_4_2456(ca))          == 2> t2;
     sa<sizeof(sink_4_2456(va))          == 4> t3;
@@ -944,9 +944,9 @@  seven sink_4_2457(volatile       A&&);
 int test4_2457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2457(a))           == 2> t1;
     sa<sizeof(sink_4_2457(ca))          == 2> t2;
     sa<sizeof(sink_4_2457(va))          == 4> t3;
@@ -965,9 +965,9 @@  eight sink_4_2458(const volatile A&&);
 int test4_2458()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2458(a))           == 2> t1;
     sa<sizeof(sink_4_2458(ca))          == 2> t2;
     sa<sizeof(sink_4_2458(va))          == 4> t3;
@@ -987,9 +987,9 @@  seven sink_4_2467(volatile       A&&);
 int test4_2467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2467(a))           == 2> t1;
     sa<sizeof(sink_4_2467(ca))          == 2> t2;
     sa<sizeof(sink_4_2467(va))          == 4> t3;
@@ -1007,9 +1007,9 @@  eight sink_4_2468(const volatile A&&);
 int test4_2468()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2468(a))           == 2> t1;
     sa<sizeof(sink_4_2468(ca))          == 2> t2;
     sa<sizeof(sink_4_2468(va))          == 4> t3;
@@ -1029,9 +1029,9 @@  eight sink_4_2478(const volatile A&&);
 int test4_2478()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2478(a))           == 2> t1;
     sa<sizeof(sink_4_2478(ca))          == 2> t2;
     sa<sizeof(sink_4_2478(va))          == 4> t3;
@@ -1051,9 +1051,9 @@  seven sink_4_2567(volatile       A&&);
 int test4_2567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2567(a))           == 2> t1;
     sa<sizeof(sink_4_2567(ca))          == 2> t2;
     sa<sizeof(sink_4_2567(source()))    == 5> t5;
@@ -1070,9 +1070,9 @@  eight sink_4_2568(const volatile A&&);
 int test4_2568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2568(a))           == 2> t1;
     sa<sizeof(sink_4_2568(ca))          == 2> t2;
     sa<sizeof(sink_4_2568(source()))    == 5> t5;
@@ -1090,9 +1090,9 @@  eight sink_4_2578(const volatile A&&);
 int test4_2578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2578(a))           == 2> t1;
     sa<sizeof(sink_4_2578(ca))          == 2> t2;
     sa<sizeof(sink_4_2578(source()))    == 5> t5;
@@ -1110,9 +1110,9 @@  eight sink_4_2678(const volatile A&&);
 int test4_2678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_2678(a))           == 2> t1;
     sa<sizeof(sink_4_2678(ca))          == 2> t2;
     sa<sizeof(sink_4_2678(c_source()))  == 6> t6;
@@ -1129,9 +1129,9 @@  six   sink_4_3456(const          A&&);
 int test4_3456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_3456(a))           == 3> t1;
     sa<sizeof(sink_4_3456(ca))          == 4> t2;
     sa<sizeof(sink_4_3456(va))          == 3> t3;
@@ -1149,9 +1149,9 @@  seven sink_4_3457(volatile       A&&);
 int test4_3457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_3457(a))           == 3> t1;
     sa<sizeof(sink_4_3457(ca))          == 4> t2;
     sa<sizeof(sink_4_3457(va))          == 3> t3;
@@ -1169,9 +1169,9 @@  eight sink_4_3458(const volatile A&&);
 int test4_3458()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_3458(a))           == 3> t1;
     sa<sizeof(sink_4_3458(ca))          == 4> t2;
     sa<sizeof(sink_4_3458(va))          == 3> t3;
@@ -1191,9 +1191,9 @@  seven sink_4_3467(volatile       A&&);
 int test4_3467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_3467(a))           == 3> t1;
     sa<sizeof(sink_4_3467(ca))          == 4> t2;
     sa<sizeof(sink_4_3467(va))          == 3> t3;
@@ -1211,9 +1211,9 @@  eight sink_4_3468(const volatile A&&);
 int test4_3468()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_3468(a))           == 3> t1;
     sa<sizeof(sink_4_3468(ca))          == 4> t2;
     sa<sizeof(sink_4_3468(va))          == 3> t3;
@@ -1233,9 +1233,9 @@  eight sink_4_3478(const volatile A&&);
 int test4_3478()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_3478(a))           == 3> t1;
     sa<sizeof(sink_4_3478(ca))          == 4> t2;
     sa<sizeof(sink_4_3478(va))          == 3> t3;
@@ -1255,9 +1255,9 @@  seven sink_4_3567(volatile       A&&);
 int test4_3567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_3567(a))           == 3> t1;
     sa<sizeof(sink_4_3567(va))          == 3> t3;
     sa<sizeof(sink_4_3567(source()))    == 5> t5;
@@ -1274,9 +1274,9 @@  eight sink_4_3568(const volatile A&&);
 int test4_3568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_3568(a))           == 3> t1;
     sa<sizeof(sink_4_3568(va))          == 3> t3;
     sa<sizeof(sink_4_3568(source()))    == 5> t5;
@@ -1294,9 +1294,9 @@  eight sink_4_3578(const volatile A&&);
 int test4_3578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_3578(a))           == 3> t1;
     sa<sizeof(sink_4_3578(va))          == 3> t3;
     sa<sizeof(sink_4_3578(source()))    == 5> t5;
@@ -1314,9 +1314,9 @@  eight sink_4_3678(const volatile A&&);
 int test4_3678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_3678(a))           == 3> t1;
     sa<sizeof(sink_4_3678(va))          == 3> t3;
     sa<sizeof(sink_4_3678(c_source()))  == 6> t6;
@@ -1333,9 +1333,9 @@  seven sink_4_4567(volatile       A&&);
 int test4_4567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_4567(a))           == 4> t1;
     sa<sizeof(sink_4_4567(ca))          == 4> t2;
     sa<sizeof(sink_4_4567(va))          == 4> t3;
@@ -1354,9 +1354,9 @@  eight sink_4_4568(const volatile A&&);
 int test4_4568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_4568(a))           == 4> t1;
     sa<sizeof(sink_4_4568(ca))          == 4> t2;
     sa<sizeof(sink_4_4568(va))          == 4> t3;
@@ -1376,9 +1376,9 @@  eight sink_4_4578(const volatile A&&);
 int test4_4578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_4578(a))           == 4> t1;
     sa<sizeof(sink_4_4578(ca))          == 4> t2;
     sa<sizeof(sink_4_4578(va))          == 4> t3;
@@ -1398,9 +1398,9 @@  eight sink_4_4678(const volatile A&&);
 int test4_4678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_4678(a))           == 4> t1;
     sa<sizeof(sink_4_4678(ca))          == 4> t2;
     sa<sizeof(sink_4_4678(va))          == 4> t3;
@@ -1419,9 +1419,9 @@  eight sink_4_5678(const volatile A&&);
 int test4_5678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_4_5678(source()))    == 5> t5;
     sa<sizeof(sink_4_5678(c_source()))  == 6> t6;
     sa<sizeof(sink_4_5678(v_source()))  == 7> t7;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv5n.C b/gcc/testsuite/g++.dg/cpp0x/rv5n.C
index c31a30b..92ec1d9 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv5n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv5n.C
@@ -20,7 +20,7 @@  struct eight {char x[8];};
 struct A
 {
     A();
-    A(const volatile A&&);
+    A(const volatile A&&);	// { dg-error "argument 1" }
 };
 
                A    source();
@@ -39,9 +39,9 @@  five  sink_5_12345(               A&&);  // { dg-message "note" }
 int test5_12345()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12345(v_source());   // { dg-error "no match" }
     sink_5_12345(cv_source());  // { dg-error "no match" }
     return 0;
@@ -56,9 +56,9 @@  six   sink_5_12346(const          A&&);  // { dg-message "note" }
 int test5_12346()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12346(v_source());   // { dg-error "no match" }
     sink_5_12346(cv_source());  // { dg-error "no match" }
     return 0;
@@ -73,9 +73,9 @@  seven sink_5_12347(volatile       A&&);  // { dg-message "note" }
 int test5_12347()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12347(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -89,9 +89,9 @@  six   sink_5_12356(const          A&&);  // { dg-message "note" }
 int test5_12356()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12356(cva);          // { dg-error "no match" }
     sink_5_12356(v_source());   // { dg-error "no match" }
     sink_5_12356(cv_source());  // { dg-error "no match" }
@@ -107,9 +107,9 @@  seven sink_5_12357(volatile       A&&);  // { dg-message "note" }
 int test5_12357()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12357(cva);          // { dg-error "no match" }
     sink_5_12357(cv_source());  // { dg-error "no match" }
     return 0;
@@ -124,9 +124,9 @@  eight sink_5_12358(const volatile A&&); // { dg-message "" }
 int test5_12358()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12358(cva);		// { dg-error "lvalue" }
     return 0;
 }
@@ -140,9 +140,9 @@  seven sink_5_12367(volatile       A&&);  // { dg-message "note" }
 int test5_12367()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12367(cva);          // { dg-error "no match" }
     sink_5_12367(source());     // { dg-error "ambiguous" }
     sink_5_12367(cv_source());  // { dg-error "no match" }
@@ -158,9 +158,9 @@  eight sink_5_12368(const volatile A&&); // { dg-message "" }
 int test5_12368()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12368(cva);		// { dg-error "lvalue" }
     return 0;
 }
@@ -174,9 +174,9 @@  eight sink_5_12378(const volatile A&&); // { dg-message "" }
 int test5_12378()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12378(cva);		// { dg-error "lvalue" }
     return 0;
 }
@@ -190,9 +190,9 @@  six   sink_5_12456(const          A&&);  // { dg-message "note" }
 int test5_12456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12456(v_source());   // { dg-error "no match" }
     sink_5_12456(cv_source());  // { dg-error "no match" }
     return 0;
@@ -207,9 +207,9 @@  seven sink_5_12457(volatile       A&&);  // { dg-message "note" }
 int test5_12457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12457(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -223,9 +223,9 @@  seven sink_5_12467(volatile       A&&);  // { dg-message "note" }
 int test5_12467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12467(source());     // { dg-error "ambiguous" }
     sink_5_12467(cv_source());  // { dg-error "no match" }
     return 0;
@@ -240,9 +240,9 @@  seven sink_5_12567(volatile       A&&);  // { dg-message "" }
 int test5_12567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12567(va);		// { dg-error "lvalue" }
     sink_5_12567(cva);          // { dg-error "no match" }
     sink_5_12567(cv_source());  // { dg-error "no match" }
@@ -258,9 +258,9 @@  eight sink_5_12568(const volatile A&&); // { dg-message "" }
 int test5_12568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12568(va);		// { dg-error "lvalue" }
     sink_5_12568(cva);		// { dg-error "lvalue" }
     return 0;
@@ -275,9 +275,9 @@  eight sink_5_12578(const volatile A&&); // { dg-message "" }
 int test5_12578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12578(va);		// { dg-error "lvalue" }
     sink_5_12578(cva);		// { dg-error "lvalue" }
     return 0;
@@ -292,9 +292,9 @@  eight sink_5_12678(const volatile A&&);  // { dg-message "" }
 int test5_12678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_12678(va);		// { dg-error "lvalue" }
     sink_5_12678(cva);		// { dg-error "lvalue" }
     sink_5_12678(source());  // { dg-error "ambiguous" }
@@ -310,9 +310,9 @@  six   sink_5_13456(const          A&&);  // { dg-message "note" }
 int test5_13456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_13456(v_source());   // { dg-error "no match" }
     sink_5_13456(cv_source());  // { dg-error "no match" }
     return 0;
@@ -327,9 +327,9 @@  seven sink_5_13457(volatile       A&&);  // { dg-message "note" }
 int test5_13457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_13457(c_source());   // { dg-error "no match" }
     sink_5_13457(cv_source());  // { dg-error "no match" }
     return 0;
@@ -344,9 +344,9 @@  seven sink_5_13467(volatile       A&&);  // { dg-message "note" }
 int test5_13467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_13467(source());     // { dg-error "ambiguous" }
     sink_5_13467(cv_source());  // { dg-error "no match" }
     return 0;
@@ -361,9 +361,9 @@  seven sink_5_13567(volatile       A&&);  // { dg-message "note" }
 int test5_13567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_13567(ca);		// { dg-error "lvalue" }
     sink_5_13567(cva);          // { dg-error "no match" }
     sink_5_13567(cv_source());  // { dg-error "no match" }
@@ -379,9 +379,9 @@  eight sink_5_13568(const volatile A&&); // { dg-message "" }
 int test5_13568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_13568(ca);		// { dg-error "lvalue" }
     sink_5_13568(cva);		// { dg-error "lvalue" }
     return 0;
@@ -396,9 +396,9 @@  eight sink_5_13578(const volatile A&&); // { dg-message "" }
 int test5_13578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_13578(ca);		// { dg-error "lvalue" }
     sink_5_13578(cva);		// { dg-error "lvalue" }
     return 0;
@@ -413,9 +413,9 @@  eight sink_5_13678(const volatile A&&);  // { dg-message "" }
 int test5_13678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_13678(ca);		// { dg-error "lvalue" }
     sink_5_13678(cva);		// { dg-error "lvalue" }
     sink_5_13678(source());  // { dg-error "ambiguous" }
@@ -431,9 +431,9 @@  seven sink_5_14567(volatile       A&&);  // { dg-message "note" }
 int test5_14567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_14567(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -447,9 +447,9 @@  eight sink_5_14678(const volatile A&&);  // { dg-message "note" }
 int test5_14678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_14678(source());  // { dg-error "ambiguous" }
     return 0;
 }
@@ -463,9 +463,9 @@  eight sink_5_15678(const volatile A&&); // { dg-message "" }
 int test5_15678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_15678(ca);		// { dg-error "lvalue" }
     sink_5_15678(va);		// { dg-error "lvalue" }
     sink_5_15678(cva);		// { dg-error "lvalue" }
@@ -481,9 +481,9 @@  six   sink_5_23456(const          A&&);  // { dg-message "note" }
 int test5_23456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_23456(a);            // { dg-error "ambiguous" }
     sink_5_23456(v_source());   // { dg-error "no match" }
     sink_5_23456(cv_source());  // { dg-error "no match" }
@@ -499,9 +499,9 @@  seven sink_5_23457(volatile       A&&);  // { dg-message "note" }
 int test5_23457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_23457(a);            // { dg-error "ambiguous" }
     sink_5_23457(cv_source());  // { dg-error "no match" }
     return 0;
@@ -516,9 +516,9 @@  eight sink_5_23458(const volatile A&&);  // { dg-message "note" }
 int test5_23458()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_23458(a);  // { dg-error "ambiguous" }
     return 0;
 }
@@ -532,9 +532,9 @@  seven sink_5_23467(volatile       A&&);  // { dg-message "note" }
 int test5_23467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_23467(a);            // { dg-error "ambiguous" }
     sink_5_23467(source());     // { dg-error "ambiguous" }
     sink_5_23467(cv_source());  // { dg-error "no match" }
@@ -550,9 +550,9 @@  eight sink_5_23468(const volatile A&&);  // { dg-message "note" }
 int test5_23468()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_23468(a);  // { dg-error "ambiguous" }
    return 0;
 }
@@ -566,9 +566,9 @@  eight sink_5_23478(const volatile A&&);  // { dg-message "note" }
 int test5_23478()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_23478(a);  // { dg-error "ambiguous" }
     return 0;
 }
@@ -582,9 +582,9 @@  seven sink_5_23567(volatile       A&&);  // { dg-message "note" }
 int test5_23567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_23567(a);            // { dg-error "ambiguous" }
     sink_5_23567(cva);          // { dg-error "no match" }
     sink_5_23567(cv_source());  // { dg-error "no match" }
@@ -600,9 +600,9 @@  eight sink_5_23568(const volatile A&&);  // { dg-message "" }
 int test5_23568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_23568(cva); // { dg-error "lvalue" }
     sink_5_23568(a);  // { dg-error "ambiguous" }
     return 0;
@@ -617,9 +617,9 @@  eight sink_5_23578(const volatile A&&);  // { dg-message "" }
 int test5_23578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_23578(cva); // { dg-error "lvalue" }
     sink_5_23578(a);  // { dg-error "ambiguous" }
     return 0;
@@ -634,9 +634,9 @@  eight sink_5_23678(const volatile A&&);  // { dg-message "" }
 int test5_23678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_23678(a);         // { dg-error "ambiguous" }
     sink_5_23678(cva);	     // { dg-error "lvalue" }
     sink_5_23678(source());  // { dg-error "ambiguous" }
@@ -652,9 +652,9 @@  seven sink_5_24567(volatile       A&&);  // { dg-message "note" }
 int test5_24567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_24567(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -668,9 +668,9 @@  eight sink_5_24678(const volatile A&&);  // { dg-message "note" }
 int test5_24678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_24678(source());  // { dg-error "ambiguous" }
     return 0;
 }
@@ -684,9 +684,9 @@  eight sink_5_25678(const volatile A&&); // { dg-message "" }
 int test5_25678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_25678(va);		// { dg-error "lvalue" }
     sink_5_25678(cva);		// { dg-error "lvalue" }
     return 0;
@@ -701,9 +701,9 @@  seven sink_5_34567(volatile       A&&);  // { dg-message "note" }
 int test5_34567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_34567(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -717,9 +717,9 @@  eight sink_5_34678(const volatile A&&);  // { dg-message "note" }
 int test5_34678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_34678(source());  // { dg-error "ambiguous" }
     return 0;
 }
@@ -733,9 +733,9 @@  eight sink_5_35678(const volatile A&&); // { dg-message "" }
 int test5_35678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_5_35678(ca);		// { dg-error "lvalue" }
     sink_5_35678(cva);		// { dg-error "lvalue" }
     return 0;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv5p.C b/gcc/testsuite/g++.dg/cpp0x/rv5p.C
index 7555867..cd12028 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv5p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv5p.C
@@ -39,9 +39,9 @@  five  sink_5_12345(               A&&);
 int test5_12345()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12345(a))           == 1> t1;
     sa<sizeof(sink_5_12345(ca))          == 2> t2;
     sa<sizeof(sink_5_12345(va))          == 3> t3;
@@ -60,9 +60,9 @@  six   sink_5_12346(const          A&&);
 int test5_12346()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12346(a))           == 1> t1;
     sa<sizeof(sink_5_12346(ca))          == 2> t2;
     sa<sizeof(sink_5_12346(va))          == 3> t3;
@@ -81,9 +81,9 @@  seven sink_5_12347(volatile       A&&);
 int test5_12347()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12347(a))           == 1> t1;
     sa<sizeof(sink_5_12347(ca))          == 2> t2;
     sa<sizeof(sink_5_12347(va))          == 3> t3;
@@ -103,9 +103,9 @@  eight sink_5_12348(const volatile A&&);
 int test5_12348()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12348(a))           == 1> t1;
     sa<sizeof(sink_5_12348(ca))          == 2> t2;
     sa<sizeof(sink_5_12348(va))          == 3> t3;
@@ -126,9 +126,9 @@  six   sink_5_12356(const          A&&);
 int test5_12356()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12356(a))           == 1> t1;
     sa<sizeof(sink_5_12356(ca))          == 2> t2;
     sa<sizeof(sink_5_12356(va))          == 3> t3;
@@ -146,9 +146,9 @@  seven sink_5_12357(volatile       A&&);
 int test5_12357()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12357(a))           == 1> t1;
     sa<sizeof(sink_5_12357(ca))          == 2> t2;
     sa<sizeof(sink_5_12357(va))          == 3> t3;
@@ -167,9 +167,9 @@  eight sink_5_12358(const volatile A&&);
 int test5_12358()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12358(a))           == 1> t1;
     sa<sizeof(sink_5_12358(ca))          == 2> t2;
     sa<sizeof(sink_5_12358(va))          == 3> t3;
@@ -189,9 +189,9 @@  seven sink_5_12367(volatile       A&&);
 int test5_12367()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12367(a))           == 1> t1;
     sa<sizeof(sink_5_12367(ca))          == 2> t2;
     sa<sizeof(sink_5_12367(va))          == 3> t3;
@@ -209,9 +209,9 @@  eight sink_5_12368(const volatile A&&);
 int test5_12368()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12368(a))           == 1> t1;
     sa<sizeof(sink_5_12368(ca))          == 2> t2;
     sa<sizeof(sink_5_12368(va))          == 3> t3;
@@ -231,9 +231,9 @@  eight sink_5_12378(const volatile A&&);
 int test5_12378()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12378(a))           == 1> t1;
     sa<sizeof(sink_5_12378(ca))          == 2> t2;
     sa<sizeof(sink_5_12378(va))          == 3> t3;
@@ -253,9 +253,9 @@  six   sink_5_12456(const          A&&);
 int test5_12456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12456(a))           == 1> t1;
     sa<sizeof(sink_5_12456(ca))          == 2> t2;
     sa<sizeof(sink_5_12456(va))          == 4> t3;
@@ -274,9 +274,9 @@  seven sink_5_12457(volatile       A&&);
 int test5_12457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12457(a))           == 1> t1;
     sa<sizeof(sink_5_12457(ca))          == 2> t2;
     sa<sizeof(sink_5_12457(va))          == 4> t3;
@@ -296,9 +296,9 @@  eight sink_5_12458(const volatile A&&);
 int test5_12458()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12458(a))           == 1> t1;
     sa<sizeof(sink_5_12458(ca))          == 2> t2;
     sa<sizeof(sink_5_12458(va))          == 4> t3;
@@ -319,9 +319,9 @@  seven sink_5_12467(volatile       A&&);
 int test5_12467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12467(a))           == 1> t1;
     sa<sizeof(sink_5_12467(ca))          == 2> t2;
     sa<sizeof(sink_5_12467(va))          == 4> t3;
@@ -340,9 +340,9 @@  eight sink_5_12468(const volatile A&&);
 int test5_12468()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12468(a))           == 1> t1;
     sa<sizeof(sink_5_12468(ca))          == 2> t2;
     sa<sizeof(sink_5_12468(va))          == 4> t3;
@@ -363,9 +363,9 @@  eight sink_5_12478(const volatile A&&);
 int test5_12478()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12478(a))           == 1> t1;
     sa<sizeof(sink_5_12478(ca))          == 2> t2;
     sa<sizeof(sink_5_12478(va))          == 4> t3;
@@ -386,9 +386,9 @@  seven sink_5_12567(volatile       A&&);
 int test5_12567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12567(a))           == 1> t1;
     sa<sizeof(sink_5_12567(ca))          == 2> t2;
     sa<sizeof(sink_5_12567(source()))    == 5> t5;
@@ -406,9 +406,9 @@  eight sink_5_12568(const volatile A&&);
 int test5_12568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12568(a))           == 1> t1;
     sa<sizeof(sink_5_12568(ca))          == 2> t2;
     sa<sizeof(sink_5_12568(source()))    == 5> t5;
@@ -427,9 +427,9 @@  eight sink_5_12578(const volatile A&&);
 int test5_12578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12578(a))           == 1> t1;
     sa<sizeof(sink_5_12578(ca))          == 2> t2;
     sa<sizeof(sink_5_12578(source()))    == 5> t5;
@@ -448,9 +448,9 @@  eight sink_5_12678(const volatile A&&);
 int test5_12678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_12678(a))           == 1> t1;
     sa<sizeof(sink_5_12678(ca))          == 2> t2;
     sa<sizeof(sink_5_12678(c_source()))  == 6> t6;
@@ -468,9 +468,9 @@  six   sink_5_13456(const          A&&);
 int test5_13456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_13456(a))           == 1> t1;
     sa<sizeof(sink_5_13456(ca))          == 4> t2;
     sa<sizeof(sink_5_13456(va))          == 3> t3;
@@ -489,9 +489,9 @@  seven sink_5_13457(volatile       A&&);
 int test5_13457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_13457(a))           == 1> t1;
     sa<sizeof(sink_5_13457(ca))          == 4> t2;
     sa<sizeof(sink_5_13457(va))          == 3> t3;
@@ -510,9 +510,9 @@  eight sink_5_13458(const volatile A&&);
 int test5_13458()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_13458(a))           == 1> t1;
     sa<sizeof(sink_5_13458(ca))          == 4> t2;
     sa<sizeof(sink_5_13458(va))          == 3> t3;
@@ -533,9 +533,9 @@  seven sink_5_13467(volatile       A&&);
 int test5_13467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_13467(a))           == 1> t1;
     sa<sizeof(sink_5_13467(ca))          == 4> t2;
     sa<sizeof(sink_5_13467(va))          == 3> t3;
@@ -554,9 +554,9 @@  eight sink_5_13468(const volatile A&&);
 int test5_13468()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_13468(a))           == 1> t1;
     sa<sizeof(sink_5_13468(ca))          == 4> t2;
     sa<sizeof(sink_5_13468(va))          == 3> t3;
@@ -577,9 +577,9 @@  eight sink_5_13478(const volatile A&&);
 int test5_13478()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_13478(a))           == 1> t1;
     sa<sizeof(sink_5_13478(ca))          == 4> t2;
     sa<sizeof(sink_5_13478(va))          == 3> t3;
@@ -600,9 +600,9 @@  seven sink_5_13567(volatile       A&&);
 int test5_13567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_13567(a))           == 1> t1;
     sa<sizeof(sink_5_13567(va))          == 3> t3;
     sa<sizeof(sink_5_13567(source()))    == 5> t5;
@@ -620,9 +620,9 @@  eight sink_5_13568(const volatile A&&);
 int test5_13568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_13568(a))           == 1> t1;
     sa<sizeof(sink_5_13568(va))          == 3> t3;
     sa<sizeof(sink_5_13568(source()))    == 5> t5;
@@ -641,9 +641,9 @@  eight sink_5_13578(const volatile A&&);
 int test5_13578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_13578(a))           == 1> t1;
     sa<sizeof(sink_5_13578(va))          == 3> t3;
     sa<sizeof(sink_5_13578(source()))    == 5> t5;
@@ -662,9 +662,9 @@  eight sink_5_13678(const volatile A&&);
 int test5_13678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_13678(a))           == 1> t1;
     sa<sizeof(sink_5_13678(va))          == 3> t3;
     sa<sizeof(sink_5_13678(c_source()))  == 6> t6;
@@ -682,9 +682,9 @@  seven sink_5_14567(volatile       A&&);
 int test5_14567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_14567(a))           == 1> t1;
     sa<sizeof(sink_5_14567(ca))          == 4> t2;
     sa<sizeof(sink_5_14567(va))          == 4> t3;
@@ -704,9 +704,9 @@  eight sink_5_14568(const volatile A&&);
 int test5_14568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_14568(a))           == 1> t1;
     sa<sizeof(sink_5_14568(ca))          == 4> t2;
     sa<sizeof(sink_5_14568(va))          == 4> t3;
@@ -727,9 +727,9 @@  eight sink_5_14578(const volatile A&&);
 int test5_14578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_14578(a))           == 1> t1;
     sa<sizeof(sink_5_14578(ca))          == 4> t2;
     sa<sizeof(sink_5_14578(va))          == 4> t3;
@@ -750,9 +750,9 @@  eight sink_5_14678(const volatile A&&);
 int test5_14678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_14678(a))           == 1> t1;
     sa<sizeof(sink_5_14678(ca))          == 4> t2;
     sa<sizeof(sink_5_14678(va))          == 4> t3;
@@ -772,9 +772,9 @@  eight sink_5_15678(const volatile A&&);
 int test5_15678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_15678(a))           == 1> t1;
     sa<sizeof(sink_5_15678(source()))    == 5> t5;
     sa<sizeof(sink_5_15678(c_source()))  == 6> t6;
@@ -792,9 +792,9 @@  six   sink_5_23456(const          A&&);
 int test5_23456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_23456(ca))          == 2> t2;
     sa<sizeof(sink_5_23456(va))          == 3> t3;
     sa<sizeof(sink_5_23456(cva))         == 4> t4;
@@ -812,9 +812,9 @@  seven sink_5_23457(volatile       A&&);
 int test5_23457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_23457(ca))          == 2> t2;
     sa<sizeof(sink_5_23457(va))          == 3> t3;
     sa<sizeof(sink_5_23457(cva))         == 4> t4;
@@ -833,9 +833,9 @@  eight sink_5_23458(const volatile A&&);
 int test5_23458()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_23458(ca))          == 2> t2;
     sa<sizeof(sink_5_23458(va))          == 3> t3;
     sa<sizeof(sink_5_23458(cva))         == 4> t4;
@@ -855,9 +855,9 @@  seven sink_5_23467(volatile       A&&);
 int test5_23467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_23467(ca))          == 2> t2;
     sa<sizeof(sink_5_23467(va))          == 3> t3;
     sa<sizeof(sink_5_23467(cva))         == 4> t4;
@@ -875,9 +875,9 @@  eight sink_5_23468(const volatile A&&);
 int test5_23468()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_23468(ca))          == 2> t2;
     sa<sizeof(sink_5_23468(va))          == 3> t3;
     sa<sizeof(sink_5_23468(cva))         == 4> t4;
@@ -897,9 +897,9 @@  eight sink_5_23478(const volatile A&&);
 int test5_23478()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_23478(ca))          == 2> t2;
     sa<sizeof(sink_5_23478(va))          == 3> t3;
     sa<sizeof(sink_5_23478(cva))         == 4> t4;
@@ -919,9 +919,9 @@  seven sink_5_23567(volatile       A&&);
 int test5_23567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_23567(ca))          == 2> t2;
     sa<sizeof(sink_5_23567(va))          == 3> t3;
     sa<sizeof(sink_5_23567(source()))    == 5> t5;
@@ -939,9 +939,9 @@  eight sink_5_23568(const volatile A&&);
 int test5_23568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_23568(ca))          == 2> t2;
     sa<sizeof(sink_5_23568(va))          == 3> t3;
     sa<sizeof(sink_5_23568(source()))    == 5> t5;
@@ -960,9 +960,9 @@  eight sink_5_23578(const volatile A&&);
 int test5_23578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_23578(ca))          == 2> t2;
     sa<sizeof(sink_5_23578(va))          == 3> t3;
     sa<sizeof(sink_5_23578(source()))    == 5> t5;
@@ -981,9 +981,9 @@  eight sink_5_23678(const volatile A&&);
 int test5_23678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_23678(ca))          == 2> t2;
     sa<sizeof(sink_5_23678(va))          == 3> t3;
     sa<sizeof(sink_5_23678(c_source()))  == 6> t6;
@@ -1001,9 +1001,9 @@  seven sink_5_24567(volatile       A&&);
 int test5_24567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_24567(a))           == 2> t1;
     sa<sizeof(sink_5_24567(ca))          == 2> t2;
     sa<sizeof(sink_5_24567(va))          == 4> t3;
@@ -1023,9 +1023,9 @@  eight sink_5_24568(const volatile A&&);
 int test5_24568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_24568(a))           == 2> t1;
     sa<sizeof(sink_5_24568(ca))          == 2> t2;
     sa<sizeof(sink_5_24568(va))          == 4> t3;
@@ -1046,9 +1046,9 @@  eight sink_5_24578(const volatile A&&);
 int test5_24578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_24578(a))           == 2> t1;
     sa<sizeof(sink_5_24578(ca))          == 2> t2;
     sa<sizeof(sink_5_24578(va))          == 4> t3;
@@ -1069,9 +1069,9 @@  eight sink_5_24678(const volatile A&&);
 int test5_24678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_24678(a))           == 2> t1;
     sa<sizeof(sink_5_24678(ca))          == 2> t2;
     sa<sizeof(sink_5_24678(va))          == 4> t3;
@@ -1091,9 +1091,9 @@  eight sink_5_25678(const volatile A&&);
 int test5_25678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_25678(a))           == 2> t1;
     sa<sizeof(sink_5_25678(ca))          == 2> t2;
     sa<sizeof(sink_5_25678(source()))    == 5> t5;
@@ -1112,9 +1112,9 @@  seven sink_5_34567(volatile       A&&);
 int test5_34567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_34567(a))           == 3> t1;
     sa<sizeof(sink_5_34567(ca))          == 4> t2;
     sa<sizeof(sink_5_34567(va))          == 3> t3;
@@ -1134,9 +1134,9 @@  eight sink_5_34568(const volatile A&&);
 int test5_34568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_34568(a))           == 3> t1;
     sa<sizeof(sink_5_34568(ca))          == 4> t2;
     sa<sizeof(sink_5_34568(va))          == 3> t3;
@@ -1157,9 +1157,9 @@  eight sink_5_34578(const volatile A&&);
 int test5_34578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_34578(a))           == 3> t1;
     sa<sizeof(sink_5_34578(ca))          == 4> t2;
     sa<sizeof(sink_5_34578(va))          == 3> t3;
@@ -1180,9 +1180,9 @@  eight sink_5_34678(const volatile A&&);
 int test5_34678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_34678(a))           == 3> t1;
     sa<sizeof(sink_5_34678(ca))          == 4> t2;
     sa<sizeof(sink_5_34678(va))          == 3> t3;
@@ -1202,9 +1202,9 @@  eight sink_5_35678(const volatile A&&);
 int test5_35678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_35678(a))           == 3> t1;
     sa<sizeof(sink_5_35678(va))          == 3> t3;
     sa<sizeof(sink_5_35678(source()))    == 5> t5;
@@ -1223,9 +1223,9 @@  eight sink_5_45678(const volatile A&&);
 int test5_45678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_5_45678(a))           == 4> t1;
     sa<sizeof(sink_5_45678(ca))          == 4> t2;
     sa<sizeof(sink_5_45678(va))          == 4> t3;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv6n.C b/gcc/testsuite/g++.dg/cpp0x/rv6n.C
index 2a2520c..6a81f66 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv6n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv6n.C
@@ -20,7 +20,7 @@  struct eight {char x[8];};
 struct A
 {
     A();
-    A(const volatile A&&);
+    A(const volatile A&&);	// { dg-error "argument 1" }
 };
 
                A    source();
@@ -40,9 +40,9 @@  six   sink_6_123456(const          A&&);  // { dg-message "note" }
 int test6_123456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_123456(v_source());   // { dg-error "no match" }
     sink_6_123456(cv_source());  // { dg-error "no match" }
     return 0;
@@ -58,9 +58,9 @@  seven sink_6_123457(volatile       A&&);  // { dg-message "note" }
 int test6_123457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_123457(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -75,9 +75,9 @@  eight sink_6_235678(const volatile A&&);  // { dg-message "" }
 int test6_235678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_235678(a);  // { dg-error "ambiguous" }
     sink_6_235678(cva);		// { dg-error "lvalue" }
     return 0;
@@ -93,9 +93,9 @@  eight sink_6_234678(const volatile A&&);  // { dg-message "note" }
 int test6_234678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_234678(a);         // { dg-error "ambiguous" }
     sink_6_234678(source());  // { dg-error "ambiguous" }
     return 0;
@@ -111,9 +111,9 @@  eight sink_6_234578(const volatile A&&);  // { dg-message "note" }
 int test6_234578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_234578(a);  // { dg-error "ambiguous" }
     return 0;
 }
@@ -128,9 +128,9 @@  eight sink_6_234568(const volatile A&&);  // { dg-message "note" }
 int test6_234568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_234568(a);  // { dg-error "ambiguous" }
     return 0;
 }
@@ -145,9 +145,9 @@  seven sink_6_234567(volatile       A&&);  // { dg-message "note" }
 int test6_234567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_234567(a);            // { dg-error "ambiguous" }
     sink_6_234567(cv_source());  // { dg-error "no match" }
     return 0;
@@ -163,9 +163,9 @@  eight sink_6_134678(const volatile A&&);  // { dg-message "note" }
 int test6_134678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_134678(source());  // { dg-error "ambiguous" }
     return 0;
 }
@@ -180,9 +180,9 @@  eight sink_6_124678(const volatile A&&);  // { dg-message "note" }
 int test6_124678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_124678(source());  // { dg-error "ambiguous" }
     return 0;
 }
@@ -197,9 +197,9 @@  eight sink_6_123678(const volatile A&&);  // { dg-message "" }
 int test6_123678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_123678(cva);		// { dg-error "lvalue" }
     sink_6_123678(source());  // { dg-error "ambiguous" }
     return 0;
@@ -215,9 +215,9 @@  seven sink_6_123567(volatile       A&&);  // { dg-message "note" }
 int test6_123567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_123567(cva);          // { dg-error "no match" }
     sink_6_123567(cv_source());  // { dg-error "no match" }
     return 0;
@@ -233,9 +233,9 @@  eight sink_6_123568(const volatile A&&); // { dg-message "" }
 int test6_123568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_123568(cva); // { dg-error "lvalue" }
     return 0;
 }
@@ -250,9 +250,9 @@  eight sink_6_123578(const volatile A&&); // { dg-message "" }
 int test6_123578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_123578(cva);		// { dg-error "lvalue" }
     return 0;
 }
@@ -267,9 +267,9 @@  seven sink_6_123467(volatile       A&&);  // { dg-message "note" }
 int test6_123467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_123467(source());     // { dg-error "ambiguous" }
     sink_6_123467(cv_source());  // { dg-error "no match" }
     return 0;
@@ -285,9 +285,9 @@  seven sink_6_124567(volatile       A&&);  // { dg-message "note" }
 int test6_124567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_124567(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -302,9 +302,9 @@  eight sink_6_125678(const volatile A&&); // { dg-message "" }
 int test6_125678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_125678(va);		// { dg-error "lvalue" }
     sink_6_125678(cva);		// { dg-error "lvalue" }
     return 0;
@@ -320,9 +320,9 @@  seven sink_6_134567(volatile       A&&);  // { dg-message "note" }
 int test6_134567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_134567(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -337,9 +337,9 @@  eight sink_6_135678(const volatile A&&); // { dg-message "" }
 int test6_135678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_6_135678(ca);		// { dg-error "lvalue" }
     sink_6_135678(cva);		// { dg-error "lvalue" }
     return 0;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv6p.C b/gcc/testsuite/g++.dg/cpp0x/rv6p.C
index 0e5352b..bb17d79 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv6p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv6p.C
@@ -40,9 +40,9 @@  six   sink_6_123456(const          A&&);
 int test6_123456()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_123456(a))           == 1> t1;
     sa<sizeof(sink_6_123456(ca))          == 2> t2;
     sa<sizeof(sink_6_123456(va))          == 3> t3;
@@ -62,9 +62,9 @@  seven sink_6_123457(volatile       A&&);
 int test6_123457()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_123457(a))           == 1> t1;
     sa<sizeof(sink_6_123457(ca))          == 2> t2;
     sa<sizeof(sink_6_123457(va))          == 3> t3;
@@ -85,9 +85,9 @@  eight sink_6_123458(const volatile A&&);
 int test6_123458()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_123458(a))           == 1> t1;
     sa<sizeof(sink_6_123458(ca))          == 2> t2;
     sa<sizeof(sink_6_123458(va))          == 3> t3;
@@ -109,9 +109,9 @@  seven sink_6_123467(volatile       A&&);
 int test6_123467()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_123467(a))           == 1> t1;
     sa<sizeof(sink_6_123467(ca))          == 2> t2;
     sa<sizeof(sink_6_123467(va))          == 3> t3;
@@ -131,9 +131,9 @@  eight sink_6_123468(const volatile A&&);
 int test6_123468()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_123468(a))           == 1> t1;
     sa<sizeof(sink_6_123468(ca))          == 2> t2;
     sa<sizeof(sink_6_123468(va))          == 3> t3;
@@ -155,9 +155,9 @@  eight sink_6_123478(const volatile A&&);
 int test6_123478()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_123478(a))           == 1> t1;
     sa<sizeof(sink_6_123478(ca))          == 2> t2;
     sa<sizeof(sink_6_123478(va))          == 3> t3;
@@ -179,9 +179,9 @@  seven sink_6_123567(volatile       A&&);
 int test6_123567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_123567(a))           == 1> t1;
     sa<sizeof(sink_6_123567(ca))          == 2> t2;
     sa<sizeof(sink_6_123567(va))          == 3> t3;
@@ -201,9 +201,9 @@  eight sink_6_123568(const volatile A&&);
 int test6_123568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_123568(a))           == 1> t1;
     sa<sizeof(sink_6_123568(ca))          == 2> t2;
     sa<sizeof(sink_6_123568(va))          == 3> t3;
@@ -224,9 +224,9 @@  eight sink_6_123578(const volatile A&&);
 int test6_123578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_123578(a))           == 1> t1;
     sa<sizeof(sink_6_123578(ca))          == 2> t2;
     sa<sizeof(sink_6_123578(va))          == 3> t3;
@@ -247,9 +247,9 @@  eight sink_6_123678(const volatile A&&);
 int test6_123678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_123678(a))           == 1> t1;
     sa<sizeof(sink_6_123678(ca))          == 2> t2;
     sa<sizeof(sink_6_123678(va))          == 3> t3;
@@ -269,9 +269,9 @@  seven sink_6_124567(volatile       A&&);
 int test6_124567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_124567(a))           == 1> t1;
     sa<sizeof(sink_6_124567(ca))          == 2> t2;
     sa<sizeof(sink_6_124567(va))          == 4> t3;
@@ -292,9 +292,9 @@  eight sink_6_124568(const volatile A&&);
 int test6_124568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_124568(a))           == 1> t1;
     sa<sizeof(sink_6_124568(ca))          == 2> t2;
     sa<sizeof(sink_6_124568(va))          == 4> t3;
@@ -316,9 +316,9 @@  eight sink_6_124578(const volatile A&&);
 int test6_124578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_124578(a))           == 1> t1;
     sa<sizeof(sink_6_124578(ca))          == 2> t2;
     sa<sizeof(sink_6_124578(va))          == 4> t3;
@@ -340,9 +340,9 @@  eight sink_6_124678(const volatile A&&);
 int test6_124678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_124678(a))           == 1> t1;
     sa<sizeof(sink_6_124678(ca))          == 2> t2;
     sa<sizeof(sink_6_124678(va))          == 4> t3;
@@ -363,9 +363,9 @@  eight sink_6_125678(const volatile A&&);
 int test6_125678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_125678(a))           == 1> t1;
     sa<sizeof(sink_6_125678(ca))          == 2> t2;
     sa<sizeof(sink_6_125678(source()))    == 5> t5;
@@ -385,9 +385,9 @@  seven sink_6_134567(volatile       A&&);
 int test6_134567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_134567(a))           == 1> t1;
     sa<sizeof(sink_6_134567(ca))          == 4> t2;
     sa<sizeof(sink_6_134567(va))          == 3> t3;
@@ -408,9 +408,9 @@  eight sink_6_134568(const volatile A&&);
 int test6_134568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_134568(a))           == 1> t1;
     sa<sizeof(sink_6_134568(ca))          == 4> t2;
     sa<sizeof(sink_6_134568(va))          == 3> t3;
@@ -432,9 +432,9 @@  eight sink_6_134578(const volatile A&&);
 int test6_134578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_134578(a))           == 1> t1;
     sa<sizeof(sink_6_134578(ca))          == 4> t2;
     sa<sizeof(sink_6_134578(va))          == 3> t3;
@@ -456,9 +456,9 @@  eight sink_6_134678(const volatile A&&);
 int test6_134678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_134678(a))           == 1> t1;
     sa<sizeof(sink_6_134678(ca))          == 4> t2;
     sa<sizeof(sink_6_134678(va))          == 3> t3;
@@ -479,9 +479,9 @@  eight sink_6_135678(const volatile A&&);
 int test6_135678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_135678(a))           == 1> t1;
     sa<sizeof(sink_6_135678(va))          == 3> t3;
     sa<sizeof(sink_6_135678(source()))    == 5> t5;
@@ -501,9 +501,9 @@  eight sink_6_145678(const volatile A&&);
 int test6_145678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_145678(a))           == 1> t1;
     sa<sizeof(sink_6_145678(ca))          == 4> t2;
     sa<sizeof(sink_6_145678(va))          == 4> t3;
@@ -525,9 +525,9 @@  seven sink_6_234567(volatile       A&&);
 int test6_234567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_234567(ca))          == 2> t2;
     sa<sizeof(sink_6_234567(va))          == 3> t3;
     sa<sizeof(sink_6_234567(cva))         == 4> t4;
@@ -547,9 +547,9 @@  eight sink_6_234568(const volatile A&&);
 int test6_234568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_234568(ca))          == 2> t2;
     sa<sizeof(sink_6_234568(va))          == 3> t3;
     sa<sizeof(sink_6_234568(cva))         == 4> t4;
@@ -570,9 +570,9 @@  eight sink_6_234578(const volatile A&&);
 int test6_234578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_234578(ca))          == 2> t2;
     sa<sizeof(sink_6_234578(va))          == 3> t3;
     sa<sizeof(sink_6_234578(cva))         == 4> t4;
@@ -593,9 +593,9 @@  eight sink_6_234678(const volatile A&&);
 int test6_234678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_234678(ca))          == 2> t2;
     sa<sizeof(sink_6_234678(va))          == 3> t3;
     sa<sizeof(sink_6_234678(cva))         == 4> t4;
@@ -615,9 +615,9 @@  eight sink_6_235678(const volatile A&&);
 int test6_235678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_235678(ca))          == 2> t2;
     sa<sizeof(sink_6_235678(va))          == 3> t3;
     sa<sizeof(sink_6_235678(source()))    == 5> t5;
@@ -637,9 +637,9 @@  eight sink_6_245678(const volatile A&&);
 int test6_245678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_245678(a))           == 2> t1;
     sa<sizeof(sink_6_245678(ca))          == 2> t2;
     sa<sizeof(sink_6_245678(va))          == 4> t3;
@@ -661,9 +661,9 @@  eight sink_6_345678(const volatile A&&);
 int test6_345678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_6_345678(a))           == 3> t1;
     sa<sizeof(sink_6_345678(ca))          == 4> t2;
     sa<sizeof(sink_6_345678(va))          == 3> t3;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv7n.C b/gcc/testsuite/g++.dg/cpp0x/rv7n.C
index 102730b..94254b5 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv7n.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv7n.C
@@ -20,7 +20,7 @@  struct eight {char x[8];};
 struct A
 {
     A();
-    A(const volatile A&&);
+    A(const volatile A&&);	// { dg-error "argument 1" }
 };
 
                A    source();
@@ -41,9 +41,9 @@  seven sink_7_1234567(volatile       A&&);  // { dg-message "note" }
 int test7_1234567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_7_1234567(cv_source());  // { dg-error "no match" }
     return 0;
 }
@@ -59,9 +59,9 @@  eight sink_7_1235678(const volatile A&&); // { dg-message "" }
 int test7_1235678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_7_1235678(cva);	// { dg-error "lvalue" }
     return 0;
 }
@@ -77,9 +77,9 @@  eight sink_7_2345678(const volatile A&&);  // { dg-message "note" }
 int test7_2345678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_7_2345678(a);  // { dg-error "ambiguous" }
     return 0;
 }
@@ -95,9 +95,9 @@  eight sink_7_1234678(const volatile A&&);  // { dg-message "note" }
 int test7_1234678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca = a; // { dg-error "lvalue" }
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva = a; // { dg-error "lvalue" }
     sink_7_1234678(source());  // { dg-error "ambiguous" }
     return 0;
 }
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv7p.C b/gcc/testsuite/g++.dg/cpp0x/rv7p.C
index d25488f..710f1cf 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv7p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv7p.C
@@ -41,9 +41,9 @@  seven sink_7_1234567(volatile       A&&);
 int test7_1234567()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_7_1234567(a))           == 1> t1;
     sa<sizeof(sink_7_1234567(ca))          == 2> t2;
     sa<sizeof(sink_7_1234567(va))          == 3> t3;
@@ -65,9 +65,9 @@  eight sink_7_1234568(const volatile A&&);
 int test7_1234568()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_7_1234568(a))           == 1> t1;
     sa<sizeof(sink_7_1234568(ca))          == 2> t2;
     sa<sizeof(sink_7_1234568(va))          == 3> t3;
@@ -90,9 +90,9 @@  eight sink_7_1234578(const volatile A&&);
 int test7_1234578()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_7_1234578(a))           == 1> t1;
     sa<sizeof(sink_7_1234578(ca))          == 2> t2;
     sa<sizeof(sink_7_1234578(va))          == 3> t3;
@@ -115,9 +115,9 @@  eight sink_7_1234678(const volatile A&&);
 int test7_1234678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_7_1234678(a))           == 1> t1;
     sa<sizeof(sink_7_1234678(ca))          == 2> t2;
     sa<sizeof(sink_7_1234678(va))          == 3> t3;
@@ -139,9 +139,9 @@  eight sink_7_1235678(const volatile A&&);
 int test7_1235678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_7_1235678(a))           == 1> t1;
     sa<sizeof(sink_7_1235678(ca))          == 2> t2;
     sa<sizeof(sink_7_1235678(va))          == 3> t3;
@@ -163,9 +163,9 @@  eight sink_7_1245678(const volatile A&&);
 int test7_1245678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_7_1245678(a))           == 1> t1;
     sa<sizeof(sink_7_1245678(ca))          == 2> t2;
     sa<sizeof(sink_7_1245678(va))          == 4> t3;
@@ -188,9 +188,9 @@  eight sink_7_1345678(const volatile A&&);
 int test7_1345678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_7_1345678(a))           == 1> t1;
     sa<sizeof(sink_7_1345678(ca))          == 4> t2;
     sa<sizeof(sink_7_1345678(va))          == 3> t3;
@@ -213,9 +213,9 @@  eight sink_7_2345678(const volatile A&&);
 int test7_2345678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_7_2345678(ca))          == 2> t2;
     sa<sizeof(sink_7_2345678(va))          == 3> t3;
     sa<sizeof(sink_7_2345678(cva))         == 4> t4;
diff --git a/gcc/testsuite/g++.dg/cpp0x/rv8p.C b/gcc/testsuite/g++.dg/cpp0x/rv8p.C
index cc7ff8a..8ee9938 100644
--- a/gcc/testsuite/g++.dg/cpp0x/rv8p.C
+++ b/gcc/testsuite/g++.dg/cpp0x/rv8p.C
@@ -42,9 +42,9 @@  eight sink_8_12345678(const volatile A&&);
 int test8_12345678()
 {
                    A a;
-    const          A ca = a;
+    const          A ca;
           volatile A va;
-    const volatile A cva = a;
+    const volatile A cva;
     sa<sizeof(sink_8_12345678(a))           == 1> t1;
     sa<sizeof(sink_8_12345678(ca))          == 2> t2;
     sa<sizeof(sink_8_12345678(va))          == 3> t3;
diff --git a/gcc/testsuite/g++.dg/gomp/pr26690-1.C b/gcc/testsuite/g++.dg/gomp/pr26690-1.C
index c49c8b7..71f1eb3 100644
--- a/gcc/testsuite/g++.dg/gomp/pr26690-1.C
+++ b/gcc/testsuite/g++.dg/gomp/pr26690-1.C
@@ -1,7 +1,7 @@ 
 // PR c++/26690
 // { dg-do compile }
 
-struct A			// { dg-message "A::A\\(const A&\\)" }
+struct A			// { dg-message "A::A" }
 {
   A (int);				// { dg-message "candidates" }
 };
diff --git a/gcc/testsuite/g++.dg/other/error20.C b/gcc/testsuite/g++.dg/other/error20.C
index 6f3f778..e546b37 100644
--- a/gcc/testsuite/g++.dg/other/error20.C
+++ b/gcc/testsuite/g++.dg/other/error20.C
@@ -1,7 +1,7 @@ 
 // PR c++/34275
 // { dg-do compile }
 
-struct A			// { dg-message "candidate is" }
+struct A			// { dg-message "operator=" }
 {
   virtual A foo ();
 };
diff --git a/gcc/testsuite/g++.dg/other/error31.C b/gcc/testsuite/g++.dg/other/error31.C
index c409550..d3e3e09 100644
--- a/gcc/testsuite/g++.dg/other/error31.C
+++ b/gcc/testsuite/g++.dg/other/error31.C
@@ -3,7 +3,7 @@ 
 // { dg-options "" }
 // { dg-bogus "not supported by" "" { target *-*-* } 0 }
 
-struct A {};		// { dg-message "note: candidate is" }
+struct A {};		// { dg-message "operator=" }
 
 void
 foo ()
diff --git a/gcc/testsuite/g++.dg/parse/error19.C b/gcc/testsuite/g++.dg/parse/error19.C
index 0955e6a..3b7e717 100644
--- a/gcc/testsuite/g++.dg/parse/error19.C
+++ b/gcc/testsuite/g++.dg/parse/error19.C
@@ -1,7 +1,7 @@ 
 // { dg-options "-fshow-column -fmessage-length=0   -ansi -pedantic-errors -Wno-long-long " }
 // PR C++/17867
 
-struct A			// { dg-message "8:candidate is:" }
+struct A			// { dg-message "8:operator=" }
 {
   A(int);
 };
diff --git a/gcc/testsuite/g++.dg/template/qualttp5.C b/gcc/testsuite/g++.dg/template/qualttp5.C
index fc93f46..c3ebd8c 100644
--- a/gcc/testsuite/g++.dg/template/qualttp5.C
+++ b/gcc/testsuite/g++.dg/template/qualttp5.C
@@ -4,7 +4,7 @@ 
 
 template <class U> struct A
 {
-	template <class T> class B {}; // { dg-message "candidate is" }
+	template <class T> class B {}; // { dg-message "operator=" }
 };
 
 template <template <class> class TT> void f()
diff --git a/gcc/testsuite/g++.old-deja/g++.law/ctors5.C b/gcc/testsuite/g++.old-deja/g++.law/ctors5.C
index 7c37622..7b2c782 100644
--- a/gcc/testsuite/g++.old-deja/g++.law/ctors5.C
+++ b/gcc/testsuite/g++.old-deja/g++.law/ctors5.C
@@ -5,7 +5,7 @@ 
 // Subject: bug in handling static const object of the enclosing class
 // Date: Tue, 1 Sep 92 10:38:44 EDT
 
-class X	      // { dg-message "7:X::X\\(const X&\\)" } implicit constructor
+class X	      // { dg-message "7:X::X" } implicit constructor
 {
   private:
     int x;
diff --git a/libstdc++-v3/include/bits/unordered_map.h b/libstdc++-v3/include/bits/unordered_map.h
index 74998ff..80b970c 100644
--- a/libstdc++-v3/include/bits/unordered_map.h
+++ b/libstdc++-v3/include/bits/unordered_map.h
@@ -82,6 +82,8 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 		__eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
 	{ }
 
+      __unordered_map(const __unordered_map& __x) = default;
+
       __unordered_map(__unordered_map&& __x)
       : _Base(std::forward<_Base>(__x)) { }
     };
@@ -137,6 +139,8 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 		__eql, std::_Select1st<std::pair<const _Key, _Tp> >(), __a)
         { }
 
+      __unordered_multimap(const __unordered_multimap& __x) = default;
+
       __unordered_multimap(__unordered_multimap&& __x)
       : _Base(std::forward<_Base>(__x)) { }
     };
@@ -246,6 +250,8 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 	: _Base(__f, __l, __n, __hf, __eql, __a)
         { }
 
+      unordered_map(const unordered_map& __x) = default;
+
       unordered_map(unordered_map&& __x)
       : _Base(std::forward<_Base>(__x)) { }
 
@@ -258,6 +264,9 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       { }
 
       unordered_map&
+      operator=(const unordered_map& __x) = default;
+
+      unordered_map&
       operator=(unordered_map&& __x)
       {
 	// NB: DR 1204.
@@ -328,6 +337,8 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 	: _Base(__f, __l, __n, __hf, __eql, __a)
         { }
 
+      unordered_multimap(const unordered_multimap& __x) = default;
+
       unordered_multimap(unordered_multimap&& __x)
       : _Base(std::forward<_Base>(__x)) { }
 
@@ -340,6 +351,9 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       { }
 
       unordered_multimap&
+      operator=(const unordered_multimap& __x) = default;
+
+      unordered_multimap&
       operator=(unordered_multimap&& __x)
       {
 	// NB: DR 1204.
diff --git a/libstdc++-v3/include/bits/unordered_set.h b/libstdc++-v3/include/bits/unordered_set.h
index 50dee21..8682f2d 100644
--- a/libstdc++-v3/include/bits/unordered_set.h
+++ b/libstdc++-v3/include/bits/unordered_set.h
@@ -82,6 +82,8 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 		std::_Identity<_Value>(), __a)
         { }
 
+      __unordered_set(const __unordered_set& __x) = default;
+
       __unordered_set(__unordered_set&& __x)
       : _Base(std::forward<_Base>(__x)) { }
     };
@@ -135,6 +137,8 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 		std::_Identity<_Value>(), __a)
         { }
 
+      __unordered_multiset(const __unordered_multiset& __x) = default;
+
       __unordered_multiset(__unordered_multiset&& __x)
       : _Base(std::forward<_Base>(__x)) { }
     };
@@ -239,6 +243,8 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 	: _Base(__f, __l, __n, __hf, __eql, __a)
         { }
 
+      unordered_set(const unordered_set& __x) = default;
+
       unordered_set(unordered_set&& __x)
       : _Base(std::forward<_Base>(__x)) { }
 
@@ -251,6 +257,9 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       { }
 
       unordered_set&
+      operator=(const unordered_set& __x) = default;
+
+      unordered_set&
       operator=(unordered_set&& __x)
       {
 	// NB: DR 1204.
@@ -318,6 +327,8 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
 	: _Base(__f, __l, __n, __hf, __eql, __a)
         { }
 
+      unordered_multiset(const unordered_multiset& __x) = default;
+
       unordered_multiset(unordered_multiset&& __x)
       : _Base(std::forward<_Base>(__x)) { }
 
@@ -330,6 +341,9 @@  _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD_D)
       { }
 
       unordered_multiset&
+      operator=(const unordered_multiset& __x) = default;
+
+      unordered_multiset&
       operator=(unordered_multiset&& __x)
       {
 	// NB: DR 1204.