|  | Commit message (Collapse) | Author | Age | Files | Lines | 
|---|
| ... |  | 
| | 
| 
| 
| 
| 
| | Patch by Craig Topper and Sundeep!
llvm-svn: 136856 | 
| | 
| 
| 
| 
| 
| | own, incorrectly, for releasing objects at the end of a full-expression.
llvm-svn: 136823 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | A homogeneous aggregate is an aggregate data structure where after flattening
any nesting there are 1 to 4 elements of the same base type that is either a
float, double, or Neon vector.  All Neon vectors of the same size, either 64
or 128 bits, are treated as equivalent for this purpose.  When using the
AAPCS-VFP ABI, check for homogeneous aggregates and pass them as arguments by
expanding them into a sequence of their base types.  This requires extending
the existing support for expanded arguments to handle not only structs, but
also constant arrays and complex types.
llvm-svn: 136767 | 
| | 
| 
| 
| 
| 
| 
| | function, be sure to drop parameter attributes when dropping their
associated arguments.  Patch by Aaron Landwehr!
llvm-svn: 136753 | 
| | 
| 
| 
| 
| 
| | Patch by Jim (Ningjie) Chen.
llvm-svn: 136734 | 
| | 
| 
| 
| | llvm-svn: 136728 | 
| | 
| 
| 
| 
| 
| | actually works.
llvm-svn: 136703 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | This reverts commit 67d097e1232b7d66f58989c16a45b8a11721f76e.
We found a miscompile with ARM byval, which is still being investigated.
In the meantime, this works around the problem by disabling ARM byval.
Conflicts:
	lib/CodeGen/TargetInfo.cpp
llvm-svn: 136662 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| | without bailing out when va_arg is an aggregate expression. However, 
alignment checking needs to be added in isSafeToEliminateVarargsCast in
InstCombineCalls.cpp in order to produce correct mips code (see link below).
http://lists.cs.uiuc.edu/pipermail/llvmdev/2011-July/042047.html
llvm-svn: 136647 | 
| | 
| 
| 
| | llvm-svn: 136630 | 
| | 
| 
| 
| 
| 
| | runtime)
llvm-svn: 136628 | 
| | 
| 
| 
| | llvm-svn: 136461 | 
| | 
| 
| 
| 
| 
| 
| | instruction is tied to an output operand which is a pointer, and
the input operand is narrower than the output operand.
llvm-svn: 136438 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | __block variables where the act of initialization/assignment
itself causes the __block variable to be copied to the heap
because the variable is of block type and is being assigned
a block literal which captures the variable.
rdar://problem/9814099
llvm-svn: 136337 | 
| | 
| 
| 
| 
| 
| 
| | supposed to be a full-expression;  make it so.  In ARC, make sure
we retain the lock for the entire protected block. 
llvm-svn: 136271 | 
| | 
| 
| 
| | llvm-svn: 136254 | 
| | 
| 
| 
| 
| 
| | crashing.  Should fix regression on g++.dg/init/delete1.C.
llvm-svn: 136241 | 
| | 
| 
| 
| | llvm-svn: 136210 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| | 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 |