Skip to content
  1. Aug 17, 2016
  2. Aug 16, 2016
  3. Aug 15, 2016
    • Teresa Johnson's avatar
      [ThinLTO] Remove functions resolved to available_externally from comdats · 6107a419
      Teresa Johnson authored
      Summary:
      thinLTOResolveWeakForLinkerModule needs to drop any preempted weak symbols
      that were converted to available_externally from comdats, otherwise we
      will get a verification failure (since available_externally is a
      declaration for the linker, and no declarations can be in a comdat).
      
      Reviewers: mehdi_amini
      
      Subscribers: llvm-commits, mehdi_amini
      
      Differential Revision: https://reviews.llvm.org/D23015
      
      llvm-svn: 278739
      6107a419
    • Reid Kleckner's avatar
      Revert "[SimplifyCFG] Rewrite SinkThenElseCodeToEnd" · 70a600b8
      Reid Kleckner authored
      This reverts commit r278660.
      
      It causes downstream assertion failure in InstCombine on shuffle
      instructions. Comes up in __mm_swizzle_epi32.
      
      llvm-svn: 278672
      70a600b8
    • James Molloy's avatar
      [SimplifyCFG] Rewrite SinkThenElseCodeToEnd · 9a3c82f5
      James Molloy authored
      The new version has several advantages:
        1) IMSHO it's more readable and neater
        2) It handles loads and stores properly
        3) It can handle any number of incoming blocks rather than just two. I'll be taking advantage of this in a followup patch.
      
      With this change we can now finally sink load-modify-store idioms such as:
      
          if (a)
            return *b += 3;
          else
            return *b += 4;
      
          =>
      
          %z = load i32, i32* %y
          %.sink = select i1 %a, i32 5, i32 7
          %b = add i32 %z, %.sink
          store i32 %b, i32* %y
          ret i32 %b
      
      When this works for switches it'll be even more powerful.
      
      llvm-svn: 278660
      9a3c82f5
    • James Molloy's avatar
      [LSR] Don't try and create post-inc expressions on non-rotated loops · 196ad082
      James Molloy authored
      If a loop is not rotated (for example when optimizing for size), the latch is not the backedge. If we promote an expression to post-inc form, we not only increase register pressure and add a COPY for that IV expression but for all IVs!
      
      Motivating testcase:
      
          void f(float *a, float *b, float *c, int n) {
            while (n-- > 0)
              *c++ = *a++ + *b++;
          }
      
      It's imperative that the pointer increments be located in the latch block and not the header block; if not, we cannot use post-increment loads and stores and we have to keep both the post-inc and pre-inc values around until the end of the latch which bloats register usage.
      
      llvm-svn: 278658
      196ad082
  4. Aug 14, 2016
  5. Aug 13, 2016
  6. Aug 12, 2016
Loading