[Frontend] Flip default of CreateInvocationOptions::ProbePrecompiled to false
This is generally a better default for tools other than the compiler, which shouldn't assume a PCH file on disk is something they can consume. Preserve the old behavior in places associated with libclang/c-index-test (including ASTUnit) as there are tests relying on it and most important consumers are out-of-tree. It's unclear whether the tests are specifically trying to test this functionality, and what the downstream implications of removing it are. Hopefully someone more familiar can clean this up in future. Differential Revision: https://reviews.llvm.org/D125149
This commit is contained in:
parent
9e50168be4
commit
00a3c9f2a4
|
@ -206,7 +206,7 @@ struct CreateInvocationOptions {
|
|||
/// This is used to replace -include with -include-pch in the cc1 args.
|
||||
/// FIXME: ProbePrecompiled=true is a poor, historical default.
|
||||
/// It misbehaves if the PCH file is from GCC, has the wrong version, etc.
|
||||
bool ProbePrecompiled = true;
|
||||
bool ProbePrecompiled = false;
|
||||
/// If set, the target is populated with the cc1 args produced by the driver.
|
||||
/// This may be populated even if createInvocation returns nullptr.
|
||||
std::vector<std::string> *CC1Args = nullptr;
|
||||
|
|
|
@ -1732,6 +1732,7 @@ ASTUnit *ASTUnit::LoadFromCommandLine(
|
|||
CreateInvocationOptions CIOpts;
|
||||
CIOpts.VFS = VFS;
|
||||
CIOpts.Diags = Diags;
|
||||
CIOpts.ProbePrecompiled = true; // FIXME: historical default. Needed?
|
||||
CI = createInvocation(llvm::makeArrayRef(ArgBegin, ArgEnd),
|
||||
std::move(CIOpts));
|
||||
if (!CI)
|
||||
|
|
|
@ -223,6 +223,7 @@ static bool printSourceSymbols(const char *Executable,
|
|||
Diags(CompilerInstance::createDiagnostics(new DiagnosticOptions));
|
||||
CreateInvocationOptions CIOpts;
|
||||
CIOpts.Diags = Diags;
|
||||
CIOpts.ProbePrecompiled = true; // FIXME: historical default. Needed?
|
||||
auto CInvok = createInvocation(ArgsWithProgName, std::move(CIOpts));
|
||||
if (!CInvok)
|
||||
return true;
|
||||
|
|
|
@ -510,6 +510,7 @@ static CXErrorCode clang_indexSourceFile_Impl(
|
|||
|
||||
CreateInvocationOptions CIOpts;
|
||||
CIOpts.Diags = Diags;
|
||||
CIOpts.ProbePrecompiled = true; // FIXME: historical default. Needed?
|
||||
std::shared_ptr<CompilerInvocation> CInvok =
|
||||
createInvocation(*Args, std::move(CIOpts));
|
||||
|
||||
|
|
|
@ -48,20 +48,20 @@ TEST(BuildCompilerInvocationTest, ProbePrecompiled) {
|
|||
llvm::IntrusiveRefCntPtr<DiagnosticsEngine> CommandLineDiagsEngine =
|
||||
clang::CompilerInstance::createDiagnostics(new DiagnosticOptions, &D,
|
||||
false);
|
||||
// Default: ProbePrecompiled is true.
|
||||
// Default: ProbePrecompiled=false
|
||||
CreateInvocationOptions CIOpts;
|
||||
CIOpts.Diags = CommandLineDiagsEngine;
|
||||
CIOpts.VFS = FS;
|
||||
std::unique_ptr<CompilerInvocation> CI = createInvocation(Args, CIOpts);
|
||||
ASSERT_TRUE(CI);
|
||||
EXPECT_THAT(CI->getPreprocessorOpts().Includes, ElementsAre());
|
||||
EXPECT_EQ(CI->getPreprocessorOpts().ImplicitPCHInclude, "foo.h.pch");
|
||||
|
||||
CIOpts.ProbePrecompiled = false;
|
||||
CI = createInvocation(Args, CIOpts);
|
||||
ASSERT_TRUE(CI);
|
||||
EXPECT_THAT(CI->getPreprocessorOpts().Includes, ElementsAre("foo.h"));
|
||||
EXPECT_EQ(CI->getPreprocessorOpts().ImplicitPCHInclude, "");
|
||||
|
||||
CIOpts.ProbePrecompiled = true;
|
||||
CI = createInvocation(Args, CIOpts);
|
||||
ASSERT_TRUE(CI);
|
||||
EXPECT_THAT(CI->getPreprocessorOpts().Includes, ElementsAre());
|
||||
EXPECT_EQ(CI->getPreprocessorOpts().ImplicitPCHInclude, "foo.h.pch");
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
Loading…
Reference in New Issue