Displaying 4 results from an estimated 4 matches for "hoistivinc".
2016 Mar 23
6
LSR/SCEV problem/question
...d instruction re-use by picking
a more canonical insertion position in the case where a new insert position
block is not found.
The problem I have run into with this change is that it causes an insert
position instruction to be chosen which is later hoisted into a different
block by SCEVExpander::hoistIVInc(). This in turn makes the SCEVExpander
Builder InsertPt inconsistent (the instruction and block end up not
matching), which leads to an invalid instruction being inserted (with its
parent != its containing block).
Does anyone more familiar with the design of the LSR/SCEV interaction have
an op...
2016 Mar 24
0
LSR/SCEV problem/question
...picking a more canonical insertion
> position in the case where a new insert position block is not found.
>
> The problem I have run into with this change is that it causes an insert
> position instruction to be chosen which is later hoisted into a different
> block by SCEVExpander::hoistIVInc(). This in turn makes the SCEVExpander
When is the insert position moved? IOW, what is the "timeline" of
events?
There are two calls to hoistIVInc in SCEVExpander, in
getAddRecExprPHILiterally and in replaceCongruentIVs -- which one is
the problematic case?
> Builder InsertPt inco...
2016 Mar 30
0
LSR/SCEV problem/question
...ciently imaginative :) ). I think
IRBuilder::SetInsertPoint(Instruction *) is safe, since it always sets
BB and IP in sync with each other. So I think we basically need to
sync things at restoreIP() (which is called only once in the file) and
at places that potentially move insertion points (like hoistIVInc)
using something like
"Builder.SetInsertPoint(&*Builder.GetInsertPoint())". Are there any
other places that need to be fixed too?
We should also add a LSRInserter that asserts that the basic block
we're inserting into is the same as the insertee's parent.
-- Sanjoy
2016 Mar 23
0
LSR/SCEV problem/question
...struction re-use by picking a more canonical insertion position in the case where a new insert position block is not found.
> The problem I have run into with this change is that it causes an insert position instruction to be chosen which is later hoisted into a different block by SCEVExpander::hoistIVInc(). This in turn makes the SCEVExpander Builder InsertPt inconsistent (the instruction and block end up not matching), which leads to an invalid instruction being inserted (with its parent != its containing block).
>
> Does anyone more familiar with the design of the LSR/SCEV interaction ha...