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  
				
					
						
							
							
								 
						
							
								218f3206fa 
								
							 
						 
						
							
							
								
								Transfer debug loc to lowered call.  
							
							... 
							
							
							
							Patch by Alexander Herz!
llvm-svn: 116733 
							
						 
						
							2010-10-18 18:53:44 +00:00  
				
					
						
							
							
								 
						
							
								df7a4f2515 
								
							 
						 
						
							
							
								
								Now with fewer extraneous semicolons!  
							
							... 
							
							
							
							llvm-svn: 115996 
							
						 
						
							2010-10-07 22:25:06 +00:00  
				
					
						
							
							
								 
						
							
								ded5f66813 
								
							 
						 
						
							
							
								
								Get rid of pop_macro warnings on MSVC.  
							
							... 
							
							
							
							llvm-svn: 114750 
							
						 
						
							2010-09-24 19:48:47 +00:00  
				
					
						
							
							
								 
						
							
								d31d82d75c 
								
							 
						 
						
							
							
								
								Now that PassInfo and Pass::ID have been separated, move the rest of the passes over to the new registration API.  
							
							... 
							
							
							
							llvm-svn: 111815 
							
						 
						
							2010-08-23 17:52:01 +00:00  
				
					
						
							
							
								 
						
							
								0f7892b8ae 
								
							 
						 
						
							
							
								
								Eliminate PromoteMemoryToRegisterID; just use addPreserved("mem2reg")  
							
							... 
							
							
							
							instead, as an example of what this looks like.
llvm-svn: 110478 
							
						 
						
							2010-08-06 21:48: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  
				
					
						
							
							
								 
						
							
								e74c78d539 
								
							 
						 
						
							
							
								
								lowerinvoke needs to handle aggregate function args like sjlj eh does.  
							
							... 
							
							
							
							llvm-svn: 107335 
							
						 
						
							2010-06-30 22:22:59 +00:00  
				
					
						
							
							
								 
						
							
								5ba76b94f8 
								
							 
						 
						
							
							
								
								Remove unused code  
							
							... 
							
							
							
							llvm-svn: 105293 
							
						 
						
							2010-06-01 21:56:30 +00:00  
				
					
						
							
							
								 
						
							
								0e20dc5cd6 
								
							 
						 
						
							
							
								
								fix think-o  
							
							... 
							
							
							
							llvm-svn: 105291 
							
						 
						
							2010-06-01 21:35:50 +00:00  
				
					
						
							
							
								 
						
							
								b69c68742a 
								
							 
						 
						
							
							
								
								Simplify things a bit more. Fix prototype to use SmallVectorImpl and  
							
							... 
							
							
							
							change a few SmallVectors to vanilla C arrays.
llvm-svn: 105289 
							
						 
						
							2010-06-01 21:06:46 +00:00  
				
					
						
							
							
								 
						
							
								a37af16221 
								
							 
						 
						
							
							
								
								mirror of r105280 changes for LowerInvoke, which uses the same basic logic here  
							
							... 
							
							
							
							llvm-svn: 105281 
							
						 
						
							2010-06-01 18:04:56 +00:00  
				
					
						
							
							
								 
						
							
								7352167560 
								
							 
						 
						
							
							
								
								Use SmallVector instead of std::vector.  
							
							... 
							
							
							
							llvm-svn: 105279 
							
						 
						
							2010-06-01 17:56:41 +00:00  
				
					
						
							
							
								 
						
							
								44a27efdf9 
								
							 
						 
						
							
							
								
								Fix a problem that lower invoke has with allocas (PR6694), and  
							
							... 
							
							
							
							add a version of createLowerInvokePass that allows the client
to specify whether it wants "expensive" or "cheap" lowering.
Patch by Alex Mac!
llvm-svn: 102402 
							
						 
						
							2010-04-26 23:49:32 +00:00  
				
					
						
							
							
								 
						
							
								a2fbc0ae1b 
								
							 
						 
						
							
							
								
								Finally land the InvokeInst operand reordering.  
							
							... 
							
							
							
							I have audited all getOperandNo calls now, fixing
hidden assumptions. CallSite related uglyness will
be eliminated successively.
Note this patch has a long and griveous history,
for all the back-and-forths have a look at
CallSite.h's log.
llvm-svn: 99399 
							
						 
						
							2010-03-24 13:21:49 +00:00  
				
					
						
							
							
								 
						
							
								e1517a084f 
								
							 
						 
						
							
							
								
								backing out r99170 because it still fails on clang-x86_64-darwin10-fnt  
							
							... 
							
							
							
							llvm-svn: 99171 
							
						 
						
							2010-03-22 09:11:00 +00:00  
				
					
						
							
							
								 
						
							
								7a743e15e3 
								
							 
						 
						
							
							
								
								Now that hopefully all direct accesses to InvokeInst operands are fixed  
							
							... 
							
							
							
							we can reapply the InvokeInst operand reordering patch. (see r98957).
llvm-svn: 99170 
							
						 
						
							2010-03-22 08:28:00 +00:00  
				
					
						
							
							
								 
						
							
								6c56ed847e 
								
							 
						 
						
							
							
								
								back out r98957, it broke  http://smooshlab.apple.com:8010/builders/clang-x86_64-darwin10-fnt/builds/703  in the nightly test suite  
							
							... 
							
							
							
							llvm-svn: 98958 
							
						 
						
							2010-03-19 13:50:02 +00:00  
				
					
						
							
							
								 
						
							
								8335f9c0bf 
								
							 
						 
						
							
							
								
								Recommit r80858 again (which has been backed out in r80871).  
							
							... 
							
							
							
							This time I did a self-hosted bootstrap on Linux x86-64,
with no problems. Let's see how darwin 64-bit self-hosting
goes. At the first sign of failure I'll back this out.
Maybe the valgrind bots give me a hint of what may be wrong
(it at all).
llvm-svn: 98957 
							
						 
						
							2010-03-19 11:55:53 +00:00  
				
					
						
							
							
								 
						
							
								ccce8bae14 
								
							 
						 
						
							
							
								
								Avoid going through the LLVMContext for type equality where it's safe to dereference the type pointer.  
							
							... 
							
							
							
							llvm-svn: 92726 
							
						 
						
							2010-01-05 13:12:22 +00:00  
				
					
						
							
							
								 
						
							
								de5ad42aa1 
								
							 
						 
						
							
							
								
								Remove FreeInst.  
							
							... 
							
							
							
							Remove LowerAllocations pass.
Update some more passes to treate free calls just like they were treating FreeInst.
llvm-svn: 85176 
							
						 
						
							2009-10-26 23:43:48 +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  
				
					
						
							
							
								 
						
							
								9ed7b16bf3 
								
							 
						 
						
							
							
								
								Introduce and use convenience methods for getting pointer types  
							
							... 
							
							
							
							where the element is of a basic builtin type.  For example, to get
an i8* use getInt8PtrTy.
llvm-svn: 83379 
							
						 
						
							2009-10-06 15:40:36 +00:00  
				
					
						
							
							
								 
						
							
								2d60e1ec0c 
								
							 
						 
						
							
							
								
								back out my recent commit (r80858), it seems to break self-hosting buildbot's stage 2 configure  
							
							... 
							
							
							
							llvm-svn: 80871 
							
						 
						
							2009-09-03 02:02:59 +00:00  
				
					
						
							
							
								 
						
							
								14dfba6d66 
								
							 
						 
						
							
							
								
								re-commit r66920 (which has been backed out in r66953) I may have more luck this time. I'll back out if needed...  
							
							... 
							
							
							
							llvm-svn: 80858 
							
						 
						
							2009-09-03 00:18:58 +00:00  
				
					
						
							
							
								 
						
							
								a42ac6953b 
								
							 
						 
						
							
							
								
								Actually privatize a IntegerTypes, and fix a few bugs exposed by this.  
							
							... 
							
							
							
							llvm-svn: 78955 
							
						 
						
							2009-08-13 23:27:32 +00:00  
				
					
						
							
							
								 
						
							
								55f1c09e31 
								
							 
						 
						
							
							
								
								Push LLVMContexts through the IntegerType APIs.  
							
							... 
							
							
							
							llvm-svn: 78948 
							
						 
						
							2009-08-13 21:58:54 +00:00  
				
					
						
							
							
								 
						
							
								03cb69fbd1 
								
							 
						 
						
							
							
								
								Privatize the StructType table, which unfortunately involves routing contexts through a number of APIs.  
							
							... 
							
							
							
							llvm-svn: 78258 
							
						 
						
							2009-08-05 23:16:16 +00:00  
				
					
						
							
							
								 
						
							
								5a1acd9912 
								
							 
						 
						
							
							
								
								Move a few more APIs back to 2.5 forms.  The only remaining ones left to change back are  
							
							... 
							
							
							
							metadata related, which I'm waiting on to avoid conflicting with Devang.
llvm-svn: 77721 
							
						 
						
							2009-07-31 20:28:14 +00:00  
				
					
						
							
							
								 
						
							
								4056ca9568 
								
							 
						 
						
							
							
								
								Move types back to the 2.5 API.  
							
							... 
							
							
							
							llvm-svn: 77516 
							
						 
						
							2009-07-29 22:17:13 +00:00  
				
					
						
							
							
								 
						
							
								487375e9a2 
								
							 
						 
						
							
							
								
								Move ConstantExpr to 2.5 API.  
							
							... 
							
							
							
							llvm-svn: 77494 
							
						 
						
							2009-07-29 18:55:55 +00:00  
				
					
						
							
							
								 
						
							
								c2c7932c64 
								
							 
						 
						
							
							
								
								Change ConstantArray to 2.5 API.  
							
							... 
							
							
							
							llvm-svn: 77347 
							
						 
						
							2009-07-28 18:32:17 +00:00  
				
					
						
							
							
								 
						
							
								edb4a70325 
								
							 
						 
						
							
							
								
								Revert the ConstantInt constructors back to their 2.5 forms where possible, thanks to contexts-on-types.  More to come.  
							
							... 
							
							
							
							llvm-svn: 77011 
							
						 
						
							2009-07-24 23:12:02 +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  
				
					
						
							
							
								 
						
							
								4fdeba9706 
								
							 
						 
						
							
							
								
								Revert yesterday's change by removing the LLVMContext parameter to AllocaInst and MallocInst.  
							
							... 
							
							
							
							llvm-svn: 75863 
							
						 
						
							2009-07-15 23:53:25 +00:00  
				
					
						
							
							
								 
						
							
								b6b2530000 
								
							 
						 
						
							
							
								
								Move EVER MORE stuff over to LLVMContext.  
							
							... 
							
							
							
							llvm-svn: 75703 
							
						 
						
							2009-07-14 23:09:55 +00:00  
				
					
						
							
							
								 
						
							
								53a52215b5 
								
							 
						 
						
							
							
								
								Begin the painful process of tearing apart the rat'ss nest that is Constants.cpp and ConstantFold.cpp.  
							
							... 
							
							
							
							This involves temporarily hard wiring some parts to use the global context.  This isn't ideal, but it's
the only way I could figure out to make this process vaguely incremental.
llvm-svn: 75445 
							
						 
						
							2009-07-13 04:09:18 +00:00  
				
					
						
							
							
								 
						
							
								1e5f00e7a7 
								
							 
						 
						
							
							
								
								This started as a small change, I swear.  Unfortunately, lots of things call the [I|F]CmpInst constructors.  Who knew!?  
							
							... 
							
							
							
							llvm-svn: 75200 
							
						 
						
							2009-07-09 23:48:35 +00:00  
				
					
						
							
							
								 
						
							
								b17f32945f 
								
							 
						 
						
							
							
								
								Switch GlobalVariable ctors to a sane API, where *either* a context or a module is required.  
							
							... 
							
							
							
							llvm-svn: 75025 
							
						 
						
							2009-07-08 19:03:57 +00:00  
				
					
						
							
							
								 
						
							
								5948fdf68b 
								
							 
						 
						
							
							
								
								Push LLVMContext through GlobalVariables and IRBuilder.  
							
							... 
							
							
							
							llvm-svn: 74985 
							
						 
						
							2009-07-08 01:26:06 +00:00  
				
					
						
							
							
								 
						
							
								e70b637033 
								
							 
						 
						
							
							
								
								More LLVMContext-ification.  
							
							... 
							
							
							
							llvm-svn: 74807 
							
						 
						
							2009-07-05 22:41:43 +00:00  
				
					
						
							
							
								 
						
							
								8d62763779 
								
							 
						 
						
							
							
								
								remove trailing whitespace  
							
							... 
							
							
							
							llvm-svn: 69402 
							
						 
						
							2009-04-17 23:30:55 +00:00  
				
					
						
							
							
								 
						
							
								4bb96e9a50 
								
							 
						 
						
							
							
								
								Revert r66920. It was causing failures in the self-hosting buildbot (in release  
							
							... 
							
							
							
							mode).
Running /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/BugPoint/dg.exp ...
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/BugPoint/crash-narrowfunctiontest.ll
Failed with signal(SIGBUS) at line 1
while running: bugpoint /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/BugPoint/crash-narrowfunctiontest.ll -bugpoint-crashcalls -silence-passes > /dev/null
0   bugpoint          0x0035dd25 llvm::sys::SetInterruptFunction(void (*)()) + 85
1   bugpoint          0x0035e382 llvm::sys::RemoveFileOnSignal(llvm::sys::Path const&, std::string*) + 706
2   libSystem.B.dylib 0x92f112bb _sigtramp + 43
3   libSystem.B.dylib 0xffffffff _sigtramp + 1829694831
4   bugpoint          0x00021d1c main + 92
5   bugpoint          0x00002106 start + 54
6   bugpoint          0x00000004 start + 18446744073709543220
Stack dump:
0.    Program arguments: bugpoint /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/BugPoint/crash-narrowfunctiontest.ll -bugpoint-crashcalls -silence-passes 
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/BugPoint/misopt-basictest.ll
Failed with signal(SIGBUS) at line 1
while running: bugpoint /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/BugPoint/misopt-basictest.ll -dce -bugpoint-deletecalls -simplifycfg -silence-passes
0   bugpoint          0x0035dd25 llvm::sys::SetInterruptFunction(void (*)()) + 85
1   bugpoint          0x0035e382 llvm::sys::RemoveFileOnSignal(llvm::sys::Path const&, std::string*) + 706
2   libSystem.B.dylib 0x92f112bb _sigtramp + 43
3   libSystem.B.dylib 0xffffffff _sigtramp + 1829694831
4   bugpoint          0x00021d1c main + 92
5   bugpoint          0x00002106 start + 54
6   bugpoint          0x00000006 start + 18446744073709543222
Stack dump:
0.    Program arguments: bugpoint /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/BugPoint/misopt-basictest.ll -dce -bugpoint-deletecalls -simplifycfg -silence-passes 
FAIL: /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/BugPoint/remove_arguments_test.ll
Failed with signal(SIGBUS) at line 1
while running: bugpoint /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/BugPoint/remove_arguments_test.ll  -bugpoint-crashcalls -silence-passes
0   bugpoint          0x0035dd25 llvm::sys::SetInterruptFunction(void (*)()) + 85
1   bugpoint          0x0035e382 llvm::sys::RemoveFileOnSignal(llvm::sys::Path const&, std::string*) + 706
2   libSystem.B.dylib 0x92f112bb _sigtramp + 43
3   libSystem.B.dylib 0xffffffff _sigtramp + 1829694831
4   bugpoint          0x00021d1c main + 92
5   bugpoint          0x00002106 start + 54
Stack dump:
0.    Program arguments: bugpoint /Volumes/Sandbox/Buildbot/llvm/full-llvm/build/llvmCore/test/BugPoint/remove_arguments_test.ll -bugpoint-crashcalls -silence-passes 
--- Reverse-merging (from foreign repository) r66920 into '.':
U    include/llvm/Support/CallSite.h
U    include/llvm/Instructions.h
U    lib/Analysis/IPA/GlobalsModRef.cpp
U    lib/Analysis/IPA/Andersens.cpp
U    lib/Bitcode/Writer/BitcodeWriter.cpp
U    lib/VMCore/Instructions.cpp
U    lib/VMCore/Verifier.cpp
U    lib/VMCore/AsmWriter.cpp
U    lib/Transforms/Utils/LowerInvoke.cpp
U    lib/Transforms/Scalar/SimplifyCFGPass.cpp
U    lib/Transforms/IPO/PruneEH.cpp
U    lib/Transforms/IPO/DeadArgumentElimination.cpp
llvm-svn: 66953 
							
						 
						
							2009-03-13 21:15:59 +00:00  
				
					
						
							
							
								 
						
							
								258232fb80 
								
							 
						 
						
							
							
								
								Second installment of "BasicBlock operands to the back"  
							
							... 
							
							
							
							changes.
For InvokeInst now all arguments begin at op_begin().
The Callee, Cont and Fail are now faster to get by
access relative to op_end().
This patch introduces some temporary uglyness in CallSite.
Next I'll bring CallInst up to a similar scheme and then
the uglyness will magically vanish.
This patch also exposes all the reliance of the libraries
on InvokeInst's operand ordering. I am thinking of taking
care of that too.
llvm-svn: 66920 
							
						 
						
							2009-03-13 18:27:29 +00:00  
				
					
						
							
							
								 
						
							
								12da8ce3d2 
								
							 
						 
						
							
							
								
								Introduce new linkage types linkonce_odr, weak_odr, common_odr  
							
							... 
							
							
							
							and extern_weak_odr.  These are the same as the non-odr versions,
except that they indicate that the global will only be overridden
by an *equivalent* global.  In C, a function with weak linkage can
be overridden by a function which behaves completely differently.
This means that IP passes have to skip weak functions, since any
deductions made from the function definition might be wrong, since
the definition could be replaced by something completely different
at link time.   This is not allowed in C++, thanks to the ODR
(One-Definition-Rule): if a function is replaced by another at
link-time, then the new function must be the same as the original
function.  If a language knows that a function or other global can
only be overridden by an equivalent global, it can give it the
weak_odr linkage type, and the optimizers will understand that it
is alright to make deductions based on the function body.  The
code generators on the other hand map weak and weak_odr linkage
to the same thing.
llvm-svn: 66339 
							
						 
						
							2009-03-07 15:45:40 +00:00  
				
					
						
							
							
								 
						
							
								4c758ea3e0 
								
							 
						 
						
							
							
								
								Large mechanical patch.  
							
							... 
							
							
							
							s/ParamAttr/Attribute/g
s/PAList/AttrList/g
s/FnAttributeWithIndex/AttributeWithIndex/g
s/FnAttr/Attribute/g
This sets the stage 
- to implement function notes as function attributes and 
- to distinguish between function attributes and return value attributes.
This requires corresponding changes in llvm-gcc and clang.
llvm-svn: 56622 
							
						 
						
							2008-09-25 21:00:45 +00:00