| #
a729c62b |
| 17-Feb-2012 |
John McCall <[email protected]> |
Whether an argument is required (in contrast with being an optional argument passed through the variadic ellipsis) potentially affects how we need to lower it. Propagate this information down to the
Whether an argument is required (in contrast with being an optional argument passed through the variadic ellipsis) potentially affects how we need to lower it. Propagate this information down to the various getFunctionInfo(...) overloads on CodeGenTypes. Furthermore, rename those overloads to clarify their distinct purposes, and make sure we're calling the right one in the right place. This has a nice side-effect of making it easier to construct a function type, since the 'variadic' bit is no longer separable.
This shouldn't really change anything for our existing platforms, with one minor exception --- we should now call variadic ObjC methods with the ... in the "right place" (see the test case), which I guess matters for anyone running GNUStep on MIPS. Mostly it's just a substantial clean-up.
llvm-svn: 150788
show more ...
|
| #
c62bb391 |
| 15-Feb-2012 |
John McCall <[email protected]> |
Split reinterpret_casts of member pointers out from CK_BitCast; this is general goodness because representations of member pointers are not always equivalent across member pointer types on all ABIs (
Split reinterpret_casts of member pointers out from CK_BitCast; this is general goodness because representations of member pointers are not always equivalent across member pointer types on all ABIs (even though this isn't really standard-endorsed).
Take advantage of the new information to teach IR-generation how to do these reinterprets in constant initializers. Make sure this works when intermingled with hierarchy conversions (although this is not part of our motivating use case). Doing this in the constant-evaluator would probably have been better, but that would require a *lot* of extra structure in the representation of constant member pointers: you'd really have to track an arbitrary chain of hierarchy conversions and reinterpretations in order to get this right. Ultimately, this seems less complex. I also wasn't quite sure how to extend the constant evaluator to handle foldings that we don't actually want to treat as extended constant expressions.
llvm-svn: 150551
show more ...
|
| #
8001f746 |
| 14-Feb-2012 |
Benjamin Kramer <[email protected]> |
Use a simpler (and more efficient) pattern to pad vectors.
llvm-svn: 150475
|
| #
9fbeba0d |
| 11-Feb-2012 |
Eli Friedman <[email protected]> |
Basic support for referring to captured variables from lambdas. Some simple examples seem to work. Tests coming up soon.
llvm-svn: 150293
|
| #
c370a7ee |
| 09-Feb-2012 |
Eli Friedman <[email protected]> |
Refactor lambda IRGen so AggExprEmitter::VisitLambdaExpr does the right thing.
llvm-svn: 150146
|
| #
0cfd5bd6 |
| 09-Feb-2012 |
Eli Friedman <[email protected]> |
Basic IRGen for LambdaExprs with captures.
llvm-svn: 150141
|
| #
5bc17129 |
| 08-Feb-2012 |
Eli Friedman <[email protected]> |
A little bit of lambda IRGen.
llvm-svn: 150058
|
| #
ece0409a |
| 07-Feb-2012 |
Chris Lattner <[email protected]> |
simplify a bunch of code to use the well-known LLVM IR types computed by CodeGenModule.
llvm-svn: 149943
|
| #
2c1dd271 |
| 05-Feb-2012 |
Dylan Noblesmith <[email protected]> |
Basic: import SmallString<> into clang namespace
(I was going to fix the TODO about DenseMap too, but that would break self-host right now. See PR11922.)
llvm-svn: 149799
|
| #
595ba3a1 |
| 30-Jan-2012 |
Chris Lattner <[email protected]> |
Simplify code by using the new getAggregateElement method that got added recently. This also conveniently gets clang ready for a change about to land in mainline.
llvm-svn: 149225
|
| #
1425b455 |
| 26-Jan-2012 |
Peter Collingbourne <[email protected]> |
Use function pointers, rather than references, to pass Destroyers around, in the process cleaning up the various gcc/msvc compiler workarounds.
llvm-svn: 149036
|
| #
ccca11a3 |
| 25-Jan-2012 |
NAKAMURA Takumi <[email protected]> |
Fixup r148926, for -Asserts.
llvm-svn: 148943
|
| #
2d6b7b91 |
| 25-Jan-2012 |
Chris Lattner <[email protected]> |
reapply r148902:
"use the new ConstantVector::getSplat method where it makes sense."
Also simplify a bunch of code to use the Builder->getInt32 instead of doing it the hard and ugly way. Much more
reapply r148902:
"use the new ConstantVector::getSplat method where it makes sense."
Also simplify a bunch of code to use the Builder->getInt32 instead of doing it the hard and ugly way. Much more progress could be made here, but I don't plan to do it.
llvm-svn: 148926
show more ...
|
| #
5995489d |
| 25-Jan-2012 |
Eli Friedman <[email protected]> |
Fix a crash for an edge case of the GNU ?: extension.
llvm-svn: 148923
|
| #
5a25297c |
| 25-Jan-2012 |
Argyrios Kyrtzidis <[email protected]> |
Revert 148902 which was part of 148901 which was reverted in r148906.
Original log: use the new ConstantVector::getSplat method where it makes sense.
llvm-svn: 148907
|
| #
c558d7d1 |
| 25-Jan-2012 |
Chris Lattner <[email protected]> |
use the new ConstantVector::getSplat method where it makes sense.
llvm-svn: 148902
|
| #
5720e349 |
| 21-Jan-2012 |
Eli Friedman <[email protected]> |
Add an assertion that our use-marking actually covers all uses of a variable. The assertion doesn't cover quite as much as it should, but it's a good start, at least.
llvm-svn: 148625
|
| #
e4d798f0 |
| 20-Jan-2012 |
David Blaikie <[email protected]> |
More dead code removal (using -Wunreachable-code)
llvm-svn: 148577
|
| #
fa35df62 |
| 16-Jan-2012 |
David Chisnall <[email protected]> |
Some improvements to the handling of C11 atomic types:
- Add atomic-to/from-nonatomic cast types - Emit atomic operations for arithmetic on atomic types - Emit non-atomic stores for initialisation o
Some improvements to the handling of C11 atomic types:
- Add atomic-to/from-nonatomic cast types - Emit atomic operations for arithmetic on atomic types - Emit non-atomic stores for initialisation of atomic types, but atomic stores and loads for every other store / load - Add a __atomic_init() intrinsic which does a non-atomic store to an _Atomic() type. This is needed for the corresponding C11 stdatomic.h function. - Enables the relevant __has_feature() checks. The feature isn't 100% complete yet, but it's done enough that we want people testing it.
Still to do:
- Make the arithmetic operations on atomic types (e.g. Atomic(int) foo = 1; foo++;) use the correct LLVM intrinsic if one exists, not a loop with a cmpxchg. - Add a signal fence builtin - Properly set the fenv state in atomic operations on floating point values - Correctly handle things like _Atomic(_Complex double) which are too large for an atomic cmpxchg on some platforms (this requires working out what 'correctly' means in this context) - Fix the many remaining corner cases
llvm-svn: 148242
show more ...
|
| #
36bc4f41 |
| 04-Jan-2012 |
Chris Lattner <[email protected]> |
implement rdar://10639962 by keeping track of increased alignment information even in subscripting operations.
llvm-svn: 147557
|
| #
2415357a |
| 19-Dec-2011 |
Chris Lattner <[email protected]> |
Fix PR5279 - don't sliently drop alignment information on stores of types that have alignment less than the natural alignment of the type when it comes from a typedef.
llvm-svn: 146908
|
| #
a0544d6f |
| 03-Dec-2011 |
Eli Friedman <[email protected]> |
Switch LValue so that it exposes alignment in CharUnits. (No functional change.)
llvm-svn: 145753
|
| #
38cd36db |
| 03-Dec-2011 |
Eli Friedman <[email protected]> |
Switch the Alignment argument on AggValueSlot over to CharUnits, per John's review comment.
llvm-svn: 145741
|
| #
c1d85b93 |
| 03-Dec-2011 |
Eli Friedman <[email protected]> |
Track alignment in AggValueSlot. No functional change in this patch, but I'll be introducing uses of the specified alignment soon.
llvm-svn: 145736
|
| #
f37bd2f2 |
| 01-Dec-2011 |
Eli Friedman <[email protected]> |
Don't use a varargs convention for calls unprototyped functions where one of the arguments is an AVX vector.
llvm-svn: 145574
|