[PATCH] D144050: [SCEV] Strengthen nowrap flags via ranges for ARs on construction.

Florian Hahn via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 24 12:04:37 PST 2023


fhahn marked 2 inline comments as done.
fhahn added inline comments.


================
Comment at: llvm/test/Analysis/ScalarEvolution/addrec-computed-during-addrec-calculation.ll:15
 ; CHECK-NEXT:    %iv2 = phi i32 [ %iv, %loop.header ], [ %iv2.next, %loop2 ]
-; CHECK-NEXT:    --> {%iv,+,1}<nsw><%loop2> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Computable, %loop.header: Variant }
+; CHECK-NEXT:    --> {%iv,+,1}<%loop2> U: full-set S: full-set Exits: <<Unknown>> LoopDispositions: { %loop2: Computable, %loop.header: Variant }
 ; CHECK-NEXT:    %iv2.next = add i32 %iv2, 1
----------------
nikic wrote:
> Regression
This one seems to be caused by `proveNoSignedWrapViaInduction` failing to strengthen flags later due to different evaluation order for an AddRec that's computed when building another AddRec after strengthening flags earlier here. This could be fixed by also strengthening using `proveNoSignedWrapViaInduction ` earlier as in D144753


================
Comment at: llvm/test/Analysis/ScalarEvolution/incorrect-exit-count.ll:20
 ; CHECK-NEXT:    %storemerge1921 = phi i32 [ 3, %outer.loop ], [ %dec, %for.end ]
-; CHECK-NEXT:    --> {3,+,-1}<nuw><nsw><%for.cond6> U: [3,4) S: [3,4) Exits: <<Unknown>> LoopDispositions: { %for.cond6: Computable, %outer.loop: Variant }
+; CHECK-NEXT:    --> {3,+,-1}<nsw><%for.cond6> U: [3,4) S: [3,4) Exits: <<Unknown>> LoopDispositions: { %for.cond6: Computable, %outer.loop: Variant }
 ; CHECK-NEXT:    %idxprom20 = zext i32 %storemerge1921 to i64
----------------
nikic wrote:
> Regression
I still need to investigate this one.


================
Comment at: llvm/test/Transforms/LoopUnroll/peel-loop-conditions.ll:648
 ; Comparison with non-monotonic predicate due to possible wrapping, loop
 ; body cannot be simplified.
 define void @test8(i32 %k) {
----------------
nikic wrote:
> Comment might need an update.
Remove the comment. `%i.05` is in range from [0, 3)  for `%inc = add i32 %i.05, 1`, so inferring nsw should be correct.


================
Comment at: llvm/test/Transforms/LoopVectorize/X86/load-deref-pred.ll:104
 ; CHECK-NEXT:    [[EXIT:%.*]] = icmp ugt i64 [[IV]], 4094
-; CHECK-NEXT:    br i1 [[EXIT]], label [[LOOP_EXIT]], label [[LOOP]], !llvm.loop [[LOOP2:![0-9]+]]
+; CHECK-NEXT:    br i1 [[EXIT]], label [[LOOP_EXIT]], label [[LOOP]], !llvm.loop [[LOOP3:![0-9]+]]
 ; CHECK:       loop_exit:
----------------
nikic wrote:
> Looks like a spurious test regeneration change?
Yep, undid the changes. 


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D144050/new/

https://reviews.llvm.org/D144050



More information about the llvm-commits mailing list