6c18d1aac0 
								
							 
						 
						
							
							
								
								Get rid of static constructors for pass registration.  Instead, every pass exposes an initializeMyPassFunction(), which  
							
							... 
							
							
							
							must be called in the pass's constructor.  This function uses static dependency declarations to recursively initialize
the pass's dependencies.
Clients that only create passes through the createFooPass() APIs will require no changes.  Clients that want to use the
CommandLine options for passes will need to manually call the appropriate initialization functions in PassInitialization.h
before parsing commandline arguments.
I have tested this with all standard configurations of clang and llvm-gcc on Darwin.  It is possible that there are problems
with the static dependencies that will only be visible with non-standard options.  If you encounter any crash in pass
registration/creation, please send the testcase to me directly.
llvm-svn: 116820 
							
						 
						
							2010-10-19 17:21:58 +00:00  
				
					
						
							
							
								 
						
							
								df7a4f2515 
								
							 
						 
						
							
							
								
								Now with fewer extraneous semicolons!  
							
							... 
							
							
							
							llvm-svn: 115996 
							
						 
						
							2010-10-07 22:25:06 +00:00  
				
					
						
							
							
								 
						
							
								a7aed18624 
								
							 
						 
						
							
							
								
								Reapply r110396, with fixes to appease the Linux buildbot gods.  
							
							... 
							
							
							
							llvm-svn: 110460 
							
						 
						
							2010-08-06 18:33:48 +00:00  
				
					
						
							
							
								 
						
							
								bda59bd247 
								
							 
						 
						
							
							
								
								Revert r110396 to fix buildbots.  
							
							... 
							
							
							
							llvm-svn: 110410 
							
						 
						
							2010-08-06 00:23:35 +00:00  
				
					
						
							
							
								 
						
							
								755aceb5d0 
								
							 
						 
						
							
							
								
								Don't use PassInfo* as a type identifier for passes.  Instead, use the address of the static  
							
							... 
							
							
							
							ID member as the sole unique type identifier.  Clean up APIs related to this change.
llvm-svn: 110396 
							
						 
						
							2010-08-05 23:42:04 +00:00  
				
					
						
							
							
								 
						
							
								62f0aac99d 
								
							 
						 
						
							
							
								
								simplify by using CallSite constructors; virtually eliminates CallSite::get from the tree  
							
							... 
							
							
							
							llvm-svn: 109687 
							
						 
						
							2010-07-28 22:50:26 +00:00  
				
					
						
							
							
								 
						
							
								a57b97e7e7 
								
							 
						 
						
							
							
								
								Fix batch of converting RegisterPass<> to INTIALIZE_PASS().  
							
							... 
							
							
							
							llvm-svn: 109045 
							
						 
						
							2010-07-21 22:09:45 +00:00  
				
					
						
							
							
								 
						
							
								88dd73b75e 
								
							 
						 
						
							
							
								
								cache result of operator*  
							
							... 
							
							
							
							llvm-svn: 108145 
							
						 
						
							2010-07-12 14:14:03 +00:00  
				
					
						
							
							
								 
						
							
								39dbfd3c58 
								
							 
						 
						
							
							
								
								Remove unused LLVMContext.  
							
							... 
							
							
							
							llvm-svn: 89642 
							
						 
						
							2009-11-23 03:29:18 +00:00  
				
					
						
							
							
								 
						
							
								1a8b80ed5a 
								
							 
						 
						
							
							
								
								teach ipsccp and ipconstprop that a blockaddress doesn't 'take the address' of a function  
							
							... 
							
							
							
							in a way that should prevent ip constprop.  This allows clang/test/CodeGen/indirect-goto.c
to pass with the new indirect goto lowering.
llvm-svn: 85709 
							
						 
						
							2009-11-01 06:11:53 +00:00  
				
					
						
							
							
								 
						
							
								974e12b2d3 
								
							 
						 
						
							
							
								
								Remove includes of Support/Compiler.h that are no longer needed after the  
							
							... 
							
							
							
							VISIBILITY_HIDDEN removal.
llvm-svn: 85043 
							
						 
						
							2009-10-25 06:57:41 +00:00  
				
					
						
							
							
								 
						
							
								02d5f77d26 
								
							 
						 
						
							
							
								
								Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.  
							
							... 
							
							
							
							Chris claims we should never have visibility_hidden inside any .cpp file but
that's still not true even after this commit.
llvm-svn: 85042 
							
						 
						
							2009-10-25 06:33:48 +00:00  
				
					
						
							
							
								 
						
							
								21bd8c9fc5 
								
							 
						 
						
							
							
								
								Constant propagating byval pointer is safe if function is readonly.  
							
							... 
							
							
							
							llvm-svn: 82700 
							
						 
						
							2009-09-24 18:33:42 +00:00  
				
					
						
							
							
								 
						
							
								f95a450ef9 
								
							 
						 
						
							
							
								
								Don't constant propagate byval pointers, since they are not really pointers, but  
							
							... 
							
							
							
							rather structs passed by value.
This fixes PR5038.
llvm-svn: 82689 
							
						 
						
							2009-09-24 09:47:18 +00:00  
				
					
						
							
							
								 
						
							
								55f1c09e31 
								
							 
						 
						
							
							
								
								Push LLVMContexts through the IntegerType APIs.  
							
							... 
							
							
							
							llvm-svn: 78948 
							
						 
						
							2009-08-13 21:58:54 +00:00  
				
					
						
							
							
								 
						
							
								b292b8ce70 
								
							 
						 
						
							
							
								
								Move more code back to 2.5 APIs.  
							
							... 
							
							
							
							llvm-svn: 77635 
							
						 
						
							2009-07-30 23:03:37 +00:00  
				
					
						
							
							
								 
						
							
								47db941fd3 
								
							 
						 
						
							
							
								
								Get rid of the Pass+Context magic.  
							
							... 
							
							
							
							llvm-svn: 76702 
							
						 
						
							2009-07-22 00:24:57 +00:00  
				
					
						
							
							
								 
						
							
								20b34ac794 
								
							 
						 
						
							
							
								
								Move the ConstantInt uniquing table into LLVMContextImpl.  This exposed a number of issues in  
							
							... 
							
							
							
							our current context-passing stuff, which is also fixed here
llvm-svn: 76089 
							
						 
						
							2009-07-16 18:04:31 +00:00  
				
					
						
							
							
								 
						
							
								f1f1743b2e 
								
							 
						 
						
							
							
								
								Finish LLVMContext-ing lib/Analysis.  This required pushing LLVMContext's through the ValueTracking API.  
							
							... 
							
							
							
							llvm-svn: 74873 
							
						 
						
							2009-07-06 22:37:39 +00:00  
				
					
						
							
							
								 
						
							
								605a8c743f 
								
							 
						 
						
							
							
								
								More LLVMContext-ification.  
							
							... 
							
							
							
							llvm-svn: 74811 
							
						 
						
							2009-07-06 01:34:54 +00:00  
				
					
						
							
							
								 
						
							
								e57ba2eab5 
								
							 
						 
						
							
							
								
								Use cast<> instead of dyn_cast<> for things that are known to be  
							
							... 
							
							
							
							Instructions.
llvm-svn: 73002 
							
						 
						
							2009-06-06 17:49:35 +00:00  
				
					
						
							
							
								 
						
							
								f4013373cd 
								
							 
						 
						
							
							
								
								introduce a useful abstraction to find out if a Use is in the call position of an instruction  
							
							... 
							
							
							
							llvm-svn: 62788 
							
						 
						
							2009-01-22 21:35:57 +00:00  
				
					
						
							
							
								 
						
							
								6de96a1b5d 
								
							 
						 
						
							
							
								
								Add the private linkage.  
							
							... 
							
							
							
							llvm-svn: 62279 
							
						 
						
							2009-01-15 20:18:42 +00:00  
				
					
						
							
							
								 
						
							
								e21903987f 
								
							 
						 
						
							
							
								
								Clean up some multiple-return-value code that is no longer  
							
							... 
							
							
							
							applicable.
llvm-svn: 57033 
							
						 
						
							2008-10-03 22:21:24 +00:00  
				
					
						
							
							
								 
						
							
								ffc9da6772 
								
							 
						 
						
							
							
								
								remove redundant test (mayBeOverriden() includes hasLinkOnceLinkage)  
							
							... 
							
							
							
							llvm-svn: 56786 
							
						 
						
							2008-09-29 14:40:32 +00:00  
				
					
						
							
							
								 
						
							
								08d91178e9 
								
							 
						 
						
							
							
								
								Rename isWeakForLinker to mayBeOverridden.  Use it  
							
							... 
							
							
							
							instead of hasWeakLinkage in a bunch of optimization
passes.
llvm-svn: 56782 
							
						 
						
							2008-09-29 11:25:42 +00:00  
				
					
						
							
							
								 
						
							
								a79db30d28 
								
							 
						 
						
							
							
								
								Tidy up several unbeseeming casts from pointer to intptr_t.  
							
							... 
							
							
							
							llvm-svn: 55779 
							
						 
						
							2008-09-04 17:05:41 +00:00  
				
					
						
							
							
								 
						
							
								fa1211f69b 
								
							 
						 
						
							
							
								
								Enable first-class aggregates support.  
							
							... 
							
							
							
							Remove the GetResultInst instruction. It is still accepted in LLVM assembly
and bitcode, where it is now auto-upgraded to ExtractValueInst. Also, remove
support for return instructions with multiple values. These are auto-upgraded
to use InsertValueInst instructions.
The IRBuilder still accepts multiple-value returns, and auto-upgrades them
to InsertValueInst instructions.
llvm-svn: 53941 
							
						 
						
							2008-07-23 00:34:11 +00:00  
				
					
						
							
							
								 
						
							
								0c71732497 
								
							 
						 
						
							
							
								
								Use a CallSite to find the nth argument of a call/invoke instruction instead of  
							
							... 
							
							
							
							using getOperand() directly. This makes things work with invoke instructions as
well.
llvm-svn: 52489 
							
						 
						
							2008-06-19 08:53:24 +00:00  
				
					
						
							
							
								 
						
							
								fd17357643 
								
							 
						 
						
							
							
								
								Reapply r52397 (make IPConstProp promote returned arguments), but fixed this  
							
							... 
							
							
							
							time. Sorry for the trouble!
This time, also add a testcase, which I should have done in the first place...
llvm-svn: 52455 
							
						 
						
							2008-06-18 08:30:37 +00:00  
				
					
						
							
							
								 
						
							
								97034598b1 
								
							 
						 
						
							
							
								
								Reapply r52396, it was unrelated to the breakage (that was caused by r52397, my  
							
							... 
							
							
							
							commit after this).
llvm-svn: 52453 
							
						 
						
							2008-06-18 08:09:27 +00:00  
				
					
						
							
							
								 
						
							
								aecc3750d1 
								
							 
						 
						
							
							
								
								revert recent patch which is causing widespread breakage.  
							
							... 
							
							
							
							llvm-svn: 52415 
							
						 
						
							2008-06-17 17:06:43 +00:00  
				
					
						
							
							
								 
						
							
								332836d68d 
								
							 
						 
						
							
							
								
								Learn IPConstProp to propagate arguments that are directly returned. Strictly  
							
							... 
							
							
							
							speaking these are not constant values. However, when a function always returns
one of its arguments, then from the point of view of each caller the return
value is constant (or at least a known value) and can be replaced.
llvm-svn: 52397 
							
						 
						
							2008-06-17 12:20:24 +00:00  
				
					
						
							
							
								 
						
							
								f03c1ae407 
								
							 
						 
						
							
							
								
								Learn IPConstProp to look at individual return values and propagate them  
							
							... 
							
							
							
							individually.
Also learn IPConstProp how returning first class aggregates work, in addition
to old style multiple return instructions.
Modify the return-constants testscase to confirm this behaviour.
llvm-svn: 52396 
							
						 
						
							2008-06-17 12:02:52 +00:00  
				
					
						
							
							
								 
						
							
								dbd595f22d 
								
							 
						 
						
							
							
								
								Fix PR2411, where ip constant prop would propagate the  
							
							... 
							
							
							
							result of a weak function.
llvm-svn: 52137 
							
						 
						
							2008-06-09 07:58:07 +00:00  
				
					
						
							
							
								 
						
							
								d78c400b5b 
								
							 
						 
						
							
							
								
								Clean up the use of static and anonymous namespaces. This turned up  
							
							... 
							
							
							
							several things that were neither in an anonymous namespace nor static
but not intended to be global.
llvm-svn: 51017 
							
						 
						
							2008-05-13 00:00:25 +00:00  
				
					
						
							
							
								 
						
							
								a82d691caa 
								
							 
						 
						
							
							
								
								simplify code for propagation of constant arguments into  
							
							... 
							
							
							
							callees.
llvm-svn: 50142 
							
						 
						
							2008-04-23 06:16:27 +00:00  
				
					
						
							
							
								 
						
							
								5f1802cfdf 
								
							 
						 
						
							
							
								
								Fix a number of bugs in ipconstantprop, simplify the code, fit in 80 cols,  
							
							... 
							
							
							
							fix read after free bug (PR2238).
llvm-svn: 50141 
							
						 
						
							2008-04-23 05:59:23 +00:00  
				
					
						
							
							
								 
						
							
								5ca2ea6479 
								
							 
						 
						
							
							
								
								Incorporate feedback.  
							
							... 
							
							
							
							- Fix loop nest.
- Use RetVals.size()
- Check for null return value.
llvm-svn: 48605 
							
						 
						
							2008-03-20 18:30:32 +00:00  
				
					
						
							
							
								 
						
							
								7358165c99 
								
							 
						 
						
							
							
								
								Handle multiple ret values.  
							
							... 
							
							
							
							llvm-svn: 48254 
							
						 
						
							2008-03-11 22:24:29 +00:00  
				
					
						
							
							
								 
						
							
								1bfd121321 
								
							 
						 
						
							
							
								
								Make Transforms to be 4.3 warnings-clean  
							
							... 
							
							
							
							llvm-svn: 47371 
							
						 
						
							2008-02-20 11:26:25 +00:00  
				
					
						
							
							
								 
						
							
								f3ebc3f3d2 
								
							 
						 
						
							
							
								
								Remove attribution from file headers, per discussion on llvmdev.  
							
							... 
							
							
							
							llvm-svn: 45418 
							
						 
						
							2007-12-29 20:36:04 +00:00  
				
					
						
							
							
								 
						
							
								e7da2d6ac3 
								
							 
						 
						
							
							
								
								Fix typo in comment.  
							
							... 
							
							
							
							llvm-svn: 36873 
							
						 
						
							2007-05-06 13:37:16 +00:00  
				
					
						
							
							
								 
						
							
								8c78a0bff0 
								
							 
						 
						
							
							
								
								Drop 'const'  
							
							... 
							
							
							
							llvm-svn: 36662 
							
						 
						
							2007-05-03 01:11:54 +00:00  
				
					
						
							
							
								 
						
							
								e95c6ad802 
								
							 
						 
						
							
							
								
								Use 'static const char' instead of 'static const int'.  
							
							... 
							
							
							
							Due to darwin gcc bug, one version of darwin linker coalesces
static const int, which defauts PassID based pass identification.
llvm-svn: 36652 
							
						 
						
							2007-05-02 21:39:20 +00:00  
				
					
						
							
							
								 
						
							
								09f162ca6a 
								
							 
						 
						
							
							
								
								Do not use typeinfo to identify pass in pass manager.  
							
							... 
							
							
							
							llvm-svn: 36632 
							
						 
						
							2007-05-01 21:15:47 +00:00  
				
					
						
							
							
								 
						
							
								557ab15e71 
								
							 
						 
						
							
							
								
								Apply the VISIBILITY_HIDDEN field to the remaining anonymous classes in  
							
							... 
							
							
							
							the Transforms library. This reduces debug library size by 132 KB, debug
binary size by 376 KB, and reduces link time for llvm tools slightly.
llvm-svn: 33939 
							
						 
						
							2007-02-05 23:32:05 +00:00  
				
					
						
							
							
								 
						
							
								5301e7c605 
								
							 
						 
						
							
							
								
								For PR1136: Rename GlobalVariable::isExternal as isDeclaration to avoid  
							
							... 
							
							
							
							confusion with external linkage types.
llvm-svn: 33663 
							
						 
						
							2007-01-30 20:08:39 +00:00  
				
					
						
							
							
								 
						
							
								1631bcb1d4 
								
							 
						 
						
							
							
								
								Eliminate static ctors due to Statistic objects  
							
							... 
							
							
							
							llvm-svn: 32693 
							
						 
						
							2006-12-19 22:09:18 +00:00  
				
					
						
							
							
								 
						
							
								700b873130 
								
							 
						 
						
							
							
								
								Detemplatize the Statistic class.  The only type it is instantiated with  
							
							... 
							
							
							
							is 'unsigned'.
llvm-svn: 32279 
							
						 
						
							2006-12-06 17:46:33 +00:00