Evan Cheng 
							
						 
					 
					
						
						
							
						
						e951cd1647 
					 
					
						
						
							
							Keep UsedBlocks info accurate.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35140  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2007-03-18 09:02:31 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						cd3245ac45 
					 
					
						
						
							
							Eliminate static ctors from Statistics  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32698  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-12-19 22:41:21 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						bcd2498f4f 
					 
					
						
						
							
							Removed more <iostream> includes  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32321  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-12-07 20:28:15 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ac0b6ae358 
					 
					
						
						
							
							Detemplatize the Statistic class.  The only type it is instantiated with  
						
						... 
						
						
						
						is 'unsigned'.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32279  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-12-06 17:46:33 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						ba59a1e453 
					 
					
						
						
							
							Match TargetInstrInfo changes.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32098  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-12-01 21:52:58 +00:00 
						 
				 
			
				
					
						
							
							
								Bill Wendling 
							
						 
					 
					
						
						
							
						
						a09362eb97 
					 
					
						
						
							
							Use llvm streams instead of <iostream>  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31985  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-11-28 22:48:48 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						a1fd6504aa 
					 
					
						
						
							
							Remove M_2_ADDR_FLAG.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31583  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-11-09 02:22:54 +00:00 
						 
				 
			
				
					
						
							
							
								Evan Cheng 
							
						 
					 
					
						
						
							
						
						360c2dd25a 
					 
					
						
						
							
							Two-address instructions no longer have to be A := A op C. Now any pair of dest / src operands can be tied together.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31363  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-11-01 23:06:55 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						2926869b4a 
					 
					
						
						
							
							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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30108  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-09-05 02:12:02 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a4f0b3a084 
					 
					
						
						
							
							s|llvm/Support/Visibility.h|llvm/Support/Compiler.h|  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29911  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-08-27 12:54:02 +00:00 
						 
				 
			
				
					
						
							
							
								Andrew Lenharth 
							
						 
					 
					
						
						
							
						
						ed41f1bb19 
					 
					
						
						
							
							Reduce number of exported symbols  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29220  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-07-20 17:28:38 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f8c68f694c 
					 
					
						
						
							
							Shave another 27K off libllvmgcc.dylib with visibility hidden  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28973  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-06-28 22:17:39 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						d74ea2bbd8 
					 
					
						
						
							
							Patches to make the LLVM sources more -pedantic clean.  Patch provided  
						
						... 
						
						
						
						by Anton Korobeynikov!  This is a step towards closing PR786.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28447  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-05-24 17:04:05 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						e53f4a055f 
					 
					
						
						
							
							Move some methods out of MachineInstr into MachineOperand  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@28102  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-05-04 17:52:23 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						2c2c6c61f1 
					 
					
						
						
							
							Add explicit #includes of <iostream>  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25515  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2006-01-22 23:41:00 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c60e6020c0 
					 
					
						
						
							
							Fix some spello's pointed out by Gabor Greif  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@24019  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-26 18:41:41 +00:00 
						 
				 
			
				
					
						
							
							
								Misha Brukman 
							
						 
					 
					
						
						
							
						
						edf128a7fa 
					 
					
						
						
							
							Remove trailing whitespace  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@21420  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-04-21 22:36:52 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c71d6949b9 
					 
					
						
						
							
							Use the TargetInstrInfo::commuteInstruction method to commute instructions  
						
						... 
						
						
						
						instead of doing it manually.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19685  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-19 07:08:42 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						cfa0f2edd3 
					 
					
						
						
							
							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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19245  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-02 02:34:12 +00:00 
						 
				 
			
				
					
						
							
							
								Reid Spencer 
							
						 
					 
					
						
						
							
						
						551ccae044 
					 
					
						
						
							
							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/.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16137  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-09-01 22:55:40 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						078fee3f2e 
					 
					
						
						
							
							The insertion method returns void now  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15779  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-08-15 22:14:31 +00:00 
						 
				 
			
				
					
						
							
							
								Misha Brukman 
							
						 
					 
					
						
						
							
						
						75fa4e4f99 
					 
					
						
						
							
							Fix indentation and wrap code at 80 cols  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15107  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-22 15:26:23 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						199edde707 
					 
					
						
						
							
							Remove extraneous punctuation  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15098  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-22 05:51:56 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						1e31363a9e 
					 
					
						
						
							
							Minor cleanups  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15091  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-21 23:17:57 +00:00 
						 
				 
			
				
					
						
							
							
								Brian Gaeke 
							
						 
					 
					
						
						
							
						
						7848e68c16 
					 
					
						
						
							
							These files don't need to include <iostream> since they include "Support/Debug.h".  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15089  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-21 20:50:33 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						472405e0dc 
					 
					
						
						
							
							Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14997  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-07-19 06:55:21 +00:00 
						 
				 
			
				
					
						
							
							
								Tanya Lattner 
							
						 
					 
					
						
						
							
						
						b140762a45 
					 
					
						
						
							
							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.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14389  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-06-25 00:13:11 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						9bcdcd17c7 
					 
					
						
						
							
							Adjust to new TargetMachine interface  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@13956  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-06-02 05:57:12 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						3a9986f5d8 
					 
					
						
						
							
							Beautify debug output.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11573  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-18 00:35:06 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						f11800b718 
					 
					
						
						
							
							This pass should not require phi elimination or live variable  
						
						... 
						
						
						
						analysis. It should only preserve them and update LiveVariables if it
already ran.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11479  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-15 21:50:32 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						f81af21caf 
					 
					
						
						
							
							Use newly added next() and prior() utility functions.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11430  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-14 01:18:34 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						be766c7246 
					 
					
						
						
							
							Remove getAllocatedRegNum(). Use getReg() instead.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11393  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-13 21:01:20 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						c0b9dc5be7 
					 
					
						
						
							
							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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11340  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-12 02:27:10 +00:00 
						 
				 
			
				
					
						
							
							
								Tanya Lattner 
							
						 
					 
					
						
						
							
						
						5a5960978a 
					 
					
						
						
							
							Added missing include.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11129  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-05 05:04:39 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						14be64018f 
					 
					
						
						
							
							Modify the two address instruction pass to remove the duplicate  
						
						... 
						
						
						
						operand of the instruction and thus simplify the register allocation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11124  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-04 22:17:40 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						9fe7602862 
					 
					
						
						
							
							Revert changes. Will implement this using a different set of primitives  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11091  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-02 23:08:58 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						eea81bafd6 
					 
					
						
						
							
							Correctly update def/use information for modified machine operands.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11087  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-02-02 21:56:40 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6b50767905 
					 
					
						
						
							
							Fix, correctly this time, the computation of the return value  
						
						... 
						
						
						
						Fix a spello
Tighten up the assertion checking
No functionality changes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11036  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-01-31 21:21:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						163c1e7a69 
					 
					
						
						
							
							* Fix incorrect computation of the runOnMachineFunction return value  
						
						... 
						
						
						
						* Turn a bunch of instance variables into automatic variables
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11035  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-01-31 21:14:04 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						bd91c1c376 
					 
					
						
						
							
							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
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11034  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-01-31 21:07:15 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						b08bdc4a16 
					 
					
						
						
							
							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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10755  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-01-11 09:18:45 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						8c2403631b 
					 
					
						
						
							
							fix warning  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10692  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-01-05 05:42:17 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						271bd2d7f1 
					 
					
						
						
							
							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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10682  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-01-05 02:25:45 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						50c047d159 
					 
					
						
						
							
							Update description.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10681  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2004-01-04 23:09:24 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						4c080863de 
					 
					
						
						
							
							Remove TwoAddressInstruction from the public headers and add an ID  
						
						... 
						
						
						
						instead, since this pass doesn't expose any state to its users.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10520  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-12-18 22:40:24 +00:00 
						 
				 
			
				
					
						
							
							
								Alkis Evlogimenos 
							
						 
					 
					
						
						
							
						
						71499ded4d 
					 
					
						
						
							
							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.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10512  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2003-12-18 13:06:04 +00:00