Skip to content
  1. May 06, 2020
  2. May 05, 2020
  3. May 04, 2020
  4. May 03, 2020
    • Hongtao Yu's avatar
      [ICP] Handling must tail calls in indirect call promotion · 911e06f5
      Hongtao Yu authored
      Per the IR convention, a musttail call must precede a ret with an optional bitcast. This was violated by the indirect call promotion optimization which could result an IR like:
      
          ; <label>:2192:
            br i1 %2198, label %2199, label %2201, !dbg !226012, !prof !229483
      
          ; <label>:2199:                                   ; preds = %2192
            musttail call fastcc void @foo(i8* %2195), !dbg !226012
            br label %2202, !dbg !226012
      
          ; <label>:2201:                                   ; preds = %2192
            musttail call fastcc void %2197(i8* %2195), !dbg !226012
            br label %2202, !dbg !226012
      
          ; <label>:2202:                                   ; preds = %605, %2201, %2199
            ret void, !dbg !229485
      
      This is being fixed in this change where the return statement goes together with the promoted indirect call. The code generated is like:
      
          ; <label>:2192:
            br i1 %2198, label %2199, label %2201, !dbg !226012, !prof !229483
      
          ; <label>:2199:                                   ; preds = %2192
            musttail call fastcc void @foo(i8* %2195), !dbg !226012
            ret void, !dbg !229485
      
          ; <label>:2201:                                   ; preds = %2192
            musttail call fastcc void %2197(i8* %2195), !dbg !226012
            ret void, !dbg !229485
      
      Differential Revision: https://reviews.llvm.org/D79258
      911e06f5
  5. May 02, 2020
  6. Apr 30, 2020
    • Florian Hahn's avatar
      [LoopVersioning] Update setAliasChecks to take ArrayRef argument (NFC). · 19ab53f1
      Florian Hahn authored
      This cleanup was suggested as part of D78458.
      19ab53f1
    • Nikita Popov's avatar
      [InlineFunction] Disable emission of alignment assumptions by default · b74c6d2c
      Nikita Popov authored
      In D74183 clang started emitting alignment for sret parameters
      unconditionally. This caused a 1.5% compile-time regression on
      tramp3d-v4. The reason is that we now generate many instance of IR like
      
          %ptrint = ptrtoint %class.GuardLayers* %guards_m to i64
          %maskedptr = and i64 %ptrint, 3
          %maskcond = icmp eq i64 %maskedptr, 0
          tail call void @llvm.assume(i1 %maskcond)
      
      to preserve the alignment information during inlining. Based on IR
      analysis, these assumptions also regress optimization. The attached
      phase ordering test case illustrates two issues: One are instruction
      count based optimization heuristics, which are affected by the four
      additional instructions of the assumption. The other is blocking of
      SROA due to ptrtoint casts (PR45763).
      
      We already encountered the same problem in Rust, where we (unlike
      Clang) generally prefer to emit alignment information absolutely
      everywhere it is available. We were only able to do this after
      hardcoding -preserve-alignment-assumptions-during-inlining=false,
      because we were seeing significant optimization and compile-time
      regressions otherwise.
      
      This patch disables -preserve-alignment-assumptions-during-inlining
      by default, because we should not be punishing people for adding
      more alignment annotations.
      
      Once the assume bundle work shakes out and we can represent (and use)
      alignment assumptions using assume bundles, it should be possible to
      re-enable this with reduced overhead.
      
      Differential Revision: https://reviews.llvm.org/D76886
      b74c6d2c
    • Arthur Eubanks's avatar
      [NFC] Rename *ByValOrInalloca* to *PassPointeeByValue* · a90948fd
      Arthur Eubanks authored
      Summary: In preparation for preallocated.
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D79152
      a90948fd
    • Mircea Trofin's avatar
      [llvm][NFC] Use CallBase explicitly instead of Instruction in FunctionComparator · 3ab319b2
      Mircea Trofin authored
      Reviewers: dblaikie, craig.topper
      
      Subscribers: hiraditya, llvm-commits
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D79098
      3ab319b2
  7. Apr 29, 2020
  8. Apr 28, 2020
  9. Apr 27, 2020
  10. Apr 25, 2020
  11. Apr 24, 2020
  12. Apr 23, 2020
  13. Apr 22, 2020
    • Christopher Tetreault's avatar
      [SVE] Add new VectorType subclasses · 2dea3f12
      Christopher Tetreault authored
      Summary:
      Introduce new types for fixed width and scalable vectors.
      
      Does not remove getNumElements yet so as to not break code during transition
      period.
      
      Reviewers: deadalnix, efriedma, sdesmalen, craig.topper, huntergr
      
      Reviewed By: sdesmalen
      
      Subscribers: jholewinski, arsenm, jvesely, nhaehnle, mehdi_amini, rriddle, jpienaar, burmako, shauheen, antiagainst, nicolasvasilache, csigg, arpith-jacob, mgester, lucyrfox, liufengdb, kerbowa, Joonsoo, grosul1, frgossen, lldb-commits, tschuett, hiraditya, rkruppe, psnobl, llvm-commits
      
      Tags: #llvm, #lldb
      
      Differential Revision: https://reviews.llvm.org/D77587
      2dea3f12
    • Craig Topper's avatar
    • Sameer Sahasrabuddhe's avatar
      FixIrreducible: don't crash when moving a child loop · 5a7a6382
      Sameer Sahasrabuddhe authored
      Summary:
      When an irreducible SCC is converted into a new natural loop, existing
      loops included in that SCC now become children of the new loop. The
      logic that moves these loops from the parent loop to the new loop
      invoked undefined behaviour when it modified the container that it was
      iterating over. Fixed this by first extracting all the loops that are
      to be removed from the parent.
      
      Fixes bug 45623.
      
      Reviewed By: arsenm
      
      Differential Revision: https://reviews.llvm.org/D78544
      5a7a6382
  14. Apr 21, 2020
  15. Apr 20, 2020
  16. Apr 19, 2020
    • Florian Hahn's avatar
      [LoopUtils] Clean up includes, use forward decls if appropriate (NFC). · 7a87e8f9
      Florian Hahn authored
      Most of the includes in LoopUtils.h are not required in the header and
      they can be replaced by forward declarations.
      
      Unfortunately includes of TargetTransformInfo.h and IVDescriptors.h pull
      in a bunch of additional things, but there is no easy way to get rid of
      them at the moment I think.
      7a87e8f9
  17. Apr 18, 2020
Loading