Fix PR1936, a crash on malformed #if. Thanks to Neil for

noticing this!


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46256 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2008-01-22 19:34:51 +00:00
Родитель 9e18d3ed84
Коммит c21d9e4766
2 изменённых файлов: 11 добавлений и 3 удалений

Просмотреть файл

@ -939,9 +939,9 @@ MacroArgs *Preprocessor::ReadFunctionLikeMacroArgs(Token &MacroName,
// an argument value in a macro could expand to ',' or '(' or ')'.
LexUnexpandedToken(Tok);
if (Tok.is(tok::eof)) {
if (Tok.is(tok::eof) || Tok.is(tok::eom)) { // "#if f(<eof>" & "#if f(\n"
Diag(MacroName, diag::err_unterm_macro_invoc);
// Do not lose the EOF. Return it to the client.
// Do not lose the EOF/EOM. Return it to the client.
MacroName = Tok;
return 0;
} else if (Tok.is(tok::r_paren)) {

Просмотреть файл

@ -1,7 +1,15 @@
/* RUN: clang %s 2>&1 | grep error: | count 1
/* RUN: clang %s 2>&1 | grep error: | count 3
*/
#ifdef
#endif
/* End of function-like macro invocation in #ifdef */
/* PR1936 */
#define f(x) x
#if f(2
#endif
int x;