r241035 - Pass HeaderSearchOptions and PreprocessorOptions into CodeGenModule.
Adrian Prantl via cfe-commits
cfe-commits at lists.llvm.org
Mon Sep 28 16:58:12 PDT 2015
Thanks, Eric!
Should be fixed in r248762.
-- adrian
> On Sep 28, 2015, at 4:40 PM, Eric Christopher <echristo at gmail.com> wrote:
>
> Actually using the right list now...
>
> On Mon, Sep 28, 2015 at 4:39 PM Eric Christopher <echristo at gmail.com> wrote:
> Hi Adrian,
>
>
> : CGO(new CodeGenOptions),
> - CGM(new CodeGen::CodeGenModule(C, *CGO, M, TD, C.getDiagnostics(),
> + HSO(new HeaderSearchOptions),
> + PPO(new PreprocessorOptions),
> + CGM(new CodeGen::CodeGenModule(C, *HSO, *PPO, *CGO,
> + M, TD, C.getDiagnostics(),
> CoverageInfo)) {
> }
>
>
>
> Sorry to do archaeology on this thread, but I see you added these as "new" here, but didn't use delete on them a few lines down. Any reason?
>
> Also, might want to make them use unique_ptr while you're at it :)
>
> -eric
>
> Modified: cfe/trunk/lib/CodeGen/CodeGenAction.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenAction.cpp?rev=241035&r1=241034&r2=241035&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CodeGenAction.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CodeGenAction.cpp Mon Jun 29 21:26:03 2015
> @@ -57,6 +57,8 @@ namespace clang {
>
> public:
> BackendConsumer(BackendAction Action, DiagnosticsEngine &Diags,
> + const HeaderSearchOptions &HeaderSearchOpts,
> + const PreprocessorOptions &PPOpts,
> const CodeGenOptions &CodeGenOpts,
> const TargetOptions &TargetOpts,
> const LangOptions &LangOpts, bool TimePasses,
> @@ -66,7 +68,8 @@ namespace clang {
> : Diags(Diags), Action(Action), CodeGenOpts(CodeGenOpts),
> TargetOpts(TargetOpts), LangOpts(LangOpts), AsmOutStream(OS),
> Context(nullptr), LLVMIRGeneration("LLVM IR Generation Time"),
> - Gen(CreateLLVMCodeGen(Diags, InFile, CodeGenOpts, C, CoverageInfo)),
> + Gen(CreateLLVMCodeGen(Diags, InFile, HeaderSearchOpts, PPOpts,
> + CodeGenOpts, C, CoverageInfo)),
> LinkModule(LinkModule) {
> llvm::TimePassesIsEnabled = TimePasses;
> }
> @@ -667,7 +670,8 @@ CodeGenAction::CreateASTConsumer(Compile
> std::unique_ptr<PPCallbacks>(CoverageInfo));
> }
> std::unique_ptr<BackendConsumer> Result(new BackendConsumer(
> - BA, CI.getDiagnostics(), CI.getCodeGenOpts(), CI.getTargetOpts(),
> + BA, CI.getDiagnostics(), CI.getHeaderSearchOpts(),
> + CI.getPreprocessorOpts(), CI.getCodeGenOpts(), CI.getTargetOpts(),
> CI.getLangOpts(), CI.getFrontendOpts().ShowTimers, InFile,
> LinkModuleToUse, OS, *VMContext, CoverageInfo));
> BEConsumer = Result.get();
>
> Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=241035&r1=241034&r2=241035&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original)
> +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Mon Jun 29 21:26:03 2015
> @@ -74,16 +74,19 @@ static CGCXXABI *createCXXABI(CodeGenMod
> llvm_unreachable("invalid C++ ABI kind");
> }
>
> -CodeGenModule::CodeGenModule(ASTContext &C, const CodeGenOptions &CGO,
> - llvm::Module &M, const llvm::DataLayout &TD,
> +CodeGenModule::CodeGenModule(ASTContext &C, const HeaderSearchOptions &HSO,
> + const PreprocessorOptions &PPO,
> + const CodeGenOptions &CGO, llvm::Module &M,
> + const llvm::DataLayout &TD,
> DiagnosticsEngine &diags,
> CoverageSourceInfo *CoverageInfo)
> - : Context(C), LangOpts(C.getLangOpts()), CodeGenOpts(CGO), TheModule(M),
> - Diags(diags), TheDataLayout(TD), Target(C.getTargetInfo()),
> - ABI(createCXXABI(*this)), VMContext(M.getContext()), TBAA(nullptr),
> - TheTargetCodeGenInfo(nullptr), Types(*this), VTables(*this),
> - ObjCRuntime(nullptr), OpenCLRuntime(nullptr), OpenMPRuntime(nullptr),
> - CUDARuntime(nullptr), DebugInfo(nullptr), ARCData(nullptr),
> + : Context(C), LangOpts(C.getLangOpts()), HeaderSearchOpts(HSO),
> + PreprocessorOpts(PPO), CodeGenOpts(CGO), TheModule(M), Diags(diags),
> + TheDataLayout(TD), Target(C.getTargetInfo()), ABI(createCXXABI(*this)),
> + VMContext(M.getContext()), TBAA(nullptr), TheTargetCodeGenInfo(nullptr),
> + Types(*this), VTables(*this), ObjCRuntime(nullptr),
> + OpenCLRuntime(nullptr), OpenMPRuntime(nullptr), CUDARuntime(nullptr),
> + DebugInfo(nullptr), ARCData(nullptr),
> NoObjCARCExceptionsMetadata(nullptr), RRData(nullptr), PGOReader(nullptr),
> CFConstantStringClassRef(nullptr), ConstantStringClassRef(nullptr),
> NSConstantStringType(nullptr), NSConcreteGlobalBlock(nullptr),
>
> Modified: cfe/trunk/lib/CodeGen/CodeGenModule.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.h?rev=241035&r1=241034&r2=241035&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/CodeGenModule.h (original)
> +++ cfe/trunk/lib/CodeGen/CodeGenModule.h Mon Jun 29 21:26:03 2015
> @@ -69,6 +69,8 @@ class ValueDecl;
> class VarDecl;
> class LangOptions;
> class CodeGenOptions;
> +class HeaderSearchOptions;
> +class PreprocessorOptions;
> class DiagnosticsEngine;
> class AnnotateAttr;
> class CXXDestructorDecl;
> @@ -278,6 +280,8 @@ public:
> private:
> ASTContext &Context;
> const LangOptions &LangOpts;
> + const HeaderSearchOptions &HeaderSearchOpts; // Only used for debug info.
> + const PreprocessorOptions &PreprocessorOpts; // Only used for debug info.
> const CodeGenOptions &CodeGenOpts;
> llvm::Module &TheModule;
> DiagnosticsEngine &Diags;
> @@ -488,7 +492,10 @@ private:
>
> std::unique_ptr<CoverageMappingModuleGen> CoverageMapping;
> public:
> - CodeGenModule(ASTContext &C, const CodeGenOptions &CodeGenOpts,
> + CodeGenModule(ASTContext &C,
> + const HeaderSearchOptions &headersearchopts,
> + const PreprocessorOptions &ppopts,
> + const CodeGenOptions &CodeGenOpts,
> llvm::Module &M, const llvm::DataLayout &TD,
> DiagnosticsEngine &Diags,
> CoverageSourceInfo *CoverageInfo = nullptr);
> @@ -600,6 +607,10 @@ public:
>
> ASTContext &getContext() const { return Context; }
> const LangOptions &getLangOpts() const { return LangOpts; }
> + const HeaderSearchOptions &getHeaderSearchOpts()
> + const { return HeaderSearchOpts; }
> + const PreprocessorOptions &getPreprocessorOpts()
> + const { return PreprocessorOpts; }
> const CodeGenOptions &getCodeGenOpts() const { return CodeGenOpts; }
> llvm::Module &getModule() const { return TheModule; }
> DiagnosticsEngine &getDiags() const { return Diags; }
>
> Modified: cfe/trunk/lib/CodeGen/ModuleBuilder.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ModuleBuilder.cpp?rev=241035&r1=241034&r2=241035&view=diff
> ==============================================================================
> --- cfe/trunk/lib/CodeGen/ModuleBuilder.cpp (original)
> +++ cfe/trunk/lib/CodeGen/ModuleBuilder.cpp Mon Jun 29 21:26:03 2015
> @@ -32,6 +32,8 @@ namespace {
> DiagnosticsEngine &Diags;
> std::unique_ptr<const llvm::DataLayout> TD;
> ASTContext *Ctx;
> + const HeaderSearchOptions &HeaderSearchOpts; // Only used for debug info.
> + const PreprocessorOptions &PreprocessorOpts; // Only used for debug info.
> const CodeGenOptions CodeGenOpts; // Intentionally copied in.
>
> unsigned HandlingTopLevelDecls;
> @@ -56,12 +58,15 @@ namespace {
> SmallVector<CXXMethodDecl *, 8> DeferredInlineMethodDefinitions;
>
> public:
> - CodeGeneratorImpl(DiagnosticsEngine &diags, const std::string& ModuleName,
> - const CodeGenOptions &CGO, llvm::LLVMContext& C,
> + CodeGeneratorImpl(DiagnosticsEngine &diags, const std::string &ModuleName,
> + const HeaderSearchOptions &HSO,
> + const PreprocessorOptions &PPO, const CodeGenOptions &CGO,
> + llvm::LLVMContext &C,
> CoverageSourceInfo *CoverageInfo = nullptr)
> - : Diags(diags), Ctx(nullptr), CodeGenOpts(CGO), HandlingTopLevelDecls(0),
> - CoverageInfo(CoverageInfo),
> - M(new llvm::Module(ModuleName, C)) {}
> + : Diags(diags), Ctx(nullptr), HeaderSearchOpts(HSO),
> + PreprocessorOpts(PPO), CodeGenOpts(CGO), HandlingTopLevelDecls(0),
> + CoverageInfo(CoverageInfo),
> + M(new llvm::Module(ModuleName, C)) {}
>
> ~CodeGeneratorImpl() override {
> // There should normally not be any leftover inline method definitions.
> @@ -97,7 +102,10 @@ namespace {
> M->setDataLayout(Ctx->getTargetInfo().getTargetDescription());
> TD.reset(
> new llvm::DataLayout(Ctx->getTargetInfo().getTargetDescription()));
> - Builder.reset(new CodeGen::CodeGenModule(Context, CodeGenOpts, *M, *TD,
> + Builder.reset(new CodeGen::CodeGenModule(Context,
> + HeaderSearchOpts,
> + PreprocessorOpts,
> + CodeGenOpts, *M, *TD,
> Diags, CoverageInfo));
>
> for (size_t i = 0, e = CodeGenOpts.DependentLibraries.size(); i < e; ++i)
> @@ -236,10 +244,11 @@ namespace {
>
> void CodeGenerator::anchor() { }
>
> -CodeGenerator *clang::CreateLLVMCodeGen(DiagnosticsEngine &Diags,
> - const std::string& ModuleName,
> - const CodeGenOptions &CGO,
> - llvm::LLVMContext& C,
> - CoverageSourceInfo *CoverageInfo) {
> - return new CodeGeneratorImpl(Diags, ModuleName, CGO, C, CoverageInfo);
> +CodeGenerator *clang::CreateLLVMCodeGen(
> + DiagnosticsEngine &Diags, const std::string &ModuleName,
> + const HeaderSearchOptions &HeaderSearchOpts,
> + const PreprocessorOptions &PreprocessorOpts, const CodeGenOptions &CGO,
> + llvm::LLVMContext &C, CoverageSourceInfo *CoverageInfo) {
> + return new CodeGeneratorImpl(Diags, ModuleName, HeaderSearchOpts,
> + PreprocessorOpts, CGO, C, CoverageInfo);
> }
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list