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