@@ -8,15 +8,13 @@ declare void @llvm.assume(i1 noundef)
88define i32 @earlycse_entry (ptr %p ) {
99; CHECK-LABEL: define i32 @earlycse_entry(
1010; CHECK-SAME: ptr captures(none) [[P:%.*]]) local_unnamed_addr {
11- ; CHECK-NEXT: [[L_I:%.*]] = load ptr, ptr [[P]], align 8
12- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[L_I]], i64 4) ]
11+ ; CHECK-NEXT: [[L_I:%.*]] = load ptr, ptr [[P]], align 8, !align [[META0:![0-9]+]]
1312; CHECK-NEXT: [[L_ASSUME_ALIGNED_I_I:%.*]] = load i32, ptr [[L_I]], align 4
1413; CHECK-NEXT: [[R_I_I:%.*]] = tail call i32 @swap(i32 [[L_ASSUME_ALIGNED_I_I]])
1514; CHECK-NEXT: [[L_2_I:%.*]] = load ptr, ptr [[P]], align 8
1615; CHECK-NEXT: [[GEP_I:%.*]] = getelementptr i8, ptr [[L_2_I]], i64 4
1716; CHECK-NEXT: store ptr [[GEP_I]], ptr [[P]], align 8
18- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[GEP_I]], i64 4) ]
19- ; CHECK-NEXT: [[L_ASSUME_ALIGNED_I_I2:%.*]] = load i32, ptr [[GEP_I]], align 4
17+ ; CHECK-NEXT: [[L_ASSUME_ALIGNED_I_I2:%.*]] = load i32, ptr [[GEP_I]], align 1
2018; CHECK-NEXT: [[R_I_I3:%.*]] = tail call i32 @swap(i32 [[L_ASSUME_ALIGNED_I_I2]])
2119; CHECK-NEXT: [[L_2_I4:%.*]] = load ptr, ptr [[P]], align 8
2220; CHECK-NEXT: [[GEP_I5:%.*]] = getelementptr i8, ptr [[L_2_I4]], i64 4
@@ -31,8 +29,7 @@ define i32 @earlycse_entry(ptr %p) {
3129define i32 @earlycse_fn1 (ptr %p ) {
3230; CHECK-LABEL: define i32 @earlycse_fn1(
3331; CHECK-SAME: ptr captures(none) [[P:%.*]]) local_unnamed_addr {
34- ; CHECK-NEXT: [[L:%.*]] = load ptr, ptr [[P]], align 8
35- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[L]], i64 4) ]
32+ ; CHECK-NEXT: [[L:%.*]] = load ptr, ptr [[P]], align 8, !align [[META0]]
3633; CHECK-NEXT: [[L_ASSUME_ALIGNED_I:%.*]] = load i32, ptr [[L]], align 4
3734; CHECK-NEXT: [[R_I:%.*]] = tail call i32 @swap(i32 [[L_ASSUME_ALIGNED_I]])
3835; CHECK-NEXT: [[L_2:%.*]] = load ptr, ptr [[P]], align 8
@@ -67,8 +64,7 @@ declare i32 @swap(i32)
6764define void @sroa_align_entry (ptr %p ) {
6865; CHECK-LABEL: define void @sroa_align_entry(
6966; CHECK-SAME: ptr readonly captures(none) [[P:%.*]]) local_unnamed_addr #[[ATTR1:[0-9]+]] {
70- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[P]], i64 8) ]
71- ; CHECK-NEXT: [[DOT0_COPYLOAD_I_I_I:%.*]] = load i64, ptr [[P]], align 8
67+ ; CHECK-NEXT: [[DOT0_COPYLOAD_I_I_I:%.*]] = load i64, ptr [[P]], align 1
7268; CHECK-NEXT: [[TMP2:%.*]] = inttoptr i64 [[DOT0_COPYLOAD_I_I_I]] to ptr
7369; CHECK-NEXT: store i32 0, ptr [[TMP2]], align 4
7470; CHECK-NEXT: ret void
@@ -83,8 +79,7 @@ define void @sroa_align_entry(ptr %p) {
8379define ptr @sroa_fn1 (ptr %p ) {
8480; CHECK-LABEL: define ptr @sroa_fn1(
8581; CHECK-SAME: ptr readonly captures(none) [[P:%.*]]) local_unnamed_addr #[[ATTR2:[0-9]+]] {
86- ; CHECK-NEXT: [[L:%.*]] = load ptr, ptr [[P]], align 8
87- ; CHECK-NEXT: call void @llvm.assume(i1 true) [ "align"(ptr [[L]], i64 8) ]
82+ ; CHECK-NEXT: [[L:%.*]] = load ptr, ptr [[P]], align 8, !align [[META1:![0-9]+]]
8883; CHECK-NEXT: [[L_FN3_I_I:%.*]] = load i64, ptr [[L]], align 8
8984; CHECK-NEXT: [[I_I:%.*]] = inttoptr i64 [[L_FN3_I_I]] to ptr
9085; CHECK-NEXT: ret ptr [[I_I]]
@@ -118,3 +113,7 @@ define i64 @sroa_fn3(ptr %0) {
118113 %l.fn3 = load i64 , ptr %0 , align 1
119114 ret i64 %l.fn3
120115}
116+ ;.
117+ ; CHECK: [[META0]] = !{i64 4}
118+ ; CHECK: [[META1]] = !{i64 8}
119+ ;.
0 commit comments