| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
might be queried in places where we absolutely require a valid
location (e.g., for template instantiation). Fixes some major
brokenness in the use of __is_convertible_to.
llvm-svn: 124465
|
| |
|
|
|
|
| |
ObjCInterfaceType.
llvm-svn: 124158
|
| |
|
|
|
|
|
| |
reuse it for BlockDeclRefExpr. Do so, fixing the dependence calculate
for BlockDeclRefExpr.
llvm-svn: 123851
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
together. In particular:
- Handle the use of captured parameter pack names within blocks
(BlockDeclRefExpr understands parameter packs now)
- Handle the declaration and expansion of parameter packs within a block's
parameter list, e.g., ^(Args ...args) { ... })
- Handle instantiation of blocks where the return type was not
explicitly specified. (unrelated, but necessary for my tests).
Together, these fixes should make blocks and variadic templates work
reasonably well together. Note that BlockDeclRefExpr is still broken
w.r.t. its computation of type and value dependence, which will still
cause problems for blocks in templates.
llvm-svn: 123849
|
| |
|
|
|
|
| |
thousand other things which were (generally inadvertantly) relying on that.
llvm-svn: 123814
|
| |
|
|
|
|
|
| |
and mark the fields they use as mutable. This allows us to remove a few
const_casts.
llvm-svn: 123314
|
| |
|
|
|
|
|
|
| |
parameter packs, along with ParmVarDecl::isParameterPack(), which
looks for function parameter packs. Use these routines to fix some
obvious FIXMEs.
llvm-svn: 122904
|
| |
|
|
|
|
|
|
|
|
|
| |
(transforming each in turn) into calls into one central routine
(TransformExprs) that transforms a list of expressions. This
refactoring is preparatory work for pack expansions whose in an
expression-list.
No functionality change.
llvm-svn: 122761
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
packs, e.g.,
template<typename T, unsigned ...Dims> struct multi_array;
along with semantic analysis support for finding unexpanded non-type
template parameter packs in types, expressions, and so on.
Template instantiation involving non-type template parameter packs
probably doesn't work yet. That'll come soon.
llvm-svn: 122527
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
whether the expression contains an unexpanded parameter pack, in the
same vein as the changes to the Type hierarchy. Compute this bit
within all of the Expr subclasses.
This change required a bunch of reshuffling of dependency
calculations, mainly to consolidate them inside the constructors and
to fuse multiple loops that iterate over arguments to determine type
dependence, value dependence, and (now) containment of unexpanded
parameter packs.
Again, testing is painfully sparse, because all of the diagnostics
will change and it is more important to test the to-be-written visitor
that collects unexpanded parameter packs.
llvm-svn: 121831
|
| |
|
|
|
|
| |
receiver.
llvm-svn: 121517
|
| |
|
|
| |
llvm-svn: 121516
|
| |
|
|
|
|
| |
BinaryTypeTraitExpr.
llvm-svn: 121298
|
| |
|
|
|
|
| |
reason this is limited to C++, and it's certainly not limited to temporaries.
llvm-svn: 120996
|
| |
|
|
|
|
| |
Abramo noticed this.
llvm-svn: 120898
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
| |
ObjCPropertyRefExpr
into the latter.
llvm-svn: 120643
|
| |
|
|
| |
llvm-svn: 120555
|
| |
|
|
| |
llvm-svn: 120433
|
| |
|
|
|
|
| |
about the reliability of this yet.
llvm-svn: 120422
|
| |
|
|
|
|
| |
object. Fixes PR8683.
llvm-svn: 120247
|
| |
|
|
| |
llvm-svn: 120084
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
store it on the expression node. Also store an "object kind",
which distinguishes ordinary "addressed" l-values (like
variable references and pointer dereferences) and bitfield,
@property, and vector-component l-values.
Currently we're not using these for much, but I aim to switch
pretty much everything calculating l-valueness over to them.
For now they shouldn't necessarily be trusted.
llvm-svn: 119685
|
| |
|
|
|
|
|
|
| |
no longer depends on Preprocessor, so we can move it out of Sema into
a nice new StringLiteral::getLocationOfByte method that can be used by
any AST client.
llvm-svn: 119481
|
| |
|
|
| |
llvm-svn: 119331
|
| |
|
|
|
|
|
| |
certain internal type-checking procedures as well as for representing
certain implicitly-generated operations. Uses to follow.
llvm-svn: 119289
|
| |
|
|
| |
llvm-svn: 119138
|
| |
|
|
|
|
|
|
|
|
| |
implicit conversions; the last batch was specific to promotions.
I think this is the full set we need. I do think dividing the cast
kinds into floating and integral is probably a good idea.
Annotate a *lot* more C casts with useful cast kinds.
llvm-svn: 119036
|
| |
|
|
|
|
| |
between complex types.
llvm-svn: 118994
|
| |
|
|
| |
llvm-svn: 118966
|
| |
|
|
|
|
|
|
| |
'(' and ')'. This can happen
in the case of transparent unions.
llvm-svn: 118472
|
| |
|
|
|
|
|
|
| |
calling it.
Also avoids IRGen crashes due to accepting invalid code.
llvm-svn: 117943
|
| |
|
|
|
|
| |
As a bonus, avoids a crash on the IRGen side due to accepting invalid code.
llvm-svn: 117842
|
| |
|
|
|
|
| |
PR8423
llvm-svn: 117775
|
| |
|
|
|
|
|
|
|
| |
There's probably still significant padding waste on x86-64 UNIXen, but
the difference in 32-bit compiles should be significant.
There are a lot of Expr nodes left that could lose a word this way.
llvm-svn: 117359
|
| |
|
|
| |
llvm-svn: 116569
|
| |
|
|
|
|
|
| |
'super' as receiver of property or a setter/getter
methods. //rdar: //8525788
llvm-svn: 116483
|
| |
|
|
|
|
|
| |
passed to nonnull attributed functions. Implements radar
6857843.
llvm-svn: 114917
|
| |
|
|
|
|
|
| |
into a temporary is elidable as well.
(Finishes up radar 8291337).
llvm-svn: 114845
|
| |
|
|
| |
llvm-svn: 114820
|
| |
|
|
| |
llvm-svn: 114314
|
| |
|
|
|
|
|
| |
derive from temporaries of the same type. Black-list member expressions
as well.
llvm-svn: 114071
|
| |
|
|
| |
llvm-svn: 114019
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
slot. The easiest way to do that was to bundle up the information
we care about for aggregate slots into a new structure which demands
that its creators at least consider the question.
I could probably be convinced that the ObjC 'needs GC' bit should
be rolled into this structure.
Implement generalized copy elision. The main obstacle here is that
IR-generation must be much more careful about making sure that exactly
llvm-svn: 113962
|
| |
|
|
| |
llvm-svn: 113664
|
| |
|
|
| |
llvm-svn: 113650
|
| |
|
|
| |
llvm-svn: 113624
|
| |
|
|
|
|
| |
rules to expressions.
llvm-svn: 113621
|
| |
|
|
| |
llvm-svn: 113620
|
| |
|
|
|
|
|
|
|
|
|
| |
For large floats/integers, APFloat/APInt will allocate memory from the heap to represent these numbers.
Unfortunately, when we use a BumpPtrAllocator to allocate IntegerLiteral/FloatingLiteral nodes the memory associated with
the APFloat/APInt values will never get freed.
I introduce the class 'APNumericStorage' which uses ASTContext's allocator for memory allocation and is used internally by FloatingLiteral/IntegerLiteral.
Fixes rdar://7637185
llvm-svn: 112361
|