diff options
author | Alexey Samsonov <samsonov@google.com> | 2012-04-27 07:24:20 +0000 |
---|---|---|
committer | Alexey Samsonov <samsonov@google.com> | 2012-04-27 07:24:20 +0000 |
commit | 3a70cd6e1cc414856e41ce5509aa61c89bf472dc (patch) | |
tree | 0da206d1543c71379d1af4a232aa0057b79318f3 /lib/Frontend/CompilerInvocation.cpp | |
parent | 577f14a34457032523e59dbbbacb88ca2cd4db57 (diff) | |
download | clang-3a70cd6e1cc414856e41ce5509aa61c89bf472dc.tar.gz |
Use enum to set debug info size generated by Clang
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155697 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | lib/Frontend/CompilerInvocation.cpp | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/lib/Frontend/CompilerInvocation.cpp b/lib/Frontend/CompilerInvocation.cpp index 4c5b063f7d..6046494b88 100644 --- a/lib/Frontend/CompilerInvocation.cpp +++ b/lib/Frontend/CompilerInvocation.cpp @@ -181,8 +181,18 @@ static void AnalyzerOptsToArgs(const AnalyzerOptions &Opts, ToArgsList &Res) { } static void CodeGenOptsToArgs(const CodeGenOptions &Opts, ToArgsList &Res) { - if (Opts.DebugInfo) - Res.push_back("-g"); + switch (Opts.DebugInfo) { + case CodeGenOptions::NoDebugInfo: + break; + case CodeGenOptions::LimitedDebugInfo: + Res.push_back("-g"); + Res.push_back("-flimit-debug-info"); + break; + case CodeGenOptions::FullDebugInfo: + Res.push_back("-g"); + Res.push_back("-fno-limit-debug-info"); + break; + } if (Opts.DisableLLVMOpts) Res.push_back("-disable-llvm-optzns"); if (Opts.DisableRedZone) @@ -1083,12 +1093,16 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK, : CodeGenOptions::OnlyAlwaysInlining; // -fno-inline-functions overrides OptimizationLevel > 1. Opts.NoInline = Args.hasArg(OPT_fno_inline); - Opts.Inlining = Args.hasArg(OPT_fno_inline_functions) ? + Opts.Inlining = Args.hasArg(OPT_fno_inline_functions) ? CodeGenOptions::OnlyAlwaysInlining : Opts.Inlining; - Opts.DebugInfo = Args.hasArg(OPT_g); - Opts.LimitDebugInfo = !Args.hasArg(OPT_fno_limit_debug_info) - || Args.hasArg(OPT_flimit_debug_info); + if (Args.hasArg(OPT_g)) { + if (Args.hasFlag(OPT_flimit_debug_info, OPT_fno_limit_debug_info, true)) + Opts.DebugInfo = CodeGenOptions::LimitedDebugInfo; + else + Opts.DebugInfo = CodeGenOptions::FullDebugInfo; + } + Opts.DisableLLVMOpts = Args.hasArg(OPT_disable_llvm_optzns); Opts.DisableRedZone = Args.hasArg(OPT_disable_red_zone); Opts.ForbidGuardVariables = Args.hasArg(OPT_fforbid_guard_variables); |