Disable all dependency output options when using the Tooling library.

It isn't appropriate for a tool to be stomping over the dependency files,
especially if the actual build uses a compiler other than Clang or the tool
cannot find all the headers for some reason (which would cause the existing
dependency file to be deleted).

If a tool actually needs to care about dependency files we can think about
adding a mechanism for getting to this information.

Differential Revision: http://llvm-reviews.chandlerc.com/D2912

llvm-svn: 202669
This commit is contained in:
Peter Collingbourne 2014-03-02 23:37:26 +00:00
parent b17a3b3d33
commit c0423b349b
2 changed files with 12 additions and 0 deletions

View File

@ -99,6 +99,7 @@ static clang::CompilerInvocation *newInvocation(
*Diagnostics);
Invocation->getFrontendOpts().DisableFree = false;
Invocation->getCodeGenOpts().DisableFree = false;
Invocation->getDependencyOutputOpts() = DependencyOutputOptions();
return Invocation;
}

View File

@ -236,6 +236,17 @@ TEST(runToolOnCode, TestSkipFunctionBody) {
"int skipMeNot() { an_error_here }"));
}
TEST(runToolOnCodeWithArgs, TestNoDepFile) {
llvm::SmallString<32> DepFilePath;
ASSERT_FALSE(
llvm::sys::fs::createTemporaryFile("depfile", "d", DepFilePath));
EXPECT_TRUE(runToolOnCodeWithArgs(
new SkipBodyAction, "",
{ "-MMD", "-MT", DepFilePath.str(), "-MF", DepFilePath.str() }));
EXPECT_FALSE(llvm::sys::fs::exists(DepFilePath.str()));
EXPECT_FALSE(llvm::sys::fs::remove(DepFilePath.str()));
}
struct CheckSyntaxOnlyAdjuster: public ArgumentsAdjuster {
bool &Found;
bool &Ran;