<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Wed, Oct 1, 2014 at 11:03 AM, Fariborz Jahanian <span dir="ltr"><<a href="mailto:fjahanian@apple.com" target="_blank">fjahanian@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">Author: fjahanian<br>
Date: Wed Oct  1 13:03:51 2014<br>
New Revision: 218780<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=218780&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=218780&view=rev</a><br>
Log:<br>
c++ error recovery. Build a valid AST when trying<br>
to recover from parse error parsing the default<br>
argument. Patch prevents crash after spewing 100s<br>
of errors caused by someone who forgot to compile in c++11<br>
mode. So no test.</blockquote><div><br></div><div>I don't follow; why no test here? A testcase like this:</div><div><br></div><div>  struct S { void f(int &r = error); };</div><div><br></div><div>... would suffice.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">rdar://18508589<br>
<br>
Modified:<br>
    cfe/trunk/lib/Sema/SemaDeclCXX.cpp<br>
<br>
Modified: cfe/trunk/lib/Sema/SemaDeclCXX.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=218780&r1=218779&r2=218780&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDeclCXX.cpp?rev=218780&r1=218779&r2=218780&view=diff</a><br>
==============================================================================<br>
--- cfe/trunk/lib/Sema/SemaDeclCXX.cpp (original)<br>
+++ cfe/trunk/lib/Sema/SemaDeclCXX.cpp Wed Oct  1 13:03:51 2014<br>
@@ -353,7 +353,9 @@ void Sema::ActOnParamDefaultArgumentErro<br>
   Param->setInvalidDecl();<br>
   UnparsedDefaultArgLocs.erase(Param);<br>
   Param->setDefaultArg(new(Context)<br>
-                       OpaqueValueExpr(EqualLoc, Param->getType(), VK_RValue));<br>
+                       OpaqueValueExpr(EqualLoc,<br>
+                                       Param->getType().getNonReferenceType(),<br>
+                                       VK_RValue));<br>
 }<br>
<br>
 /// CheckExtraCXXDefaultArguments - Check for any extra default<br>
<br>
<br>
_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div></div>