mirror of
https://github.com/llvm/llvm-project.git
synced 2025-05-14 11:26:09 +00:00
Revert "[codegen] Store address of indirect arguments on the stack"
This reverts commit 7e4447a17db4a070f01c8f8a87505a4b2a1b0e3a.
This commit is contained in:
parent
9f1521b6da
commit
f2d301fe82
@ -500,9 +500,6 @@ Non-comprehensive list of changes in this release
|
||||
- Clang can now generate a PCH when using ``-fdelayed-template-parsing`` for
|
||||
code with templates containing loop hint pragmas, OpenMP pragmas, and
|
||||
``#pragma unused``.
|
||||
- Clang now saves the address of ABI-indirect function parameters on the stack,
|
||||
improving the debug information available in programs compiled without
|
||||
optimizations.
|
||||
|
||||
|
||||
New Compiler Flags
|
||||
|
@ -4822,10 +4822,9 @@ void CGDebugInfo::EmitDeclareOfBlockDeclRefVariable(
|
||||
|
||||
llvm::DILocalVariable *
|
||||
CGDebugInfo::EmitDeclareOfArgVariable(const VarDecl *VD, llvm::Value *AI,
|
||||
unsigned ArgNo, CGBuilderTy &Builder,
|
||||
const bool UsePointerValue) {
|
||||
unsigned ArgNo, CGBuilderTy &Builder) {
|
||||
assert(CGM.getCodeGenOpts().hasReducedDebugInfo());
|
||||
return EmitDeclare(VD, AI, ArgNo, Builder, UsePointerValue);
|
||||
return EmitDeclare(VD, AI, ArgNo, Builder);
|
||||
}
|
||||
|
||||
namespace {
|
||||
|
@ -487,9 +487,10 @@ public:
|
||||
|
||||
/// Emit call to \c llvm.dbg.declare for an argument variable
|
||||
/// declaration.
|
||||
llvm::DILocalVariable *
|
||||
EmitDeclareOfArgVariable(const VarDecl *Decl, llvm::Value *AI, unsigned ArgNo,
|
||||
CGBuilderTy &Builder, bool UsePointerValue = false);
|
||||
llvm::DILocalVariable *EmitDeclareOfArgVariable(const VarDecl *Decl,
|
||||
llvm::Value *AI,
|
||||
unsigned ArgNo,
|
||||
CGBuilderTy &Builder);
|
||||
|
||||
/// Emit call to \c llvm.dbg.declare for the block-literal argument
|
||||
/// to a block invocation function.
|
||||
|
@ -2476,8 +2476,6 @@ void CodeGenFunction::EmitParmDecl(const VarDecl &D, ParamValue Arg,
|
||||
Address AllocaPtr = Address::invalid();
|
||||
bool DoStore = false;
|
||||
bool IsScalar = hasScalarEvaluationKind(Ty);
|
||||
bool UseIndirectDebugAddress = false;
|
||||
|
||||
// If we already have a pointer to the argument, reuse the input pointer.
|
||||
if (Arg.isIndirect()) {
|
||||
// If we have a prettier pointer type at this point, bitcast to that.
|
||||
@ -2489,19 +2487,6 @@ void CodeGenFunction::EmitParmDecl(const VarDecl &D, ParamValue Arg,
|
||||
auto AllocaAS = CGM.getASTAllocaAddressSpace();
|
||||
auto *V = DeclPtr.getPointer();
|
||||
AllocaPtr = DeclPtr;
|
||||
|
||||
// For truly ABI indirect arguments -- those that are not `byval` -- store
|
||||
// the address of the argument on the stack to preserve debug information.
|
||||
ABIArgInfo ArgInfo = CurFnInfo->arguments()[ArgNo - 1].info;
|
||||
if (ArgInfo.isIndirect())
|
||||
UseIndirectDebugAddress = !ArgInfo.getIndirectByVal();
|
||||
if (UseIndirectDebugAddress) {
|
||||
auto PtrTy = getContext().getPointerType(Ty);
|
||||
AllocaPtr = CreateMemTemp(PtrTy, getContext().getTypeAlignInChars(PtrTy),
|
||||
D.getName() + ".indirect_addr");
|
||||
EmitStoreOfScalar(V, AllocaPtr, /* Volatile */ false, PtrTy);
|
||||
}
|
||||
|
||||
auto SrcLangAS = getLangOpts().OpenCL ? LangAS::opencl_private : AllocaAS;
|
||||
auto DestLangAS =
|
||||
getLangOpts().OpenCL ? LangAS::opencl_private : LangAS::Default;
|
||||
@ -2618,7 +2603,7 @@ void CodeGenFunction::EmitParmDecl(const VarDecl &D, ParamValue Arg,
|
||||
if (CGM.getCodeGenOpts().hasReducedDebugInfo() && !CurFuncIsThunk &&
|
||||
!NoDebugInfo) {
|
||||
llvm::DILocalVariable *DILocalVar = DI->EmitDeclareOfArgVariable(
|
||||
&D, AllocaPtr.getPointer(), ArgNo, Builder, UseIndirectDebugAddress);
|
||||
&D, AllocaPtr.getPointer(), ArgNo, Builder);
|
||||
if (const auto *Var = dyn_cast_or_null<ParmVarDecl>(&D))
|
||||
DI->getParamDbgMappings().insert({Var, DILocalVar});
|
||||
}
|
||||
|
@ -94,12 +94,10 @@ EXTERN_C void test_ld64b(void)
|
||||
// CHECK-C-LABEL: define {{[^@]+}}@test_st64b(
|
||||
// CHECK-C-NEXT: entry:
|
||||
// CHECK-C-NEXT: [[__ADDR_ADDR_I:%.*]] = alloca ptr, align 8
|
||||
// CHECK-C-NEXT: [[VALUE_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK-C-NEXT: [[BYVAL_TEMP:%.*]] = alloca [[STRUCT_DATA512_T:%.*]], align 8
|
||||
// CHECK-C-NEXT: [[TMP0:%.*]] = load ptr, ptr @addr, align 8
|
||||
// CHECK-C-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[BYVAL_TEMP]], ptr align 8 @val, i64 64, i1 false)
|
||||
// CHECK-C-NEXT: store ptr [[TMP0]], ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-C-NEXT: store ptr [[BYVAL_TEMP]], ptr [[VALUE_INDIRECT_ADDR]], align 8
|
||||
// CHECK-C-NEXT: [[TMP1:%.*]] = load ptr, ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-C-NEXT: [[TMP2:%.*]] = load i64, ptr [[BYVAL_TEMP]], align 8
|
||||
// CHECK-C-NEXT: [[TMP3:%.*]] = getelementptr i64, ptr [[BYVAL_TEMP]], i32 1
|
||||
@ -122,12 +120,10 @@ EXTERN_C void test_ld64b(void)
|
||||
// CHECK-CXX-LABEL: define {{[^@]+}}@test_st64b(
|
||||
// CHECK-CXX-NEXT: entry:
|
||||
// CHECK-CXX-NEXT: [[__ADDR_ADDR_I:%.*]] = alloca ptr, align 8
|
||||
// CHECK-CXX-NEXT: [[VALUE_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK-CXX-NEXT: [[AGG_TMP:%.*]] = alloca [[STRUCT_DATA512_T:%.*]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP0:%.*]] = load ptr, ptr @addr, align 8
|
||||
// CHECK-CXX-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[AGG_TMP]], ptr align 8 @val, i64 64, i1 false)
|
||||
// CHECK-CXX-NEXT: store ptr [[TMP0]], ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-CXX-NEXT: store ptr [[AGG_TMP]], ptr [[VALUE_INDIRECT_ADDR]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP1:%.*]] = load ptr, ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP2:%.*]] = load i64, ptr [[AGG_TMP]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP3:%.*]] = getelementptr i64, ptr [[AGG_TMP]], i32 1
|
||||
@ -155,12 +151,10 @@ EXTERN_C void test_st64b(void)
|
||||
// CHECK-C-LABEL: define {{[^@]+}}@test_st64bv(
|
||||
// CHECK-C-NEXT: entry:
|
||||
// CHECK-C-NEXT: [[__ADDR_ADDR_I:%.*]] = alloca ptr, align 8
|
||||
// CHECK-C-NEXT: [[VALUE_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK-C-NEXT: [[BYVAL_TEMP:%.*]] = alloca [[STRUCT_DATA512_T:%.*]], align 8
|
||||
// CHECK-C-NEXT: [[TMP0:%.*]] = load ptr, ptr @addr, align 8
|
||||
// CHECK-C-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[BYVAL_TEMP]], ptr align 8 @val, i64 64, i1 false)
|
||||
// CHECK-C-NEXT: store ptr [[TMP0]], ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-C-NEXT: store ptr [[BYVAL_TEMP]], ptr [[VALUE_INDIRECT_ADDR]], align 8
|
||||
// CHECK-C-NEXT: [[TMP1:%.*]] = load ptr, ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-C-NEXT: [[TMP2:%.*]] = load i64, ptr [[BYVAL_TEMP]], align 8
|
||||
// CHECK-C-NEXT: [[TMP3:%.*]] = getelementptr i64, ptr [[BYVAL_TEMP]], i32 1
|
||||
@ -184,12 +178,10 @@ EXTERN_C void test_st64b(void)
|
||||
// CHECK-CXX-LABEL: define {{[^@]+}}@test_st64bv(
|
||||
// CHECK-CXX-NEXT: entry:
|
||||
// CHECK-CXX-NEXT: [[__ADDR_ADDR_I:%.*]] = alloca ptr, align 8
|
||||
// CHECK-CXX-NEXT: [[VALUE_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK-CXX-NEXT: [[AGG_TMP:%.*]] = alloca [[STRUCT_DATA512_T:%.*]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP0:%.*]] = load ptr, ptr @addr, align 8
|
||||
// CHECK-CXX-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[AGG_TMP]], ptr align 8 @val, i64 64, i1 false)
|
||||
// CHECK-CXX-NEXT: store ptr [[TMP0]], ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-CXX-NEXT: store ptr [[AGG_TMP]], ptr [[VALUE_INDIRECT_ADDR]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP1:%.*]] = load ptr, ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP2:%.*]] = load i64, ptr [[AGG_TMP]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP3:%.*]] = getelementptr i64, ptr [[AGG_TMP]], i32 1
|
||||
@ -218,12 +210,10 @@ EXTERN_C void test_st64bv(void)
|
||||
// CHECK-C-LABEL: define {{[^@]+}}@test_st64bv0(
|
||||
// CHECK-C-NEXT: entry:
|
||||
// CHECK-C-NEXT: [[__ADDR_ADDR_I:%.*]] = alloca ptr, align 8
|
||||
// CHECK-C-NEXT: [[VALUE_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK-C-NEXT: [[BYVAL_TEMP:%.*]] = alloca [[STRUCT_DATA512_T:%.*]], align 8
|
||||
// CHECK-C-NEXT: [[TMP0:%.*]] = load ptr, ptr @addr, align 8
|
||||
// CHECK-C-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[BYVAL_TEMP]], ptr align 8 @val, i64 64, i1 false)
|
||||
// CHECK-C-NEXT: store ptr [[TMP0]], ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-C-NEXT: store ptr [[BYVAL_TEMP]], ptr [[VALUE_INDIRECT_ADDR]], align 8
|
||||
// CHECK-C-NEXT: [[TMP1:%.*]] = load ptr, ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-C-NEXT: [[TMP2:%.*]] = load i64, ptr [[BYVAL_TEMP]], align 8
|
||||
// CHECK-C-NEXT: [[TMP3:%.*]] = getelementptr i64, ptr [[BYVAL_TEMP]], i32 1
|
||||
@ -247,12 +237,10 @@ EXTERN_C void test_st64bv(void)
|
||||
// CHECK-CXX-LABEL: define {{[^@]+}}@test_st64bv0(
|
||||
// CHECK-CXX-NEXT: entry:
|
||||
// CHECK-CXX-NEXT: [[__ADDR_ADDR_I:%.*]] = alloca ptr, align 8
|
||||
// CHECK-CXX-NEXT: [[VALUE_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK-CXX-NEXT: [[AGG_TMP:%.*]] = alloca [[STRUCT_DATA512_T:%.*]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP0:%.*]] = load ptr, ptr @addr, align 8
|
||||
// CHECK-CXX-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[AGG_TMP]], ptr align 8 @val, i64 64, i1 false)
|
||||
// CHECK-CXX-NEXT: store ptr [[TMP0]], ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-CXX-NEXT: store ptr [[AGG_TMP]], ptr [[VALUE_INDIRECT_ADDR]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP1:%.*]] = load ptr, ptr [[__ADDR_ADDR_I]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP2:%.*]] = load i64, ptr [[AGG_TMP]], align 8
|
||||
// CHECK-CXX-NEXT: [[TMP3:%.*]] = getelementptr i64, ptr [[AGG_TMP]], i32 1
|
||||
|
@ -59,10 +59,7 @@ void test3(pointer_pair_t pair) {
|
||||
}
|
||||
|
||||
// CHECK-LABEL:define{{.*}} void @test4(
|
||||
// CHECK-SAME: ptr noundef [[QUAD:%.*]])
|
||||
// CHECK: [[QUAD_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK-NEXT: [[TEMP:%.*]] = alloca [[QUAD_T:%.*]], align 8
|
||||
// CHECK-NEXT: store ptr [[QUAD]], ptr [[QUAD_INDIRECT_ADDR]]
|
||||
// CHECK: [[TEMP:%.*]] = alloca [[QUAD_T:%.*]], align 8
|
||||
// CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TEMP]], ptr align 8 {{%.*}}, i64 32, i1 false)
|
||||
// CHECK-NEXT: call void @__atomic_store(i64 noundef 32, ptr noundef @a_pointer_quad, ptr noundef [[TEMP]], i32 noundef 5)
|
||||
void test4(pointer_quad_t quad) {
|
||||
|
@ -19,13 +19,9 @@ void func_with_ref_arg(A &a);
|
||||
void func_with_ref_arg(B &b);
|
||||
|
||||
// CHECK-LABEL: @_Z22func_with_indirect_arg1A(
|
||||
// CHECK-SAME: ptr addrspace(5) noundef [[ARG:%.*]])
|
||||
// CHECK-NEXT: entry:
|
||||
// CHECK-NEXT: [[INDIRECT_ADDR:%.*]] = alloca ptr, align 8, addrspace(5)
|
||||
// CHECK-NEXT: [[P:%.*]] = alloca ptr, align 8, addrspace(5)
|
||||
// CHECK-NEXT: [[INDIRECT_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[INDIRECT_ADDR]] to ptr
|
||||
// CHECK-NEXT: [[P_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[P]] to ptr
|
||||
// CHECK-NEXT: store ptr addrspace(5) [[ARG]], ptr [[INDIRECT_ADDR_ASCAST]]
|
||||
// CHECK-NEXT: [[A_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[A:%.*]] to ptr
|
||||
// CHECK-NEXT: store ptr [[A_ASCAST]], ptr [[P_ASCAST]], align 8
|
||||
// CHECK-NEXT: ret void
|
||||
|
@ -4,13 +4,7 @@
|
||||
// CHECK: @_ZN6pr96081xE ={{.*}} global ptr null, align 8, !dbg [[X:![0-9]+]]
|
||||
|
||||
// CHECK: define{{.*}} void @_ZN7pr147634funcENS_3fooE
|
||||
// CHECK-SAME: ptr noundef [[param:%.*]])
|
||||
// CHECK-NEXT: entry:
|
||||
// CHECK-NEXT: alloca ptr, align 8
|
||||
// CHECK-NEXT: [[param_addr_storage:%.*]] = alloca ptr, align 8
|
||||
// CHECK-NEXT: store
|
||||
// CHECK-NEXT: store ptr [[param]], ptr [[param_addr_storage]], align 8
|
||||
// CHECK-NEXT: call void @llvm.dbg.declare(metadata ptr [[param_addr_storage]], metadata ![[F:[0-9]+]], metadata !DIExpression(DW_OP_deref))
|
||||
// CHECK: call void @llvm.dbg.declare({{.*}}, metadata ![[F:[0-9]+]], metadata !DIExpression())
|
||||
|
||||
// !llvm.dbg.cu pulls in globals and their types first.
|
||||
// CHECK-NOT: !DIGlobalVariable(name: "c"
|
||||
|
@ -32,10 +32,7 @@ void test0_helper(A);
|
||||
void test0(X x) {
|
||||
test0_helper(x);
|
||||
// CHECK-LABEL: define{{.*}} void @_Z5test01X(
|
||||
// CHECK-SAME: ptr noundef [[ARG:%.*]])
|
||||
// CHECK: [[ARG_ADDR:%.*]] = alloca ptr
|
||||
// CHECK-NEXT: [[TMP:%.*]] = alloca [[A:%.*]], align
|
||||
// CHECK-NEXT: store ptr [[ARG]], ptr [[ARG_ADDR]]
|
||||
// CHECK: [[TMP:%.*]] = alloca [[A:%.*]], align
|
||||
// CHECK-NEXT: [[T0:%.*]] = call noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) ptr @_ZN1XcvR1BEv(
|
||||
// CHECK-NEXT: call void @_ZN1AC1ERKS_(ptr {{[^,]*}} [[TMP]], ptr noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) [[T0]])
|
||||
// CHECK-NEXT: call void @_Z12test0_helper1A(ptr noundef [[TMP]])
|
||||
|
@ -64,8 +64,8 @@ void consume(int, int, int) noexcept;
|
||||
// TODO: Add support for CopyOnly params
|
||||
// CHECK: define{{.*}} void @_Z1fi8MoveOnly11MoveAndCopy(i32 noundef %val, %struct.MoveOnly* noundef %[[MoParam:.+]], %struct.MoveAndCopy* noundef %[[McParam:.+]]) #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*
|
||||
void f(int val, MoveOnly moParam, MoveAndCopy mcParam) {
|
||||
// CHECK: %[[MoCopy:.+]] = alloca %struct.MoveOnly,
|
||||
// CHECK: %[[McCopy:.+]] = alloca %struct.MoveAndCopy,
|
||||
// CHECK: %[[MoCopy:.+]] = alloca %struct.MoveOnly
|
||||
// CHECK: %[[McCopy:.+]] = alloca %struct.MoveAndCopy
|
||||
// CHECK: store i32 %val, i32* %[[ValAddr:.+]]
|
||||
|
||||
// CHECK: call i8* @llvm.coro.begin(
|
||||
@ -110,7 +110,7 @@ void f(int val, MoveOnly moParam, MoveAndCopy mcParam) {
|
||||
// CHECK-LABEL: void @_Z16dependent_paramsI1A1BEvT_T0_S3_(%struct.A* noundef %x, %struct.B* noundef %0, %struct.B* noundef %y)
|
||||
template <typename T, typename U>
|
||||
void dependent_params(T x, U, U y) {
|
||||
// CHECK: %[[x_copy:.+]] = alloca %struct.A,
|
||||
// CHECK: %[[x_copy:.+]] = alloca %struct.A
|
||||
// CHECK-NEXT: %[[unnamed_copy:.+]] = alloca %struct.B
|
||||
// CHECK-NEXT: %[[y_copy:.+]] = alloca %struct.B
|
||||
|
||||
|
@ -64,8 +64,8 @@ void consume(int,int,int) noexcept;
|
||||
// TODO: Add support for CopyOnly params
|
||||
// CHECK: define{{.*}} void @_Z1fi8MoveOnly11MoveAndCopy(i32 noundef %val, %struct.MoveOnly* noundef %[[MoParam:.+]], %struct.MoveAndCopy* noundef %[[McParam:.+]]) #0 personality i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*
|
||||
void f(int val, MoveOnly moParam, MoveAndCopy mcParam) {
|
||||
// CHECK: %[[MoCopy:.+]] = alloca %struct.MoveOnly,
|
||||
// CHECK: %[[McCopy:.+]] = alloca %struct.MoveAndCopy,
|
||||
// CHECK: %[[MoCopy:.+]] = alloca %struct.MoveOnly
|
||||
// CHECK: %[[McCopy:.+]] = alloca %struct.MoveAndCopy
|
||||
// CHECK: store i32 %val, i32* %[[ValAddr:.+]]
|
||||
|
||||
// CHECK: call i8* @llvm.coro.begin(
|
||||
@ -110,7 +110,7 @@ void f(int val, MoveOnly moParam, MoveAndCopy mcParam) {
|
||||
// CHECK-LABEL: void @_Z16dependent_paramsI1A1BEvT_T0_S3_(%struct.A* noundef %x, %struct.B* noundef %0, %struct.B* noundef %y)
|
||||
template <typename T, typename U>
|
||||
void dependent_params(T x, U, U y) {
|
||||
// CHECK: %[[x_copy:.+]] = alloca %struct.A,
|
||||
// CHECK: %[[x_copy:.+]] = alloca %struct.A
|
||||
// CHECK-NEXT: %[[unnamed_copy:.+]] = alloca %struct.B
|
||||
// CHECK-NEXT: %[[y_copy:.+]] = alloca %struct.B
|
||||
|
||||
|
@ -391,10 +391,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -464,10 +462,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -653,10 +649,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -706,10 +700,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
|
@ -408,10 +408,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP0]], ptr [[T]])
|
||||
@ -644,10 +642,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -782,10 +778,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP0]], ptr [[T]])
|
||||
@ -892,10 +886,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -1616,10 +1608,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP0]], ptr [[T]])
|
||||
@ -1852,10 +1842,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1990,10 +1978,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP0]], ptr [[T]])
|
||||
@ -2100,10 +2086,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
|
@ -370,10 +370,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -443,10 +441,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -610,10 +606,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -663,10 +657,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
|
@ -325,10 +325,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP0]], ptr [[T]])
|
||||
@ -398,10 +396,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -527,10 +523,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP0]], ptr [[T]])
|
||||
@ -580,10 +574,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
|
@ -499,10 +499,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -634,10 +632,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -838,10 +834,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -891,10 +885,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1290,10 +1282,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1425,10 +1415,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -1627,10 +1615,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1680,10 +1666,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
|
@ -555,10 +555,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -825,10 +823,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1024,10 +1020,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1212,10 +1206,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1606,10 +1598,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1872,10 +1862,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -2069,10 +2057,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -2253,10 +2239,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -2796,10 +2780,8 @@ int main() {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]]) #[[ATTR4]]
|
||||
@ -3111,10 +3093,8 @@ int main() {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]]) #[[ATTR4]]
|
||||
@ -3302,10 +3282,8 @@ int main() {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -3333,10 +3311,8 @@ int main() {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -3510,10 +3486,8 @@ int main() {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]]) #[[ATTR4]]
|
||||
@ -3819,10 +3793,8 @@ int main() {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]]) #[[ATTR4]]
|
||||
@ -4006,10 +3978,8 @@ int main() {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -4037,10 +4007,8 @@ int main() {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
|
@ -560,10 +560,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -837,10 +835,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1043,10 +1039,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1238,10 +1232,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1639,10 +1631,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1912,10 +1902,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -2116,10 +2104,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -2307,10 +2293,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -3645,10 +3629,8 @@ int main() {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]]) #[[ATTR4]]
|
||||
@ -3974,10 +3956,8 @@ int main() {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]]) #[[ATTR4]]
|
||||
@ -4172,10 +4152,8 @@ int main() {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -4203,10 +4181,8 @@ int main() {
|
||||
// CHECK13-NEXT: entry:
|
||||
// CHECK13-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK13-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK13-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK13-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK13-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -4387,10 +4363,8 @@ int main() {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]]) #[[ATTR4]]
|
||||
@ -4710,10 +4684,8 @@ int main() {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]]) #[[ATTR4]]
|
||||
@ -4904,10 +4876,8 @@ int main() {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -4935,10 +4905,8 @@ int main() {
|
||||
// CHECK15-NEXT: entry:
|
||||
// CHECK15-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK15-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK15-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK15-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK15-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
|
@ -506,10 +506,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -641,10 +639,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -852,10 +848,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -905,10 +899,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1311,10 +1303,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1446,10 +1436,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -1655,10 +1643,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1708,10 +1694,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
|
@ -502,10 +502,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -639,10 +637,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -843,10 +839,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -896,10 +890,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1295,10 +1287,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1432,10 +1422,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -1634,10 +1622,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1687,10 +1673,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
|
@ -531,10 +531,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -803,10 +801,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1002,10 +998,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1190,10 +1184,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1584,10 +1576,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1852,10 +1842,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -2049,10 +2037,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -2233,10 +2219,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
|
@ -541,10 +541,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -820,10 +818,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1026,10 +1022,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1221,10 +1215,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1622,10 +1614,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1897,10 +1887,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -2101,10 +2089,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -2292,10 +2278,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
|
@ -509,10 +509,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -646,10 +644,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -857,10 +853,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -910,10 +904,8 @@ int main() {
|
||||
// CHECK1-NEXT: entry:
|
||||
// CHECK1-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK1-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK1-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK1-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1316,10 +1308,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1453,10 +1443,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -1662,10 +1650,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr noundef nonnull align 4 dereferenceable(4) [[THIS1]], ptr noundef nonnull align 4 dereferenceable(4) [[TMP0]], ptr noundef [[T]])
|
||||
@ -1715,10 +1701,8 @@ int main() {
|
||||
// CHECK3-NEXT: entry:
|
||||
// CHECK3-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK3-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK3-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK3-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK3-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
|
@ -557,10 +557,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP0]], ptr [[T]])
|
||||
@ -786,10 +784,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -936,10 +932,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP0]], ptr [[T]])
|
||||
@ -1018,10 +1012,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK9-NEXT: entry:
|
||||
// CHECK9-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 8
|
||||
// CHECK9-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 8
|
||||
// CHECK9-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 8
|
||||
// CHECK9-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK9-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 8
|
||||
@ -1326,10 +1318,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK11-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK11-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK11-NEXT: call void @_ZN1SIfEC2ERKS0_2St(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP0]], ptr [[T]])
|
||||
@ -1555,10 +1545,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK11-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK11-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
@ -1705,10 +1693,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK11-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK11-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
// CHECK11-NEXT: call void @_ZN1SIiEC2ERKS0_2St(ptr nonnull align 4 dereferenceable(4) [[THIS1]], ptr nonnull align 4 dereferenceable(4) [[TMP0]], ptr [[T]])
|
||||
@ -1787,10 +1773,8 @@ void array_func(float a[3], St s[2], int n, long double vla1[n]) {
|
||||
// CHECK11-NEXT: entry:
|
||||
// CHECK11-NEXT: [[THIS_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: [[S_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: [[T_INDIRECT_ADDR:%.*]] = alloca ptr, align 4
|
||||
// CHECK11-NEXT: store ptr [[THIS]], ptr [[THIS_ADDR]], align 4
|
||||
// CHECK11-NEXT: store ptr [[S]], ptr [[S_ADDR]], align 4
|
||||
// CHECK11-NEXT: store ptr [[T]], ptr [[T_INDIRECT_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[THIS1:%.*]] = load ptr, ptr [[THIS_ADDR]], align 4
|
||||
// CHECK11-NEXT: [[F:%.*]] = getelementptr inbounds [[STRUCT_S_0:%.*]], ptr [[THIS1]], i32 0, i32 0
|
||||
// CHECK11-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S_ADDR]], align 4
|
||||
|
Loading…
x
Reference in New Issue
Block a user