Hi, I am running into a debug scope SIL Verifier error when creating a new function (NF) from an existing one (F). Can someone point me where I am going wrong?
NF = M.createFunction(...., F->getDebugScope()); SILBasicBlock *NFBody = NF->createBasicBlock(); SILBuilder NFBuilder(NFBody); SILOpenedArchetypesTracker OpenedArchetypesTrackerNF(NF); NFBuilder.setOpenedArchetypesTracker(&OpenedArchetypesTrackerNF); NFBuilder.setCurrentDebugScope(NFBody->getParent()->getDebugScope()); ... for (auto ¶m : params) { /* Assume all are generic types */ auto GenericsSILType = .... auto NewArg = NFBody->createFunctionArgument(GenericSILType); auto Conformances = Mod->lookupConformance(...); auto *InitRef = NFBuilder.createInitExistentialRef( Loc, ArgDesc.Arg->getType(), NewArg->getType().getSwiftRValueType()->getCanonicalType(), NewArg, Conformances); ... } The InitRef instruction created above runs into SIL verifier error: SIL verification failed: debug scope of instruction belongs to a different function: !DS || DS->getParentFunction() == I->getFunction() Verifying instruction: %0 = argument of bb0 : $τ_0_0 // user: %1 -> %1 = init_existential_ref %0 : $τ_0_0 : $τ_0_0, $SomeProtocol // user: %2 The SIL looks correct to me though. --Raj
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev