llvm-project/clang/lib/Frontend
Cameron Desrochers 84fd064ef9 [PCH] Fixed preamble breaking with BOM presence (and particularly, fluctuating BOM presence)
This patch fixes broken preamble-skipping when the preamble region includes a byte order mark (BOM). Previously, parsing would fail if preamble PCH generation was enabled and a BOM was present.

This also fixes preamble invalidation when a BOM appears or disappears. This may seem to be an obscure edge case, but it happens regularly with IDEs that pass buffer overrides that never (or always) have a BOM, yet the underlying file from the initial parse that generated a PCH might (or might not) have a BOM.

I've included a test case for these scenarios.

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

llvm-svn: 313796
2017-09-20 19:03:37 +00:00
..
Rewrite [CMake] Move CLANG_ENABLE_(ARCMT|OBJC_REWRITER|STATIC_ANALYZER) into clang/Config/config.h. 2017-07-18 08:55:03 +00:00
ASTConsumers.cpp Handle -ast-dump-all when passed as the only option. 2017-06-15 00:00:08 +00:00
ASTMerge.cpp Teach ASTReader how to read only the Preprocessor state from an AST file, not the ASTContext state. 2017-06-29 23:23:46 +00:00
ASTUnit.cpp [PCH] Allow VFS to be used for tests that generate PCH files 2017-09-11 15:03:23 +00:00
CMakeLists.txt Moved code hanlding precompiled preamble out of the ASTUnit. 2017-06-21 10:24:58 +00:00
CacheTokens.cpp Fix the build with MSVC 2013 after r283856 2016-10-11 17:24:09 +00:00
ChainedDiagnosticConsumer.cpp
ChainedIncludesSource.cpp Teach ASTReader how to read only the Preprocessor state from an AST file, not the ASTContext state. 2017-06-29 23:23:46 +00:00
CodeGenOptions.cpp revert SVN r265702, r265640 2016-04-08 16:52:00 +00:00
CompilerInstance.cpp Use the VFS from the CompilerInvocation by default 2017-09-12 16:54:53 +00:00
CompilerInvocation.cpp [MSan] Add flag to disable use-after-dtor. 2017-09-14 23:14:37 +00:00
CreateInvocationFromCommandLine.cpp Use vfs::FileSystem in ASTUnit when creating CompilerInvocation. 2017-06-28 15:06:34 +00:00
DependencyFile.cpp Track the set of module maps read while building a .pcm file and reload those when preprocessing from that .pcm file. 2017-06-29 02:19:42 +00:00
DependencyGraph.cpp Revert r240270 ("Fixed/added namespace ending comments using clang-tidy"). 2015-06-22 23:07:51 +00:00
DiagnosticRenderer.cpp Revert "Revert "[NFC] Refactor DiagnosticRenderer to use FullSourceLoc"" 2017-06-27 09:50:38 +00:00
FrontendAction.cpp Use the VFS from the CompilerInvocation by default 2017-09-12 16:54:53 +00:00
FrontendActions.cpp [PCH] Fixed preamble breaking with BOM presence (and particularly, fluctuating BOM presence) 2017-09-20 19:03:37 +00:00
FrontendOptions.cpp Move functionality for handling module maps as inputs from the -emit-module 2017-04-28 01:49:42 +00:00
HeaderIncludeGen.cpp [Frontend] StringRefize and fix bad indentation. 2016-05-27 12:52:19 +00:00
InitHeaderSearch.cpp Add /System/Library/PrivateFrameworks as a header search path. 2017-09-14 23:38:44 +00:00
InitPreprocessor.cpp This adds the _Float16 preprocessor macro definitions. 2017-09-13 15:23:19 +00:00
LangStandards.cpp Don't accept -std= values that would switch us to a different source language. 2017-04-26 23:44:33 +00:00
LayoutOverrideSource.cpp Annotate dump() methods with LLVM_DUMP_METHOD, addressing Richard Smith r259192 post commit comment. 2016-01-29 19:38:18 +00:00
LogDiagnosticPrinter.cpp Replace double negation of !FileID.isInvalid() with FileID.isValid(). 2015-10-03 10:46:20 +00:00
ModuleDependencyCollector.cpp fix trivial typos; NFC 2017-07-01 08:46:43 +00:00
MultiplexConsumer.cpp PR29097: add an update record when we instantiate the default member 2016-08-24 21:25:37 +00:00
PCHContainerOperations.cpp Bitcode: Decouple block info block state from reader. 2016-11-08 04:17:11 +00:00
PrecompiledPreamble.cpp [PCH] Fixed preamble breaking with BOM presence (and particularly, fluctuating BOM presence) 2017-09-20 19:03:37 +00:00
PrintPreprocessedOutput.cpp [NFC] Refactor the Preprocessor function that handles Macro definitions and rename Arguments to Parameters in Macro Definitions. 2017-07-17 17:18:43 +00:00
SerializedDiagnosticPrinter.cpp Revert "Revert "[NFC] Refactor DiagnosticRenderer to use FullSourceLoc"" 2017-06-27 09:50:38 +00:00
SerializedDiagnosticReader.cpp [Frontend] Verify that the bitstream is not empty before reading 2017-07-07 10:25:12 +00:00
TestModuleFileExtension.cpp Fix for LLVM Bitcode API change (to use std::shared_ptr) 2017-01-04 22:36:43 +00:00
TestModuleFileExtension.h Module file extensions: pass a Sema through to the extension writer. 2015-12-08 22:43:32 +00:00
TextDiagnostic.cpp [clang] buildFixItInsertionLine should use Hints of the same FID and LineNo 2017-07-12 16:25:40 +00:00
TextDiagnosticBuffer.cpp Replace push_back(Constructor(foo)) with emplace_back(foo) for non-trivial types 2015-05-29 19:42:19 +00:00
TextDiagnosticPrinter.cpp Revert "Revert "[NFC] Refactor DiagnosticRenderer to use FullSourceLoc"" 2017-06-27 09:50:38 +00:00
VerifyDiagnosticConsumer.cpp Preprocessor: Suppress -Wnonportable-include-path for header maps 2017-04-27 21:41:51 +00:00