[llvm] [Analysis] Add Scalable field in MemoryLocation.h (PR #65759)

David Green via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 20 01:03:12 PDT 2023


================
@@ -0,0 +1,33 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
----------------
davemgreen wrote:

It might be worth changing this to a test that prints the alias sets. I was trying these:
```
; RUN: opt -S < %s -passes=print-alias-sets 2>&1 | FileCheck %s

; CHECK-LABEL: Alias sets for function 'sn'
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Pointers: (ptr %p, unknown after)
define void @sn(ptr %p) {
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  store i64 0, ptr %p, align 2
  ret void
}

; CHECK-LABEL: Alias sets for function 'ns'
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Pointers: (ptr %p, unknown after)
define void @ns(ptr %p) {
  store i64 0, ptr %p, align 2
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  ret void
}

; CHECK-LABEL: Alias sets for function 'ss'
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Pointers: (ptr %p, LocationSize::precise(vscale x vscale x 16))
define void @ss(ptr %p) {
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  ret void
}

; CHECK-LABEL: Alias sets for function 'sn'
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Pointers: (ptr %p, unknown after)
define void @son(ptr %p) {
  %g = getelementptr i8, ptr %p, i64 8
  store <vscale x 2 x i64> zeroinitializer, ptr %g, align 2
  store i64 0, ptr %p, align 2
  ret void
}

; CHECK-LABEL: Alias sets for function 'sn'
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Pointers: (ptr %p, unknown after)
define void @sno(ptr %p) {
  %g = getelementptr i8, ptr %p, i64 8
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  store i64 0, ptr %g, align 2
  ret void
}

; CHECK-LABEL: Alias sets for function 'ns'
; CHECK: AliasSet[{{.*}}, 1] must alias, Mod       Pointers: (ptr %p, unknown after)
define void @ns(ptr %p) {
  store i64 0, ptr %p, align 2
  store <vscale x 2 x i64> zeroinitializer, ptr %p, align 2
  ret void
}
```
The `vscale x` seems to be printed twice now, after the switch to TypeSize?

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


More information about the llvm-commits mailing list