dblaikie added inline comments.

================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:3718
+  } else
+    DwarfFission = DwarfFissionKind::None;
 
----------------
MaskRay wrote:
> dblaikie wrote:
> > Rather than undoing the DwarfFission uinitialization, instead could the 
> > DwarfFission initialization be rolled into the "if (gN_Group)" condition?
> I could add the OPT_g_Group check to `getDebugFissionKind`, but that would 
> make the effects of -g0 and "no -g at all" into two places. Having the code 
> here makes it closer to "how DebugInfoKind == codegenoptions::NoDebugInfo 
> affects fission" above.
Sorry, I'm not following what you're suggesting/discussing. I wasn't meaning to 
suggest duplicating the OPT_g_Group check. 

Code something like:

```
if (const Arg *A = Args.getLastArg(options::OPT_g_Group)) {
  DebugInfoKind = codegenoptions::LimitedDebugInfo;

  Arg* SplitDWARFArg;
  DwarfFission = getDebugFissionKind(D, Args, SplitDWARFArg);

  if (DwarfFission != DwarfFissionKind::None &&
      !checkDebugInfoOption(SplitDWARFArg, Args, D, TC)) {
    DwarfFission = DwarfFissionKind::None;
    SplitDWARFInlining = false;
  }

  // If the last option explicitly specified a debug-info level, use it.
  if (checkDebugInfoOption(A, Args, D, TC) &&
      A->getOption().matches(options::OPT_gN_Group)) {
    DebugInfoKind = DebugLevelToInfoKind(*A);
    // For -g0 or -gline-tables-only, drop -gsplit-dwarf. This gets a bit more
    // complicated if you've disabled inline info in the skeleton CUs
    // (SplitDWARFInlining) - then there's value in composing split-dwarf and
    // line-tables-only, so let those compose naturally in that case.
    if (DebugInfoKind == codegenoptions::NoDebugInfo ||
        DebugInfoKind == codegenoptions::DebugDirectivesOnly ||
        (DebugInfoKind == codegenoptions::DebugLineTablesOnly &&
         SplitDWARFInlining))
      DwarfFission = DwarfFissionKind::None;
  }
}
```

This way, hopefully, there wouldn't be a period where DwarfFission is 
incorrectly set and has to be reverted to "None", making it less likely the 
incorrect value could be used accidentally


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D80391/new/

https://reviews.llvm.org/D80391

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to