[llvm-commits] [llvm] r134428 - /llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp
Evan Cheng
evan.cheng at apple.com
Wed Jul 6 12:36:19 PDT 2011
A greedy neural network?! :-)
Evan
On Jul 5, 2011, at 11:46 AM, Jakob Stoklund Olesen wrote:
> Author: stoklund
> Date: Tue Jul 5 13:46:42 2011
> New Revision: 134428
>
> URL: http://llvm.org/viewvc/llvm-project?rev=134428&view=rev
> Log:
> Break infinite loop when the Hopfield network oscillates.
>
> This is impossible in theory, I can prove it. In practice, our near-zero
> threshold can cause the network to oscillate between equally good
> solutions.
>
> <rdar://problem/9720596>
>
> Modified:
> llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp
>
> Modified: llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp?rev=134428&r1=134427&r2=134428&view=diff
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp (original)
> +++ llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp Tue Jul 5 13:46:42 2011
> @@ -649,8 +649,6 @@
>
> for (;;) {
> ArrayRef<unsigned> NewBundles = SpillPlacer->getRecentPositive();
> - if (NewBundles.empty())
> - break;
> // Find new through blocks in the periphery of PrefRegBundles.
> for (int i = 0, e = NewBundles.size(); i != e; ++i) {
> unsigned Bundle = NewBundles[i];
> @@ -670,12 +668,12 @@
> }
> }
> // Any new blocks to add?
> - if (ActiveBlocks.size() > AddedTo) {
> - ArrayRef<unsigned> Add(&ActiveBlocks[AddedTo],
> - ActiveBlocks.size() - AddedTo);
> - addThroughConstraints(Intf, Add);
> - AddedTo = ActiveBlocks.size();
> - }
> + if (ActiveBlocks.size() == AddedTo)
> + break;
> + addThroughConstraints(Intf,
> + ArrayRef<unsigned>(ActiveBlocks).slice(AddedTo));
> + AddedTo = ActiveBlocks.size();
> +
> // Perhaps iterating can enable more bundles?
> SpillPlacer->iterate();
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list