[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