llvm-project/clang/test/CodeGenObjCXX
Akira Hatanaka d542ccfc97 [CodeGen][ObjC] Block captures should inherit the type of the captured
field in the enclosing lambda or block.

This patch fixes a bug in code-gen where it uses the type of the
declared variable rather than the type of the capture of the enclosing
lambda or block for the block capture. For example, in the following
function, code-gen currently uses i32* for the block capture "a" because
"a" is passed to foo1 as a reference, but it should use i32 since the
enclosing lambda captures "a" by value.

void foo1(int &a) {
  auto lambda = [a]{
    auto block1 = ^{
      i = a;
    };
    block1();
  };
  lambda();
}

rdar://problem/18586386

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

llvm-svn: 281682
2016-09-16 00:02:06 +00:00
..
Inputs Objective-C. revert patch for rdar://17554063. 2014-10-28 18:28:16 +00:00
2007-10-03-MetadataPointers.mm
2010-08-04-Template.mm
2010-08-06-X.Y-syntax.mm
address-safety-attr.mm
arc-attrs.mm Fix mangled name of method with ns_consumed parameters. 2016-05-25 14:15:08 +00:00
arc-blocks.mm Test case updates for explicit type parameter to the gep operator 2015-03-13 18:21:46 +00:00
arc-cxx11-init-list.mm CodeGen: try harder to make the CFString structure RW 2016-07-29 19:15:51 +00:00
arc-cxx11-member-init.mm Update Clang tests to handle explicitly typed load changes in LLVM. 2015-02-27 21:19:58 +00:00
arc-exceptions.mm Revert "Change memcpy/memset/memmove to have dest and source alignments." 2015-11-19 05:55:59 +00:00
arc-globals.mm Changed renaming of local symbols by inserting a dot vefore the numeric suffix 2015-05-12 16:48:43 +00:00
arc-mangle.mm Fix mangled name of method with ns_consumed parameters. 2016-05-25 14:15:08 +00:00
arc-move.mm Mangle extended qualifiers in the proper order and mangle the 2016-03-01 22:18:03 +00:00
arc-new-delete.mm Replace Sema-level implementation of -fassume-sane-operator-new with a 2016-04-07 21:46:12 +00:00
arc-pseudo-destructors.mm Update Clang tests to handle explicitly typed load changes in LLVM. 2015-02-27 21:19:58 +00:00
arc-references.mm Revert "Revert r234581, it might have caused a few miscompiles in Chromium." 2015-04-22 21:38:15 +00:00
arc-returns-inner-reference-ptr.mm
arc-special-member-functions.mm Update Clang tests to handle explicitly typed load changes in LLVM. 2015-02-27 21:19:58 +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 In ARC, peephole the initialization of a __weak variable with 2015-10-21 18:06:31 +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 CodeGenObjCXX: Add a test for r214699 2014-08-05 00:01:15 +00:00
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
catch-id-type.mm Update clang to take into account the changes to personality fns 2015-06-17 20:53:19 +00:00
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: Adapt to loss of DITypeRef in LLVM r267296 2016-04-23 21:08:27 +00:00
debug-info-line.mm Stop messing with the 'g' group of options in CompilerInvocation. 2015-10-08 04:24:12 +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 [test] Follow-up for r243343, also add a test case using an enum for designated enum. 2015-07-28 00:01:13 +00:00
destroy.mm Emit DeferredDeclsToEmit in a DFS order. 2015-01-22 00:24:57 +00:00
encode.mm [CodeGen][ObjC] Fix infinite recursion in getObjCEncodingForTypeImpl. 2016-08-17 19:42:22 +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 Update clang to take into account the changes to personality fns 2015-06-17 20:53:19 +00:00
externally-initialized-selectors.mm Don't manually insert L prefixes. 2014-11-06 13:30:38 +00:00
foreach-statement.mm
gc.mm Update Clang tests to handle explicitly typed load changes in LLVM. 2015-02-27 21:19:58 +00:00
implementation-in-extern-c.mm
implicit-copy-assign-operator.mm Mark C++ reference parameters as dereferenceable 2014-07-18 15:52:10 +00:00
implicit-copy-constructor.mm Mark C++ reference parameters as dereferenceable 2014-07-18 15:52:10 +00:00
ivar-objects.mm
lambda-expressions.mm [CodeGen][ObjC] Block captures should inherit the type of the captured 2016-09-16 00:02:06 +00:00
literals.mm Compute and preserve alignment more faithfully in IR-generation. 2015-09-08 08:05:57 +00:00
lvalue-reference-getter.mm Update Clang tests to handle explicitly typed load changes in LLVM. 2015-02-27 21:19:58 +00:00
mangle-blocks.mm Emit DeferredDeclsToEmit in a DFS order. 2015-01-22 00:24:57 +00:00
mangle.mm Fix mangled name of method with ns_consumed parameters. 2016-05-25 14:15:08 +00:00
message-reference.mm Add a bunch of missing "CHECK" colons in tests. NFC. 2015-03-14 01:10:19 +00:00
message.mm Update Clang tests to handle explicitly typed load changes in LLVM. 2015-02-27 21:19:58 +00:00
method-local-extern-mangle.mm
microsoft-abi-arc-param-order.mm
mrc-weak.mm Don't actually add the __unsafe_unretained qualifier in MRC; 2015-11-19 02:28:03 +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
personality-abuse.mm Fix broken tests from no-jump-table commit 2016-04-05 18:59:37 +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.mm
property-dot-reference.mm Mark C++ reference parameters as dereferenceable 2014-07-18 15:52:10 +00:00
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 Update Clang tests to handle explicitly typed load changes in LLVM. 2015-02-27 21:19:58 +00:00
property-object-reference-2.mm [CodeGen] Attach function attributes to Objective-C and OpenMP 2015-10-28 02:30:47 +00:00
property-object-reference.mm Update Clang tests to handle explicitly typed load changes in LLVM. 2015-02-27 21:19:58 +00:00
property-objects.mm CodeGen: Update for debug info API change. 2015-11-05 22:04:14 +00:00
property-reference.mm Update Clang tests to handle explicitly typed load changes in LLVM. 2015-02-27 21:19:58 +00:00
refence-assign-write-barrier.mm
references.mm
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 AST: Consider pseudo-struct builtin types as substitutable 2014-11-28 22:22:46 +00:00
unknown-anytype.mm
write-barrier-global-assign.mm