llvm-6502/include/llvm
Evan Cheng bfcb305189 Change how dbg_value sdnodes are converted into machine instructions. Their placement should be determined by the relative order of incoming llvm instructions. The scheduler will now use the SDNode ordering information to determine where to insert them. A dbg_value instruction is inserted after the instruction with the last highest source order and before the instruction with the next highest source order. It will optimize the placement by inserting right after the instruction that produces the value if they have consecutive order numbers.
Here is a theoretical example that illustrates why the placement is important.

tmp1 = 
store tmp1 -> x
...
tmp2 = add ...
...
call
...
store tmp2 -> x

Now mem2reg comes along:

tmp1 = 
dbg_value (tmp1 -> x)
...
tmp2 = add ...
...
call
...
dbg_value (tmp2 -> x)

When the debugger examine the value of x after the add instruction but before the call, it should have the value of tmp1.

Furthermore, for dbg_value's that reference constants, they should not be emitted at the beginning of the block (since they do not have "producers").

This patch also cleans up how SDISel manages DbgValue nodes. It allow a SDNode to be referenced by multiple SDDbgValue nodes. When a SDNode is deleted, it uses the information to find the SDDbgValues and invalidate them. They are not deleted until the corresponding SelectionDAG is destroyed.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99469 91177308-0d34-0410-b5e6-96231b3b80d8
2010-03-25 01:38:16 +00:00
..
ADT Add a method to get a StringMapEntry from a pointer to the string 2010-03-24 00:53:27 +00:00
Analysis Do not rely on getCompileUnit() to find source file information for a subprogram. 2010-03-24 18:48:00 +00:00
Assembly Add a hook to AssemblyAnnotationWriter to allow custom info comments 2010-02-10 20:41:46 +00:00
Bitcode Add support for a union type in LLVM IR. Patch by Talin! 2010-02-12 20:49:41 +00:00
CodeGen Change how dbg_value sdnodes are converted into machine instructions. Their placement should be determined by the relative order of incoming llvm instructions. The scheduler will now use the SDNode ordering information to determine where to insert them. A dbg_value instruction is inserted after the instruction with the last highest source order and before the instruction with the next highest source order. It will optimize the placement by inserting right after the instruction that produces the value if they have consecutive order numbers. 2010-03-25 01:38:16 +00:00
CompilerDriver Make it not an error to specify -O* options several times. 2010-03-05 04:46:39 +00:00
Config Tell Valgrind when we modify already-executed machine code so it knows 2010-03-15 04:57:55 +00:00
ExecutionEngine Move --march, --mcpu, and --mattr from JIT/TargetSelect.cpp to lli.cpp. 2010-02-05 16:19:36 +00:00
MC MC: Eliminate MC{Fragment,{Section,Symbol}Data}::getAddress. 2010-03-25 01:03:24 +00:00
Support Temporarily revert this, it's causing an issue with an internal project. 2010-03-24 23:35:21 +00:00
System Tell Valgrind when we modify already-executed machine code so it knows 2010-03-15 04:57:55 +00:00
Target Fix unused parameter warning. 2010-03-25 00:59:51 +00:00
Transforms Add comment. 2010-03-23 15:50:49 +00:00
AbstractTypeUser.h When a constant's type is refined, update the constant in place 2009-09-15 15:58:07 +00:00
Argument.h sink twine.h down out of Value.h. It is annoying that you need 2009-12-29 07:12:03 +00:00
Attributes.h Reduce size of 'StackAlignment' field from 5 to 3 bits. Seriously, who needs a 2010-02-21 04:26:06 +00:00
AutoUpgrade.h Reapply 79977. 2009-08-28 23:24:31 +00:00
BasicBlock.h sink twine.h down out of Value.h. It is annoying that you need 2009-12-29 07:12:03 +00:00
CallGraphSCCPass.h elimiante the dynamic_cast's from opt. 2010-01-22 06:03:06 +00:00
CallingConv.h add support, testcases, and dox for the new GHC calling 2010-03-11 00:22:57 +00:00
CMakeLists.txt
Constant.h eliminate a bunch of pointless LLVMContext arguments. 2010-02-01 20:48:08 +00:00
Constants.h Add more information to the getSizeOf comment. 2010-02-25 15:55:28 +00:00
DerivedTypes.h Add support for a union type in LLVM IR. Patch by Talin! 2010-02-12 20:49:41 +00:00
Function.h Finally land the InvokeInst operand reordering. 2010-03-24 13:21:49 +00:00
GlobalAlias.h sink twine.h down out of Value.h. It is annoying that you need 2009-12-29 07:12:03 +00:00
GlobalValue.h Add static methods to handle Linkage Types. 2010-03-06 07:22:39 +00:00
GlobalVariable.h sink twine.h down out of Value.h. It is annoying that you need 2009-12-29 07:12:03 +00:00
GVMaterializer.h Kill ModuleProvider and ghost linkage by inverting the relationship between 2010-01-27 20:34:15 +00:00
InlineAsm.h Memoize InlineAsms into the LLVMContext and delete them on shutdown. 2010-03-21 20:37:19 +00:00
InstrTypes.h doxygenize some comments, patch by Peter Collingbourne! 2010-02-12 21:54:28 +00:00
Instruction.def rename indbr -> indirectbr to appease the residents of #llvm. 2009-10-28 00:19:10 +00:00
Instruction.h Fix "the the" and similar typos. 2010-02-10 16:03:48 +00:00
Instructions.h Temporarily revert this, it's causing an issue with an internal project. 2010-03-24 23:35:21 +00:00
IntrinsicInst.h Improve llvm.dbg.declare intrinsic by referring directly to the storage in its first argument, via function-local metadata (instead of via a bitcast). 2010-01-15 19:04:09 +00:00
Intrinsics.h Mention vAny and iPTRAny in a comment. 2010-02-09 16:59:14 +00:00
Intrinsics.td [llvm_void_ty] is no longer needed for result types, 2010-03-23 23:46:07 +00:00
IntrinsicsAlpha.td
IntrinsicsARM.td [llvm_void_ty] is no longer needed for result types, 2010-03-23 23:46:07 +00:00
IntrinsicsCellSPU.td
IntrinsicsPowerPC.td [llvm_void_ty] is no longer needed for result types, 2010-03-23 23:46:07 +00:00
IntrinsicsX86.td Speculatively revert this to see if it fixes buildbot failures. 2010-03-24 23:26:29 +00:00
IntrinsicsXCore.td
LinkAllPasses.h remove anders-aa from mainline, it isn't maintained and is 2010-03-01 19:24:17 +00:00
LinkAllVMCore.h fix a warning. 2010-01-16 21:55:24 +00:00
Linker.h Fix "the the" and similar typos. 2010-02-10 16:03:48 +00:00
LLVMContext.h Final step in the metadata API restructuring: move the 2009-12-29 09:01:33 +00:00
Metadata.h Delete MDNodes when LLVMContext is destroyed. Previous attempts: r97918, r97788. 2010-03-13 01:26:15 +00:00
Module.h Kill ModuleProvider and ghost linkage by inverting the relationship between 2010-01-27 20:34:15 +00:00
OperandTraits.h fix PR6589 2010-03-16 10:59:48 +00:00
Operator.h Remove a bunch of unused arguments from functions, silencing a 2009-10-14 20:28:33 +00:00
Pass.h Fix a few unused parameter warnings. 2010-02-17 23:55:26 +00:00
PassAnalysisSupport.h eliminate dynamic_cast from the pass manager. 2010-01-21 02:07:07 +00:00
PassManager.h Kill ModuleProvider and ghost linkage by inverting the relationship between 2010-01-27 20:34:15 +00:00
PassManagers.h Fix "the the" and similar typos. 2010-02-10 16:03:48 +00:00
PassSupport.h add a helper method. 2010-01-20 19:25:45 +00:00
SymbolTableListTraits.h Forward-declare ValueSymbolTable so that SymbolTableListTraits.h can be parsed by itself 2009-09-30 00:08:25 +00:00
Type.h Correct LastPrimitiveTyID: MetadataType is a primitive type. 2010-02-19 09:18:53 +00:00
TypeSymbolTable.h Pass StringRef by value. 2009-11-06 10:58:06 +00:00
Use.h eliminate all 80-col violations that I have introduced in my recent checkins (and some others more) 2009-08-27 23:44:33 +00:00
User.h
Value.h Add support for a union type in LLVM IR. Patch by Talin! 2010-02-12 20:49:41 +00:00
ValueSymbolTable.h Before existing NamedMDNode entry in the symbol table, remove any existing entry with the same name. 2010-01-26 22:03:41 +00:00