search for: removeincomingvalu

Displaying 10 results from an estimated 10 matches for "removeincomingvalu".

Did you mean: removeincomingvalue
2020 May 15
3
ConstantFoldTerminator doesn't delete trivially dead phi inputs
...ptimizations where CodeGenPrepare seems to leave trivially dead instructions lying around. This happens because CodeGenPrepare::runOnFunction calls ConstantFoldTerminator which folds a "br i1 false" into an unconditional branch and calls BasicBlock::removePredecessor which calls PHINode::removeIncomingValue. Each incoming value that is removed from a phi node might be dead now, but nothing deletes them. Is there any way this could be improved? Could PHINode::removeIncomingValue call RecursivelyDeleteTriviallyDeadInstructions on the value it removes, or is that a layering violation? Any other ideas?...
2017 May 01
4
RFC: Stop using redundant PHI node entries for multi-edge predecessors
...oes handle this very ad-hoc >> "count off N repetitions of the same thing" style code, which is brittle and >> hard to test effectively. > > Having written this code a few times, i'd agree. > >> >> 4) I suspect bugs are quite common given that PHINode::removeIncomingValue >> accepts a basic block but only removes the first incoming value, leaving the >> others in place. > >> I can't see any serious use case for this symmetry either. These aren't >> uses (and can't be), and there doesn't seem to be any lost functionality if...
2017 May 01
3
RFC: Stop using redundant PHI node entries for multi-edge predecessors
...respondence between the edges and the PHI node entries other than number, making most of the code that does handle this very ad-hoc "count off N repetitions of the same thing" style code, which is brittle and hard to test effectively. 4) I suspect bugs are quite common given that PHINode::removeIncomingValue accepts a basic block but only removes the first incoming value, leaving the others in place. I can't see any serious use case for this symmetry either. These aren't uses (and can't be), and there doesn't seem to be any lost functionality if we only have a single entry. It also s...
2012 Mar 08
2
[LLVMdev] Updating value from PHI
...e = PHINode::Create(PN->getType(), 2, PN->getName().str(), splitBB->getFirstInsertionPt()); int IDX = PN->getBasicBlockIndex(splitBB); while (IDX != -1) { Value *oldValue = PN->getIncomingValue((unsigned(IDX))); PN->removeIncomingValue(IDX, false); newPHIvalue->addIncoming(oldValue, loopLatchBB); newPHIvalue->addIncoming(PN, loopHeaderBB); IDX = PN->getBasicBlockIndex(splitBB); } } On Wed, Mar 7, 2012 at 4:04 PM, Ryan Taylor <ryta1203 a...
2012 Mar 08
0
[LLVMdev] Updating value from PHI
...t;getType(), 2, > PN->getName().str(), splitBB->getFirstInsertionPt()); > int IDX = PN->getBasicBlockIndex(splitBB); > while (IDX != -1) { > Value *oldValue = PN->getIncomingValue((unsigned(IDX))); > PN->removeIncomingValue(IDX, false); > newPHIvalue->addIncoming(oldValue, loopLatchBB); > newPHIvalue->addIncoming(PN, loopHeaderBB); > IDX = PN->getBasicBlockIndex(splitBB); > > } > } > > On Wed, Mar 7, 2012...
2011 Feb 01
0
[LLVMdev] Loop simplification
...hi); UT_ASSERT(phi->getBasicBlockIndex(pred) >= 0); Value *val = phi->getIncomingValueForBlock(pred); PHINode *predphi = dyn_cast<PHINode>(val); if (predphi && predphi->getParent() != pred) predphi = 0; phi->removeIncomingValue(pred, false); for (pred_iterator pi = pred_begin(pred); pi != pred_end(pred); ++pi) { // We're a new predecessor if (phi->getBasicBlockIndex(*pi) < 0) { if (predphi) {...
2011 Feb 01
3
[LLVMdev] Loop simplification
On Feb 1, 2011, at 1:34 PM, Andrew Trick wrote: > On Feb 1, 2011, at 1:08 PM, Andrew Clinton wrote: > >> I have a (non-entry) basic block that contains only PHI nodes and an >> unconditional branch (that does not branch to itself). Is it always >> possible to merge this block with it's successor and produce a >> semantically equivalent program? I'm
2012 Mar 08
0
[LLVMdev] Updating value from PHI
I have attached a case of what I am trying to do, I'm pretty sure I'm just missing some simple API call. In the cfg you can see that although Im setting "lsr.iv441" as "lsr.iv44" from for.body.387.i it's not propagating that through the block or graph. On Wed, Mar 7, 2012 at 12:03 PM, Ryan Taylor <ryta1203 at gmail.com> wrote: > I am splitting a one BB
2012 Mar 07
4
[LLVMdev] Updating value from PHI
I am splitting a one BB loop into two BB. Basically, the one loop BB has 3 incoming values, one form back edge two from other edges. I want to extract the PHIs from the other two edges out into it's own BB and delete that from the loop, then redirect the backedge to the loopbody (non extracted portion) and create a new PHI coming from the extracted BB and the backedge. I can do this;
2013 Mar 02
2
[LLVMdev] Question about method CodeExtractor::severSplitPHINodes
...->addIncoming(PN->getIncomingValue <http://llvm.org/docs/doxygen/html/classllvm_1_1PHINode.html#aba6a4cc4ed6d6fef3664b8d65ef04820>(i), PN->getIncomingBlock <http://llvm.org/docs/doxygen/html/classllvm_1_1PHINode.html#a4c25b6c00c4867281779c81ab64d2081>(i));00256 PN->removeIncomingValue <http://llvm.org/docs/doxygen/html/classllvm_1_1PHINode.html#a6f01dbe965b38186b1a78378689d4105>(i);00257 --i;00258 }00259 }00260 }00261 }00262 } -- Wei -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/p...