llvm-project/clang/lib/Sema
Richard Smith 736a947bdc Reapply r183721, reverted in r183776, with a fix for a bug in the former (we
were lacking ExprWithCleanups nodes in some cases where the new approach to
lifetime extension needed them).

Original commit message:

Rework IR emission for lifetime-extended temporaries. Instead of trying to walk
into the expression and dig out a single lifetime-extended entity and manually
pull its cleanup outside the expression, instead keep a list of the cleanups
which we'll need to emit when we get to the end of the full-expression. Also
emit those cleanups early, as EH-only cleanups, to cover the case that the
full-expression does not terminate normally. This allows IR generation to
properly model temporary lifetime when multiple temporaries are extended by the
same declaration.

We have a pre-existing bug where an exception thrown from a temporary's
destructor does not clean up lifetime-extended temporaries created in the same
expression and extended to automatic storage duration; that is not fixed by
this patch.

llvm-svn: 183859
2013-06-12 20:42:33 +00:00
..
AnalysisBasedWarnings.cpp Thread safety analysis: turn on checking within lock and unlock functions. 2013-04-08 20:11:11 +00:00
AttributeList.cpp Basic support for Microsoft property declarations and 2013-04-16 07:28:30 +00:00
CMakeLists.txt Re-commit r183466 with a fix to make the TypeLoc casting machinery work 2013-06-07 20:31:48 +00:00
CodeCompleteConsumer.cpp Allow the computation of the base priority for a declaration code completion result to consider the completion context 2013-01-31 04:52:16 +00:00
DeclSpec.cpp Don't mark a type specifier as "owned" if there is no declaration to own. 2013-05-14 23:22:32 +00:00
DelayedDiagnostic.cpp objective-C: when diagnosing deprecated/unavailable usage of 2012-09-21 20:46:37 +00:00
IdentifierResolver.cpp [Modules] Cope better with top-level declarations loaded after being declared in the current translation unit <rdar://problem/13189985>. 2013-02-11 18:16:18 +00:00
JumpDiagnostics.cpp Fix a couple of bugs where jump diagnostics would not notice that a variable 2013-06-03 01:05:37 +00:00
Makefile
MultiplexExternalSemaSource.cpp Simplify FindExternalVisibleDeclsByName by making it return a bool indicating 2013-02-07 03:30:24 +00:00
Scope.cpp Reapply r151638 and r151641. 2012-02-29 10:24:19 +00:00
ScopeInfo.cpp Sema for Captured Statements 2013-04-16 19:37:38 +00:00
Sema.cpp Bound member function diagnostic - suggest no-args calls and note overload candidates 2013-06-04 00:28:46 +00:00
SemaAccess.cpp Test commit 2013-05-07 16:56:03 +00:00
SemaAttr.cpp Adding support for MSVC #pragma detect_mismatch functionality by emitting a FAILIFMISMATCH linker command into the object file. 2013-06-04 02:07:14 +00:00
SemaCXXScopeSpec.cpp Remove some no-op static_casts. 2013-03-26 00:54:11 +00:00
SemaCast.cpp Disallow reinterpret_cast from pointer to bool on Windows 2013-06-06 09:16:36 +00:00
SemaChecking.cpp Revert "Properly consider the range of enum for range comparisons in C mode" 2013-06-07 22:07:20 +00:00
SemaCodeComplete.cpp [libclang] For "@import .." code-completion results, associate a CXCursor_ModuleImportDecl cursor instead of CXCursor_NotImplemented. 2013-05-29 18:50:15 +00:00
SemaConsumer.cpp Unweaken vtables as per http://llvm.org/docs/CodingStandards.html#ll_virtual_anch 2011-12-20 02:48:34 +00:00
SemaDecl.cpp Remove some unicode that sneaked in. 2013-06-11 06:19:45 +00:00
SemaDeclAttr.cpp Adding in parsing and the start of semantic support for __sptr and __uptr pointer type qualifiers. This patch also fixes the correlated __ptr32 and __ptr64 pointer qualifiers so that they are truly type attributes instead of declaration attributes. 2013-05-22 23:25:32 +00:00
SemaDeclCXX.cpp Reapply r183721, reverted in r183776, with a fix for a bug in the former (we 2013-06-12 20:42:33 +00:00
SemaDeclObjC.cpp Don't create a StringRef from a temporary string. 2013-06-06 02:22:29 +00:00
SemaExceptionSpec.cpp Use FPT::getArgTypes() instead of manually building ArrayRefs 2013-06-10 20:51:09 +00:00
SemaExpr.cpp Implement DR61: Address of ambiguous bound methods should be disallowed 2013-06-11 03:56:29 +00:00
SemaExprCXX.cpp Allow paren casted throw statements inside of ternary expressions 2013-06-02 08:40:42 +00:00
SemaExprMember.cpp address some comments on r183474: 2013-06-07 22:29:12 +00:00
SemaExprObjC.cpp address some comments on r183474: 2013-06-07 22:29:12 +00:00
SemaFixItUtils.cpp s/CPlusPlus0x/CPlusPlus11/g 2013-01-02 11:42:31 +00:00
SemaInit.cpp Reapply r183721, reverted in r183776, with a fix for a bug in the former (we 2013-06-12 20:42:33 +00:00
SemaLambda.cpp Use FPT::getArgTypes() instead of manually building ArrayRefs 2013-06-10 20:51:09 +00:00
SemaLookup.cpp Provide operator<< for stream output of DeclarationNames 2013-05-14 21:04:00 +00:00
SemaObjCProperty.cpp Objective-C: Another case of issuing warning about misusing 2013-06-07 20:26:51 +00:00
SemaOpenMP.cpp OpenMP threadprivate with qualified names. 2013-05-13 04:18:18 +00:00
SemaOverload.cpp Support for contextual conversion tweaks (N3323) was added, as Revision 183637 2013-06-10 08:25:58 +00:00
SemaPseudoObject.cpp address some comments on r183474: 2013-06-07 22:29:12 +00:00
SemaStmt.cpp Fix a crash with -Wassign-enum, where we didn't adjust the APInt type of the 2013-06-06 13:48:00 +00:00
SemaStmtAsm.cpp [ms-inline asm] Don't diagnose an empty lookup for inline assmebly. This happen 2013-05-24 18:32:55 +00:00
SemaStmtAttr.cpp PR15300: Support C++11 attributes on base-specifiers. We don't support any such 2013-02-19 23:47:15 +00:00
SemaTemplate.cpp Use FPT::getArgTypes() instead of manually building ArrayRefs 2013-06-10 20:51:09 +00:00
SemaTemplateDeduction.cpp Implement most of N3638 (return type deduction for normal functions). 2013-05-04 07:00:32 +00:00
SemaTemplateInstantiate.cpp PR16243: Use CXXThisOverride during template instantiation, and fix up the 2013-06-07 02:33:37 +00:00
SemaTemplateInstantiateDecl.cpp Use FPT::getArgTypes() instead of manually building ArrayRefs 2013-06-10 20:51:09 +00:00
SemaTemplateVariadic.cpp Re-commit r183466 with a fix to make the TypeLoc casting machinery work 2013-06-07 20:31:48 +00:00
SemaType.cpp Use FPT::getArgTypes() instead of manually building ArrayRefs 2013-06-10 20:51:09 +00:00
TargetAttributesSema.cpp Warn on and drop dllimport attrs from variable definitions 2013-05-20 21:53:29 +00:00
TargetAttributesSema.h Revert r170500. It over-zealously converted *ALL* things named Attributes, which is wrong here. 2012-12-20 19:22:21 +00:00
TreeTransform.h Re-commit r183466 with a fix to make the TypeLoc casting machinery work 2013-06-07 20:31:48 +00:00
TypeLocBuilder.cpp Add missing file from r183563 (the recommit of 183466). 2013-06-07 20:33:10 +00:00
TypeLocBuilder.h Re-commit r183466 with a fix to make the TypeLoc casting machinery work 2013-06-07 20:31:48 +00:00