Torok Edwin
							
						 
						
							 
							
							
							
							
								
							
							
								ccb29cd290 
								
							 
						 
						
							
							
								
								Convert more assert(0)+abort() -> LLVM_UNREACHABLE,  
							
							 
							
							... 
							
							
							
							and abort()/exit() -> llvm_report_error().
llvm-svn: 75363 
							
						 
						
							2009-07-11 13:10:19 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								816e2833c4 
								
							 
						 
						
							
							
								
								Fewer static variables, part 3 of many.  
							
							 
							
							... 
							
							
							
							llvm-svn: 74140 
							
						 
						
							2009-06-24 23:41:44 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								b9bff5880a 
								
							 
						 
						
							
							
								
								ifcvt should ignore cfg where true and false successors are the same.  
							
							 
							
							... 
							
							
							
							llvm-svn: 73423 
							
						 
						
							2009-06-15 21:24:34 +00:00  
						
					 
				
					
						
							
							
								 
								Bob Wilson
							
						 
						
							 
							
							
							
							
								
							
							
								857fe4e425 
								
							 
						 
						
							
							
								
								Revert r71744.  I must not have understood this correctly, because the  
							
							 
							
							... 
							
							
							
							assertion is failing for some tests.
llvm-svn: 71779 
							
						 
						
							2009-05-14 18:08:41 +00:00  
						
					 
				
					
						
							
							
								 
								Bob Wilson
							
						 
						
							 
							
							
							
							
								
							
							
								b4c93b1ff7 
								
							 
						 
						
							
							
								
								The IfConverter::MergeBlocks method appears to be used only to merge a basic  
							
							 
							
							... 
							
							
							
							block with its unique predecessor.  Change the code to assert if that is not
the case, instead of trying to handle situations where the block has
multiple predecessors.
llvm-svn: 71744 
							
						 
						
							2009-05-13 23:54:13 +00:00  
						
					 
				
					
						
							
							
								 
								Bob Wilson
							
						 
						
							 
							
							
							
							
								
							
							
								43f21dde1e 
								
							 
						 
						
							
							
								
								Revert a portion of Dan's change r71018 that I'm convinced is wrong.  
							
							 
							
							... 
							
							
							
							Dan was trying to catch the case where a basic block ends with a conditional
branch to the fall-through block.  In this case, all the instructions have
been moved out of FromBBI, leaving it empty.  It cannot end with a
conditional branch.  As the existing comment indicates, it will always fall
through to the next block.  If the block already had the next block (NBB)
listed as a successor, the preceding loop has a check for that and does not
remove it.  Thus, we need to check and add the successor only when it is
not already listed.
With Dan's change, the empty block often ends up with the fall-through
successor listed twice.  This exposed the problem in pr4195, where
CodePlacementOpt did not handle the same predecessor listed more than once.
It is also at least partially responsible for pr4202 and probably a similar
issue with Thumb branches being out of range.
llvm-svn: 71742 
							
						 
						
							2009-05-13 23:48:58 +00:00  
						
					 
				
					
						
							
							
								 
								Bob Wilson
							
						 
						
							 
							
							
							
							
								
							
							
								969bf71ca6 
								
							 
						 
						
							
							
								
								Merge adjacent conditional.  
							
							 
							
							... 
							
							
							
							llvm-svn: 71741 
							
						 
						
							2009-05-13 23:35:38 +00:00  
						
					 
				
					
						
							
							
								 
								Bob Wilson
							
						 
						
							 
							
							
							
							
								
							
							
								43467d7daf 
								
							 
						 
						
							
							
								
								Remove an unused variable.  
							
							 
							
							... 
							
							
							
							llvm-svn: 71740 
							
						 
						
							2009-05-13 23:31:30 +00:00  
						
					 
				
					
						
							
							
								 
								Bob Wilson
							
						 
						
							 
							
							
							
							
								
							
							
								2371f4f70a 
								
							 
						 
						
							
							
								
								Fix some typos and spelling and grammar, mostly in comments, but also one  
							
							 
							
							... 
							
							
							
							field name.  No functional changes.
llvm-svn: 71739 
							
						 
						
							2009-05-13 23:25:24 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								bb2f10759e 
								
							 
						 
						
							
							
								
								If a MachineBasicBlock has multiple ways of reaching another block,  
							
							 
							
							... 
							
							
							
							allow it to have multiple CFG edges to that block. This is needed
to allow MachineBasicBlock::isOnlyReachableByFallthrough to work
correctly. This fixes PR4126.
llvm-svn: 71018 
							
						 
						
							2009-05-05 21:10:19 +00:00  
						
					 
				
					
						
							
							
								 
								Duncan Sands
							
						 
						
							 
							
							
							
							
								
							
							
								dd571d325e 
								
							 
						 
						
							
							
								
								Fix typo.  Patch by nlewycky.  
							
							 
							
							... 
							
							
							
							llvm-svn: 58709 
							
						 
						
							2008-11-04 18:05:30 +00:00  
						
					 
				
					
						
							
							
								 
								Nuno Lopes
							
						 
						
							 
							
							
							
							
								
							
							
								57c6594e97 
								
							 
						 
						
							
							
								
								fix leakage of IfcvtTokens  
							
							 
							
							... 
							
							
							
							llvm-svn: 58690 
							
						 
						
							2008-11-04 13:02:59 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								97d95d6d85 
								
							 
						 
						
							
							
								
								Optimized FCMP_OEQ and FCMP_UNE for x86.  
							
							 
							
							... 
							
							
							
							Where previously LLVM might emit code like this:
        ucomisd %xmm1, %xmm0
        setne   %al
        setp    %cl
        orb     %al, %cl
        jne     .LBB4_2
it now emits this:
        ucomisd %xmm1, %xmm0
        jne     .LBB4_2
        jp      .LBB4_2
It has fewer instructions and uses fewer registers, but it does
have more branches. And in the case that this code is followed by
a non-fallthrough edge, it may be followed by a jmp instruction,
resulting in three branch instructions in sequence. Some effort
is made to avoid this situation.
To achieve this, X86ISelLowering.cpp now recognizes FCMP_OEQ and
FCMP_UNE in lowered form, and replace them with code that emits
two branches, except in the case where it would require converting
a fall-through edge to an explicit branch.
Also, X86InstrInfo.cpp's branch analysis and transform code now
knows now to handle blocks with multiple conditional branches. It
uses loops instead of having fixed checks for up to two
instructions. It can now analyze and transform code generated
from FCMP_OEQ and FCMP_UNE.
llvm-svn: 57873 
							
						 
						
							2008-10-21 03:29:32 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								a79db30d28 
								
							 
						 
						
							
							
								
								Tidy up several unbeseeming casts from pointer to intptr_t.  
							
							 
							
							... 
							
							
							
							llvm-svn: 55779 
							
						 
						
							2008-09-04 17:05:41 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								14714cb4fa 
								
							 
						 
						
							
							
								
								Fix SmallVector's size calculation so that a size of 0 is  
							
							 
							
							... 
							
							
							
							handled correctly, and change a few SmallVector uses to use
size 0 to more clearly reflect their intent.
llvm-svn: 55181 
							
						 
						
							2008-08-22 16:07:55 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								4f6bf04616 
								
							 
						 
						
							
							
								
								Convert uses of std::vector in TargetInstrInfo to SmallVector.  This change had to be propoagated down into all the targets and up into all clients of this API.  
							
							 
							
							... 
							
							
							
							llvm-svn: 54802 
							
						 
						
							2008-08-14 22:49:33 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								3b46030375 
								
							 
						 
						
							
							
								
								Pool-allocation for MachineInstrs, MachineBasicBlocks, and  
							
							 
							
							... 
							
							
							
							MachineMemOperands. The pools are owned by MachineFunctions.
This drastically reduces the number of calls to malloc/free made
during the "Emit" phase of scheduling, as well as later phases
in CodeGen. Combined with other changes, this speeds up the
"instruction selection" phase of CodeGen by 10% in some cases.
llvm-svn: 53212 
							
						 
						
							2008-07-07 23:14:23 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c5b3a3bea5 
								
							 
						 
						
							
							
								
								Register if-converter pass for -debug-pass.  
							
							 
							
							... 
							
							
							
							llvm-svn: 51931 
							
						 
						
							2008-06-04 09:15:51 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c799065cc3 
								
							 
						 
						
							
							
								
								Add a quick and dirty "loop aligner pass". x86 uses it to align its loops to 16-byte boundaries.  
							
							 
							
							... 
							
							
							
							llvm-svn: 47703 
							
						 
						
							2008-02-28 00:43:03 +00:00  
						
					 
				
					
						
							
							
								 
								Anton Korobeynikov
							
						 
						
							 
							
							
							
							
								
							
							
								035eaacd1f 
								
							 
						 
						
							
							
								
								Update gcc 4.3 warnings fix patch with recent head changes  
							
							 
							
							... 
							
							
							
							llvm-svn: 47368 
							
						 
						
							2008-02-20 11:10:28 +00:00  
						
					 
				
					
						
							
							
								 
								Dan Gohman
							
						 
						
							 
							
							
							
							
								
							
							
								70de4cb1cd 
								
							 
						 
						
							
							
								
								Use empty() instead of comparing size() with zero.  
							
							 
							
							... 
							
							
							
							llvm-svn: 46514 
							
						 
						
							2008-01-29 13:02:09 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								769c86bf63 
								
							 
						 
						
							
							
								
								simplify some code using new predicates  
							
							 
							
							... 
							
							
							
							llvm-svn: 45689 
							
						 
						
							2008-01-07 05:40:58 +00:00  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								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  
						
					 
				
					
						
							
							
								 
								Chris Lattner
							
						 
						
							 
							
							
							
							
								
							
							
								f3ebc3f3d2 
								
							 
						 
						
							
							
								
								Remove attribution from file headers, per discussion on llvmdev.  
							
							 
							
							... 
							
							
							
							llvm-svn: 45418 
							
						 
						
							2007-12-29 20:36:04 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								fbc73099dc 
								
							 
						 
						
							
							
								
								Somehow this wasn't committed last time. M_CLOBBERS_PRED is gone.  
							
							 
							
							... 
							
							
							
							llvm-svn: 38495 
							
						 
						
							2007-07-10 17:50:43 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								96c1457bff 
								
							 
						 
						
							
							
								
								Teach if-conversion about instructions that were already predicated, e.g. conditional move.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37964 
							
						 
						
							2007-07-06 23:24:39 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								a955c02c9b 
								
							 
						 
						
							
							
								
								Avoid if-converting simple block that ends with unconditional branch or fallthrough unless it branches / falls to the 'false' block. Not profitable, may end up increasing code size.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37660 
							
						 
						
							2007-06-19 21:45:13 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								a7ca624028 
								
							 
						 
						
							
							
								
								Replace TargetInstrInfo::CanBeDuplicated() with a M_NOT_DUPLICABLE bit.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37643 
							
						 
						
							2007-06-19 01:26:51 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								0598b2d5eb 
								
							 
						 
						
							
							
								
								Fix some fragile code wrt CFG edge updating.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37634 
							
						 
						
							2007-06-18 22:44:57 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								51eb2c3bbe 
								
							 
						 
						
							
							
								
								Properly remove duplicate instructions as result of diamond if-conversion. Other bug fixes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37623 
							
						 
						
							2007-06-18 08:37:25 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								3a51c854d0 
								
							 
						 
						
							
							
								
								Really turn if-converter loose:  
							
							 
							
							... 
							
							
							
							1. Consider all possible ifcvt cases at once. No longer restricted to bottom
   up iterative approach.
2. Sort all possible cases based on a cost function. Perform the most profitable
   ones first invalidate others that target the same blocks.
3. Fixed a number of bugs related to block duplication.
llvm-svn: 37613 
							
						 
						
							2007-06-16 09:34:52 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								23402fcaef 
								
							 
						 
						
							
							
								
								Not every predicable block can be safely duplicated.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37607 
							
						 
						
							2007-06-15 21:18:05 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								234a90e83e 
								
							 
						 
						
							
							
								
								MachineInstr::isPredicable() is no longer needed.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37599 
							
						 
						
							2007-06-15 19:06:07 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								cd5f5e3ecd 
								
							 
						 
						
							
							
								
								Extra edges are deleted later if needed.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37593 
							
						 
						
							2007-06-15 17:34:48 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								92fb5453c3 
								
							 
						 
						
							
							
								
								Allow small blocks to be duplicated to enable if-conversion.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37590 
							
						 
						
							2007-06-15 07:36:12 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								add977670f 
								
							 
						 
						
							
							
								
								No really, clear predcessors states.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37581 
							
						 
						
							2007-06-14 23:34:09 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								9fc56c079d 
								
							 
						 
						
							
							
								
								If BB is predicated, invalidate its predecessor(s) which would if-convert it. It needs to be re-analyzed.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37580 
							
						 
						
							2007-06-14 23:13:19 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e08f0eefa6 
								
							 
						 
						
							
							
								
								Fix typo.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37577 
							
						 
						
							2007-06-14 21:26:08 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								1e6f08b2a2 
								
							 
						 
						
							
							
								
								Fix some stupid bugs that have effectively disabled if-conversion.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37575 
							
						 
						
							2007-06-14 20:28:52 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								cbaaff58bf 
								
							 
						 
						
							
							
								
								Typo  
							
							 
							
							... 
							
							
							
							llvm-svn: 37566 
							
						 
						
							2007-06-13 00:04:00 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								9acfa7b063 
								
							 
						 
						
							
							
								
								Now if-converting all 4 variants of triangles.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37565 
							
						 
						
							2007-06-12 23:54:05 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								4dd31a7b1b 
								
							 
						 
						
							
							
								
								Restructure code to reduce ifcvt compile time cost.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37543 
							
						 
						
							2007-06-11 22:26:22 +00:00  
						
					 
				
					
						
							
							
								 
								Reid Spencer
							
						 
						
							 
							
							
							
							
								
							
							
								14b62a553e 
								
							 
						 
						
							
							
								
								Fix the build.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37537 
							
						 
						
							2007-06-10 00:19:17 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								2117d1f20e 
								
							 
						 
						
							
							
								
								Don't change CFG during analysis stage. Do so during ifcvt and invalidate predecessors accordingly.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37531 
							
						 
						
							2007-06-09 01:03:43 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								288f1545a6 
								
							 
						 
						
							
							
								
								Carefully remove extraneous CFG edges after each ifcvt.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37529 
							
						 
						
							2007-06-08 22:01:07 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								df1a42935b 
								
							 
						 
						
							
							
								
								Correct transfer predicate information.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37524 
							
						 
						
							2007-06-08 19:17:12 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e93ccc013f 
								
							 
						 
						
							
							
								
								Hidden options to help debugging ifcvt issues.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37523 
							
						 
						
							2007-06-08 19:10:51 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								7783f82e21 
								
							 
						 
						
							
							
								
								Allow more cmp / bcc to be predicated; clean up triangle ifcvt checking code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37518 
							
						 
						
							2007-06-08 09:36:04 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								1236ef7bcc 
								
							 
						 
						
							
							
								
								Only remove the edge from entry to false if false block is merged.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37503 
							
						 
						
							2007-06-07 22:31:28 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								d3f3f0adad 
								
							 
						 
						
							
							
								
								ifcvt a triangle: don't merge ifcvt block with rejoin block if it can fall through to it. If merged, the resulting block is not a candidate for iterative ifcvting since it contains both predicated and non-predicated code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37487 
							
						 
						
							2007-06-07 08:13:00 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								be9859eea2 
								
							 
						 
						
							
							
								
								Lots of bug fixes. Now finally in a reasonable state.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37485 
							
						 
						
							2007-06-07 02:12:15 +00:00  
						
					 
				
					
						
							
							
								 
								Owen Anderson
							
						 
						
							 
							
							
							
							
								
							
							
								cfb6f40424 
								
							 
						 
						
							
							
								
								Quick patch to fix the build, based on what it appears Evan meant to write.  
							
							 
							
							... 
							
							
							
							Evan, please check that this is in fact correct.
llvm-svn: 37471 
							
						 
						
							2007-06-06 16:22:00 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								9030b98aca 
								
							 
						 
						
							
							
								
								Lots of bug fixes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37467 
							
						 
						
							2007-06-06 10:16:17 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e4ec918be0 
								
							 
						 
						
							
							
								
								If a unconditional branch is added to branch to the false path during ifcvt, the predicated block cannot be iteratively ifcvted.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37456 
							
						 
						
							2007-06-06 02:08:52 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								b30a89457c 
								
							 
						 
						
							
							
								
								Minor statistics counting bug.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37451 
							
						 
						
							2007-06-06 01:12:44 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								30565998bb 
								
							 
						 
						
							
							
								
								Fix a couple of typos and be smarter about order of blocks when ifcvt a diamond.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37449 
							
						 
						
							2007-06-06 00:57:55 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								7948422b78 
								
							 
						 
						
							
							
								
								Fix diamond shape ifcvt bugs.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37444 
							
						 
						
							2007-06-05 23:46:14 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c1a0b8ce1d 
								
							 
						 
						
							
							
								
								ReplaceUsesOfBlockWith() can modify the predecessors list.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37441 
							
						 
						
							2007-06-05 22:03:53 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								3e5bf0827c 
								
							 
						 
						
							
							
								
								Do not ifcvt if either true / false path is a backedge. Not profitable in almost all cases.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37440 
							
						 
						
							2007-06-05 20:38:42 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								2c1acd6d9e 
								
							 
						 
						
							
							
								
								I had a senior moment.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37433 
							
						 
						
							2007-06-05 07:05:25 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6e4babe8cc 
								
							 
						 
						
							
							
								
								If the predicated block requires an early exit, end the block there and add a unconditional branch to false block. AnalyzeBranch() does not understand early exits.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37430 
							
						 
						
							2007-06-05 01:31:40 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								17aad8164e 
								
							 
						 
						
							
							
								
								Fix some subtle bugs: bug during succeessor copying; incorrectly updating states of ifcvted blocks.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37429 
							
						 
						
							2007-06-05 00:07:37 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								91233153bf 
								
							 
						 
						
							
							
								
								Forgot to check for if iterator reached the end.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37420 
							
						 
						
							2007-06-04 20:33:36 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								312b723af2 
								
							 
						 
						
							
							
								
								Let IfConverter loose. Allow more aggressive subsumptions; reorder basic blocks to expose more ifcvt opportunities; code clean up and fixes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37409 
							
						 
						
							2007-06-04 06:47:22 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								4dcf1e8582 
								
							 
						 
						
							
							
								
								Correctly mark early-exit on the false path.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37387 
							
						 
						
							2007-06-01 20:29:21 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								6a2cf070cc 
								
							 
						 
						
							
							
								
								Ifcvt triangle: don't ifcvt 'true' BB if it has other predecessors; don't merge 'false' BB if it has other predecessors.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37382 
							
						 
						
							2007-06-01 07:41:07 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								95c7917d92 
								
							 
						 
						
							
							
								
								Remove a bogus check. Even terminators in a ifcvt need to be predicated. Unconditional branches can usually be converted to conditional ones.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37380 
							
						 
						
							2007-06-01 00:55:26 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								20e05997f5 
								
							 
						 
						
							
							
								
								Allow multiple ifcvt candidates to share children blocks; add some debugging code.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37379 
							
						 
						
							2007-06-01 00:12:12 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e6ccb6c5ed 
								
							 
						 
						
							
							
								
								Fix a typo.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37374 
							
						 
						
							2007-05-31 20:53:33 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								905a8f4940 
								
							 
						 
						
							
							
								
								Change traversal order to bottom up in preparation for more aggressive if-conversion.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37365 
							
						 
						
							2007-05-30 19:49:19 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								20f7d30f92 
								
							 
						 
						
							
							
								
								Don't merge in tail block of a diamond if it has more than one predecessors after if-conversion.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37353 
							
						 
						
							2007-05-29 23:37:20 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								c2237ce217 
								
							 
						 
						
							
							
								
								If there is an empty block between a source and its successor block, it still requires a unconditional branch.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37344 
							
						 
						
							2007-05-29 22:31:16 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								13f5f7df95 
								
							 
						 
						
							
							
								
								Silly boog.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37328 
							
						 
						
							2007-05-25 00:59:01 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								d0e669199b 
								
							 
						 
						
							
							
								
								Preliminary iterative if-conversion support.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37309 
							
						 
						
							2007-05-23 07:23:16 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								e26c0916a3 
								
							 
						 
						
							
							
								
								If-convert early exit blocks (returns, etc.); bug fixes, etc.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37270 
							
						 
						
							2007-05-21 22:22:58 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								018cffbca4 
								
							 
						 
						
							
							
								
								Clean up.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37237 
							
						 
						
							2007-05-18 19:32:08 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								faaf716540 
								
							 
						 
						
							
							
								
								Change to depth-first traversal.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37236 
							
						 
						
							2007-05-18 19:26:33 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								2e82cefd24 
								
							 
						 
						
							
							
								
								Some restructuring in preparation for most aggressive if-conversion.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37231 
							
						 
						
							2007-05-18 18:14:37 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								f25d3a5d73 
								
							 
						 
						
							
							
								
								Watch out for blocks that end with a return.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37227 
							
						 
						
							2007-05-18 17:06:53 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								478b805956 
								
							 
						 
						
							
							
								
								If true / false blocks fallthrough before ifcvt, add unconditional branches to ifcvt'd block.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37200 
							
						 
						
							2007-05-18 01:55:58 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								0f745da4fe 
								
							 
						 
						
							
							
								
								Make use of target specific block size limits; bug fixes.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37195 
							
						 
						
							2007-05-18 00:20:58 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								af71610429 
								
							 
						 
						
							
							
								
								isBlockPredicable() always ignore terminal instructions; add comments.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37126 
							
						 
						
							2007-05-16 21:54:37 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								5ea933a009 
								
							 
						 
						
							
							
								
								Rename M_PREDICATED to M_PREDICABLE; Moved isPredicable() to MachineInstr.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37121 
							
						 
						
							2007-05-16 20:56:08 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								35fc2119b0 
								
							 
						 
						
							
							
								
								Devang points out that we need an assertion here.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37097 
							
						 
						
							2007-05-16 05:11:10 +00:00  
						
					 
				
					
						
							
							
								 
								Evan Cheng
							
						 
						
							 
							
							
							
							
								
							
							
								f5e53a58db 
								
							 
						 
						
							
							
								
								Initial commit of (very basic) if converter.  
							
							 
							
							... 
							
							
							
							llvm-svn: 37092 
							
						 
						
							2007-05-16 02:00:57 +00:00