llvm-6502/lib/IR
Adrian Prantl 2a39c993eb Debug info: Infrastructure to support debug locations for fragmented
variables (for example, by-value struct arguments passed in registers, or
large integer values split across several smaller registers).
On the IR level, this adds a new type of complex address operation OpPiece
to DIVariable that describes size and offset of a variable fragment.
On the DWARF emitter level, all pieces describing the same variable are
collected, sorted and emitted as DWARF expressions using the DW_OP_piece
and DW_OP_bit_piece operators.

http://reviews.llvm.org/D3373
rdar://problem/15928306

What this patch doesn't do / Future work:
- This patch only adds the backend machinery to make this work, patches
  that change SROA and SelectionDAG's type legalizer to actually create
  such debug info will follow. (http://reviews.llvm.org/D2680)
- Making the DIVariable complex expressions into an argument of dbg.value
  will reduce the memory footprint of the debug metadata.
- The sorting/uniquing of pieces should be moved into DebugLocEntry,
  to facilitate the merging of multi-piece entries.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@214576 91177308-0d34-0410-b5e6-96231b3b80d8
2014-08-01 22:11:58 +00:00
..
AsmWriter.cpp Use "weak alias" instead of "alias weak" 2014-07-30 22:51:54 +00:00
AsmWriter.h IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
AttributeImpl.h Add a dereferenceable attribute 2014-07-18 15:51:28 +00:00
Attributes.cpp Add a dereferenceable attribute 2014-07-18 15:51:28 +00:00
AutoUpgrade.cpp Rename metadata llvm.loop.vectorize.unroll to llvm.loop.vectorize.interleave. 2014-07-21 23:11:03 +00:00
BasicBlock.cpp IR: Add BasicBlock::insertInto() 2014-08-01 21:22:04 +00:00
CMakeLists.txt IPO: Add use-list-order verifier 2014-07-25 14:49:26 +00:00
Comdat.cpp IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
ConstantFold.cpp IR: Fold away compares between GV GEPs and GVs 2014-07-04 22:05:26 +00:00
ConstantFold.h
ConstantRange.cpp
Constants.cpp InstCombine: Don't turn -(x/INT_MIN) -> x/INT_MIN 2014-07-02 06:07:09 +00:00
ConstantsContext.h Try to fix the msvc build. 2014-04-29 23:37:02 +00:00
Core.cpp Update the MemoryBuffer API to use ErrorOr. 2014-07-06 17:43:13 +00:00
DataLayout.cpp Revert "Introduce a string_ostream string builder facilty" 2014-06-26 22:52:05 +00:00
DebugInfo.cpp Debug info: Infrastructure to support debug locations for fragmented 2014-08-01 22:11:58 +00:00
DebugLoc.cpp Add missing const specifier to a const method. 2014-06-05 14:32:15 +00:00
DiagnosticInfo.cpp Rename DiagnosticInfoOptimizationWarning to DiagnosticInfoOptimizationFailure 2014-07-18 19:36:04 +00:00
DiagnosticPrinter.cpp
DIBuilder.cpp Debug info: Infrastructure to support debug locations for fragmented 2014-08-01 22:11:58 +00:00
Dominators.cpp Revert "[C++11] Add predecessors(BasicBlock *) / successors(BasicBlock *) iterator ranges." 2014-07-21 17:06:51 +00:00
Function.cpp Add a dereferenceable attribute 2014-07-18 15:51:28 +00:00
GCOV.cpp Update the MemoryBuffer API to use ErrorOr. 2014-07-06 17:43:13 +00:00
Globals.cpp IR: Add COMDATs to the IR 2014-06-27 18:19:56 +00:00
GVMaterializer.cpp
InlineAsm.cpp
Instruction.cpp IR: add "cmpxchg weak" variant to support permitted failure. 2014-06-13 14:24:07 +00:00
Instructions.cpp Add CreatePointerBitCastOrAddrSpaceCast to IRBuilder and co. 2014-07-14 17:24:35 +00:00
IntrinsicInst.cpp
IRBuilder.cpp Add scoped-noalias metadata 2014-07-24 14:25:39 +00:00
IRPrintingPasses.cpp Fix some misplaced spaces around 'override' 2014-05-24 20:19:40 +00:00
LeakDetector.cpp
LeaksContext.h
LegacyPassManager.cpp Add C API for thread yielding callback. 2014-05-16 02:33:15 +00:00
LLVMBuild.txt
LLVMContext.cpp Add scoped-noalias metadata 2014-07-24 14:25:39 +00:00
LLVMContextImpl.cpp Remove LLVMContextImpl::optimizationRemarkEnabledFor. 2014-05-22 17:19:01 +00:00
LLVMContextImpl.h Remove LLVMContextImpl::optimizationRemarkEnabledFor. 2014-05-22 17:19:01 +00:00
Makefile
Mangler.cpp [pr20127] Check for leading \1 in the Twine version of getNameWithPrefix. 2014-08-01 14:16:40 +00:00
MDBuilder.cpp Simplify and improve scoped-noalias metadata semantics 2014-07-25 15:50:02 +00:00
Metadata.cpp Add scoped-noalias metadata 2014-07-24 14:25:39 +00:00
Module.cpp IR: cleanup Module::dropReferences 2014-07-03 16:12:55 +00:00
module.modulemap [modules] Add module maps for LLVM. These are not quite ready for prime-time 2014-05-21 02:46:14 +00:00
Pass.cpp Remove pimpl class from PassRegistry. 2014-06-12 16:06:51 +00:00
PassManager.cpp Remove unnecessary/redundant std::move 2014-07-16 17:09:21 +00:00
PassRegistry.cpp Remove pimpl class from PassRegistry. 2014-06-12 16:06:51 +00:00
SymbolTableListTraitsImpl.h
Type.cpp
TypeFinder.cpp
Use.cpp
UseListOrder.cpp IR: Augment debug statements for use-list order 2014-07-29 01:09:46 +00:00
User.cpp
Value.cpp Handle AddrSpaceCast in stripAndAccumulateInBoundsConstantOffsets 2014-07-19 03:32:02 +00:00
ValueSymbolTable.cpp
ValueTypes.cpp
Verifier.cpp Revert "[C++11] Add predecessors(BasicBlock *) / successors(BasicBlock *) iterator ranges." 2014-07-21 17:06:51 +00:00