[llvm-commits] [llvm] r85692 - /llvm/trunk/lib/Transforms/Scalar/GVN.cpp
Owen Anderson
resistor at mac.com
Sun Nov 1 01:18:48 PST 2009
Erm, nevermind. I had it backwards in my head. Sorry for the noise!
--Owen
On Oct 31, 2009, at 11:35 PM, Owen Anderson wrote:
> Chris,
>
> On Oct 31, 2009, at 3:11 PM, Chris Lattner wrote:
>
>> Author: lattner
>> Date: Sat Oct 31 17:11:15 2009
>> New Revision: 85692
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=85692&view=rev
>> Log:
>> Make sure PRE doesn't split crit edges from indirectbr.
>>
>> Modified:
>> llvm/trunk/lib/Transforms/Scalar/GVN.cpp
>>
>> Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp
>> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVN.cpp?rev=85692&r1=85691&r2=85692&view=diff
>>
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =
>> =====================================================================
>> --- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original)
>> +++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Sat Oct 31 17:11:15 2009
>> @@ -1810,7 +1810,7 @@
>>
>> /// performPRE - Perform a purely local form of PRE that looks for
>> diamond
>> /// control flow patterns and attempts to perform simple PRE at the
>> join point.
>> -bool GVN::performPRE(Function& F) {
>> +bool GVN::performPRE(Function &F) {
>> bool Changed = false;
>> SmallVector<std::pair<TerminatorInst*, unsigned>, 4> toSplit;
>> DenseMap<BasicBlock*, Value*> predMap;
>> @@ -1875,6 +1875,10 @@
>> // we would need to insert instructions in more than one pred.
>> if (NumWithout != 1 || NumWith == 0)
>> continue;
>> +
>> + // Don't do PRE across indirect branch.
>> + if (isa<IndirectBrInst>(PREPred->getTerminator()))
>> + continue;
>>
>> // We can't do PRE safely on a critical edge, so instead we
>> schedule
>> // the edge to be split and perform the PRE the next time we
>> iterate
>>
>
> This isn't correct. PREPred is the block in which the expression is
> already computed, so it never needs to split that edge. What you
> need to check is that none of the other predecessors is via an
> indirect branch, as PRE would possibly need to split those edges to
> insert instructions.
>
> --Owen
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20091101/bb557198/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2620 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20091101/bb557198/attachment.bin>
More information about the llvm-commits
mailing list