зеркало из https://github.com/microsoft/clang-1.git
When we decide not to reuse a precompiled preamble, clear out the
previous precompiled preamble completely. Fixes <rdar://problem/8330950>. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111590 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
096832c5ed
Коммит
f128fed9c2
|
@ -698,9 +698,11 @@ bool ASTUnit::Parse(llvm::MemoryBuffer *OverrideMainBuffer) {
|
|||
CleanTemporaryFiles();
|
||||
PreprocessedEntitiesByFile.clear();
|
||||
|
||||
if (!OverrideMainBuffer)
|
||||
if (!OverrideMainBuffer) {
|
||||
StoredDiagnostics.clear();
|
||||
|
||||
TopLevelDeclsInPreamble.clear();
|
||||
}
|
||||
|
||||
// Create a file manager object to provide access to and cache the filesystem.
|
||||
Clang.setFileManager(&getFileManager());
|
||||
|
||||
|
@ -733,6 +735,9 @@ bool ASTUnit::Parse(llvm::MemoryBuffer *OverrideMainBuffer) {
|
|||
getSourceManager());
|
||||
StoredDiagnostics[I].setLocation(Loc);
|
||||
}
|
||||
} else {
|
||||
PreprocessorOpts.PrecompiledPreambleBytes.first = 0;
|
||||
PreprocessorOpts.PrecompiledPreambleBytes.second = false;
|
||||
}
|
||||
|
||||
llvm::OwningPtr<TopLevelDeclTrackerAction> Act;
|
||||
|
@ -1415,6 +1420,14 @@ bool ASTUnit::Reparse(RemappedFile *RemappedFiles, unsigned NumRemappedFiles) {
|
|||
}
|
||||
|
||||
// Remap files.
|
||||
PreprocessorOptions &PPOpts = Invocation->getPreprocessorOpts();
|
||||
for (PreprocessorOptions::remapped_file_buffer_iterator
|
||||
R = PPOpts.remapped_file_buffer_begin(),
|
||||
REnd = PPOpts.remapped_file_buffer_end();
|
||||
R != REnd;
|
||||
++R) {
|
||||
delete R->second;
|
||||
}
|
||||
Invocation->getPreprocessorOpts().clearRemappedFiles();
|
||||
for (unsigned I = 0; I != NumRemappedFiles; ++I)
|
||||
Invocation->getPreprocessorOpts().addRemappedFile(RemappedFiles[I].first,
|
||||
|
@ -1772,6 +1785,9 @@ void ASTUnit::CodeComplete(llvm::StringRef File, unsigned Line, unsigned Column,
|
|||
FullSourceLoc Loc(StoredDiagnostics[I].getLocation(), SourceMgr);
|
||||
StoredDiagnostics[I].setLocation(Loc);
|
||||
}
|
||||
} else {
|
||||
PreprocessorOpts.PrecompiledPreambleBytes.first = 0;
|
||||
PreprocessorOpts.PrecompiledPreambleBytes.second = false;
|
||||
}
|
||||
|
||||
llvm::OwningPtr<SyntaxOnlyAction> Act;
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
|
||||
|
|
@ -0,0 +1 @@
|
|||
int x;
|
|
@ -0,0 +1,2 @@
|
|||
// RUN: env CINDEXTEST_EDITING=1 c-index-test -test-load-source-reparse 5 local "-remap-file=%S/Inputs/preamble-reparse-1.c;%S/Inputs/preamble-reparse-2.c" %S/Inputs/preamble-reparse-1.c | FileCheck %s
|
||||
// CHECK: preamble-reparse-1.c:1:5: VarDecl=x:1:5 Extent=[1:1 - 1:6]
|
Загрузка…
Ссылка в новой задаче