summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenObjCXX
diff options
context:
space:
mode:
Diffstat (limited to 'clang/test/CodeGenObjCXX')
-rw-r--r--clang/test/CodeGenObjCXX/arc-attrs.mm21
1 files changed, 21 insertions, 0 deletions
diff --git a/clang/test/CodeGenObjCXX/arc-attrs.mm b/clang/test/CodeGenObjCXX/arc-attrs.mm
index 0f0610f1721..0b64d775660 100644
--- a/clang/test/CodeGenObjCXX/arc-attrs.mm
+++ b/clang/test/CodeGenObjCXX/arc-attrs.mm
@@ -46,3 +46,24 @@ void templateTest() {
// CHECK-NEXT: call void @objc_storeStrong(i8** [[X]], i8* null)
// CHECK-NEXT: ret void
}
+
+// PR27887
+struct ForwardConsumed {
+ ForwardConsumed(__attribute__((ns_consumed)) id x);
+};
+
+ForwardConsumed::ForwardConsumed(__attribute__((ns_consumed)) id x) {}
+
+// CHECK: define void @_ZN15ForwardConsumedC2EP11objc_object(
+// CHECK-NOT: objc_retain
+// CHECK: store i8* {{.*}}, i8** [[X:%.*]],
+// CHECK-NOT: [[X]]
+// CHECK: call void @objc_storeStrong(i8** [[X]], i8* null)
+
+// CHECK: define void @_ZN15ForwardConsumedC1EP11objc_object(
+// CHECK-NOT: objc_retain
+// CHECK: store i8* {{.*}}, i8** [[X:%.*]],
+// CHECK: [[T0:%.*]] = load i8*, i8** [[X]],
+// CHECK-NEXT: store i8* null, i8** [[X]],
+// CHECK-NEXT: call void @_ZN15ForwardConsumedC2EP11objc_object({{.*}}, i8* [[T0]])
+// CHECK: call void @objc_storeStrong(i8** [[X]], i8* null)
OpenPOWER on IntegriCloud