Disallow catching exceptions by rvalue reference.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67492 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Sema/SemaOverload.cpp b/lib/Sema/SemaOverload.cpp
index 5321935..9f88a87 100644
--- a/lib/Sema/SemaOverload.cpp
+++ b/lib/Sema/SemaOverload.cpp
@@ -1584,15 +1584,26 @@
         = CompareQualificationConversions(SCS1, SCS2))
     return QualCK;
 
-  // C++ [over.ics.rank]p3b4:
-  //   -- S1 and S2 are reference bindings (8.5.3), and the types to
-  //      which the references refer are the same type except for
-  //      top-level cv-qualifiers, and the type to which the reference
-  //      initialized by S2 refers is more cv-qualified than the type
-  //      to which the reference initialized by S1 refers.
   if (SCS1.ReferenceBinding && SCS2.ReferenceBinding) {
     QualType T1 = QualType::getFromOpaquePtr(SCS1.ToTypePtr);
     QualType T2 = QualType::getFromOpaquePtr(SCS2.ToTypePtr);
+    // C++0x [over.ics.rank]p3b4:
+    //   -- S1 and S2 are reference bindings (8.5.3) and neither refers to an
+    //      implicit object parameter of a non-static member function declared
+    //      without a ref-qualifier, and S1 binds an rvalue reference to an
+    //      rvalue and S2 binds an lvalue reference.
+    // FIXME: We have far too little information for this check. We don't know
+    // if the bound object is an rvalue. We don't know if the binding type is
+    // an rvalue or lvalue reference. We don't know if we're dealing with the
+    // implicit object parameter, or if the member function in this case has
+    // a ref qualifier.
+
+    // C++ [over.ics.rank]p3b4:
+    //   -- S1 and S2 are reference bindings (8.5.3), and the types to
+    //      which the references refer are the same type except for
+    //      top-level cv-qualifiers, and the type to which the reference
+    //      initialized by S2 refers is more cv-qualified than the type
+    //      to which the reference initialized by S1 refers.
     T1 = Context.getCanonicalType(T1);
     T2 = Context.getCanonicalType(T2);
     if (T1.getUnqualifiedType() == T2.getUnqualifiedType()) {