| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
refactoring of Mac runtime (returns the same function for both, as the Mac runtimes currently only provide a single entry point for setting and getting struct properties, although this will presumably be fixed at some point).
llvm-svn: 122569
|
|
|
|
| |
llvm-svn: 118172
|
|
|
|
|
|
|
|
| |
more closely parallel the computation of linkage. This gets us to a state
much closer to what gcc emits, modulo bugs, which will undoubtedly arise in
abundance.
llvm-svn: 117147
|
|
|
|
|
|
| |
PR6056, //rdar: //8564463
llvm-svn: 116819
|
|
|
|
| |
llvm-svn: 116672
|
|
|
|
|
|
| |
rdar://problem/8535238
llvm-svn: 116663
|
|
|
|
|
|
|
|
| |
objc_exception_rethrow, so we don't...", since something is actually trying to
call this with the wrong signature (!). Unfortunately I don't understand the new
EH infrastructure well enough to fix it immediately.
llvm-svn: 116660
|
|
|
|
|
|
| |
generate unnecessary %al clear on x86_64.
llvm-svn: 116656
|
|
|
|
|
|
| |
ambiguous context.
llvm-svn: 116567
|
|
|
|
|
|
|
| |
both @catches and a @finally, because the second call to @objc_exception_try_enter
will clobber the exception slot. Fixes rdar://problem/8440970.
llvm-svn: 115575
|
|
|
|
|
|
| |
their 'isa' field scanned regardless.
llvm-svn: 113749
|
|
|
|
|
|
|
|
| |
information when imported variable is used
more than once. Originally though to be a bug in importing
block varibles. Fixes radar 8417746.
llvm-svn: 113675
|
|
|
|
|
|
|
|
| |
field of the block descriptor is GC'able (scanned)
as this what the runtime expects (one can send it
messages). Radar 8394947.
llvm-svn: 113454
|
|
|
|
|
|
|
|
| |
unnamed fields but later the code
assumes that it's always a bitfield. This can lead to a crash (reported at rdar://8368320).
llvm-svn: 113154
|
|
|
|
|
|
|
|
| |
using the same methods as used for normal structures.
- This fixes problems with reading past the end of the structure and with
handling straddled bit-field access.
llvm-svn: 112914
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ReferencedProtocols and AllReferencedProtocols. ReferencedProtocols
(and thus protocol_begin(), protocol_end()) now only contains the list of protocols that were directly referenced in
an @interface declaration. 'all_referenced_protocol_[begin,end]()' now returns the set of protocols that were referenced
in both the @interface and class extensions. The latter is needed for semantic analysis/codegen, while the former is
needed to maintain the lexical information of the original source.
Fixes <rdar://problem/8380046>.
llvm-svn: 112691
|
|
|
|
| |
llvm-svn: 111724
|
|
|
|
| |
llvm-svn: 111721
|
|
|
|
|
|
|
|
| |
over ivars for a varienty of puposes is now
consolidated into two small routines; DeepCollectObjCIvars
and ShallowCollectObjCIvars.
llvm-svn: 111679
|
|
|
|
| |
llvm-svn: 111365
|
|
|
|
| |
llvm-svn: 111314
|
|
|
|
| |
llvm-svn: 111091
|
|
|
|
|
|
|
|
|
| |
where we weren't accounting for the possibility that a @finally block might
have internal cleanups and therefore might write to the cleanup destination slot.
Fixes <rdar://problem/8293901>.
llvm-svn: 110760
|
|
|
|
|
|
| |
Strictly speaking, implementations don't go in headers but there's no law against it.
llvm-svn: 110567
|
|
|
|
|
|
|
| |
union type variables and their nesting inside other
aggregate types.
llvm-svn: 110448
|
|
|
|
|
|
| |
(objc gc and blocks in NeXt runtime).
llvm-svn: 110377
|
|
|
|
|
|
| |
(objc gc specific).
llvm-svn: 110340
|
|
|
|
| |
llvm-svn: 110339
|
|
|
|
| |
llvm-svn: 110290
|
|
|
|
| |
llvm-svn: 110287
|
|
|
|
| |
llvm-svn: 110239
|
|
|
|
|
|
| |
for objective-c/c++ blocks (NeXt runtime).
llvm-svn: 110213
|
|
|
|
|
|
|
|
|
|
|
| |
ObjC exceptions:
- don't enter a try for the catch blocks unless there's a finally
- put the setjmp buffer in the locals set for liveness reasons
- dump the sync object into an alloca in the locals set for liveness reasons
Some of this can go away if the backend starts to properly calculate liveness
in the presence of setjmp (which would also be a *much* stabler solution).
llvm-svn: 110188
|
|
|
|
|
|
|
|
|
| |
the magic of inline assembly. Essentially we use read and write hazards
on the set of local variables to force flushing locals to memory
immediately before any protected calls and to inhibit optimizing locals
across the setjmp->catch edge. Fixes rdar://problem/8160285
llvm-svn: 109960
|
|
|
|
|
|
|
| |
sections on", this change uncovered a possible linker bug which resulted in the
wrong messages getting dispatched. Backing this out while we investigate...
llvm-svn: 109817
|
|
|
|
|
|
| |
Diagnose attempts to do this under the GNU or fragile NeXT runtimes.
llvm-svn: 109298
|
|
|
|
|
|
|
| |
as well as some significant asymptotic inefficiencies with threading
multiple jumps through deep cleanups.
llvm-svn: 109274
|
|
|
|
|
|
| |
commits.
llvm-svn: 109000
|
|
|
|
|
|
| |
cleanup.
llvm-svn: 108997
|
|
|
|
|
|
|
| |
a big deal, except that I want to eliminate the shared-code EH cleanups
in preparation for a significant algorithmic fix.
llvm-svn: 108973
|
|
|
|
|
|
| |
Implements radar 8203301.
llvm-svn: 108917
|
|
|
|
|
|
| |
ObjC ABI version 2 this time.
llvm-svn: 108847
|
|
|
|
| |
llvm-svn: 108764
|
|
|
|
|
|
| |
sections. rdar://8207705
llvm-svn: 108749
|
|
|
|
|
|
|
|
| |
whether to use objc_msgSend_fpret; the choice is target dependent, not Obj-C ABI
dependent.
- <rdar://problem/8139758> arm objc _objc_msgSend_fpret bug
llvm-svn: 108379
|
|
|
|
|
|
|
| |
or a catch of a record type by value or reference. Also convert this to a
lazy cleanup.
llvm-svn: 108287
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
mostly in avoiding unnecessary work at compile time but also in producing more
sensible block orderings.
Move the destructor cleanups for local variables over to use lazy cleanups.
Eventually all cleanups will do this; for now we have some awkward code
duplication.
Tell IR generation just to never produce landing pads in -fno-exceptions.
This is a much more comprehensive solution to a problem which previously was
half-solved by checks in most cleanup-generation spots.
llvm-svn: 108270
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
self-host. Hopefully these results hold up on different platforms.
I tried to keep the GNU ObjC runtime happy, but it's hard for me to test.
Reimplement how clang generates IR for exceptions. Instead of creating new
invoke destinations which sequentially chain to the previous destination,
push a more semantic representation of *why* we need the cleanup/catch/filter
behavior, then collect that information into a single landing pad upon request.
Also reorganizes how normal cleanups (i.e. cleanups triggered by non-exceptional
control flow) are generated, since it's actually fairly closely tied in with
the former. Remove the need to track which cleanup scope a block is associated
with.
Document a lot of previously poorly-understood (by me, at least) behavior.
The new framework implements the Horrible Hack (tm), which requires every
landing pad to have a catch-all so that inlining will work. Clang no longer
requires the Horrible Hack just to make exceptions flow correctly within
a function, however. The HH is an unfortunate requirement of LLVM's EH IR.
llvm-svn: 107631
|
|
|
|
|
|
|
|
| |
have CGF create and make accessible standard int32,int64 and
intptr types. This fixes a ton of 80 column violations
introduced by LLVMContextification and cleans up stuff a lot.
llvm-svn: 106977
|
|
|
|
|
|
|
|
|
| |
types, updating callers of both isFloatingType() and
isRealFloatingType() accordingly. Caught at least one issue where we
allowed one to declare a vector of vectors (!), along with cleaning up
the standard-conversion logic for C++.
llvm-svn: 106595
|