llvm-project/llvm/lib/CodeGen/AsmPrinter
David Stenberg 5a583665f4 [DebugInfo][X86] Describe call site values for zero-valued imms
Summary:
Add zero-materializing XORs to X86's describeLoadedValue() hook in order
to produce call site values.

I have had to change the defs logic in collectCallSiteParameters() a bit
to be able to describe the XORs. The XORs implicitly define $eflags,
which would cause them to never be considered, due to a guard condition
that I->getNumDefs() is one. I have changed that condition so that we
now only consider instructions where a forwarded register overlaps with
the instruction's single explicit define. We still need to collect the implicit
defines of other forwarded registers to remove them from the work list.
I'm not sure how to move towards supporting instructions with multiple
explicit defines, cases where forwarded register are implicitly defined,
and/or cases where an instruction produces values for multiple forwarded
registers. Perhaps the describeLoadedValue() hook should take a register
argument, and we then leave it up to the hook to describe the loaded
value in that register? I have not yet encountered a situation where
that would be necessary though.

Reviewers: aprantl, vsk, djtodoro, NikolaPrica

Reviewed By: vsk

Subscribers: ychen, hiraditya, llvm-commits

Tags: #debug-info, #llvm

Differential Revision: https://reviews.llvm.org/D67225

llvm-svn: 371333
2019-09-08 14:22:06 +00:00
..
ARMException.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
AccelTable.cpp [CodeGen] AccelTable - remove non-constexpr (MSVC) Atom defs 2019-07-09 13:07:48 +00:00
AddressPool.cpp DebugInfo: Use assembly label arithmetic for address pool size for easier reading/editing 2019-01-24 03:27:57 +00:00
AddressPool.h DebugInfo: Use assembly label arithmetic for address pool size for easier reading/editing 2019-01-24 03:27:57 +00:00
AsmPrinter.cpp [LLVM][Alignment] Make functions using log of alignment explicit 2019-09-05 10:00:22 +00:00
AsmPrinterDwarf.cpp [AsmPrinter] Make the encoding of call sites in .gcc_except_table configurable and use for RISC-V 2019-07-17 14:00:35 +00:00
AsmPrinterInlineAsm.cpp [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
ByteStreamer.h [DebugInfo] Introduce DW_OP_LLVM_convert 2019-03-19 13:16:28 +00:00
CMakeLists.txt Revert "[BTF] Add BTF DebugInfo" 2018-11-30 16:54:43 +00:00
CodeViewDebug.cpp Removing block comments from CodeView records in assembly files & related code cleanup 2019-08-25 01:09:11 +00:00
CodeViewDebug.h [COFF] Change a variable type to be const in the HeapAllocSite map. 2019-07-18 18:22:52 +00:00
DIE.cpp [DebugInfo] Introduce DW_OP_LLVM_convert 2019-03-19 13:16:28 +00:00
DIEHash.cpp [DebugInfo] Introduce DW_OP_LLVM_convert 2019-03-19 13:16:28 +00:00
DIEHash.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DIEHashAttributes.def
DbgEntityHistoryCalculator.cpp Apply llvm-prefer-register-over-unsigned from clang-tidy to LLVM 2019-08-15 19:22:08 +00:00
DebugHandlerBase.cpp Stop undef fragments from closing non-overlapping fragments 2019-05-28 13:23:25 +00:00
DebugLocEntry.h [DWARF] Handle the DW_OP_entry_value operand 2019-06-27 13:52:34 +00:00
DebugLocStream.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DebugLocStream.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DwarfCFIException.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DwarfCompileUnit.cpp [DwarfExpression] Disallow some rewrites to avoid undefined behavior 2019-09-07 11:40:10 +00:00
DwarfCompileUnit.h [DWARF] Rename getDwarf5OrGNUCallSite{Attr,Tag}, NFC 2019-08-26 20:53:34 +00:00
DwarfDebug.cpp [DebugInfo][X86] Describe call site values for zero-valued imms 2019-09-08 14:22:06 +00:00
DwarfDebug.h [llvm] Migrate llvm::make_unique to std::make_unique 2019-08-15 15:54:37 +00:00
DwarfException.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DwarfExpression.cpp [DwarfExpression] Disallow some rewrites to avoid undefined behavior 2019-09-07 11:40:10 +00:00
DwarfExpression.h Reland "[DwarfDebug] Dump call site debug info" 2019-07-31 16:51:28 +00:00
DwarfFile.cpp DebugInfo: Split DWARF + gmlt + no-split-dwarf-inlining shouldn't emit anything to the .dwo file 2019-02-12 00:00:38 +00:00
DwarfFile.h [AsmPrinter] Delete unused RangeSpanList::addRange 2019-04-10 10:35:10 +00:00
DwarfStringPool.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DwarfStringPool.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
DwarfUnit.cpp Debug Info: Support for DW_AT_export_symbols for anonymous structs 2019-08-26 20:59:44 +00:00
DwarfUnit.h Reland "[DwarfDebug] Dump call site debug info" 2019-07-31 16:51:28 +00:00
EHStreamer.cpp [AsmPrinter] Make the encoding of call sites in .gcc_except_table configurable and use for RISC-V 2019-07-17 14:00:35 +00:00
EHStreamer.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
ErlangGCPrinter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
LLVMBuild.txt [Remarks] Add string deduplication using a string table 2019-04-24 00:06:24 +00:00
OcamlGCPrinter.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
WasmException.cpp [WebAssembly] Exception handling: Switch to the new proposal 2019-01-30 03:21:57 +00:00
WasmException.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
WinCFGuard.cpp Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
WinCFGuard.h Update the file headers across all of the LLVM projects in the monorepo 2019-01-19 08:50:56 +00:00
WinException.cpp [LLVM][Alignment] Make functions using log of alignment explicit 2019-09-05 10:00:22 +00:00
WinException.h [AArch64][Windows] Compute function length correctly in unwind tables. 2019-05-03 00:10:45 +00:00