summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
Commit message (Collapse)AuthorAgeFilesLines
...
* Make vectorized floating-point comparisons work without crashing.Eli Friedman2009-07-221-1/+1
| | | | llvm-svn: 76726
* Preserve address space information through member accesses, e.g., Mon P Wang2009-07-223-26/+57
| | | | | | | __attribute__((address_space(1))) struct {int arr[ 3 ]; } *p1; ... = p1->arr[2]; // load from address space 1 llvm-svn: 76717
* Update for LLVM API change.Owen Anderson2009-07-213-10/+10
| | | | llvm-svn: 76599
* Update for LLVM API change.Owen Anderson2009-07-211-3/+3
| | | | llvm-svn: 76534
* Move EmitCtorPrologue to CGCXX. Add an assert and FIXMEs.Fariborz Jahanian2009-07-202-33/+33
| | | | llvm-svn: 76498
* Early ir-gen for constructor prologue. This is on going.Fariborz Jahanian2009-07-202-0/+37
| | | | 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
* Detect when the current generation point is unreachable after emittingDaniel Dunbar2009-07-191-3/+12
| | | | | | | | | | expressions. - This generally catches the important case of noreturn functions. - With the last two changes, we are down to 152 unreachable blocks emitted on 403.gcc, vs the 1805 we started with. llvm-svn: 76364
* Fix thinko.Daniel Dunbar2009-07-192-4/+8
| | | | llvm-svn: 76362
* Avoid generation of dead code in a few more situations.Daniel Dunbar2009-07-194-15/+66
| | | | | | | | | | | | | - 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
* Rename NextOffset to DataSize, which better matches the Itanium C++ ABIAnders Carlsson2009-07-181-1/+1
| | | | llvm-svn: 76339
* Revert r75641.Anders Carlsson2009-07-186-5/+6
| | | | llvm-svn: 76327
* Remove ObjCQualifiedInterfaceType:-)Steve Naroff2009-07-182-7/+0
| | | | llvm-svn: 76321
* fix objc codegen to not have its own list of things that eventually get into ↵Chris Lattner2009-07-174-64/+33
| | | | | | | | llvm.used, just populate CGM's list directly. llvm-svn: 76266
* Per offline discussion with Steve Naroff, add back Type::getAsXXXType() methodsTed Kremenek2009-07-1711-27/+27
| | | | | | | | | 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-178-16/+16
| | | | | | Type::getAsMemberPointerType(), Type::getAsTagType(), and Type::getAsRecordType() with their Type::getAs<XXX> equivalents. llvm-svn: 76139
* ir-gen for --/++ operators of objc object pointersFariborz Jahanian2009-07-161-1/+19
| | | | | | in 32bit abi. llvm-svn: 76109
* Hook in s390x stuff into clangAnton Korobeynikov2009-07-161-0/+77
| | | | llvm-svn: 76099
* Add member template 'Type::getAs<T>', which converts a Type* to a respective T*.Ted Kremenek2009-07-165-11/+11
| | | | | | | | | | | | | | | | | | | | | 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.Owen Anderson2009-07-161-5/+5
| | | | llvm-svn: 76090
* use CreateRuntimeVariable to get __CFConstantStringClassReferenceChris Lattner2009-07-161-11/+6
| | | | | | | instead of doing it manually (which might end up getting auto-renamed), fixing a FIXME. rdar://7065446 llvm-svn: 76079
* Remove ASTContext::isObjCObjectPointerType().Steve Naroff2009-07-163-3/+3
| | | | | | Convert all clients to use the new predicate on Type. llvm-svn: 76076
* codegen string literals using private linkage now like llvm-gcc, eliminatingChris Lattner2009-07-161-15/+17
| | | | | | some target hooks. llvm-svn: 75895
* Update for LLVM API change.Owen Anderson2009-07-161-1/+1
| | | | llvm-svn: 75869
* Lexically order files in CMakeLists.txt files.Ted Kremenek2009-07-151-3/+3
| | | | llvm-svn: 75832
* Implement the ObjC pseudo built-in types as clang "BuiltinType's". I say ↵Steve Naroff2009-07-152-0/+4
| | | | | | | | | | | | pseudo built-in types, since Sema still injects a typedef for recognition (i.e. they aren't truly built-ins from a parser perspective). This removes the static data/methods on ObjCObjectPointerType while preserving the nice API (no need to fiddle with ASTContext:-). This patch also adds Type::isObjCBuiltinType(). This should be the last fairly large patch related to recrafting the ObjC type system. The follow-on patches should be fairly small. llvm-svn: 75808
* Update for LLVM API change, and contextify a bunch of related stuff.Owen Anderson2009-07-1420-815/+916
| | | | llvm-svn: 75705
* Revert 75648 for now. It is causing test failures.Devang Patel2009-07-143-28/+8
| | | | llvm-svn: 75684
* Introduce Type::isAnyPointerType() and convert all clients (suggested by Chris).Steve Naroff2009-07-141-1/+1
| | | | | | I don't love the name, however it simplifies the code and is a worthwhile change. If/when we come up with a better name, we can do a search/replace. llvm-svn: 75650
* [llvm up] adjust to match mainline.Chris Lattner2009-07-141-3/+4
| | | | llvm-svn: 75647
* Rename RecordLayout.h to ASTRecordLayout.hAnders Carlsson2009-07-146-6/+5
| | | | llvm-svn: 75641
* Revert r75614 which depend on r75610 (for LLVM), which was reverted.Daniel Dunbar2009-07-141-4/+3
| | | | | | | --- Reverse-merging r75614 into '.': U lib/CodeGen/CGDebugInfo.cpp llvm-svn: 75639
* Basic support for C++0x unicode types. Support for literals will follow in ↵Alisdair Meredith2009-07-142-2/+6
| | | | | | an incremental patch llvm-svn: 75622
* use new name for method.Chris Lattner2009-07-141-3/+4
| | | | llvm-svn: 75614
* Use LLVM mangler to get mangled name for debug info entry.Devang Patel2009-07-143-8/+27
| | | | llvm-svn: 75589
* Update debug info generation for ObjCObjectPointer changes.Daniel Dunbar2009-07-142-5/+17
| | | | | | | | | - Previously this would crash on recursive types, and it was also incorrectly stripping off a level of indirection. - I'm not 100% convinced this is all correct, but it should be a monotonic improvment. llvm-svn: 75582
* Update for API change.Owen Anderson2009-07-141-1/+1
| | | | llvm-svn: 75569
* Fix 5 issues from Chris's feedback on ↵Steve Naroff2009-07-131-1/+0
| | | | | | | | http://llvm.org/viewvc/llvm-project?view=rev&revision=75314. Still more to come...just wanted to get the no-brainers out of the way. llvm-svn: 75477
* Update debug info type cache after fwd decl is replaced by real decl.Devang Patel2009-07-131-2/+6
| | | | llvm-svn: 75473
* Fix comment.Devang Patel2009-07-131-1/+1
| | | | llvm-svn: 75471
* Update for LLVM API change.Owen Anderson2009-07-1315-82/+97
| | | | llvm-svn: 75446
* Fix type conversion of ObjCObjectPointerType.Daniel Dunbar2009-07-111-6/+7
| | | | | | | - Previous code was based on a misunderstanding (on my part) of the type representation. llvm-svn: 75385
* Generate correct prototype for objc_enumerationMutation.Daniel Dunbar2009-07-111-4/+7
| | | | | | - This was a latent bug exposed by the recent objc type changes. llvm-svn: 75383
* Fix typo (found by gcc warning).Eli Friedman2009-07-111-1/+1
| | | | llvm-svn: 75325
* This patch includes a conceptually simple, but very intrusive/pervasive change. Steve Naroff2009-07-108-40/+57
| | | | | | | | | | | | The idea is to segregate Objective-C "object" pointers from general C pointers (utilizing the recently added ObjCObjectPointerType). The fun starts in Sema::GetTypeForDeclarator(), where "SomeInterface *" is now represented by a single AST node (rather than a PointerType whose Pointee is an ObjCInterfaceType). Since a significant amount of code assumed ObjC object pointers where based on C pointers/structs, this patch is very tedious. It should also explain why it is hard to accomplish this in smaller, self-contained patches. This patch does most of the "heavy lifting" related to moving from PointerType->ObjCObjectPointerType. It doesn't include all potential "cleanups". The good news is additional cleanups can be done later (some are noted in the code). This patch is so large that I didn't want to include any changes that are purely aesthetic. By making the ObjC types truly built-in, they are much easier to work with (and require fewer "hacks"). For example, there is no need for ASTContext::isObjCIdStructType() or ASTContext::isObjCClassStructType()! We believe this change (and the follow-up cleanups) will pay dividends over time. Given the amount of code change, I do expect some fallout from this change (though it does pass all of the clang tests). If you notice any problems, please let us know asap! Thanks. llvm-svn: 75314
* Fix a problem that Eli noticed, and that Doug helped me fix.Anders Carlsson2009-07-101-2/+2
| | | | llvm-svn: 75265
* Update for IRBuilder API change.Owen Anderson2009-07-082-1/+2
| | | | llvm-svn: 75041
* Update for LLVM API change.Owen Anderson2009-07-087-183/+122
| | | | llvm-svn: 75028
* Implement code generation of ChooseExpr for aggregate types.Anders Carlsson2009-07-081-0/+5
| | | | llvm-svn: 75021
OpenPOWER on IntegriCloud