aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Tooling/CompilationDatabase.cpp
diff options
context:
space:
mode:
authorSam McCall <sam.mccall@gmail.com>2024-01-19 14:02:04 +0100
committerGitHub <noreply@github.com>2024-01-19 14:02:04 +0100
commit1ab418beb3cc9c31ebb2d5779069426d761ceb8f (patch)
treec1ab3ce7eb67b72b701927c3a0ede08ea4d81ce2 /clang/lib/Tooling/CompilationDatabase.cpp
parent689da340edaa9f61dfae90e94ac69bfe189ee78f (diff)
downloadllvm-1ab418beb3cc9c31ebb2d5779069426d761ceb8f.zip
llvm-1ab418beb3cc9c31ebb2d5779069426d761ceb8f.tar.gz
llvm-1ab418beb3cc9c31ebb2d5779069426d761ceb8f.tar.bz2
[Tooling] Fix FixedCompilationDatabase with header compile flags (#73913)
Summary: The logic to strip positional args feels very fragile, but it's terribly useful when you want to use a tool on a file and have the exact argv. Today doesn't work with header-parsing actions because these are "precompile" rather than "compile", from tooling's perspective it's all the same. Reviewers: kadircet Subscribers:
Diffstat (limited to 'clang/lib/Tooling/CompilationDatabase.cpp')
-rw-r--r--clang/lib/Tooling/CompilationDatabase.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/clang/lib/Tooling/CompilationDatabase.cpp b/clang/lib/Tooling/CompilationDatabase.cpp
index 87ad8f2..9d8f0d0 100644
--- a/clang/lib/Tooling/CompilationDatabase.cpp
+++ b/clang/lib/Tooling/CompilationDatabase.cpp
@@ -156,6 +156,7 @@ private:
bool CollectChildren = Collect;
switch (A->getKind()) {
case driver::Action::CompileJobClass:
+ case driver::Action::PrecompileJobClass:
CollectChildren = true;
break;
@@ -293,7 +294,8 @@ static bool stripPositionalArgs(std::vector<const char *> Args,
// -flto* flags make the BackendJobClass, which still needs analyzer.
if (Cmd.getSource().getKind() == driver::Action::AssembleJobClass ||
Cmd.getSource().getKind() == driver::Action::BackendJobClass ||
- Cmd.getSource().getKind() == driver::Action::CompileJobClass) {
+ Cmd.getSource().getKind() == driver::Action::CompileJobClass ||
+ Cmd.getSource().getKind() == driver::Action::PrecompileJobClass) {
CompileAnalyzer.run(&Cmd.getSource());
}
}