Skip to content
  1. Jun 21, 2012
  2. Jun 20, 2012
    • Jakob Stoklund Olesen's avatar
      Avoid iterating with LiveIntervals::iterator. · a1f43dcd
      Jakob Stoklund Olesen authored
      That is a DenseMap iterator keyed by pointers, so the iteration order is
      nondeterministic.
      
      I would like to replace the DenseMap with an IndexedMap which doesn't
      allow iteration.
      
      llvm-svn: 158856
      a1f43dcd
    • Akira Hatanaka's avatar
      Revert r158846. · 87505f46
      Akira Hatanaka authored
      llvm-svn: 158855
      87505f46
    • Akira Hatanaka's avatar
      In MipsDisassembler.cpp, instead of defining register class tables, use the ones · da448fe0
      Akira Hatanaka authored
      that are generated by TableGen and are already available in
      MipsGenRegisterInfo.inc. Suggested by Jakob Stoklund Olesen.
      
      Also, fix bug in function DecodeAFGR64RegisterClass.
      
      Patch by Vladimir Medic. 
      
      llvm-svn: 158846
      da448fe0
    • Kaelyn Uhrain's avatar
      Remove an "else" that snuck in after a "return" ;) · 4cb2e2dc
      Kaelyn Uhrain authored
      llvm-svn: 158844
      4cb2e2dc
    • Kaelyn Uhrain's avatar
      23fb5c3e
    • Pete Cooper's avatar
      Add users of a MERGE_VALUE node to the worklist to process again when the node... · fe5b84b4
      Pete Cooper authored
      Add users of a MERGE_VALUE node to the worklist to process again when the node is removed.  Sorry, no test case.  Foudn it by inspection of the code
      
      llvm-svn: 158839
      fe5b84b4
    • Jakob Stoklund Olesen's avatar
      Only update regunit live ranges that have been precomputed. · 833308d7
      Jakob Stoklund Olesen authored
      Regunit live ranges are computed on demand, so when mi-sched calls
      handleMove, some regunits may not have live ranges yet.
      
      That makes updating them easier: Just skip the non-existing ranges. They
      will be computed correctly from the rescheduled machine code when they
      are needed.
      
      llvm-svn: 158831
      833308d7
    • Nuno Lopes's avatar
      replace usage of EmitGEPOffset() with TargetData::getIndexedOffset() when the... · 3fa32f24
      Nuno Lopes authored
      replace usage of EmitGEPOffset() with TargetData::getIndexedOffset() when the GEP offset is known to be constant.
      With this change, we avoid relying on the IR Builder to constant fold the operations.
      
      No functionality change intended.
      
      llvm-svn: 158829
      3fa32f24
    • Jakob Stoklund Olesen's avatar
      Delete dead code. · d702e8fd
      Jakob Stoklund Olesen authored
      llvm-svn: 158827
      d702e8fd
    • Hal Finkel's avatar
      Add support for generating reg+reg (indexed) pre-inc loads on PPC. · ca542bef
      Hal Finkel authored
      llvm-svn: 158823
      ca542bef
    • Hal Finkel's avatar
      Fix DAGCombine to deal with ext-conversion of pre/post_inc loads. · 8a311385
      Hal Finkel authored
      The test case for this will come with the PPC indexed preinc loads commit.
      
      llvm-svn: 158822
      8a311385
    • Aaron Ballman's avatar
      Fixing a compiler warning in MSVC 10. · 421a5ba0
      Aaron Ballman authored
      llvm-svn: 158820
      421a5ba0
    • Chandler Carruth's avatar
      Remove 'static' from inline functions defined in header files. · 5c0997f0
      Chandler Carruth authored
      There is a pretty staggering amount of this in LLVM's header files, this
      is not all of the instances I'm afraid. These include all of the
      functions that (in my build) are used by a non-static inline (or
      external) function. Specifically, these issues were caught by the new
      '-Winternal-linkage-in-inline' warning.
      
      I'll try to just clean up the remainder of the clearly redundant "static
      inline" cases on functions (not methods!) defined within headers if
      I can do so in a reliable way.
      
      There were even several cases of a missing 'inline' altogether, or my
      personal favorite "static bool inline". Go figure. ;]
      
      llvm-svn: 158800
      5c0997f0
    • Chandler Carruth's avatar
      Fix two rather subtle internal vs. external linker issues. · c60fbe6b
      Chandler Carruth authored
      I'll admit I'm not entirely satisfied with this change, but it seemed
      the cleanest option. Other suggestions quite welcome
      
      The issue is that the traits specializations have static methods which
      return the typedef'ed PHI_iterator type. In both the IR and MI layers
      this is typedef'ed to a custom iterator class defined in an anonymous
      namespace giving the types and the functions returning them internal
      linkage. However, because the traits specialization is defined in the
      'llvm' namespace (where it has to be, specialized template lives there),
      and is in turn used in the templated implementation of the SSAUpdater.
      This led to the linkage conflict that Clang now warns about.
      
      The simplest solution to me was just to define the PHI_iterator as
      a nested class inside the trait specialization. That way it still
      doesn't get scoped widely, it can't be accidentally reused somewhere,
      etc. This is a little gross just because nested class definitions are
      a little gross, but the alternatives seem more ad-hoc.
      
      llvm-svn: 158799
      c60fbe6b
    • Craig Topper's avatar
      Add predicate check around some patterns. · 21d04fc1
      Craig Topper authored
      llvm-svn: 158797
      21d04fc1
    • Craig Topper's avatar
      Add predicate check around some patterns. · 3b662a62
      Craig Topper authored
      llvm-svn: 158795
      3b662a62
    • Craig Topper's avatar
      Don't insert 128-bit UNDEF into 256-bit vectors. Just keep the 256-bit vector.... · b9e8e189
      Craig Topper authored
      Don't insert 128-bit UNDEF into 256-bit vectors. Just keep the 256-bit vector. Original patch by Elena Demikhovsky. Tweaked by me to allow possibility of covering more cases.
      
      llvm-svn: 158792
      b9e8e189
    • Andrew Trick's avatar
      A new algorithm for computing LoopInfo. Temporarily disabled. · ff2ed7b6
      Andrew Trick authored
      -stable-loops enables a new algorithm for generating the Loop
      forest. It differs from the original algorithm in a few respects:
      
      - Not determined by use-list order.
      - Initially guarantees RPO order of block and subloops.
      - Linear in the number of CFG edges.
      - Nonrecursive.
      
      I didn't want to change the LoopInfo API yet, so the block lists are
      still inclusive. This seems strange to me, and it means that building
      LoopInfo is not strictly linear, but it may not be a problem in
      practice. At least the block lists start out in RPO order now. In the
      future we may add an attribute or wrapper analysis that allows other
      passes to assume RPO order.
      
      The primary motivation of this work was not to optimize LoopInfo, but
      to allow reproducing performance issues by decomposing the compilation
      stages. I'm often unable to do this with the current LoopInfo, because
      the loop tree order determines Loop pass order. Serializing the IR
      tends to invert the order, which reverses the optimization order. This
      makes it nearly impossible to debug interdependent loop optimizations
      such as LSR.
      
      I also believe this will provide more stable performance results across time.
      
      llvm-svn: 158790
      ff2ed7b6
    • Francois Pichet's avatar
      Unbreak the MSVC build: add return to unimplemented functions. · 5dc987a3
      Francois Pichet authored
      llvm-svn: 158788
      5dc987a3
    • Andrew Trick's avatar
      Move the implementation of LoopInfo into LoopInfoImpl.h. · cda51d43
      Andrew Trick authored
      The implementation only needs inclusion from LoopInfo.cpp and
      MachineLoopInfo.cpp. Clients of the interface should only include the
      interface. This makes the interface readable and speeds up rebuilds
      after modifying the implementation.
      
      llvm-svn: 158787
      cda51d43
    • Nick Kledzik's avatar
      Add permissions(), map_file_pages(), and unmap_file_pages() to llvm::sys::fs... · 18497e92
      Nick Kledzik authored
      Add permissions(), map_file_pages(), and unmap_file_pages() to llvm::sys::fs and add unit test. Unix is implemented.  Windows side needs to be implemented.
      
      llvm-svn: 158770
      18497e92
    • Kaelyn Uhrain's avatar
      Don't assert when given an empty range. · 2212f807
      Kaelyn Uhrain authored
      llvm::RawMemoryObject handles empty ranges just fine, and the assert can
      be triggered in the wild by e.g. invoking clang with a file that
      included an empty pre-compiled header file when clang has been built
      with assertions enabled. Without assertions enabled, clang will properly
      report that the empty file is not a valid PCH.
      
      llvm-svn: 158769
      2212f807
    • Jakob Stoklund Olesen's avatar
      Add regunit liveness support to LiveIntervals::handleMove(). · 3802bbf3
      Jakob Stoklund Olesen authored
      When LiveIntervals is tracking fixed interference in regunits, make sure
      to update those intervals as well. Currently guarded by -live-regunits.
      
      llvm-svn: 158766
      3802bbf3
    • Chad Rosier's avatar
      Tidy up. · 651f9a48
      Chad Rosier authored
      llvm-svn: 158762
      651f9a48
    • Chad Rosier's avatar
      Add an ensureMaxAlignment() function to MachineFrameInfo (analogous to · 73696927
      Chad Rosier authored
      ensureAlignment() in MachineFunction).  Also, drop setMaxAlignment() in
      favor of this new function.  This creates a main entry point to setting
      MaxAlignment, which will be helpful for future work.  No functionality
      change intended.
      
      llvm-svn: 158758
      73696927
    • Lang Hames's avatar
      Add DAG-combines for aggressive FMA formation. · 39fb1d08
      Lang Hames authored
      This patch adds DAG combines to form FMAs from pairs of FADD + FMUL or
      FSUB + FMUL. The combines are performed when:
      (a) Either
            AllowExcessFPPrecision option (-enable-excess-fp-precision for llc)
              OR
            UnsafeFPMath option (-enable-unsafe-fp-math)
          are set, and
      (b) TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) is true for the type of
          the FADD/FSUB, and
      (c) The FMUL only has one user (the FADD/FSUB).
      
      If your target has fast FMA instructions you can make use of these combines by
      overriding TargetLoweringInfo::isFMAFasterThanMulAndAdd(VT) to return true for
      types supported by your FMA instruction, and adding patterns to match ISD::FMA
      to your FMA instructions.
      
      llvm-svn: 158757
      39fb1d08
    • Jakob Stoklund Olesen's avatar
      80 col. · 2db1125b
      Jakob Stoklund Olesen authored
      llvm-svn: 158755
      2db1125b
  3. Jun 19, 2012
Loading