llvm-6502/include/llvm
Dan Gohman e8be6c6391 Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk
replacement of multiple values. This is slightly more efficient
than doing multiple ReplaceAllUsesOfValueWith calls, and theoretically
could be optimized even further. However, an important property of this
new function is that it handles the case where the source value set and
destination value set overlap. This makes it feasible for isel to use
SelectNodeTo in many very common cases, which is advantageous because
SelectNodeTo avoids a temporary node and it doesn't require CSEMap
updates for users of values that don't change position.

Revamp MorphNodeTo, which is what does all the work of SelectNodeTo, to
handle operand lists more efficiently, and to correctly handle a number
of corner cases to which its new wider use exposes it.

This commit also includes a change to the encoding of post-isel opcodes
in SDNodes; now instead of being sandwiched between the target-independent
pre-isel opcodes and the target-dependent pre-isel opcodes, post-isel
opcodes are now represented as negative values. This makes it possible
to test if an opcode is pre-isel or post-isel without having to know
the size of the current target's post-isel instruction set.

These changes speed up llc overall by 3% and reduce memory usage by 10%
on the InstructionCombining.cpp testcase with -fast and -regalloc=local.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53728 91177308-0d34-0410-b5e6-96231b3b80d8
2008-07-17 19:10:17 +00:00
..
ADT Inline typedef for alist_iterator::pointer to work with MSVC++. 2008-07-12 18:28:46 +00:00
Analysis Fix spelling of "hierarchy" in comments. 2008-07-11 22:51:32 +00:00
Assembly Revert 51775. 2008-05-30 22:47:19 +00:00
Bitcode Add a little wrapper header that is put around bc files when emitting 2008-07-09 05:14:23 +00:00
CodeGen Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk 2008-07-17 19:10:17 +00:00
Config Use C-style comments :) 2008-03-23 13:44:17 +00:00
Debugger Fix more -Wshorten-64-to-32 warnings. 2008-05-05 18:30:58 +00:00
ExecutionEngine Add a new flag that disables symbol lookup with dlsym when set. This allows 2008-06-16 17:44:14 +00:00
Support Add a new function, ReplaceAllUsesOfValuesWith, which handles bulk 2008-07-17 19:10:17 +00:00
System Add a new InvalidateInstructionCache method to sys::Memory. 2008-06-25 17:14:10 +00:00
Target Clarify the comments here, to make slightly more clear the 2008-07-16 16:02:59 +00:00
Transforms Factor MergeBlockIntoPredecessor out into BasicBlockUtils. 2008-07-17 00:01:40 +00:00
AbstractTypeUser.h
Argument.h Expose parameter attributes via C bindings. 2008-04-28 17:37:06 +00:00
AutoUpgrade.h Auto-upgrade code for multiple-value return statements. This code 2008-06-17 23:38:43 +00:00
BasicBlock.h For PR1338: rename include/llvm/ADT/ilist and friends to end with ".h" 2008-05-29 17:41:17 +00:00
CallGraphSCCPass.h PassInfo keep tracks whether a pass is an analysis pass or not. 2008-03-19 21:56:59 +00:00
CallingConv.h Tidy a doxygen comment. 2008-07-16 15:59:56 +00:00
Constant.h add a helper method for code that wants to handle vector 2008-07-10 00:28:34 +00:00
Constants.h IR, bitcode reader, bitcode writer, and asmparser changes to 2008-05-31 00:58:22 +00:00
DerivedTypes.h Remove unused parameter. Some clients might use -Werror when compiling and 2008-06-05 07:24:08 +00:00
Function.h Pull r53428 from Gaz into mainline: 2008-07-10 22:57:49 +00:00
GlobalAlias.h merge of use-diet branch to trunk 2008-05-10 08:32:32 +00:00
GlobalValue.h Add convenient helper for checking whether global is weak in linker sense 2008-07-05 23:48:30 +00:00
GlobalVariable.h Factor code to copy global value attributes like 2008-05-26 19:58:59 +00:00
InlineAsm.h
InstrTypes.h make ExtractValueInst derived from UnaryInstruction 2008-06-06 20:28:12 +00:00
Instruction.def IR support for extractvalue and insertvalue instructions. Also, begin 2008-05-15 19:50:34 +00:00
Instruction.h Add an insertBefore method for attaching previously unattached instructions, 2008-06-17 18:29:27 +00:00
Instructions.h Add some convenience methods for manipulating 2008-07-08 08:38:44 +00:00
IntrinsicInst.h - Re-apply 52748 and friends with fix. GetConstantStringInfo() returns an empty string for ConstantAggregateZero case which surprises selectiondag. 2008-06-30 07:31:25 +00:00
Intrinsics.h add missing #include 2008-04-30 04:56:14 +00:00
Intrinsics.td Added MemOperands to Atomic operations since Atomics touches memory. 2008-06-25 08:15:39 +00:00
IntrinsicsARM.td
IntrinsicsCellSPU.td Final de-tabification. 2008-02-27 06:33:05 +00:00
IntrinsicsPowerPC.td
IntrinsicsX86.td SSE codegen for vsetcc nodes 2008-07-17 16:51:19 +00:00
LinkAllPasses.h Add a value range analysis that lazily computes ranges using ScalarEvolutions. 2008-06-30 00:04:21 +00:00
LinkAllVMCore.h prune unneeded #includes 2008-04-01 04:00:45 +00:00
Linker.h
Module.h Add a new version of Module::getFunction that takes a const char* instead 2008-06-27 21:09:10 +00:00
ModuleProvider.h Remove warnings about unused parameters and shadowed variables. 2008-05-19 20:15:12 +00:00
OperandTraits.h 80col 2008-07-05 22:41:37 +00:00
ParameterAttributes.h The inline keyword goes before the return type. This fixes a compiler warning. 2008-06-19 16:16:06 +00:00
Pass.h Add dom info verifier. 2008-07-01 17:44:24 +00:00
PassAnalysisSupport.h
PassManager.h allow updating the MPM, so that you can use one FunctionPAssManager with 2008-06-26 22:26:45 +00:00
PassManagers.h Fix spelling of "hierarchy" in comments. 2008-07-11 22:51:32 +00:00
PassSupport.h Correct a comment. 2008-06-24 17:46:48 +00:00
SymbolTableListTraits.h Add some basic Pool-allocation infrastructure. This adds a Recycler class, 2008-07-07 22:58:06 +00:00
Type.h Add an isAggregateType predicate. 2008-05-30 22:40:06 +00:00
TypeSymbolTable.h
Use.h For PR1338: rename include/llvm/ADT/ilist and friends to end with ".h" 2008-05-29 17:41:17 +00:00
User.h Move some documentation from the header file into ProgrammersManual. About to improve. 2008-06-16 21:06:12 +00:00
Value.h add a helper. 2008-06-27 21:15:25 +00:00
ValueSymbolTable.h implement some fixme's by making "autorenaming" in the value symbol table not 2008-06-27 21:26:26 +00:00