llvm-project/clang/lib
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
..
ARCMigrate Include PathV1.h in files that use it. 2013-06-11 19:59:07 +00:00
AST Use FPT::getArgTypes() instead of manually building ArrayRefs 2013-06-10 20:51:09 +00:00
ASTMatchers Reduce the number of symbols on the object file. 2013-06-11 18:51:07 +00:00
Analysis [analyzer; new edges] Simplify edges in a C++11 for-range loop. 2013-06-06 21:53:45 +00:00
Basic cleanup (address some more review comments for r183474): 2013-06-10 21:36:55 +00:00
CodeGen Reapply r183721, reverted in r183776, with a fix for a bug in the former (we 2013-06-12 20:42:33 +00:00
Driver Try to fix the windows build. 2013-06-11 20:06:05 +00:00
Edit [objcmt] Fix a mishandled conversion to objc directory literal. 2013-04-06 01:13:17 +00:00
Format Preserve newlines before block comments in static initializers. 2013-06-12 19:04:12 +00:00
Frontend Include PathV1.h in files that use it. 2013-06-11 19:59:07 +00:00
FrontendTool <rdar://problem/13509689> Introduce -module-file-info option that provides information about a particular module file. 2013-03-27 16:47:18 +00:00
Headers Even in a modules world, people will depend on the weird xmmintrin.h -> emmintrin.h forwarding. 2013-06-07 22:49:44 +00:00
Lex Include Path.h instead of PathV2.h. 2013-06-11 22:15:02 +00:00
Parse Fix the parser's updating of the template depth when parsing local templates and late-parsed templates. 2013-06-08 19:47:52 +00:00
Rewrite Port HTMLDiagnostics to PathV2. No intended functionality change. 2013-06-12 18:13:05 +00:00
Sema Reapply r183721, reverted in r183776, with a fix for a bug in the former (we 2013-06-12 20:42:33 +00:00
Serialization Include Path.h instead of PathV2.h. 2013-06-11 22:15:02 +00:00
StaticAnalyzer Port HTMLDiagnostics to PathV2. No intended functionality change. 2013-06-12 18:13:05 +00:00
Tooling Include Path.h instead of PathV2.h. 2013-06-11 22:15:02 +00:00
CMakeLists.txt Turn CLANG_ENABLE_{ARCMT,REWRITER,STATIC_ANALYZER} into proper options so that 2013-05-29 21:09:18 +00:00
Makefile Dont use/link ARCMT, StaticAnalyzer and Rewriter to clang when the user 2012-12-13 16:09:42 +00:00