]> granicus.if.org Git - clang/commit
Preprocessor: don't consider // to be a line comment in -E -std=c89 mode.
authorJordan Rose <jordan_rose@apple.com>
Tue, 5 Mar 2013 22:51:04 +0000 (22:51 +0000)
committerJordan Rose <jordan_rose@apple.com>
Tue, 5 Mar 2013 22:51:04 +0000 (22:51 +0000)
commit693fdfa069b74ffe1f79caa3c9ea8754555d29bd
tree1b4de4012c96ec46a8905691818e197e5c51cdeb
parent99a7057098c56211e641705e1ff38d4b7c8b309d
Preprocessor: don't consider // to be a line comment in -E -std=c89 mode.

It's beneficial when compiling to treat // as the start of a line
comment even in -std=c89 mode, since it's not valid C code (with a few
rare exceptions) and is usually intended as such. We emit a pedantic
warning and then continue on as if line comments were enabled.
This has been our behavior for quite some time.

However, people use the preprocessor for things besides C source files.
In today's prompting example, the input contains (unquoted) URLs, which
contain // but should still be preserved.

This change instructs the lexer to treat // as a plain token if Clang is
in C90 mode and generating preprocessed output rather than actually compiling.

<rdar://problem/13338743>

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@176526 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Lex/Lexer.cpp
test/Preprocessor/c90.c
test/Preprocessor/traditional-cpp.c