[llvm] [InstCombine] Remove redundant alignment assumptions. (PR #123348)

Nikita Popov via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 1 12:50:17 PDT 2025


================
@@ -249,7 +258,48 @@ define ptr @redundant_assume_align_8_via_asume(ptr %p) {
   ret ptr %p
 }
 
+define void @redundant_arg_passed_to_intrinsic(ptr %dst, ptr %src) {
+; CHECK-LABEL: @redundant_arg_passed_to_intrinsic(
+; CHECK-NEXT:    call void @llvm.assume(i1 true) [ "align"(ptr [[DST:%.*]], i32 8) ]
+; CHECK-NEXT:    call void @bar()
+; CHECK-NEXT:    call void @llvm.assume(i1 true) [ "align"(ptr [[SRC:%.*]], i32 8) ]
+; CHECK-NEXT:    call void @llvm.memmove.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(16) [[DST]], ptr noundef nonnull align 8 dereferenceable(16) [[SRC]], i64 16, i1 false)
+; CHECK-NEXT:    ret void
+;
+  call void @llvm.assume(i1 true) [ "align"(ptr %dst, i32 8) ]
+  call void @bar()
+  call void @llvm.assume(i1 true) [ "align"(ptr %src, i32 8) ]
+  call void @llvm.memmove.p0.p0.i64(ptr align 8 %dst, ptr %src, i64 16, i1 false)
+  ret void
+}
+
+define void @test_store(ptr %ptr) {
+; CHECK-LABEL: @test_store(
+; CHECK-NEXT:  entry:
+; CHECK-NEXT:    call void @llvm.assume(i1 true) [ "align"(ptr [[PTR:%.*]], i64 2) ]
+; CHECK-NEXT:    store i16 0, ptr [[PTR]], align 1
+; CHECK-NEXT:    ret void
+;
+entry:
+  call void @llvm.assume(i1 true) [ "align"(ptr %ptr, i64 2) ]
+  store i16 0, ptr %ptr, align 1
+  ret void
+}
+
 declare void @foo(ptr)
+declare void @bar()
+
+; !align must have a constant integer alignment.
+define ptr @dont_fold_assume_align_not_constant_of_loaded_pointer_into_align_metadata(ptr %p, i64 %align) {
+; CHECK-LABEL: @dont_fold_assume_align_not_constant_of_loaded_pointer_into_align_metadata(
+; CHECK-NEXT:    [[P2:%.*]] = load ptr, ptr [[P:%.*]], align 8
+; CHECK-NEXT:    ret ptr [[P2]]
+;
+  %p2 = load ptr, ptr %p
+  call void @llvm.assume(i1 true) [ "align"(ptr %p2, i64 %align) ]
----------------
nikic wrote:

Why is this assume being dropped? It does not look redundant.

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


More information about the llvm-commits mailing list