[llvm-branch-commits] [llvm-branch] r101197 - in /llvm/branches/Apple/Morbo: ./ include/llvm/CodeGen/MachineDominators.h lib/CodeGen/MachineSink.cpp lib/Transforms/IPO/FunctionAttrs.cpp test/CodeGen/X86/unreachable-loop-sinking.ll

Jakob Stoklund Olesen stoklund at 2pi.dk
Tue Apr 13 16:50:26 PDT 2010


Author: stoklund
Date: Tue Apr 13 18:50:26 2010
New Revision: 101197

URL: http://llvm.org/viewvc/llvm-project?rev=101197&view=rev
Log:
Merge 100454-100455 from trunk, stopping the infinite loop in MachineSinking.
$ svn merge -c 100454 https://llvm.org/svn/llvm-project/llvm/trunk
--- Merging r100454 into '.':
U    include/llvm/CodeGen/MachineDominators.h
$ svn merge -c 100455 https://llvm.org/svn/llvm-project/llvm/trunk
--- Merging r100455 into '.':
A    test/CodeGen/X86/unreachable-loop-sinking.ll
U    lib/CodeGen/MachineSink.cpp

Added:
    llvm/branches/Apple/Morbo/test/CodeGen/X86/unreachable-loop-sinking.ll
      - copied unchanged from r100455, llvm/trunk/test/CodeGen/X86/unreachable-loop-sinking.ll
Modified:
    llvm/branches/Apple/Morbo/   (props changed)
    llvm/branches/Apple/Morbo/include/llvm/CodeGen/MachineDominators.h
    llvm/branches/Apple/Morbo/lib/CodeGen/MachineSink.cpp
    llvm/branches/Apple/Morbo/lib/Transforms/IPO/FunctionAttrs.cpp   (props changed)

Propchange: llvm/branches/Apple/Morbo/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Apr 13 18:50:26 2010
@@ -1,2 +1,2 @@
 /llvm/branches/Apple/Hermes:96832,96835,96858,96870,96876,96879
-/llvm/trunk:98602,98604,98612,98615-98616,98675,98686,98743-98744,98768,98773,98778,98780,98810,98835,98839,98845,98855,98862,98881,98920,98977,99032-99033,99043,99196,99223,99263,99282-99284,99306,99319-99321,99324,99336,99378,99418,99423,99429,99455,99463,99465,99469,99484,99490,99492-99494,99507,99524,99537,99539-99540,99544,99570,99575,99598,99620,99629-99630,99636,99671,99692,99695,99697,99699,99722,99816,99836,99845-99846,99848,99850,99855,99879,99881-99883,99895,99899,99910,99916,99919,99952-99954,99957,99959,99974-99975,99982,99984-99986,99988,99992-99993,99995,99997-99999,100016,100035,100037-100038,100042,100044,100056,100072,100074,100081-100090,100092,100094-100095,100116,100134,100184,100209,100214-100218,100220-100221,100223-100225,100257,100261,100304,100332,100353,100384,100457,100478,100480,100487,100494,100497,100521,100553,100568,100584,100592,100609-100610,100710,100736,100742,100751,100804,100837,100892,100937,101011,101023,101075,101077,101079,101081,10
 1085,101154,101158,101162,101165,101181
+/llvm/trunk:98602,98604,98612,98615-98616,98675,98686,98743-98744,98768,98773,98778,98780,98810,98835,98839,98845,98855,98862,98881,98920,98977,99032-99033,99043,99196,99223,99263,99282-99284,99306,99319-99321,99324,99336,99378,99418,99423,99429,99455,99463,99465,99469,99484,99490,99492-99494,99507,99524,99537,99539-99540,99544,99570,99575,99598,99620,99629-99630,99636,99671,99692,99695,99697,99699,99722,99816,99836,99845-99846,99848,99850,99855,99879,99881-99883,99895,99899,99910,99916,99919,99952-99954,99957,99959,99974-99975,99982,99984-99986,99988,99992-99993,99995,99997-99999,100016,100035,100037-100038,100042,100044,100056,100072,100074,100081-100090,100092,100094-100095,100116,100134,100184,100209,100214-100218,100220-100221,100223-100225,100257,100261,100304,100332,100353,100384,100454-100455,100457,100478,100480,100487,100494,100497,100521,100553,100568,100584,100592,100609-100610,100710,100736,100742,100751,100804,100837,100892,100937,101011,101023,101075,101077,10
 1079,101081,101085,101154,101158,101162,101165,101181

Modified: llvm/branches/Apple/Morbo/include/llvm/CodeGen/MachineDominators.h
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Morbo/include/llvm/CodeGen/MachineDominators.h?rev=101197&r1=101196&r2=101197&view=diff
==============================================================================
--- llvm/branches/Apple/Morbo/include/llvm/CodeGen/MachineDominators.h (original)
+++ llvm/branches/Apple/Morbo/include/llvm/CodeGen/MachineDominators.h Tue Apr 13 18:50:26 2010
@@ -156,8 +156,13 @@
   inline void splitBlock(MachineBasicBlock* NewBB) {
     DT->splitBlock(NewBB);
   }
-  
-  
+
+  /// isReachableFromEntry - Return true if A is dominated by the entry
+  /// block of the function containing it.
+  bool isReachableFromEntry(MachineBasicBlock *A) {
+    return DT->isReachableFromEntry(A);
+  }
+
   virtual void releaseMemory();
   
   virtual void print(raw_ostream &OS, const Module*) const;

Modified: llvm/branches/Apple/Morbo/lib/CodeGen/MachineSink.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/branches/Apple/Morbo/lib/CodeGen/MachineSink.cpp?rev=101197&r1=101196&r2=101197&view=diff
==============================================================================
--- llvm/branches/Apple/Morbo/lib/CodeGen/MachineSink.cpp (original)
+++ llvm/branches/Apple/Morbo/lib/CodeGen/MachineSink.cpp Tue Apr 13 18:50:26 2010
@@ -126,6 +126,11 @@
   // Can't sink anything out of a block that has less than two successors.
   if (MBB.succ_size() <= 1 || MBB.empty()) return false;
 
+  // Don't bother sinking code out of unreachable blocks. In addition to being
+  // unprofitable, it can also lead to infinite looping, because in an unreachable
+  // loop there may be nowhere to stop.
+  if (!DT->isReachableFromEntry(&MBB)) return false;
+
   bool MadeChange = false;
 
   // Walk the basic block bottom-up.  Remember if we saw a store.

Propchange: llvm/branches/Apple/Morbo/lib/Transforms/IPO/FunctionAttrs.cpp
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Apr 13 18:50:26 2010
@@ -1 +1 @@
-/llvm/trunk/lib/Transforms/IPO/FunctionAttrs.cpp:99196,99492,99507,99524,99539-99540,99636,99699,99816,99836,99845-99846,99848,99850,99855,99879,99881-99883,99895,99899,99910,99916,99919,99952-99954,99957,99959,99974-99975,99982,99984-99986,99988,99992-99993,99995,99997-99999,100016,100035,100038,100042,100044,100056,100072,100074,100081-100090,100092,100094-100095,100116,100132-100134,100137,100170,100184,100208-100209,100214-100218,100220-100221,100223-100225,100257,100261,100304,100384,100457,100478,100480,100487,100494,100497,100521,100553,100568,100584,100592,100609-100610,100710,100736,100742,100751,100804,100837,100892,100937,101011,101023,101075,101077,101079,101081,101085,101154,101158,101162,101165,101181
+/llvm/trunk/lib/Transforms/IPO/FunctionAttrs.cpp:99196,99492,99507,99524,99539-99540,99636,99699,99816,99836,99845-99846,99848,99850,99855,99879,99881-99883,99895,99899,99910,99916,99919,99952-99954,99957,99959,99974-99975,99982,99984-99986,99988,99992-99993,99995,99997-99999,100016,100035,100038,100042,100044,100056,100072,100074,100081-100090,100092,100094-100095,100116,100132-100134,100137,100170,100184,100208-100209,100214-100218,100220-100221,100223-100225,100257,100261,100304,100384,100454-100455,100457,100478,100480,100487,100494,100497,100521,100553,100568,100584,100592,100609-100610,100710,100736,100742,100751,100804,100837,100892,100937,101011,101023,101075,101077,101079,101081,101085,101154,101158,101162,101165,101181





More information about the llvm-branch-commits mailing list