Skip to content
  1. Jul 26, 2013
    • Richard Osborne's avatar
      test commit · 240d480c
      Richard Osborne authored
      llvm-svn: 187195
      240d480c
    • Richard Osborne's avatar
      [XCore] Add TODO regarding byval structs · 2d0d8da2
      Richard Osborne authored
      llvm-svn: 187193
      2d0d8da2
    • Chandler Carruth's avatar
      Re-implement the analysis of uses in mem2reg to be significantly more · 9af38fc2
      Chandler Carruth authored
      robust. It now uses an InstVisitor and worklist to actually walk the
      uses of the Alloca transitively and detect the pattern which we can
      directly promote: loads & stores of the whole alloca and instructions we
      can completely ignore.
      
      Also, with this new implementation teach both the predicate for testing
      whether we can promote and the promotion engine itself to use the same
      code so we no longer have strange divergence between the two code paths.
      
      I've added some silly test cases to demonstrate that we can handle
      slightly more degenerate code patterns now. See the below for why this
      is even interesting.
      
      Performance impact: roughly 1% regression in the performance of SROA or
      ScalarRepl on a large C++-ish test case where most of the allocas are
      basically ready for promotion. The reason is because of silly redundant
      work that I've left FIXMEs for and which I'll address in the next
      commit. I wanted to separate this commit as it changes the behavior.
      Once the redundant work in removing the dead uses of the alloca is
      fixed, this code appears to be faster than the old version. =]
      
      So why is this useful? Because the previous requirement for promotion
      required a *specific* visit pattern of the uses of the alloca to verify:
      we *had* to look for no more than 1 intervening use. The end goal is to
      have SROA automatically detect when an alloca is already promotable and
      directly hand it to the mem2reg machinery rather than trying to
      partition and rewrite it. This is a 25% or more performance improvement
      for SROA, and a significant chunk of the delta between it and
      ScalarRepl. To get there, we need to make mem2reg actually capable of
      promoting allocas which *look* promotable to SROA without have SROA do
      tons of work to massage the code into just the right form.
      
      This is actually the tip of the iceberg. There are tremendous potential
      savings we can realize here by de-duplicating work between mem2reg and
      SROA.
      
      llvm-svn: 187191
      9af38fc2
    • Craig Topper's avatar
    • Craig Topper's avatar
    • Tobias Grosser's avatar
      Make .bc en/decoding of AttrKind stable · 0a8e12fd
      Tobias Grosser authored
      The bitcode representation attribute kinds are encoded into / decoded from
      should be independent of the current set of LLVM attributes and their position
      in the AttrKind enum. This patch explicitly encodes attributes to fixed bitcode
      values.
      
      With this patch applied, LLVM does not silently misread attributes written by
      LLVM 3.3. We also enhance the decoding slightly such that an error message is
      printed if an unknown AttrKind encoding was dected.
      
      Bonus: Dropping bitcode attributes from AttrKind is now easy, as old AttrKinds
             do not need to be kept to support the Bitcode reader.
      llvm-svn: 187186
      0a8e12fd
    • Craig Topper's avatar
    • Bill Schmidt's avatar
      [PowerPC] Support powerpc64le as a syntax-checking target. · 0a9170d9
      Bill Schmidt authored
      This patch provides basic support for powerpc64le as an LLVM target.
      However, use of this target will not actually generate little-endian
      code.  Instead, use of the target will cause the correct little-endian
      built-in defines to be generated, so that code that tests for
      __LITTLE_ENDIAN__, for example, will be correctly parsed for
      syntax-only testing.  Code generation will otherwise be the same as
      powerpc64 (big-endian), for now.
      
      The patch leaves open the possibility of creating a little-endian
      PowerPC64 back end, but there is no immediate intent to create such a
      thing.
      
      The LLVM portions of this patch simply add ppc64le coverage everywhere
      that ppc64 coverage currently exists.  There is nothing of any import
      worth testing until such time as little-endian code generation is
      implemented.  In the corresponding Clang patch, there is a new test
      case variant to ensure that correct built-in defines for little-endian
      code are generated.
      
      llvm-svn: 187179
      0a9170d9
    • Bill Wendling's avatar
      Add a bool->StringRef c'tor to StringRef. · bbf5a323
      Bill Wendling authored
      llvm-svn: 187166
      bbf5a323
    • Hans Wennborg's avatar
      Phabricator.rst: tiny fix · ac1d6a0c
      Hans Wennborg authored
      llvm-svn: 187164
      ac1d6a0c
    • Aaron Ballman's avatar
      Using a different loop induction variable than the enclosing scope. No... · 13235dad
      Aaron Ballman authored
      Using a different loop induction variable than the enclosing scope.  No functional changes intended.
      
      llvm-svn: 187159
      13235dad
  2. Jul 25, 2013
Loading