Index: include/clang/CodeGen/BackendUtil.h =================================================================== --- include/clang/CodeGen/BackendUtil.h +++ include/clang/CodeGen/BackendUtil.h @@ -34,7 +34,7 @@ }; std::unique_ptr - CreateSpecialCaseList(const CodeGenOptions &CGOpts); + CreateSpecialCaseList(const LangOptions &LOpts, const CodeGenOptions &CGOpts); void EmitBackendOutput(DiagnosticsEngine &Diags, const CodeGenOptions &CGOpts, const TargetOptions &TOpts, const LangOptions &LOpts, Index: lib/CodeGen/BackendUtil.cpp =================================================================== --- lib/CodeGen/BackendUtil.cpp +++ lib/CodeGen/BackendUtil.cpp @@ -216,8 +216,9 @@ PassManagerBase &PM) { const PassManagerBuilderWrapper &BuilderWrapper = static_cast(Builder); + const LangOptions &LOpts = BuilderWrapper.getLangOpts(); const CodeGenOptions &CGOpts = BuilderWrapper.getCGOpts(); - PM.add(createDataFlowSanitizerPass(CreateSpecialCaseList(CGOpts))); + PM.add(createDataFlowSanitizerPass(CreateSpecialCaseList(LOpts, CGOpts))); } void EmitAssemblyHelper::CreatePasses() { @@ -590,11 +591,14 @@ } } -std::unique_ptr clang::CreateSpecialCaseList(const CodeGenOptions &CGOpts) { +std::unique_ptr +clang::CreateSpecialCaseList(const LangOptions &LOpts, + const CodeGenOptions &CGOpts) { auto SCL = llvm::make_unique(); for (const auto &Path : CGOpts.SanitizerBlacklistFiles) { std::string Error; - if (!SCL->loadFromFile(Path, Error)) { + if (!SCL->loadFromFile(Path, /*IsLiteral=*/LOpts.Sanitize.DataFlow, + Error)) { report_fatal_error(Error); } } Index: lib/CodeGen/CodeGenModule.cpp =================================================================== --- lib/CodeGen/CodeGenModule.cpp +++ lib/CodeGen/CodeGenModule.cpp @@ -90,7 +90,7 @@ NSConcreteStackBlock(nullptr), BlockObjectAssign(nullptr), BlockObjectDispose(nullptr), BlockDescriptorType(nullptr), GenericBlockLiteralType(nullptr), LifetimeStartFn(nullptr), - LifetimeEndFn(nullptr), SanitizerBL(CreateSpecialCaseList(CGO)), + LifetimeEndFn(nullptr), SanitizerBL(CreateSpecialCaseList(LangOpts, CGO)), SanitizerMD(new SanitizerMetadata(*this)) { // Initialize the type cache. Index: lib/Driver/SanitizerArgs.cpp =================================================================== --- lib/Driver/SanitizerArgs.cpp +++ lib/Driver/SanitizerArgs.cpp @@ -165,7 +165,7 @@ // Validate the blacklist format. std::string BLError; llvm::SpecialCaseList SCL; - if (!SCL.loadFromFile(BLPath, BLError)) + if (!SCL.loadFromFile(BLPath, /*IsLiteral=*/false, BLError)) D.Diag(diag::err_drv_malformed_sanitizer_blacklist) << BLError; else BlacklistFiles.push_back(BLPath);