| Commit message (Collapse) | Author | Age | Files | Lines | 
| | 
| 
| 
| 
| 
|  | 
them, too.
llvm-svn: 135038
 | 
| | 
| 
| 
| 
| 
|  | 
which implicitly makes it EH-safe as well.
llvm-svn: 135025
 | 
| | 
| 
| 
| 
| 
|  | 
and kill a lot of redundant code.
llvm-svn: 134988
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
conservative when converting a functiontype to IR when in a "pointer within
a struct" context.  This has the unfortunate sideeffect of compiling all 
function pointers inside of structs into "{}*" which, though correct, is
ugly.  This has the positive side effect of being correct, and it is pretty
straight-forward to improve on this.
llvm-svn: 134861
 | 
| | 
| 
| 
|  | 
llvm-svn: 134831
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
where we have an immediate need of a retained value.
As an exception, don't do this when the call is made as the immediate
operand of a __bridge retain.  This is more in the way of a workaround
than an actual guarantee, so it's acceptable to be brittle here.
rdar://problem/9504800
llvm-svn: 134605
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
structure to hold inferred information, then propagate each invididual
bit down to -cc1.  Separate the bits of "supports weak" and "has a native
ARC runtime";  make the latter a CodeGenOption.
The tool chain is still driving this decision, because it's the place that
has the required deployment target information on Darwin, but at least it's
better-factored now.
llvm-svn: 134453
 | 
| | 
| 
| 
|  | 
llvm-svn: 133861
 | 
| | 
| 
| 
| 
| 
|  | 
in fragile abi mode and some other cleanups. // rdar://8940528
llvm-svn: 133747
 | 
| | 
| 
| 
| 
| 
|  | 
in Darwin's fragile abi mode.  // rdar://8940528
llvm-svn: 133639
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
objects, so that we steal the retain count of a temporary __strong
pointer (zeroing out that temporary), eliding a retain/release
pair. Addresses <rdar://problem/9364932>.
llvm-svn: 133621
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
|  | 
retain/release the temporary object appropriately. Previously, we
would only perform the retain/release operations when the reference
would extend the lifetime of the temporary, but this does the wrong
thing across calls.
llvm-svn: 133620
 | 
| | 
| 
| 
|  | 
llvm-svn: 133312
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
qualifiers, so that an __unsafe_unretained-qualified type T in ARC code
will have the same mangling as T in non-ARC code, improving ABI
interoperability. This works now because we infer or require a
lifetime qualifier everywhere one can appear in an external
interface. Another part of <rdar://problem/9595486>.
llvm-svn: 133306
 | 
| | 
| 
| 
|  | 
llvm-svn: 133215
 | 
| | 
| 
| 
|  | 
llvm-svn: 133144
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.
Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.
llvm-svn: 133103
 | 
| | 
| 
| 
|  | 
llvm-svn: 132878
 | 
| | 
| 
| 
| 
| 
|  | 
// rdar://9566314
llvm-svn: 132791
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
with a type-dependent expression, infer the placeholder type
'Context.DependentTy' to indicate that this is just a
placeholder. Fixes PR9982 / <rdar://problem/9486685>.
llvm-svn: 132657
 | 
| | 
| 
| 
| 
| 
|  | 
creating aggregate stores in common cases.  This is more friendly to fast-isel.
llvm-svn: 131490
 | 
| | 
| 
| 
|  | 
llvm-svn: 131446
 | 
| | 
| 
| 
|  | 
llvm-svn: 131403
 | 
| | 
| 
| 
| 
| 
|  | 
131365 caused PR9927.
llvm-svn: 131401
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
Go through and expand the members of bases into the encoding string (and encode the VTable as well).
Unlike gcc which expands virtual bases as many times as they appear in the
hierarchy, clang will only expand them once at the end, to reflect the actual layout.
Note that there doesn't seem to be a way to indicate in the encoding that
packing/alignment of members is different that normal, in which case
the encoding will be out-of-sync with the real layout.
If the runtime switches to just consider the size of types without
taking into account alignment, we could easily make padding explicit in the
encoding (e.g. using arrays of chars). The encoding strings would be
longer then though.
Also encode a flexible array member as array of 0 size, like gcc, not as a pointer.
llvm-svn: 131365
 | 
| | 
| 
| 
| 
| 
| 
|  | 
blockScopeInfo's CapturesCXXThis field need get set as
well. // rdar://9362021. John M. please review.
llvm-svn: 130930
 | 
| | 
| 
| 
| 
| 
| 
|  | 
implement lhs's protocols. // rdar://9091389.
 
llvm-svn: 129142
 | 
| | 
| 
| 
| 
| 
|  | 
for prperty reference types. // rdar://9208606.
llvm-svn: 128551
 | 
| | 
| 
| 
| 
| 
| 
|  | 
conditioned on whether it has any destructible ivars, not on whether
it has any non-trivial class-object initializers.
llvm-svn: 128074
 | 
| | 
| 
| 
| 
| 
|  | 
// rdar://8604515.
llvm-svn: 126869
 | 
| | 
| 
| 
|  | 
llvm-svn: 126685
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
The prototype for objc_msgSend() is technically variadic - 
`id objc_msgSend(id, SEL, ...)`. 
But all method calls should use a prototype that matches the method, 
not the prototype for objc_msgSend itself().
// rdar://9048030
llvm-svn: 126678
 | 
| | 
| 
| 
|  | 
llvm-svn: 126599
 | 
| | 
| 
| 
| 
| 
| 
|  | 
types which are contravariance in argument types and covariance
in return types. // rdar://8979379.
llvm-svn: 125445
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
- BlockDeclRefExprs always store VarDecls
  - BDREs no longer store copy expressions
  - BlockDecls now store a list of captured variables, information about
    how they're captured, and a copy expression if necessary
    
With that in hand, change IR generation to use the captures data in       
blocks instead of walking the block independently.        
Additionally, optimize block layout by emitting fields in descending
alignment order, with a heuristic for filling in words when alignment
of the end of the block header is insufficient for the most aligned
field.
llvm-svn: 125005
 | 
| | 
| 
| 
|  | 
llvm-svn: 124210
 | 
| | 
| 
| 
| 
| 
| 
| 
|  | 
exception of explicit template instantiations, which have to be weak_odr.
This fixes PR6996.
llvm-svn: 124089
 | 
| | 
| 
| 
| 
| 
|  | 
assigns. // rdar://8761767 
llvm-svn: 123391
 | 
| | 
| 
| 
|  | 
llvm-svn: 123293
 | 
| | 
| 
| 
|  | 
llvm-svn: 123197
 | 
| | 
| 
| 
|  | 
llvm-svn: 121194
 | 
| | 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
| 
|  | 
not actually frequently used, because ImpCastExprToType only creates a node
if the types differ.  So explicitly create an ICE in the lvalue-to-rvalue
conversion code in DefaultFunctionArrayLvalueConversion() as well as several
other new places, and consistently deal with the consequences throughout the
compiler.
In addition, introduce a new cast kind for loading an ObjCProperty l-value,
and make sure we emit those nodes whenever an ObjCProperty l-value appears
that's not on the LHS of an assignment operator.
This breaks a couple of rewriter tests, which I've x-failed until future
development occurs on the rewriter.
Ted Kremenek kindly contributed the analyzer workarounds in this patch.
llvm-svn: 120890
 | 
| | 
| 
| 
| 
| 
| 
|  | 
types was not being generated for objc pointers.
// rdar://8681766.
llvm-svn: 119751
 | 
| | 
| 
| 
| 
| 
|  | 
out because there are still bugs left.
llvm-svn: 119722
 | 
| | 
| 
| 
| 
| 
|  | 
a test change, all for blocks. wip.
llvm-svn: 118745
 | 
| | 
| 
| 
| 
| 
|  | 
to match gcc's encoding. Fixes //rdar: // 8519948.
llvm-svn: 115980
 | 
| | 
| 
| 
| 
| 
| 
|  | 
into a temporary is elidable as well.
(Finishes up radar 8291337).
llvm-svn: 114845
 | 
| | 
| 
| 
| 
| 
| 
|  | 
for property reference expression (of c++ object type)
in the conditional expression. Fixes // rdar://8291337
llvm-svn: 114783
 | 
| | 
| 
| 
| 
| 
| 
|  | 
getter expression. 
Fixes // rdar://8437240
llvm-svn: 114299
 | 
| | 
| 
| 
| 
| 
|  | 
Fixes radar 8437253.
llvm-svn: 114207
 |