aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/ShadowStackGC.cpp
AgeCommit message (Collapse)AuthorFilesLines
2012-06-29Move llvm/Support/IRBuilder.h -> llvm/IRBuilder.hChandler Carruth1-4/+4
This was always part of the VMCore library out of necessity -- it deals entirely in the IR. The .cpp file in fact was already part of the VMCore library. This is just a mechanical move. I've tried to go through and re-apply the coding standard's preferred header sort, but at 40-ish files, I may have gotten some wrong. Please let me know if so. I'll be committing the corresponding updates to Clang and Polly, and Duncan has DragonEgg. Thanks to Bill and Eric for giving the green light for this bit of cleanup. llvm-svn: 159421
2012-02-06[unwind removal] We no longer have 'unwind' instructions being generated, soBill Wendling1-2/+1
remove the code that handles them. llvm-svn: 149901
2011-09-22Use the C personality function instead of the C++ personality function.Bill Wendling1-3/+1
llvm-svn: 140318
2011-09-21Attempt to update the shadow stack GC pass to the new EH model.Bill Wendling1-5/+17
This inserts a cleanup landingpad instruction and a resume to mimic the old unwind instruction. llvm-svn: 140277
2011-08-12switch to use the new api for structtypes.Chris Lattner1-4/+4
llvm-svn: 137480
2011-07-31Add the 'resume' instruction for the new EH rewrite.Bill Wendling1-2/+4
This adds the 'resume' instruction class, IR parsing, and bitcode reading and writing. The 'resume' instruction resumes propagation of an existing (in-flight) exception whose unwinding was interrupted with a 'landingpad' instruction (to be added later). llvm-svn: 136589
2011-07-30Revert r136253, r136263, r136269, r136313, r136325, r136326, r136329, r136338,Bill Wendling1-4/+2
r136339, r136341, r136369, r136387, r136392, r136396, r136429, r136430, r136444, r136445, r136446, r136253 pending review. llvm-svn: 136556
2011-07-27Merge the contents from exception-handling-rewrite to the mainline.Bill Wendling1-2/+4
This adds the new instructions 'landingpad' and 'resume'. llvm-svn: 136253
2011-07-22Fix more MSVC warnings caused by a cases I missed when convertingJay Foad1-1/+1
ConstantExpr::getGetElementPtr to use ArrayRef. llvm-svn: 135762
2011-07-22Convert IRBuilder::CreateGEP and IRBuilder::CreateInBoundsGEP to useJay Foad1-2/+2
ArrayRef. llvm-svn: 135761
2011-07-18land David Blaikie's patch to de-constify Type, with a few tweaks.Chris Lattner1-6/+6
llvm-svn: 135375
2011-07-15Convert CallInst and InvokeInst APIs to use ArrayRef.Jay Foad1-2/+1
llvm-svn: 135265
2011-07-09Land the long talked about "type system rewrite" patch. ThisChris Lattner1-31/+18
patch brings numerous advantages to LLVM. One way to look at it is through diffstat: 109 files changed, 3005 insertions(+), 5906 deletions(-) Removing almost 3K lines of code is a good thing. Other advantages include: 1. Value::getType() is a simple load that can be CSE'd, not a mutating union-find operation. 2. Types a uniqued and never move once created, defining away PATypeHolder. 3. Structs can be "named" now, and their name is part of the identity that uniques them. This means that the compiler doesn't merge them structurally which makes the IR much less confusing. 4. Now that there is no way to get a cycle in a type graph without a named struct type, "upreferences" go away. 5. Type refinement is completely gone, which should make LTO much MUCH faster in some common cases with C++ code. 6. Types are now generally immutable, so we can use "Type *" instead "const Type *" everywhere. Downsides of this patch are that it removes some functions from the C API, so people using those will have to upgrade to (not yet added) new API. "LLVM 3.0" is the right time to do this. There are still some cleanups pending after this, this patch is large enough as-is. llvm-svn: 134829
2011-06-22Replace the existing forms of ConstantArray::get() with a single formJay Foad1-2/+2
that takes an ArrayRef. llvm-svn: 133615
2011-06-20Revamp the "ConstantStruct::get" methods. Previously, these were scatteredChris Lattner1-6/+10
all over the place in different styles and variants. Standardize on two preferred entrypoints: one that takes a StructType and ArrayRef, and one that takes StructType and varargs. In cases where there isn't a struct type convenient, we now add a ConstantStruct::getAnon method (whose name will make more sense after a few more patches land). It would be "really really nice" if the ConstantStruct::get and ConstantVector::get methods didn't make temporary std::vectors. llvm-svn: 133412
2010-06-25use ArgOperand API and CallSite to access arguments of CallInstGabor Greif1-6/+8
llvm-svn: 106829
2010-04-20use abstract accessors to CallInstGabor Greif1-1/+1
llvm-svn: 101899
2010-04-16Revert 101465, it broke internal OpenGL testing.Eric Christopher1-7/+7
Probably the best way to know that all getOperand() calls have been handled is to replace that API instead of updating. llvm-svn: 101579
2010-04-16reapply r101434Gabor Greif1-7/+7
with a fix for self-hosting rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101465
2010-04-16back out r101423 and r101397, they break llvm-gcc self-host on darwin10Gabor Greif1-7/+7
llvm-svn: 101434
2010-04-15reapply r101364, which has been backed out in r101368Gabor Greif1-7/+7
with a fix rotate CallInst operands, i.e. move callee to the back of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101397
2010-04-15back out r101364, as it trips the linux nightlybot on some clang C++ testsGabor Greif1-7/+7
llvm-svn: 101368
2010-04-15rotate CallInst operands, i.e. move callee to the backGabor Greif1-7/+7
of the operand array the motivation for this patch are laid out in my mail to llvm-commits: more efficient access to operands and callee, faster callgraph-construction, smaller compiler binary llvm-svn: 101364
2009-10-25Remove includes of Support/Compiler.h that are no longer needed after theNick Lewycky1-1/+0
VISIBILITY_HIDDEN removal. llvm-svn: 85043
2009-10-25Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.Nick Lewycky1-2/+2
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-06Introduce and use convenience methods for getting pointer typesDuncan Sands1-1/+1
where the element is of a basic builtin type. For example, to get an i8* use getInt8PtrTy. llvm-svn: 83379
2009-09-19Remove the default value for ConstantStruct::get's isPacked parameter andNick Lewycky1-2/+3
update the code which was broken by this. llvm-svn: 82327
2009-08-13Actually privatize a IntegerTypes, and fix a few bugs exposed by this.Owen Anderson1-1/+1
llvm-svn: 78955
2009-08-13Push LLVMContexts through the IntegerType APIs.Owen Anderson1-14/+19
llvm-svn: 78948
2009-08-05Privatize the StructType table, which unfortunately involves routing ↵Owen Anderson1-5/+5
contexts through a number of APIs. llvm-svn: 78258
2009-07-31Move a few more APIs back to 2.5 forms. The only remaining ones left to ↵Owen Anderson1-2/+2
change back are metadata related, which I'm waiting on to avoid conflicting with Devang. llvm-svn: 77721
2009-07-29Move types back to the 2.5 API.Owen Anderson1-3/+1
llvm-svn: 77516
2009-07-29Move ConstantExpr to 2.5 API.Owen Anderson1-1/+1
llvm-svn: 77494
2009-07-28Change ConstantArray to 2.5 API.Owen Anderson1-1/+1
llvm-svn: 77347
2009-07-27Move ConstantStruct back to 2.5 API.Owen Anderson1-2/+2
llvm-svn: 77266
2009-07-24Revert the ConstantInt constructors back to their 2.5 forms where possible, ↵Owen Anderson1-9/+9
thanks to contexts-on-types. More to come. llvm-svn: 77011
2009-07-22Get rid of the Pass+Context magic.Owen Anderson1-20/+20
llvm-svn: 76702
2009-07-14Move EVER MORE stuff over to LLVMContext.Owen Anderson1-24/+32
llvm-svn: 75703
2009-07-13Begin the painful process of tearing apart the rat'ss nest that is ↵Owen Anderson1-2/+2
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-08Push LLVMContext _back_ through IRBuilder.Owen Anderson1-1/+1
llvm-svn: 75040
2009-07-08Switch GlobalVariable ctors to a sane API, where *either* a context or a ↵Owen Anderson1-5/+4
module is required. llvm-svn: 75025
2009-07-08Push LLVMContext through GlobalVariables and IRBuilder.Owen Anderson1-2/+2
llvm-svn: 74985
2009-03-07Introduce new linkage types linkonce_odr, weak_odr, common_odrDuncan Sands1-2/+2
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-01-16Registry.h should not depend on CommandLine.h.Mikhail Glushenkov1-0/+1
Split Support/Registry.h into two files so that we have less to recompile every time CommandLine.h is changed. llvm-svn: 62312
2009-01-16Delete trailing whitespace.Mikhail Glushenkov1-64/+64
llvm-svn: 62307
2008-09-25 Large mechanical patch.Devang Patel1-1/+1
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-08-17Rename some GC classes so that their roll will hopefully be clearer.Gordon Henriksen1-26/+23
In particular, Collector was confusing to implementors. Several thought that this compile-time class was the place to implement their runtime GC heap. Of course, it doesn't even exist at runtime. Specifically, the renames are: Collector -> GCStrategy CollectorMetadata -> GCFunctionInfo CollectorModuleMetadata -> GCModuleInfo CollectorRegistry -> GCRegistry Function::getCollector -> getGC (setGC, hasGC, clearGC) Several accessors and nested types have also been renamed to be consistent. These changes should be obvious. llvm-svn: 54899
2008-08-17Factor GC metadata table assembly generation out of Collector in preparation ↵Gordon Henriksen1-0/+441
for splitting AsmPrinter into its own library. llvm-svn: 54881