llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Andrzej Warzyński (banach-space) <details> <summary>Changes</summary> AI Assisted (codex) --- Patch is 22.37 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/225784.diff 14 Files Affected: - (modified) clang/test/CIR/CodeGen/base-init-eh.cpp (+1-1) - (modified) clang/test/CIR/CodeGen/ctor-null-init.cpp (+2-2) - (modified) clang/test/CIR/CodeGen/delegating-ctor.cpp (+3-3) - (modified) clang/test/CIR/CodeGen/destructor-vtable-reinit.cpp (+4-4) - (modified) clang/test/CIR/CodeGen/global-ptr-init.cpp (+1-1) - (modified) clang/test/CIR/CodeGen/inherited-ctors.cpp (+1-1) - (modified) clang/test/CIR/CodeGen/multi-vtable.cpp (+2-2) - (modified) clang/test/CIR/CodeGen/rtti-member-pointer.cpp (+4-4) - (modified) clang/test/CIR/CodeGen/rtti-qualfn.cpp (+4-5) - (modified) clang/test/CIR/CodeGen/vbase.cpp (+1-1) - (modified) clang/test/CIR/CodeGen/virtual-function-calls.cpp (+1-5) - (modified) clang/test/CIR/CodeGen/vtt.cpp (+12-12) - (modified) clang/test/CIR/CodeGenCXX/base-layout.cpp (+1-1) - (modified) clang/test/CIR/CodeGenCXX/vtable-pure-deleted-funcs.cpp (+1-1) ``````````diff diff --git a/clang/test/CIR/CodeGen/base-init-eh.cpp b/clang/test/CIR/CodeGen/base-init-eh.cpp index c16aac8ef77a0..24f6f7a93e73f 100644 --- a/clang/test/CIR/CodeGen/base-init-eh.cpp +++ b/clang/test/CIR/CodeGen/base-init-eh.cpp @@ -100,7 +100,7 @@ void test_virt_base_initializer() { // OGCG: define {{.*}} void @_ZN11VirtDerivedC1Ev // OGCG: %[[THIS:.*]] = load ptr, ptr %{{.*}} // OGCG: call void @_ZN4BaseC2Ei(ptr {{.*}} %[[THIS]], i32 {{.*}} 0) -// OGCG: store ptr getelementptr inbounds inrange(-24, 0) ({ [3 x ptr] }, ptr @_ZTV11VirtDerived, i32 0, i32 0, i32 3), ptr %[[THIS]] +// OGCG: store ptr getelementptr inbounds inrange(-24, 0) (i8, ptr @_ZTV11VirtDerived, i64 24), ptr %[[THIS]] // OGCG: invoke void @_Z8mayThrowv() // OGCG: to label %[[INVOKE_CONT:.*]] unwind label %[[LPAD:.*]] // OGCG: [[INVOKE_CONT:.*]]: diff --git a/clang/test/CIR/CodeGen/ctor-null-init.cpp b/clang/test/CIR/CodeGen/ctor-null-init.cpp index d7fcdd3221de7..1e54556c4665e 100644 --- a/clang/test/CIR/CodeGen/ctor-null-init.cpp +++ b/clang/test/CIR/CodeGen/ctor-null-init.cpp @@ -103,7 +103,7 @@ VDerived::VDerived() : VBase() {} // OGCG: %[[ADDR:.*]] = getelementptr inbounds i8, ptr %[[THIS:.*]], // OGCG: call void @llvm.memset.p0.i64(ptr align 8 %[[ADDR]], i8 0, i64 8, i1 false) // OGCG: call void @_ZN5VBaseC2Ev(ptr noundef nonnull align 8 dereferenceable(8) %[[THIS]]) -// OGCG: store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV8VDerived, i32 0, i32 0, i32 2), ptr %[[THIS]], align 8 +// OGCG: store ptr getelementptr inbounds inrange(-16, 16) (i8, ptr @_ZTV8VDerived, i64 16), ptr %[[THIS]], align 8 // CIR-LABEL: cir.func {{.*}}@_ZN8VDerivedC2Ev // CIR: %[[BASE:.*]] = cir.base_class_addr {{.*}} : !cir.ptr<!rec_VDerived> nonnull [0] -> !cir.ptr<!rec_VBase> @@ -125,4 +125,4 @@ VDerived::VDerived() : VBase() {} // LLVM-LABEL: define {{.*}}@_ZN5VBaseC2Ev // LLVM: store ptr getelementptr inbounds nuw (i8, ptr @_ZTV5VBase, i64 16), ptr % // OGCG-LABEL: define {{.*}}@_ZN5VBaseC2Ev -// OGCG: store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV5VBase, i32 0, i32 0, i32 2), ptr % +// OGCG: store ptr getelementptr inbounds inrange(-16, 16) (i8, ptr @_ZTV5VBase, i64 16), ptr % diff --git a/clang/test/CIR/CodeGen/delegating-ctor.cpp b/clang/test/CIR/CodeGen/delegating-ctor.cpp index 1dbd44ee068c0..f90eecf21b322 100644 --- a/clang/test/CIR/CodeGen/delegating-ctor.cpp +++ b/clang/test/CIR/CodeGen/delegating-ctor.cpp @@ -283,8 +283,8 @@ Derived::Derived(const void *inVoid) { squawk(); } // OGCG: store ptr %[[INVOID_ARG]], ptr %[[INVOID_ADDR]] // OGCG: %[[THIS:.*]] = load ptr, ptr %[[THIS_ADDR]] // OGCG: call void @_ZN4BaseC2Ev(ptr {{.*}} %[[THIS]]) -// OGCG: store ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV7Derived, i32 0, i32 0, i32 4), ptr %[[THIS]] -// OGCG: store ptr getelementptr inbounds inrange(-32, 8) ({ [5 x ptr] }, ptr @_ZTV7Derived, i32 0, i32 0, i32 4), ptr %[[THIS]] +// OGCG: store ptr getelementptr inbounds inrange(-32, 8) (i8, ptr @_ZTV7Derived, i64 32), ptr %[[THIS]] +// OGCG: store ptr getelementptr inbounds inrange(-32, 8) (i8, ptr @_ZTV7Derived, i64 32), ptr %[[THIS]] // OGCG: %[[VPTR:.*]] = load ptr, ptr %[[THIS]] // OGCG: %[[SQUAWK_ADDR:.*]] = getelementptr inbounds ptr, ptr %[[VPTR]], i64 0 // OGCG: %[[SQUAWK:.*]] = load ptr, ptr %[[SQUAWK_ADDR]] @@ -320,7 +320,7 @@ Derived::Derived(const void *inVoid) { squawk(); } // OGCG: %[[THIS_ADDR:.*]] = alloca ptr // OGCG: store ptr %[[THIS_ARG]], ptr %[[THIS_ADDR]] // OGCG: %[[THIS:.*]] = load ptr, ptr %[[THIS_ADDR]] -// OGCG: store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV4Base, i32 0, i32 0, i32 2), ptr %[[THIS]] +// OGCG: store ptr getelementptr inbounds inrange(-16, 8) (i8, ptr @_ZTV4Base, i64 16), ptr %[[THIS]] // OGCG: %[[VPTR:.*]] = load ptr, ptr %[[THIS]] // OGCG: %[[SQUAWK_ADDR:.*]] = getelementptr inbounds ptr, ptr %[[VPTR]], i64 0 // OGCG: %[[SQUAWK:.*]] = load ptr, ptr %[[SQUAWK_ADDR]] diff --git a/clang/test/CIR/CodeGen/destructor-vtable-reinit.cpp b/clang/test/CIR/CodeGen/destructor-vtable-reinit.cpp index 887c22588d263..38d5fe9721e0e 100644 --- a/clang/test/CIR/CodeGen/destructor-vtable-reinit.cpp +++ b/clang/test/CIR/CodeGen/destructor-vtable-reinit.cpp @@ -30,7 +30,7 @@ Base::~Base() { some_function(); } // LLVM: %[[THIS_ADDR:.*]] = alloca ptr // LLVM: %[[THIS:.*]] = load ptr, ptr %[[THIS_ADDR]] // LLVMCIR-NEXT:store ptr getelementptr inbounds nuw (i8, ptr @_ZTV4Base, i64 16), ptr %[[THIS]] -// OGCG-NEXT: store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV4Base, i32 0, i32 0, i32 2), ptr %[[THIS]] +// OGCG-NEXT: store ptr getelementptr inbounds inrange(-16, 16) (i8, ptr @_ZTV4Base, i64 16), ptr %[[THIS]] // LLVM-NEXT: call void @_Z13some_functionv() // LLVM-NEXT: ret void @@ -59,7 +59,7 @@ Derived::~Derived() { some_function(); } // LLVM: %[[THIS_ADDR:.*]] = alloca ptr // LLVM: %[[THIS:.*]] = load ptr, ptr %[[THIS_ADDR]] // LLVMCIR: store ptr getelementptr inbounds nuw (i8, ptr @_ZTV7Derived, i64 16), ptr %[[THIS]] -// OGCG: store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr] }, ptr @_ZTV7Derived, i32 0, i32 0, i32 2), ptr %[[THIS]] +// OGCG: store ptr getelementptr inbounds inrange(-16, 16) (i8, ptr @_ZTV7Derived, i64 16), ptr %[[THIS]] // LLVM-NEXT: call void @_Z13some_functionv() // LLVM: call void @_ZN4BaseD2Ev(ptr {{.*}}%[[THIS]]) // LLVM: ret void @@ -169,10 +169,10 @@ MultiBase::~MultiBase() { some_function(); } // LLVM: %[[THIS_ADDR:.*]] = alloca ptr // LLVM: %[[THIS:.*]] = load ptr, ptr %[[THIS_ADDR]] // LLVMCIR: store ptr getelementptr inbounds nuw (i8, ptr @_ZTV9MultiBase, i64 16), ptr %[[THIS]] -// OGCG: store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr], [4 x ptr] }, ptr @_ZTV9MultiBase, i32 0, i32 0, i32 2), ptr %[[THIS]] +// OGCG: store ptr getelementptr inbounds inrange(-16, 16) (i8, ptr @_ZTV9MultiBase, i64 16), ptr %[[THIS]] // LLVM: %[[FATHER_ADDR:.*]] = getelementptr {{.*}}i8, ptr %[[THIS]], i{{32|64}} 8 // LLVMCIR: store ptr getelementptr inbounds nuw (i8, ptr @_ZTV9MultiBase, i64 48), ptr %[[FATHER_ADDR]] -// OGCG: store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr], [4 x ptr] }, ptr @_ZTV9MultiBase, i32 0, i32 1, i32 2), ptr %[[FATHER_ADDR]] +// OGCG: store ptr getelementptr inbounds inrange(-16, 16) (i8, ptr @_ZTV9MultiBase, i64 48), ptr %[[FATHER_ADDR]] // LLVM: call void @_Z13some_functionv() // LLVM: call void @_ZN6FatherD2Ev(ptr {{.*}}) // LLVM: call void @_ZN6MotherD2Ev(ptr {{.*}}%[[THIS]]) diff --git a/clang/test/CIR/CodeGen/global-ptr-init.cpp b/clang/test/CIR/CodeGen/global-ptr-init.cpp index 1520485cf3597..9a9824881a98c 100644 --- a/clang/test/CIR/CodeGen/global-ptr-init.cpp +++ b/clang/test/CIR/CodeGen/global-ptr-init.cpp @@ -13,4 +13,4 @@ B x; // CIR: cir.global external @x = #cir.const_record<{#cir.global_view<@_ZTV1B, [0 : i32, 2 : i32]> : !cir.vptr}> : !rec_B // LLVM: @x = global %struct.B { ptr getelementptr inbounds nuw (i8, ptr @_ZTV1B, i64 16) }, align 8 -// OGCG: @x = global %struct.B { ptr getelementptr inbounds inrange(-16, 24) ({ [5 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 2) }, align 8 +// OGCG: @x = global %struct.B { ptr getelementptr inbounds inrange(-16, 24) (i8, ptr @_ZTV1B, i64 16) }, align 8 diff --git a/clang/test/CIR/CodeGen/inherited-ctors.cpp b/clang/test/CIR/CodeGen/inherited-ctors.cpp index e78279018772b..6871c00da5850 100644 --- a/clang/test/CIR/CodeGen/inherited-ctors.cpp +++ b/clang/test/CIR/CodeGen/inherited-ctors.cpp @@ -162,7 +162,7 @@ void fallsthrough() { // Note: see the note above for the CIR/LLVM-IR difference here. // OGCG: %[[X_LOAD:.*]] = load i32, ptr %[[X_ALLOCA]] // OGCG: call void @_ZN11VirtDerivedCI24BaseEi(ptr {{.*}}%[[THIS_LOAD]], ptr {{.*}}(i8, ptr @_ZTT21VirtualDelegatingCtor, i64 8), i32{{.*}}%[[X_LOAD]]) -// OGCG: store ptr getelementptr inbounds inrange(-24, 0) ({ [3 x ptr] }, ptr @_ZTV21VirtualDelegatingCtor, i32 0, i32 0, i32 3), ptr %[[THIS_LOAD]] +// OGCG: store ptr getelementptr inbounds inrange(-24, 0) (i8, ptr @_ZTV21VirtualDelegatingCtor, i64 24), ptr %[[THIS_LOAD]] // // OGCG-LABEL: define linkonce_odr void @_ZN7DerivedCI24BaseEi(ptr {{.*}}, i32 {{.*}}) // OGCG: %[[THIS_ALLOCA:.*]] = alloca ptr diff --git a/clang/test/CIR/CodeGen/multi-vtable.cpp b/clang/test/CIR/CodeGen/multi-vtable.cpp index 33980b459886e..e47cfd3cf90d3 100644 --- a/clang/test/CIR/CodeGen/multi-vtable.cpp +++ b/clang/test/CIR/CodeGen/multi-vtable.cpp @@ -177,7 +177,7 @@ Child::Child() {} // OGCG: call void @_ZN6MotherC2Ev(ptr {{.*}} %[[THIS]]) // OGCG: %[[FATHER_BASE:.*]] = getelementptr{{.*}} i8, ptr %[[THIS]], i64 8 // OGCG: call void @_ZN6FatherC2Ev(ptr{{.*}} %[[FATHER_BASE]]) -// OGCG: store ptr getelementptr inbounds inrange(-16, 16) ({ [4 x ptr], [3 x ptr] }, ptr @_ZTV5Child, i32 0, i32 0, i32 2), ptr %[[THIS]] +// OGCG: store ptr getelementptr inbounds inrange(-16, 16) (i8, ptr @_ZTV5Child, i64 16), ptr %[[THIS]] // OGCG: %[[FATHER_BASE:.*]] = getelementptr{{.*}} i8, ptr %[[THIS]], i64 8 -// OGCG: store ptr getelementptr inbounds inrange(-16, 8) ({ [4 x ptr], [3 x ptr] }, ptr @_ZTV5Child, i32 0, i32 1, i32 2), ptr %[[FATHER_BASE]] +// OGCG: store ptr getelementptr inbounds inrange(-16, 8) (i8, ptr @_ZTV5Child, i64 48), ptr %[[FATHER_BASE]] // OGCG: ret void diff --git a/clang/test/CIR/CodeGen/rtti-member-pointer.cpp b/clang/test/CIR/CodeGen/rtti-member-pointer.cpp index a041db2cab628..93975ebd0814d 100644 --- a/clang/test/CIR/CodeGen/rtti-member-pointer.cpp +++ b/clang/test/CIR/CodeGen/rtti-member-pointer.cpp @@ -31,8 +31,8 @@ void throw_data_member_ptr() { // OGCG-DAG: @_ZTSM1Ai = linkonce_odr constant [5 x i8] c"M1Ai\00", comdat // OGCG-DAG: @_ZTS1A = linkonce_odr constant [3 x i8] c"1A\00", comdat -// OGCG-DAG: @_ZTI1A = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 2), ptr @_ZTS1A }, comdat -// OGCG-DAG: @_ZTIM1Ai = linkonce_odr constant { ptr, ptr, i32, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv129__pointer_to_member_type_infoE, i64 2), ptr @_ZTSM1Ai, i32 0, ptr @_ZTIi, ptr @_ZTI1A }, comdat +// OGCG-DAG: @_ZTI1A = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv117__class_type_infoE, i64 16), ptr @_ZTS1A }, comdat +// OGCG-DAG: @_ZTIM1Ai = linkonce_odr constant { ptr, ptr, i32, ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv129__pointer_to_member_type_infoE, i64 16), ptr @_ZTSM1Ai, i32 0, ptr @_ZTIi, ptr @_ZTI1A }, comdat // OGCG-DAG: call void @__cxa_throw(ptr %{{.*}}, ptr @_ZTIM1Ai, ptr null) void throw_member_fn_ptr() { @@ -53,6 +53,6 @@ void throw_member_fn_ptr() { // OGCG-DAG: @_ZTSM1AFvvE = linkonce_odr constant [8 x i8] c"M1AFvvE\00", comdat // OGCG-DAG: @_ZTSFvvE = linkonce_odr constant [5 x i8] c"FvvE\00", comdat -// OGCG-DAG: @_ZTIFvvE = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__function_type_infoE, i64 2), ptr @_ZTSFvvE }, comdat -// OGCG-DAG: @_ZTIM1AFvvE = linkonce_odr constant { ptr, ptr, i32, ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv129__pointer_to_member_type_infoE, i64 2), ptr @_ZTSM1AFvvE, i32 0, ptr @_ZTIFvvE, ptr @_ZTI1A }, comdat +// OGCG-DAG: @_ZTIFvvE = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv120__function_type_infoE, i64 16), ptr @_ZTSFvvE }, comdat +// OGCG-DAG: @_ZTIM1AFvvE = linkonce_odr constant { ptr, ptr, i32, ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv129__pointer_to_member_type_infoE, i64 16), ptr @_ZTSM1AFvvE, i32 0, ptr @_ZTIFvvE, ptr @_ZTI1A }, comdat // OGCG-DAG: call void @__cxa_throw(ptr %{{.*}}, ptr @_ZTIM1AFvvE, ptr null) diff --git a/clang/test/CIR/CodeGen/rtti-qualfn.cpp b/clang/test/CIR/CodeGen/rtti-qualfn.cpp index 57fbf714a7d88..6a85498d48408 100644 --- a/clang/test/CIR/CodeGen/rtti-qualfn.cpp +++ b/clang/test/CIR/CodeGen/rtti-qualfn.cpp @@ -26,13 +26,12 @@ void f() noexcept { // LLVM-DAG: @_ZTSFvvE = linkonce_odr constant [5 x i8] c"FvvE\00", comdat // LLVM-DAG: @_ZTSPDoFvvE = linkonce_odr constant [8 x i8] c"PDoFvvE\00", comdat -// CIR and OGCG represent the reference to the type info vtable differently, -// as a byte offset from the vtable symbol or as an index into an array of -// pointers, but both name its address point. +// CIR and OGCG use byte offsets to name the type info vtable address point. +// OGCG additionally marks these GEPs inbounds. // LLVMCIR-DAG: @_ZTIFvvE = linkonce_odr constant { ptr, ptr } { ptr getelementptr (i8, ptr @_ZTVN10__cxxabiv120__function_type_infoE, i64 16), ptr @_ZTSFvvE }, comdat // LLVMCIR-DAG: @_ZTIPDoFvvE = linkonce_odr constant { ptr, ptr, i32, ptr } { ptr getelementptr (i8, ptr @_ZTVN10__cxxabiv119__pointer_type_infoE, i64 16), ptr @_ZTSPDoFvvE, i32 64, ptr @_ZTIFvvE }, comdat -// OGCG-DAG: @_ZTIFvvE = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv120__function_type_infoE, i64 2), ptr @_ZTSFvvE }, comdat -// OGCG-DAG: @_ZTIPDoFvvE = linkonce_odr constant { ptr, ptr, i32, ptr } { ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv119__pointer_type_infoE, i64 2), ptr @_ZTSPDoFvvE, i32 64, ptr @_ZTIFvvE }, comdat +// OGCG-DAG: @_ZTIFvvE = linkonce_odr constant { ptr, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv120__function_type_infoE, i64 16), ptr @_ZTSFvvE }, comdat +// OGCG-DAG: @_ZTIPDoFvvE = linkonce_odr constant { ptr, ptr, i32, ptr } { ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv119__pointer_type_infoE, i64 16), ptr @_ZTSPDoFvvE, i32 64, ptr @_ZTIFvvE }, comdat // The throw unwinds to the terminate scope of the enclosing noexcept function. // LLVM-LABEL: define{{.*}} void @_Z1fv() diff --git a/clang/test/CIR/CodeGen/vbase.cpp b/clang/test/CIR/CodeGen/vbase.cpp index fb37a49c7856e..b480609af620d 100644 --- a/clang/test/CIR/CodeGen/vbase.cpp +++ b/clang/test/CIR/CodeGen/vbase.cpp @@ -136,5 +136,5 @@ void ppp() { B b; } // OGCG: store ptr %[[THIS_ARG]], ptr %[[THIS_ADDR]] // OGCG: %[[THIS:.*]] = load ptr, ptr %[[THIS_ADDR]] // OGCG: %[[BASE_A_ADDR:.*]] = getelementptr inbounds i8, ptr %[[THIS]], i64 12 -// OGCG: store ptr getelementptr inbounds inrange(-24, 0) ({ [3 x ptr] }, ptr @_ZTV1B, i32 0, i32 0, i32 3), ptr %[[THIS]] +// OGCG: store ptr getelementptr inbounds inrange(-24, 0) (i8, ptr @_ZTV1B, i64 24), ptr %[[THIS]] // OGCG: ret void diff --git a/clang/test/CIR/CodeGen/virtual-function-calls.cpp b/clang/test/CIR/CodeGen/virtual-function-calls.cpp index 3d7e3a8ae4712..482b374c2d3b9 100644 --- a/clang/test/CIR/CodeGen/virtual-function-calls.cpp +++ b/clang/test/CIR/CodeGen/virtual-function-calls.cpp @@ -41,11 +41,7 @@ A::A() {} // OGCG: %[[THIS_ADDR:.*]] = alloca ptr // OGCG: store ptr %[[ARG0]], ptr %[[THIS_ADDR]] // OGCG: %[[THIS:.*]] = load ptr, ptr %[[THIS_ADDR]] -// OGCG: store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %[[THIS]] - -// NOTE: The GEP in OGCG looks very different from the one generated with CIR, -// but it is equivalent. The OGCG GEP indexes by base pointer, then -// structure, then array, whereas the CIR GEP indexes by byte offset. +// OGCG: store ptr getelementptr inbounds inrange(-16, 8) (i8, ptr @_ZTV1A, i64 16), ptr %[[THIS]] void f1(A *a) { a->f('c'); diff --git a/clang/test/CIR/CodeGen/vtt.cpp b/clang/test/CIR/CodeGen/vtt.cpp index 91283befe84be..795b26ded3b9c 100644 --- a/clang/test/CIR/CodeGen/vtt.cpp +++ b/clang/test/CIR/CodeGen/vtt.cpp @@ -127,13 +127,13 @@ void D::y() {} // LLVM-COMMON-SAME: ], align 8 // OGCG-COMMON: @_ZTT1D = unnamed_addr constant [7 x ptr] [ -// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 16) ({ [5 x ptr], [4 x ptr], [4 x ptr] }, ptr @_ZTV1D, i32 0, i32 0, i32 3), -// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) ({ [4 x ptr], [4 x ptr] }, ptr @_ZTC1D0_1B, i32 0, i32 0, i32 3), -// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) ({ [4 x ptr], [4 x ptr] }, ptr @_ZTC1D0_1B, i32 0, i32 1, i32 3), -// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) ({ [4 x ptr], [4 x ptr] }, ptr @_ZTC1D16_1C, i32 0, i32 0, i32 3), -// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) ({ [4 x ptr], [4 x ptr] }, ptr @_ZTC1D16_1C, i32 0, i32 1, i32 3), -// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) ({ [5 x ptr], [4 x ptr], [4 x ptr] }, ptr @_ZTV1D, i32 0, i32 2, i32 3), -// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) ({ [5 x ptr], [4 x ptr], [4 x ptr] }, ptr @_ZTV1D, i32 0, i32 1, i32 3) +// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 16) (i8, ptr @_ZTV1D, i64 24), +// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) (i8, ptr @_ZTC1D0_1B, i64 24), +// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) (i8, ptr @_ZTC1D0_1B, i64 56), +// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) (i8, ptr @_ZTC1D16_1C, i64 24), +// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) (i8, ptr @_ZTC1D16_1C, i64 56), +// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) (i8, ptr @_ZTV1D, i64 96), +// OGCG-COMMON-SAME: ptr getelementptr inbounds inrange(-24, 8) (i8, ptr @_ZTV1D, i64 64) // OGCG-COMMON-SAME: ], align 8 // Construction vtable for B-in-D @@ -234,7 +234,7 @@ void D::y() {} // LLVM-RTTI-SAME: ptr @_ZTS1D, i32 2, i32 2, ptr @_ZTI1B, i64 2, ptr @_ZTI1C, i64 4098 } // OGCG-RTTI: @_ZTI1D = constant { ptr, ptr, i32, i32, ptr, i64, ptr, i64 } { -// OGCG-RTTI-SAME: ptr getelementptr inbounds (ptr, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 2), +// OGCG-RTTI-SAME: ptr getelementptr inbounds (i8, ptr @_ZTVN10__cxxabiv121__vmi_class_type_infoE, i64 16), // OGCG-RTTI-SAME: ptr @_ZTS1D, i32 2, i32 2, ptr @_ZTI1B, i64 2, ptr @_ZTI1C, i64 4098 }, align 8 // OGCG-RTTI: @_ZTVN10__cxxabiv121__vmi_class_type_infoE = external global [0 x ptr] @@ -522,11 +522,11 @@ D::D() {} // 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 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: store ptr getelementptr inbounds inrange(-24, 16) (i8, ptr @_ZTV1D, i64 24), 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]] +// OGCG-COMMON: store ptr getelementptr inbounds inrange(-24, 8) (i8, ptr @_ZTV1D, i64 96), ptr %[[A_ADDR]] // OGCG-COMMON: %[[C_ADDR:.*]] = getelementptr inbounds i8, ptr %[[THIS]], i64 16 -// OGCG-COMMON: store ptr getelementptr inbounds inrange(-24, 8) ({ [5 x ptr], [4 x ptr], [4 x ptr] }, ptr @_ZTV1D, i32 0, i32 1, i32 3), ptr %[[C_ADDR]] +// OGCG-COMMON: store ptr getelementptr inbounds inrange(-24, 8) (i8, ptr @_ZTV1D, i64 64), ptr %[[C_ADDR]] // Base (C2) constructor for A @@ -549,4 +549,4 @@ D::D() {} // OGCG-COMMON: %[[THIS_ADDR:.*]] = alloca ptr // OGCG-COMMON: store ptr %[[THIS_ARG]], ptr %[[THIS_ADDR]] // OGCG-COMMON: %[[THIS:.*]] = load ptr, ptr %[[THIS_ADDR]] -// OGCG-COMMON: store ptr getelementptr inbounds inrange(-16, 8) ({ [3 x ptr] }, ptr @_ZTV1A, i32 0, i32 0, i32 2), ptr %[[THIS]] +// OGCG-COMMON: store ptr getelementptr inbounds inrange(-16, 8) (i8, ptr @_ZTV1A, i64 16), ptr %[[THIS]] diff --git a/clang/test/CIR/CodeGenCXX/base-layout.cpp b/clang/test/CIR/CodeGenCXX/base-layout.cpp index 62d2a1e8b285f..a083e435194dd 100644 --- a/clang/test/CIR/CodeGenCXX/base-layout.cpp +++ b/clang/test/CIR/CodeGenCXX/base-layout.cpp @@ -16,7 +16,7 @@ struct D : V3, B {}; con... [truncated] `````````` </details> https://github.com/llvm/llvm-project/pull/225784 _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
