llvm-project/clang/test/CodeGenObjCXX
Akira Hatanaka ccda3d2970 [CodeGen] Avoid destructing a callee-destructued struct type in a
function if a function delegates to another function.

Fix a bug introduced in r328731, which caused a struct with ObjC __weak
fields that was passed to a function to be destructed twice, once in the
callee function and once in another function the callee function
delegates to. To prevent this, keep track of the callee-destructed
structs passed to a function and disable their cleanups at the point of
the call to the delegated function.

This reapplies r331016, which was reverted in r331019 because it caused
an assertion to fail in EmitDelegateCallArg on a windows bot. I made
changes to EmitDelegateCallArg so that it doesn't try to deactivate
cleanups for structs that have trivial destructors (cleanups for those
structs are never pushed to the cleanup stack in EmitParmDecl).

rdar://problem/39194693

Differential Revision: https://reviews.llvm.org/D45382

llvm-svn: 331020
2018-04-27 06:57:00 +00:00
..
Inputs
2007-10-03-MetadataPointers.mm
2010-08-04-Template.mm
2010-08-06-X.Y-syntax.mm
address-safety-attr.mm
arc-attrs-abi.mm Represent pass_object_size attrs in ExtParameterInfo 2017-02-24 02:49:47 +00:00
arc-attrs.mm Forward ns_consumed delegate arguments with a move. 2016-11-18 01:08:24 +00:00
arc-blocks.mm [test] Make Lit tests C++11 Compatible - Objective-C++ 2017-02-13 23:09:56 +00:00
arc-constexpr.mm [CodeGen][ObjC] Do not call objc_storeStrong when initializing a 2016-10-18 19:05:41 +00:00
arc-cxx11-init-list.mm Disable -fmerge-all-constants as default. 2018-04-05 15:29:52 +00:00
arc-cxx11-member-init.mm
arc-exceptions.mm Change memcpy/memove/memset to have dest and source alignment attributes (Step 1). 2018-01-19 17:12:54 +00:00
arc-forwarded-lambda-call.mm [CodeGen] Avoid destructing a callee-destructued struct type in a 2018-04-27 06:57:00 +00:00
arc-globals.mm Make '-disable-llvm-optzns' an alias for '-disable-llvm-passes'. 2016-12-23 00:23:01 +00:00
arc-indirect.mm test: fix test for release builds 2017-06-27 18:57:50 +00:00
arc-mangle.mm Mangle __unaligned in Itanium ABI 2017-06-02 07:14:34 +00:00
arc-marker-funclet.mm [CodeGen] Add funclet token to ARC marker 2018-03-19 19:34:39 +00:00
arc-move.mm Update for lifetime intrinsic signature change 2017-04-10 20:18:45 +00:00
arc-new-delete.mm Make '-disable-llvm-optzns' an alias for '-disable-llvm-passes'. 2016-12-23 00:23:01 +00:00
arc-pseudo-destructors.mm
arc-references.mm [ObjC] Fix lifetime markers of loop variable in EmitObjCForCollectionStmt [take 2] 2017-04-14 16:53:25 +00:00
arc-returns-inner-reference-ptr.mm
arc-special-member-functions.mm [CodeGen] Avoid destructing a callee-destructued struct type in a 2018-04-27 06:57:00 +00:00
arc-weak.mm Correctly handle type mismatches in the __weak copy/move-initialization 2015-11-16 22:11:41 +00:00
arc.mm Update for lifetime intrinsic signature change 2017-04-10 20:18:45 +00:00
auto-release-result-assert.mm [CodeGen] Fix an assert in CodeGenFunction::EmitFunctionEpilog 2016-02-17 21:09:50 +00:00
block-default-arg.mm [CodeGenObjCXX] Don't rematerialize default arguments of function 2016-05-02 21:52:57 +00:00
block-id.mm
block-in-template-inst.mm
block-nested-in-lambda.cpp [CodeGenObjCXX] Fix handling of blocks in lambda. 2016-05-04 18:40:33 +00:00
block-var-layout.mm Fix and stylize the emission of GC/ARC ivar and GC block layout strings. 2015-10-21 18:06:47 +00:00
blocks.mm Reapply "[CodeGen] Fix assignments of inline layouts into the byref structure" 2015-12-21 20:21:15 +00:00
boxing.mm ObjCBoxedExpr can't be evaluated by the constant expression evaluator. 2017-04-29 00:07:27 +00:00
catch-id-type.mm
copy.mm Replace Sema-level implementation of -fassume-sane-operator-new with a 2016-04-07 21:46:12 +00:00
copyable-property-object.mm
debug-info-block-capture-this.mm DebugInfo: Adapt to loss of DITypeRef in LLVM r267296 2016-04-23 21:08:27 +00:00
debug-info-cyclic.mm DebugInfo: pass alignment value only if it was forced 2016-10-20 00:13:19 +00:00
debug-info-line.mm test: repair windows build after SVN r327105 2018-03-09 23:00:29 +00:00
debug-info.mm Stop messing with the 'g' group of options in CompilerInvocation. 2015-10-08 04:24:12 +00:00
designated-initializers.mm
destroy.mm Make '-disable-llvm-optzns' an alias for '-disable-llvm-passes'. 2016-12-23 00:23:01 +00:00
encode.mm [test] Make Lit tests C++11 Compatible - Objective-C++ 2017-02-13 23:09:56 +00:00
exception-cxx.mm [test] Specify exception object type in two tests 2015-09-11 17:39:34 +00:00
exceptions-legacy.mm Update clang unittests for rL281586. 2016-09-15 06:31:30 +00:00
exceptions.mm
externally-initialized-selectors.mm
foreach-statement.mm
gc.mm
implementation-in-extern-c.mm
implicit-copy-assign-operator.mm
implicit-copy-constructor.mm Remove custom handling of array copies in lambda by-value array capture and 2016-12-14 00:03:17 +00:00
instantiate-return.mm [Sema][ObjC] Ensure that the return type of an ObjC method is a complete 2018-04-12 06:01:41 +00:00
ivar-objects.mm
lambda-expressions.mm [CodeGen] Avoid destructing a callee-destructued struct type in a 2018-04-27 06:57:00 +00:00
lambda-to-block.mm Fix lambda to block conversion in C++17 by avoiding copy elision for the 2017-04-06 12:53:43 +00:00
literals.mm Update for lifetime intrinsic signature change 2017-04-10 20:18:45 +00:00
lvalue-reference-getter.mm
mangle-blocks.mm Fix off-by-one error in block mangling. 2017-09-07 05:41:24 +00:00
mangle.mm Fix mangled name of method with ns_consumed parameters. 2016-05-25 14:15:08 +00:00
message-reference.mm
message.mm
method-local-extern-mangle.mm
microsoft-abi-arc-param-order.mm [MS] Don't escape MS C++ names with \01 2018-03-16 20:36:49 +00:00
mrc-weak.mm Don't actually add the __unsafe_unretained qualifier in MRC; 2015-11-19 02:28:03 +00:00
msabi-objc-extensions.mm [MS] Don't escape MS C++ names with \01 2018-03-16 20:36:49 +00:00
msabi-objc-types.mm [MS] Don't escape MS C++ names with \01 2018-03-16 20:36:49 +00:00
msabi-stret.mm CodeGenObjCXX: handle inalloca appropriately for msgSend variant 2018-02-28 20:16:12 +00:00
nested-ehlocation.mm Stop messing with the 'g' group of options in CompilerInvocation. 2015-10-08 04:24:12 +00:00
nrvo.mm
objc-container-subscripting-1.mm
objc-container-subscripting.mm
objc-struct-cxx-abi.mm [ObjC++] Never pass structs that transitively contain __weak fields in 2018-04-09 22:48:22 +00:00
objc-weak.mm [Objective-C] C++ Classes with __weak Members non-POD Types when using -fobjc-weak 2017-03-29 17:31:42 +00:00
objfw-exceptions.mm [ObjC++] Use the correct EH personality in GNU mode 2017-04-01 17:59:01 +00:00
personality-abuse.mm Fix broken tests from no-jump-table commit 2016-04-05 18:59:37 +00:00
personality.mm CodeGen: simplify and validate exception personalities 2018-03-09 07:06:42 +00:00
pr14474-gline-tables-only.mm Stop messing with the 'g' group of options in CompilerInvocation. 2015-10-08 04:24:12 +00:00
property-derived-to-base-conv.mm
property-dot-copy-elision.mm [ObjC++] Make parameter passing and function return compatible with ObjC 2018-03-28 21:13:14 +00:00
property-dot-copy.mm
property-dot-reference.mm
property-lvalue-capture.mm Compute and preserve alignment more faithfully in IR-generation. 2015-09-08 08:05:57 +00:00
property-object-conditional-exp.mm Compute and preserve alignment more faithfully in IR-generation. 2015-09-08 08:05:57 +00:00
property-object-reference-1.mm
property-object-reference-2.mm Re-commit r282556, reverted in r282564, with a fix to CallArgList::addFrom to 2016-09-28 19:09:10 +00:00
property-object-reference.mm
property-objects.mm [CodeGen] Ignore OpaqueValueExprs that are unique references to their 2018-03-20 01:47:58 +00:00
property-reference.mm
refence-assign-write-barrier.mm
references.mm
return.mm Add -f[no-]strict-return flag that can be used to avoid undefined behaviour 2017-01-04 13:40:34 +00:00
rtti.mm
selector-expr-lvalue.mm Let selector-expr-lvalue.mm actually test something. 2015-09-11 21:24:40 +00:00
subst-sel.mm
unknown-anytype.mm
write-barrier-global-assign.mm