Changeset View
Changeset View
Standalone View
Standalone View
llvm/test/Transforms/Coroutines/coro-frame-arrayalloca.ll
Show All 34 Lines | suspend: | ||||
ret i8* %hdl | ret i8* %hdl | ||||
} | } | ||||
; See if the array alloca was stored as an array field. | ; See if the array alloca was stored as an array field. | ||||
; CHECK-LABEL: %f.Frame = type { void (%f.Frame*)*, void (%f.Frame*)*, double, double, [4 x i32], i1 } | ; CHECK-LABEL: %f.Frame = type { void (%f.Frame*)*, void (%f.Frame*)*, double, double, [4 x i32], i1 } | ||||
; See if we used correct index to access prefix, data, suffix (@f) | ; See if we used correct index to access prefix, data, suffix (@f) | ||||
; CHECK-LABEL: @f( | ; CHECK-LABEL: @f( | ||||
; CHECK: %prefix = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 2 | ; CHECK: %[[PREFIX:.+]] = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 2 | ||||
; CHECK-NEXT: %data = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 4 | ; CHECK-NEXT: %[[DATA:.+]] = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 4 | ||||
; CHECK-NEXT: %suffix = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 3 | ; CHECK-NEXT: %[[SUFFIX:.+]] = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 3 | ||||
; CHECK-NEXT: call void @consume.double.ptr(double* %prefix) | ; CHECK-NEXT: call void @consume.double.ptr(double* %[[PREFIX:.+]]) | ||||
; CHECK-NEXT: call void @consume.i32.ptr(i32* %data) | ; CHECK-NEXT: call void @consume.i32.ptr(i32* %[[DATA:.+]]) | ||||
; CHECK-NEXT: call void @consume.double.ptr(double* %suffix) | ; CHECK-NEXT: call void @consume.double.ptr(double* %[[SUFFIX:.+]]) | ||||
; CHECK: ret i8* | ; CHECK: ret i8* | ||||
; See if we used correct index to access prefix, data, suffix (@f.resume) | ; See if we used correct index to access prefix, data, suffix (@f.resume) | ||||
; CHECK-LABEL: @f.resume( | ; CHECK-LABEL: @f.resume( | ||||
; CHECK: %[[SUFFIX:.+]] = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 3 | |||||
; CHECK: %[[DATA:.+]] = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 4 | |||||
; CHECK: %[[PREFIX:.+]] = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 2 | ; CHECK: %[[PREFIX:.+]] = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 2 | ||||
; CHECK: %[[DATA:.+]] = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 4 | |||||
; CHECK: %[[SUFFIX:.+]] = getelementptr inbounds %f.Frame, %f.Frame* %FramePtr, i32 0, i32 3 | |||||
; CHECK: call void @consume.double.ptr(double* %[[PREFIX]]) | ; CHECK: call void @consume.double.ptr(double* %[[PREFIX]]) | ||||
; CHECK-NEXT: call void @consume.i32.ptr(i32* %[[DATA]]) | ; CHECK-NEXT: call void @consume.i32.ptr(i32* %[[DATA]]) | ||||
; CHECK-NEXT: call void @consume.double.ptr(double* %[[SUFFIX]]) | ; CHECK-NEXT: call void @consume.double.ptr(double* %[[SUFFIX]]) | ||||
declare i8* @llvm.coro.free(token, i8*) | declare i8* @llvm.coro.free(token, i8*) | ||||
declare i32 @llvm.coro.size.i32() | declare i32 @llvm.coro.size.i32() | ||||
declare i8 @llvm.coro.suspend(token, i1) | declare i8 @llvm.coro.suspend(token, i1) | ||||
declare void @llvm.coro.resume(i8*) | declare void @llvm.coro.resume(i8*) | ||||
Show All 10 Lines |