[llvm] [LAA] Clean up APInt-overflow related code (NFC) (PR #140048)

Florian Hahn via llvm-commits llvm-commits at lists.llvm.org
Sun May 18 13:26:29 PDT 2025


================
@@ -0,0 +1,73 @@
+; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 5
+; RUN: opt -passes='print<access-info>' -disable-output %s 2>&1 | FileCheck %s
+
+define void @forward_i128_offset_difference(ptr %this, i128 %loop.limit) {
+; CHECK-LABEL: 'forward_i128_offset_difference'
+; CHECK-NEXT:    loop:
+; CHECK-NEXT:      Memory dependences are safe
+; CHECK-NEXT:      Dependences:
+; CHECK-NEXT:        Forward:
+; CHECK-NEXT:            store i64 1, ptr %c, align 8 ->
+; CHECK-NEXT:            store i64 2, ptr %d, align 8
+; CHECK-EMPTY:
+; CHECK-NEXT:      Run-time memory checks:
+; CHECK-NEXT:      Grouped accesses:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Non vectorizable stores to invariant address were not found in loop.
+; CHECK-NEXT:      SCEV assumptions:
+; CHECK-EMPTY:
+; CHECK-NEXT:      Expressions re-written:
+;
+entry:
+  br label %loop
+loop:
+  %iv = phi i128 [ 0, %entry ], [ %iv.next, %loop ]
+  %iv.mul.8 = mul i128 %iv, 8
+  %c = getelementptr i8, ptr %this, i128 %iv.mul.8
+  store i64 1, ptr %c, align 8
+  %iv.off = add i128 %iv.mul.8, u0x00FFFFFFFFFFFFFFFF
+  %d = getelementptr i8, ptr %this, i128 %iv.off
+  store i64 2, ptr %d, align 8
+  %iv.next = add nuw nsw i128 %iv, 1
+  %exit.cond = icmp ult i128 %iv.next, %loop.limit
+  br i1 %exit.cond, label %loop, label %exit
+exit:
----------------
fhahn wrote:

```suggestion
  br i1 %exit.cond, label %loop, label %exit
  
exit:
```

https://github.com/llvm/llvm-project/pull/140048


More information about the llvm-commits mailing list