@@ -72,13 +72,13 @@ void consume(int,int,int,int) noexcept;
7272// CHECK: define{{.*}} void @_Z1fi8MoveOnly11MoveAndCopy10TrivialABI(i32 noundef %val, ptr noundef %[[MoParam:.+]], ptr noundef %[[McParam:.+]], i32 %[[TrivialParam:.+]]) #0 personality ptr @__gxx_personality_v0
7373void f (int val, MoveOnly moParam, MoveAndCopy mcParam, TrivialABI trivialParam) {
7474 // CHECK: %[[TrivialAlloca:.+]] = alloca %struct.TrivialABI,
75+ // CHECK-SAME: !coro.outside.frame
7576 // CHECK: %[[MoCopy:.+]] = alloca %struct.MoveOnly,
7677 // CHECK: %[[McCopy:.+]] = alloca %struct.MoveAndCopy,
7778 // CHECK: %[[TrivialCopy:.+]] = alloca %struct.TrivialABI,
7879 // CHECK: store i32 %val, ptr %[[ValAddr:.+]]
7980
8081 // CHECK: call ptr @llvm.coro.begin(
81- // CHECK: @llvm.coro.outside.frame(ptr %[[TrivialAlloca]])
8282 // CHECK: call void @_ZN8MoveOnlyC1EOS_(ptr {{[^,]*}} %[[MoCopy]], ptr noundef nonnull align 4 dereferenceable(4) %[[MoParam]])
8383 // CHECK-NEXT: call void @llvm.lifetime.start.p0(
8484 // CHECK-NEXT: call void @_ZN11MoveAndCopyC1EOS_(ptr {{[^,]*}} %[[McCopy]], ptr noundef nonnull align 4 dereferenceable(4) %[[McParam]]) #
@@ -226,11 +226,12 @@ void consume(int) noexcept;
226226// may be destroyed before the destructor call.
227227void msabi (MSParm p) {
228228 // MSABI: define{{.*}} void @"?msabi@@YAXUMSParm@@@Z"(i32 %[[Param:.+]])
229- // MSABI: %[[ParamAlloca:.+]] = alloca %struct.MSParm
230- // MSABI: %[[ParamCopy:.+]] = alloca %struct.MSParm
231229
232230 // The parameter's local alloca is marked not part of the frame.
233- // MSABI: call void @llvm.coro.outside.frame(ptr %[[ParamAlloca]])
231+ // MSABI: %[[ParamAlloca:.+]] = alloca %struct.MSParm
232+ // MSABI-SAME: !coro.outside.frame
233+
234+ // MSABI: %[[ParamCopy:.+]] = alloca %struct.MSParm
234235
235236 consume (p.val );
236237 // The parameter's copy is used by the coroutine.
0 commit comments