summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen/CodeGenFunction.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Update for LLVM API change.Owen Anderson2009-07-241-7/+7
| | | | llvm-svn: 77012
* Shield clang from LLVM API changes, until the dust settles.Daniel Dunbar2009-07-231-1/+3
| | | | llvm-svn: 76862
* Move EmitCtorPrologue to CGCXX. Add an assert and FIXMEs.Fariborz Jahanian2009-07-201-33/+0
| | | | llvm-svn: 76498
* Early ir-gen for constructor prologue. This is on going.Fariborz Jahanian2009-07-201-0/+35
| | | | llvm-svn: 76493
* Remove an apparently unused header.Mike Stump2009-07-201-1/+0
| | | | llvm-svn: 76473
* Catch another trivial case where we can avoid emitting a separate return blcok.Daniel Dunbar2009-07-191-4/+5
| | | | llvm-svn: 76365
* Avoid generation of dead code in a few more situations.Daniel Dunbar2009-07-191-4/+4
| | | | | | | | | | | | | - Emit variable declarations as "simple", we want to avoid forcing the creation of a dummy basic block, but still need to make the variable available for later use. - With that, we can now skip IRgen for other unreachable statements (which don't define a label). - Anders, I added two fixmes on calls to EmitVLASize, can you check them? llvm-svn: 76361
* Per offline discussion with Steve Naroff, add back Type::getAsXXXType() methodsTed Kremenek2009-07-171-2/+2
| | | | | | | | | until Doug Gregor's Type smart pointer code lands (or more discussion occurs). These methods just call the new Type::getAs<XXX> methods, so we still have reduced implementation redundancy. Having explicit getAsXXXType() methods makes it easier to set breakpoints in the debugger. llvm-svn: 76193
* Replaced Type::getAsLValueReferenceType(), Type::getAsRValueReferenceType(), ↵Ted Kremenek2009-07-171-1/+1
| | | | | | Type::getAsMemberPointerType(), Type::getAsTagType(), and Type::getAsRecordType() with their Type::getAs<XXX> equivalents. llvm-svn: 76139
* Add member template 'Type::getAs<T>', which converts a Type* to a respective T*.Ted Kremenek2009-07-161-1/+1
| | | | | | | | | | | | | | | | | | | | | This method is intended to eventually replace the individual Type::getAsXXXType<> methods. The motivation behind this change is twofold: 1) Reduce redundant implementations of Type::getAsXXXType() methods. Most of them are basically copy-and-paste. 2) By centralizing the implementation of the getAs<Type> logic we can more smoothly move over to Doug Gregor's proposed canonical type smart pointer scheme. Along with this patch: a) Removed 'Type::getAsPointerType()'; now clients use getAs<PointerType>. b) Removed 'Type::getAsBlockPointerTypE()'; now clients use getAs<BlockPointerType>. llvm-svn: 76098
* Update for LLVM API change, and contextify a bunch of related stuff.Owen Anderson2009-07-141-10/+10
| | | | llvm-svn: 75705
* Update for LLVM API change.Owen Anderson2009-07-131-2/+2
| | | | llvm-svn: 75446
* Update for IRBuilder API change.Owen Anderson2009-07-081-0/+1
| | | | llvm-svn: 75041
* Remove the ASTContext parameter from the getBody() methods of Decl and ↵Argyrios Kyrtzidis2009-06-301-1/+1
| | | | | | | | subclasses. Timings showed no significant difference before and after the commit. llvm-svn: 74504
* Remove the ASTContext parameter from the attribute-related methods of Decl.Argyrios Kyrtzidis2009-06-301-1/+1
| | | | | | | | | The implementations of these methods can Use Decl::getASTContext() to get the ASTContext. This commit touches a lot of files since call sites for these methods are everywhere. I used pre-tokenized "carbon.h" and "cocoa.h" headers to do some timings, and there was no real time difference between before the commit and after it. llvm-svn: 74501
* Move the static DeclAttrs map into ASTContext. Fixes <rdar://problem/6983177>.Douglas Gregor2009-06-181-1/+1
| | | | llvm-svn: 73702
* When possible, don't emit the cleanup block. Instead, just move the ↵Anders Carlsson2009-05-311-1/+7
| | | | | | instructions to the current block. llvm-svn: 72654
* Re-add a slightly more general version of the check from r72578; it is Eli Friedman2009-05-291-0/+2
| | | | | | actually necessary in some obscure cases. llvm-svn: 72585
* Oops, the testcase I was thinking of is supposed to error out. IMike Stump2009-05-291-2/+0
| | | | | | tried other things that might trip, but they all worked. llvm-svn: 72584
* Fixup codegen for composition of vla types using a normal array type.Mike Stump2009-05-291-0/+2
| | | | llvm-svn: 72578
* Reflow some comments.Mike Stump2009-05-161-7/+7
| | | | llvm-svn: 71937
* Implement function-try-blocks. However, there's a very subtle bug that I ↵Sebastian Redl2009-04-261-5/+6
| | | | | | can't track down. llvm-svn: 70155
* the logic for computing __func__ and friends is really broken:Chris Lattner2009-04-231-1/+1
| | | | | | | | | the type assigned by sema (and is visible with sizeof(__func__) for example) has nothing to do with what codegen ends up producing. We should eventually add a method on PredefinedExpr to handle this. In the meantime, just set up some framework and add some fixme's. llvm-svn: 69872
* don't bother emitting a zero byte memset at all. We used to get themChris Lattner2009-04-211-2/+5
| | | | | | | | | | | | | | | | | in cases like this: typedef struct { short instance; char name[0]; } ATTR_LIST_ENTRY2; void test() { ATTR_LIST_ENTRY2 X = (ATTR_LIST_ENTRY2) { .instance = 7, }; } While it is safe to emit them, it is pretty silly. llvm-svn: 69687
* FunctionDecl::getBody() is getting an ASTContext argument for use inDouglas Gregor2009-04-181-1/+1
| | | | | | | | lazy PCH deserialization. Propagate that argument wherever it needs to be. No functionality change, except that I've tightened up a few PCH tests in preparation. llvm-svn: 69406
* Simplify CodeGenFunction::GenerateCode.Anders Carlsson2009-04-151-9/+4
| | | | llvm-svn: 69134
* Update to use hasAttr() instead of getAttr().Daniel Dunbar2009-04-131-1/+1
| | | | | | - No functionality change. llvm-svn: 68987
* reject codegen of __thread variables as unimplemented, rdar://6775265Chris Lattner2009-04-101-3/+2
| | | | llvm-svn: 68755
* Add some basic support for generating C++ member functions.Anders Carlsson2009-04-041-1/+20
| | | | llvm-svn: 68425
* remove some obsolete comments, use an AssertingVH.Chris Lattner2009-03-311-1/+2
| | | | llvm-svn: 68151
* Move where block-related variables are initialized so that block Eli Friedman2009-03-281-10/+0
| | | | | | types don't get generated when blocks aren't used. llvm-svn: 67898
* fix CreateTempAlloca to not set a name on the alloca for temporariesChris Lattner2009-03-221-2/+4
| | | | | | | | | in release-assert builds. For automatic variables, explicitly set a name with setName that does not make a temporary std::string. This speeds up -emit-llvm-only -disable-free on PR3810 by 4.6% llvm-svn: 67459
* Initialize the cleanup.dst variable if necessary. Fixes PR3789.Anders Carlsson2009-03-171-3/+8
| | | | llvm-svn: 67075
* Codegen support for copy helpers for block literals.Mike Stump2009-03-071-1/+0
| | | | llvm-svn: 66319
* Framework for codegen for copy/dispose helpers.Mike Stump2009-03-061-1/+2
| | | | llvm-svn: 66231
* Add codegen support for __block variables to call _Block_object_dispose as ↵Mike Stump2009-03-051-1/+1
| | | | | | necessary. llvm-svn: 66117
* Move some of the CodeGenFunction blocks code up and out. NoMike Stump2009-03-041-2/+2
| | | | | | functionality change. llvm-svn: 66048
* Create a new TypeNodes.def file that enumerates all of the types,Douglas Gregor2009-02-261-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | giving them rough classifications (normal types, never-canonical types, always-dependent types, abstract type representations) and making it far easier to make sure that we've hit all of the cases when decoding types. Switched some switch() statements on the type class over to using this mechanism, and filtering out those things we don't care about. For example, CodeGen should never see always-dependent or non-canonical types, while debug info generation should never see always-dependent types. More switch() statements on the type class need to be moved over to using this approach, so that we'll get warnings when we add a new type then fail to account for it somewhere in the compiler. As part of this, some types have been renamed: TypeOfExpr -> TypeOfExprType FunctionTypeProto -> FunctionProtoType FunctionTypeNoProto -> FunctionNoProtoType There shouldn't be any functionality change... llvm-svn: 65591
* Add Type::hasPointerRepresentation predicate.Daniel Dunbar2009-02-261-8/+2
| | | | | | | | | - For types whose native representation is a pointer. - Use to replace ExprConstant.cpp:HasPointerEvalType, CodeGenFunction::isObjCPointerType. llvm-svn: 65569
* Drop uses of isPointerLikeType.Daniel Dunbar2009-02-261-2/+2
| | | | | | - No functionality change. llvm-svn: 65560
* CodeGen support for copied BlockDeclRefExprs.Mike Stump2009-02-251-0/+1
| | | | llvm-svn: 65487
* Pull COdeGenFunction::CreateStaticBlockVarDecl (just for creating theDaniel Dunbar2009-02-251-6/+7
| | | | | | | | global variable) out of GenerateStaticBlockVarDecl. - No intended functionality change. - Prep for some mild cleanups and PR3662. llvm-svn: 65466
* Add low level support for generating invoke instead of calls.Daniel Dunbar2009-02-231-1/+1
| | | | | | - No functionality change. llvm-svn: 65325
* Add CodeGen support for the helper for BlockDeclRefExprs. The easierMike Stump2009-02-211-3/+14
| | | | | | stuff is mostly done. Move BlockHasCopyDispose up. llvm-svn: 65242
* Address Chris's comments regarding C++ name mangling.Douglas Gregor2009-02-181-2/+1
| | | | llvm-svn: 64984
* Add CodeGen support for the nodebug attribute.Anders Carlsson2009-02-131-4/+8
| | | | llvm-svn: 64445
* Add basic support for C++ name mangling according to the Itanium C++Douglas Gregor2009-02-131-1/+1
| | | | | | | | | | | | | | | | ABI to the CodeGen library. Since C++ code-generation is so incomplete, we can't exercise much of this mangling code. However, a few smoke tests show that it's doing the same thing as GCC. When C++ codegen matures, we'll extend the ABI tester to verify name-mangling as well, and complete the implementation here. At this point, the major client of name mangling is in the uses of the new "overloadable" attribute in C, which allows overloading. Any "overloadable" function in C (or in an extern "C" block in C++) will be mangled the same way that the corresponding C++ function would be mangled. llvm-svn: 64413
* Pull CodeGenFunction::EmitVAArg into target specific ABIInfo classes.Daniel Dunbar2009-02-101-35/+0
| | | | llvm-svn: 64235
* Remove the last remnants of the Obj-C EH stack code.Anders Carlsson2009-02-101-1/+1
| | | | llvm-svn: 64205
* Add DidCallStackSave variable to CodeGenFunction.Anders Carlsson2009-02-091-0/+1
| | | | llvm-svn: 64156
OpenPOWER on IntegriCloud