+2019-12-09  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+       * gdbtypes.c (rank_one_type): Return INCOMPATIBLE_TYPE_BADNESS
+       when ranking an lvalue argument for an rvalue parameter.
+
 2019-12-08  Wataru Ashihara  <wataash@wataash.com>
 
        * darwin-nat.c (darwin_nat_target::create_inferior): Fix
 
        }
       else
        {
-         /* Lvalues should prefer lvalue overloads.  */
+         /* It's illegal to pass an lvalue as an rvalue.  */
          if (TYPE_CODE (parm) == TYPE_CODE_RVALUE_REF)
-           {
-             rank.subrank = REFERENCE_CONVERSION_RVALUE;
-             return sum_ranks (rank, REFERENCE_CONVERSION_BADNESS);
-           }
+           return INCOMPATIBLE_TYPE_BADNESS;
        }
     }
 
 
+2019-12-09  Tankut Baris Aktemur  <tankut.baris.aktemur@intel.com>
+
+       * gdb.cp/rvalue-ref-overload.cc (g): New function that takes
+       an rvalue parameter.
+       * gdb.cp/rvalue-ref-overload.exp: Test calling it with an lvalue
+       parameter.
+
 2019-12-09  Andrew Burgess  <andrew.burgess@embecosm.com>
 
        * gdb.mi/mi-fortran-modules.exp: Add patterns to skip system
 
   return 3;
 }
 
+static int
+g (int &&x)
+{
+  return x;
+}
+
 int
 main ()
 {
   int test_const // = 3
     = foo_rr_instance1.overloadConst (arg);
 
+  /* The statement below is illegal: cannot bind rvalue reference of
+     type 'int&&' to lvalue of type 'int'.
+
+     result = g (i); */
+  result = g (5); // this is OK
+
   marker1 (); // marker1-returns-here
   return result;
 }
 
 
 setup_kfail "c++/15372" "*-*-*"
 gdb_test "print f (3)" "3" "rvalue reference overload"
+
+gdb_test "print g (i)" \
+    "Cannot resolve function g to any overloaded instance" \
+    "passing lvalue arg to rvalue parameter"