ychen marked 2 inline comments as done.
ychen added a comment.

Thanks a lot for reviewing the patch!

In D118428#3281721 <https://reviews.llvm.org/D118428#3281721>, @aganea wrote:

> Cool! :) Seems good generally.
> Sounds like an expensive flag for the runtime perf :-D But I guess it makes 
> the debugging experience a bit nicer.

Exactly. I had the same thoughts. For MSVC it is what it is. For ELF, the other 
choice from using the same scheme as MSVC is that we could inline the 
`__CheckForDebuggerJustMyCode` call (its definition is here: 
https://github.com/ojdkbuild/tools_toolchain_vs2017bt_1416/blob/master/VC/Tools/MSVC/14.16.27023/crt/src/vcruntime/debugger_jmc.c)
 before the function ABI prologue. For example, to instrument a function `_foo`:

    andb r11l, _jmc_global_flag, _jmc_enable_per_thread_step
    andb r11l, r11, _jmc_per_module_flag
    andb r11l, r11, _jmc_per_file_flag
    cmpb r11l, 0
    jne _foo 
    int 3
  _foo:

The parameter of `__CheckForDebuggerJustMyCode` is `_jmc_per_file_flag` above. 
`int 3` is basically a per-function flag. `_jmc_per_module_flag` and 
`_jmc_global_flag` control the JMC behavior at module-level or program-level 
for better performance. Otherwise, the debugger needs the gather this 
information using debuginfo. This scheme is target-dependent and increases the 
.text slightly. But it eliminates the call and the flag modification at 
different granularity is fast. With that being said, experts working on ELF 
debuggers have ideas about which scheme is better. I'll send an RFC for ELF 
after this patch goes in.



================
Comment at: clang/lib/Driver/ToolChains/Clang.cpp:7457
+                   /*Default=*/false)) {
+    if (EnabledZ7)
+      CmdArgs.push_back("-fjmc");
----------------
aganea wrote:
> Can we do here `if (*EmitCodeView && *DebugInfoKind >= 
> codegenoptions::DebugInfoConstructor)`? Is it worth introducing a new 
> variable?
Yeah, I think that works better. No need for a new variable.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D118428

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

Reply via email to