<div dir="ltr">Hi,<div><br></div><div>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? <br><div><br></div><div><div>NF = M.createFunction(...., F-&gt;getDebugScope());</div></div></div><div><div>SILBasicBlock *NFBody = NF-&gt;createBasicBlock();</div><div>SILBuilder NFBuilder(NFBody);</div><div>SILOpenedArchetypesTracker OpenedArchetypesTrackerNF(NF);</div><div>NFBuilder.setOpenedArchetypesTracker(&amp;OpenedArchetypesTrackerNF);</div><div>NFBuilder.setCurrentDebugScope(NFBody-&gt;getParent()-&gt;getDebugScope());</div></div><div>...</div><div>for (auto &amp;param : params) { /* Assume all are generic types */</div><div>  auto GenericsSILType = ....</div><div>  auto NewArg = NFBody-&gt;createFunctionArgument(GenericSILType);</div><div>  auto Conformances = Mod-&gt;lookupConformance(...);</div><div>  auto *InitRef = NFBuilder.createInitExistentialRef( Loc, ArgDesc.Arg-&gt;getType(), NewArg-&gt;getType().getSwiftRValueType()-&gt;getCanonicalType(), NewArg, Conformances);</div><div>  ...</div><div>}</div><div><br></div><div>The InitRef instruction created above runs into SIL verifier error:</div><div><br></div><div><div>SIL verification failed: debug scope of instruction belongs to a different function: !DS || DS-&gt;getParentFunction() == I-&gt;getFunction()</div><div>Verifying instruction:</div><div>   %0 = argument of bb0 : $τ_0_0                 // user: %1</div><div>-&gt;   %1 = init_existential_ref %0 : $τ_0_0 : $τ_0_0, $SomeProtocol // user: %2</div></div><div><br></div><div>The SIL looks correct to me though.</div><div><br></div><div>--Raj</div></div>