Skip to content
  1. Jan 19, 2015
    • Chandler Carruth's avatar
      [PM] Remove the Pass argument from all of the critical edge splitting · 37df2cfb
      Chandler Carruth authored
      APIs and replace it and numerous booleans with an option struct.
      
      The critical edge splitting API has a really large surface of flags and
      so it seems worth burning a small option struct / builder. This struct
      can be constructed with the various preserved analyses and then flags
      can be flipped in a builder style.
      
      The various users are now responsible for directly passing along their
      analysis information. This should be enough for the critical edge
      splitting to work cleanly with the new pass manager as well.
      
      This API is still pretty crufty and could be cleaned up a lot, but I've
      focused on this change just threading an option struct rather than
      a pass through the API.
      
      llvm-svn: 226456
      37df2cfb
    • Chandler Carruth's avatar
      [PM] Relax asserts and always try to reconstruct loop simplify form when · ad34d913
      Chandler Carruth authored
      we can while splitting critical edges.
      
      The only code which called this and didn't require simplified loops to
      be preserved is polly, and the code behaves correctly there anyways.
      Without this change, it becomes really hard to share this code with the
      new pass manager where things like preserving loop simplify form don't
      make any sense.
      
      If anyone discovers this code behaving incorrectly, what it *should* be
      testing for is whether the loops it needs to be in simplified form are
      in fact in that form. It should always be trying to preserve that form
      when it exists.
      
      llvm-svn: 226443
      ad34d913
    • Chandler Carruth's avatar
      [PM] Lift the analyses into the interface for · 0eae1120
      Chandler Carruth authored
      SplitLandingPadPredecessors and remove the Pass argument from its
      interface.
      
      Another step to the utilities being usable with both old and new pass
      managers.
      
      llvm-svn: 226426
      0eae1120
  2. Jan 18, 2015
  3. Jan 17, 2015
    • Chandler Carruth's avatar
      [PM] Remove a dead field. · 24fd029a
      Chandler Carruth authored
      This was dead even before I refactored how we initialized it, but my
      refactoring made it trivially dead and it is now caught by a Clang
      warning. This fixes the warning and should clean up the -Werror bot
      failures (sorry!).
      
      llvm-svn: 226376
      24fd029a
    • Chandler Carruth's avatar
      [PM] Split the LoopInfo object apart from the legacy pass, creating · 4f8f307c
      Chandler Carruth authored
      a LoopInfoWrapperPass to wire the object up to the legacy pass manager.
      
      This switches all the clients of LoopInfo over and paves the way to port
      LoopInfo to the new pass manager. No functionality change is intended
      with this iteration.
      
      llvm-svn: 226373
      4f8f307c
  4. Jan 15, 2015
    • Chandler Carruth's avatar
      [PM] Separate the TargetLibraryInfo object from the immutable pass. · b98f63db
      Chandler Carruth authored
      The pass is really just a means of accessing a cached instance of the
      TargetLibraryInfo object, and this way we can re-use that object for the
      new pass manager as its result.
      
      Lots of delta, but nothing interesting happening here. This is the
      common pattern that is developing to allow analyses to live in both the
      old and new pass manager -- a wrapper pass in the old pass manager
      emulates the separation intrinsic to the new pass manager between the
      result and pass for analyses.
      
      llvm-svn: 226157
      b98f63db
    • David Majnemer's avatar
      SimplifyIndVar: Remove unused variable · f0982d0a
      David Majnemer authored
      OtherOperandIdx is not used anymore, remove it to silence warnings.
      
      llvm-svn: 226138
      f0982d0a
    • NAKAMURA Takumi's avatar
      24ebfcb6
    • Chandler Carruth's avatar
      [PM] Move TargetLibraryInfo into the Analysis library. · 62d4215b
      Chandler Carruth authored
      While the term "Target" is in the name, it doesn't really have to do
      with the LLVM Target library -- this isn't an abstraction which LLVM
      targets generally need to implement or extend. It has much more to do
      with modeling the various runtime libraries on different OSes and with
      different runtime environments. The "target" in this sense is the more
      general sense of a target of cross compilation.
      
      This is in preparation for porting this analysis to the new pass
      manager.
      
      No functionality changed, and updates inbound for Clang and Polly.
      
      llvm-svn: 226078
      62d4215b
    • Sanjoy Das's avatar
      Fix PR22222 · 8c252bde
      Sanjoy Das authored
      The bug was introduced in r225282. r225282 assumed that sub X, Y is
      the same as add X, -Y. This is not correct if we are going to upgrade
      the sub to sub nuw. This change fixes the issue by making the
      optimization ignore sub instructions.
      
      Differential Revision: http://reviews.llvm.org/D6979
      
      llvm-svn: 226075
      8c252bde
  5. Jan 14, 2015
  6. Jan 13, 2015
  7. Jan 12, 2015
  8. Jan 09, 2015
  9. Jan 08, 2015
    • Duncan P. N. Exon Smith's avatar
      Utils: Keep distinct MDNodes distinct in MapMetadata() · 953e1a48
      Duncan P. N. Exon Smith authored
      Create new copies of distinct `MDNode`s instead of following the
      uniquing `MDNode` logic.
      
      Just like self-references (or other cycles), `MapMetadata()` creates a
      new node.  In practice most calls use `RF_NoModuleLevelChanges`, in
      which case nothing is duplicated anyway.
      
      Part of PR22111.
      
      llvm-svn: 225476
      953e1a48
Loading