Skip to content

Commit d1c8aa0

Browse files
author
Raj Barik
committed
Protocol Devirtualizer: relaxed the condition for applying the transformation
1 parent 7829bd4 commit d1c8aa0

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

lib/SILOptimizer/Transforms/GenericSpecializer.cpp

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -241,10 +241,17 @@ bool ProtocolDevirtualizer::canDevirtualizeProtocolInFunction(ProtocolDevirtuali
241241
bool UnknownPattern = false;
242242
for (auto *Op : Args[i]->getUses()) {
243243
auto User = Op->getUser();
244-
auto *Open = dyn_cast<OpenExistentialRefInst>(User);
245-
auto *Debug = dyn_cast<DebugValueInst>(User);
246-
if(!(Open || Debug)) {
247-
UnknownPattern = true;
244+
switch (User->getKind()) {
245+
case SILInstructionKind::OpenExistentialAddrInst:
246+
case SILInstructionKind::OpenExistentialBoxValueInst:
247+
case SILInstructionKind::OpenExistentialMetatypeInst:
248+
case SILInstructionKind::OpenExistentialValueInst:
249+
UnknownPattern = true;
250+
break;
251+
default: break;
252+
}
253+
if(UnknownPattern) {
254+
break;
248255
}
249256
}
250257
if (!UnknownPattern) {

0 commit comments

Comments
 (0)