| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
| |
llvm-svn: 108807
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
reinterpret_casts (possibly indirectly via C-style/functional casts)
on values, e.g.,
int i;
reinterpret_cast<short&>(i);
The IR generated for this is essentially the same as for
*reinterpret_cast<short*>(&i).
Fixes PR6437, PR7593, and PR7344.
llvm-svn: 108294
|
| |
|
|
|
|
| |
suppressing copies of objects with trivial copy constructors.
llvm-svn: 107857
|
| |
|
|
|
|
| |
breaking bootstrap on Linux.
llvm-svn: 107837
|
| |
|
|
|
|
| |
newly-narrowed scope. No functionality change.
llvm-svn: 107828
|
| |
|
|
|
|
|
|
| |
would trigger an extra method call).
- While in the area, I also changed Clang to not emit an unnecessary load from
'x' in cases like 'y = (x = 1)'.
llvm-svn: 107210
|
| |
|
|
|
|
| |
I broke negate of FP values.
llvm-svn: 107019
|
| |
|
|
|
|
|
|
| |
have CGF create and make accessible standard int32,int64 and
intptr types. This fixes a ton of 80 column violations
introduced by LLVMContextification and cleans up stuff a lot.
llvm-svn: 106977
|
| |
|
|
| |
llvm-svn: 106962
|
| |
|
|
|
|
| |
of being in CGF. No functionality change.
llvm-svn: 106961
|
| |
|
|
| |
llvm-svn: 106958
|
| |
|
|
|
|
| |
code so we can use it from VisitUnaryMinus.
llvm-svn: 106957
|
| |
|
|
|
|
|
|
|
|
|
|
| |
As part of this, pull together trapv handling into the same enum.
This also add support for NSW multiplies.
This also makes PCH disagreement on overflow behavior silent, since it
really doesn't matter except for warnings and codegen (no macros get
defined etc).
llvm-svn: 106956
|
| |
|
|
|
|
| |
While I'm in there, adjust pointer to member adjustments as well.
llvm-svn: 106955
|
| |
|
|
| |
llvm-svn: 105670
|
| |
|
|
|
|
| |
shufflevector instruction. This means it can now be used for vector truncation and concatenation. This will be used for the ARM NEON implementation.
llvm-svn: 105589
|
| |
|
|
|
|
| |
first fix broke self-host.
llvm-svn: 104447
|
| |
|
|
| |
llvm-svn: 104390
|
| |
|
|
|
|
| |
setting null data member pointers correctly. Fixes PR7139.
llvm-svn: 104387
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
ObjCObjectType, which is basically just a pair of
one of {primitive-id, primitive-Class, user-defined @class}
with
a list of protocols.
An ObjCObjectPointerType is therefore just a pointer which always points to
one of these types (possibly sugared). ObjCInterfaceType is now just a kind
of ObjCObjectType which happens to not carry any protocols.
Alter a rather large number of use sites to use ObjCObjectType instead of
ObjCInterfaceType. Store an ObjCInterfaceType as a pointer on the decl rather
than hashing them in a FoldingSet. Remove some number of methods that are no
longer used, at least after this patch.
By simplifying ObjCObjectPointerType, we are now able to easily remove and apply
pointers to Objective-C types, which is crucial for a certain kind of ObjC++
metaprogramming common in WebKit.
llvm-svn: 103870
|
| |
|
|
|
|
| |
correctly.
llvm-svn: 103771
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Amadini.
This change introduces a new expression node type, OffsetOfExpr, that
describes __builtin_offsetof. Previously, __builtin_offsetof was
implemented using a unary operator whose subexpression involved
various synthesized array-subscript and member-reference expressions,
which was ugly and made it very hard to instantiate as a
template. OffsetOfExpr represents the AST more faithfully, with proper
type source information and a more compact representation.
OffsetOfExpr also has support for dependent __builtin_offsetof
expressions; it can be value-dependent, but will never be
type-dependent (like sizeof or alignof). This commit introduces
template instantiation for __builtin_offsetof as well.
There are two major caveats to this patch:
1) CodeGen cannot handle the case where __builtin_offsetof is not a
constant expression, so it produces an error. So, to avoid
regressing in C, we retain the old UnaryOperator-based
__builtin_offsetof implementation in C while using the shiny new
OffsetOfExpr implementation in C++. The old implementation can go
away once we have proper CodeGen support for this case, which we
expect won't cause much trouble in C++.
2) __builtin_offsetof doesn't work well with non-POD class types,
particularly when the designated field is found within a base
class. I will address this in a subsequent patch.
Fixes PR5880 and a bunch of assertions when building Boost.Python
tests.
llvm-svn: 102542
|
| |
|
|
|
|
| |
use the new version.
llvm-svn: 102274
|
| |
|
|
| |
llvm-svn: 102273
|
| |
|
|
|
|
| |
for derived-to-base casts.
llvm-svn: 102270
|
| |
|
|
|
|
|
| |
permitted in C++ but not in C. Fixes PR6900. Clang can now handle all
of Boost.Lambda's regression tests.
llvm-svn: 102170
|
| |
|
|
|
|
|
|
|
| |
- Unfortunately, this requires some horrible code in CGObjCMac which always
allocats a CGBitFieldInfo because we don't currently build a proper layout
for Objective-C classes. It needs to be cleaned up, but I don't want the
bit-field cleanups to be blocked on that.
llvm-svn: 100474
|
| |
|
|
|
|
|
| |
null checks, and make sure we elide null checks when accessing base class
members.
llvm-svn: 99963
|
| |
|
|
|
|
| |
Anton Yartsev!
llvm-svn: 99817
|
| |
|
|
|
|
| |
((id)cat)->isa. Fixes radar 7709015.
llvm-svn: 97672
|
| |
|
|
|
|
| |
isInteger, we now have isFloatTy and isIntegerTy. Requested by Chris!
llvm-svn: 96224
|
| |
|
|
|
|
| |
(Fixes radar 7609722).
llvm-svn: 95406
|
| |
|
|
|
|
| |
BeginConditionalBranch/EndConditionalBranch.
llvm-svn: 95308
|
| |
|
|
|
|
| |
CGExprConstant. Fixes PR5674.
llvm-svn: 95063
|
| |
|
|
| |
llvm-svn: 94938
|
| |
|
|
|
|
|
|
|
|
| |
"ASTContext::getTypeSize() / 8". Replace [u]int64_t variables with CharUnits
ones as appropriate.
Also rename RawType, fromRaw(), and getRaw() in CharUnits to QuantityType,
fromQuantity(), and getQuantity() for clarity.
llvm-svn: 93153
|
| |
|
|
|
|
| |
lvalue to poke, no functionality change.
llvm-svn: 93075
|
| |
|
|
| |
llvm-svn: 92439
|
| |
|
|
| |
llvm-svn: 92162
|
| |
|
|
|
|
|
| |
would have a higher respect for its own code. This is getting old, is this
warning really adding value?
llvm-svn: 91779
|
| |
|
|
|
|
| |
expressions.
llvm-svn: 91686
|
| |
|
|
| |
llvm-svn: 91498
|
| |
|
|
|
|
| |
instead of abort to improve codesize and codegen.
llvm-svn: 91374
|
| |
|
|
| |
llvm-svn: 91341
|
| |
|
|
|
|
| |
(fixes radar 7465023).
llvm-svn: 91171
|
| |
|
|
|
|
| |
for logical not.
llvm-svn: 91112
|
| |
|
|
| |
llvm-svn: 91108
|
| |
|
|
|
|
| |
this construct, but might as well for completeness.
llvm-svn: 91071
|
| |
|
|
|
|
| |
(fixes radar 7457534).
llvm-svn: 90995
|
| |
|
|
|
|
| |
was not needed (fixes radar 7453430).
llvm-svn: 90981
|