Commit 6d038903 authored by Amy Huang's avatar Amy Huang
Browse files

[CodeView] Add option to disable inline line tables.

Summary:
This adds a clang option to disable inline line tables. When it is used,
the inliner uses the call site as the location of the inlined function instead of
marking it as an inline location with the function location.

See https://bugs.llvm.org/show_bug.cgi?id=42344

Reviewers: rnk

Subscribers: hiraditya, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D67723
parent 3dec3085
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -136,6 +136,8 @@ CODEGENOPT(FatalWarnings , 1, 0) ///< Set when -Wa,--fatal-warnings is
                                     ///< enabled.
CODEGENOPT(NoWarn            , 1, 0) ///< Set when -Wa,--no-warn is enabled.
CODEGENOPT(EnableSegmentedStacks , 1, 0) ///< Set when -fsplit-stack is enabled.
CODEGENOPT(NoInlineLineTables, 1, 0) ///< Whether debug info should contain
                                     ///< inline line tables.
CODEGENOPT(NoImplicitFloat   , 1, 0) ///< Set when -mno-implicit-float is enabled.
CODEGENOPT(NoInfsFPMath      , 1, 0) ///< Assume FP arguments, results not +-Inf.
CODEGENOPT(NoSignedZeros     , 1, 0) ///< Allow ignoring the signedness of FP zero
+3 −0
Original line number Diff line number Diff line
@@ -1984,6 +1984,9 @@ def gcodeview_ghash : Flag<["-"], "gcodeview-ghash">,
  HelpText<"Emit type record hashes in a .debug$H section">,
  Flags<[CC1Option, CoreOption]>;
def gno_codeview_ghash : Flag<["-"], "gno-codeview-ghash">, Flags<[CoreOption]>;
def ginline_line_tables : Flag<["-"], "ginline-line-tables">, Flags<[CoreOption]>;
def gno_inline_line_tables : Flag<["-"], "gno-inline-line-tables">,
  Flags<[CC1Option, CoreOption]>, HelpText<"Don't emit inline line tables">;

// Equivalent to our default dwarf version. Forces usual dwarf emission when
// CodeView is enabled.
+4 −0
Original line number Diff line number Diff line
@@ -764,6 +764,10 @@ void CodeGenFunction::StartFunction(GlobalDecl GD,
  Fn->addFnAttr("no-jump-tables",
                llvm::toStringRef(CGM.getCodeGenOpts().NoUseJumpTables));

  // Add no-inline-line-tables value.
  if (CGM.getCodeGenOpts().NoInlineLineTables)
    Fn->addFnAttr("no-inline-line-tables");

  // Add profile-sample-accurate value.
  if (CGM.getCodeGenOpts().ProfileSampleAccurate)
    Fn->addFnAttr("profile-sample-accurate");
+6 −0
Original line number Diff line number Diff line
@@ -3296,6 +3296,12 @@ static void RenderDebugOptions(const ToolChain &TC, const Driver &D,
    }
  }

  // Omit inline line tables if requested.
  if (!Args.hasFlag(options::OPT_ginline_line_tables,
                    options::OPT_gno_inline_line_tables, false)) {
    CmdArgs.push_back("-gno-inline-line-tables");
  }

  // Adjust the debug info kind for the given toolchain.
  TC.adjustDebugInfoKind(DebugInfoKind, Args);

+1 −0
Original line number Diff line number Diff line
@@ -806,6 +806,7 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
  Opts.RecordCommandLine = Args.getLastArgValue(OPT_record_command_line);
  Opts.MergeAllConstants = Args.hasArg(OPT_fmerge_all_constants);
  Opts.NoCommon = Args.hasArg(OPT_fno_common);
  Opts.NoInlineLineTables = Args.hasArg(OPT_gno_inline_line_tables);
  Opts.NoImplicitFloat = Args.hasArg(OPT_no_implicit_float);
  Opts.OptimizeSize = getOptimizationLevelSize(Args);
  Opts.SimplifyLibCalls = !(Args.hasArg(OPT_fno_builtin) ||
Loading