@@ -48,21 +48,21 @@ void test_indexing(struct Foo *f) {
4848
4949void test_indexing_2 (struct Foo * f ) {
5050 // X64-LABEL: define void @test_indexing_2(ptr noundef initializes((16, 24)) %f)
51- // X64: getelementptr inbounds i8, ptr addrspace(1) {{%[0-9]}}, i32 16
52- // X64: getelementptr inbounds i8, ptr {{%[0-9]}}, i64 24
51+ // X64: getelementptr inbounds nuw i8, ptr addrspace(1) {{%[0-9]}}, i32 16
52+ // X64: getelementptr inbounds nuw i8, ptr {{%[0-9]}}, i64 24
5353 f -> cp64 = ((char * * * __ptr32 * )1028 )[1 ][2 ][3 ];
5454 use_foo (f );
5555}
5656
5757unsigned long * test_misc () {
5858 // X64-LABEL: define ptr @test_misc()
59- // X64: %arrayidx = getelementptr inbounds i8, ptr addrspace(1) %0, i32 88
59+ // X64: %arrayidx = getelementptr inbounds nuw i8, ptr addrspace(1) %0, i32 88
6060 // X64-NEXT: %1 = load ptr, ptr addrspace(1) %arrayidx
61- // X64-NEXT: %arrayidx1 = getelementptr inbounds i8, ptr %1, i64 8
61+ // X64-NEXT: %arrayidx1 = getelementptr inbounds nuw i8, ptr %1, i64 8
6262 // X64-NEXT: %2 = load ptr, ptr %arrayidx1
63- // X64-NEXT: %arrayidx2 = getelementptr inbounds i8, ptr %2, i64 904
63+ // X64-NEXT: %arrayidx2 = getelementptr inbounds nuw i8, ptr %2, i64 904
6464 // X64-NEXT: %3 = load ptr, ptr %arrayidx2
65- // X64-NEXT: %arrayidx3 = getelementptr inbounds i8, ptr %3, i64 1192
65+ // X64-NEXT: %arrayidx3 = getelementptr inbounds nuw i8, ptr %3, i64 1192
6666 unsigned long * x = (unsigned long * )((char * * * * * __ptr32 * )1208 )[0 ][11 ][1 ][113 ][149 ];
6767 return x ;
6868}
@@ -71,9 +71,9 @@ char* __ptr32* __ptr32 test_misc_2() {
7171 // X64-LABEL: define ptr addrspace(1) @test_misc_2()
7272 // X64: br i1 %cmp, label %if.then, label %if.end
7373 // X64: %1 = load ptr addrspace(1), ptr inttoptr (i64 16 to ptr)
74- // X64-NEXT: %arrayidx = getelementptr inbounds i8, ptr addrspace(1) %1, i32 544
74+ // X64-NEXT: %arrayidx = getelementptr inbounds nuw i8, ptr addrspace(1) %1, i32 544
7575 // X64-NEXT: %2 = load ptr addrspace(1), ptr addrspace(1) %arrayidx
76- // X64-NEXT: %arrayidx1 = getelementptr inbounds i8, ptr addrspace(1) %2, i32 24
76+ // X64-NEXT: %arrayidx1 = getelementptr inbounds nuw i8, ptr addrspace(1) %2, i32 24
7777 // X64-NEXT: %3 = load ptr addrspace(1), ptr addrspace(1) %arrayidx1
7878 // X64-NEXT: store ptr addrspace(1) %3, ptr @test_misc_2.res
7979 // X64: ret ptr addrspace(1)
@@ -88,7 +88,7 @@ unsigned short test_misc_3() {
8888 // X64-LABEL: define zeroext i16 @test_misc_3()
8989 // X64: %0 = load ptr addrspace(1), ptr inttoptr (i64 548 to ptr)
9090 // X64-NEXT: %1 = addrspacecast ptr addrspace(1) %0 to ptr
91- // X64-NEXT: %arrayidx = getelementptr inbounds i8, ptr %1, i64 36
91+ // X64-NEXT: %arrayidx = getelementptr inbounds nuw i8, ptr %1, i64 36
9292 // X64-NEXT: %2 = load i16, ptr %arrayidx, align 2
9393 // X64-NEXT: ret i16 %2
9494 unsigned short this_asid = ((unsigned short * )(* (char * __ptr32 * )(0x224 )))[18 ];
@@ -97,10 +97,10 @@ unsigned short test_misc_3() {
9797
9898int test_misc_4 () {
9999 // X64-LABEL: define signext range(i32 0, 2) i32 @test_misc_4()
100- // X64: getelementptr inbounds i8, ptr addrspace(1) {{%[0-9]}}, i32 88
101- // X64: getelementptr inbounds i8, ptr {{%[0-9]}}, i64 8
102- // X64: getelementptr inbounds i8, ptr {{%[0-9]}}, i64 984
103- // X64: getelementptr inbounds i8, ptr %3, i64 80
100+ // X64: getelementptr inbounds nuw i8, ptr addrspace(1) {{%[0-9]}}, i32 88
101+ // X64: getelementptr inbounds nuw i8, ptr {{%[0-9]}}, i64 8
102+ // X64: getelementptr inbounds nuw i8, ptr {{%[0-9]}}, i64 984
103+ // X64: getelementptr inbounds nuw i8, ptr %3, i64 80
104104 // X64: icmp sgt i32 {{.*[0-9]}}, 67240703
105105 // X64: ret i32
106106 int a = (* (int * )(80 + ((char * * * * __ptr32 * )1208 )[0 ][11 ][1 ][123 ]) > 0x040202FF );
@@ -189,7 +189,7 @@ int test_function_ptr32_is_32bit() {
189189int get_processor_count () {
190190 // X64-LABEL: define signext range(i32 -128, 128) i32 @get_processor_count()
191191 // X64: load ptr addrspace(1), ptr inttoptr (i64 16 to ptr)
192- // X64-NEXT: [[ARR_IDX1:%[a-z].*]] = getelementptr inbounds i8, ptr addrspace(1) %0, i32 660
192+ // X64-NEXT: [[ARR_IDX1:%[a-z].*]] = getelementptr inbounds nuw i8, ptr addrspace(1) %0, i32 660
193193 // X64: load ptr addrspace(1), ptr addrspace(1) [[ARR_IDX1]]
194194 // X64: load i8, ptr addrspace(1) {{%[a-z].*}}
195195 // X64: sext i8 {{%[0-9]}} to i32
0 commit comments