This patch adds support for DW_OP_implicit_pointer.
This will enable debugger to show dereferenced value of optimized out pointer.
It has been validated for SROA, mem2reg and Instruction-combiner optimizations.
This also fixes PR43289
Paths
| Differential D69787
[DebugInfo] Support for DW_OP_implicit_pointer. Needs ReviewPublic Authored by alok on Nov 3 2019, 11:24 PM.
Details Summary This patch adds support for DW_OP_implicit_pointer. This will enable debugger to show dereferenced value of optimized out pointer. This also fixes PR43289
Diff Detail
Event TimelineComment Actions Rough first review: This looks like it touches a lot of places. I think it might make more sense as several separate patches - improving salavageDebugINfo and then separate patches for each new call-site (including appropriate test cases showing how each new call site is useful). Comment Actions This looks very interesting! I agree with David though that it would be nice to split this into smaller parts. alok added a parent revision: D69886: [DebugInfo] Support for DW_OP_implicit_pointer (CodeGen phase).Nov 8 2019, 2:40 AM alok removed a parent revision: D69886: [DebugInfo] Support for DW_OP_implicit_pointer (CodeGen phase).Nov 8 2019, 2:42 AM
Revision Contents
Diff 227649 llvm/include/llvm/CodeGen/MachineInstr.h
llvm/include/llvm/CodeGen/MachineInstrBuilder.h
llvm/include/llvm/CodeGen/SelectionDAG.h
llvm/include/llvm/IR/DebugInfoMetadata.h
llvm/include/llvm/IR/Instruction.h
llvm/include/llvm/IR/IntrinsicInst.h
llvm/include/llvm/IR/Module.h
llvm/include/llvm/IR/Value.h
llvm/include/llvm/Transforms/Utils/Local.h
llvm/lib/CodeGen/AsmPrinter/DebugLocEntry.h
llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.h
llvm/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
llvm/lib/CodeGen/AsmPrinter/DwarfDebug.h
llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp
llvm/lib/CodeGen/AsmPrinter/DwarfExpression.h
llvm/lib/CodeGen/AsmPrinter/DwarfExpression.cpp
llvm/lib/CodeGen/CodeGenPrepare.cpp
llvm/lib/CodeGen/LiveDebugValues.cpp
llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp
llvm/lib/CodeGen/SelectionDAG/SDNodeDbgValue.h
llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp
llvm/lib/CodeGen/SelectionDAG/SelectionDAGDumper.cpp
llvm/lib/DebugInfo/DWARF/DWARFExpression.cpp
llvm/lib/IR/DebugInfoMetadata.cpp
llvm/lib/IR/Instruction.cpp
llvm/lib/IR/IntrinsicInst.cpp
llvm/lib/IR/Module.cpp
llvm/lib/IR/Value.cpp
llvm/lib/IR/Verifier.cpp
llvm/lib/Transforms/InstCombine/InstCombineInternal.h
llvm/lib/Transforms/InstCombine/InstructionCombining.cpp
llvm/lib/Transforms/Scalar/BDCE.cpp
llvm/lib/Transforms/Scalar/DCE.cpp
llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp
llvm/lib/Transforms/Scalar/EarlyCSE.cpp
llvm/lib/Transforms/Scalar/GVN.cpp
llvm/lib/Transforms/Scalar/LICM.cpp
llvm/lib/Transforms/Scalar/Reassociate.cpp
llvm/lib/Transforms/Scalar/SROA.cpp
llvm/lib/Transforms/Utils/CodeExtractor.cpp
llvm/lib/Transforms/Utils/Local.cpp
llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
llvm/test/DebugInfo/dwarfdump-implicit_pointer_instcomb.c
llvm/test/DebugInfo/dwarfdump-implicit_pointer_mem2reg.c
llvm/test/DebugInfo/dwarfdump-implicit_pointer_sroa.c
llvm/test/DebugInfo/dwarfdump-implicit_pointer_sroa_inline.c
llvm/unittests/Transforms/Utils/LocalTest.cpp
|