diff --git a/clang/test/CodeGen/object-size.c b/clang/test/CodeGen/object-size.c index b39b15fcc65b9..58561a5470f72 100644 --- a/clang/test/CodeGen/object-size.c +++ b/clang/test/CodeGen/object-size.c @@ -34,7 +34,7 @@ void test2(void) { // CHECK-LABEL: define{{.*}} void @test3 void test3(void) { - // CHECK: = call ptr @__strcpy_chk(ptr getelementptr inbounds ([63 x i8], ptr @gbuf, i64 1, i64 37), ptr @.str, i64 0) + // CHECK: = call ptr @__strcpy_chk(ptr getelementptr inbounds ([63 x i8], ptr @gbuf, i64 0, i64 100), ptr @.str, i64 0) strcpy(&gbuf[100], "Hi there"); } diff --git a/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-pr12086.cpp b/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-pr12086.cpp index c15a6183d15df..6fbe4c7fd17a7 100644 --- a/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-pr12086.cpp +++ b/clang/test/CodeGenCXX/cxx0x-initializer-stdinitializerlist-pr12086.cpp @@ -112,21 +112,21 @@ std::initializer_list> nested = { // CHECK-DYNAMIC-BE: store i32 {{.*}}, ptr getelementptr inbounds (i32, ptr @_ZGR6nested0_, i64 1) // CHECK-DYNAMIC-BE: store ptr @_ZGR6nested0_, // CHECK-DYNAMIC-BE: ptr @_ZGR6nested_, align 8 -// CHECK-DYNAMIC-BE: store ptr getelementptr inbounds ([2 x i32], ptr @_ZGR6nested0_, i64 1, i64 0), +// CHECK-DYNAMIC-BE: store ptr getelementptr inbounds ([2 x i32], ptr @_ZGR6nested0_, i64 0, i64 2), // CHECK-DYNAMIC-BE: ptr getelementptr inbounds ({{.*}}, ptr @_ZGR6nested_, i32 0, i32 1), align 8 // CHECK-DYNAMIC-BE: store i32 3, ptr @_ZGR6nested1_ // CHECK-DYNAMIC-BE: store i32 {{.*}}, ptr getelementptr inbounds (i32, ptr @_ZGR6nested1_, i64 1) // CHECK-DYNAMIC-BE: store ptr @_ZGR6nested1_, // CHECK-DYNAMIC-BE: ptr getelementptr inbounds ({{.*}}, ptr @_ZGR6nested_, i64 1), align 8 -// CHECK-DYNAMIC-BE: store ptr getelementptr inbounds ([2 x i32], ptr @_ZGR6nested1_, i64 1, i64 0), +// CHECK-DYNAMIC-BE: store ptr getelementptr inbounds ([2 x i32], ptr @_ZGR6nested1_, i64 0, i64 2), // CHECK-DYNAMIC-BE: ptr getelementptr inbounds ({{.*}}, ptr @_ZGR6nested_, i64 1, i32 1), align 8 // CHECK-DYNAMIC-BE: store i32 5, ptr @_ZGR6nested2_ // CHECK-DYNAMIC-BE: store i32 {{.*}}, ptr getelementptr inbounds (i32, ptr @_ZGR6nested2_, i64 1) // CHECK-DYNAMIC-BE: store ptr @_ZGR6nested2_, // CHECK-DYNAMIC-BE: ptr getelementptr inbounds ({{.*}}, ptr @_ZGR6nested_, i64 2), align 8 -// CHECK-DYNAMIC-BE: store ptr getelementptr inbounds ([2 x i32], ptr @_ZGR6nested2_, i64 1, i64 0), +// CHECK-DYNAMIC-BE: store ptr getelementptr inbounds ([2 x i32], ptr @_ZGR6nested2_, i64 0, i64 2), // CHECK-DYNAMIC-BE: ptr getelementptr inbounds ({{.*}}, ptr @_ZGR6nested_, i64 2, i32 1), align 8 // CHECK-DYNAMIC-BE: store ptr @_ZGR6nested_, // CHECK-DYNAMIC-BE: ptr @nested, align 8 -// CHECK-DYNAMIC-BE: store ptr getelementptr inbounds ([3 x {{.*}}], ptr @_ZGR6nested_, i64 1, i64 0), +// CHECK-DYNAMIC-BE: store ptr getelementptr inbounds ([3 x {{.*}}], ptr @_ZGR6nested_, i64 0, i64 3), // CHECK-DYNAMIC-BE: ptr getelementptr inbounds ({{.*}}, ptr @nested, i32 0, i32 1), align 8 diff --git a/clang/test/CodeGenHLSL/cbuf.hlsl b/clang/test/CodeGenHLSL/cbuf.hlsl index dc2a6aaa8f433..78d9768b22fc8 100644 --- a/clang/test/CodeGenHLSL/cbuf.hlsl +++ b/clang/test/CodeGenHLSL/cbuf.hlsl @@ -16,9 +16,9 @@ tbuffer A : register(t2, space1) { float foo() { // CHECK: load float, ptr @[[CB]], align 4 -// CHECK: load double, ptr getelementptr inbounds ({ float, double }, ptr @[[CB]], i32 0, i32 1), align 8 +// CHECK: load double, ptr getelementptr ({ float, double }, ptr @[[CB]], i32 0, i32 1), align 8 // CHECK: load float, ptr @[[TB]], align 4 -// CHECK: load double, ptr getelementptr inbounds ({ float, double }, ptr @[[TB]], i32 0, i32 1), align 8 +// CHECK: load double, ptr getelementptr ({ float, double }, ptr @[[TB]], i32 0, i32 1), align 8 return a + b + c*d; } diff --git a/clang/test/Driver/linker-wrapper-image.c b/clang/test/Driver/linker-wrapper-image.c index 5d5d62805e174..161402124c4cc 100644 --- a/clang/test/Driver/linker-wrapper-image.c +++ b/clang/test/Driver/linker-wrapper-image.c @@ -24,7 +24,7 @@ // OPENMP-REL: @.omp_offloading.device_image = internal unnamed_addr constant [[[SIZE:[0-9]+]] x i8] c"\10\FF\10\AD{{.*}}", section ".llvm.offloading.relocatable", align 8 // OPENMP: @.omp_offloading.device_image = internal unnamed_addr constant [[[SIZE:[0-9]+]] x i8] c"\10\FF\10\AD{{.*}}", section ".llvm.offloading", align 8 -// OPENMP-NEXT: @.omp_offloading.device_images = internal unnamed_addr constant [1 x %__tgt_device_image] [%__tgt_device_image { ptr getelementptr inbounds ([[[BEGIN:[0-9]+]] x i8], ptr @.omp_offloading.device_image, i64 1, i64 0), ptr getelementptr inbounds ([[[END:[0-9]+]] x i8], ptr @.omp_offloading.device_image, i64 1, i64 0), ptr @__start_omp_offloading_entries, ptr @__stop_omp_offloading_entries }] +// OPENMP-NEXT: @.omp_offloading.device_images = internal unnamed_addr constant [1 x %__tgt_device_image] [%__tgt_device_image { ptr getelementptr ([[[BEGIN:[0-9]+]] x i8], ptr @.omp_offloading.device_image, i64 0, i64 144), ptr getelementptr ([[[END:[0-9]+]] x i8], ptr @.omp_offloading.device_image, i64 0, i64 144), ptr @__start_omp_offloading_entries, ptr @__stop_omp_offloading_entries }] // OPENMP-NEXT: @.omp_offloading.descriptor = internal constant %__tgt_bin_desc { i32 1, ptr @.omp_offloading.device_images, ptr @__start_omp_offloading_entries, ptr @__stop_omp_offloading_entries } // OPENMP-NEXT: @llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 101, ptr @.omp_offloading.descriptor_reg, ptr null }] diff --git a/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_ignorelist.cpp b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_ignorelist.cpp index 8e1c02c6dee62..2fbace52696a9 100644 --- a/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_ignorelist.cpp +++ b/compiler-rt/test/sanitizer_common/TestCases/sanitizer_coverage_allowlist_ignorelist.cpp @@ -27,8 +27,8 @@ // RUN: echo 'section "__sancov_cntrs"' > patterns.txt // RUN: echo '%[0-9]\+ = load i8, ptr @__sancov_gen_' >> patterns.txt // RUN: echo 'store i8 %[0-9]\+, ptr @__sancov_gen_' >> patterns.txt -// RUN: echo '%[0-9]\+ = load i8, ptr getelementptr inbounds (\[[0-9]\+ x i8\], ptr @__sancov_gen_' >> patterns.txt -// RUN: echo 'store i8 %[0-9]\+, ptr getelementptr inbounds (\[[0-9]\+ x i8\], ptr @__sancov_gen_' >> patterns.txt +// RUN: echo '%[0-9]\+ = load i8, ptr getelementptr (\[[0-9]\+ x i8\], ptr @__sancov_gen_' >> patterns.txt +// RUN: echo 'store i8 %[0-9]\+, ptr getelementptr (\[[0-9]\+ x i8\], ptr @__sancov_gen_' >> patterns.txt // Check indirect-calls // RUN: echo 'call void @__sanitizer_cov_trace_pc_indir' >> patterns.txt diff --git a/llvm/lib/IR/ConstantFold.cpp b/llvm/lib/IR/ConstantFold.cpp index 8fce782f47a9c..9a7d437e6da6b 100644 --- a/llvm/lib/IR/ConstantFold.cpp +++ b/llvm/lib/IR/ConstantFold.cpp @@ -1417,50 +1417,6 @@ Constant *llvm::ConstantFoldCompareInstruction(CmpInst::Predicate Predicate, return nullptr; } -/// Test whether the given sequence of *normalized* indices is "inbounds". -template -static bool isInBoundsIndices(ArrayRef Idxs) { - // No indices means nothing that could be out of bounds. - if (Idxs.empty()) return true; - - // If the first index is zero, it's in bounds. - if (cast(Idxs[0])->isNullValue()) return true; - - // If the first index is one and all the rest are zero, it's in bounds, - // by the one-past-the-end rule. - if (auto *CI = dyn_cast(Idxs[0])) { - if (!CI->isOne()) - return false; - } else { - auto *CV = cast(Idxs[0]); - CI = dyn_cast_or_null(CV->getSplatValue()); - if (!CI || !CI->isOne()) - return false; - } - - for (unsigned i = 1, e = Idxs.size(); i != e; ++i) - if (!cast(Idxs[i])->isNullValue()) - return false; - return true; -} - -/// Test whether a given ConstantInt is in-range for a SequentialType. -static bool isIndexInRangeOfArrayType(uint64_t NumElements, - const ConstantInt *CI) { - // We cannot bounds check the index if it doesn't fit in an int64_t. - if (CI->getValue().getSignificantBits() > 64) - return false; - - // A negative index or an index past the end of our sequential type is - // considered out-of-range. - int64_t IndexVal = CI->getSExtValue(); - if (IndexVal < 0 || (IndexVal != 0 && (uint64_t)IndexVal >= NumElements)) - return false; - - // Otherwise, it is in-range. - return true; -} - // Combine Indices - If the source pointer to this getelementptr instruction // is a getelementptr instruction, combine the indices of the two // getelementptr instructions into a single instruction. @@ -1572,157 +1528,5 @@ Constant *llvm::ConstantFoldGetElementPtr(Type *PointeeTy, Constant *C, if (Constant *C = foldGEPOfGEP(GEP, PointeeTy, InBounds, Idxs)) return C; - // Check to see if any array indices are not within the corresponding - // notional array or vector bounds. If so, try to determine if they can be - // factored out into preceding dimensions. - SmallVector NewIdxs; - Type *Ty = PointeeTy; - Type *Prev = C->getType(); - auto GEPIter = gep_type_begin(PointeeTy, Idxs); - bool Unknown = - !isa(Idxs[0]) && !isa(Idxs[0]); - for (unsigned i = 1, e = Idxs.size(); i != e; - Prev = Ty, Ty = (++GEPIter).getIndexedType(), ++i) { - if (!isa(Idxs[i]) && !isa(Idxs[i])) { - // We don't know if it's in range or not. - Unknown = true; - continue; - } - if (!isa(Idxs[i - 1]) && !isa(Idxs[i - 1])) - // Skip if the type of the previous index is not supported. - continue; - if (isa(Ty)) { - // The verify makes sure that GEPs into a struct are in range. - continue; - } - if (isa(Ty)) { - // There can be awkward padding in after a non-power of two vector. - Unknown = true; - continue; - } - auto *STy = cast(Ty); - if (ConstantInt *CI = dyn_cast(Idxs[i])) { - if (isIndexInRangeOfArrayType(STy->getNumElements(), CI)) - // It's in range, skip to the next index. - continue; - if (CI->isNegative()) { - // It's out of range and negative, don't try to factor it. - Unknown = true; - continue; - } - } else { - auto *CV = cast(Idxs[i]); - bool IsInRange = true; - for (unsigned I = 0, E = CV->getNumElements(); I != E; ++I) { - auto *CI = cast(CV->getElementAsConstant(I)); - IsInRange &= isIndexInRangeOfArrayType(STy->getNumElements(), CI); - if (CI->isNegative()) { - Unknown = true; - break; - } - } - if (IsInRange || Unknown) - // It's in range, skip to the next index. - // It's out of range and negative, don't try to factor it. - continue; - } - if (isa(Prev)) { - // It's out of range, but the prior dimension is a struct - // so we can't do anything about it. - Unknown = true; - continue; - } - - // Determine the number of elements in our sequential type. - uint64_t NumElements = STy->getArrayNumElements(); - if (!NumElements) { - Unknown = true; - continue; - } - - // It's out of range, but we can factor it into the prior - // dimension. - NewIdxs.resize(Idxs.size()); - - // Expand the current index or the previous index to a vector from a scalar - // if necessary. - Constant *CurrIdx = cast(Idxs[i]); - auto *PrevIdx = - NewIdxs[i - 1] ? NewIdxs[i - 1] : cast(Idxs[i - 1]); - bool IsCurrIdxVector = CurrIdx->getType()->isVectorTy(); - bool IsPrevIdxVector = PrevIdx->getType()->isVectorTy(); - bool UseVector = IsCurrIdxVector || IsPrevIdxVector; - - if (!IsCurrIdxVector && IsPrevIdxVector) - CurrIdx = ConstantDataVector::getSplat( - cast(PrevIdx->getType())->getNumElements(), CurrIdx); - - if (!IsPrevIdxVector && IsCurrIdxVector) - PrevIdx = ConstantDataVector::getSplat( - cast(CurrIdx->getType())->getNumElements(), PrevIdx); - - Constant *Factor = - ConstantInt::get(CurrIdx->getType()->getScalarType(), NumElements); - if (UseVector) - Factor = ConstantDataVector::getSplat( - IsPrevIdxVector - ? cast(PrevIdx->getType())->getNumElements() - : cast(CurrIdx->getType())->getNumElements(), - Factor); - - NewIdxs[i] = - ConstantFoldBinaryInstruction(Instruction::SRem, CurrIdx, Factor); - - Constant *Div = - ConstantFoldBinaryInstruction(Instruction::SDiv, CurrIdx, Factor); - - // We're working on either ConstantInt or vectors of ConstantInt, - // so these should always fold. - assert(NewIdxs[i] != nullptr && Div != nullptr && "Should have folded"); - - unsigned CommonExtendedWidth = - std::max(PrevIdx->getType()->getScalarSizeInBits(), - Div->getType()->getScalarSizeInBits()); - CommonExtendedWidth = std::max(CommonExtendedWidth, 64U); - - // Before adding, extend both operands to i64 to avoid - // overflow trouble. - Type *ExtendedTy = Type::getIntNTy(Div->getContext(), CommonExtendedWidth); - if (UseVector) - ExtendedTy = FixedVectorType::get( - ExtendedTy, - IsPrevIdxVector - ? cast(PrevIdx->getType())->getNumElements() - : cast(CurrIdx->getType())->getNumElements()); - - if (!PrevIdx->getType()->isIntOrIntVectorTy(CommonExtendedWidth)) - PrevIdx = - ConstantFoldCastInstruction(Instruction::SExt, PrevIdx, ExtendedTy); - - if (!Div->getType()->isIntOrIntVectorTy(CommonExtendedWidth)) - Div = ConstantFoldCastInstruction(Instruction::SExt, Div, ExtendedTy); - - assert(PrevIdx && Div && "Should have folded"); - NewIdxs[i - 1] = ConstantExpr::getAdd(PrevIdx, Div); - } - - // If we did any factoring, start over with the adjusted indices. - if (!NewIdxs.empty()) { - for (unsigned i = 0, e = Idxs.size(); i != e; ++i) - if (!NewIdxs[i]) NewIdxs[i] = cast(Idxs[i]); - return ConstantExpr::getGetElementPtr(PointeeTy, C, NewIdxs, InBounds, - InRange); - } - - // If all indices are known integers and normalized, we can do a simple - // check for the "inbounds" property. - if (!Unknown && !InBounds) - if (auto *GV = dyn_cast(C)) - if (!GV->hasExternalWeakLinkage() && GV->getValueType() == PointeeTy && - isInBoundsIndices(Idxs)) - // TODO(gep_nowrap): Can also set NUW here. - return ConstantExpr::getGetElementPtr( - PointeeTy, C, Idxs, GEPNoWrapFlags::inBounds(), InRange); - return nullptr; } diff --git a/llvm/test/Assembler/ConstantExprFold.ll b/llvm/test/Assembler/ConstantExprFold.ll index ab7e767d767bb..adef90fce7ca4 100644 --- a/llvm/test/Assembler/ConstantExprFold.ll +++ b/llvm/test/Assembler/ConstantExprFold.ll @@ -43,9 +43,9 @@ ; CHECK: @mul = global ptr null ; CHECK: @xor = global ptr @A ; CHECK: @B = external global %Ty -; CHECK: @icmp_ult1 = global i1 icmp ugt (ptr getelementptr inbounds (i64, ptr @A, i64 1), ptr @A) +; CHECK: @icmp_ult1 = global i1 icmp ugt (ptr getelementptr (i64, ptr @A, i64 1), ptr @A) ; CHECK: @icmp_slt = global i1 false -; CHECK: @icmp_ult2 = global i1 icmp ugt (ptr getelementptr inbounds (%Ty, ptr @B, i64 0, i32 1), ptr @B) +; CHECK: @icmp_ult2 = global i1 icmp ugt (ptr getelementptr (%Ty, ptr @B, i64 0, i32 1), ptr @B) ; CHECK: @cons = weak global i32 0, align 8 ; CHECK: @gep1 = global <2 x ptr> undef ; CHECK: @gep2 = global <2 x ptr> undef diff --git a/llvm/test/Assembler/getelementptr.ll b/llvm/test/Assembler/getelementptr.ll index 45c6a2d00cc34..a58af2f7a9b35 100644 --- a/llvm/test/Assembler/getelementptr.ll +++ b/llvm/test/Assembler/getelementptr.ll @@ -1,18 +1,17 @@ ; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s ; RUN: verify-uselistorder %s -; Verify that over-indexed getelementptrs are folded. @A = external global [2 x [3 x [5 x [7 x i32]]]] @B = global ptr getelementptr ([2 x [3 x [5 x [7 x i32]]]], ptr @A, i64 0, i64 0, i64 2, i64 1, i64 7523) -; CHECK: @B = global ptr getelementptr ([2 x [3 x [5 x [7 x i32]]]], ptr @A, i64 36, i64 0, i64 1, i64 0, i64 5) +; CHECK: @B = global ptr getelementptr ([2 x [3 x [5 x [7 x i32]]]], ptr @A, i64 0, i64 0, i64 2, i64 1, i64 7523) @C = global ptr getelementptr ([2 x [3 x [5 x [7 x i32]]]], ptr @A, i64 3, i64 2, i64 0, i64 0, i64 7523) -; CHECK: @C = global ptr getelementptr ([2 x [3 x [5 x [7 x i32]]]], ptr @A, i64 39, i64 1, i64 1, i64 4, i64 5) +; CHECK: @C = global ptr getelementptr ([2 x [3 x [5 x [7 x i32]]]], ptr @A, i64 3, i64 2, i64 0, i64 0, i64 7523) ; Verify that constant expression GEPs work with i84 indices. @D = external global [1 x i32] @E = global ptr getelementptr inbounds ([1 x i32], ptr @D, i84 0, i64 1) -; CHECK: @E = global ptr getelementptr inbounds ([1 x i32], ptr @D, i84 1, i64 0) +; CHECK: @E = global ptr getelementptr inbounds ([1 x i32], ptr @D, i84 0, i64 1) ; Verify that i16 indices work. @x = external global {i32, i32} @@ -23,16 +22,12 @@ @PR23753_b = global ptr getelementptr (i8, ptr @PR23753_a, i64 ptrtoint (ptr @PR23753_a to i64)) ; CHECK: @PR23753_b = global ptr getelementptr (i8, ptr @PR23753_a, i64 ptrtoint (ptr @PR23753_a to i64)) -; Verify that inrange doesn't inhibit over-indexed getelementptr folding, -; but does inhibit combining two GEPs where the inner one has inrange (this -; will be done when DataLayout is available instead). - @nestedarray = global [2 x [4 x ptr]] zeroinitializer -; CHECK: @nestedarray.1 = alias ptr, getelementptr inbounds inrange(-32, 32) ([2 x [4 x ptr]], ptr @nestedarray, i32 0, i64 1, i32 0) +; CHECK: @nestedarray.1 = alias ptr, getelementptr inbounds inrange(-32, 32) ([2 x [4 x ptr]], ptr @nestedarray, i32 0, i32 0, i32 4) @nestedarray.1 = alias ptr, getelementptr inbounds inrange(-32, 32) ([2 x [4 x ptr]], ptr @nestedarray, i32 0, i32 0, i32 4) -; CHECK: @nestedarray.2 = alias ptr, getelementptr inbounds inrange(0, 1) ([2 x [4 x ptr]], ptr @nestedarray, i32 0, i64 1, i32 0) +; CHECK: @nestedarray.2 = alias ptr, getelementptr inbounds inrange(0, 1) ([2 x [4 x ptr]], ptr @nestedarray, i32 0, i32 0, i32 4) @nestedarray.2 = alias ptr, getelementptr inbounds inrange(0, 1) ([2 x [4 x ptr]], ptr @nestedarray, i32 0, i32 0, i32 4) ; CHECK: @nestedarray.3 = alias ptr, getelementptr inbounds inrange(0, 4) ([4 x ptr], ptr @nestedarray, i32 0, i32 0) diff --git a/llvm/test/Assembler/getelementptr_vec_ce.ll b/llvm/test/Assembler/getelementptr_vec_ce.ll index 2b0d462fec9b1..045f8b672edf3 100644 --- a/llvm/test/Assembler/getelementptr_vec_ce.ll +++ b/llvm/test/Assembler/getelementptr_vec_ce.ll @@ -3,7 +3,7 @@ @G = global [4 x i32] zeroinitializer ; CHECK-LABEL: @foo -; CHECK: ret <4 x ptr> getelementptr inbounds ([4 x i32], ptr @G, <4 x i32> zeroinitializer, <4 x i32> ) +; CHECK: ret <4 x ptr> getelementptr ([4 x i32], ptr @G, <4 x i32> zeroinitializer, <4 x i32> ) define <4 x ptr> @foo() { ret <4 x ptr> getelementptr ([4 x i32], ptr @G, i32 0, <4 x i32> ) } diff --git a/llvm/test/CodeGen/AMDGPU/opencl-printf.ll b/llvm/test/CodeGen/AMDGPU/opencl-printf.ll index ee5f82f538ef9..24a6ab1d6c9bd 100644 --- a/llvm/test/CodeGen/AMDGPU/opencl-printf.ll +++ b/llvm/test/CodeGen/AMDGPU/opencl-printf.ll @@ -555,7 +555,7 @@ entry: define amdgpu_kernel void @test_indexed_format_str(i32 %n) { ; R600-LABEL: @test_indexed_format_str( ; R600-NEXT: entry: -; R600-NEXT: [[CALL1:%.*]] = call i32 (ptr addrspace(4), ...) @printf(ptr addrspace(4) getelementptr inbounds ([11 x i8], ptr addrspace(4) @indexed.format.str, i64 0, i32 7), i32 [[N:%.*]]) +; R600-NEXT: [[CALL1:%.*]] = call i32 (ptr addrspace(4), ...) @printf(ptr addrspace(4) getelementptr ([11 x i8], ptr addrspace(4) @indexed.format.str, i64 0, i32 7), i32 [[N:%.*]]) ; R600-NEXT: ret void ; ; GCN-LABEL: @test_indexed_format_str( @@ -583,7 +583,7 @@ entry: define amdgpu_kernel void @test_indexed_format_str_oob(i32 %n) { ; R600-LABEL: @test_indexed_format_str_oob( ; R600-NEXT: entry: -; R600-NEXT: [[CALL1:%.*]] = call i32 (ptr addrspace(4), ...) @printf(ptr addrspace(4) getelementptr inbounds ([11 x i8], ptr addrspace(4) @indexed.format.str, i64 1, i64 0), i32 [[N:%.*]]) +; R600-NEXT: [[CALL1:%.*]] = call i32 (ptr addrspace(4), ...) @printf(ptr addrspace(4) getelementptr ([11 x i8], ptr addrspace(4) @indexed.format.str, i64 0, i64 11), i32 [[N:%.*]]) ; R600-NEXT: ret void ; ; GCN-LABEL: @test_indexed_format_str_oob( @@ -1864,7 +1864,7 @@ entry: define amdgpu_kernel void @test_print_string_indexed(i32 %n) { ; R600-LABEL: @test_print_string_indexed( ; R600-NEXT: entry: -; R600-NEXT: [[PRINTF:%.*]] = call i32 (ptr addrspace(4), ...) @printf(ptr addrspace(4) @.str, ptr addrspace(4) getelementptr inbounds ([32 x i8], ptr addrspace(4) @printed.str.size32, i64 0, i64 15), i32 [[N:%.*]]) +; R600-NEXT: [[PRINTF:%.*]] = call i32 (ptr addrspace(4), ...) @printf(ptr addrspace(4) @.str, ptr addrspace(4) getelementptr ([32 x i8], ptr addrspace(4) @printed.str.size32, i64 0, i64 15), i32 [[N:%.*]]) ; R600-NEXT: ret void ; ; GCN-LABEL: @test_print_string_indexed( @@ -1900,7 +1900,7 @@ entry: define amdgpu_kernel void @test_print_string_indexed_oob(i32 %n) { ; R600-LABEL: @test_print_string_indexed_oob( ; R600-NEXT: entry: -; R600-NEXT: [[PRINTF:%.*]] = call i32 (ptr addrspace(4), ...) @printf(ptr addrspace(4) @.str, ptr addrspace(4) getelementptr inbounds ([32 x i8], ptr addrspace(4) @printed.str.size32, i64 1, i64 0), i32 [[N:%.*]]) +; R600-NEXT: [[PRINTF:%.*]] = call i32 (ptr addrspace(4), ...) @printf(ptr addrspace(4) @.str, ptr addrspace(4) getelementptr ([32 x i8], ptr addrspace(4) @printed.str.size32, i64 0, i64 32), i32 [[N:%.*]]) ; R600-NEXT: ret void ; ; GCN-LABEL: @test_print_string_indexed_oob( diff --git a/llvm/test/Linker/comdat-largest.ll b/llvm/test/Linker/comdat-largest.ll index 02cdfe41ccb9c..9c69cccb4b4cf 100644 --- a/llvm/test/Linker/comdat-largest.ll +++ b/llvm/test/Linker/comdat-largest.ll @@ -41,7 +41,7 @@ target datalayout = "e-m:w-p:32:32-i64:64-f80:32-n8:16:32-S32" $foo = comdat largest @foo = linkonce_odr unnamed_addr constant [1 x ptr] [ptr @bar], comdat($foo) -; CHECK: @foo = alias ptr, getelementptr inbounds ([2 x ptr], ptr @some_name, i32 0, i32 1) +; CHECK: @foo = alias ptr, getelementptr ([2 x ptr], ptr @some_name, i32 0, i32 1) declare void @bar() unnamed_addr diff --git a/llvm/test/Transforms/CodeGenPrepare/AArch64/gather-scatter-opt-inseltpoison.ll b/llvm/test/Transforms/CodeGenPrepare/AArch64/gather-scatter-opt-inseltpoison.ll index 469d818af28f0..3c5c07f3516c9 100644 --- a/llvm/test/Transforms/CodeGenPrepare/AArch64/gather-scatter-opt-inseltpoison.ll +++ b/llvm/test/Transforms/CodeGenPrepare/AArch64/gather-scatter-opt-inseltpoison.ll @@ -73,7 +73,7 @@ define @test_global_array( %indxs, @global_struct_splat( %mask) #0 { ; CHECK-LABEL: @global_struct_splat( -; CHECK-NEXT: [[TMP1:%.*]] = call @llvm.masked.gather.nxv4i32.nxv4p0( shufflevector ( insertelement ( poison, ptr getelementptr inbounds ([[STRUCT_A:%.*]], ptr @c, i64 0, i32 1), i64 0), poison, zeroinitializer), i32 4, [[MASK:%.*]], undef) +; CHECK-NEXT: [[TMP1:%.*]] = call @llvm.masked.gather.nxv4i32.nxv4p0( shufflevector ( insertelement ( poison, ptr getelementptr ([[STRUCT_A:%.*]], ptr @c, i64 0, i32 1), i64 0), poison, zeroinitializer), i32 4, [[MASK:%.*]], undef) ; CHECK-NEXT: ret [[TMP1]] ; %1 = insertelement poison, ptr @c, i32 0 diff --git a/llvm/test/Transforms/CodeGenPrepare/AArch64/gather-scatter-opt.ll b/llvm/test/Transforms/CodeGenPrepare/AArch64/gather-scatter-opt.ll index 6444f6adcdcca..36cd69ed01ed9 100644 --- a/llvm/test/Transforms/CodeGenPrepare/AArch64/gather-scatter-opt.ll +++ b/llvm/test/Transforms/CodeGenPrepare/AArch64/gather-scatter-opt.ll @@ -73,7 +73,7 @@ define @test_global_array( %indxs, @global_struct_splat( %mask) #0 { ; CHECK-LABEL: @global_struct_splat( -; CHECK-NEXT: [[TMP1:%.*]] = call @llvm.masked.gather.nxv4i32.nxv4p0( shufflevector ( insertelement ( poison, ptr getelementptr inbounds ([[STRUCT_A:%.*]], ptr @c, i64 0, i32 1), i64 0), poison, zeroinitializer), i32 4, [[MASK:%.*]], undef) +; CHECK-NEXT: [[TMP1:%.*]] = call @llvm.masked.gather.nxv4i32.nxv4p0( shufflevector ( insertelement ( poison, ptr getelementptr ([[STRUCT_A:%.*]], ptr @c, i64 0, i32 1), i64 0), poison, zeroinitializer), i32 4, [[MASK:%.*]], undef) ; CHECK-NEXT: ret [[TMP1]] ; %1 = insertelement undef, ptr @c, i32 0 diff --git a/llvm/test/Transforms/CodeGenPrepare/X86/gather-scatter-opt-inseltpoison.ll b/llvm/test/Transforms/CodeGenPrepare/X86/gather-scatter-opt-inseltpoison.ll index e62ba5d5a7f55..124ce321e1819 100644 --- a/llvm/test/Transforms/CodeGenPrepare/X86/gather-scatter-opt-inseltpoison.ll +++ b/llvm/test/Transforms/CodeGenPrepare/X86/gather-scatter-opt-inseltpoison.ll @@ -76,7 +76,7 @@ define <4 x i32> @test_global_array(<4 x i64> %indxs) { define <4 x i32> @global_struct_splat() { ; CHECK-LABEL: @global_struct_splat( -; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i32> @llvm.masked.gather.v4i32.v4p0(<4 x ptr> , i32 4, <4 x i1> , <4 x i32> undef) +; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i32> @llvm.masked.gather.v4i32.v4p0(<4 x ptr> , i32 4, <4 x i1> , <4 x i32> undef) ; CHECK-NEXT: ret <4 x i32> [[TMP1]] ; %1 = insertelement <4 x ptr> poison, ptr @c, i32 0 diff --git a/llvm/test/Transforms/CodeGenPrepare/X86/gather-scatter-opt.ll b/llvm/test/Transforms/CodeGenPrepare/X86/gather-scatter-opt.ll index 7899477afdb2a..6c9c844a4ebdb 100644 --- a/llvm/test/Transforms/CodeGenPrepare/X86/gather-scatter-opt.ll +++ b/llvm/test/Transforms/CodeGenPrepare/X86/gather-scatter-opt.ll @@ -75,7 +75,7 @@ define <4 x i32> @test_global_array(<4 x i64> %indxs) { define <4 x i32> @global_struct_splat() { ; CHECK-LABEL: @global_struct_splat( -; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i32> @llvm.masked.gather.v4i32.v4p0(<4 x ptr> , i32 4, <4 x i1> , <4 x i32> undef) +; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i32> @llvm.masked.gather.v4i32.v4p0(<4 x ptr> , i32 4, <4 x i1> , <4 x i32> undef) ; CHECK-NEXT: ret <4 x i32> [[TMP1]] ; %1 = insertelement <4 x ptr> undef, ptr @c, i32 0 diff --git a/llvm/test/Transforms/GlobalOpt/globalsra-opaque-ptr.ll b/llvm/test/Transforms/GlobalOpt/globalsra-opaque-ptr.ll index 0591a14c10a24..4dbd9e6e7de1f 100644 --- a/llvm/test/Transforms/GlobalOpt/globalsra-opaque-ptr.ll +++ b/llvm/test/Transforms/GlobalOpt/globalsra-opaque-ptr.ll @@ -8,12 +8,12 @@ @g = internal global %T zeroinitializer ;. -; CHECK: @[[G:[a-zA-Z0-9_$"\\.-]+]] = internal unnamed_addr global [[T:%.*]] zeroinitializer +; CHECK: @g = internal unnamed_addr global %T zeroinitializer ;. define void @test1() { ; CHECK-LABEL: @test1( -; CHECK-NEXT: store i32 1, ptr getelementptr inbounds ([[T:%.*]], ptr @g, i64 0, i32 1), align 4 -; CHECK-NEXT: store i32 2, ptr getelementptr inbounds ([[T]], ptr @g, i64 0, i32 2), align 4 +; CHECK-NEXT: store i32 1, ptr getelementptr ([[T:%.*]], ptr @g, i64 0, i32 1), align 4 +; CHECK-NEXT: store i32 2, ptr getelementptr ([[T]], ptr @g, i64 0, i32 2), align 4 ; CHECK-NEXT: ret void ; store i32 1, ptr getelementptr (%T, ptr @g, i64 0, i32 1) @@ -23,7 +23,7 @@ define void @test1() { define i32 @load1() { ; CHECK-LABEL: @load1( -; CHECK-NEXT: [[V:%.*]] = load i32, ptr getelementptr inbounds ([[T:%.*]], ptr @g, i64 0, i32 1), align 4 +; CHECK-NEXT: [[V:%.*]] = load i32, ptr getelementptr ([[T:%.*]], ptr @g, i64 0, i32 1), align 4 ; CHECK-NEXT: ret i32 [[V]] ; %v = load i32, ptr getelementptr (%T, ptr @g, i64 0, i32 1) @@ -32,7 +32,7 @@ define i32 @load1() { define i64 @load2() { ; CHECK-LABEL: @load2( -; CHECK-NEXT: [[V:%.*]] = load i64, ptr getelementptr inbounds ([[T:%.*]], ptr @g, i64 0, i32 2), align 4 +; CHECK-NEXT: [[V:%.*]] = load i64, ptr getelementptr ([[T:%.*]], ptr @g, i64 0, i32 2), align 4 ; CHECK-NEXT: ret i64 [[V]] ; %v = load i64, ptr getelementptr (%T, ptr @g, i64 0, i32 2) diff --git a/llvm/test/Transforms/GlobalSplit/basic.ll b/llvm/test/Transforms/GlobalSplit/basic.ll index eb1515741763c..c297547d20426 100644 --- a/llvm/test/Transforms/GlobalSplit/basic.ll +++ b/llvm/test/Transforms/GlobalSplit/basic.ll @@ -3,7 +3,7 @@ target datalayout = "e-p:64:64" target triple = "x86_64-unknown-linux-gnu" -; CHECK: @vtt = constant [3 x ptr] [ptr @global.0, ptr getelementptr inbounds (i8, ptr @global.0, i64 8), ptr @global.1] +; CHECK: @vtt = constant [3 x ptr] [ptr @global.0, ptr getelementptr (i8, ptr @global.0, i64 8), ptr @global.1] @vtt = constant [3 x ptr] [ ptr getelementptr inrange(0, 16) ({ [2 x ptr], [1 x ptr] }, ptr @global, i32 0, i32 0, i32 0), ptr getelementptr inrange(-8, 8) ({ [2 x ptr], [1 x ptr] }, ptr @global, i32 0, i32 0, i32 1), @@ -27,7 +27,7 @@ define ptr @f1() { ; CHECK: define ptr @f2() define ptr @f2() { - ; CHECK-NEXT: ret ptr getelementptr inbounds (i8, ptr @global.0, i64 8) + ; CHECK-NEXT: ret ptr getelementptr (i8, ptr @global.0, i64 8) ret ptr getelementptr inrange(-8, 8) ({ [2 x ptr], [1 x ptr] }, ptr @global, i32 0, i32 0, i32 1) } diff --git a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/infer-address-space.ll b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/infer-address-space.ll index 4290e4f705887..7f0fcd0b97ab9 100644 --- a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/infer-address-space.ll +++ b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/infer-address-space.ll @@ -93,7 +93,7 @@ bb: define amdgpu_kernel void @nested_const_expr() #0 { ; CHECK-LABEL: define amdgpu_kernel void @nested_const_expr( ; CHECK-SAME: ) #[[ATTR0]] { -; CHECK-NEXT: store i32 1, ptr addrspace(3) getelementptr inbounds ([10 x float], ptr addrspace(3) @array, i64 0, i64 1), align 4 +; CHECK-NEXT: store i32 1, ptr addrspace(3) getelementptr ([10 x float], ptr addrspace(3) @array, i64 0, i64 1), align 4 ; CHECK-NEXT: ret void ; store i32 1, ptr bitcast (ptr getelementptr ([10 x float], ptr addrspacecast (ptr addrspace(3) @array to ptr), i64 0, i64 1) to ptr), align 4 diff --git a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/infer-getelementptr.ll b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/infer-getelementptr.ll index dc36e936fca54..2f6640ce98542 100644 --- a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/infer-getelementptr.ll +++ b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/infer-getelementptr.ll @@ -20,7 +20,7 @@ define void @simplified_constexpr_gep_addrspacecast(i64 %idx0, i64 %idx1) { define void @constexpr_gep_addrspacecast(i64 %idx0, i64 %idx1) { ; CHECK-LABEL: @constexpr_gep_addrspacecast( -; CHECK-NEXT: [[GEP0:%.*]] = getelementptr inbounds double, ptr addrspace(3) getelementptr inbounds ([648 x double], ptr addrspace(3) @lds, i64 0, i64 384), i64 [[IDX0:%.*]] +; CHECK-NEXT: [[GEP0:%.*]] = getelementptr inbounds double, ptr addrspace(3) getelementptr ([648 x double], ptr addrspace(3) @lds, i64 0, i64 384), i64 [[IDX0:%.*]] ; CHECK-NEXT: store double 1.000000e+00, ptr addrspace(3) [[GEP0]], align 8 ; CHECK-NEXT: ret void ; @@ -32,7 +32,7 @@ define void @constexpr_gep_addrspacecast(i64 %idx0, i64 %idx1) { define void @constexpr_gep_gep_addrspacecast(i64 %idx0, i64 %idx1) { ; CHECK-LABEL: @constexpr_gep_gep_addrspacecast( -; CHECK-NEXT: [[GEP0:%.*]] = getelementptr inbounds double, ptr addrspace(3) getelementptr inbounds ([648 x double], ptr addrspace(3) @lds, i64 0, i64 384), i64 [[IDX0:%.*]] +; CHECK-NEXT: [[GEP0:%.*]] = getelementptr inbounds double, ptr addrspace(3) getelementptr ([648 x double], ptr addrspace(3) @lds, i64 0, i64 384), i64 [[IDX0:%.*]] ; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds double, ptr addrspace(3) [[GEP0]], i64 [[IDX1:%.*]] ; CHECK-NEXT: store double 1.000000e+00, ptr addrspace(3) [[GEP1]], align 8 ; CHECK-NEXT: ret void @@ -74,9 +74,9 @@ define amdgpu_kernel void @vector_gep(<4 x ptr addrspace(3)> %array) nounwind { define void @repeated_constexpr_gep_addrspacecast(i64 %idx0, i64 %idx1) { ; CHECK-LABEL: @repeated_constexpr_gep_addrspacecast( -; CHECK-NEXT: [[GEP0:%.*]] = getelementptr inbounds double, ptr addrspace(3) getelementptr inbounds ([648 x double], ptr addrspace(3) @lds, i64 0, i64 384), i64 [[IDX0:%.*]] +; CHECK-NEXT: [[GEP0:%.*]] = getelementptr inbounds double, ptr addrspace(3) getelementptr ([648 x double], ptr addrspace(3) @lds, i64 0, i64 384), i64 [[IDX0:%.*]] ; CHECK-NEXT: store double 1.000000e+00, ptr addrspace(3) [[GEP0]], align 8 -; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds double, ptr addrspace(3) getelementptr inbounds ([648 x double], ptr addrspace(3) @lds, i64 0, i64 384), i64 [[IDX1:%.*]] +; CHECK-NEXT: [[GEP1:%.*]] = getelementptr inbounds double, ptr addrspace(3) getelementptr ([648 x double], ptr addrspace(3) @lds, i64 0, i64 384), i64 [[IDX1:%.*]] ; CHECK-NEXT: store double 1.000000e+00, ptr addrspace(3) [[GEP1]], align 8 ; CHECK-NEXT: ret void ; diff --git a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/old-pass-regressions-inseltpoison.ll b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/old-pass-regressions-inseltpoison.ll index 9a100c2ab5f7e..5a2244b9796e8 100644 --- a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/old-pass-regressions-inseltpoison.ll +++ b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/old-pass-regressions-inseltpoison.ll @@ -8,7 +8,7 @@ ; Should generate flat load ; CHECK-LABEL: @generic_address_bitcast_const( -; CHECK: %vecload1 = load <2 x double>, ptr addrspace(1) getelementptr inbounds ([100 x double], ptr addrspace(1) @data, i64 0, i64 4), align 8 +; CHECK: %vecload1 = load <2 x double>, ptr addrspace(1) getelementptr ([100 x double], ptr addrspace(1) @data, i64 0, i64 4), align 8 define amdgpu_kernel void @generic_address_bitcast_const(i64 %arg0, ptr addrspace(1) nocapture %results) #0 { entry: %tmp1 = call i32 @llvm.amdgcn.workitem.id.x() diff --git a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/old-pass-regressions.ll b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/old-pass-regressions.ll index 59e3766cc1076..d2b4b98cc80b8 100644 --- a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/old-pass-regressions.ll +++ b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/old-pass-regressions.ll @@ -8,7 +8,7 @@ ; Should generate flat load ; CHECK-LABEL: @generic_address_bitcast_const( -; CHECK: %vecload1 = load <2 x double>, ptr addrspace(1) getelementptr inbounds ([100 x double], ptr addrspace(1) @data, i64 0, i64 4), align 8 +; CHECK: %vecload1 = load <2 x double>, ptr addrspace(1) getelementptr ([100 x double], ptr addrspace(1) @data, i64 0, i64 4), align 8 define amdgpu_kernel void @generic_address_bitcast_const(i64 %arg0, ptr addrspace(1) nocapture %results) #0 { entry: %tmp1 = call i32 @llvm.amdgcn.workitem.id.x() diff --git a/llvm/test/Transforms/InferAddressSpaces/NVPTX/bug31948.ll b/llvm/test/Transforms/InferAddressSpaces/NVPTX/bug31948.ll index 23c5f99e5d086..753e7b505317d 100644 --- a/llvm/test/Transforms/InferAddressSpaces/NVPTX/bug31948.ll +++ b/llvm/test/Transforms/InferAddressSpaces/NVPTX/bug31948.ll @@ -11,11 +11,11 @@ define void @bug31948(float %a, ptr nocapture readnone %x, ptr nocapture readnon ; CHECK-LABEL: define void @bug31948( ; CHECK-SAME: float [[A:%.*]], ptr nocapture readnone [[X:%.*]], ptr nocapture readnone [[Y:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] { ; CHECK-NEXT: [[ENTRY:.*:]] -; CHECK-NEXT: [[TMP:%.*]] = load ptr, ptr addrspace(3) getelementptr inbounds ([[STRUCT_BAR:%.*]], ptr addrspace(3) @var1, i64 0, i32 1), align 8 +; CHECK-NEXT: [[TMP:%.*]] = load ptr, ptr addrspace(3) getelementptr ([[STRUCT_BAR:%.*]], ptr addrspace(3) @var1, i64 0, i32 1), align 8 ; CHECK-NEXT: [[TMP1:%.*]] = load float, ptr [[TMP]], align 4 ; CHECK-NEXT: [[CONV1:%.*]] = fadd float [[TMP1]], 1.000000e+00 ; CHECK-NEXT: store float [[CONV1]], ptr [[TMP]], align 4 -; CHECK-NEXT: store i32 32, ptr addrspace(3) getelementptr inbounds ([[STRUCT_BAR]], ptr addrspace(3) @var1, i64 0, i32 1), align 4 +; CHECK-NEXT: store i32 32, ptr addrspace(3) getelementptr ([[STRUCT_BAR]], ptr addrspace(3) @var1, i64 0, i32 1), align 4 ; CHECK-NEXT: ret void ; entry: diff --git a/llvm/test/Transforms/InferAlignment/gep-array.ll b/llvm/test/Transforms/InferAlignment/gep-array.ll index 6f6051144b710..5008e38a119d3 100644 --- a/llvm/test/Transforms/InferAlignment/gep-array.ll +++ b/llvm/test/Transforms/InferAlignment/gep-array.ll @@ -40,8 +40,8 @@ define void @simple_pair(i64 %idx) { define void @load_nested() { ; CHECK-LABEL: define void @load_nested() { ; CHECK-NEXT: [[X_0:%.*]] = load i32, ptr @array.array, align 16 -; CHECK-NEXT: [[X_1:%.*]] = load i32, ptr getelementptr inbounds ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 1), align 4 -; CHECK-NEXT: [[X_2:%.*]] = load i32, ptr getelementptr inbounds ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 2), align 8 +; CHECK-NEXT: [[X_1:%.*]] = load i32, ptr getelementptr ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 1), align 4 +; CHECK-NEXT: [[X_2:%.*]] = load i32, ptr getelementptr ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 2), align 8 ; CHECK-NEXT: [[X_3:%.*]] = load i32, ptr getelementptr ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 3), align 4 ; CHECK-NEXT: [[X_4:%.*]] = load i32, ptr getelementptr ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 4), align 16 ; CHECK-NEXT: ret void @@ -57,8 +57,8 @@ define void @load_nested() { define void @store_nested() { ; CHECK-LABEL: define void @store_nested() { ; CHECK-NEXT: store i32 1, ptr @array.array, align 16 -; CHECK-NEXT: store i32 1, ptr getelementptr inbounds ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 1), align 4 -; CHECK-NEXT: store i32 1, ptr getelementptr inbounds ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 2), align 8 +; CHECK-NEXT: store i32 1, ptr getelementptr ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 1), align 4 +; CHECK-NEXT: store i32 1, ptr getelementptr ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 2), align 8 ; CHECK-NEXT: store i32 1, ptr getelementptr ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 3), align 4 ; CHECK-NEXT: store i32 1, ptr getelementptr ([3 x %pair.array], ptr @array.array, i64 0, i64 0, i32 0, i64 4), align 16 ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/InstCombine/gep-vector.ll b/llvm/test/Transforms/InstCombine/gep-vector.ll index f058338fbf7cd..4d20323b78967 100644 --- a/llvm/test/Transforms/InstCombine/gep-vector.ll +++ b/llvm/test/Transforms/InstCombine/gep-vector.ll @@ -5,7 +5,7 @@ define <2 x ptr> @vectorindex1() { ; CHECK-LABEL: @vectorindex1( -; CHECK-NEXT: ret <2 x ptr> getelementptr inbounds ([64 x [8192 x i8]], ptr @block, <2 x i64> zeroinitializer, <2 x i64> , <2 x i64> zeroinitializer) +; CHECK-NEXT: ret <2 x ptr> getelementptr inbounds ([64 x [8192 x i8]], ptr @block, <2 x i64> zeroinitializer, <2 x i64> , <2 x i64> ) ; %1 = getelementptr inbounds [64 x [8192 x i8]], ptr @block, i64 0, <2 x i64> , i64 8192 ret <2 x ptr> %1 @@ -13,7 +13,7 @@ define <2 x ptr> @vectorindex1() { define <2 x ptr> @vectorindex2() { ; CHECK-LABEL: @vectorindex2( -; CHECK-NEXT: ret <2 x ptr> getelementptr inbounds ([64 x [8192 x i8]], ptr @block, <2 x i64> zeroinitializer, <2 x i64> , <2 x i64> ) +; CHECK-NEXT: ret <2 x ptr> getelementptr inbounds ([64 x [8192 x i8]], ptr @block, <2 x i64> zeroinitializer, <2 x i64> , <2 x i64> ) ; %1 = getelementptr inbounds [64 x [8192 x i8]], ptr @block, i64 0, i64 1, <2 x i64> ret <2 x ptr> %1 @@ -21,7 +21,7 @@ define <2 x ptr> @vectorindex2() { define <2 x ptr> @vectorindex3() { ; CHECK-LABEL: @vectorindex3( -; CHECK-NEXT: ret <2 x ptr> getelementptr inbounds ([64 x [8192 x i8]], ptr @block, <2 x i64> zeroinitializer, <2 x i64> , <2 x i64> ) +; CHECK-NEXT: ret <2 x ptr> getelementptr inbounds ([64 x [8192 x i8]], ptr @block, <2 x i64> zeroinitializer, <2 x i64> , <2 x i64> ) ; %1 = getelementptr inbounds [64 x [8192 x i8]], ptr @block, i64 0, <2 x i64> , <2 x i64> ret <2 x ptr> %1 diff --git a/llvm/test/Transforms/InstSimplify/ConstProp/vectorgep-crash.ll b/llvm/test/Transforms/InstSimplify/ConstProp/vectorgep-crash.ll index 00ee7f8a92b21..2be619828e9ea 100644 --- a/llvm/test/Transforms/InstSimplify/ConstProp/vectorgep-crash.ll +++ b/llvm/test/Transforms/InstSimplify/ConstProp/vectorgep-crash.ll @@ -64,7 +64,7 @@ define <2 x ptr> @constant_undef_index() { define <2 x ptr> @constant_inbounds() { ; CHECK-LABEL: define <2 x ptr> @constant_inbounds() { -; CHECK-NEXT: ret <2 x ptr> getelementptr inbounds (i8, ptr @g, <2 x i64> ) +; CHECK-NEXT: ret <2 x ptr> getelementptr (i8, ptr @g, <2 x i64> ) ; %gep = getelementptr i8, ptr @g, <2 x i64> ret <2 x ptr> %gep diff --git a/llvm/test/Transforms/InstSimplify/vector_gep.ll b/llvm/test/Transforms/InstSimplify/vector_gep.ll index 79aa9f13d1ea7..a1d0bd379aa74 100644 --- a/llvm/test/Transforms/InstSimplify/vector_gep.ll +++ b/llvm/test/Transforms/InstSimplify/vector_gep.ll @@ -67,7 +67,7 @@ define <4 x ptr> @test5() { define <16 x ptr> @test6() { ; CHECK-LABEL: define <16 x ptr> @test6() { -; CHECK-NEXT: ret <16 x ptr> getelementptr inbounds ([24 x [42 x [3 x i32]]], ptr @v, <16 x i64> zeroinitializer, <16 x i64> zeroinitializer, <16 x i64> , <16 x i64> zeroinitializer) +; CHECK-NEXT: ret <16 x ptr> getelementptr ([24 x [42 x [3 x i32]]], ptr @v, <16 x i64> zeroinitializer, <16 x i64> zeroinitializer, <16 x i64> , <16 x i64> zeroinitializer) ; %VectorGep = getelementptr [24 x [42 x [3 x i32]]], ptr @v, i64 0, i64 0, <16 x i64> , i64 0 ret <16 x ptr> %VectorGep diff --git a/llvm/test/Transforms/NewGVN/2007-07-26-InterlockingLoops.ll b/llvm/test/Transforms/NewGVN/2007-07-26-InterlockingLoops.ll index 52b4a595b58a9..0111266d03fdc 100644 --- a/llvm/test/Transforms/NewGVN/2007-07-26-InterlockingLoops.ll +++ b/llvm/test/Transforms/NewGVN/2007-07-26-InterlockingLoops.ll @@ -8,7 +8,7 @@ define i32 @NextRootMove(i32 %wtm, i32 %x, i32 %y, i32 %z) { ; CHECK-SAME: (i32 [[WTM:%.*]], i32 [[X:%.*]], i32 [[Y:%.*]], i32 [[Z:%.*]]) { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A:%.*]] = alloca ptr, align 8 -; CHECK-NEXT: [[TMP17618:%.*]] = load ptr, ptr getelementptr inbounds ([65 x ptr], ptr @last, i32 0, i32 1), align 4 +; CHECK-NEXT: [[TMP17618:%.*]] = load ptr, ptr getelementptr ([65 x ptr], ptr @last, i32 0, i32 1), align 4 ; CHECK-NEXT: store ptr [[TMP17618]], ptr [[A]], align 8 ; CHECK-NEXT: br label [[COND_TRUE116:%.*]] ; CHECK: cond_true116: diff --git a/mlir/test/Target/LLVMIR/omptarget-constant-indexing-device-region.mlir b/mlir/test/Target/LLVMIR/omptarget-constant-indexing-device-region.mlir index be8145dc9075e..f263180d4240b 100644 --- a/mlir/test/Target/LLVMIR/omptarget-constant-indexing-device-region.mlir +++ b/mlir/test/Target/LLVMIR/omptarget-constant-indexing-device-region.mlir @@ -37,6 +37,6 @@ module attributes {omp.is_target_device = true} { // CHECK: store ptr %[[ARG1]], ptr %[[ARG1_ALLOCA]], align 8 // CHECK: %[[LOAD_ARG1_ALLOCA:.*]] = load ptr, ptr %[[ARG1_ALLOCA]], align 8 // CHECK: store i32 20, ptr %[[LOAD_ARG1_ALLOCA]], align 4 -// CHECK: %[[GEP_ARG1_ALLOCA:.*]] = getelementptr inbounds [10 x i32], ptr %[[LOAD_ARG1_ALLOCA]], i32 0, i64 4 +// CHECK: %[[GEP_ARG1_ALLOCA:.*]] = getelementptr [10 x i32], ptr %[[LOAD_ARG1_ALLOCA]], i32 0, i64 4 // CHECK: store i32 10, ptr %[[GEP_ARG1_ALLOCA]], align 4 diff --git a/mlir/test/Target/LLVMIR/omptarget-fortran-allocatable-types-host.mlir b/mlir/test/Target/LLVMIR/omptarget-fortran-allocatable-types-host.mlir index 429bb379ee1b8..9b46f84e5050f 100644 --- a/mlir/test/Target/LLVMIR/omptarget-fortran-allocatable-types-host.mlir +++ b/mlir/test/Target/LLVMIR/omptarget-fortran-allocatable-types-host.mlir @@ -66,9 +66,9 @@ module attributes {omp.is_target_device = false} { // CHECK: define void @_QQmain() // CHECK: %[[SCALAR_ALLOCA:.*]] = alloca { ptr, i64, i32, i8, i8, i8, i8 }, i64 1, align 8 -// CHECK: %[[FULL_ARR_SIZE5:.*]] = load i64, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr @[[FULL_ARR_GLOB]], i32 0, i32 7, i64 0, i32 1), align 4 +// CHECK: %[[FULL_ARR_SIZE5:.*]] = load i64, ptr getelementptr ({ ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr @[[FULL_ARR_GLOB]], i32 0, i32 7, i64 0, i32 1), align 4 // CHECK: %[[FULL_ARR_SIZE4:.*]] = sub i64 %[[FULL_ARR_SIZE5]], 1 -// CHECK: %[[ARR_SECT_OFFSET3:.*]] = load i64, ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr @[[ARR_SECT_GLOB]], i32 0, i32 7, i64 0, i32 0), align 4 +// CHECK: %[[ARR_SECT_OFFSET3:.*]] = load i64, ptr getelementptr ({ ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr @[[ARR_SECT_GLOB]], i32 0, i32 7, i64 0, i32 0), align 4 // CHECK: %[[ARR_SECT_OFFSET2:.*]] = sub i64 2, %[[ARR_SECT_OFFSET3]] // CHECK: %[[ARR_SECT_SIZE4:.*]] = sub i64 5, %[[ARR_SECT_OFFSET3]] // CHECK: %[[SCALAR_BASE:.*]] = getelementptr { ptr, i64, i32, i8, i8, i8, i8 }, ptr %[[SCALAR_ALLOCA]], i32 0, i32 0 @@ -86,8 +86,8 @@ module attributes {omp.is_target_device = false} { // CHECK: %[[LARR_SECT:.*]] = load ptr, ptr @_QFEsect_arr, align 8 // CHECK: %[[ARR_SECT_PTR:.*]] = getelementptr inbounds i32, ptr %[[LARR_SECT]], i64 %[[ARR_SECT_OFFSET1]] // CHECK: %[[SCALAR_PTR_LOAD:.*]] = load ptr, ptr %[[SCALAR_BASE]], align 8 -// CHECK: %[[FULL_ARR_DESC_SIZE:.*]] = sdiv exact i64 sub (i64 ptrtoint (ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr @_QFEfull_arr, i32 1) to i64), i64 ptrtoint (ptr @_QFEfull_arr to i64)), ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64) -// CHECK: %[[ARR_SECT_DESC_SIZE:.*]] = sdiv exact i64 sub (i64 ptrtoint (ptr getelementptr inbounds ({ ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr @_QFEsect_arr, i32 1) to i64), i64 ptrtoint (ptr @_QFEsect_arr to i64)), ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64) +// CHECK: %[[FULL_ARR_DESC_SIZE:.*]] = sdiv exact i64 sub (i64 ptrtoint (ptr getelementptr ({ ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr @_QFEfull_arr, i32 1) to i64), i64 ptrtoint (ptr @_QFEfull_arr to i64)), ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64) +// CHECK: %[[ARR_SECT_DESC_SIZE:.*]] = sdiv exact i64 sub (i64 ptrtoint (ptr getelementptr ({ ptr, i64, i32, i8, i8, i8, i8, [1 x [3 x i64]] }, ptr @_QFEsect_arr, i32 1) to i64), i64 ptrtoint (ptr @_QFEsect_arr to i64)), ptrtoint (ptr getelementptr (i8, ptr null, i32 1) to i64) // CHECK: %[[SCALAR_DESC_SZ4:.*]] = getelementptr { ptr, i64, i32, i8, i8, i8, i8 }, ptr %[[SCALAR_ALLOCA]], i32 1 // CHECK: %[[SCALAR_DESC_SZ3:.*]] = ptrtoint ptr %[[SCALAR_DESC_SZ4]] to i64 // CHECK: %[[SCALAR_DESC_SZ2:.*]] = ptrtoint ptr %[[SCALAR_ALLOCA]] to i64