Author: Michael Liao Date: 2026-03-06T11:45:07-05:00 New Revision: 864d0452233e2f7d3772ad1170b4e0b3a7a6670c
URL: https://github.com/llvm/llvm-project/commit/864d0452233e2f7d3772ad1170b4e0b3a7a6670c DIFF: https://github.com/llvm/llvm-project/commit/864d0452233e2f7d3772ad1170b4e0b3a7a6670c.diff LOG: [CIR] Fix checks following b3d99ac2cda4d6484ac0dff0b95403b4a8c10465. NFC - b3d99ac2cda4d6484ac0dff0b95403b4a8c10465 makes constant folder data layout aware. Match checks accordingly. Added: Modified: clang/test/CIR/CodeGen/clear-cache.c clang/test/CIR/CodeGen/complex-cast.cpp clang/test/CIR/CodeGen/finegrain-bitfield-access.cpp clang/test/CIR/CodeGen/global-array-dtor.cpp clang/test/CIR/CodeGen/global-init.cpp clang/test/CIR/CodeGen/no-odr-use.cpp clang/test/CIR/CodeGen/struct.c clang/test/CIR/CodeGen/vtt.cpp clang/test/CIR/CodeGenBuiltins/builtin-constant-p.c Removed: ################################################################################ diff --git a/clang/test/CIR/CodeGen/clear-cache.c b/clang/test/CIR/CodeGen/clear-cache.c index 96254be9ea7f2..bf13985c231be 100644 --- a/clang/test/CIR/CodeGen/clear-cache.c +++ b/clang/test/CIR/CodeGen/clear-cache.c @@ -25,7 +25,7 @@ char buffer[32] = "This is a largely unused buffer"; // LLVM: call void @llvm.clear_cache(ptr @buffer, ptr getelementptr inbounds nuw (i8, ptr @buffer, i64 32)) // OGCG-LABEL: main -// OGCG: call void @llvm.clear_cache(ptr @buffer, ptr getelementptr inbounds (i8, ptr @buffer, i64 32)) +// OGCG: call void @llvm.clear_cache(ptr @buffer, ptr getelementptr inbounds nuw (i8, ptr @buffer, i64 32)) int main(void) { __builtin___clear_cache(buffer, buffer + 32); diff --git a/clang/test/CIR/CodeGen/complex-cast.cpp b/clang/test/CIR/CodeGen/complex-cast.cpp index 5dc08eb414a5b..d3f08694f08d8 100644 --- a/clang/test/CIR/CodeGen/complex-cast.cpp +++ b/clang/test/CIR/CodeGen/complex-cast.cpp @@ -33,7 +33,7 @@ void scalar_to_complex() { // OGCG: %[[REAL:.*]] = load double, ptr {{.*}}, align 8 // OGCG: store double %[[REAL]], ptr {{.*}}, align 8 -// OGCG: store double 0.000000e+00, ptr getelementptr inbounds nuw ({ double, double }, ptr @cd, i32 0, i32 1), align 8 +// OGCG: store double 0.000000e+00, ptr getelementptr inbounds nuw (i8, ptr @cd, i64 8), align 8 // CIR-BEFORE: %[[INT_TO_COMPLEX:.*]] = cir.cast int_to_complex %{{.*}} : !s32i -> !cir.complex<!s32i> @@ -48,7 +48,7 @@ void scalar_to_complex() { // OGCG: %[[REAL:.*]] = load i32, ptr {{.*}}, align 4 // OGCG: store i32 %[[REAL]], ptr {{.*}}, align 4 -// OGCG: store i32 0, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr @ci, i32 0, i32 1), align 4 +// OGCG: store i32 0, ptr getelementptr inbounds nuw (i8, ptr @ci, i64 4), align 4 // CIR-BEFORE: %[[INT_TO_FP:.*]] = cir.cast int_to_float %{{.*}} : !s32i -> !cir.double // CIR-BEFORE: %[[FP_TO_COMPLEX:.*]] = cir.cast float_to_complex %[[INT_TO_FP]] : !cir.double -> !cir.complex<!cir.double> @@ -67,7 +67,7 @@ void scalar_to_complex() { // OGCG: %[[TMP:.*]] = load i32, ptr {{.*}}, align 4 // OGCG: %[[REAL:.*]] = sitofp i32 %[[TMP]] to double // OGCG: store double %[[REAL]], ptr {{.*}}, align 8 -// OGCG: store double 0.000000e+00, ptr getelementptr inbounds nuw ({ double, double }, ptr {{.*}}, i32 0, i32 1), align 8 +// OGCG: store double 0.000000e+00, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 8), align 8 // CIR-BEFORE: %[[FP_TO_INT:.*]] = cir.cast float_to_int %{{.*}} : !cir.double -> !s32i // CIR-BEFORE: %[[INT_TO_COMPLEX:.*]] = cir.cast int_to_complex %[[FP_TO_INT]] : !s32i -> !cir.complex<!s32i> @@ -86,7 +86,7 @@ void scalar_to_complex() { // OGCG: %[[TMP:.*]] = load double, ptr {{.*}}, align 8 // OGCG: %[[REAL:.*]] = fptosi double %[[TMP]] to i32 // OGCG: store i32 %[[REAL]], ptr {{.*}}, align 4 -// OGCG: store i32 0, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr {{.*}}, i32 0, i32 1), align 4 +// OGCG: store i32 0, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 4), align 4 void scalar_to_complex_explicit() { cd = (double _Complex)sd; @@ -108,7 +108,7 @@ void scalar_to_complex_explicit() { // OGCG: %[[REAL:.*]] = load double, ptr {{.*}}, align 8 // OGCG: store double %[[REAL]], ptr {{.*}}, align 8 -// OGCG: store double 0.000000e+00, ptr getelementptr inbounds nuw ({ double, double }, ptr @cd, i32 0, i32 1), align 8 +// OGCG: store double 0.000000e+00, ptr getelementptr inbounds nuw (i8, ptr @cd, i64 8), align 8 // CIR-BEFORE: %[[INT_TO_COMPLEX:.*]] = cir.cast int_to_complex %{{.*}} : !s32i -> !cir.complex<!s32i> @@ -123,7 +123,7 @@ void scalar_to_complex_explicit() { // OGCG: %[[REAL:.*]] = load i32, ptr {{.*}}, align 4 // OGCG: store i32 %[[REAL]], ptr {{.*}}, align 4 -// OGCG: store i32 0, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr @ci, i32 0, i32 1), align 4 +// OGCG: store i32 0, ptr getelementptr inbounds nuw (i8, ptr @ci, i64 4), align 4 // CIR-BEFORE: %[[INT_TO_FP:.*]] = cir.cast int_to_float %{{.*}} : !s32i -> !cir.double // CIR-BEFORE: %[[FP_TO_COMPLEX:.*]] = cir.cast float_to_complex %[[INT_TO_FP]] : !cir.double -> !cir.complex<!cir.double> @@ -142,7 +142,7 @@ void scalar_to_complex_explicit() { // OGCG: %[[TMP:.*]] = load i32, ptr {{.*}}, align 4 // OGCG: %[[REAL:.*]] = sitofp i32 %[[TMP]] to double // OGCG: store double %[[REAL]], ptr {{.*}}, align 8 -// OGCG: store double 0.000000e+00, ptr getelementptr inbounds nuw ({ double, double }, ptr {{.*}}, i32 0, i32 1), align 8 +// OGCG: store double 0.000000e+00, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 8), align 8 // CIR-BEFORE: %[[FP_TO_INT:.*]] = cir.cast float_to_int %{{.*}} : !cir.double -> !s32i // CIR-BEFORE: %[[INT_TO_COMPLEX:.*]] = cir.cast int_to_complex %[[FP_TO_INT]] : !s32i -> !cir.complex<!s32i> @@ -161,7 +161,7 @@ void scalar_to_complex_explicit() { // OGCG: %[[TMP:.*]] = load double, ptr {{.*}}, align 8 // OGCG: %[[REAL:.*]] = fptosi double %[[TMP]] to i32 // OGCG: store i32 %[[REAL]], ptr {{.*}}, align 4 -// OGCG: store i32 0, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr {{.*}}, i32 0, i32 1), align 4 +// OGCG: store i32 0, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 4), align 4 void complex_to_scalar() { sd = (double)cd; @@ -241,7 +241,7 @@ void complex_to_bool() { // LLVM-NEXT: store i8 %[[RESULT]], ptr {{.*}}, align 1 // OGCG: %[[REAL:.*]] = load double, ptr {{.*}}, align 8 -// OGCG: %[[IMAG:.*]] = load double, ptr getelementptr inbounds nuw ({ double, double }, ptr {{.*}}, i32 0, i32 1), align 8 +// OGCG: %[[IMAG:.*]] = load double, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 8), align 8 // OGCG: %[[REAL_TO_BOOL:.*]] = fcmp une double %[[REAL]], 0.000000e+00 // OGCG: %[[IMAG_TO_BOOL:.*]] = fcmp une double %[[IMAG]], 0.000000e+00 // OGCG: %[[COMPLEX_TO_BOOL:.*]] = or i1 %[[REAL_TO_BOOL]], %[[IMAG_TO_BOOL]] @@ -266,7 +266,7 @@ void complex_to_bool() { // LLVM-NEXT: store i8 %[[RESULT]], ptr {{.*}}, align 1 // OGCG: %[[REAL:.*]] = load i32, ptr {{.*}}, align 4 -// OGCG: %[[IMAG:.*]] = load i32, ptr getelementptr inbounds nuw ({ i32, i32 }, ptr {{.*}}, i32 0, i32 1), align 4 +// OGCG: %[[IMAG:.*]] = load i32, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 4), align 4 // OGCG: %[[REAL_TO_BOOL:.*]] = icmp ne i32 %[[REAL]], 0 // OGCG: %[[IMAG_TO_BOOL:.*]] = icmp ne i32 %[[IMAG]], 0 // OGCG: %[[COMPLEX_TO_BOOL:.*]] = or i1 %[[REAL_TO_BOOL]], %[[IMAG_TO_BOOL]] @@ -296,11 +296,11 @@ void complex_to_complex_cast() { // LLVM: store { double, double } %[[COMPLEX]], ptr {{.*}}, align 8 // OGCG: %[[REAL:.*]] = load float, ptr {{.*}}, align 4 -// OGCG: %[[IMAG:.*]] = load float, ptr getelementptr inbounds nuw ({ float, float }, ptr {{.*}}, i32 0, i32 1), align 4 +// OGCG: %[[IMAG:.*]] = load float, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 4), align 4 // OGCG: %[[REAL_FP_CAST:.*]] = fpext float %[[REAL]] to double // OGCG: %[[IMAG_FP_CAST:.*]] = fpext float %[[IMAG]] to double // OGCG: store double %[[REAL_FP_CAST]], ptr {{.*}}, align 8 -// OGCG: store double %[[IMAG_FP_CAST]], ptr getelementptr inbounds nuw ({ double, double }, ptr {{.*}}, i32 0, i32 1), align 8 +// OGCG: store double %[[IMAG_FP_CAST]], ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 8), align 8 // CIR-BEFORE: %[[TMP:.*]] = cir.load{{.*}} %{{.*}} : !cir.ptr<!cir.complex<!s16i>>, !cir.complex<!s16i> // CIR-BEFORE: %[[INT_COMPLEX:.*]] = cir.cast int_complex %[[TMP]] : !cir.complex<!s16i> -> !cir.complex<!s32i> @@ -320,11 +320,11 @@ void complex_to_complex_cast() { // LLVM: store { i32, i32 } %[[COMPLEX]], ptr {{.*}}, align 4 // OGCG: %[[REAL:.*]] = load i16, ptr {{.*}}, align 2 -// OGCG: %[[IMAG:.*]] = load i16, ptr getelementptr inbounds nuw ({ i16, i16 }, ptr {{.*}}, i32 0, i32 1), align 2 +// OGCG: %[[IMAG:.*]] = load i16, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 2), align 2 // OGCG: %[[REAL_INT_CAST:.*]] = sext i16 %[[REAL]] to i32 // OGCG: %[[IMAG_INT_CAST:.*]] = sext i16 %[[IMAG]] to i32 // OGCG: store i32 %[[REAL_INT_CAST]], ptr {{.*}}, align 4 -// OGCG: store i32 %[[IMAG_INT_CAST]], ptr getelementptr inbounds nuw ({ i32, i32 }, ptr {{.*}}, i32 0, i32 1), align 4 +// OGCG: store i32 %[[IMAG_INT_CAST]], ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 4), align 4 struct CX { double real; diff --git a/clang/test/CIR/CodeGen/finegrain-bitfield-access.cpp b/clang/test/CIR/CodeGen/finegrain-bitfield-access.cpp index ed50954bb2af1..65e98d0a871d0 100644 --- a/clang/test/CIR/CodeGen/finegrain-bitfield-access.cpp +++ b/clang/test/CIR/CodeGen/finegrain-bitfield-access.cpp @@ -60,7 +60,7 @@ unsigned read8_1() { // LLVM: ret i32 [[RET]] // OGCG-LABEL: @_Z7read8_1v -// OGCG: [[BFLOAD:%.*]] = load i8, ptr getelementptr inbounds nuw (%struct.S1, ptr {{.*}}, i32 0, i32 1), align 1 +// OGCG: [[BFLOAD:%.*]] = load i8, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 1), align 1 // OGCG-NEXT: [[BFCAST:%.*]] = zext i8 [[BFLOAD]] to i32 // OGCG-NEXT: ret i32 [[BFCAST]] @@ -78,7 +78,7 @@ void write8_1() { // LLVM: ret void // OGCG-LABEL: @_Z8write8_1v -// OGCG: store i8 3, ptr getelementptr inbounds nuw (%struct.S1, ptr {{.*}}, i32 0, i32 1), align 1 +// OGCG: store i8 3, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 1), align 1 // OGCG-NEXT: ret void unsigned read8_2() { @@ -103,7 +103,7 @@ unsigned read8_2() { // LLVM: ret i32 [[RET]] // OGCG-LABEL: @_Z7read8_2v -// OGCG: [[BFLOAD:%.*]] = load i16, ptr getelementptr inbounds nuw (%struct.S1, ptr {{.*}}, i32 0, i32 2), align 2 +// OGCG: [[BFLOAD:%.*]] = load i16, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 2), align 2 // OGCG-NEXT: [[BFLSHR:%.*]] = lshr i16 [[BFLOAD]], 4 // OGCG-NEXT: [[BFCLEAR:%.*]] = and i16 [[BFLSHR]], 255 // OGCG-NEXT: [[BFCAST:%.*]] = zext i16 [[BFCLEAR]] to i32 @@ -126,10 +126,10 @@ void write8_2() { // LLVM: ret void // OGCG-LABEL: @_Z8write8_2v -// OGCG: [[BFLOAD:%.*]] = load i16, ptr getelementptr inbounds nuw (%struct.S1, ptr {{.*}}, i32 0, i32 2), align 2 +// OGCG: [[BFLOAD:%.*]] = load i16, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 2), align 2 // OGCG-NEXT: [[BFCLEAR:%.*]] = and i16 [[BFLOAD]], -4081 // OGCG-NEXT: [[BFSET:%.*]] = or i16 [[BFCLEAR]], 48 -// OGCG-NEXT: store i16 [[BFSET]], ptr getelementptr inbounds nuw (%struct.S1, ptr {{.*}}, i32 0, i32 2), align 2 +// OGCG-NEXT: store i16 [[BFSET]], ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 2), align 2 // OGCG-NEXT: ret void unsigned read16_1() { @@ -179,7 +179,7 @@ unsigned read16_2() { // LLVM: ret i32 [[RET]] // OGCG-LABEL: @_Z8read16_2v -// OGCG: [[BFLOAD:%.*]] = load i16, ptr getelementptr inbounds nuw (%struct.S2, ptr {{.*}}, i32 0, i32 1), align 2 +// OGCG: [[BFLOAD:%.*]] = load i16, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 2), align 2 // OGCG-NEXT: [[BFCAST:%.*]] = zext i16 [[BFLOAD]] to i64 // OGCG-NEXT: [[RET:%.*]] = trunc i64 [[BFCAST]] to i32 // OGCG-NEXT: ret i32 [[RET]] @@ -218,7 +218,7 @@ void write16_2() { // LLVM: ret void // OGCG-LABEL: @_Z9write16_2v -// OGCG: store i16 5, ptr getelementptr inbounds nuw (%struct.S2, ptr {{.*}}, i32 0, i32 1), align 2 +// OGCG: store i16 5, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 2), align 2 // OGCG-NEXT: ret void unsigned read32_1() { @@ -242,7 +242,7 @@ unsigned read32_1() { // LLVM: ret i32 [[RET]] // OGCG-LABEL: @_Z8read32_1v -// OGCG: [[BFLOAD:%.*]] = load i32, ptr getelementptr inbounds nuw (%struct.S3, ptr {{.*}}, i32 0, i32 1), align 4 +// OGCG: [[BFLOAD:%.*]] = load i32, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 4), align 4 // OGCG-NEXT: [[BFCAST:%.*]] = zext i32 %bf.load to i64 // OGCG-NEXT: [[RET:%.*]] = trunc i64 %bf.cast to i32 // OGCG-NEXT: ret i32 [[RET]] @@ -262,5 +262,5 @@ void write32_1() { // LLVM: ret void // OGCG-LABEL: @_Z9write32_1v -// OGCG: store i32 5, ptr getelementptr inbounds nuw (%struct.S3, ptr {{.*}}, i32 0, i32 1), align 4 +// OGCG: store i32 5, ptr getelementptr inbounds nuw (i8, ptr {{.*}}, i64 4), align 4 // OGCG-NEXT: ret void diff --git a/clang/test/CIR/CodeGen/global-array-dtor.cpp b/clang/test/CIR/CodeGen/global-array-dtor.cpp index f31c8809ddd36..ee29cf52c75b0 100644 --- a/clang/test/CIR/CodeGen/global-array-dtor.cpp +++ b/clang/test/CIR/CodeGen/global-array-dtor.cpp @@ -92,7 +92,7 @@ ArrayDtor arrDtor[16]; // OGCG: store ptr %[[ARG]], ptr %[[UNUSED_ADDR]] // OGCG: br label %[[LOOP_BODY:.*]] // OGCG: [[LOOP_BODY]]: -// OGCG: %[[PREV:.*]] = phi ptr [ getelementptr inbounds (%struct.ArrayDtor, ptr @arrDtor, i64 16), %entry ], [ %[[CUR:.*]], %[[LOOP_BODY]] ] +// OGCG: %[[PREV:.*]] = phi ptr [ getelementptr inbounds nuw (i8, ptr @arrDtor, i64 16), %entry ], [ %[[CUR:.*]], %[[LOOP_BODY]] ] // OGCG: %[[CUR]] = getelementptr inbounds %struct.ArrayDtor, ptr %[[PREV]], i64 -1 // OGCG: call void @_ZN9ArrayDtorD1Ev(ptr noundef nonnull align 1 dereferenceable(1) %[[CUR]]) // OGCG: %[[DONE:.*]] = icmp eq ptr %[[CUR]], @arrDtor diff --git a/clang/test/CIR/CodeGen/global-init.cpp b/clang/test/CIR/CodeGen/global-init.cpp index cd5adef176de3..59b79e7b41697 100644 --- a/clang/test/CIR/CodeGen/global-init.cpp +++ b/clang/test/CIR/CodeGen/global-init.cpp @@ -141,7 +141,7 @@ float _Complex a = {num, num}; // OGCG: %[[REAL:.*]] = load float, ptr @num, align 4 // OGCG: %[[IMAG:.*]] = load float, ptr @num, align 4 // OGCG: store float %[[REAL]], ptr @a, align 4 -// OGCG: store float %[[IMAG]], ptr getelementptr inbounds nuw ({ float, float }, ptr @a, i32 0, i32 1), align 4 +// OGCG: store float %[[IMAG]], ptr getelementptr inbounds nuw (i8, ptr @a, i64 4), align 4 float fp; int i = (int)fp; @@ -253,7 +253,7 @@ ArrayDtor arrDtor[16]; // OGCG: store ptr %[[ARG]], ptr %[[UNUSED_ADDR]] // OGCG: br label %[[LOOP_BODY:.*]] // OGCG: [[LOOP_BODY]]: -// OGCG: %[[PREV:.*]] = phi ptr [ getelementptr inbounds (%struct.ArrayDtor, ptr @arrDtor, i64 16), %entry ], [ %[[CUR:.*]], %[[LOOP_BODY]] ] +// OGCG: %[[PREV:.*]] = phi ptr [ getelementptr inbounds nuw (i8, ptr @arrDtor, i64 16), %entry ], [ %[[CUR:.*]], %[[LOOP_BODY]] ] // OGCG: %[[CUR]] = getelementptr inbounds %struct.ArrayDtor, ptr %[[PREV]], i64 -1 // OGCG: call void @_ZN9ArrayDtorD1Ev(ptr noundef nonnull align 1 dereferenceable(1) %[[CUR]]) // OGCG: %[[DONE:.*]] = icmp eq ptr %[[CUR]], @arrDtor diff --git a/clang/test/CIR/CodeGen/no-odr-use.cpp b/clang/test/CIR/CodeGen/no-odr-use.cpp index 2e1655f700b4b..bd12c70803fc5 100644 --- a/clang/test/CIR/CodeGen/no-odr-use.cpp +++ b/clang/test/CIR/CodeGen/no-odr-use.cpp @@ -44,7 +44,7 @@ int f(int i) { // CIR: %[[ARR:.*]] = cir.get_member %[[A]][2] {name = "arr"} : !cir.ptr<!rec_A> -> !cir.ptr<!cir.array<!s32i x 3>> // CIR: cir.get_element %[[ARR]][%{{.*}} : !s32i] : !cir.ptr<!cir.array<!s32i x 3>> -> !cir.ptr<!s32i> // LLVM: getelementptr [3 x i32], ptr getelementptr inbounds nuw (i8, ptr @[[F_A]], i64 12), i32 0, i64 %{{.*}} - // OGCG: getelementptr inbounds [3 x i32], ptr getelementptr inbounds nuw ({{.*}} @__const._Z1fi.a, i32 0, i32 2), i64 0, i64 %{{.*}} + // OGCG: getelementptr inbounds [3 x i32], ptr getelementptr inbounds nuw (i8, ptr @__const._Z1fi.a, i64 12), i64 0, i64 %{{.*}} ? a.arr[n] // CIR: cir.ternary // LLVM: br i1 @@ -71,7 +71,7 @@ int f(int i) { // LLVM: getelementptr [2 x i32], ptr getelementptr inbounds nuw ({{.*}} @[[F_A]], i64 4), i32 0, i64 %{{.*}} // LLVM: load i32 - // OGCG: getelementptr inbounds [2 x i32], ptr getelementptr inbounds nuw ({{.*}} @__const._Z1fi.a, i32 0, i32 1), i64 0, i64 %{{.*}} + // OGCG: getelementptr inbounds [2 x i32], ptr getelementptr inbounds nuw (i8, ptr @__const._Z1fi.a, i64 4), i64 0, i64 %{{.*}} // OGCG: load i32 : a.y[2 - n])); }(i, &A::x); diff --git a/clang/test/CIR/CodeGen/struct.c b/clang/test/CIR/CodeGen/struct.c index b376153f4eb79..0aeec4ac7e292 100644 --- a/clang/test/CIR/CodeGen/struct.c +++ b/clang/test/CIR/CodeGen/struct.c @@ -233,7 +233,7 @@ char f3(int a) { // OGCG-NEXT: store i32 %[[ARG_A]], ptr %[[A_ADDR]], align 4 // OGCG-NEXT: %[[A_VAL:.*]] = load i32, ptr %[[A_ADDR]], align 4 // OGCG-NEXT: store i32 %[[A_VAL]], ptr @cs, align 4 -// OGCG-NEXT: %[[CS_B_VAL:.*]] = load i8, ptr getelementptr inbounds nuw (%struct.CompleteS, ptr @cs, i32 0, i32 1), align 4 +// OGCG-NEXT: %[[CS_B_VAL:.*]] = load i8, ptr getelementptr inbounds nuw (i8, ptr @cs, i64 4), align 4 // OGCG-NEXT: ret i8 %[[CS_B_VAL]] char f4(int a, struct CompleteS *p) { diff --git a/clang/test/CIR/CodeGen/vtt.cpp b/clang/test/CIR/CodeGen/vtt.cpp index 150bd3bcf2ca9..5880feb323f00 100644 --- a/clang/test/CIR/CodeGen/vtt.cpp +++ b/clang/test/CIR/CodeGen/vtt.cpp @@ -540,9 +540,9 @@ D::D() {} // OGCG-COMMON: %[[THIS:.*]] = load ptr, ptr %[[THIS_ADDR]] // OGCG-COMMON: %[[A_ADDR:.*]] = getelementptr inbounds i8, ptr %[[THIS]], i64 40 // OGCG-COMMON: call void @_ZN1AC2Ev(ptr {{.*}} %[[A_ADDR]]) -// OGCG-COMMON: call void @_ZN1BC2Ev(ptr {{.*}} %[[THIS]], ptr {{.*}} getelementptr inbounds (ptr, ptr @_ZTT1D, i64 1)) +// OGCG-COMMON: call void @_ZN1BC2Ev(ptr {{.*}} %[[THIS]], ptr {{.*}} getelementptr inbounds nuw (i8, ptr @_ZTT1D, i64 8)) // OGCG-COMMON: %[[C_ADDR:.*]] = getelementptr inbounds i8, ptr %[[THIS]], i64 16 -// OGCG-COMMON: call void @_ZN1CC2Ev(ptr {{.*}} %[[C_ADDR]], ptr {{.*}} getelementptr inbounds (ptr, ptr @_ZTT1D, i64 3)) +// OGCG-COMMON: call void @_ZN1CC2Ev(ptr {{.*}} %[[C_ADDR]], ptr {{.*}} getelementptr inbounds nuw (i8, ptr @_ZTT1D, i64 24)) // OGCG-COMMON: store ptr getelementptr inbounds inrange(-24, 16) ({ [5 x ptr], [4 x ptr], [4 x ptr] }, ptr @_ZTV1D, i32 0, i32 0, i32 3), ptr %[[THIS]] // OGCG-COMMON: %[[A_ADDR:.*]] = getelementptr inbounds i8, ptr %[[THIS]], i64 40 // OGCG-COMMON: store ptr getelementptr inbounds inrange(-24, 8) ({ [5 x ptr], [4 x ptr], [4 x ptr] }, ptr @_ZTV1D, i32 0, i32 2, i32 3), ptr %[[A_ADDR]] diff --git a/clang/test/CIR/CodeGenBuiltins/builtin-constant-p.c b/clang/test/CIR/CodeGenBuiltins/builtin-constant-p.c index 72a6e13edfbb7..a12ea7e61bd61 100644 --- a/clang/test/CIR/CodeGenBuiltins/builtin-constant-p.c +++ b/clang/test/CIR/CodeGenBuiltins/builtin-constant-p.c @@ -177,7 +177,7 @@ int test6(void) { // LLVM: %[[TMP2:.*]] = call i1 @llvm.is.constant.i32(i32 %[[TMP1]]) // OGCG: define {{.*}} i32 @test6() -// OGCG: %[[TMP1:.*]] = load i32, ptr getelementptr inbounds ([3 x i32], ptr @arr, i64 0, i64 2) +// OGCG: %[[TMP1:.*]] = load i32, ptr getelementptr inbounds nuw (i8, ptr @arr, i64 8) // OGCG: %[[TMP2:.*]] = call i1 @llvm.is.constant.i32(i32 %[[TMP1]]) const int c_arr[] = { 1, 2, 3 }; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
