From: Chris Lattner Date: Mon, 9 Mar 2009 22:00:34 +0000 (+0000) Subject: move debug info generation flag into CompileOptions. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=20126046221404b81cdd8de192bd72fdc7b0a670;p=clang move debug info generation flag into CompileOptions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@66478 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Driver/ASTConsumers.h b/Driver/ASTConsumers.h index 670f8dc190..fd8416da0e 100644 --- a/Driver/ASTConsumers.h +++ b/Driver/ASTConsumers.h @@ -56,8 +56,7 @@ ASTConsumer *CreateBackendConsumer(BackendAction Action, const LangOptions &Features, const CompileOptions &CompileOpts, const std::string& InFile, - const std::string& OutFile, - bool GenerateDebugInfo); + const std::string& OutFile); ASTConsumer* CreateHTMLPrinter(const std::string &OutFile, Diagnostic &D, Preprocessor *PP, PreprocessorFactory* PPF); diff --git a/Driver/Backend.cpp b/Driver/Backend.cpp index 4c5b741a27..459bd696b0 100644 --- a/Driver/Backend.cpp +++ b/Driver/Backend.cpp @@ -44,7 +44,6 @@ namespace { CompileOptions CompileOpts; const std::string &InputFile; std::string OutputFile; - bool GenerateDebugInfo; ASTContext *Context; Timer LLVMIRGeneration; @@ -79,16 +78,14 @@ namespace { public: BackendConsumer(BackendAction action, Diagnostic &Diags, const LangOptions &langopts, const CompileOptions &compopts, - const std::string &infile, const std::string &outfile, - bool debug) : + const std::string &infile, const std::string &outfile) : Action(action), CompileOpts(compopts), InputFile(infile), OutputFile(outfile), - GenerateDebugInfo(debug), LLVMIRGeneration("LLVM IR Generation Time"), CodeGenerationTime("Code Generation Time"), - Gen(CreateLLVMCodeGen(Diags, langopts, InputFile, GenerateDebugInfo)), + Gen(CreateLLVMCodeGen(Diags, langopts, InputFile, compopts.DebugInfo)), TheModule(0), TheTargetData(0), AsmOutStream(0), ModuleProvider(0), CodeGenPasses(0), PerModulePasses(0), PerFunctionPasses(0) { @@ -427,14 +424,13 @@ ASTConsumer *clang::CreateBackendConsumer(BackendAction Action, const LangOptions &LangOpts, const CompileOptions &CompileOpts, const std::string& InFile, - const std::string& OutFile, - bool GenerateDebugInfo) { + const std::string& OutFile) { // FIXME: If optimizing, disable all debug info generation. The LLVM // optimizer and backend is not ready to handle it when optimizations // are enabled. if (CompileOpts.OptimizationLevel > 0) - GenerateDebugInfo = false; + const_cast(CompileOpts).DebugInfo = false; return new BackendConsumer(Action, Diags, LangOpts, CompileOpts, - InFile, OutFile, GenerateDebugInfo); + InFile, OutFile); } diff --git a/Driver/clang.cpp b/Driver/clang.cpp index adfc8602fd..7db892fc13 100644 --- a/Driver/clang.cpp +++ b/Driver/clang.cpp @@ -1167,6 +1167,7 @@ TargetCPU("mcpu", static void InitializeCompileOptions(CompileOptions &Opts) { Opts.OptimizeSize = OptSize; + Opts.DebugInfo = GenerateDebugInfo; if (OptSize) { // -Os implies -O2 // FIXME: Diagnose conflicting options. @@ -1246,7 +1247,7 @@ static ASTConsumer *CreateASTConsumer(const std::string& InFile, CompileOptions Opts; InitializeCompileOptions(Opts); return CreateBackendConsumer(Act, Diag, LangOpts, Opts, - InFile, OutputFile, GenerateDebugInfo); + InFile, OutputFile); } case SerializeAST: diff --git a/include/clang/Frontend/CompileOptions.h b/include/clang/Frontend/CompileOptions.h index f774ba358e..1b20f0a3ac 100644 --- a/include/clang/Frontend/CompileOptions.h +++ b/include/clang/Frontend/CompileOptions.h @@ -21,6 +21,7 @@ namespace clang { struct CompileOptions { unsigned OptimizationLevel : 3; /// The -O[0-4] option specified. unsigned OptimizeSize : 1; /// If -Os is specified. + unsigned DebugInfo : 1; /// Should generate deubg info (-g). unsigned UnitAtATime : 1; /// Unused. For mirroring GCC /// optimization selection. unsigned InlineFunctions : 1; /// Should functions be inlined? @@ -42,6 +43,7 @@ public: CompileOptions() { OptimizationLevel = 0; OptimizeSize = 0; + DebugInfo = 0; UnitAtATime = 1; InlineFunctions = SimplifyLibCalls = UnrollLoops = 0; VerifyModule = 1;