Lines Matching full:insert
64 MachineInstr *Insert) const { in getSinkableDebugValues()
67 // DBG_VALUEs between Def and Insert in getSinkableDebugValues()
70 if (Def->getParent() == Insert->getParent()) { in getSinkableDebugValues()
71 // When Def and Insert are within the same BB, check if Insert comes after in getSinkableDebugValues()
77 if (&*MI == Insert) { in getSinkableDebugValues()
87 } else { // Def and Insert are in different BBs in getSinkableDebugValues()
88 // If Def and Insert are in different BBs, we only handle a simple case in in getSinkableDebugValues()
89 // which Insert's BB is a successor of Def's BB. in getSinkableDebugValues()
90 if (!Def->getParent()->isSuccessor(Insert->getParent())) in getSinkableDebugValues()
94 // 'Insert BB's begin~Insert' in getSinkableDebugValues()
101 for (MachineBasicBlock::iterator MI = Insert->getParent()->begin(), in getSinkableDebugValues()
102 ME = Insert->getIterator(); in getSinkableDebugValues()
109 // Gather DebugVariables that are seen between Def and Insert, excluding our in getSinkableDebugValues()
122 // another DBG_VALUE between Def and Insert referring to the same in getSinkableDebugValues()
221 MachineInstr *Insert) const { in isInsertSamePlace()
222 if (Def->getParent() != Insert->getParent()) in isInsertSamePlace()
225 ME = Insert; in isInsertSamePlace()
244 // 'Insert'. Convert the original DBG_VALUEs into undefs.
246 // For DBG_VALUEs to sink properly, if 'Def' and 'Insert' are within the same
247 // BB, 'Insert' should be below 'Def'; if they are in different BBs, 'Insert'
253 void WebAssemblyDebugValueManager::sink(MachineInstr *Insert) { in sink() argument
260 // %1 = anotherinst // Insert in sink()
267 // %1 = anotherinst // Insert in sink()
268 if (isInsertSamePlace(Insert)) in sink()
271 MachineBasicBlock *MBB = Insert->getParent(); in sink()
275 // Def, because we need to examine instructions between Def and Insert. in sink()
277 getSinkableDebugValues(Insert); in sink()
286 MBB->splice(Insert, Def->getParent(), Def); in sink()
291 // Clone sinkable DBG_VALUEs and insert them. in sink()
295 MBB->insert(Insert, Clone); in sink()
345 // 'Insert'.
347 // For DBG_VALUEs to be cloned properly, if 'Def' and 'Insert' are within the
348 // same BB, 'Insert' should be below 'Def'; if they are in different BBs,
349 // 'Insert' should be in one of 'Def's BBs successors. Def will be cloned
354 void WebAssemblyDebugValueManager::cloneSink(MachineInstr *Insert, in cloneSink() argument
357 MachineBasicBlock *MBB = Insert->getParent(); in cloneSink()
361 getSinkableDebugValues(Insert); in cloneSink()
373 MBB->insert(Insert, Clone); in cloneSink()
379 // Clone sinkable DBG_VALUEs and insert them. in cloneSink()
383 MBB->insert(Insert, Clone); in cloneSink()