[llvm] 7ac62f3 - [InstCombine] Add load/select test with noundef/invariant.load.
Florian Hahn via llvm-commits
llvm-commits at lists.llvm.org
Sat Nov 9 05:40:06 PST 2024
Author: Florian Hahn
Date: 2024-11-09T13:39:49Z
New Revision: 7ac62f33cffb618758edb6a0997c21b2319fbf9b
URL: https://github.com/llvm/llvm-project/commit/7ac62f33cffb618758edb6a0997c21b2319fbf9b
DIFF: https://github.com/llvm/llvm-project/commit/7ac62f33cffb618758edb6a0997c21b2319fbf9b.diff
LOG: [InstCombine] Add load/select test with noundef/invariant.load.
Further extends the test coverage added in 1aff96b3dfc with a load with
noundef and invariant.load metadata, which may trigger UB.
Added:
Modified:
llvm/test/Transforms/InstCombine/loadstore-metadata.ll
Removed:
################################################################################
diff --git a/llvm/test/Transforms/InstCombine/loadstore-metadata.ll b/llvm/test/Transforms/InstCombine/loadstore-metadata.ll
index 60546c30fd8ad1..dc9daf5265d370 100644
--- a/llvm/test/Transforms/InstCombine/loadstore-metadata.ll
+++ b/llvm/test/Transforms/InstCombine/loadstore-metadata.ll
@@ -186,9 +186,24 @@ entry:
ret i32 %c
}
+; FIXME: Should preserve metadata on loads, except !noundef and !invariant.load.
+define ptr @preserve_load_metadata_after_select_transform1(i1 %c, ptr dereferenceable(8) %a, ptr dereferenceable(8) %b) {
+; CHECK-LABEL: @preserve_load_metadata_after_select_transform1(
+; CHECK-NEXT: entry:
+; CHECK-NEXT: [[B_VAL:%.*]] = load ptr, ptr [[B:%.*]], align 1
+; CHECK-NEXT: [[A_VAL:%.*]] = load ptr, ptr [[A:%.*]], align 1
+; CHECK-NEXT: [[L_SEL:%.*]] = select i1 [[C:%.*]], ptr [[B_VAL]], ptr [[A_VAL]]
+; CHECK-NEXT: ret ptr [[L_SEL]]
+;
+entry:
+ %ptr.sel = select i1 %c, ptr %b, ptr %a
+ %l.sel = load ptr, ptr %ptr.sel, align 1, !tbaa !0, !llvm.access.group !7, !dereferenceable !9, !noundef !{}, !invariant.load !7
+ ret ptr %l.sel
+}
+
; FIXME: Should preserve metadata on loads.
-define double @preserve_load_metadata_after_select_transform(ptr %a, ptr %b) {
-; CHECK-LABEL: @preserve_load_metadata_after_select_transform(
+define double @preserve_load_metadata_after_select_transform2(ptr %a, ptr %b) {
+; CHECK-LABEL: @preserve_load_metadata_after_select_transform2(
; CHECK-NEXT: entry:
; CHECK-NEXT: [[L_A:%.*]] = load double, ptr [[A:%.*]], align 8
; CHECK-NEXT: [[L_B:%.*]] = load double, ptr [[B:%.*]], align 8
More information about the llvm-commits
mailing list