f016b263e2 
								
							 
						 
						
							
							
								
								Move the check whether it's worth remating to caller.  
							
							... 
							
							
							
							llvm-svn: 55434 
							
						 
						
							2008-08-27 20:58:54 +00:00  
				
					
						
							
							
								 
						
							
								57dc078570 
								
							 
						 
						
							
							
								
								Refactor isSafeToReMat out of 2addr pass.  
							
							... 
							
							
							
							llvm-svn: 55430 
							
						 
						
							2008-08-27 20:33:50 +00:00  
				
					
						
							
							
								 
						
							
								7d98a48f15 
								
							 
						 
						
							
							
								
								- Remove calls to copyKillDeadInfo which is an N^2 function. Instead, propagate kill / dead markers as new instructions are constructed in foldMemoryOperand, convertToThressAddress, etc.  
							
							... 
							
							
							
							- Also remove LiveVariables::instructionChanged, etc. Replace all calls with cheaper calls which update VarInfo kill list.
llvm-svn: 53097 
							
						 
						
							2008-07-03 09:09:37 +00:00  
				
					
						
							
							
								 
						
							
								7a265d83bf 
								
							 
						 
						
							
							
								
								- Add LiveVariables::replaceKillInstruction. This does a subset of instructionChanged. That is, it only update the VarInfo.kills if the new instruction is known to have the correct dead and kill markers.  
							
							... 
							
							
							
							- CommuteInstruction copies kill / dead markers over to new instruction. So use replaceKillInstruction instead.
llvm-svn: 53061 
							
						 
						
							2008-07-03 00:07:19 +00:00  
				
					
						
							
							
								 
						
							
								30cc028e4a 
								
							 
						 
						
							
							
								
								Make LiveVariables even more optional, by making it optional in the call to TargetInstrInfo::convertToThreeAddressInstruction  
							
							... 
							
							
							
							Also, if LV isn't around, then TwoAddr doesn't need to be updating flags, since they won't have been set in the first place.
llvm-svn: 53058 
							
						 
						
							2008-07-02 23:41:07 +00:00  
				
					
						
							
							
								 
						
							
								8c10c2482a 
								
							 
						 
						
							
							
								
								TwoAddressInstructionPass doesn't really require LiveVariables, it just needs to update it if it's already around.  
							
							... 
							
							
							
							llvm-svn: 53049 
							
						 
						
							2008-07-02 21:28:58 +00:00  
				
					
						
							
							
								 
						
							
								d206e2ac2a 
								
							 
						 
						
							
							
								
								Remove unneeded include.  
							
							... 
							
							
							
							llvm-svn: 52920 
							
						 
						
							2008-06-30 20:38:22 +00:00  
				
					
						
							
							
								 
						
							
								73db52ebf8 
								
							 
						 
						
							
							
								
								Enable two-address remat by default.  
							
							... 
							
							
							
							llvm-svn: 52701 
							
						 
						
							2008-06-25 01:16:38 +00:00  
				
					
						
							
							
								 
						
							
								849fa11f15 
								
							 
						 
						
							
							
								
								Missed a check.  
							
							... 
							
							
							
							llvm-svn: 52487 
							
						 
						
							2008-06-19 06:17:19 +00:00  
				
					
						
							
							
								 
						
							
								c5618ebdb9 
								
							 
						 
						
							
							
								
								Complete support for two-address pass rematerialization. Now *almost* always a win.  
							
							... 
							
							
							
							llvm-svn: 52452 
							
						 
						
							2008-06-18 07:49:14 +00:00  
				
					
						
							
							
								 
						
							
								7a1a8eb6e2 
								
							 
						 
						
							
							
								
								Implement "AsCheapAsAMove" for some obviously cheap instructions: xor and the  
							
							... 
							
							
							
							like.
llvm-svn: 51662 
							
						 
						
							2008-05-29 01:02:09 +00:00  
				
					
						
							
							
								 
						
							
								5a83b097ed 
								
							 
						 
						
							
							
								
								Check the "isSafeToMove" predicate, which has a series of tests to make sure  
							
							... 
							
							
							
							that it's safe to remat an instruction.
llvm-svn: 51659 
							
						 
						
							2008-05-28 22:52:47 +00:00  
				
					
						
							
							
								 
						
							
								2e44ec7c4d 
								
							 
						 
						
							
							
								
								Incorporated feedback: Check that the implicitly defined operands aren't used  
							
							... 
							
							
							
							before deleting the instruction.
llvm-svn: 51609 
							
						 
						
							2008-05-27 20:40:52 +00:00  
				
					
						
							
							
								 
						
							
								2e8c82893b 
								
							 
						 
						
							
							
								
								The enabling of remat in 2-address conversion breaks this test:  
							
							... 
							
							
							
							Running /Users/void/llvm/llvm.src/test/CodeGen/X86/dg.exp ...
FAIL: /Users/void/llvm/llvm.src/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll
Failed with exit(1) at line 1
while running: llvm-as < /Users/void/llvm/llvm.src/test/CodeGen/X86/2007-11-30-LoadFolding-Bug.ll | llc -march=x86 -mattr=+sse2 -stats |&  grep {1 .*folded into instructions}
child process exited abnormally
Make this conditional for now.
llvm-svn: 51563 
							
						 
						
							2008-05-26 05:49:49 +00:00  
				
					
						
							
							
								 
						
							
								c737e4639a 
								
							 
						 
						
							
							
								
								A problem that's exposed when machine LICM is enabled. Consider this code:  
							
							... 
							
							
							
							LBB1_3:   # bb
...
        xorl    %ebp, %ebp
        subl    (%ebx), %ebp
...
        incl    %ecx
        cmpl    %edi, %ecx
        jl      LBB1_3  # bb
Whe using machine LICM, LLVM converts it into:
        xorl %esi, %esi
LBB1_3: # bb
...
        movl    %esi, %ebp
        subl    (%ebx), %ebp
...
        incl    %ecx
        cmpl    %edi, %ecx
        jl      LBB1_3  # bb
Two address conversion inserts the copy instruction. However, it's cheaper to
rematerialize it, and remat helps reduce register pressure.
llvm-svn: 51562 
							
						 
						
							2008-05-26 05:18:34 +00:00  
				
					
						
							
							
								 
						
							
								0479aa5c0b 
								
							 
						 
						
							
							
								
								Change class' public PassInfo variables to by initialized with the  
							
							... 
							
							
							
							address of the PassInfo directly instead of calling getPassInfo.
This eliminates a bunch of dynamic initializations of static data.
Also, fold RegisterPassBase into PassInfo, make a bunch of its
data members const, and rearrange some code to initialize data
members in constructors instead of using setter member functions.
llvm-svn: 51022 
							
						 
						
							2008-05-13 02:05:11 +00:00  
				
					
						
							
							
								 
						
							
								d78c400b5b 
								
							 
						 
						
							
							
								
								Clean up the use of static and anonymous namespaces. This turned up  
							
							... 
							
							
							
							several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017 
							
						 
						
							2008-05-13 00:00:25 +00:00  
				
					
						
							
							
								 
						
							
								19e3c857b8 
								
							 
						 
						
							
							
								
								Cosmetic changes:  
							
							... 
							
							
							
							- Comment fixes.
 - Moar whitespace.
 - Made ivars "private" by default.
No functionality change.
llvm-svn: 50926 
							
						 
						
							2008-05-10 00:12:52 +00:00  
				
					
						
							
							
								 
						
							
								5832410d77 
								
							 
						 
						
							
							
								
								Fix a memory bug: increment an iterator of a deleted machine instr.  
							
							... 
							
							
							
							llvm-svn: 48853 
							
						 
						
							2008-03-27 01:27:25 +00:00  
				
					
						
							
							
								 
						
							
								57bb088542 
								
							 
						 
						
							
							
								
								Typo.  
							
							... 
							
							
							
							llvm-svn: 48337 
							
						 
						
							2008-03-13 08:04:35 +00:00  
				
					
						
							
							
								 
						
							
								8f8a8b28e9 
								
							 
						 
						
							
							
								
								Don't try to sink 3-address instruction if convertToThreeAddress created more than one instructions.  
							
							... 
							
							
							
							llvm-svn: 48336 
							
						 
						
							2008-03-13 07:56:58 +00:00  
				
					
						
							
							
								 
						
							
								21449c76bc 
								
							 
						 
						
							
							
								
								Remove an unused command line option.  
							
							... 
							
							
							
							llvm-svn: 48334 
							
						 
						
							2008-03-13 06:38:28 +00:00  
				
					
						
							
							
								 
						
							
								5c26bde55e 
								
							 
						 
						
							
							
								
								TwoAddressInstructionPass enhancement. After it converts a two address instruction into a 3-address one, sink it past the instruction that kills the read-mod-write register if its definition is used past the kill. This reduces the number of live register by one.  
							
							... 
							
							
							
							llvm-svn: 48333 
							
						 
						
							2008-03-13 06:37:55 +00:00  
				
					
						
							
							
								 
						
							
								6325446666 
								
							 
						 
						
							
							
								
								Refactor code. Remove duplicated functions that basically do the same thing as  
							
							... 
							
							
							
							findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies.
llvm-svn: 47927 
							
						 
						
							2008-03-05 00:59:57 +00:00  
				
					
						
							
							
								 
						
							
								3a4be0fdef 
								
							 
						 
						
							
							
								
								Rename MRegisterInfo to TargetRegisterInfo.  
							
							... 
							
							
							
							llvm-svn: 46930 
							
						 
						
							2008-02-10 18:45:23 +00:00  
				
					
						
							
							
								 
						
							
								1ba66e0cec 
								
							 
						 
						
							
							
								
								Remove DefInst from LiveVariables::VarInfo.  Use the facilities on MachineRegisterInfo instead.  
							
							... 
							
							
							
							llvm-svn: 46016 
							
						 
						
							2008-01-15 22:02:46 +00:00  
				
					
						
							
							
								 
						
							
								03ad885039 
								
							 
						 
						
							
							
								
								rename TargetInstrDescriptor -> TargetInstrDesc.  
							
							... 
							
							
							
							Make MachineInstr::getDesc return a reference instead
of a pointer, since it can never be null.
llvm-svn: 45695 
							
						 
						
							2008-01-07 07:27:27 +00:00  
				
					
						
							
							
								 
						
							
								e99a6caee4 
								
							 
						 
						
							
							
								
								Rename all the M_* flags to be namespace qualified enums, and switch  
							
							... 
							
							
							
							all clients over to using predicates instead of these flags directly.
These are now private values which are only to be used to statically
initialize the tables.
llvm-svn: 45692 
							
						 
						
							2008-01-07 06:42:05 +00:00  
				
					
						
							
							
								 
						
							
								08a69ac2f5 
								
							 
						 
						
							
							
								
								add more and significantly better comments to the rest of the machineinstr  
							
							... 
							
							
							
							flags that can be set.  Add predicates for the ones lacking it, and switch
some clients over to using the predicates instead of Flags directly.
llvm-svn: 45690 
							
						 
						
							2008-01-07 06:21:53 +00:00  
				
					
						
							
							
								 
						
							
								b0d06b4381 
								
							 
						 
						
							
							
								
								Move a bunch more accessors from TargetInstrInfo to TargetInstrDescriptor  
							
							... 
							
							
							
							llvm-svn: 45680 
							
						 
						
							2008-01-07 03:13:06 +00:00  
				
					
						
							
							
								 
						
							
								a98c679de0 
								
							 
						 
						
							
							
								
								Rename MachineInstr::getInstrDescriptor -> getDesc(), which reflects  
							
							... 
							
							
							
							that it is cheap and efficient to get.
Move a variety of predicates from TargetInstrInfo into 
TargetInstrDescriptor, which makes it much easier to query a predicate
when you don't have TII around.  Now you can use MI->getDesc()->isBranch()
instead of going through TII, and this is much more efficient anyway. Not
all of the predicates have been moved over yet.
Update old code that used MI->getInstrDescriptor()->Flags to use the
new predicates in many places.
llvm-svn: 45674 
							
						 
						
							2008-01-07 01:56:04 +00:00  
				
					
						
							
							
								 
						
							
								0c209430b4 
								
							 
						 
						
							
							
								
								Don't recalculate the loop info and loop dominators analyses if they're  
							
							... 
							
							
							
							preserved.
llvm-svn: 45596 
							
						 
						
							2008-01-04 20:54:55 +00:00  
				
					
						
							
							
								 
						
							
								7a73ae9a86 
								
							 
						 
						
							
							
								
								Move copyRegToReg from MRegisterInfo to TargetInstrInfo.  This is part of the  
							
							... 
							
							
							
							Machine-level API cleanup instigated by Chris.
llvm-svn: 45470 
							
						 
						
							2007-12-31 06:32:00 +00:00  
				
					
						
							
							
								 
						
							
								a10fff51d9 
								
							 
						 
						
							
							
								
								Rename SSARegMap -> MachineRegisterInfo in keeping with the idea  
							
							... 
							
							
							
							that "machine" classes are used to represent the current state of
the code being compiled.  Given this expanded name, we can start 
moving other stuff into it.  For now, move the UsedPhysRegs and
LiveIn/LoveOuts vectors from MachineFunction into it.
Update all the clients to match.
This also reduces some needless #includes, such as MachineModuleInfo
from MachineFunction.
llvm-svn: 45467 
							
						 
						
							2007-12-31 04:13:23 +00:00  
				
					
						
							
							
								 
						
							
								f3ebc3f3d2 
								
							 
						 
						
							
							
								
								Remove attribution from file headers, per discussion on llvmdev.  
							
							... 
							
							
							
							llvm-svn: 45418 
							
						 
						
							2007-12-29 20:36:04 +00:00  
				
					
						
							
							
								 
						
							
								a1cd45213d 
								
							 
						 
						
							
							
								
								As Chris and Evan pointed out, BreakCriticalMachineEdges doesn't really need  
							
							... 
							
							
							
							to be a pass of its own.  Instead, move it out into a helper method.
llvm-svn: 44002 
							
						 
						
							2007-11-12 01:05:09 +00:00  
				
					
						
							
							
								 
						
							
								65d2fcdd2a 
								
							 
						 
						
							
							
								
								This preserves critical edge breaking.  
							
							... 
							
							
							
							llvm-svn: 43911 
							
						 
						
							2007-11-08 22:23:57 +00:00  
				
					
						
							
							
								 
						
							
								9d86ef12c8 
								
							 
						 
						
							
							
								
								Bring UsedBlocks back.  StrongPHIElimination needs this information.  
							
							... 
							
							
							
							llvm-svn: 43866 
							
						 
						
							2007-11-08 01:20:48 +00:00  
				
					
						
							
							
								 
						
							
								5d7032bb08 
								
							 
						 
						
							
							
								
								It's possible to commute instrctions with more than 3 operands.  
							
							... 
							
							
							
							llvm-svn: 43256 
							
						 
						
							2007-10-23 20:14:40 +00:00  
				
					
						
							
							
								 
						
							
								f12967124c 
								
							 
						 
						
							
							
								
								Added missing curly braces which renders the if clause useless in debug build.  
							
							... 
							
							
							
							llvm-svn: 43196 
							
						 
						
							2007-10-20 04:01:47 +00:00  
				
					
						
							
							
								 
						
							
								c1e4e3743b 
								
							 
						 
						
							
							
								
								Allow copyRegToReg to emit cross register classes copies.  
							
							... 
							
							
							
							Tested with "make check"!
llvm-svn: 42346 
							
						 
						
							2007-09-26 06:25:56 +00:00  
				
					
						
							
							
								 
						
							
								e7da2d6ac3 
								
							 
						 
						
							
							
								
								Fix typo in comment.  
							
							... 
							
							
							
							llvm-svn: 36873 
							
						 
						
							2007-05-06 13:37:16 +00:00  
				
					
						
							
							
								 
						
							
								8c78a0bff0 
								
							 
						 
						
							
							
								
								Drop 'const'  
							
							... 
							
							
							
							llvm-svn: 36662 
							
						 
						
							2007-05-03 01:11:54 +00:00  
				
					
						
							
							
								 
						
							
								e95c6ad802 
								
							 
						 
						
							
							
								
								Use 'static const char' instead of 'static const int'.  
							
							... 
							
							
							
							Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.
llvm-svn: 36652 
							
						 
						
							2007-05-02 21:39:20 +00:00  
				
					
						
							
							
								 
						
							
								09f162ca6a 
								
							 
						 
						
							
							
								
								Do not use typeinfo to identify pass in pass manager.  
							
							... 
							
							
							
							llvm-svn: 36632 
							
						 
						
							2007-05-01 21:15:47 +00:00  
				
					
						
							
							
								 
						
							
								4c53d321aa 
								
							 
						 
						
							
							
								
								VarInfo::UsedBlocks is no longer used. Remove.  
							
							... 
							
							
							
							llvm-svn: 36250 
							
						 
						
							2007-04-18 05:04:38 +00:00  
				
					
						
							
							
								 
						
							
								5382426577 
								
							 
						 
						
							
							
								
								Keep UsedBlocks info accurate.  
							
							... 
							
							
							
							llvm-svn: 35140 
							
						 
						
							2007-03-18 09:02:31 +00:00  
				
					
						
							
							
								 
						
							
								aee775a6b7 
								
							 
						 
						
							
							
								
								Eliminate static ctors from Statistics  
							
							... 
							
							
							
							llvm-svn: 32698 
							
						 
						
							2006-12-19 22:41:21 +00:00  
				
					
						
							
							
								 
						
							
								355fc5ad50 
								
							 
						 
						
							
							
								
								Removed more <iostream> includes  
							
							... 
							
							
							
							llvm-svn: 32321 
							
						 
						
							2006-12-07 20:28:15 +00:00  
				
					
						
							
							
								 
						
							
								700b873130 
								
							 
						 
						
							
							
								
								Detemplatize the Statistic class.  The only type it is instantiated with  
							
							... 
							
							
							
							is 'unsigned'.
llvm-svn: 32279 
							
						 
						
							2006-12-06 17:46:33 +00:00  
				
					
						
							
							
								 
						
							
								67fc141db5 
								
							 
						 
						
							
							
								
								Match TargetInstrInfo changes.  
							
							... 
							
							
							
							llvm-svn: 32098 
							
						 
						
							2006-12-01 21:52:58 +00:00  
				
					
						
							
							
								 
						
							
								787b77320f 
								
							 
						 
						
							
							
								
								Use llvm streams instead of <iostream>  
							
							... 
							
							
							
							llvm-svn: 31985 
							
						 
						
							2006-11-28 22:48:48 +00:00  
				
					
						
							
							
								 
						
							
								1698c2999c 
								
							 
						 
						
							
							
								
								Remove M_2_ADDR_FLAG.  
							
							... 
							
							
							
							llvm-svn: 31583 
							
						 
						
							2006-11-09 02:22:54 +00:00  
				
					
						
							
							
								 
						
							
								d8697deca3 
								
							 
						 
						
							
							
								
								Two-address instructions no longer have to be A := A op C. Now any pair of dest / src operands can be tied together.  
							
							... 
							
							
							
							llvm-svn: 31363 
							
						 
						
							2006-11-01 23:06:55 +00:00  
				
					
						
							
							
								 
						
							
								13a5dcddce 
								
							 
						 
						
							
							
								
								Fix a long-standing wart in the code generator: two-address instruction lowering  
							
							... 
							
							
							
							actually *removes* one of the operands, instead of just assigning both operands
the same register.  This make reasoning about instructions unnecessarily complex,
because you need to know if you are before or after register allocation to match
up operand #'s with the target description file.
Changing this also gets rid of a bunch of hacky code in various places.
This patch also includes changes to fold loads into cmp/test instructions in
the X86 backend, along with a significant simplification to the X86 spill
folding code.
llvm-svn: 30108 
							
						 
						
							2006-09-05 02:12:02 +00:00  
				
					
						
							
							
								 
						
							
								3d27be1333 
								
							 
						 
						
							
							
								
								s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|  
							
							... 
							
							
							
							llvm-svn: 29911 
							
						 
						
							2006-08-27 12:54:02 +00:00  
				
					
						
							
							
								 
						
							
								c496b418b5 
								
							 
						 
						
							
							
								
								Reduce number of exported symbols  
							
							... 
							
							
							
							llvm-svn: 29220 
							
						 
						
							2006-07-20 17:28:38 +00:00  
				
					
						
							
							
								 
						
							
								e097e6f7c7 
								
							 
						 
						
							
							
								
								Shave another 27K off libllvmgcc.dylib with visibility hidden  
							
							... 
							
							
							
							llvm-svn: 28973 
							
						 
						
							2006-06-28 22:17:39 +00:00  
				
					
						
							
							
								 
						
							
								aa2372562e 
								
							 
						 
						
							
							
								
								Patches to make the LLVM sources more -pedantic clean.  Patch provided  
							
							... 
							
							
							
							by Anton Korobeynikov!  This is a step towards closing PR786.
llvm-svn: 28447 
							
						 
						
							2006-05-24 17:04:05 +00:00  
				
					
						
							
							
								 
						
							
								10d6341618 
								
							 
						 
						
							
							
								
								Move some methods out of MachineInstr into MachineOperand  
							
							... 
							
							
							
							llvm-svn: 28102 
							
						 
						
							2006-05-04 17:52:23 +00:00  
				
					
						
							
							
								 
						
							
								de02d7727f 
								
							 
						 
						
							
							
								
								Add explicit #includes of <iostream>  
							
							... 
							
							
							
							llvm-svn: 25515 
							
						 
						
							2006-01-22 23:41:00 +00:00  
				
					
						
							
							
								 
						
							
								3c7974aade 
								
							 
						 
						
							
							
								
								Fix some spello's pointed out by Gabor Greif  
							
							... 
							
							
							
							llvm-svn: 24019 
							
						 
						
							2005-10-26 18:41:41 +00:00  
				
					
						
							
							
								 
						
							
								835702a094 
								
							 
						 
						
							
							
								
								Remove trailing whitespace  
							
							... 
							
							
							
							llvm-svn: 21420 
							
						 
						
							2005-04-21 22:36:52 +00:00  
				
					
						
							
							
								 
						
							
								ea42c15da9 
								
							 
						 
						
							
							
								
								Use the TargetInstrInfo::commuteInstruction method to commute instructions  
							
							... 
							
							
							
							instead of doing it manually.
llvm-svn: 19685 
							
						 
						
							2005-01-19 07:08:42 +00:00  
				
					
						
							
							
								 
						
							
								9590870a0d 
								
							 
						 
						
							
							
								
								Make the 2-address instruction lowering pass smarter in two ways:  
							
							... 
							
							
							
							1. If we are two-addressing a commutable instruction and the LHS is not the
   last use of the variable, see if the instruction is the last use of the
   RHS.  If so, commute the instruction, allowing us to avoid a
   register-register copy in many cases for common instructions like ADD, OR,
   AND, etc on X86.
2. If #1  doesn't hold, and if this is an instruction that also existing in
   3-address form, promote the instruction to a 3-address instruction to
   avoid the register-register copy.  We can do this for several common
   instructions in X86, including ADDrr, INC, DEC, etc.
This patch implements test/Regression/CodeGen/X86/commute-two-addr.ll,
overlap-add.ll, and overlap-shift.ll when I check in the X86 support for it.
llvm-svn: 19245 
							
						 
						
							2005-01-02 02:34:12 +00:00  
				
					
						
							
							
								 
						
							
								7c16caa336 
								
							 
						 
						
							
							
								
								Changes For Bug 352  
							
							... 
							
							
							
							Move include/Config and include/Support into include/llvm/Config,
include/llvm/ADT and include/llvm/Support. From here on out, all LLVM
public header files must be under include/llvm/.
llvm-svn: 16137 
							
						 
						
							2004-09-01 22:55:40 +00:00  
				
					
						
							
							
								 
						
							
								6199899483 
								
							 
						 
						
							
							
								
								The insertion method returns void now  
							
							... 
							
							
							
							llvm-svn: 15779 
							
						 
						
							2004-08-15 22:14:31 +00:00  
				
					
						
							
							
								 
						
							
								6dd644e017 
								
							 
						 
						
							
							
								
								Fix indentation and wrap code at 80 cols  
							
							... 
							
							
							
							llvm-svn: 15107 
							
						 
						
							2004-07-22 15:26:23 +00:00  
				
					
						
							
							
								 
						
							
								f2b976bdd5 
								
							 
						 
						
							
							
								
								Remove extraneous punctuation  
							
							... 
							
							
							
							llvm-svn: 15098 
							
						 
						
							2004-07-22 05:51:56 +00:00  
				
					
						
							
							
								 
						
							
								adbbc62f82 
								
							 
						 
						
							
							
								
								Minor cleanups  
							
							... 
							
							
							
							llvm-svn: 15091 
							
						 
						
							2004-07-21 23:17:57 +00:00  
				
					
						
							
							
								 
						
							
								902dcf0729 
								
							 
						 
						
							
							
								
								These files don't need to include <iostream> since they include "Support/Debug.h".  
							
							... 
							
							
							
							llvm-svn: 15089 
							
						 
						
							2004-07-21 20:50:33 +00:00  
				
					
						
							
							
								 
						
							
								a74cf5a7d9 
								
							 
						 
						
							
							
								
								Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)  
							
							... 
							
							
							
							llvm-svn: 14997 
							
						 
						
							2004-07-19 06:55:21 +00:00  
				
					
						
							
							
								 
						
							
								23dbc8170c 
								
							 
						 
						
							
							
								
								Made a fix so that you can print out MachineInstrs that belong to a MachineBasicBlock that is not yet attached to a MachineFunction. This change includes changing the third operand (TargetMachine) to a pointer for the MachineInstr::print function.  
							
							... 
							
							
							
							llvm-svn: 14389 
							
						 
						
							2004-06-25 00:13:11 +00:00  
				
					
						
							
							
								 
						
							
								2150542af9 
								
							 
						 
						
							
							
								
								Adjust to new TargetMachine interface  
							
							... 
							
							
							
							llvm-svn: 13956 
							
						 
						
							2004-06-02 05:57:12 +00:00  
				
					
						
							
							
								 
						
							
								26583db8b6 
								
							 
						 
						
							
							
								
								Beautify debug output.  
							
							... 
							
							
							
							llvm-svn: 11573 
							
						 
						
							2004-02-18 00:35:06 +00:00  
				
					
						
							
							
								 
						
							
								e27f33f00e 
								
							 
						 
						
							
							
								
								This pass should not require phi elimination or live variable  
							
							... 
							
							
							
							analysis. It should only preserve them and update LiveVariables if it
already ran.
llvm-svn: 11479 
							
						 
						
							2004-02-15 21:50:32 +00:00  
				
					
						
							
							
								 
						
							
								5a92240270 
								
							 
						 
						
							
							
								
								Use newly added next() and prior() utility functions.  
							
							... 
							
							
							
							llvm-svn: 11430 
							
						 
						
							2004-02-14 01:18:34 +00:00  
				
					
						
							
							
								 
						
							
								8cdd0215bf 
								
							 
						 
						
							
							
								
								Remove getAllocatedRegNum(). Use getReg() instead.  
							
							... 
							
							
							
							llvm-svn: 11393 
							
						 
						
							2004-02-13 21:01:20 +00:00  
				
					
						
							
							
								 
						
							
								80da865f77 
								
							 
						 
						
							
							
								
								Change MachineBasicBlock's vector of MachineInstr pointers into an  
							
							... 
							
							
							
							ilist of MachineInstr objects. This allows constant time removal and
insertion of MachineInstr instances from anywhere in each
MachineBasicBlock. It also allows for constant time splicing of
MachineInstrs into or out of MachineBasicBlocks.
llvm-svn: 11340 
							
						 
						
							2004-02-12 02:27:10 +00:00  
				
					
						
							
							
								 
						
							
								dd0c255d14 
								
							 
						 
						
							
							
								
								Added missing include.  
							
							... 
							
							
							
							llvm-svn: 11129 
							
						 
						
							2004-02-05 05:04:39 +00:00  
				
					
						
							
							
								 
						
							
								327426411e 
								
							 
						 
						
							
							
								
								Modify the two address instruction pass to remove the duplicate  
							
							... 
							
							
							
							operand of the instruction and thus simplify the register allocation.
llvm-svn: 11124 
							
						 
						
							2004-02-04 22:17:40 +00:00  
				
					
						
							
							
								 
						
							
								74b26f77a3 
								
							 
						 
						
							
							
								
								Revert changes. Will implement this using a different set of primitives  
							
							... 
							
							
							
							llvm-svn: 11091 
							
						 
						
							2004-02-02 23:08:58 +00:00  
				
					
						
							
							
								 
						
							
								6471e66fbb 
								
							 
						 
						
							
							
								
								Correctly update def/use information for modified machine operands.  
							
							... 
							
							
							
							llvm-svn: 11087 
							
						 
						
							2004-02-02 21:56:40 +00:00  
				
					
						
							
							
								 
						
							
								a2ef296994 
								
							 
						 
						
							
							
								
								Fix, correctly this time, the computation of the return value  
							
							... 
							
							
							
							Fix a spello
Tighten up the assertion checking
No functionality changes.
llvm-svn: 11036 
							
						 
						
							2004-01-31 21:21:43 +00:00  
				
					
						
							
							
								 
						
							
								626f431165 
								
							 
						 
						
							
							
								
								* Fix incorrect computation of the runOnMachineFunction return value  
							
							... 
							
							
							
							* Turn a bunch of instance variables into automatic variables
llvm-svn: 11035 
							
						 
						
							2004-01-31 21:14:04 +00:00  
				
					
						
							
							
								 
						
							
								d835aa6711 
								
							 
						 
						
							
							
								
								Remove unneeded #includes  
							
							... 
							
							
							
							Move Passes.h (which defines the interface to this file) to the top.
Move statistics to the top of the file.
Add a comment
llvm-svn: 11034 
							
						 
						
							2004-01-31 21:07:15 +00:00  
				
					
						
							
							
								 
						
							
								52a714b45b 
								
							 
						 
						
							
							
								
								Make LiveVariables::HandlePhysRegUse and  
							
							... 
							
							
							
							LiveVariables::HandlePhysRegDef private they use information that is
not in memory when LiveVariables finishes the analysis.
Also update the TwoAddressInstructionPass to not use this interface.
llvm-svn: 10755 
							
						 
						
							2004-01-11 09:18:45 +00:00  
				
					
						
							
							
								 
						
							
								fc3d0598df 
								
							 
						 
						
							
							
								
								fix warning  
							
							... 
							
							
							
							llvm-svn: 10692 
							
						 
						
							2004-01-05 05:42:17 +00:00  
				
					
						
							
							
								 
						
							
								08c5311729 
								
							 
						 
						
							
							
								
								Currently we cannot handle two-address instructions of the form:  
							
							... 
							
							
							
							A = B op C where A == C, but this cannot really occur in practice
because of SSA form. Add an assert to check that just to be safe.
llvm-svn: 10682 
							
						 
						
							2004-01-05 02:25:45 +00:00  
				
					
						
							
							
								 
						
							
								5e0e67173d 
								
							 
						 
						
							
							
								
								Update description.  
							
							... 
							
							
							
							llvm-svn: 10681 
							
						 
						
							2004-01-04 23:09:24 +00:00  
				
					
						
							
							
								 
						
							
								7139090fd2 
								
							 
						 
						
							
							
								
								Remove TwoAddressInstruction from the public headers and add an ID  
							
							... 
							
							
							
							instead, since this pass doesn't expose any state to its users.
llvm-svn: 10520 
							
						 
						
							2003-12-18 22:40:24 +00:00  
				
					
						
							
							
								 
						
							
								725021cb6c 
								
							 
						 
						
							
							
								
								Add TwoAddressInstructionPass to handle instructions that have two or  
							
							... 
							
							
							
							more operands and the two first operands are constrained to be the
same. The pass takes an instruction of the form:
        a = b op c
and transforms it into:
        a = b
        a = a op c
and also preserves live variables.
llvm-svn: 10512 
							
						 
						
							2003-12-18 13:06:04 +00:00