| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
|
|
|
|
| |
for-in statements; specifically, make sure to close over any
temporaries or cleanups it might require. In ARC, this has
implications for the lifetime of the collection, so emit it
with a retain and release it upon exit from the loop.
rdar://problem/9817306
llvm-svn: 136204
|
|
|
|
|
|
|
|
|
| |
destructors of abstract classes. It's undefined behavior to actually
call the destructor (e.g., via delete), but the presence of code that
calls this destructor doesn't make the program
ill-formed. Fixes <rdar://problem/9819242>.
llvm-svn: 136180
|
|
|
|
|
|
| |
SourceManager and FullSourceLoc.
llvm-svn: 135969
|
|
|
|
|
|
|
|
| |
FullSourceLoc::getInstantiationLoc to ...::getExpansionLoc. This is part
of the API and documentation update from 'instantiation' as the term for
macros to 'expansion'.
llvm-svn: 135914
|
|
|
|
| |
llvm-svn: 135910
|
|
|
|
|
|
| |
to avoid extraneous \n's.
llvm-svn: 135862
|
|
|
|
|
|
| |
Mulder!
llvm-svn: 135855
|
|
|
|
|
|
|
|
| |
LLVM.h imports
them into the clang namespace.
llvm-svn: 135852
|
|
|
|
|
|
| |
patch by Jon Mulder!
llvm-svn: 135851
|
|
|
|
|
|
|
|
|
| |
Introduce and document a new objc_returns_inner_pointer
attribute, and consume it by performing a retain+autorelease
on message receivers when they're not immediately loaded from
an object with precise lifetime.
llvm-svn: 135764
|
|
|
|
|
|
| |
ArrayRef.
llvm-svn: 135761
|
|
|
|
|
|
| |
Many thanks to Eli for reducing this great testcase.
llvm-svn: 135752
|
|
|
|
|
|
|
| |
their loaded values, although it still worth doing this for __weak
properties to get the autoreleased-return-value optimization.
llvm-svn: 135747
|
|
|
|
|
|
|
|
|
| |
This was previously not-const only because it has to lazily construct a chain
of ivars the first time it is called (and after the chain is invalidated).
In practice, all the clients were just const_casting their const Decls;
all those now-unnecessary const_casts have been removed.
llvm-svn: 135741
|
|
|
|
|
|
| |
ConstantExpr::getInBoundsGetElementPtr to use ArrayRef.
llvm-svn: 135673
|
|
|
|
| |
llvm-svn: 135585
|
|
|
|
| |
llvm-svn: 135577
|
|
|
|
|
|
|
| |
some common llvm types: stringref and smallvector. This cleans up the codebase
quite a bit.
llvm-svn: 135576
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
WKView.mm from WebKit
This is something of a hack, the problem is as follows:
1. we instantiate both copied of RetainPtr with the two different argument types
(an id and protocol-qualified id).
2. We refer to the ctor of one of the instantiations when introducing global "x",
this causes us to emit an llvm::Function for a prototype whose "this" has type
"RetainPtr<id<bork> >*".
3. We refer to the ctor of the other instantiation when introducing global "y",
however, because it *mangles to the same name as the other ctor* we just use
a bitcasted version of the llvm::Function we previously emitted.
4. We emit deferred declarations, causing us to emit the body of the ctor, however
the body we emit is for RetainPtr<id>, which expects its 'this' to have an IR
type of "RetainPtr<id>*".
Because of the mangling collision, we don't have this case, and explode.
This is really some sort of weird AST invariant violation or something, but hey
a bitcast makes the pain go away.
llvm-svn: 135572
|
|
|
|
|
|
| |
It doesn't matter in practice, but it is good to be tidy.
llvm-svn: 135571
|
|
|
|
|
|
|
| |
and ConvertTypeForMem are the same for pointers, it is best to just
use ConvertType. Thanks Eli!
llvm-svn: 135567
|
|
|
|
|
|
|
| |
decaying an array of incomplete type (which has type [0 x i8]*) to a
normal pointer (which has incompletetype*).
llvm-svn: 135565
|
|
|
|
| |
llvm-svn: 135469
|
|
|
|
| |
llvm-svn: 135456
|
|
|
|
| |
llvm-svn: 135437
|
|
|
|
|
|
|
|
| |
previously explicit non-default constructors were used.
Mostly mechanical with some manual reformatting.
llvm-svn: 135390
|
|
|
|
|
|
| |
Fixes PR10233!
llvm-svn: 135377
|
|
|
|
| |
llvm-svn: 135370
|
|
|
|
| |
llvm-svn: 135285
|
|
|
|
| |
llvm-svn: 135265
|
|
|
|
|
|
|
|
|
|
| |
is right --- shouldn't there be a TypeLoc in here somewhere? ---
but at least it doesn't have a redundant QualType and a broken
children() method.
Noticed this while doing things in serialization.
llvm-svn: 135257
|
|
|
|
|
|
|
| |
to prevent recursive compilation problems. This fixes a failure of CodeGen/decl.c
on x86-32 targets that don't fill in the coerce-to type.
llvm-svn: 135256
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
types. Fore xample, we used to lower:
struct bar { int a; };
struct foo {
void (*FP)(struct bar);
} G;
to:
%struct.foo = type { {}* }
since the function pointer would cause recursive translation of bar and
we didn't know if that would get us into trouble. We are now smart enough
to know that it is fine, so we get this type instead:
%struct.foo = type { void (i32)* }
Codegen still needs to be prepared for uncooperative types at any place,
which is why I let the maximally uncooperative code sit around for awhile to
help shake out the bugs.
llvm-svn: 135244
|
|
|
|
|
|
|
|
| |
to represent a fully-substituted non-type template parameter.
This should improve source fidelity, as well as being generically
useful for diagnostics and such.
llvm-svn: 135243
|
|
|
|
|
|
| |
function in LLVM does.
llvm-svn: 135155
|
|
|
|
|
|
| |
failures.
llvm-svn: 135091
|
|
|
|
| |
llvm-svn: 135083
|
|
|
|
| |
llvm-svn: 135054
|
|
|
|
|
|
| |
them, too.
llvm-svn: 135038
|
|
|
|
| |
llvm-svn: 135036
|
|
|
|
|
|
| |
partial destruction.
llvm-svn: 135033
|
|
|
|
|
|
|
| |
i32. They almost always end up this way in the end anyway, and if we get
lucky, this avoids generating some bitcasts.
llvm-svn: 135032
|
|
|
|
|
|
| |
like arguments. Thanks PR10337! :)
llvm-svn: 135030
|
|
|
|
| |
llvm-svn: 135029
|
|
|
|
|
|
|
| |
storage duration, then explicitly exempt ownership-qualified
types from it.
llvm-svn: 135028
|
|
|
|
|
|
| |
which implicitly makes it EH-safe as well.
llvm-svn: 135025
|
|
|
|
|
|
|
|
| |
the complete destructor and then invoke the global delete
operator. Previously, we would invoke the deleting destructor, which
calls the wrong delete operator. Fixes PR10341.
llvm-svn: 135021
|
|
|
|
| |
llvm-svn: 135004
|
|
|
|
|
|
| |
of flags. No functionality change.
llvm-svn: 134997
|
|
|
|
| |
llvm-svn: 134995
|