| #
355efbb2 |
| 17-Feb-2012 |
Douglas Gregor <[email protected]> |
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 <[email protected]> |
Start of IRGen for lambda conversion operators.
llvm-svn: 150649
|
| #
248f898c |
| 14-Feb-2012 |
Eli Friedman <[email protected]> |
Remove useless if statement.
llvm-svn: 150459
|
| #
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
|
| #
793bd55f |
| 08-Feb-2012 |
Benjamin Kramer <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
Fixed VLA code generation.
llvm-svn: 147933
|
| #
1cd8368e |
| 07-Jan-2012 |
Abramo Bagnara <[email protected]> |
Fixed TypeofExpr AST and code generation.
llvm-svn: 147730
|
| #
5fab0c9e |
| 28-Dec-2011 |
Richard Smith <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
Fix mismatched new[]/delete[].
llvm-svn: 142803
|
| #
4b4beb2f |
| 21-Oct-2011 |
Eric Christopher <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
CUDA: IR generation support for device stubs
llvm-svn: 141304
|
| #
76399eb2 |
| 27-Sep-2011 |
Benjamin Kramer <[email protected]> |
de-tmpify clang.
llvm-svn: 140637
|
| #
f0724e8e |
| 19-Sep-2011 |
Bill Wendling <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
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 <[email protected]> |
Convert IRBuilder::CreateGEP and IRBuilder::CreateInBoundsGEP to use ArrayRef.
llvm-svn: 135761
|
| #
2192fe50 |
| 18-Jul-2011 |
Chris Lattner <[email protected]> |
de-constify llvm::Type, patch by David Blaikie!
llvm-svn: 135370
|