#
355efbb2 |
| 17-Feb-2012 |
Douglas Gregor <dgregor@apple.com> |
Rework the Sema/AST/IRgen dance for the lambda closure type's conversion to function pointer. Rather than having IRgen synthesize the body of this function, we instead introduce a static member funct
Rework the Sema/AST/IRgen dance for the lambda closure type's conversion to function pointer. Rather than having IRgen synthesize the body of this function, we instead introduce a static member function "__invoke" with the same signature as the lambda's operator() in the AST. Sema then generates a body for the conversion to function pointer which simply returns the address of __invoke. This approach makes it easier to evaluate a call to the conversion function as a constant, makes the linkage of the __invoke function follow the normal rules for member functions, and may make life easier down the road if we ever want to constexpr'ify some of lambdas.
Note that IR generation is responsible for filling in the body of __invoke (Sema just adds a dummy body), because the body can't generally be expressed in C++.
Eli, please review!
llvm-svn: 150783
show more ...
|
#
5a6d507d |
| 16-Feb-2012 |
Eli Friedman <eli.friedman@gmail.com> |
Start of IRGen for lambda conversion operators.
llvm-svn: 150649
|
#
248f898c |
| 14-Feb-2012 |
Eli Friedman <eli.friedman@gmail.com> |
Remove useless if statement.
llvm-svn: 150459
|
#
9fbeba0d |
| 11-Feb-2012 |
Eli Friedman <eli.friedman@gmail.com> |
Basic support for referring to captured variables from lambdas. Some simple examples seem to work. Tests coming up soon.
llvm-svn: 150293
|
#
793bd55f |
| 08-Feb-2012 |
Benjamin Kramer <benny.kra@googlemail.com> |
CodeGen: Move EHPersonality from CGException.h into the cpp file, it has no other users.
While at it make it value-initializable to get rid of static ctors.
llvm-svn: 150070
|
#
ece0409a |
| 07-Feb-2012 |
Chris Lattner <sabre@nondot.org> |
simplify a bunch of code to use the well-known LLVM IR types computed by CodeGenModule.
llvm-svn: 149943
|
#
fa95ed40 |
| 11-Jan-2012 |
Abramo Bagnara <abramo.bagnara@gmail.com> |
Fixed VLA code generation.
llvm-svn: 147933
|
#
1cd8368e |
| 07-Jan-2012 |
Abramo Bagnara <abramo.bagnara@gmail.com> |
Fixed TypeofExpr AST and code generation.
llvm-svn: 147730
|
#
5fab0c9e |
| 28-Dec-2011 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Small refactoring and simplification of constant evaluation and some of its clients. No functionality change.
llvm-svn: 147318
|
Revision tags: llvmorg-3.0.0, llvmorg-3.0.0-rc4 |
|
#
08ef4660 |
| 10-Nov-2011 |
John McCall <rjmccall@apple.com> |
Enter the cleanups for a block outside the enclosing full-expression. Naturally they're inactive before we enter the block literal expression. This restores the intended behavior that blocks belong
Enter the cleanups for a block outside the enclosing full-expression. Naturally they're inactive before we enter the block literal expression. This restores the intended behavior that blocks belong to their enclosing scope.
There's a useful -O0 / compile-time optimization that we're missing here with activating cleanups following straight-line code from their inactive beginnings.
llvm-svn: 144268
show more ...
|
Revision tags: llvmorg-3.0.0-rc3, llvmorg-3.0.0-rc2 |
|
#
7b553f1b |
| 29-Oct-2011 |
Richard Smith <richard-llvm@metafoo.co.uk> |
Rename Expr::Evaluate to Expr::EvaluateAsRValue to make it clear that it will implicitly perform an lvalue-to-rvalue conversion if used on an lvalue expression. Also improve the documentation of Expr
Rename Expr::Evaluate to Expr::EvaluateAsRValue to make it clear that it will implicitly perform an lvalue-to-rvalue conversion if used on an lvalue expression. Also improve the documentation of Expr::Evaluate* to indicate which of them will accept expressions with side-effects.
llvm-svn: 143263
show more ...
|
#
1e93c6a8 |
| 24-Oct-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
Fix mismatched new[]/delete[].
llvm-svn: 142803
|
#
4b4beb2f |
| 21-Oct-2011 |
Eric Christopher <echristo@apple.com> |
Fix PR11073 by adding the argument type information to the decl we construct for the function type. Update a testcase accordingly.
Patch initially by Anders Waldenborg!
llvm-svn: 142700
|
Revision tags: llvmorg-3.0.0-rc1 |
|
#
7cdf9486 |
| 13-Oct-2011 |
Eric Christopher <echristo@apple.com> |
Recommit:
Start handling debug line and scope information better:
Migrate most of the location setting within the larger API in CGDebugInfo and update a lot of callers. Remove the e
Recommit:
Start handling debug line and scope information better:
Migrate most of the location setting within the larger API in CGDebugInfo and update a lot of callers. Remove the existing file/scope change machinery in UpdateLineDirectiveRegion and replace it with DILexicalBlockFile usage.
Finishes off the rest of rdar://10246360
after fixing a few bugs that were exposed in gdb testsuite testing.
llvm-svn: 141893
show more ...
|
#
0dfb8895 |
| 06-Oct-2011 |
Eli Friedman <eli.friedman@gmail.com> |
Support for C1x _Atomic specifier (see testcase). This is primarily being committed at the moment to help support C++0x <atomic>, but it should be a solid base for implementing the full specificatio
Support for C1x _Atomic specifier (see testcase). This is primarily being committed at the moment to help support C++0x <atomic>, but it should be a solid base for implementing the full specification of C1x _Atomic.
Thanks to Jeffrey Yasskin for the thorough review!
llvm-svn: 141330
show more ...
|
#
fa4d6033 |
| 06-Oct-2011 |
Peter Collingbourne <peter@pcc.me.uk> |
CUDA: IR generation support for device stubs
llvm-svn: 141304
|
#
76399eb2 |
| 27-Sep-2011 |
Benjamin Kramer <benny.kra@googlemail.com> |
de-tmpify clang.
llvm-svn: 140637
|
#
f0724e8e |
| 19-Sep-2011 |
Bill Wendling <isanbard@gmail.com> |
Throw the switch to convert clang to the new exception handling model!
This model uses the 'landingpad' instruction, which is pinned to the top of the landing pad. (A landing pad is defined as the d
Throw the switch to convert clang to the new exception handling model!
This model uses the 'landingpad' instruction, which is pinned to the top of the landing pad. (A landing pad is defined as the destination of the unwind branch of an invoke instruction.) All of the information needed to generate the correct exception handling metadata during code generation is encoded into the landingpad instruction.
The new 'resume' instruction takes the place of the llvm.eh.resume intrinsic call. It's lowered in much the same way as the intrinsic is.
llvm-svn: 140049
show more ...
|
#
5a6b6987 |
| 09-Sep-2011 |
Julien Lerouge <jlerouge@apple.com> |
Bring llvm.annotation* intrinsics support back to where it was in llvm-gcc: can annotate global, local variables, struct fields, or arbitrary statements (using the __builtin_annotation), rdar://80374
Bring llvm.annotation* intrinsics support back to where it was in llvm-gcc: can annotate global, local variables, struct fields, or arbitrary statements (using the __builtin_annotation), rdar://8037476.
llvm-svn: 139423
show more ...
|
#
65c5c913 |
| 09-Sep-2011 |
Eric Christopher <echristo@apple.com> |
Carry the debug information from single exit unified return block along with the new insert point.
Fixes PR10829
llvm-svn: 139416
|
#
e8bbc121 |
| 02-Sep-2011 |
Douglas Gregor <dgregor@apple.com> |
Extend the ASTContext constructor to delay the initialization of builtin types (When requested). This is another step toward making ASTUnit build the ASTContext as needed when loading an AST file, ra
Extend the ASTContext constructor to delay the initialization of builtin types (When requested). This is another step toward making ASTUnit build the ASTContext as needed when loading an AST file, rather than doing so after the fact. No actual functionality change (yet).
llvm-svn: 138985
show more ...
|
#
8e4c74bb |
| 11-Aug-2011 |
John McCall <rjmccall@apple.com> |
Simplify EH control flow by observing that EH scopes form a simple hierarchy of delegation, and that EH selector values are meaningful function-wide (good thing, too, or inlining wouldn't work). 2,3d
Simplify EH control flow by observing that EH scopes form a simple hierarchy of delegation, and that EH selector values are meaningful function-wide (good thing, too, or inlining wouldn't work). 2,3d 1a hierarchy of delegation and that EH selector values have the same meaning everywhere in the function instead of being meaningful only in the context of a specific selector.
This removes the need for routing edges through EH cleanups, since a cleanup simply always branches to its enclosing scope.
llvm-svn: 137293
show more ...
|
#
0e62c1cc |
| 23-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports them into the clang namespace.
llvm-svn: 135852
|
#
040dd82f |
| 22-Jul-2011 |
Jay Foad <jay.foad@gmail.com> |
Convert IRBuilder::CreateGEP and IRBuilder::CreateInBoundsGEP to use ArrayRef.
llvm-svn: 135761
|
#
2192fe50 |
| 18-Jul-2011 |
Chris Lattner <sabre@nondot.org> |
de-constify llvm::Type, patch by David Blaikie!
llvm-svn: 135370
|