[PATCH] D116305: [CSInfo][clang][ISEL][RISCV] Support for recovering optimized debug function parameters

Milica Matic via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Dec 27 05:00:10 PST 2021


mmatic05 created this revision.
mmatic05 added reviewers: jmorse, aprantl, djtodoro.
mmatic05 added projects: LLVM, clang, debug-info.
Herald added subscribers: VincentWu, luke957, achieveartificialintelligence, vkmr, frasercrmck, evandro, luismarques, apazos, sameer.abuasal, s.egerton, Jim, benna, psnobl, ormris, jocewei, PkmX, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, kito-cheng, niosHD, sabuasal, simoncook, johnrusso, rbar, asb, hiraditya.
mmatic05 requested review of this revision.
Herald added subscribers: llvm-commits, MaskRay.

This patch enables functionality in clang frontend and adds call site info 
generation support for RISCV targets (riscv64, riscv32).

Debug entry values functionality provides debug information about
call sites and function parameters values at the call entry spot.
Condition for generating this type of information is
compiling with -g option and optimization level higher than zero(-O0).

In ISEL phase, while lowering call instructions, collect info about registers
that forward arguments into following function frame.
We store such info into MachineFunction of the caller function.
This is used very late, when dumping DWARF info about call site parameters.

The call site info is visible at MIR level, as callSites attribute of MachineFunction.
To deal with callSites attribute, we should pass -emit-call-site-info option to llc.

When parameter's value is loaded into a register by RISCV instructions 
(which are processed by the solution) , it could be described correctly and emitted 
as DW_TAG_call_site_parameter.

We can see increased numbers of parameters (DW_TAG_call_site_parameter) as a consequence of the implemented solution:

- clang binary file

  $ llvm-dwarfdump --statistics clang



  ...
  "call site parameter DIEs": 558
  ...

- opt binary file

  $ llvm-dwarfdump --statistics opt



  ...
  "call site parameter DIEs": 1184
  ...



- llc binary file



  $ llvm-dwarfdump --statistics llc



  ...
  "call site parameter DIEs": 375
  ...

Used binary files for testing:

F21269785: opt <https://reviews.llvm.org/F21269785>

F21269780: clang <https://reviews.llvm.org/F21269780>

F21269779: llc <https://reviews.llvm.org/F21269779>


https://reviews.llvm.org/D116305

Files:
  clang/lib/Frontend/CompilerInvocation.cpp
  llvm/lib/Target/RISCV/RISCVISelLowering.cpp
  llvm/lib/Target/RISCV/RISCVInstrInfo.cpp
  llvm/lib/Target/RISCV/RISCVInstrInfo.h
  llvm/lib/Target/RISCV/RISCVTargetMachine.cpp
  llvm/test/CodeGen/RISCV/call-site-info-output_riscv32.ll
  llvm/test/CodeGen/RISCV/call-site-info-output_riscv64.ll
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-add-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-add-64bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-addi-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-addi-64bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-and-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-and-64bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-andi-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-andi-64bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-lui-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-lui-64bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-or-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-or-64bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-ori-xori-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-ori-xori-64bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-sll-srl-sra-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-sll-srl-sra-64bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-slli-srli-srai-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-slli-srli-srai-64bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-sub-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-sub-64bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-xor-32bit.mir
  llvm/test/DebugInfo/MIR/RISCV/dbg-call-site-param-xor-64bit.mir

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D116305.396280.patch
Type: text/x-patch
Size: 348971 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211227/da0b1585/attachment-0001.bin>


More information about the llvm-commits mailing list