Chris Lattner 
							
						 
					 
					
						
						
							
						
						ab55698349 
					 
					
						
						
							
							Fix DemoteRegToStack on an invoke.  This fixes PR634.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23618  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-04 00:44:01 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7a66e686fe 
					 
					
						
						
							
							Clean up the code a bit.  Use isInstructionTriviallyDead to be more aggressive  
						
						... 
						
						
						
						and more correct than use_empty().  This fixes PR635 and
SimplifyCFG/2005-10-02-InvokeSimplify.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23616  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-03 23:43:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5e8ca66914 
					 
					
						
						
							
							Make IVUseShouldUsePostIncValue more aggressive when the use is a PHI.  In  
						
						... 
						
						
						
						particular, it should realize that phi's use their values in the pred block
not the phi block itself.  This change turns our em3d loop from this:
_test:
        cmpwi cr0, r4, 0
        bgt cr0, LBB_test_2     ; entry.no_exit_crit_edge
LBB_test_1:     ; entry.loopexit_crit_edge
        li r2, 0
        b LBB_test_6    ; loopexit
LBB_test_2:     ; entry.no_exit_crit_edge
        li r6, 0
LBB_test_3:     ; no_exit
        or r2, r6, r6
        lwz r6, 0(r3)
        cmpw cr0, r6, r5
        beq cr0, LBB_test_6     ; loopexit
LBB_test_4:     ; endif
        addi r3, r3, 4
        addi r6, r2, 1
        cmpw cr0, r6, r4
        blt cr0, LBB_test_3     ; no_exit
LBB_test_5:     ; endif.loopexit.loopexit_crit_edge
        addi r3, r2, 1
        blr
LBB_test_6:     ; loopexit
        or r3, r2, r2
        blr
into:
_test:
        cmpwi cr0, r4, 0
        bgt cr0, LBB_test_2     ; entry.no_exit_crit_edge
LBB_test_1:     ; entry.loopexit_crit_edge
        li r2, 0
        b LBB_test_5    ; loopexit
LBB_test_2:     ; entry.no_exit_crit_edge
        li r6, 0
LBB_test_3:     ; no_exit
        lwz r2, 0(r3)
        cmpw cr0, r2, r5
        or r2, r6, r6
        beq cr0, LBB_test_5     ; loopexit
LBB_test_4:     ; endif
        addi r3, r3, 4
        addi r6, r6, 1
        cmpw cr0, r6, r4
        or r2, r6, r6
        blt cr0, LBB_test_3     ; no_exit
LBB_test_5:     ; loopexit
        or r3, r2, r2
        blr
Unfortunately, this is actually worse code, because the register coallescer
is getting confused somehow.  If it were doing its job right, it could turn the
code into this:
_test:
        cmpwi cr0, r4, 0
        bgt cr0, LBB_test_2     ; entry.no_exit_crit_edge
LBB_test_1:     ; entry.loopexit_crit_edge
        li r6, 0
        b LBB_test_5    ; loopexit
LBB_test_2:     ; entry.no_exit_crit_edge
        li r6, 0
LBB_test_3:     ; no_exit
        lwz r2, 0(r3)
        cmpw cr0, r2, r5
        beq cr0, LBB_test_5     ; loopexit
LBB_test_4:     ; endif
        addi r3, r3, 4
        addi r6, r6, 1
        cmpw cr0, r6, r4
        blt cr0, LBB_test_3     ; no_exit
LBB_test_5:     ; loopexit
        or r3, r6, r6
        blr
... which I'll work on next. :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23604  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-03 02:50:05 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0ae33eb243 
					 
					
						
						
							
							Refactor some code into a function  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23603  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-03 01:04:44 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						1902ff4d82 
					 
					
						
						
							
							This break is bogus and I have no idea why it was there.  Basically it prevents  
						
						... 
						
						
						
						memoizing code when IV's are used by phinodes outside of loops.  In a simple
example, we were getting this code before (note that r6 and r7 are isomorphic
IV's):
        li r6, 0
        or r7, r6, r6
LBB_test_3:     ; no_exit
        lwz r2, 0(r3)
        cmpw cr0, r2, r5
        or r2, r7, r7
        beq cr0, LBB_test_5     ; loopexit
LBB_test_4:     ; endif
        addi r2, r7, 1
        addi r7, r7, 1
        addi r3, r3, 4
        addi r6, r6, 1
        cmpw cr0, r6, r4
        blt cr0, LBB_test_3     ; no_exit
Now we get:
        li r6, 0
LBB_test_3:     ; no_exit
        or r2, r6, r6
        lwz r6, 0(r3)
        cmpw cr0, r6, r5
        beq cr0, LBB_test_6     ; loopexit
LBB_test_4:     ; endif
        addi r3, r3, 4
        addi r6, r2, 1
        cmpw cr0, r6, r4
        blt cr0, LBB_test_3     ; no_exit
this was noticed in em3d.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23602  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-03 00:37:33 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						37edbf0b21 
					 
					
						
						
							
							when checking if we should move a split edge block outside of a loop,  
						
						... 
						
						
						
						check the presplit pred, not the post-split pred.  This was causing us
to make the wrong decision in some cases, leaving the critical edge block
in the loop.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23601  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-03 00:31:52 +00:00 
						 
				 
			
				
					
						
							
							
								Jeff Cohen 
							
						 
					 
					
						
						
							
						
						2aeaf4e839 
					 
					
						
						
							
							Fix VC++ warnings.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23579  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-10-01 03:57:14 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						93e50ce04c 
					 
					
						
						
							
							Insert stores after phi nodes in the normal dest.  This fixes  
						
						... 
						
						
						
						LowerInvoke/2005-08-03-InvokeWithPHI.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23525  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-29 17:44:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a48bc53cad 
					 
					
						
						
							
							Fold isascii into a simple comparison.  This speeds up 197.parser by 7.4%,  
						
						... 
						
						
						
						bringing the LLC time down to the CBE time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23521  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-29 06:17:27 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						e9b6242780 
					 
					
						
						
							
							remove a bunch of unneeded stuff, or self evident comments  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23519  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-29 06:16:11 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c330069e20 
					 
					
						
						
							
							Implement a couple of memcmp folds from the todo list  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23517  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-29 04:54:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						32643d8e05 
					 
					
						
						
							
							Constant fold llvm.sqrt  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23487  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-28 01:34:32 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5b3c70263b 
					 
					
						
						
							
							add a note about a way to improve this code further, that I won't be getting  
						
						... 
						
						
						
						to right now.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23485  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-27 22:44:59 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						9a5582f251 
					 
					
						
						
							
							Fix a regression in my previous patch, fixing GlobalOpt/2005-09-27-Crash.ll  
						
						... 
						
						
						
						and PR632.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23484  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-27 22:28:11 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						4531371960 
					 
					
						
						
							
							Avoid spilling stack slots... to stack slots.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23478  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-27 21:33:12 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f4e6c3a69b 
					 
					
						
						
							
							Completely rewrite 'correct' eh support.  This changes how setjmp insertion  
						
						... 
						
						
						
						is performed so it is only at most once per function that contains an invoke
instead of once per invoke in the function.  This patch has the following perks:
1. It fixes PR631, which complains about slowness.
2. If fixes PR240, which complains about non-volatile vars being live across
   setjmp/longjmps.
3. It improves (but does not fix) the jmpbuf alignment issue on itanium by not
   forcing the jmpbufs to always be 8-bytes off the alignment of the structure.
4. It speeds up 253.perlbmk from 338s to 13.70s (a 25x improvement!), making us
   now about 4% faster than GCC.
Further improvements are also possible.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23477  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-27 21:18:17 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						fe15830f96 
					 
					
						
						
							
							Make the pass name simpler  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23476  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-27 21:10:32 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						6d7277b3b4 
					 
					
						
						
							
							allow demotion to volatile values, add support for invoke  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23473  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-27 19:39:00 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a9ec8ab32b 
					 
					
						
						
							
							Add support for external calls that we know how to constant fold.  This implements  
						
						... 
						
						
						
						ctor-list-opt.ll:CTOR8
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23465  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-27 05:02:43 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						231308c545 
					 
					
						
						
							
							Fix a bug where we would evaluate stores into linkonce objects which could be  
						
						... 
						
						
						
						potentially replaced at link-time.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23463  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-27 04:50:03 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						cd27142cc8 
					 
					
						
						
							
							Implement support for static constructors with calls in them.  This is useful  
						
						... 
						
						
						
						because gccas runs globalopt before inlining.
This implements ctor-list-opt.ll:CTOR7
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23462  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-27 04:45:34 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						8a7cc6e71c 
					 
					
						
						
							
							Refactor this code a bit, no functionality changes.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23460  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-27 04:27:01 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ff0c1ef9eb 
					 
					
						
						
							
							Remove some dead code.  ctor evaluation subsumes empty ctor elim  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23453  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 20:38:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						a22fdb0a37 
					 
					
						
						
							
							Add support for alloca, implementing ctor-list-opt.ll:CTOR6  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23452  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 17:07:09 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						aae4a1cd3f 
					 
					
						
						
							
							Add a debug printout, fix a crash on kc++  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23450  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 07:34:35 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						798b4d5bb3 
					 
					
						
						
							
							Implement loads/stores through GEP's of globals.  This implements  
						
						... 
						
						
						
						ctor-list-opt.ll:CTOR5.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23449  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 06:52:44 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						0b142e3920 
					 
					
						
						
							
							Replace TraverseGEPInitializer with ConstantFoldLoadThroughGEPConstantExpr  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23447  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 05:34:07 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						ebe61201d1 
					 
					
						
						
							
							Eliminate GetGEPGlobalInitializer in favor of the more powerful  
						
						... 
						
						
						
						ConstantFoldLoadThroughGEPConstantExpr function in the utils lib.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23446  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 05:28:52 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						363f2a26d5 
					 
					
						
						
							
							Factor the GetGEPGlobalInitializer out of this pass and into Transforms/Utils  
						
						... 
						
						
						
						as ConstantFoldLoadThroughGEPConstantExpr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23445  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 05:28:06 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						c5f52e6da1 
					 
					
						
						
							
							Move the ConstantFoldLoadThroughGEPConstantExpr function out of the InstCombine  
						
						... 
						
						
						
						pass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23444  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 05:27:10 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						562a055ca7 
					 
					
						
						
							
							add a comment  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23442  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 05:16:34 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						04de1cfb2b 
					 
					
						
						
							
							Add support for getelementptr, load, and correctly reject volatile stores.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23441  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 05:15:37 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						cdf98bed96 
					 
					
						
						
							
							Add support for br/brcond/switch and phi  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23439  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 04:57:38 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						79c1101947 
					 
					
						
						
							
							Add a simple interpreter to this code, allowing us to statically evaluate  
						
						... 
						
						
						
						global ctors that are simple enough.  This implements ctor-list-opt.ll:CTOR2.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23437  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 04:44:35 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						db973e60ce 
					 
					
						
						
							
							factor some code into a InstallGlobalCtors method, add comments.  No functionality change.  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23435  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 02:31:18 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7d8e58f384 
					 
					
						
						
							
							Make the global opt optimizer work on modules with a null terminator, by  
						
						... 
						
						
						
						accepting the null even with a non-65535 init prio
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23434  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 02:19:27 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b1ab458047 
					 
					
						
						
							
							Factor this code out into a few methods.  
						
						... 
						
						
						
						Implement the start of global ctor optimization.  It is currently smart
enough to remove the global ctor for cases like this:
struct foo {
  foo() {}
} x;
... saving a bit of startup time for the program.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23433  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-26 01:43:45 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						aebac50e77 
					 
					
						
						
							
							Fix some logic I broke that caused a regression on  
						
						... 
						
						
						
						SimplifyLibCalls/2005-05-20-sprintf-crash.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23430  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-25 07:06:48 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5931c54e85 
					 
					
						
						
							
							Move MaskedValueIsZero up.  
						
						... 
						
						
						
						Match a bunch of idioms for sign extensions, implementing InstCombine/signext.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23428  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-24 23:43:33 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						5d735bf29b 
					 
					
						
						
							
							Simplify this code a bit by relying on recursive simplification.  Support  
						
						... 
						
						
						
						sprintf("%s", P)'s that have uses.
s/hasNUses(0)/use_empty()/
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23425  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-24 22:17:06 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						b60e0815df 
					 
					
						
						
							
							remove some debugging code  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23411  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-23 18:49:09 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						263d1e469d 
					 
					
						
						
							
							Fold two consequtive branches that share a common destination between them.  
						
						... 
						
						
						
						This implements SimplifyCFG/branch-fold.ll, and is useful on ?:/min/max heavy
code
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23410  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-23 18:47:20 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						055dc102e9 
					 
					
						
						
							
							simplify some logic further  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23408  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-23 07:23:18 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						f58c1a578e 
					 
					
						
						
							
							pull a bunch of logic out of SimplifyCFG into a helper fn  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23407  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-23 06:39:30 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						e9487f0dc8 
					 
					
						
						
							
							Start threading across blocks with code in them, so long as the code does  
						
						... 
						
						
						
						not define a value that is used outside of it's block.  This catches many
more simplifications, e.g. 854 in 176.gcc, 137 in vpr, etc.
This implements branch-phi-thread.ll:test3.ll
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23397  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-20 01:48:40 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						2e42e36698 
					 
					
						
						
							
							Implement merging of blocks with the same condition if the block has multiple  
						
						... 
						
						
						
						predecessors.  This implements branch-phi-thread.ll::test1
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23395  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-20 00:43:16 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						9c88d98162 
					 
					
						
						
							
							Reject a case we don't handle yet  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23393  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-19 23:57:04 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7e1ff8d2d9 
					 
					
						
						
							
							remove debugging code :-/  
						
						... 
						
						
						
						git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23392  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-19 23:50:15 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						eaba3a194c 
					 
					
						
						
							
							Implement SimplifyCFG/branch-phi-thread.ll, the most trivial case of threading  
						
						... 
						
						
						
						control across branches with determined outcomes.  More generality to follow.
This triggers a couple thousand times in specint.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23391  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-19 23:49:37 +00:00 
						 
				 
			
				
					
						
							
							
								Chris Lattner 
							
						 
					 
					
						
						
							
						
						7203e158da 
					 
					
						
						
							
							Refactor this code a bit and make it more general.  This now compiles:  
						
						... 
						
						
						
						struct S { unsigned int i : 6, j : 11, k : 15; } b;
void plus2 (unsigned int x) { b.j += x; }
To:
_plus2:
        lis r2, ha16(L_b$non_lazy_ptr)
        lwz r2, lo16(L_b$non_lazy_ptr)(r2)
        lwz r4, 0(r2)
        slwi r3, r3, 6
        add r3, r4, r3
        rlwimi r3, r4, 0, 26, 14
        stw r3, 0(r2)
        blr
instead of:
_plus2:
        lis r2, ha16(L_b$non_lazy_ptr)
        lwz r2, lo16(L_b$non_lazy_ptr)(r2)
        lwz r4, 0(r2)
        rlwinm r5, r4, 26, 21, 31
        add r3, r5, r3
        rlwimi r4, r3, 6, 15, 25
        stw r4, 0(r2)
        blr
by eliminating an 'and'.
I'm pretty sure this is as small as we can go :)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23386  91177308-0d34-0410-b5e6-96231b3b80d8 
						
						
					 
					
						2005-09-18 07:22:02 +00:00