mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2024-12-13 19:24:21 +00:00
When we decide not to reuse a precompiled preamble, clear out the
previous precompiled preamble completely. Fixes <rdar://problem/8330950>. llvm-svn: 111590
This commit is contained in:
parent
a6480c124e
commit
7b02b583b2
@ -698,8 +698,10 @@ 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;
|
||||
|
2
clang/test/Index/Inputs/preamble-reparse-1.c
Normal file
2
clang/test/Index/Inputs/preamble-reparse-1.c
Normal file
@ -0,0 +1,2 @@
|
||||
|
||||
|
1
clang/test/Index/Inputs/preamble-reparse-2.c
Normal file
1
clang/test/Index/Inputs/preamble-reparse-2.c
Normal file
@ -0,0 +1 @@
|
||||
int x;
|
2
clang/test/Index/preamble-reparse.c
Normal file
2
clang/test/Index/preamble-reparse.c
Normal file
@ -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]
|
Loading…
Reference in New Issue
Block a user