Misha Brukman 
							
						 
					 
					
						
						
							
						
						d3f03e4b50 
					 
					
						
						
							
							Fix compilation errors with VS 2005, patch by Aaron Gray.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20231  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-02-17 21:39:27 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						aa781b3404 
					 
					
						
						
							
							Don't sink argument loads into loops or other bad places.  This disables folding of argument loads with instructions that are not in the entry block.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@20228  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-02-17 19:40:32 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ac9dc08c7f 
					 
					
						
						
							
							Adjust to changes in SelectionDAG interface.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19779  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-23 04:36:26 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						68cd65ea68 
					 
					
						
						
							
							Get this to work for 64-bit systems.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19763  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-22 23:04:37 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						2c49f27955 
					 
					
						
						
							
							Support targets that do not use i8 shift amounts.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19707  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-19 22:31:21 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ef5cd1d3cf 
					 
					
						
						
							
							Teach legalize to promote copy(from|to)reg, instead of making the isel pass  
						
						... 
						
						
						
						do it.  This results in better code on X86 for floats (because if strict
precision is not required, we can elide some more expensive double -> float
conversions like the old isel did), and allows other targets to emit
CopyFromRegs that are not legal for arguments.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19668  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-18 17:54:55 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f30b73b1c6 
					 
					
						
						
							
							Allow setcc operations to have nonbool types.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19656  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-18 02:52:03 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						d3948116b8 
					 
					
						
						
							
							Non-volatile loads can be freely reordered against each other.  This fixes  
						
						... 
						
						
						
						X86/reg-pressure.ll again, and allows us to do nice things in other cases.
For example, we now codegen this sort of thing:
int %loadload(int *%X, int* %Y) {
  %Z = load int* %Y
  %Y = load int* %X      ;; load between %Z and store
  %Q = add int %Z, 1
  store int %Q, int* %Y
  ret int %Y
}
Into this:
loadload:
        mov %EAX, DWORD PTR [%ESP + 4]
        mov %EAX, DWORD PTR [%EAX]
        mov %ECX, DWORD PTR [%ESP + 8]
        inc DWORD PTR [%ECX]
        ret
where we weren't able to form the 'inc [mem]' before.  This also lets the
instruction selector emit loads in any order it wants to, which can be good
for register pressure as well.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19644  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-17 22:19:26 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a651cf67b7 
					 
					
						
						
							
							Don't call SelectionDAG.getRoot() directly, go through a forwarding method.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19642  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-17 19:43:36 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0afa8e348e 
					 
					
						
						
							
							Implement a target independent optimization to codegen arguments only into  
						
						... 
						
						
						
						the basic block that uses them if possible.  This is a big win on X86, as it
lets us fold the argument loads into instructions and reduce register pressure
(by not loading all of the arguments in the entry block).
For this (contrived to show the optimization) testcase:
int %argtest(int %A, int %B) {
        %X = sub int 12345, %A
        br label %L
L:
        %Y = add int %X, %B
        ret int %Y
}
we used to produce:
argtest:
        mov %ECX, DWORD PTR [%ESP + 4]
        mov %EAX, 12345
        sub %EAX, %ECX
        mov %EDX, DWORD PTR [%ESP + 8]
.LBBargtest_1:  # L
        add %EAX, %EDX
        ret
now we produce:
argtest:
        mov %EAX, 12345
        sub %EAX, DWORD PTR [%ESP + 4]
.LBBargtest_1:  # L
        add %EAX, DWORD PTR [%ESP + 8]
        ret
This also fixes the FIXME in the code.
BTW, this occurs in real code.  164.gzip shrinks from 8623 to 8608 lines of
.s file.  The stack frame in huft_build shrinks from 1644->1628 bytes,
inflate_codes shrinks from 116->108 bytes, and inflate_block from 2620->2612,
due to fewer spills.
Take that alkis. :-)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19639  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-17 17:55:19 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						068a81e9fc 
					 
					
						
						
							
							Refactor code into a new method.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19635  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-17 17:15:02 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						171453a284 
					 
					
						
						
							
							add method stub  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19612  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-16 07:28:41 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c8ea3c4710 
					 
					
						
						
							
							Add support for promoted registers being live across blocks.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19595  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-16 02:23:07 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						98e5c0e5e4 
					 
					
						
						
							
							Use the new TLI method to get this.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19582  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-16 01:11:19 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						fb849800ea 
					 
					
						
						
							
							Add support for targets that require promotions.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19579  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-16 00:37:38 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						859157daee 
					 
					
						
						
							
							Add new SIGN_EXTEND_INREG, ZERO_EXTEND_INREG, and FP_ROUND_INREG operators.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19568  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-15 06:17:04 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						69a52155d2 
					 
					
						
						
							
							Adjust to CopyFromReg changes, implement deletion of truncating/extending  
						
						... 
						
						
						
						stores/loads.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19562  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-14 22:38:01 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						18c2f13e0f 
					 
					
						
						
							
							Add new ImplicitDef node, rename CopyRegSDNode class to RegSDNode.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19535  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-13 20:50:02 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5a6c6d98d5 
					 
					
						
						
							
							Don't forget the existing root.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19531  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-13 19:53:14 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ddb870b065 
					 
					
						
						
							
							Codegen independent ops as being independent.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19528  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-13 17:59:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7944d9d995 
					 
					
						
						
							
							Add an option to view the selection dags as they are generated.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19498  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-12 03:41:21 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f1fdacae8c 
					 
					
						
						
							
							add an assertion, avoid creating copyfromreg/copytoreg pairs that are the  
						
						... 
						
						
						
						same for PHI nodes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19484  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-11 22:03:46 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7041ee35ad 
					 
					
						
						
							
							Turn memset/memcpy/memmove into the corresponding operations.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19463  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-11 05:56:49 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ee749d7488 
					 
					
						
						
							
							Handle static alloca arguments to PHI nodes.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19409  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-09 01:16:24 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						39ae362279 
					 
					
						
						
							
							Use new interfaces to correctly lower varargs and return/frame address intrinsics.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19407  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-09 00:00:49 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						64e14b1679 
					 
					
						
						
							
							Add support for llvm.setjmp and longjmp.  Only 3 SingleSource/UnitTests fail now.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19404  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-08 22:48:57 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f26bc8ef48 
					 
					
						
						
							
							Silence VS warnings.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19384  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-08 19:52:31 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						cf5734dddd 
					 
					
						
						
							
							Adjust to changes in LowerCAllTo interfaces  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19374  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-08 19:26:18 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ae0aacb833 
					 
					
						
						
							
							Add support for FP->INT conversions and back.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19369  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-08 08:08:56 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7cc4777a26 
					 
					
						
						
							
							Implement support for long GEP indices on 32-bit archs and support for  
						
						... 
						
						
						
						int GEP indices on 64-bit archs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19354  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-07 21:56:57 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f44fd88e9c 
					 
					
						
						
							
							Fix handling of dead PHI nodes.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19349  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-07 21:34:19 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						1c08c714bb 
					 
					
						
						
							
							Initial implementation of the SelectionDAGISel class.  This contains most  
						
						... 
						
						
						
						of the code for lowering from LLVM code to a SelectionDAG.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19331  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-01-07 07:47:53 +00:00