forked from OSchip/llvm-project
[coro async] Move code to proper switch
While upstreaming patches this code somehow was applied to the wrong switch statement. Differential Revision: https://reviews.llvm.org/D105504
This commit is contained in:
parent
ee6ca9c7df
commit
033de11150
|
@ -913,6 +913,21 @@ void CoroCloner::create() {
|
|||
Shape.FrameSize, Shape.FrameAlign);
|
||||
break;
|
||||
case coro::ABI::Async: {
|
||||
auto *ActiveAsyncSuspend = cast<CoroSuspendAsyncInst>(ActiveSuspend);
|
||||
if (OrigF.hasParamAttribute(Shape.AsyncLowering.ContextArgNo,
|
||||
Attribute::SwiftAsync)) {
|
||||
uint32_t ArgAttributeIndices =
|
||||
ActiveAsyncSuspend->getStorageArgumentIndex();
|
||||
auto ContextArgIndex = ArgAttributeIndices & 0xff;
|
||||
addAsyncContextAttrs(NewAttrs, Context, ContextArgIndex);
|
||||
|
||||
// `swiftasync` must preceed `swiftself` so 0 is not a valid index for
|
||||
// `swiftself`.
|
||||
auto SwiftSelfIndex = ArgAttributeIndices >> 8;
|
||||
if (SwiftSelfIndex)
|
||||
addSwiftSelfAttrs(NewAttrs, Context, SwiftSelfIndex);
|
||||
}
|
||||
|
||||
// Transfer the original function's attributes.
|
||||
auto FnAttrs = OrigF.getAttributes().getFnAttributes();
|
||||
NewAttrs =
|
||||
|
@ -952,24 +967,9 @@ void CoroCloner::create() {
|
|||
// followed by a return.
|
||||
// Don't change returns to unreachable because that will trip up the verifier.
|
||||
// These returns should be unreachable from the clone.
|
||||
case coro::ABI::Async: {
|
||||
auto *ActiveAsyncSuspend = cast<CoroSuspendAsyncInst>(ActiveSuspend);
|
||||
if (OrigF.hasParamAttribute(Shape.AsyncLowering.ContextArgNo,
|
||||
Attribute::SwiftAsync)) {
|
||||
uint32_t ArgAttributeIndices =
|
||||
ActiveAsyncSuspend->getStorageArgumentIndex();
|
||||
auto ContextArgIndex = ArgAttributeIndices & 0xff;
|
||||
addAsyncContextAttrs(NewAttrs, Context, ContextArgIndex);
|
||||
|
||||
// `swiftasync` must preceed `swiftself` so 0 is not a valid index for
|
||||
// `swiftself`.
|
||||
auto SwiftSelfIndex = ArgAttributeIndices >> 8;
|
||||
if (SwiftSelfIndex)
|
||||
addSwiftSelfAttrs(NewAttrs, Context, SwiftSelfIndex);
|
||||
}
|
||||
case coro::ABI::Async:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
NewF->setAttributes(NewAttrs);
|
||||
NewF->setCallingConv(Shape.getResumeFunctionCC());
|
||||
|
|
Loading…
Reference in New Issue