Skip to content
  1. Jun 12, 2020
  2. Jun 11, 2020
  3. Jun 10, 2020
  4. Jun 08, 2020
  5. Jun 07, 2020
  6. Jun 06, 2020
  7. Jun 05, 2020
  8. Jun 04, 2020
  9. Jun 01, 2020
    • Sanjay Patel's avatar
      [InstNamer] use 'i' for Instructions, not 'tmp' · dd54432a
      Sanjay Patel authored
      As discussed in https://bugs.llvm.org/show_bug.cgi?id=45951 and
      D80584, the name 'tmp' is almost always a bad choice, but we have
      a legacy of regression tests with that name because it was baked
      into utils/update_test_checks.py.
      
      This change makes -instnamer more consistent (already using "arg"
      and "bb", the common LLVM shorthand). And it avoids the conflict
      in telling users of the FileCheck script to run "-instnamer" to
      create a better regression test and having that cause a warn/fail
      in update_test_checks.py.
      dd54432a
  10. May 30, 2020
  11. May 29, 2020
  12. May 28, 2020
  13. May 27, 2020
    • Rithik Sharma's avatar
      [CodeMoverUtils] Use dominator tree level to decide the direction of · eadf2959
      Rithik Sharma authored
      code motion
      
      Summary: Currently isSafeToMoveBefore uses DFS numbering for determining
      the relative position of instruction and insert point which is not
      always correct. This PR proposes the use of Dominator Tree depth for the
      same. If a node is at a higher level than the insert point then it is
      safe to say that we want to move in the forward direction.
      Authored By: RithikSharma
      Reviewer: Whitney, nikic, bmahjour, etiotto, fhahn
      Reviewed By: Whitney
      Subscribers: fhahn, hiraditya, llvm-commits
      Tag: LLVM
      Differential Revision: https://reviews.llvm.org/D80084
      eadf2959
    • David Green's avatar
      [UnJ] Update LI for inner nested loops · 70d4a202
      David Green authored
      This makes sure to correctly register the loop info of the children
      of unroll and jammed loops. It re-uses some code from the unroller for
      registering subloops.
      
      Differential Revision: https://reviews.llvm.org/D80619
      70d4a202
    • Djordje Todorovic's avatar
      [NFC][Debugify] Format the CheckModuleDebugify output · 65030821
      Djordje Todorovic authored
      This fixes the output of the check-debugify option.
      Without the patch an example of running the option:
      
      $ opt -check-debugify test.ll -S -o testDebugify.ll
      CheckModuleDebugifySkipping module without debugify metadata
      
      After the patch:
      
      $ opt -check-debugify test.ll -S -o testDebugify.ll
      CheckModuleDebugify: Skipping module without debugify metadata
      
      Differential Revision: https://reviews.llvm.org/D80553
      65030821
  14. May 26, 2020
    • Florian Hahn's avatar
      [LoopUnroll] Simplify latch/header block handling (NFC). · 5cf90d6c
      Florian Hahn authored
      I think the current code dealing with connecting the unrolled iterations
      is a bit more complicated than necessary currently. To connect the
      unrolled iterations, we have to update the unrolled latch blocks to
      branch to the header of the next unrolled iteration.
      
      We need to do this regardless whether the latch is exiting or not.
      
      Additionally, we try to turn the conditional branch in the exiting block
      to an unconditional one. This is an optimization only; alternatively we
      could leave the conditional branches in place and rely on other passes
      to simplify the conditions.
      
      Logically, this is a separate step from connecting the latches to the
      headers, but it is convenient to fold them into the same loop, if the
      latch is also exiting. For headers (or other non-latch exiting blocks,
      this is done separately).
      
      Hopefully the patch with additional comments makes things a bit clearer.
      
      Reviewers: efriedma, dmgreen, hfinkel, Whitney
      
      Reviewed By: efriedma
      
      Differential Revision: https://reviews.llvm.org/D80544
      5cf90d6c
    • Serge Pavlov's avatar
      [FPEnv] Intrinsic llvm.roundeven · 4d20e31f
      Serge Pavlov authored
      This intrinsic implements IEEE-754 operation roundToIntegralTiesToEven,
      and performs rounding to the nearest integer value, rounding halfway
      cases to even. The intrinsic represents the missed case of IEEE-754
      rounding operations and now llvm provides full support of the rounding
      operations defined by the standard.
      
      Differential Revision: https://reviews.llvm.org/D75670
      4d20e31f
  15. May 25, 2020
  16. May 23, 2020
  17. May 21, 2020
    • Ehud Katz's avatar
      [FlattenCFG] Fix `MergeIfRegion` in case then-path is empty · 111ddc57
      Ehud Katz authored
      In case the then-path of an if-region is empty, then merging with the
      else-path should be handled with the inverse of the condition (leading
      to that path).
      
      Fix PR37662
      
      Differential Revision: https://reviews.llvm.org/D78881
      111ddc57
    • Roman Lebedev's avatar
      [IndVarSimplify][LoopUtils] Avoid TOCTOU/ordering issues (PR45835) · b2df9612
      Roman Lebedev authored
      Summary:
      Currently, `rewriteLoopExitValues()`'s logic is roughly as following:
      > Loop over each incoming value in each PHI node.
      > Query whether the SCEV for that incoming value is high-cost.
      > Expand the SCEV.
      > Perform sanity check (`isValidRewrite()`, D51582)
      > Record the info
      > Afterwards, see if we can drop the loop given replacements.
      > Maybe perform replacements.
      
      The problem is that we interleave SCEV cost checking and expansion.
      This is A Problem, because `isHighCostExpansion()` takes special care
      to not bill for the expansions that were already expanded, and we can reuse.
      
      While it makes sense in general - if we know that we will expand some SCEV,
      all the other SCEV's costs should account for that, which might cause
      some of them to become non-high-cost too, and cause chain reaction.
      
      But that isn't what we are doing here. We expand *all* SCEV's, unconditionally.
      So every next SCEV's cost will be affected by the already-performed expansions
      for previous SCEV's. Even if we are not planning on keeping
      some of the expansions we performed.
      
      Worse yet, this current "bonus" depends on the exact PHI node
      incoming value processing order. This is completely wrong.
      
      As an example of an issue, see @dmajor's `pr45835.ll` - if we happen to have
      a PHI node with two(!) identical high-cost incoming values for the same basic blocks,
      we would decide first time around that it is high-cost, expand it,
      and immediately decide that it is not high-cost because we have an expansion
      that we could reuse (because we expanded it right before, temporarily),
      and replace the second incoming value but not the first one;
      thus resulting in a broken PHI.
      
      What we instead should do for now, is not perform any expansions
      until after we've queried all the costs.
      
      Later, in particular after `isValidRewrite()` is an assertion (D51582)
      we could improve upon that, but in a more coherent fashion.
      
      See [[ https://bugs.llvm.org/show_bug.cgi?id=45835 | PR45835 ]]
      
      Reviewers: dmajor, reames, mkazantsev, fhahn, efriedma
      
      Reviewed By: dmajor, mkazantsev
      
      Subscribers: smeenai, nikic, hiraditya, javed.absar, llvm-commits, dmajor
      
      Tags: #llvm
      
      Differential Revision: https://reviews.llvm.org/D79787
      b2df9612
    • Benjamin Kramer's avatar
Loading