Skip to content

Commit 7ac62f3

Browse files
committed
[InstCombine] Add load/select test with noundef/invariant.load.
Further extends the test coverage added in 1aff96b with a load with noundef and invariant.load metadata, which may trigger UB.
1 parent 56253c7 commit 7ac62f3

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

llvm/test/Transforms/InstCombine/loadstore-metadata.ll

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -186,9 +186,24 @@ entry:
186186
ret i32 %c
187187
}
188188

189+
; FIXME: Should preserve metadata on loads, except !noundef and !invariant.load.
190+
define ptr @preserve_load_metadata_after_select_transform1(i1 %c, ptr dereferenceable(8) %a, ptr dereferenceable(8) %b) {
191+
; CHECK-LABEL: @preserve_load_metadata_after_select_transform1(
192+
; CHECK-NEXT: entry:
193+
; CHECK-NEXT: [[B_VAL:%.*]] = load ptr, ptr [[B:%.*]], align 1
194+
; CHECK-NEXT: [[A_VAL:%.*]] = load ptr, ptr [[A:%.*]], align 1
195+
; CHECK-NEXT: [[L_SEL:%.*]] = select i1 [[C:%.*]], ptr [[B_VAL]], ptr [[A_VAL]]
196+
; CHECK-NEXT: ret ptr [[L_SEL]]
197+
;
198+
entry:
199+
%ptr.sel = select i1 %c, ptr %b, ptr %a
200+
%l.sel = load ptr, ptr %ptr.sel, align 1, !tbaa !0, !llvm.access.group !7, !dereferenceable !9, !noundef !{}, !invariant.load !7
201+
ret ptr %l.sel
202+
}
203+
189204
; FIXME: Should preserve metadata on loads.
190-
define double @preserve_load_metadata_after_select_transform(ptr %a, ptr %b) {
191-
; CHECK-LABEL: @preserve_load_metadata_after_select_transform(
205+
define double @preserve_load_metadata_after_select_transform2(ptr %a, ptr %b) {
206+
; CHECK-LABEL: @preserve_load_metadata_after_select_transform2(
192207
; CHECK-NEXT: entry:
193208
; CHECK-NEXT: [[L_A:%.*]] = load double, ptr [[A:%.*]], align 8
194209
; CHECK-NEXT: [[L_B:%.*]] = load double, ptr [[B:%.*]], align 8

0 commit comments

Comments
 (0)