Skip to content
  1. May 06, 2010
  2. May 05, 2010
  3. May 04, 2010
  4. May 03, 2010
  5. May 02, 2010
  6. May 01, 2010
    • Chris Lattner's avatar
      revert r102831. We already delete dead readonly calls in · b49a622f
      Chris Lattner authored
      other places, killing a valid transformation is not the right
      answer.
      
      llvm-svn: 102850
      b49a622f
    • Anton Korobeynikov's avatar
      Insert ANY_EXTEND node instead of invalid truncate during DAG Combining (X & 1), · 737718d4
      Anton Korobeynikov authored
      when needed. This fixes PR7001
      
      llvm-svn: 102838
      737718d4
    • Anton Korobeynikov's avatar
      Do folding for indirect branches, where possible · 319d71f4
      Anton Korobeynikov authored
      llvm-svn: 102836
      319d71f4
    • Anton Korobeynikov's avatar
      Implement indirect branches on MSP430 · ebbdfef2
      Anton Korobeynikov authored
      llvm-svn: 102835
      ebbdfef2
    • Owen Anderson's avatar
      Disable the call-deletion transformation introduced in r86975. Without · 550986ea
      Owen Anderson authored
      halting analysis, it is illegal to delete a call to a read-only function.
      The correct solution is almost certainly to add a "must halt" attribute and
      only allow deletions in its presence.
      
      XFAIL the relevant testcase for now.
      
      llvm-svn: 102831
      550986ea
    • Chris Lattner's avatar
      fix PR5009 by making CGSCCPM realize that a call was devirtualized · 532112b9
      Chris Lattner authored
      if an indirect call site was removed and a direct one was added, not
      just if an indirect call site was modified to be direct.
      
      llvm-svn: 102830
      532112b9
    • Chris Lattner's avatar
      rename test · c3bc80a0
      Chris Lattner authored
      llvm-svn: 102829
      c3bc80a0
    • Chris Lattner's avatar
      Implement rdar://6295824 and PR6724 with two tiny changes · fc8d9ee6
      Chris Lattner authored
      that can have a big effect :).  The first is to enable the
      iterative SCC passmanager juice that kicks in when the
      scc passmgr detects that a function pass has devirtualized
      a call.  In this case, it will rerun all the passes it 
      manages on the SCC, up to the iteration count limit (4). This
      is useful because a function pass may devirualize a call, and
      we want the inliner to inline it, or pruneeh to infer stuff
      about it, etc.
      
      The second patch is to add *all* call sites to the 
      DevirtualizedCalls list the inliner uses.  This list is
      about to get renamed, but the jist of this is that the 
      inliner now reconsiders *all* inlined call sites as candidates
      for further inlining.  The intuition is this that in cases 
      like this:
      
      f() { g(1); }     g(int x) { h(x); }
      
      We analyze this bottom up, and may decide that it isn't 
      profitable to inline H into G.  Next step, we decide that it is
      profitable to inline G into F, and do so, which means that F 
      now calls H.  Even though the call from G -> H may not have been
      profitable to inline, the call from F -> H may be (in this case
      because a constant allows folding etc).
      
      In my spot checks, this doesn't have a big impact on code.  For
      example, the LLC output for 252.eon grew from 0.02% (from
      317252 to 317308) and 176.gcc actually shrunk by .3% (from 1525612
      to 1520964 bytes).  252.eon never iterated in the SCC Passmgr,
      176.gcc iterated at most 1 time.
      
      llvm-svn: 102823
      fc8d9ee6
Loading