<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Aug 14, 2014 at 12:47 PM, Reid Kleckner <span dir="ltr"><<a href="mailto:reid@kleckner.net" target="_blank">reid@kleckner.net</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: rnk<br>
Date: Thu Aug 14 14:47:06 2014<br>
New Revision: 215672<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=215672&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=215672&view=rev</a><br>
Log:<br>
Don't Lex past EOF when lexing _Pragma<br>
<br>
Fixes PR20662.<br>
<br>
Modified:<br>
    cfe/trunk/lib/Lex/Pragma.cpp<br>
    cfe/trunk/test/Preprocessor/_Pragma.c<br>
<br>
Modified: cfe/trunk/lib/Lex/Pragma.cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Pragma.cpp?rev=215672&r1=215671&r2=215672&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Lex/Pragma.cpp?rev=215672&r1=215671&r2=215672&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/lib/Lex/Pragma.cpp (original)<br>
+++ cfe/trunk/lib/Lex/Pragma.cpp Thu Aug 14 14:47:06 2014<br>
@@ -193,7 +193,7 @@ void Preprocessor::Handle_Pragma(Token &<br>
   if (!tok::isStringLiteral(Tok.getKind())) {<br>
     Diag(PragmaLoc, diag::err__Pragma_malformed);<br>
     // Skip this token, and the ')', if present.<br>
-    if (Tok.isNot(tok::r_paren))<br>
+    if (Tok.isNot(tok::r_paren) && Tok.isNot(tok::eof))<br></blockquote><div><br></div><div>This should probably also stop at EOD and EOM (tok::eod, tok::annot_module_*).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

       Lex(Tok);<br>
     if (Tok.is(tok::r_paren))<br>
       Lex(Tok);<br>
<br>
Modified: cfe/trunk/test/Preprocessor/_Pragma.c<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/_Pragma.c?rev=215672&r1=215671&r2=215672&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/_Pragma.c?rev=215672&r1=215671&r2=215672&view=diff</a><br>

==============================================================================<br>
--- cfe/trunk/test/Preprocessor/_Pragma.c (original)<br>
+++ cfe/trunk/test/Preprocessor/_Pragma.c Thu Aug 14 14:47:06 2014<br>
@@ -11,3 +11,5 @@ _Pragma("message(\"foo \\\\\\\\ bar\")")<br>
 #ifdef macro<br>
 #error #define invalid<br>
 #endif<br>
+<br>
+_Pragma( // expected-error{{_Pragma takes a parenthesized string literal}}<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>