Lines Matching full:invoke

29 /// Fix-up phi nodes in an invoke instruction's normal destination.
31 /// After versioning an invoke instruction, values coming from the original
36 /// %t0 = invoke i32 %ptr() to label %merge_bb unwind label %unwind_dst
39 /// %t1 = invoke i32 %ptr() to label %merge_bb unwind label %unwind_dst
54 static void fixupPHINodeForNormalDest(InvokeInst *Invoke, BasicBlock *OrigBlock, in fixupPHINodeForNormalDest() argument
56 for (PHINode &Phi : Invoke->getNormalDest()->phis()) { in fixupPHINodeForNormalDest()
64 /// Fix-up phi nodes in an invoke instruction's unwind destination.
66 /// After versioning an invoke instruction, values coming from the original
71 /// %t0 = invoke i32 %ptr() to label %merge_bb unwind label %unwind_dst
74 /// %t1 = invoke i32 %ptr() to label %merge_bb unwind label %unwind_dst
85 static void fixupPHINodeForUnwindDest(InvokeInst *Invoke, BasicBlock *OrigBlock, in fixupPHINodeForUnwindDest() argument
88 for (PHINode &Phi : Invoke->getUnwindDest()->phis()) { in fixupPHINodeForUnwindDest()
98 /// Create a phi node for the returned value of a call or invoke instruction.
100 /// After versioning a call or invoke instruction that returns a value, we have
126 /// Cast a call or invoke instruction to the given type.
131 /// or invoke instruction.
148 /// A similar transformation is performed for invoke instructions. However,
150 /// example, if the invoke instruction below requires a bitcast after promotion:
153 /// %t0 = invoke i32 @func() to label %normal_dst unwind label %unwind_dst
155 /// The edge between the original block and the invoke's normal destination is
159 /// %t0 = invoke i32 @func() to label %split_bb unwind label %unwind_dst
173 // value. The location depends on if we have a call or invoke instruction. in createRetBitCast()
175 if (auto *Invoke = dyn_cast<InvokeInst>(&CB)) in createRetBitCast() local
177 SplitEdge(Invoke->getParent(), Invoke->getNormalDest())->begin(); in createRetBitCast()
227 /// A similar transformation is performed for invoke instructions. However,
229 /// invoke instruction below:
232 /// %t0 = invoke %ptr() to label %normal_dst unwind label %unwind_dst
241 /// ; The clone of the original invoke instruction is placed in the "then"
244 /// %t1 = invoke i32 %ptr() to label %merge_bb unwind label %unwind_dst
247 /// ; The original invoke instruction is moved into the "else" block, and
249 /// %t0 = invoke i32 %ptr() to label %merge_bb unwind label %unwind_dst
252 /// ; Uses of the original invoke instruction are replaced by uses of the
348 // If the original call site is an invoke instruction, we have extra work to in versionCallSiteWithCond()
349 // do since invoke instructions are terminating. We have to fix-up phi nodes in versionCallSiteWithCond()
350 // in the invoke's normal and unwind destinations. in versionCallSiteWithCond()
354 // Invoke instructions are terminating, so we don't need the terminator in versionCallSiteWithCond()
363 // Fix-up phi nodes in the original invoke's normal and unwind destinations. in versionCallSiteWithCond()
367 // Now set the normal destinations of the invoke instructions to be the in versionCallSiteWithCond()