ab929bb352 
								
							 
						 
						
							
							
								
								Remove stale comment and tighten code.  
							
							... 
							
							
							
							llvm-svn: 84697 
							
						 
						
							2009-10-20 23:59:28 +00:00  
				
					
						
							
							
								 
						
							
								8aed49000d 
								
							 
						 
						
							
							
								
								Use llvm::OwningPtr in CFGBuilder, fixing a leak on an error path.  
							
							... 
							
							
							
							llvm-svn: 84695 
							
						 
						
							2009-10-20 23:46:25 +00:00  
				
					
						
							
							
								 
						
							
								289ae4f454 
								
							 
						 
						
							
							
								
								Use a BumpPtrAllocator to allocate all aspects of CFG, including CFGBlocks, successor and predecessor vectors, etc.  
							
							... 
							
							
							
							Speedup: when doing 'clang-cc -analyze -dump-cfg' (without actual printing, just
CFG building) on the amalgamated SQLite source (all of SQLite in one source
file), runtime reduced by 9%.
This fixes: <rdar://problem/7250745>
llvm-svn: 83899 
							
						 
						
							2009-10-12 20:55:07 +00:00  
				
					
						
							
							
								 
						
							
								0868eea3f0 
								
							 
						 
						
							
							
								
								When building CFGs, no longer reverse the statements in the CFGBlock. Instead  
							
							... 
							
							
							
							have the iterators and operator[] handle the traversal of statements, as they
are stored in reverse order. Tests show this has no real performance impact, but
it does simply the CFG construction logic and will make it slightly easier to
change the allocation strategy for CFGBlocks (as we have fewer copies).
llvm-svn: 82702 
							
						 
						
							2009-09-24 18:45:41 +00:00  
				
					
						
							
							
								 
						
							
								11289f4280 
								
							 
						 
						
							
							
								
								Remove tabs, and whitespace cleanups.  
							
							... 
							
							
							
							llvm-svn: 81346 
							
						 
						
							2009-09-09 15:08:12 +00:00  
				
					
						
							
							
								 
						
							
								ce499c2078 
								
							 
						 
						
							
							
								
								CFG construction: Abort CFG construction when processing a CompoundStmt if any  
							
							... 
							
							
							
							of its subexpressions resulted in a "bad CFG".
llvm-svn: 80298 
							
						 
						
							2009-08-27 23:16:26 +00:00  
				
					
						
							
							
								 
						
							
								4c95288f64 
								
							 
						 
						
							
							
								
								Don't try to evaluate an expression that is type- or value-dependent while building the CFG  
							
							... 
							
							
							
							llvm-svn: 79941 
							
						 
						
							2009-08-24 21:39:56 +00:00  
				
					
						
							
							
								 
						
							
								89b422c118 
								
							 
						 
						
							
							
								
								Replace cerr with errs().  
							
							... 
							
							
							
							llvm-svn: 79854 
							
						 
						
							2009-08-23 12:08:50 +00:00  
				
					
						
							
							
								 
						
							
								1a3ec57520 
								
							 
						 
						
							
							
								
								If the 'while' has an empty body, set the body to the continue target block.  
							
							... 
							
							
							
							Although this does not make the CFG more correct, it makes the CFG more 
beautiful without multiple roots.
llvm-svn: 79509 
							
						 
						
							2009-08-20 03:21:49 +00:00  
				
					
						
							
							
								 
						
							
								a778b02e89 
								
							 
						 
						
							
							
								
								If the body of for loop is empty, set its body to the continue target.  
							
							... 
							
							
							
							Otherwise we get a wrong CFG.
llvm-svn: 79507 
							
						 
						
							2009-08-20 02:56:48 +00:00  
				
					
						
							
							
								 
						
							
								8c5d7996e8 
								
							 
						 
						
							
							
								
								Add noreturn as a type attribute, handle printing for them and handle  
							
							... 
							
							
							
							calls to noreturn function pointers when CFG building.
llvm-svn: 77089 
							
						 
						
							2009-07-25 21:26:53 +00:00  
				
					
						
							
							
								 
						
							
								963cc31583 
								
							 
						 
						
							
							
								
								Add doxygen comments and simplify expression.  
							
							... 
							
							
							
							llvm-svn: 76955 
							
						 
						
							2009-07-24 06:55:42 +00:00  
				
					
						
							
							
								 
						
							
								3075428d16 
								
							 
						 
						
							
							
								
								Introduce a new variant type 'TryResult' to represent the result of  
							
							... 
							
							
							
							TryEvaluateBool instead of using a raw 'int'.  This avoids any
confusion of how 'int' converts to bool, and makes the resultant code
easier to read.
Condense a bunch of 'addSuccessor()' calls in 'if ... else' to use the
ternary operator instead.
llvm-svn: 76947 
							
						 
						
							2009-07-24 04:47:11 +00:00  
				
					
						
							
							
								 
						
							
								773582dbb8 
								
							 
						 
						
							
							
								
								Refactor and push the evaluation as late as possible.  
							
							... 
							
							
							
							llvm-svn: 76911 
							
						 
						
							2009-07-23 23:25:26 +00:00  
				
					
						
							
							
								 
						
							
								8dd1b6bd10 
								
							 
						 
						
							
							
								
								Improve CFG support for C++ throw expressions.  
							
							... 
							
							
							
							llvm-svn: 76814 
							
						 
						
							2009-07-22 22:56:04 +00:00  
				
					
						
							
							
								 
						
							
								b1c170e64b 
								
							 
						 
						
							
							
								
								Make 'SaveAndRestore' and friends reusable classes in libAnalysis.  
							
							... 
							
							
							
							llvm-svn: 76795 
							
						 
						
							2009-07-22 21:45:16 +00:00  
				
					
						
							
							
								 
						
							
								3557ea840b 
								
							 
						 
						
							
							
								
								Wire up CFG improvements for __builtin_choose_expr.  
							
							... 
							
							
							
							llvm-svn: 76531 
							
						 
						
							2009-07-21 01:46:17 +00:00  
				
					
						
							
							
								 
						
							
								8d50b6aeff 
								
							 
						 
						
							
							
								
								Wire up CFG improvements for do { } while () when the condition is known.  
							
							... 
							
							
							
							llvm-svn: 76530 
							
						 
						
							2009-07-21 01:27:50 +00:00  
				
					
						
							
							
								 
						
							
								014b3eabd1 
								
							 
						 
						
							
							
								
								Wire up for statement CFG improvements for conditionals that are known.  
							
							... 
							
							
							
							llvm-svn: 76529 
							
						 
						
							2009-07-21 01:12:51 +00:00  
				
					
						
							
							
								 
						
							
								23a443bea7 
								
							 
						 
						
							
							
								
								Wire up CFG improvements for while when the condition is known.  
							
							... 
							
							
							
							llvm-svn: 76522 
							
						 
						
							2009-07-21 00:38:52 +00:00  
				
					
						
							
							
								 
						
							
								0d76d075e4 
								
							 
						 
						
							
							
								
								Add yet more analysis for CFGs involving conditionals that are actually constant.  
							
							... 
							
							
							
							llvm-svn: 76500 
							
						 
						
							2009-07-20 23:24:15 +00:00  
				
					
						
							
							
								 
						
							
								0747de6aaa 
								
							 
						 
						
							
							
								
								Fix some fallout from CFGBuilder restructuring: all expressions that we explicitly handle have the possibility to be block-level expressions.  
							
							... 
							
							
							
							llvm-svn: 76277 
							
						 
						
							2009-07-18 00:47:21 +00:00  
				
					
						
							
							
								 
						
							
								fe9b768aaa 
								
							 
						 
						
							
							
								
								Fix possible null dereference in CFG construction.  
							
							... 
							
							
							
							llvm-svn: 76261 
							
						 
						
							2009-07-17 22:57:50 +00:00  
				
					
						
							
							
								 
						
							
								93668002c4 
								
							 
						 
						
							
							
								
								Restructure CFG builder to have just one visitor path instead of two. The result  
							
							... 
							
							
							
							is an algorithm that is much easier to understand and slightly more efficient.
Thanks to Mike Stump for our discussions on the CFGBuilder and his comments that
helped prompt this long needed cleanup.
llvm-svn: 76250 
							
						 
						
							2009-07-17 22:18:43 +00:00  
				
					
						
							
							
								 
						
							
								2182259f36 
								
							 
						 
						
							
							
								
								Move WalkAST logic for 'ChooseExpr' to 'VisitChooseExpr'.  
							
							... 
							
							
							
							llvm-svn: 76205 
							
						 
						
							2009-07-17 18:20:32 +00:00  
				
					
						
							
							
								 
						
							
								51d40b07a0 
								
							 
						 
						
							
							
								
								Move WalkAST logic for 'ConditionalOperator' into 'VisitConditionalOperator'.  
							
							... 
							
							
							
							llvm-svn: 76202 
							
						 
						
							2009-07-17 18:15:54 +00:00  
				
					
						
							
							
								 
						
							
								0bcdc981ef 
								
							 
						 
						
							
							
								
								Remove stale comments.  
							
							... 
							
							
							
							llvm-svn: 76196 
							
						 
						
							2009-07-17 18:04:55 +00:00  
				
					
						
							
							
								 
						
							
								c960b3e80c 
								
							 
						 
						
							
							
								
								clean up this code, add the fixme back.  
							
							... 
							
							
							
							llvm-svn: 76180 
							
						 
						
							2009-07-17 15:50:19 +00:00  
				
					
						
							
							
								 
						
							
								3c8fa978ad 
								
							 
						 
						
							
							
								
								Refactor code into a new CallExpr::getDirectCallee() method. Simplify some  
							
							... 
							
							
							
							code with the new method.
llvm-svn: 76164 
							
						 
						
							2009-07-17 07:29:51 +00:00  
				
					
						
							
							
								 
						
							
								31feda5585 
								
							 
						 
						
							
							
								
								Fixup indentation of rest of switch statement to match llvm coding  
							
							... 
							
							
							
							conventions.  Also reflowed comments and removed spaces at end of
lines and fixed up 80 col violations.
llvm-svn: 76140 
							
						 
						
							2009-07-17 01:31:16 +00:00  
				
					
						
							
							
								 
						
							
								48871a2880 
								
							 
						 
						
							
							
								
								Make noreturn functions alter the CFG.  
							
							... 
							
							
							
							llvm-svn: 76133 
							
						 
						
							2009-07-17 01:04:31 +00:00  
				
					
						
							
							
								 
						
							
								6796fbd2e8 
								
							 
						 
						
							
							
								
								Move the source-level CFG from libAST to libAnalysis.  
							
							... 
							
							
							
							llvm-svn: 76092 
							
						 
						
							2009-07-16 18:13:04 +00:00