| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 76726
|
| |
|
|
|
|
|
| |
__attribute__((address_space(1))) struct {int arr[ 3 ]; } *p1;
... = p1->arr[2]; // load from address space 1
llvm-svn: 76717
|
| |
|
|
| |
llvm-svn: 76599
|
| |
|
|
| |
llvm-svn: 76534
|
| |
|
|
| |
llvm-svn: 76498
|
| |
|
|
| |
llvm-svn: 76493
|
| |
|
|
| |
llvm-svn: 76473
|
| |
|
|
| |
llvm-svn: 76365
|
| |
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 76362
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
| |
llvm-svn: 76339
|
| |
|
|
| |
llvm-svn: 76327
|
| |
|
|
| |
llvm-svn: 76321
|
| |
|
|
|
|
|
|
| |
llvm.used, just
populate CGM's list directly.
llvm-svn: 76266
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
| |
Type::getAsMemberPointerType(), Type::getAsTagType(), and Type::getAsRecordType() with their Type::getAs<XXX> equivalents.
llvm-svn: 76139
|
| |
|
|
|
|
| |
in 32bit abi.
llvm-svn: 76109
|
| |
|
|
| |
llvm-svn: 76099
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 76090
|
| |
|
|
|
|
|
| |
instead of doing it manually (which might end up getting auto-renamed),
fixing a FIXME. rdar://7065446
llvm-svn: 76079
|
| |
|
|
|
|
| |
Convert all clients to use the new predicate on Type.
llvm-svn: 76076
|
| |
|
|
|
|
| |
some target hooks.
llvm-svn: 75895
|
| |
|
|
| |
llvm-svn: 75869
|
| |
|
|
| |
llvm-svn: 75832
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 75705
|
| |
|
|
| |
llvm-svn: 75684
|
| |
|
|
|
|
| |
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-svn: 75647
|
| |
|
|
| |
llvm-svn: 75641
|
| |
|
|
|
|
|
| |
--- Reverse-merging r75614 into '.':
U lib/CodeGen/CGDebugInfo.cpp
llvm-svn: 75639
|
| |
|
|
|
|
| |
an incremental patch
llvm-svn: 75622
|
| |
|
|
| |
llvm-svn: 75614
|
| |
|
|
| |
llvm-svn: 75589
|
| |
|
|
|
|
|
|
|
| |
- 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
|
| |
|
|
| |
llvm-svn: 75569
|
| |
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 75473
|
| |
|
|
| |
llvm-svn: 75471
|
| |
|
|
| |
llvm-svn: 75446
|
| |
|
|
|
|
|
| |
- Previous code was based on a misunderstanding (on my part) of the type
representation.
llvm-svn: 75385
|
| |
|
|
|
|
| |
- This was a latent bug exposed by the recent objc type changes.
llvm-svn: 75383
|
| |
|
|
| |
llvm-svn: 75325
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 75265
|
| |
|
|
| |
llvm-svn: 75041
|
| |
|
|
| |
llvm-svn: 75028
|
| |
|
|
| |
llvm-svn: 75021
|