|
3 | 3 |
|
4 | 4 | ; upgrade-arc-runtime-calls.bc and upgrade-mrr-runtime-calls.bc are identical
|
5 | 5 | ; except that the former has the arm64 retainAutoreleasedReturnValueMarker
|
6 |
| -; metadata. |
| 6 | +; metadata. upgrade-arc-runtime-calls-new.bc has the new module flag format of |
| 7 | +; marker, it should not be upgraded. |
7 | 8 |
|
8 | 9 | ; RUN: llvm-dis < %S/upgrade-arc-runtime-calls.bc | FileCheck -check-prefixes=ARC %s
|
9 |
| -; RUN: llvm-dis < %S/upgrade-mrr-runtime-calls.bc | FileCheck -check-prefixes=MRR %s |
| 10 | +; RUN: llvm-dis < %S/upgrade-mrr-runtime-calls.bc | FileCheck -check-prefixes=NOUPGRADE %s |
| 11 | +; RUN: llvm-dis < %S/upgrade-arc-runtime-calls-new.bc | FileCheck -check-prefixes=NOUPGRADE %s |
10 | 12 |
|
11 | 13 | define void @testRuntimeCalls(i8* %a, i8** %b, i8** %c, i32* %d, i32** %e) personality i32 (...)* @__gxx_personality_v0 {
|
12 | 14 | entry:
|
@@ -89,35 +91,35 @@ unwindBlock:
|
89 | 91 | // ARC-NEXT: tail call void @llvm.objc.arc.annotation.bottomup.bbend(i8** %[[B]], i8** %[[C]])
|
90 | 92 | // ARC-NEXT: invoke void @objc_autoreleasePoolPop(i8* %[[A]])
|
91 | 93 |
|
92 |
| -// MRR: define void @testRuntimeCalls(i8* %[[A:.*]], i8** %[[B:.*]], i8** %[[C:.*]], i32* %[[D:.*]], i32** %[[E:.*]]) personality |
93 |
| -// MRR: %[[V0:.*]] = tail call i8* @objc_autorelease(i8* %[[A]]) |
94 |
| -// MRR-NEXT: tail call void @objc_autoreleasePoolPop(i8* %[[A]]) |
95 |
| -// MRR-NEXT: %[[V1:.*]] = tail call i8* @objc_autoreleasePoolPush() |
96 |
| -// MRR-NEXT: %[[V2:.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* %[[A]]) |
97 |
| -// MRR-NEXT: tail call void @objc_copyWeak(i8** %[[B]], i8** %[[C]]) |
98 |
| -// MRR-NEXT: tail call void @objc_destroyWeak(i8** %[[B]]) |
99 |
| -// MRR-NEXT: %[[V3:.*]] = tail call i32* @objc_initWeak(i32** %[[E]], i32* %[[D]]) |
100 |
| -// MRR-NEXT: %[[V4:.*]] = tail call i8* @objc_loadWeak(i8** %[[B]]) |
101 |
| -// MRR-NEXT: %[[V5:.*]] = tail call i8* @objc_loadWeakRetained(i8** %[[B]]) |
102 |
| -// MRR-NEXT: tail call void @objc_moveWeak(i8** %[[B]], i8** %[[C]]) |
103 |
| -// MRR-NEXT: tail call void @objc_release(i8* %[[A]]) |
104 |
| -// MRR-NEXT: %[[V6:.*]] = tail call i8* @objc_retain(i8* %[[A]]) |
105 |
| -// MRR-NEXT: %[[V7:.*]] = tail call i8* @objc_retainAutorelease(i8* %[[A]]) |
106 |
| -// MRR-NEXT: %[[V8:.*]] = tail call i8* @objc_retainAutoreleaseReturnValue(i8* %[[A]]) |
107 |
| -// MRR-NEXT: %[[V9:.*]] = tail call i8* @objc_retainAutoreleasedReturnValue(i8* %[[A]]) |
108 |
| -// MRR-NEXT: %[[V10:.*]] = tail call i8* @objc_retainBlock(i8* %[[A]]) |
109 |
| -// MRR-NEXT: tail call void @objc_storeStrong(i8** %[[B]], i8* %[[A]]) |
110 |
| -// MRR-NEXT: %[[V11:.*]] = tail call i8* @objc_storeWeak(i8** %[[B]], i8* %[[A]]) |
111 |
| -// MRR-NEXT: tail call void (...) @llvm.objc.clang.arc.use(i8* %[[A]]) |
112 |
| -// MRR-NEXT: %[[V12:.*]] = tail call i8* @objc_unsafeClaimAutoreleasedReturnValue(i8* %[[A]]) |
113 |
| -// MRR-NEXT: %[[V13:.*]] = tail call i8* @objc_retainedObject(i8* %[[A]]) |
114 |
| -// MRR-NEXT: %[[V14:.*]] = tail call i8* @objc_unretainedObject(i8* %[[A]]) |
115 |
| -// MRR-NEXT: %[[V15:.*]] = tail call i8* @objc_unretainedPointer(i8* %[[A]]) |
116 |
| -// MRR-NEXT: %[[V16:.*]] = tail call i8* @objc_retain.autorelease(i8* %[[A]]) |
117 |
| -// MRR-NEXT: %[[V17:.*]] = tail call i32 @objc_sync.enter(i8* %[[A]]) |
118 |
| -// MRR-NEXT: %[[V18:.*]] = tail call i32 @objc_sync.exit(i8* %[[A]]) |
119 |
| -// MRR-NEXT: tail call void @objc_arc_annotation_topdown_bbstart(i8** %[[B]], i8** %[[C]]) |
120 |
| -// MRR-NEXT: tail call void @objc_arc_annotation_topdown_bbend(i8** %[[B]], i8** %[[C]]) |
121 |
| -// MRR-NEXT: tail call void @objc_arc_annotation_bottomup_bbstart(i8** %[[B]], i8** %[[C]]) |
122 |
| -// MRR-NEXT: tail call void @objc_arc_annotation_bottomup_bbend(i8** %[[B]], i8** %[[C]]) |
123 |
| -// MRR-NEXT: invoke void @objc_autoreleasePoolPop(i8* %[[A]]) |
| 94 | +// NOUPGRADE: define void @testRuntimeCalls(i8* %[[A:.*]], i8** %[[B:.*]], i8** %[[C:.*]], i32* %[[D:.*]], i32** %[[E:.*]]) personality |
| 95 | +// NOUPGRADE: %[[V0:.*]] = tail call i8* @objc_autorelease(i8* %[[A]]) |
| 96 | +// NOUPGRADE-NEXT: tail call void @objc_autoreleasePoolPop(i8* %[[A]]) |
| 97 | +// NOUPGRADE-NEXT: %[[V1:.*]] = tail call i8* @objc_autoreleasePoolPush() |
| 98 | +// NOUPGRADE-NEXT: %[[V2:.*]] = tail call i8* @objc_autoreleaseReturnValue(i8* %[[A]]) |
| 99 | +// NOUPGRADE-NEXT: tail call void @objc_copyWeak(i8** %[[B]], i8** %[[C]]) |
| 100 | +// NOUPGRADE-NEXT: tail call void @objc_destroyWeak(i8** %[[B]]) |
| 101 | +// NOUPGRADE-NEXT: %[[V3:.*]] = tail call i32* @objc_initWeak(i32** %[[E]], i32* %[[D]]) |
| 102 | +// NOUPGRADE-NEXT: %[[V4:.*]] = tail call i8* @objc_loadWeak(i8** %[[B]]) |
| 103 | +// NOUPGRADE-NEXT: %[[V5:.*]] = tail call i8* @objc_loadWeakRetained(i8** %[[B]]) |
| 104 | +// NOUPGRADE-NEXT: tail call void @objc_moveWeak(i8** %[[B]], i8** %[[C]]) |
| 105 | +// NOUPGRADE-NEXT: tail call void @objc_release(i8* %[[A]]) |
| 106 | +// NOUPGRADE-NEXT: %[[V6:.*]] = tail call i8* @objc_retain(i8* %[[A]]) |
| 107 | +// NOUPGRADE-NEXT: %[[V7:.*]] = tail call i8* @objc_retainAutorelease(i8* %[[A]]) |
| 108 | +// NOUPGRADE-NEXT: %[[V8:.*]] = tail call i8* @objc_retainAutoreleaseReturnValue(i8* %[[A]]) |
| 109 | +// NOUPGRADE-NEXT: %[[V9:.*]] = tail call i8* @objc_retainAutoreleasedReturnValue(i8* %[[A]]) |
| 110 | +// NOUPGRADE-NEXT: %[[V10:.*]] = tail call i8* @objc_retainBlock(i8* %[[A]]) |
| 111 | +// NOUPGRADE-NEXT: tail call void @objc_storeStrong(i8** %[[B]], i8* %[[A]]) |
| 112 | +// NOUPGRADE-NEXT: %[[V11:.*]] = tail call i8* @objc_storeWeak(i8** %[[B]], i8* %[[A]]) |
| 113 | +// NOUPGRADE-NEXT: tail call void (...) @llvm.objc.clang.arc.use(i8* %[[A]]) |
| 114 | +// NOUPGRADE-NEXT: %[[V12:.*]] = tail call i8* @objc_unsafeClaimAutoreleasedReturnValue(i8* %[[A]]) |
| 115 | +// NOUPGRADE-NEXT: %[[V13:.*]] = tail call i8* @objc_retainedObject(i8* %[[A]]) |
| 116 | +// NOUPGRADE-NEXT: %[[V14:.*]] = tail call i8* @objc_unretainedObject(i8* %[[A]]) |
| 117 | +// NOUPGRADE-NEXT: %[[V15:.*]] = tail call i8* @objc_unretainedPointer(i8* %[[A]]) |
| 118 | +// NOUPGRADE-NEXT: %[[V16:.*]] = tail call i8* @objc_retain.autorelease(i8* %[[A]]) |
| 119 | +// NOUPGRADE-NEXT: %[[V17:.*]] = tail call i32 @objc_sync.enter(i8* %[[A]]) |
| 120 | +// NOUPGRADE-NEXT: %[[V18:.*]] = tail call i32 @objc_sync.exit(i8* %[[A]]) |
| 121 | +// NOUPGRADE-NEXT: tail call void @objc_arc_annotation_topdown_bbstart(i8** %[[B]], i8** %[[C]]) |
| 122 | +// NOUPGRADE-NEXT: tail call void @objc_arc_annotation_topdown_bbend(i8** %[[B]], i8** %[[C]]) |
| 123 | +// NOUPGRADE-NEXT: tail call void @objc_arc_annotation_bottomup_bbstart(i8** %[[B]], i8** %[[C]]) |
| 124 | +// NOUPGRADE-NEXT: tail call void @objc_arc_annotation_bottomup_bbend(i8** %[[B]], i8** %[[C]]) |
| 125 | +// NOUPGRADE-NEXT: invoke void @objc_autoreleasePoolPop(i8* %[[A]]) |
0 commit comments