| Age | Commit message (Collapse) | Author |
|
llvm-svn: 124310
|
|
I'm separately committing this because it incidentally changes some
block orderings and minor IR issues, like using a phi instead of
an unnecessary alloca.
llvm-svn: 124277
|
|
llvm-svn: 124023
|
|
counterparts where char units are needed.
llvm-svn: 123805
|
|
-Wint-to-pointer-cast.
llvm-svn: 123719
|
|
reason this is limited to C++, and it's certainly not limited to temporaries.
llvm-svn: 120996
|
|
the LHS, or else the pointer might be invalid. This is kindof dumb, but
go ahead and make sure we're doing that for l-value scalar assignment,
which fixes a miscompile of obj-c++.dg/block-seq.mm.
Leave a FIXME for how to solve this problem for agg __blocks.
llvm-svn: 120992
|
|
Fix a bug in the emission of complex compound assignment l-values.
Introduce a method to emit an expression whose value isn't relevant.
Make that method evaluate its operand as an l-value if it is one.
Fixes our volatile compliance in C++.
llvm-svn: 120931
|
|
used in a constructor initializer list:
struct X {
X() : au_i1(123) {}
union {
int au_i1;
float au_f1;
};
};
clang will now deal with au_i1 explicitly as an IndirectFieldDecl.
llvm-svn: 120900
|
|
be required, and then fix up some missing loads on overloaded-operator
paths which that exposed.
llvm-svn: 120896
|
|
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
|
|
Also, move the l-value emission code into CGObjC.cpp and teach it, for
completeness, to store away self for a super send.
Also, inline the super cases for property gets and sets and make them
use the correct result type for implicit getter/setter calls.
llvm-svn: 120887
|
|
the l-value.
llvm-svn: 120884
|
|
ObjCPropertyRefExpr
into the latter.
llvm-svn: 120643
|
|
llvm-svn: 120555
|
|
llvm-svn: 120433
|
|
about the reliability of this yet.
llvm-svn: 120422
|
|
llvm-svn: 120153
|
|
llvm-svn: 120084
|
|
llvm-svn: 119814
|
|
types was not being generated for objc pointers.
// rdar://8681766.
llvm-svn: 119751
|
|
case based on CodeGen/volatile-1.c which tests the current C++
semantics, and note the many, many places we fall short of them.
llvm-svn: 119402
|
|
assignment to volatiles in C. This in effect reverts some of mjs's
work in and around r72572. Basically, the C++ standard is quite
clear, except that it lies about volatile behavior approximating
C's, whereas the C standard is almost actively misleading.
llvm-svn: 119344
|
|
llvm-svn: 119331
|
|
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
|
|
Fixes rdar://8644873 & http://llvm.org/PR8567.
llvm-svn: 118468
|
|
aggressive about the form we expect bools to be in. I don't really have
time to fix all the sources right now.
llvm-svn: 117486
|
|
llvm-svn: 117456
|
|
in IR gen, and use those to fix a correctness issue with bool atomic
intrinsics. rdar://problem/8461234
llvm-svn: 117403
|
|
llvm-svn: 117321
|
|
ambiguous context.
llvm-svn: 116567
|
|
This enables metadata generation by default, however the TBAA pass
in the optimizer is still disabled for now.
llvm-svn: 116536
|
|
'super' as receiver of property or a setter/getter
methods. //rdar: //8525788
llvm-svn: 116483
|
|
bit by me).
llvm-svn: 116122
|
|
with missing LHS. radar 8453812. Executable test is checked
into llvm test suite.
llvm-svn: 114457
|
|
getter expression.
Fixes // rdar://8437240
llvm-svn: 114299
|
|
helpful asserts behind.
llvm-svn: 114250
|
|
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
|
|
block-literal initializer expression causes IRgen to crash.
This patch fixes by saving it in StaticLocalDecl map
already used for such purposes. (radar 8390455).
llvm-svn: 113307
|
|
llvm-svn: 113129
|
|
value is used. This matches with non-block variable
use of bool type. (Fixes radar 8390062).
llvm-svn: 113027
|
|
type of 'i8' for the same for __block variables of
type bool. refixes radar 8382559.
llvm-svn: 113015
|
|
a c++ class object 'ivar'. Fixes radar 8366604.
llvm-svn: 112729
|
|
member-pointer refactoring: dereferencing a member data pointer.
llvm-svn: 112640
|
|
under the ARM ABI.
llvm-svn: 112588
|
|
to the new constants.
llvm-svn: 112047
|
|
That revision started classifying truly empty structs like "Y" and "X"
as being NoClass/NoClass and turning them into 'ignore'. The call code
turns around and allocates space for the ignored argument with
GetUndefRValue. The bug is that GetUndefRValue would return the address
as undef, instead of returning an object with a defined address but
undefined contents.
llvm-svn: 111794
|