Skip to content
  1. Sep 06, 2007
    • David Greene's avatar
      · a6d5d2a6
      David Greene authored
      Add instruction dump output.  This helps find bugs.
      
      llvm-svn: 41744
      a6d5d2a6
    • David Greene's avatar
      · 65d2a697
      David Greene authored
      Pluggable coalescers inplementation.
      
      llvm-svn: 41743
      65d2a697
    • Evan Cheng's avatar
      Fix a memory leak. · d059eed1
      Evan Cheng authored
      llvm-svn: 41739
      d059eed1
  2. Sep 05, 2007
    • Evan Cheng's avatar
      Use pool allocator for all the VNInfo's to improve memory access locality.... · db53aef5
      Evan Cheng authored
      Use pool allocator for all the VNInfo's to improve memory access locality. This reduces coalescing time on siod Mac OS X PPC by 35%. Also remove the back ptr from VNInfo to LiveInterval and other tweaks.
      
      llvm-svn: 41729
      db53aef5
    • Duncan Sands's avatar
      Due to label merging, the last label for an invoke · 2c0a0fb7
      Duncan Sands authored
      may be the same as the first label for the following
      invoke.  Remove a micro-optimization which was wrong
      in this case.
      
      llvm-svn: 41720
      2c0a0fb7
    • Duncan Sands's avatar
      Fix PR1628. When exception handling is turned on, · 3c1b7fc0
      Duncan Sands authored
      labels are generated bracketing each call (not just
      invokes).  This is used to generate entries in
      the exception table required by the C++ personality.
      However it gets in the way of tail-merging.  This
      patch solves the problem by no longer placing labels
      around ordinary calls.  Instead we generate entries
      in the exception table that cover every instruction
      in the function that wasn't covered by an invoke
      range (the range given by the labels around the invoke).
      As an optimization, such entries are only generated for
      parts of the function that contain a call, since for
      the moment those are the only instructions that can
      throw an exception [1].  As a happy consequence, we
      now get a smaller exception table, since the same
      region can cover many calls.  While there, I also
      implemented folding of invoke ranges - successive
      ranges are merged when safe to do so.  Finally, if
      a selector contains only a cleanup, there's a special
      shorthand for it - place a 0 in the call-site entry.
      I implemented this while there.  As a result, the
      exception table output (excluding filters) is now
      optimal - it cannot be made smaller [2].  The
      problem with throw filters is that folding them
      optimally is hard, and the benefit of folding them is
      minimal.
      
      [1] I tested that having trapping instructions (eg
      divide by zero) in such a region doesn't cause trouble.
      [2] It could be made smaller with the help of higher
      layers, eg by having branch folding reorder basic blocks
      ending in invokes with the same landing pad so they
      follow each other.  I don't know if this is worth doing.
      
      llvm-svn: 41718
      3c1b7fc0
  3. Sep 04, 2007
  4. Sep 03, 2007
  5. Sep 01, 2007
  6. Aug 31, 2007
  7. Aug 30, 2007
  8. Aug 29, 2007
  9. Aug 28, 2007
  10. Aug 27, 2007
    • Dan Gohman's avatar
      Make DAGCombiner's global alias analysis query more precise in the case · 9625d812
      Dan Gohman authored
      where both pointers have non-zero offsets.
      
      llvm-svn: 41491
      9625d812
    • Dan Gohman's avatar
      If the source and destination pointers in an llvm.memmove are known · 8dc0b931
      Dan Gohman authored
      to not alias each other, it can be translated as an llvm.memcpy.
      
      llvm-svn: 41489
      8dc0b931
    • Duncan Sands's avatar
      There is an impedance matching problem between LLVM and · ef5a6542
      Duncan Sands authored
      gcc exception handling: if an exception unwinds through
      an invoke, then execution must branch to the invoke's
      unwind target.  We previously tried to enforce this by
      appending a cleanup action to every selector, however
      this does not always work correctly due to an optimization
      in the C++ unwinding runtime: if only cleanups would be
      run while unwinding an exception, then the program just
      terminates without actually executing the cleanups, as
      invoke semantics would require.  I was hoping this
      wouldn't be a problem, but in fact it turns out to be the
      cause of all the remaining failures in the LLVM testsuite
      (these also fail with -enable-correct-eh-support, so turning
      on -enable-eh didn't make things worse!).  Instead we need
      to append a full-blown catch-all to the end of each
      selector.  The correct way of doing this depends on the
      personality function, i.e. it is language dependent, so
      can only be done by gcc.  Thus this patch which generalizes
      the eh.selector intrinsic so that it can handle all possible
      kinds of action table entries (before it didn't accomodate
      cleanups): now 0 indicates a cleanup, and filters have to be
      specified using the number of type infos plus one rather than
      the number of type infos.  Related gcc patches will cause
      Ada to pass a cleanup (0) to force the selector to always
      fire, while C++ will use a C++ catch-all (null).
      
      llvm-svn: 41484
      ef5a6542
    • Dan Gohman's avatar
      Add explicit keywords and remove spurious trailing semicolons. · 032d8982
      Dan Gohman authored
      llvm-svn: 41482
      032d8982
  11. Aug 26, 2007
  12. Aug 25, 2007
  13. Aug 24, 2007
  14. Aug 23, 2007
  15. Aug 22, 2007
  16. Aug 20, 2007
  17. Aug 18, 2007
Loading