]> granicus.if.org Git - clang/commit
[Preprocessor] Correct internal token parsing of newline characters in CRLF
authorErich Keane <erich.keane@intel.com>
Thu, 24 Aug 2017 18:36:07 +0000 (18:36 +0000)
committerErich Keane <erich.keane@intel.com>
Thu, 24 Aug 2017 18:36:07 +0000 (18:36 +0000)
commit6d8609db4d42605a8a0e2e2620e9e38bf1b29d3c
tree7ebbae4623204716daefc14964eb4a2f085b0075
parent2fee69a47a6ee02a24132d30c2c479d861a68b93
[Preprocessor] Correct internal token parsing of newline characters in CRLF

Discovered due to a goofy git setup, the test system-headerline-directive.c
(and a few others) failed because the token-consumption will consume only the
'\r' in CRLF, making the preprocessor's printed value give the wrong line number
when returning from an include. For example:

(line 1):#include <noline.h>\r\n

The "file exit" code causes the printer to try to print the 'returned to the
main file' line. It looks up what the current line number is. However, since the
current 'token' is the '\n' (since only the \r was consumed), it will give the
line number as '1", not '2'. This results in a few failed tests, but more
importantly, results in error messages being incorrect when compiling a
previously preprocessed file.

Differential Revision: https://reviews.llvm.org/D37079

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@311683 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Lex/Lexer.cpp
test/Frontend/.gitattributes [new file with mode: 0644]
test/Frontend/system-header-line-directive-ms-lineendings.c [new file with mode: 0644]