diff --git a/clang/lib/CodeGen/CGBuiltin.cpp b/clang/lib/CodeGen/CGBuiltin.cpp index a648bde5f7544..071667ac772e8 100644 --- a/clang/lib/CodeGen/CGBuiltin.cpp +++ b/clang/lib/CodeGen/CGBuiltin.cpp @@ -5985,8 +5985,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, // Create a temporary array to hold the sizes of local pointer arguments // for the block. \p First is the position of the first size argument. - auto CreateArrayForSizeVar = [=](unsigned First) - -> std::tuple { + auto CreateArrayForSizeVar = + [=](unsigned First) -> std::pair { llvm::APInt ArraySize(32, NumArgs - First); QualType SizeArrayTy = getContext().getConstantArrayType( getContext().getSizeType(), ArraySize, nullptr, @@ -5999,9 +5999,8 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, // actually the Alloca ascasted to the default AS, hence the // stripPointerCasts() llvm::Value *Alloca = TmpPtr->stripPointerCasts(); - llvm::Value *TmpSize = EmitLifetimeStart( - CGM.getDataLayout().getTypeAllocSize(Tmp.getElementType()), Alloca); llvm::Value *ElemPtr; + EmitLifetimeStart(Alloca); // Each of the following arguments specifies the size of the corresponding // argument passed to the enqueued block. auto *Zero = llvm::ConstantInt::get(IntTy, 0); @@ -6018,7 +6017,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, } // Return the Alloca itself rather than a potential ascast as this is only // used by the paired EmitLifetimeEnd. - return {ElemPtr, TmpSize, Alloca}; + return {ElemPtr, Alloca}; }; // Could have events and/or varargs. @@ -6030,7 +6029,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, llvm::Value *Kernel = Builder.CreatePointerCast(Info.KernelHandle, GenericVoidPtrTy); auto *Block = Builder.CreatePointerCast(Info.BlockArg, GenericVoidPtrTy); - auto [ElemPtr, TmpSize, TmpPtr] = CreateArrayForSizeVar(4); + auto [ElemPtr, TmpPtr] = CreateArrayForSizeVar(4); // Create a vector of the arguments, as well as a constant value to // express to the runtime the number of variadic arguments. @@ -6045,8 +6044,7 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, llvm::FunctionType *FTy = llvm::FunctionType::get(Int32Ty, ArgTys, false); auto Call = RValue::get( EmitRuntimeCall(CGM.CreateRuntimeFunction(FTy, Name), Args)); - if (TmpSize) - EmitLifetimeEnd(TmpSize, TmpPtr); + EmitLifetimeEnd(TmpPtr); return Call; } // Any calls now have event arguments passed. @@ -6111,15 +6109,14 @@ RValue CodeGenFunction::EmitBuiltinExpr(const GlobalDecl GD, unsigned BuiltinID, ArgTys.push_back(Int32Ty); Name = "__enqueue_kernel_events_varargs"; - auto [ElemPtr, TmpSize, TmpPtr] = CreateArrayForSizeVar(7); + auto [ElemPtr, TmpPtr] = CreateArrayForSizeVar(7); Args.push_back(ElemPtr); ArgTys.push_back(ElemPtr->getType()); llvm::FunctionType *FTy = llvm::FunctionType::get(Int32Ty, ArgTys, false); auto Call = RValue::get( EmitRuntimeCall(CGM.CreateRuntimeFunction(FTy, Name), Args)); - if (TmpSize) - EmitLifetimeEnd(TmpSize, TmpPtr); + EmitLifetimeEnd(TmpPtr); return Call; } llvm_unreachable("Unexpected enqueue_kernel signature"); diff --git a/clang/lib/CodeGen/CGCall.cpp b/clang/lib/CodeGen/CGCall.cpp index d9bd443455e0f..6e0c2c11a9f3b 100644 --- a/clang/lib/CodeGen/CGCall.cpp +++ b/clang/lib/CodeGen/CGCall.cpp @@ -4319,10 +4319,7 @@ static void emitWriteback(CodeGenFunction &CGF, if (writeback.WritebackExpr) { CGF.EmitIgnoredExpr(writeback.WritebackExpr); - - if (writeback.LifetimeSz) - CGF.EmitLifetimeEnd(writeback.LifetimeSz, - writeback.Temporary.getBasePointer()); + CGF.EmitLifetimeEnd(writeback.Temporary.getBasePointer()); return; } @@ -5282,7 +5279,7 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, // If the call returns a temporary with struct return, create a temporary // alloca to hold the result, unless one is given to us. Address SRetPtr = Address::invalid(); - llvm::Value *UnusedReturnSizePtr = nullptr; + bool NeedSRetLifetimeEnd = false; if (RetAI.isIndirect() || RetAI.isInAlloca() || RetAI.isCoerceAndExpand()) { // For virtual function pointer thunks and musttail calls, we must always // forward an incoming SRet pointer to the callee, because a local alloca @@ -5296,11 +5293,8 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, SRetPtr = ReturnValue.getAddress(); } else { SRetPtr = CreateMemTempWithoutCast(RetTy, "tmp"); - if (HaveInsertPoint() && ReturnValue.isUnused()) { - llvm::TypeSize size = - CGM.getDataLayout().getTypeAllocSize(ConvertTypeForMem(RetTy)); - UnusedReturnSizePtr = EmitLifetimeStart(size, SRetPtr.getBasePointer()); - } + if (HaveInsertPoint() && ReturnValue.isUnused()) + NeedSRetLifetimeEnd = EmitLifetimeStart(SRetPtr.getBasePointer()); } if (IRFunctionArgs.hasSRetArg()) { // A mismatch between the allocated return value's AS and the target's @@ -5484,15 +5478,10 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, Val = Builder.CreateFreeze(Val); IRCallArgs[FirstIRArg] = Val; - // Emit lifetime markers for the temporary alloca. - llvm::TypeSize ByvalTempElementSize = - CGM.getDataLayout().getTypeAllocSize(AI.getElementType()); - llvm::Value *LifetimeSize = - EmitLifetimeStart(ByvalTempElementSize, AI.getPointer()); - - // Add cleanup code to emit the end lifetime marker after the call. - if (LifetimeSize) // In case we disabled lifetime markers. - CallLifetimeEndAfterCall.emplace_back(AI, LifetimeSize); + // Emit lifetime markers for the temporary alloca and add cleanup code to + // emit the end lifetime marker after the call. + if (EmitLifetimeStart(AI.getPointer())) + CallLifetimeEndAfterCall.emplace_back(AI); // Generate the copy. I->copyInto(*this, AI); @@ -5653,9 +5642,9 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, auto unpaddedCoercionType = ArgInfo.getUnpaddedCoerceAndExpandType(); auto *unpaddedStruct = dyn_cast(unpaddedCoercionType); - llvm::Value *tempSize = nullptr; Address addr = Address::invalid(); RawAddress AllocaAddr = RawAddress::invalid(); + bool NeedLifetimeEnd = false; if (I->isAggregate()) { addr = I->hasLValue() ? I->getKnownLValue().getAddress() : I->getKnownRValue().getAggregateAddress(); @@ -5665,7 +5654,6 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, assert(RV.isScalar()); // complex should always just be direct llvm::Type *scalarType = RV.getScalarVal()->getType(); - auto scalarSize = CGM.getDataLayout().getTypeAllocSize(scalarType); auto scalarAlign = CGM.getDataLayout().getPrefTypeAlign(scalarType); // Materialize to a temporary. @@ -5674,7 +5662,7 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, layout->getAlignment(), scalarAlign)), "tmp", /*ArraySize=*/nullptr, &AllocaAddr); - tempSize = EmitLifetimeStart(scalarSize, AllocaAddr.getPointer()); + NeedLifetimeEnd = EmitLifetimeStart(AllocaAddr.getPointer()); Builder.CreateStore(RV.getScalarVal(), addr); } @@ -5699,10 +5687,8 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, } assert(IRArgPos == FirstIRArg + NumIRArgs); - if (tempSize) { - EmitLifetimeEnd(tempSize, AllocaAddr.getPointer()); - } - + if (NeedLifetimeEnd) + EmitLifetimeEnd(AllocaAddr.getPointer()); break; } @@ -5871,9 +5857,8 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, // can't depend on being inside of an ExprWithCleanups, so we need to manually // pop this cleanup later on. Being eager about this is OK, since this // temporary is 'invisible' outside of the callee. - if (UnusedReturnSizePtr) - pushFullExprCleanup(NormalEHLifetimeMarker, SRetPtr, - UnusedReturnSizePtr); + if (NeedSRetLifetimeEnd) + pushFullExprCleanup(NormalEHLifetimeMarker, SRetPtr); llvm::BasicBlock *InvokeDest = CannotThrow ? nullptr : getInvokeDest(); @@ -6007,7 +5992,7 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, // insertion point; this allows the rest of IRGen to discard // unreachable code. if (CI->doesNotReturn()) { - if (UnusedReturnSizePtr) + if (NeedSRetLifetimeEnd) PopCleanupBlock(); // Strip away the noreturn attribute to better diagnose unreachable UB. @@ -6122,7 +6107,7 @@ RValue CodeGenFunction::EmitCall(const CGFunctionInfo &CallInfo, case ABIArgInfo::InAlloca: case ABIArgInfo::Indirect: { RValue ret = convertTempToRValue(SRetPtr, RetTy, SourceLocation()); - if (UnusedReturnSizePtr) + if (NeedSRetLifetimeEnd) PopCleanupBlock(); return ret; } diff --git a/clang/lib/CodeGen/CGCall.h b/clang/lib/CodeGen/CGCall.h index 0b4e3f9cb0365..3157b7f16f294 100644 --- a/clang/lib/CodeGen/CGCall.h +++ b/clang/lib/CodeGen/CGCall.h @@ -289,9 +289,6 @@ class CallArgList : public SmallVector { /// An Expression (optional) that performs the writeback with any required /// casting. const Expr *WritebackExpr; - - // Size for optional lifetime end on the temporary. - llvm::Value *LifetimeSz; }; struct CallArgCleanup { @@ -321,9 +318,8 @@ class CallArgList : public SmallVector { } void addWriteback(LValue srcLV, Address temporary, llvm::Value *toUse, - const Expr *writebackExpr = nullptr, - llvm::Value *lifetimeSz = nullptr) { - Writeback writeback = {srcLV, temporary, toUse, writebackExpr, lifetimeSz}; + const Expr *writebackExpr = nullptr) { + Writeback writeback = {srcLV, temporary, toUse, writebackExpr}; Writebacks.push_back(writeback); } diff --git a/clang/lib/CodeGen/CGDecl.cpp b/clang/lib/CodeGen/CGDecl.cpp index ff2dadad0d4ef..0cade0d4379e2 100644 --- a/clang/lib/CodeGen/CGDecl.cpp +++ b/clang/lib/CodeGen/CGDecl.cpp @@ -1351,30 +1351,27 @@ void CodeGenFunction::EmitAutoVarDecl(const VarDecl &D) { } /// Emit a lifetime.begin marker if some criteria are satisfied. -/// \return a pointer to the temporary size Value if a marker was emitted, null -/// otherwise -llvm::Value *CodeGenFunction::EmitLifetimeStart(llvm::TypeSize Size, - llvm::Value *Addr) { +/// \return whether the marker was emitted. +bool CodeGenFunction::EmitLifetimeStart(llvm::Value *Addr) { if (!ShouldEmitLifetimeMarkers) - return nullptr; + return false; assert(Addr->getType()->getPointerAddressSpace() == CGM.getDataLayout().getAllocaAddrSpace() && "Pointer should be in alloca address space"); - llvm::Value *SizeV = llvm::ConstantInt::get( - Int64Ty, Size.isScalable() ? -1 : Size.getFixedValue()); - llvm::CallInst *C = - Builder.CreateCall(CGM.getLLVMLifetimeStartFn(), {SizeV, Addr}); + llvm::CallInst *C = Builder.CreateCall(CGM.getLLVMLifetimeStartFn(), {Addr}); C->setDoesNotThrow(); - return SizeV; + return true; } -void CodeGenFunction::EmitLifetimeEnd(llvm::Value *Size, llvm::Value *Addr) { +void CodeGenFunction::EmitLifetimeEnd(llvm::Value *Addr) { + if (!ShouldEmitLifetimeMarkers) + return; + assert(Addr->getType()->getPointerAddressSpace() == CGM.getDataLayout().getAllocaAddrSpace() && "Pointer should be in alloca address space"); - llvm::CallInst *C = - Builder.CreateCall(CGM.getLLVMLifetimeEndFn(), {Size, Addr}); + llvm::CallInst *C = Builder.CreateCall(CGM.getLLVMLifetimeEndFn(), {Addr}); C->setDoesNotThrow(); } @@ -1632,9 +1629,8 @@ CodeGenFunction::EmitAutoVarAlloca(const VarDecl &D) { // is rare. if (!Bypasses.IsBypassed(&D) && !(!getLangOpts().CPlusPlus && hasLabelBeenSeenInCurrentScope())) { - llvm::TypeSize Size = CGM.getDataLayout().getTypeAllocSize(allocaTy); - emission.SizeForLifetimeMarkers = - EmitLifetimeStart(Size, AllocaAddr.getPointer()); + emission.UseLifetimeMarkers = + EmitLifetimeStart(AllocaAddr.getPointer()); } } else { assert(!emission.useLifetimeMarkers()); @@ -1727,9 +1723,8 @@ CodeGenFunction::EmitAutoVarAlloca(const VarDecl &D) { // Make sure we call @llvm.lifetime.end. if (emission.useLifetimeMarkers()) - EHStack.pushCleanup(NormalEHLifetimeMarker, - emission.getOriginalAllocatedAddress(), - emission.getSizeForLifetimeMarkers()); + EHStack.pushCleanup( + NormalEHLifetimeMarker, emission.getOriginalAllocatedAddress()); // Analogous to lifetime markers, we use a 'cleanup' to emit fake.use // calls for local variables. We are exempting volatile variables and diff --git a/clang/lib/CodeGen/CGExpr.cpp b/clang/lib/CodeGen/CGExpr.cpp index ed35a055d8a7f..f1affef756df5 100644 --- a/clang/lib/CodeGen/CGExpr.cpp +++ b/clang/lib/CodeGen/CGExpr.cpp @@ -588,11 +588,9 @@ EmitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *M) { } else { switch (M->getStorageDuration()) { case SD_Automatic: - if (auto *Size = EmitLifetimeStart( - CGM.getDataLayout().getTypeAllocSize(Alloca.getElementType()), - Alloca.getPointer())) { + if (EmitLifetimeStart(Alloca.getPointer())) { pushCleanupAfterFullExpr(NormalEHLifetimeMarker, - Alloca, Size); + Alloca); } break; @@ -623,11 +621,8 @@ EmitMaterializeTemporaryExpr(const MaterializeTemporaryExpr *M) { Block, llvm::BasicBlock::iterator(Block->back()))); } - if (auto *Size = EmitLifetimeStart( - CGM.getDataLayout().getTypeAllocSize(Alloca.getElementType()), - Alloca.getPointer())) { - pushFullExprCleanup(NormalEHLifetimeMarker, Alloca, - Size); + if (EmitLifetimeStart(Alloca.getPointer())) { + pushFullExprCleanup(NormalEHLifetimeMarker, Alloca); } if (OldConditional) { @@ -5784,13 +5779,10 @@ LValue CodeGenFunction::EmitHLSLOutArgExpr(const HLSLOutArgExpr *E, llvm::Value *Addr = TempLV.getAddress().getBasePointer(); llvm::Type *ElTy = ConvertTypeForMem(TempLV.getType()); - llvm::TypeSize Sz = CGM.getDataLayout().getTypeAllocSize(ElTy); - - llvm::Value *LifetimeSize = EmitLifetimeStart(Sz, Addr); + EmitLifetimeStart(Addr); Address TmpAddr(Addr, ElTy, TempLV.getAlignment()); - Args.addWriteback(BaseLV, TmpAddr, nullptr, E->getWritebackCast(), - LifetimeSize); + Args.addWriteback(BaseLV, TmpAddr, nullptr, E->getWritebackCast()); Args.add(RValue::get(TmpAddr, *this), Ty); return TempLV; } diff --git a/clang/lib/CodeGen/CGExprAgg.cpp b/clang/lib/CodeGen/CGExprAgg.cpp index cad6731173700..e2f11b86b2053 100644 --- a/clang/lib/CodeGen/CGExprAgg.cpp +++ b/clang/lib/CodeGen/CGExprAgg.cpp @@ -300,16 +300,12 @@ void AggExprEmitter::withReturnValueSlot( Address RetAddr = Address::invalid(); EHScopeStack::stable_iterator LifetimeEndBlock; - llvm::Value *LifetimeSizePtr = nullptr; llvm::IntrinsicInst *LifetimeStartInst = nullptr; if (!UseTemp) { RetAddr = Dest.getAddress(); } else { RetAddr = CGF.CreateMemTempWithoutCast(RetTy, "tmp"); - llvm::TypeSize Size = - CGF.CGM.getDataLayout().getTypeAllocSize(CGF.ConvertTypeForMem(RetTy)); - LifetimeSizePtr = CGF.EmitLifetimeStart(Size, RetAddr.getBasePointer()); - if (LifetimeSizePtr) { + if (CGF.EmitLifetimeStart(RetAddr.getBasePointer())) { LifetimeStartInst = cast(std::prev(Builder.GetInsertPoint())); assert(LifetimeStartInst->getIntrinsicID() == @@ -317,7 +313,7 @@ void AggExprEmitter::withReturnValueSlot( "Last insertion wasn't a lifetime.start?"); CGF.pushFullExprCleanup( - NormalEHLifetimeMarker, RetAddr, LifetimeSizePtr); + NormalEHLifetimeMarker, RetAddr); LifetimeEndBlock = CGF.EHStack.stable_begin(); } } @@ -338,7 +334,7 @@ void AggExprEmitter::withReturnValueSlot( // Since we're not guaranteed to be in an ExprWithCleanups, clean up // eagerly. CGF.DeactivateCleanupBlock(LifetimeEndBlock, LifetimeStartInst); - CGF.EmitLifetimeEnd(LifetimeSizePtr, RetAddr.getBasePointer()); + CGF.EmitLifetimeEnd(RetAddr.getBasePointer()); } } diff --git a/clang/lib/CodeGen/CodeGenFunction.h b/clang/lib/CodeGen/CodeGenFunction.h index 6c32c98cec011..272587f7fa4b5 100644 --- a/clang/lib/CodeGen/CodeGenFunction.h +++ b/clang/lib/CodeGen/CodeGenFunction.h @@ -701,14 +701,12 @@ class CodeGenFunction : public CodeGenTypeCache { bool isRedundantBeforeReturn() override { return true; } llvm::Value *Addr; - llvm::Value *Size; public: - CallLifetimeEnd(RawAddress addr, llvm::Value *size) - : Addr(addr.getPointer()), Size(size) {} + CallLifetimeEnd(RawAddress addr) : Addr(addr.getPointer()) {} void Emit(CodeGenFunction &CGF, Flags flags) override { - CGF.EmitLifetimeEnd(Size, Addr); + CGF.EmitLifetimeEnd(Addr); } }; @@ -3233,8 +3231,8 @@ class CodeGenFunction : public CodeGenTypeCache { void EmitSehTryScopeBegin(); void EmitSehTryScopeEnd(); - llvm::Value *EmitLifetimeStart(llvm::TypeSize Size, llvm::Value *Addr); - void EmitLifetimeEnd(llvm::Value *Size, llvm::Value *Addr); + bool EmitLifetimeStart(llvm::Value *Addr); + void EmitLifetimeEnd(llvm::Value *Addr); llvm::Value *EmitCXXNewExpr(const CXXNewExpr *E); void EmitCXXDeleteExpr(const CXXDeleteExpr *E); @@ -3417,8 +3415,8 @@ class CodeGenFunction : public CodeGenTypeCache { /// initializer. bool IsConstantAggregate; - /// Non-null if we should use lifetime annotations. - llvm::Value *SizeForLifetimeMarkers; + /// True if lifetime markers should be used. + bool UseLifetimeMarkers; /// Address with original alloca instruction. Invalid if the variable was /// emitted as a global constant. @@ -3432,20 +3430,14 @@ class CodeGenFunction : public CodeGenTypeCache { AutoVarEmission(const VarDecl &variable) : Variable(&variable), Addr(Address::invalid()), NRVOFlag(nullptr), IsEscapingByRef(false), IsConstantAggregate(false), - SizeForLifetimeMarkers(nullptr), AllocaAddr(RawAddress::invalid()) {} + UseLifetimeMarkers(false), AllocaAddr(RawAddress::invalid()) {} bool wasEmittedAsGlobal() const { return !Addr.isValid(); } public: static AutoVarEmission invalid() { return AutoVarEmission(Invalid()); } - bool useLifetimeMarkers() const { - return SizeForLifetimeMarkers != nullptr; - } - llvm::Value *getSizeForLifetimeMarkers() const { - assert(useLifetimeMarkers()); - return SizeForLifetimeMarkers; - } + bool useLifetimeMarkers() const { return UseLifetimeMarkers; } /// Returns the raw, allocated address, which is not necessarily /// the address of the object itself. It is casted to default diff --git a/clang/test/C/C11/n1285_1.c b/clang/test/C/C11/n1285_1.c index 50100042e82fd..25b68e3145b04 100644 --- a/clang/test/C/C11/n1285_1.c +++ b/clang/test/C/C11/n1285_1.c @@ -26,16 +26,16 @@ struct X f(void); // C11-O2-NEXT: [[ENTRY:.*:]] // C11-O2-NEXT: [[P:%.*]] = alloca ptr, align 8 // C11-O2-NEXT: [[REF_TMP:%.*]] = alloca [[STRUCT_X:%.*]], align 4 -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[P]]) #[[ATTR5:[0-9]+]] -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr [[REF_TMP]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) #[[ATTR5:[0-9]+]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP]]) #[[ATTR5]] // C11-O2-NEXT: call void @f(ptr dead_on_unwind writable sret([[STRUCT_X]]) align 4 [[REF_TMP]]) // C11-O2-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_X]], ptr [[REF_TMP]], i32 0, i32 0 // C11-O2-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [5 x i32], ptr [[A]], i64 0, i64 0 -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr [[REF_TMP]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP]]) #[[ATTR5]] // C11-O2-NEXT: store ptr [[ARRAYDECAY]], ptr [[P]], align 8, !tbaa [[TBAA2:![0-9]+]] // C11-O2-NEXT: [[TMP0:%.*]] = load ptr, ptr [[P]], align 8, !tbaa [[TBAA2]] // C11-O2-NEXT: [[TMP1:%.*]] = load i32, ptr [[TMP0]], align 4, !tbaa [[TBAA7:![0-9]+]] -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[P]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[P]]) #[[ATTR5]] // C11-O2-NEXT: ret i32 [[TMP1]] // int func_return(void) { @@ -79,7 +79,7 @@ int func_return(void) { // C11-O2-NEXT: [[REF_TMP:%.*]] = alloca [[STRUCT_X:%.*]], align 4 // C11-O2-NEXT: [[Q:%.*]] = alloca ptr, align 8 // C11-O2-NEXT: [[DOTCOMPOUNDLITERAL:%.*]] = alloca [[STRUCT_X]], align 4 -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr [[REF_TMP]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP]]) #[[ATTR5]] // C11-O2-NEXT: br i1 true, label %[[COND_TRUE:.*]], label %[[COND_FALSE:.*]] // C11-O2: [[COND_TRUE]]: // C11-O2-NEXT: call void @llvm.memset.p0.i64(ptr align 4 [[REF_TMP]], i8 0, i64 20, i1 false) @@ -92,8 +92,8 @@ int func_return(void) { // C11-O2-NEXT: [[A1:%.*]] = getelementptr inbounds nuw [[STRUCT_X]], ptr [[REF_TMP]], i32 0, i32 0 // C11-O2-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [5 x i32], ptr [[A1]], i64 0, i64 0 // C11-O2-NEXT: store ptr [[ARRAYDECAY]], ptr @p, align 8, !tbaa [[TBAA2]] -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr [[REF_TMP]]) #[[ATTR5]] -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[Q]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[Q]]) #[[ATTR5]] // C11-O2-NEXT: call void @llvm.memset.p0.i64(ptr align 4 [[DOTCOMPOUNDLITERAL]], i8 0, i64 20, i1 false) // C11-O2-NEXT: [[A2:%.*]] = getelementptr inbounds nuw [[STRUCT_X]], ptr [[DOTCOMPOUNDLITERAL]], i32 0, i32 0 // C11-O2-NEXT: [[A3:%.*]] = getelementptr inbounds nuw [[STRUCT_X]], ptr [[DOTCOMPOUNDLITERAL]], i32 0, i32 0 @@ -104,7 +104,7 @@ int func_return(void) { // C11-O2-NEXT: [[TMP2:%.*]] = load ptr, ptr [[Q]], align 8, !tbaa [[TBAA2]] // C11-O2-NEXT: [[TMP3:%.*]] = load i32, ptr [[TMP2]], align 4, !tbaa [[TBAA7]] // C11-O2-NEXT: [[ADD:%.*]] = add nsw i32 [[TMP1]], [[TMP3]] -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[Q]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[Q]]) #[[ATTR5]] // C11-O2-NEXT: ret i32 [[ADD]] // int ternary(void) { @@ -133,16 +133,16 @@ int ternary(void) { // C11-O2-NEXT: [[ENTRY:.*:]] // C11-O2-NEXT: [[X:%.*]] = alloca [[STRUCT_X:%.*]], align 4 // C11-O2-NEXT: [[REF_TMP:%.*]] = alloca [[STRUCT_X]], align 4 -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr [[X]]) #[[ATTR5]] -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr [[REF_TMP]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP]]) #[[ATTR5]] // C11-O2-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[REF_TMP]], ptr align 4 [[X]], i64 20, i1 false), !tbaa.struct [[TBAA_STRUCT9:![0-9]+]] // C11-O2-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_X]], ptr [[REF_TMP]], i32 0, i32 0 // C11-O2-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [5 x i32], ptr [[A]], i64 0, i64 0 // C11-O2-NEXT: store ptr [[ARRAYDECAY]], ptr @p, align 8, !tbaa [[TBAA2]] -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr [[REF_TMP]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP]]) #[[ATTR5]] // C11-O2-NEXT: [[TMP0:%.*]] = load ptr, ptr @p, align 8, !tbaa [[TBAA2]] // C11-O2-NEXT: [[TMP1:%.*]] = load i32, ptr [[TMP0]], align 4, !tbaa [[TBAA7]] -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr [[X]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) #[[ATTR5]] // C11-O2-NEXT: ret i32 [[TMP1]] // int comma(void) { @@ -170,16 +170,16 @@ int comma(void) { // C11-O2-NEXT: [[ENTRY:.*:]] // C11-O2-NEXT: [[X:%.*]] = alloca [[STRUCT_X:%.*]], align 4 // C11-O2-NEXT: [[REF_TMP:%.*]] = alloca [[STRUCT_X]], align 4 -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr [[X]]) #[[ATTR5]] -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr [[REF_TMP]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP]]) #[[ATTR5]] // C11-O2-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[REF_TMP]], ptr align 4 [[X]], i64 20, i1 false), !tbaa.struct [[TBAA_STRUCT9]] // C11-O2-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_X]], ptr [[REF_TMP]], i32 0, i32 0 // C11-O2-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [5 x i32], ptr [[A]], i64 0, i64 0 // C11-O2-NEXT: store ptr [[ARRAYDECAY]], ptr @p, align 8, !tbaa [[TBAA2]] -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr [[REF_TMP]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP]]) #[[ATTR5]] // C11-O2-NEXT: [[TMP0:%.*]] = load ptr, ptr @p, align 8, !tbaa [[TBAA2]] // C11-O2-NEXT: [[TMP1:%.*]] = load i32, ptr [[TMP0]], align 4, !tbaa [[TBAA7]] -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr [[X]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) #[[ATTR5]] // C11-O2-NEXT: ret i32 [[TMP1]] // int cast(void) { @@ -210,19 +210,19 @@ int cast(void) { // C11-O2-NEXT: [[X:%.*]] = alloca [[STRUCT_X:%.*]], align 4 // C11-O2-NEXT: [[S:%.*]] = alloca [[STRUCT_X]], align 4 // C11-O2-NEXT: [[REF_TMP:%.*]] = alloca [[STRUCT_X]], align 4 -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr [[X]]) #[[ATTR5]] -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr [[S]]) #[[ATTR5]] -// C11-O2-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr [[REF_TMP]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[S]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP]]) #[[ATTR5]] // C11-O2-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[X]], ptr align 4 [[S]], i64 20, i1 false), !tbaa.struct [[TBAA_STRUCT9]] // C11-O2-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[REF_TMP]], ptr align 4 [[X]], i64 20, i1 false), !tbaa.struct [[TBAA_STRUCT9]] // C11-O2-NEXT: [[A:%.*]] = getelementptr inbounds nuw [[STRUCT_X]], ptr [[REF_TMP]], i32 0, i32 0 // C11-O2-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [5 x i32], ptr [[A]], i64 0, i64 0 // C11-O2-NEXT: store ptr [[ARRAYDECAY]], ptr @p, align 8, !tbaa [[TBAA2]] -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr [[REF_TMP]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP]]) #[[ATTR5]] // C11-O2-NEXT: [[TMP0:%.*]] = load ptr, ptr @p, align 8, !tbaa [[TBAA2]] // C11-O2-NEXT: [[TMP1:%.*]] = load i32, ptr [[TMP0]], align 4, !tbaa [[TBAA7]] -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr [[S]]) #[[ATTR5]] -// C11-O2-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr [[X]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[S]]) #[[ATTR5]] +// C11-O2-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) #[[ATTR5]] // C11-O2-NEXT: ret i32 [[TMP1]] // int assign(void) { diff --git a/clang/test/CodeGen/AArch64/ABI-align-packed.c b/clang/test/CodeGen/AArch64/ABI-align-packed.c index 0349ebc8cc639..09f9180cdb0a7 100644 --- a/clang/test/CodeGen/AArch64/ABI-align-packed.c +++ b/clang/test/CodeGen/AArch64/ABI-align-packed.c @@ -72,9 +72,9 @@ __attribute__((noinline)) void named_arg_non_packed_struct(double d0, double d1, // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double [[D8:%.*]], ...) local_unnamed_addr #[[ATTR1:[0-9]+]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[VL:%.*]] = alloca [[STRUCT___VA_LIST:%.*]], align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6:[0-9]+]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VL]]) #[[ATTR6:[0-9]+]] // CHECK-NEXT: call void @llvm.va_start.p0(ptr nonnull [[VL]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: ret void void variadic_non_packed_struct(double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, @@ -89,7 +89,7 @@ void variadic_non_packed_struct(double d0, double d1, double d2, double d3, // CHECK-SAME: () local_unnamed_addr #[[ATTR4:[0-9]+]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[S_NON_PACKED_STRUCT:%.*]] = alloca [[STRUCT_NON_PACKED_STRUCT:%.*]], align 16 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[S_NON_PACKED_STRUCT]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S_NON_PACKED_STRUCT]]) #[[ATTR6]] // CHECK-NEXT: call void (i32, ...) @init(i32 noundef 1, ptr noundef nonnull [[S_NON_PACKED_STRUCT]]) #[[ATTR6]] // CHECK-NEXT: [[DOTFCA_0_LOAD:%.*]] = load <8 x i16>, ptr [[S_NON_PACKED_STRUCT]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD]], 0 @@ -97,7 +97,7 @@ void variadic_non_packed_struct(double d0, double d1, double d2, double d3, // CHECK-NEXT: [[DOTFCA_0_LOAD3:%.*]] = load <8 x i16>, ptr [[S_NON_PACKED_STRUCT]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT4:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD3]], 0 // CHECK-NEXT: call void (double, double, double, double, double, double, double, double, double, ...) @variadic_non_packed_struct(double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, [1 x <8 x i16>] alignstack(16) [[DOTFCA_0_INSERT4]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[S_NON_PACKED_STRUCT]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S_NON_PACKED_STRUCT]]) #[[ATTR6]] // CHECK-NEXT: ret void void test_non_packed_struct() { struct non_packed_struct s_non_packed_struct; @@ -127,9 +127,9 @@ __attribute__((noinline)) void named_arg_packed_struct(double d0, double d1, dou // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double [[D8:%.*]], ...) local_unnamed_addr #[[ATTR1]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[VL:%.*]] = alloca [[STRUCT___VA_LIST:%.*]], align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: call void @llvm.va_start.p0(ptr nonnull [[VL]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: ret void void variadic_packed_struct(double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, @@ -144,7 +144,7 @@ void variadic_packed_struct(double d0, double d1, double d2, double d3, // CHECK-SAME: () local_unnamed_addr #[[ATTR4]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[S_PACKED_STRUCT:%.*]] = alloca [[STRUCT_PACKED_STRUCT:%.*]], align 16 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[S_PACKED_STRUCT]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S_PACKED_STRUCT]]) #[[ATTR6]] // CHECK-NEXT: call void (i32, ...) @init(i32 noundef 1, ptr noundef nonnull [[S_PACKED_STRUCT]]) #[[ATTR6]] // CHECK-NEXT: [[DOTFCA_0_LOAD:%.*]] = load <8 x i16>, ptr [[S_PACKED_STRUCT]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD]], 0 @@ -152,7 +152,7 @@ void variadic_packed_struct(double d0, double d1, double d2, double d3, // CHECK-NEXT: [[DOTFCA_0_LOAD3:%.*]] = load <8 x i16>, ptr [[S_PACKED_STRUCT]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT4:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD3]], 0 // CHECK-NEXT: call void (double, double, double, double, double, double, double, double, double, ...) @variadic_packed_struct(double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, [1 x <8 x i16>] alignstack(8) [[DOTFCA_0_INSERT4]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[S_PACKED_STRUCT]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S_PACKED_STRUCT]]) #[[ATTR6]] // CHECK-NEXT: ret void void test_packed_struct() { struct packed_struct s_packed_struct; @@ -182,9 +182,9 @@ __attribute__((noinline)) void named_arg_packed_member(double d0, double d1, dou // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double [[D8:%.*]], ...) local_unnamed_addr #[[ATTR1]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[VL:%.*]] = alloca [[STRUCT___VA_LIST:%.*]], align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: call void @llvm.va_start.p0(ptr nonnull [[VL]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: ret void void variadic_packed_member(double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, @@ -199,7 +199,7 @@ void variadic_packed_member(double d0, double d1, double d2, double d3, // CHECK-SAME: () local_unnamed_addr #[[ATTR4]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[S_PACKED_MEMBER:%.*]] = alloca [[STRUCT_PACKED_MEMBER:%.*]], align 16 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[S_PACKED_MEMBER]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S_PACKED_MEMBER]]) #[[ATTR6]] // CHECK-NEXT: call void (i32, ...) @init(i32 noundef 1, ptr noundef nonnull [[S_PACKED_MEMBER]]) #[[ATTR6]] // CHECK-NEXT: [[DOTFCA_0_LOAD:%.*]] = load <8 x i16>, ptr [[S_PACKED_MEMBER]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD]], 0 @@ -207,7 +207,7 @@ void variadic_packed_member(double d0, double d1, double d2, double d3, // CHECK-NEXT: [[DOTFCA_0_LOAD3:%.*]] = load <8 x i16>, ptr [[S_PACKED_MEMBER]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT4:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD3]], 0 // CHECK-NEXT: call void (double, double, double, double, double, double, double, double, double, ...) @variadic_packed_member(double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, [1 x <8 x i16>] alignstack(8) [[DOTFCA_0_INSERT4]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[S_PACKED_MEMBER]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S_PACKED_MEMBER]]) #[[ATTR6]] // CHECK-NEXT: ret void void test_packed_member() { struct packed_member s_packed_member; @@ -237,9 +237,9 @@ __attribute__((noinline)) void named_arg_aligned_struct_8(double d0, double d1, // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double [[D8:%.*]], ...) local_unnamed_addr #[[ATTR1]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[VL:%.*]] = alloca [[STRUCT___VA_LIST:%.*]], align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: call void @llvm.va_start.p0(ptr nonnull [[VL]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: ret void void variadic_aligned_struct_8(double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, @@ -254,7 +254,7 @@ void variadic_aligned_struct_8(double d0, double d1, double d2, double d3, // CHECK-SAME: () local_unnamed_addr #[[ATTR4]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[S_ALIGNED_STRUCT_8:%.*]] = alloca [[STRUCT_ALIGNED_STRUCT_8:%.*]], align 16 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[S_ALIGNED_STRUCT_8]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S_ALIGNED_STRUCT_8]]) #[[ATTR6]] // CHECK-NEXT: call void (i32, ...) @init(i32 noundef 1, ptr noundef nonnull [[S_ALIGNED_STRUCT_8]]) #[[ATTR6]] // CHECK-NEXT: [[DOTFCA_0_LOAD:%.*]] = load <8 x i16>, ptr [[S_ALIGNED_STRUCT_8]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD]], 0 @@ -262,7 +262,7 @@ void variadic_aligned_struct_8(double d0, double d1, double d2, double d3, // CHECK-NEXT: [[DOTFCA_0_LOAD3:%.*]] = load <8 x i16>, ptr [[S_ALIGNED_STRUCT_8]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT4:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD3]], 0 // CHECK-NEXT: call void (double, double, double, double, double, double, double, double, double, ...) @variadic_aligned_struct_8(double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, [1 x <8 x i16>] alignstack(16) [[DOTFCA_0_INSERT4]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[S_ALIGNED_STRUCT_8]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S_ALIGNED_STRUCT_8]]) #[[ATTR6]] // CHECK-NEXT: ret void void test_aligned_struct_8() { struct aligned_struct_8 s_aligned_struct_8; @@ -292,9 +292,9 @@ __attribute__((noinline)) void named_arg_aligned_member_8(double d0, double d1, // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double [[D8:%.*]], ...) local_unnamed_addr #[[ATTR1]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[VL:%.*]] = alloca [[STRUCT___VA_LIST:%.*]], align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: call void @llvm.va_start.p0(ptr nonnull [[VL]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: ret void void variadic_aligned_member_8(double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, @@ -309,7 +309,7 @@ void variadic_aligned_member_8(double d0, double d1, double d2, double d3, // CHECK-SAME: () local_unnamed_addr #[[ATTR4]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[S_ALIGNED_MEMBER_8:%.*]] = alloca [[STRUCT_ALIGNED_MEMBER_8:%.*]], align 16 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[S_ALIGNED_MEMBER_8]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S_ALIGNED_MEMBER_8]]) #[[ATTR6]] // CHECK-NEXT: call void (i32, ...) @init(i32 noundef 1, ptr noundef nonnull [[S_ALIGNED_MEMBER_8]]) #[[ATTR6]] // CHECK-NEXT: [[DOTFCA_0_LOAD:%.*]] = load <8 x i16>, ptr [[S_ALIGNED_MEMBER_8]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD]], 0 @@ -317,7 +317,7 @@ void variadic_aligned_member_8(double d0, double d1, double d2, double d3, // CHECK-NEXT: [[DOTFCA_0_LOAD3:%.*]] = load <8 x i16>, ptr [[S_ALIGNED_MEMBER_8]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT4:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD3]], 0 // CHECK-NEXT: call void (double, double, double, double, double, double, double, double, double, ...) @variadic_aligned_member_8(double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, [1 x <8 x i16>] alignstack(16) [[DOTFCA_0_INSERT4]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[S_ALIGNED_MEMBER_8]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S_ALIGNED_MEMBER_8]]) #[[ATTR6]] // CHECK-NEXT: ret void void test_aligned_member_8() { struct aligned_member_8 s_aligned_member_8; @@ -347,9 +347,9 @@ __attribute__((noinline)) void named_arg_pragma_packed_struct_8(double d0, doubl // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double [[D8:%.*]], ...) local_unnamed_addr #[[ATTR1]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[VL:%.*]] = alloca [[STRUCT___VA_LIST:%.*]], align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: call void @llvm.va_start.p0(ptr nonnull [[VL]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: ret void void variadic_pragma_packed_struct_8(double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, @@ -364,7 +364,7 @@ void variadic_pragma_packed_struct_8(double d0, double d1, double d2, double d3, // CHECK-SAME: () local_unnamed_addr #[[ATTR4]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[S_PRAGMA_PACKED_STRUCT_8:%.*]] = alloca [[STRUCT_PRAGMA_PACKED_STRUCT_8:%.*]], align 16 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[S_PRAGMA_PACKED_STRUCT_8]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S_PRAGMA_PACKED_STRUCT_8]]) #[[ATTR6]] // CHECK-NEXT: call void (i32, ...) @init(i32 noundef 1, ptr noundef nonnull [[S_PRAGMA_PACKED_STRUCT_8]]) #[[ATTR6]] // CHECK-NEXT: [[DOTFCA_0_LOAD:%.*]] = load <8 x i16>, ptr [[S_PRAGMA_PACKED_STRUCT_8]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD]], 0 @@ -372,7 +372,7 @@ void variadic_pragma_packed_struct_8(double d0, double d1, double d2, double d3, // CHECK-NEXT: [[DOTFCA_0_LOAD3:%.*]] = load <8 x i16>, ptr [[S_PRAGMA_PACKED_STRUCT_8]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT4:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD3]], 0 // CHECK-NEXT: call void (double, double, double, double, double, double, double, double, double, ...) @variadic_pragma_packed_struct_8(double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, [1 x <8 x i16>] alignstack(8) [[DOTFCA_0_INSERT4]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[S_PRAGMA_PACKED_STRUCT_8]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S_PRAGMA_PACKED_STRUCT_8]]) #[[ATTR6]] // CHECK-NEXT: ret void void test_pragma_packed_struct_8() { struct pragma_packed_struct_8 s_pragma_packed_struct_8; @@ -402,9 +402,9 @@ __attribute__((noinline)) void named_arg_pragma_packed_struct_4(double d0, doubl // CHECK-SAME: (double [[D0:%.*]], double [[D1:%.*]], double [[D2:%.*]], double [[D3:%.*]], double [[D4:%.*]], double [[D5:%.*]], double [[D6:%.*]], double [[D7:%.*]], double [[D8:%.*]], ...) local_unnamed_addr #[[ATTR1]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[VL:%.*]] = alloca [[STRUCT___VA_LIST:%.*]], align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: call void @llvm.va_start.p0(ptr nonnull [[VL]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[VL]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VL]]) #[[ATTR6]] // CHECK-NEXT: ret void void variadic_pragma_packed_struct_4(double d0, double d1, double d2, double d3, double d4, double d5, double d6, double d7, @@ -419,7 +419,7 @@ void variadic_pragma_packed_struct_4(double d0, double d1, double d2, double d3, // CHECK-SAME: () local_unnamed_addr #[[ATTR4]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[S_PRAGMA_PACKED_STRUCT_4:%.*]] = alloca [[STRUCT_PRAGMA_PACKED_STRUCT_4:%.*]], align 16 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[S_PRAGMA_PACKED_STRUCT_4]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S_PRAGMA_PACKED_STRUCT_4]]) #[[ATTR6]] // CHECK-NEXT: call void (i32, ...) @init(i32 noundef 1, ptr noundef nonnull [[S_PRAGMA_PACKED_STRUCT_4]]) #[[ATTR6]] // CHECK-NEXT: [[DOTFCA_0_LOAD:%.*]] = load <8 x i16>, ptr [[S_PRAGMA_PACKED_STRUCT_4]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD]], 0 @@ -427,7 +427,7 @@ void variadic_pragma_packed_struct_4(double d0, double d1, double d2, double d3, // CHECK-NEXT: [[DOTFCA_0_LOAD3:%.*]] = load <8 x i16>, ptr [[S_PRAGMA_PACKED_STRUCT_4]], align 16 // CHECK-NEXT: [[DOTFCA_0_INSERT4:%.*]] = insertvalue [1 x <8 x i16>] poison, <8 x i16> [[DOTFCA_0_LOAD3]], 0 // CHECK-NEXT: call void (double, double, double, double, double, double, double, double, double, ...) @variadic_pragma_packed_struct_4(double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, double poison, [1 x <8 x i16>] alignstack(8) [[DOTFCA_0_INSERT4]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[S_PRAGMA_PACKED_STRUCT_4]]) #[[ATTR6]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S_PRAGMA_PACKED_STRUCT_4]]) #[[ATTR6]] // CHECK-NEXT: ret void void test_pragma_packed_struct_4() { struct pragma_packed_struct_4 s_pragma_packed_struct_4; diff --git a/clang/test/CodeGen/AArch64/byval-temp.c b/clang/test/CodeGen/AArch64/byval-temp.c index 5033b6cf5ac03..353bfa753885b 100644 --- a/clang/test/CodeGen/AArch64/byval-temp.c +++ b/clang/test/CodeGen/AArch64/byval-temp.c @@ -47,13 +47,13 @@ void example(void) { // CHECK-O3-NEXT: %[[byvaltemp1:[0-9A-Za-z-]+]] = alloca %struct.large, align 8 // // Mark the start of the lifetime for `l` -// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr %[[l]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(ptr %[[l]]) // // First, memset `l` to 0. // CHECK-O3-NEXT: call void @llvm.memset.p0.i64(ptr align 8 %[[l]], i8 0, i64 64, i1 false) // // Lifetime of the first temporary starts here and ends right after the call. -// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr %[[byvaltemp]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(ptr %[[byvaltemp]]) // // Then, memcpy `l` to the temporary stack space. // CHECK-O3-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %[[byvaltemp]], ptr align 8 %[[l]], i64 64, i1 false) @@ -61,16 +61,16 @@ void example(void) { // CHECK-O3-NEXT: call void @pass_large(ptr dead_on_return noundef %[[byvaltemp]]) // // The lifetime of the temporary used to pass a pointer to the struct ends here. -// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr %[[byvaltemp]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(ptr %[[byvaltemp]]) // // Now, do the same for the second call, using the second temporary alloca. -// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr %[[byvaltemp1]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(ptr %[[byvaltemp1]]) // CHECK-O3-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %[[byvaltemp1]], ptr align 8 %[[l]], i64 64, i1 false) // CHECK-O3-NEXT: call void @pass_large(ptr dead_on_return noundef %[[byvaltemp1]]) -// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr %[[byvaltemp1]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(ptr %[[byvaltemp1]]) // // Mark the end of the lifetime of `l`. -// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr %l) +// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(ptr %l) // CHECK-O3-NEXT: ret void void example_BitInt(void) { @@ -101,20 +101,20 @@ void example_BitInt(void) { // CHECK-O3-NEXT: [[L:%.*]] = alloca i256, align 16 // CHECK-O3-NEXT: [[INDIRECT_ARG_TEMP:%.*]] = alloca i256, align 16 // CHECK-O3-NEXT: [[INDIRECT_ARG_TEMP1:%.*]] = alloca i256, align 16 -// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[L]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(ptr [[L]]) // CHECK-O3-NEXT: store i256 0, ptr [[L]], align 16, !tbaa [[TBAA6:![0-9]+]] // CHECK-O3-NEXT: [[TMP0:%.*]] = load i256, ptr [[L]], align 16, !tbaa [[TBAA6]] // CHECK-O3-NEXT: [[LOADEDV:%.*]] = trunc i256 [[TMP0]] to i129 -// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[INDIRECT_ARG_TEMP]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(ptr [[INDIRECT_ARG_TEMP]]) // CHECK-O3-NEXT: [[STOREDV:%.*]] = sext i129 [[LOADEDV]] to i256 // CHECK-O3-NEXT: store i256 [[STOREDV]], ptr [[INDIRECT_ARG_TEMP]], align 16, !tbaa [[TBAA6]] // CHECK-O3-NEXT: call void @pass_large_BitInt(ptr dead_on_return noundef [[INDIRECT_ARG_TEMP]]) -// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[INDIRECT_ARG_TEMP]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(ptr [[INDIRECT_ARG_TEMP]]) // CHECK-O3-NEXT: [[TMP1:%.*]] = load i256, ptr [[L]], align 16, !tbaa [[TBAA6]] // CHECK-O3-NEXT: [[LOADEDV1:%.*]] = trunc i256 [[TMP1]] to i129 -// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[INDIRECT_ARG_TEMP1]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.start.p0(ptr [[INDIRECT_ARG_TEMP1]]) // CHECK-O3-NEXT: [[STOREDV1:%.*]] = sext i129 [[LOADEDV1]] to i256 // CHECK-O3-NEXT: store i256 [[STOREDV1]], ptr [[INDIRECT_ARG_TEMP1]], align 16, !tbaa [[TBAA6]] // CHECK-O3-NEXT: call void @pass_large_BitInt(ptr dead_on_return noundef [[INDIRECT_ARG_TEMP1]]) -// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[INDIRECT_ARG_TEMP1]]) -// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[L]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(ptr [[INDIRECT_ARG_TEMP1]]) +// CHECK-O3-NEXT: call void @llvm.lifetime.end.p0(ptr [[L]]) diff --git a/clang/test/CodeGen/AArch64/pure-scalable-args.c b/clang/test/CodeGen/AArch64/pure-scalable-args.c index 48988f7a1722b..d34c7f95a70a3 100644 --- a/clang/test/CodeGen/AArch64/pure-scalable-args.c +++ b/clang/test/CodeGen/AArch64/pure-scalable-args.c @@ -329,7 +329,7 @@ void test_pass_variadic(PST *p, PST *q) { // CHECK-AAPCS: call void (, , , , , , ...) @pass_variadic_callee( %1, %cast.scalable1, %cast.scalable2, %cast.scalable3, %cast.scalable4, %12, ptr dead_on_return noundef nonnull %byval-temp) // CHECK-DARWIN: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %byval-temp, ptr noundef nonnull align 16 dereferenceable(96) %p, i64 96, i1 false) -// CHECK-DARWIN: call void @llvm.lifetime.start.p0(i64 96, ptr nonnull %byval-temp1) +// CHECK-DARWIN: call void @llvm.lifetime.start.p0(ptr nonnull %byval-temp1) // CHECK-DARWIN: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(96) %byval-temp1, ptr noundef nonnull align 16 dereferenceable(96) %q, i64 96, i1 false) // CHECK-DARWIN: call void (ptr, ...) @pass_variadic_callee(ptr dead_on_return noundef nonnull %byval-temp, ptr dead_on_return noundef nonnull %byval-temp1) @@ -392,7 +392,7 @@ void test_va_arg(int n, ...) { // CHECK-AAPCS: define dso_local void @test_va_arg(i32 noundef %n, ...) // CHECK-AAPCS-NEXT: entry: // CHECK-AAPCS-NEXT: %ap = alloca %struct.__va_list, align 8 -// CHECK-AAPCS-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %ap) +// CHECK-AAPCS-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %ap) // CHECK-AAPCS-NEXT: call void @llvm.va_start.p0(ptr nonnull %ap) // CHECK-AAPCS-NEXT: %gr_offs_p = getelementptr inbounds nuw i8, ptr %ap, i64 24 // CHECK-AAPCS-NEXT: %gr_offs = load i32, ptr %gr_offs_p, align 8 @@ -435,14 +435,14 @@ void test_va_arg(int n, ...) { // CHECK-AAPCS-NEXT: %3 = bitcast %cast.scalable to // CHECK-AAPCS-NEXT: %cast.scalable2 = call @llvm.vector.insert.nxv4f32.v4f32( poison, <4 x float> %v.sroa.43.0.copyload, i64 0) // CHECK-AAPCS-NEXT: call void @use1( noundef %3, noundef %cast.scalable2) -// CHECK-AAPCS-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %ap) +// CHECK-AAPCS-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %ap) // CHECK-AAPCS-NEXT: ret void // CHECK-AAPCS-NEXT: } // CHECK-DARWIN: define void @test_va_arg(i32 noundef %n, ...) // CHECK-DARWIN-NEXT: entry: // CHECK-DARWIN-NEXT: %ap = alloca ptr, align 8 -// CHECK-DARWIN-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ap) +// CHECK-DARWIN-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %ap) // CHECK-DARWIN-NEXT: call void @llvm.va_start.p0(ptr nonnull %ap) // CHECK-DARWIN-NEXT: %argp.cur = load ptr, ptr %ap, align 8 // CHECK-DARWIN-NEXT: %argp.next = getelementptr inbounds nuw i8, ptr %argp.cur, i64 8 @@ -456,7 +456,7 @@ void test_va_arg(int n, ...) { // CHECK-DARWIN-NEXT: %1 = bitcast %cast.scalable to // CHECK-DARWIN-NEXT: %cast.scalable2 = call @llvm.vector.insert.nxv4f32.v4f32( poison, <4 x float> %v.sroa.43.0.copyload, i64 0) // CHECK-DARWIN-NEXT: call void @use1( noundef %1, noundef %cast.scalable2) -// CHECK-DARWIN-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ap) +// CHECK-DARWIN-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %ap) // CHECK-DARWIN-NEXT: ret void // CHECK-DARWIN-NEXT: } diff --git a/clang/test/CodeGen/AArch64/sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.c b/clang/test/CodeGen/AArch64/sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.c index d244a8ba88572..4a1185d02981b 100644 --- a/clang/test/CodeGen/AArch64/sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.c +++ b/clang/test/CodeGen/AArch64/sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.c @@ -86,10 +86,10 @@ typedef svint8_t vec2 __attribute__((arm_sve_vector_bits(N))); // CHECK-NEXT: entry: // CHECK-NEXT: [[INDIRECT_ARG_TEMP:%.*]] = alloca <[[#div(VBITS,8)]] x i8>, align 16 // CHECK-NEXT: [[X:%.*]] = tail call <[[#div(VBITS,8)]] x i8> @llvm.vector.extract.v[[#div(VBITS,8)]]i8.nxv16i8( [[X_COERCE:%.*]], i64 0) -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 [[SIZE:[0-9]+]], ptr nonnull [[INDIRECT_ARG_TEMP]]) #[[ATTR6:[0-9]+]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[INDIRECT_ARG_TEMP]]) #[[ATTR6:[0-9]+]] // CHECK-NEXT: store <[[#div(VBITS,8)]] x i8> [[X]], ptr [[INDIRECT_ARG_TEMP]], align 16, [[TBAA6]] // CHECK-NEXT: call void @f3(ptr dead_on_return noundef nonnull [[INDIRECT_ARG_TEMP]]) [[ATTR5:#.*]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 [[SIZE]], ptr nonnull [[INDIRECT_ARG_TEMP]]) #[[ATTR6:[0-9]+]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[INDIRECT_ARG_TEMP]]) #[[ATTR6:[0-9]+]] // CHECK-NEXT: ret void // CHECK128-LABEL: declare void @f3(<16 x i8> noundef) diff --git a/clang/test/CodeGen/AArch64/sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.cpp b/clang/test/CodeGen/AArch64/sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.cpp index d42ecb663050f..6211b609d6d28 100644 --- a/clang/test/CodeGen/AArch64/sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.cpp +++ b/clang/test/CodeGen/AArch64/sve-acle-__ARM_FEATURE_SVE_VECTOR_OPERATORS.cpp @@ -73,10 +73,10 @@ typedef svint16_t vec2 __attribute__((arm_sve_vector_bits(N))); // CHECK128-NEXT: ret void // CHECKWIDE-NEXT: [[INDIRECT_ARG_TEMP:%.*]] = alloca <[[#div(VBITS, 16)]] x i16>, align 16 // CHECKWIDE-NEXT: [[X:%.*]] = tail call <[[#div(VBITS, 16)]] x i16> @llvm.vector.extract.v[[#div(VBITS, 16)]]i16.nxv8i16( [[X_COERCE:%.*]], i64 0) -// CHECKWIDE-NEXT: call void @llvm.lifetime.start.p0(i64 [[SIZE:[0-9]+]], ptr nonnull [[INDIRECT_ARG_TEMP]]) #[[ATTR6:[0-9]+]] +// CHECKWIDE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[INDIRECT_ARG_TEMP]]) #[[ATTR6:[0-9]+]] // CHECKWIDE-NEXT: store <[[#div(VBITS, 16)]] x i16> [[X]], ptr [[INDIRECT_ARG_TEMP]], align 16, [[TBAA6:!tbaa !.*]] // CHECKWIDE-NEXT: call void @_Z1fDv[[#div(VBITS, 16)]]_s(ptr dead_on_return noundef nonnull [[INDIRECT_ARG_TEMP]]) [[ATTR5:#.*]] -// CHECKWIDE-NEXT: call void @llvm.lifetime.end.p0(i64 [[SIZE]], ptr nonnull [[INDIRECT_ARG_TEMP]]) #[[ATTR6:[0-9]+]] +// CHECKWIDE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[INDIRECT_ARG_TEMP]]) #[[ATTR6:[0-9]+]] // CHECKWIDE-NEXT: ret void void g(vec2 x) { f(x); } // OK #endif diff --git a/clang/test/CodeGen/RISCV/riscv-v-lifetime.cpp b/clang/test/CodeGen/RISCV/riscv-v-lifetime.cpp index 4c91fefad749d..c5b863bf2b60d 100644 --- a/clang/test/CodeGen/RISCV/riscv-v-lifetime.cpp +++ b/clang/test/CodeGen/RISCV/riscv-v-lifetime.cpp @@ -10,10 +10,10 @@ vint32m1_t Baz(); // CHECK-NEXT: entry: // CHECK-NEXT: [[A:%.*]] = alloca ptr, align 8 // CHECK-NEXT: [[REF_TMP:%.*]] = alloca , align 4 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[A]]) #[[ATTR3:[0-9]+]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[REF_TMP]]) #[[ATTR3]] -// CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr [[REF_TMP]]) #[[ATTR3]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[A]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) #[[ATTR3:[0-9]+]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP]]) #[[ATTR3]] +// CHECK: call void @llvm.lifetime.end.p0(ptr [[REF_TMP]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) #[[ATTR3]] // vint32m1_t Test() { const vint32m1_t &a = Baz(); diff --git a/clang/test/CodeGen/aggregate-assign-call.c b/clang/test/CodeGen/aggregate-assign-call.c index 7d972397ffaac..f09e770321656 100644 --- a/clang/test/CodeGen/aggregate-assign-call.c +++ b/clang/test/CodeGen/aggregate-assign-call.c @@ -24,23 +24,23 @@ struct S bar(void) { // O1: %[[TMP2_ALLOCA:[^ ]+]] = alloca %struct.S // O1: %[[TMP3_ALLOCA:[^ ]+]] = alloca %struct.S - // O1: call void @llvm.lifetime.start.p0({{[^,]*}}, ptr %[[TMP1_ALLOCA]]) + // O1: call void @llvm.lifetime.start.p0(ptr %[[TMP1_ALLOCA]]) // O1: call void @foo r = foo(); // O1: memcpy - // O1: call void @llvm.lifetime.end.p0({{[^,]*}}, ptr %[[TMP1_ALLOCA]]) + // O1: call void @llvm.lifetime.end.p0(ptr %[[TMP1_ALLOCA]]) - // O1: call void @llvm.lifetime.start.p0({{[^,]*}}, ptr %[[TMP2_ALLOCA]]) + // O1: call void @llvm.lifetime.start.p0(ptr %[[TMP2_ALLOCA]]) // O1: call void @foo r = foo(); // O1: memcpy - // O1: call void @llvm.lifetime.end.p0({{[^,]*}}, ptr %[[TMP2_ALLOCA]]) + // O1: call void @llvm.lifetime.end.p0(ptr %[[TMP2_ALLOCA]]) - // O1: call void @llvm.lifetime.start.p0({{[^,]*}}, ptr %[[TMP3_ALLOCA]]) + // O1: call void @llvm.lifetime.start.p0(ptr %[[TMP3_ALLOCA]]) // O1: call void @foo r = foo(); // O1: memcpy - // O1: call void @llvm.lifetime.end.p0({{[^,]*}}, ptr %[[TMP3_ALLOCA]]) + // O1: call void @llvm.lifetime.end.p0(ptr %[[TMP3_ALLOCA]]) return r; } @@ -59,17 +59,17 @@ struct S baz(int i, volatile int *j) { // O1: %[[TMP2_ALLOCA:[^ ]+]] = alloca %struct.S do { - // O1: call void @llvm.lifetime.start.p0({{[^,]*}}, ptr %[[TMP1_ALLOCA]]) + // O1: call void @llvm.lifetime.start.p0(ptr %[[TMP1_ALLOCA]]) // - // O1: call void @llvm.lifetime.end.p0({{[^,]*}}, ptr %[[TMP1_ALLOCA]]) + // O1: call void @llvm.lifetime.end.p0(ptr %[[TMP1_ALLOCA]]) // // O1: call void @foo_int(ptr dead_on_unwind writable sret(%struct.S) align 4 %[[TMP1_ALLOCA]], // O1: call void @llvm.memcpy - // O1: call void @llvm.lifetime.end.p0({{[^,]*}}, ptr %[[TMP1_ALLOCA]]) - // O1: call void @llvm.lifetime.start.p0({{[^,]*}}, ptr %[[TMP2_ALLOCA]]) + // O1: call void @llvm.lifetime.end.p0(ptr %[[TMP1_ALLOCA]]) + // O1: call void @llvm.lifetime.start.p0(ptr %[[TMP2_ALLOCA]]) // O1: call void @foo_int(ptr dead_on_unwind writable sret(%struct.S) align 4 %[[TMP2_ALLOCA]], // O1: call void @llvm.memcpy - // O1: call void @llvm.lifetime.end.p0({{[^,]*}}, ptr %[[TMP2_ALLOCA]]) + // O1: call void @llvm.lifetime.end.p0(ptr %[[TMP2_ALLOCA]]) r = foo_int(({ if (*j) break; diff --git a/clang/test/CodeGen/attr-counted-by.c b/clang/test/CodeGen/attr-counted-by.c index 9fb50c6ef0fff..59e1b134850a9 100644 --- a/clang/test/CodeGen/attr-counted-by.c +++ b/clang/test/CodeGen/attr-counted-by.c @@ -1209,7 +1209,7 @@ int test12_a, test12_b; // SANITIZE-WITH-ATTR-SAME: i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR3:[0-9]+]] { // SANITIZE-WITH-ATTR-NEXT: entry: // SANITIZE-WITH-ATTR-NEXT: [[BAZ:%.*]] = alloca [[STRUCT_HANG:%.*]], align 4 -// SANITIZE-WITH-ATTR-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[BAZ]]) #[[ATTR9:[0-9]+]] +// SANITIZE-WITH-ATTR-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[BAZ]]) #[[ATTR9:[0-9]+]] // SANITIZE-WITH-ATTR-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) [[BAZ]], ptr noundef nonnull align 4 dereferenceable(24) @test12_bar, i64 24, i1 false), !tbaa.struct [[TBAA_STRUCT10:![0-9]+]] // SANITIZE-WITH-ATTR-NEXT: [[TMP0:%.*]] = icmp ult i32 [[INDEX]], 6 // SANITIZE-WITH-ATTR-NEXT: [[TMP1:%.*]] = zext i32 [[INDEX]] to i64 @@ -1235,7 +1235,7 @@ int test12_a, test12_b; // NO-SANITIZE-WITH-ATTR-SAME: i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR4:[0-9]+]] { // NO-SANITIZE-WITH-ATTR-NEXT: entry: // NO-SANITIZE-WITH-ATTR-NEXT: [[BAZ:%.*]] = alloca [[STRUCT_HANG:%.*]], align 4 -// NO-SANITIZE-WITH-ATTR-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[BAZ]]) #[[ATTR12:[0-9]+]] +// NO-SANITIZE-WITH-ATTR-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[BAZ]]) #[[ATTR12:[0-9]+]] // NO-SANITIZE-WITH-ATTR-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) [[BAZ]], ptr noundef nonnull align 4 dereferenceable(24) @test12_bar, i64 24, i1 false), !tbaa.struct [[TBAA_STRUCT7:![0-9]+]] // NO-SANITIZE-WITH-ATTR-NEXT: [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64 // NO-SANITIZE-WITH-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [6 x i32], ptr [[BAZ]], i64 0, i64 [[IDXPROM]] @@ -1251,7 +1251,7 @@ int test12_a, test12_b; // SANITIZE-WITHOUT-ATTR-SAME: i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR3:[0-9]+]] { // SANITIZE-WITHOUT-ATTR-NEXT: entry: // SANITIZE-WITHOUT-ATTR-NEXT: [[BAZ:%.*]] = alloca [[STRUCT_HANG:%.*]], align 4 -// SANITIZE-WITHOUT-ATTR-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[BAZ]]) #[[ATTR7:[0-9]+]] +// SANITIZE-WITHOUT-ATTR-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[BAZ]]) #[[ATTR7:[0-9]+]] // SANITIZE-WITHOUT-ATTR-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) [[BAZ]], ptr noundef nonnull align 4 dereferenceable(24) @test12_bar, i64 24, i1 false), !tbaa.struct [[TBAA_STRUCT7:![0-9]+]] // SANITIZE-WITHOUT-ATTR-NEXT: [[TMP0:%.*]] = icmp ult i32 [[INDEX]], 6 // SANITIZE-WITHOUT-ATTR-NEXT: [[TMP1:%.*]] = zext i32 [[INDEX]] to i64 @@ -1277,7 +1277,7 @@ int test12_a, test12_b; // NO-SANITIZE-WITHOUT-ATTR-SAME: i32 noundef [[INDEX:%.*]]) local_unnamed_addr #[[ATTR2:[0-9]+]] { // NO-SANITIZE-WITHOUT-ATTR-NEXT: entry: // NO-SANITIZE-WITHOUT-ATTR-NEXT: [[BAZ:%.*]] = alloca [[STRUCT_HANG:%.*]], align 4 -// NO-SANITIZE-WITHOUT-ATTR-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[BAZ]]) #[[ATTR10:[0-9]+]] +// NO-SANITIZE-WITHOUT-ATTR-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[BAZ]]) #[[ATTR10:[0-9]+]] // NO-SANITIZE-WITHOUT-ATTR-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 4 dereferenceable(24) [[BAZ]], ptr noundef nonnull align 4 dereferenceable(24) @test12_bar, i64 24, i1 false), !tbaa.struct [[TBAA_STRUCT7:![0-9]+]] // NO-SANITIZE-WITHOUT-ATTR-NEXT: [[IDXPROM:%.*]] = sext i32 [[INDEX]] to i64 // NO-SANITIZE-WITHOUT-ATTR-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [6 x i32], ptr [[BAZ]], i64 0, i64 [[IDXPROM]] diff --git a/clang/test/CodeGen/cleanup-destslot-simple.c b/clang/test/CodeGen/cleanup-destslot-simple.c index a02841a5e2e2e..8ace33254723c 100644 --- a/clang/test/CodeGen/cleanup-destslot-simple.c +++ b/clang/test/CodeGen/cleanup-destslot-simple.c @@ -13,14 +13,14 @@ // CHECK-LIFETIME-NEXT: entry: // CHECK-LIFETIME-NEXT: [[X:%.*]] = alloca i32, align 4 // CHECK-LIFETIME-NEXT: [[P:%.*]] = alloca ptr, align 8 -// CHECK-LIFETIME-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X]]) #[[ATTR2:[0-9]+]], !dbg [[DBG9:![0-9]+]] +// CHECK-LIFETIME-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) #[[ATTR2:[0-9]+]], !dbg [[DBG9:![0-9]+]] // CHECK-LIFETIME-NEXT: store i32 3, ptr [[X]], align 4, !dbg [[DBG10:![0-9]+]], !tbaa [[TBAA11:![0-9]+]] -// CHECK-LIFETIME-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[P]]), !dbg [[DBG15:![0-9]+]] +// CHECK-LIFETIME-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[P]]), !dbg [[DBG15:![0-9]+]] // CHECK-LIFETIME-NEXT: store volatile ptr [[X]], ptr [[P]], align 8, !dbg [[DBG16:![0-9]+]], !tbaa [[TBAA17:![0-9]+]] // CHECK-LIFETIME-NEXT: [[P_0_P_0_P_0_P_0_:%.*]] = load volatile ptr, ptr [[P]], align 8, !dbg [[DBG19:![0-9]+]], !tbaa [[TBAA17]] // CHECK-LIFETIME-NEXT: [[TMP0:%.*]] = load i32, ptr [[P_0_P_0_P_0_P_0_]], align 4, !dbg [[DBG20:![0-9]+]], !tbaa [[TBAA11]] -// CHECK-LIFETIME-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[P]]), !dbg [[DBG21:![0-9]+]] -// CHECK-LIFETIME-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X]]) #[[ATTR2]], !dbg [[DBG21]] +// CHECK-LIFETIME-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[P]]), !dbg [[DBG21:![0-9]+]] +// CHECK-LIFETIME-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) #[[ATTR2]], !dbg [[DBG21]] // CHECK-LIFETIME-NEXT: ret i32 [[TMP0]], !dbg [[DBG22:![0-9]+]] // // CHECK-OPTNONE-LABEL: @test( @@ -37,13 +37,13 @@ // CHECK-MSAN-NEXT: entry: // CHECK-MSAN-NEXT: [[X:%.*]] = alloca i32, align 4 // CHECK-MSAN-NEXT: [[P:%.*]] = alloca ptr, align 8 -// CHECK-MSAN-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X]]) #[[ATTR2:[0-9]+]], !dbg [[DBG9:![0-9]+]] +// CHECK-MSAN-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) #[[ATTR2:[0-9]+]], !dbg [[DBG9:![0-9]+]] // CHECK-MSAN-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[X]] to i64, !dbg [[DBG9]] // CHECK-MSAN-NEXT: [[TMP1:%.*]] = xor i64 [[TMP0]], 87960930222080, !dbg [[DBG9]] // CHECK-MSAN-NEXT: [[TMP2:%.*]] = inttoptr i64 [[TMP1]] to ptr, !dbg [[DBG9]] // CHECK-MSAN-NEXT: store i32 0, ptr [[TMP2]], align 4, !dbg [[DBG10:![0-9]+]] // CHECK-MSAN-NEXT: store i32 3, ptr [[X]], align 4, !dbg [[DBG10]], !tbaa [[TBAA11:![0-9]+]] -// CHECK-MSAN-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[P]]), !dbg [[DBG15:![0-9]+]] +// CHECK-MSAN-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[P]]), !dbg [[DBG15:![0-9]+]] // CHECK-MSAN-NEXT: [[TMP3:%.*]] = ptrtoint ptr [[P]] to i64, !dbg [[DBG15]] // CHECK-MSAN-NEXT: [[TMP4:%.*]] = xor i64 [[TMP3]], 87960930222080, !dbg [[DBG15]] // CHECK-MSAN-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr, !dbg [[DBG15]] @@ -62,8 +62,8 @@ // CHECK-MSAN-NEXT: [[TMP10:%.*]] = xor i64 [[TMP9]], 87960930222080, !dbg [[DBG20]] // CHECK-MSAN-NEXT: [[TMP11:%.*]] = inttoptr i64 [[TMP10]] to ptr, !dbg [[DBG20]] // CHECK-MSAN-NEXT: [[_MSLD1:%.*]] = load i32, ptr [[TMP11]], align 4, !dbg [[DBG20]] -// CHECK-MSAN-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[P]]), !dbg [[DBG22:![0-9]+]] -// CHECK-MSAN-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X]]) #[[ATTR2]], !dbg [[DBG22]] +// CHECK-MSAN-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[P]]), !dbg [[DBG22:![0-9]+]] +// CHECK-MSAN-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) #[[ATTR2]], !dbg [[DBG22]] // CHECK-MSAN-NEXT: [[_MSCMP2_NOT:%.*]] = icmp eq i32 [[_MSLD1]], 0, !dbg [[DBG23:![0-9]+]] // CHECK-MSAN-NEXT: br i1 [[_MSCMP2_NOT]], label [[TMP13:%.*]], label [[TMP12:%.*]], !dbg [[DBG23]], !prof [[PROF21]] // CHECK-MSAN: 12: @@ -77,13 +77,13 @@ // CHECK-KMSAN-NEXT: [[TMP0:%.*]] = call ptr @__msan_get_context_state() #[[ATTR2:[0-9]+]] // CHECK-KMSAN-NEXT: [[X:%.*]] = alloca i32, align 4 // CHECK-KMSAN-NEXT: [[P:%.*]] = alloca ptr, align 8 -// CHECK-KMSAN-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X]]) #[[ATTR2]], !dbg [[DBG9:![0-9]+]] +// CHECK-KMSAN-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) #[[ATTR2]], !dbg [[DBG9:![0-9]+]] // CHECK-KMSAN-NEXT: call void @__msan_poison_alloca(ptr nonnull [[X]], i64 4, ptr nonnull @[[GLOB0:[0-9]+]]) #[[ATTR2]], !dbg [[DBG9]] // CHECK-KMSAN-NEXT: [[TMP1:%.*]] = call { ptr, ptr } @__msan_metadata_ptr_for_store_4(ptr nonnull [[X]]) #[[ATTR2]], !dbg [[DBG10:![0-9]+]] // CHECK-KMSAN-NEXT: [[TMP2:%.*]] = extractvalue { ptr, ptr } [[TMP1]], 0, !dbg [[DBG10]] // CHECK-KMSAN-NEXT: store i32 0, ptr [[TMP2]], align 4, !dbg [[DBG10]] // CHECK-KMSAN-NEXT: store i32 3, ptr [[X]], align 4, !dbg [[DBG10]], !tbaa [[TBAA11:![0-9]+]] -// CHECK-KMSAN-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[P]]), !dbg [[DBG15:![0-9]+]] +// CHECK-KMSAN-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[P]]), !dbg [[DBG15:![0-9]+]] // CHECK-KMSAN-NEXT: call void @__msan_poison_alloca(ptr nonnull [[P]], i64 8, ptr nonnull @[[GLOB1:[0-9]+]]) #[[ATTR2]], !dbg [[DBG15]] // CHECK-KMSAN-NEXT: [[TMP3:%.*]] = call { ptr, ptr } @__msan_metadata_ptr_for_store_8(ptr nonnull [[P]]) #[[ATTR2]], !dbg [[DBG16:![0-9]+]] // CHECK-KMSAN-NEXT: [[TMP4:%.*]] = extractvalue { ptr, ptr } [[TMP3]], 0, !dbg [[DBG16]] @@ -109,8 +109,8 @@ // CHECK-KMSAN-NEXT: [[TMP14:%.*]] = extractvalue { ptr, ptr } [[TMP12]], 1, !dbg [[DBG20]] // CHECK-KMSAN-NEXT: [[_MSLD1:%.*]] = load i32, ptr [[TMP13]], align 4, !dbg [[DBG20]] // CHECK-KMSAN-NEXT: [[TMP15:%.*]] = load i32, ptr [[TMP14]], align 4, !dbg [[DBG20]] -// CHECK-KMSAN-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[P]]), !dbg [[DBG22:![0-9]+]] -// CHECK-KMSAN-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X]]) #[[ATTR2]], !dbg [[DBG22]] +// CHECK-KMSAN-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[P]]), !dbg [[DBG22:![0-9]+]] +// CHECK-KMSAN-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) #[[ATTR2]], !dbg [[DBG22]] // CHECK-KMSAN-NEXT: store i32 [[_MSLD1]], ptr [[RETVAL_SHADOW]], align 8, !dbg [[DBG23:![0-9]+]] // CHECK-KMSAN-NEXT: store i32 [[TMP15]], ptr [[RETVAL_ORIGIN]], align 4, !dbg [[DBG23]] // CHECK-KMSAN-NEXT: ret i32 [[TMP11]], !dbg [[DBG23]] diff --git a/clang/test/CodeGen/dominating-store-to-return.c b/clang/test/CodeGen/dominating-store-to-return.c index 1c53e358cf146..d095f3ffa0019 100644 --- a/clang/test/CodeGen/dominating-store-to-return.c +++ b/clang/test/CodeGen/dominating-store-to-return.c @@ -16,10 +16,10 @@ // LIFETIME-NEXT: [[FOO:%.*]] = alloca i32, align 4 // LIFETIME-NEXT: [[FOO2:%.*]] = alloca i32, align 4 // LIFETIME-NEXT: store i32 0, ptr [[RETVAL]], align 4 -// LIFETIME-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[FOO]]) #[[ATTR2:[0-9]+]] -// LIFETIME-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[FOO2]]) #[[ATTR2]] -// LIFETIME-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[FOO2]]) #[[ATTR2]] -// LIFETIME-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[FOO]]) #[[ATTR2]] +// LIFETIME-NEXT: call void @llvm.lifetime.start.p0(ptr [[FOO]]) #[[ATTR2:[0-9]+]] +// LIFETIME-NEXT: call void @llvm.lifetime.start.p0(ptr [[FOO2]]) #[[ATTR2]] +// LIFETIME-NEXT: call void @llvm.lifetime.end.p0(ptr [[FOO2]]) #[[ATTR2]] +// LIFETIME-NEXT: call void @llvm.lifetime.end.p0(ptr [[FOO]]) #[[ATTR2]] // LIFETIME-NEXT: ret i32 0 // int main() { diff --git a/clang/test/CodeGen/lifetime-sanitizer.c b/clang/test/CodeGen/lifetime-sanitizer.c index 68879fda1e1a5..4d36bd7a9fee5 100644 --- a/clang/test/CodeGen/lifetime-sanitizer.c +++ b/clang/test/CodeGen/lifetime-sanitizer.c @@ -18,14 +18,14 @@ extern int bar(char *A, int n); // CHECK-O0-NOT: @llvm.lifetime.start int foo(int n) { if (n) { - // LIFETIME: @llvm.lifetime.start.p0(i64 10, ptr {{.*}}) + // LIFETIME: @llvm.lifetime.start.p0(ptr {{.*}}) char A[10]; return bar(A, 1); - // LIFETIME: @llvm.lifetime.end.p0(i64 10, ptr {{.*}}) + // LIFETIME: @llvm.lifetime.end.p0(ptr {{.*}}) } else { - // LIFETIME: @llvm.lifetime.start.p0(i64 20, ptr {{.*}}) + // LIFETIME: @llvm.lifetime.start.p0(ptr {{.*}}) char A[20]; return bar(A, 2); - // LIFETIME: @llvm.lifetime.end.p0(i64 20, ptr {{.*}}) + // LIFETIME: @llvm.lifetime.end.p0(ptr {{.*}}) } } diff --git a/clang/test/CodeGen/lifetime.c b/clang/test/CodeGen/lifetime.c index 748a496a6e9ea..edb6867465d99 100644 --- a/clang/test/CodeGen/lifetime.c +++ b/clang/test/CodeGen/lifetime.c @@ -8,14 +8,14 @@ extern void use(char *a); // CHECK-LABEL: @helper_no_markers __attribute__((always_inline)) void helper_no_markers(void) { char a; - // LIFETIME: call void @llvm.lifetime.start.p0(i64 1, + // LIFETIME: call void @llvm.lifetime.start.p0( use(&a); - // LIFETIME: call void @llvm.lifetime.end.p0(i64 1, + // LIFETIME: call void @llvm.lifetime.end.p0( } // CHECK-LABEL: @lifetime_test void lifetime_test(void) { -// LIFETIME: call void @llvm.lifetime.start.p0(i64 1, +// LIFETIME: call void @llvm.lifetime.start.p0( helper_no_markers(); -// LIFETIME: call void @llvm.lifetime.end.p0(i64 1, +// LIFETIME: call void @llvm.lifetime.end.p0( } diff --git a/clang/test/CodeGen/lifetime2.c b/clang/test/CodeGen/lifetime2.c index 88c35fca029da..560389f912510 100644 --- a/clang/test/CodeGen/lifetime2.c +++ b/clang/test/CodeGen/lifetime2.c @@ -7,21 +7,21 @@ extern int bar(char *A, int n); // CHECK-LABEL: @foo int foo (int n) { if (n) { -// O2: call void @llvm.lifetime.start.p0(i64 100, +// O2: call void @llvm.lifetime.start.p0( char A[100]; return bar(A, 1); -// O2: call void @llvm.lifetime.end.p0(i64 100, +// O2: call void @llvm.lifetime.end.p0( } else { -// O2: call void @llvm.lifetime.start.p0(i64 100, +// O2: call void @llvm.lifetime.start.p0( char A[100]; return bar(A, 2); -// O2: call void @llvm.lifetime.end.p0(i64 100, +// O2: call void @llvm.lifetime.end.p0( } } // CHECK-LABEL: @no_goto_bypass void no_goto_bypass(void) { - // O2: call void @llvm.lifetime.start.p0(i64 1, + // O2: call void @llvm.lifetime.start.p0( char x; l1: bar(&x, 1); @@ -45,16 +45,16 @@ void goto_bypass(void) { void no_switch_bypass(int n) { switch (n) { case 1: { - // O2: call void @llvm.lifetime.start.p0(i64 1, - // O2: call void @llvm.lifetime.end.p0(i64 1, + // O2: call void @llvm.lifetime.start.p0( + // O2: call void @llvm.lifetime.end.p0( char x; bar(&x, 1); break; } case 2: n = n; - // O2: call void @llvm.lifetime.start.p0(i64 5, - // O2: call void @llvm.lifetime.end.p0(i64 5, + // O2: call void @llvm.lifetime.start.p0( + // O2: call void @llvm.lifetime.end.p0( char y[5]; bar(y, 5); break; diff --git a/clang/test/CodeGen/lifetime3.cpp b/clang/test/CodeGen/lifetime3.cpp index 64a097cfb859d..476ca0d2cde3a 100644 --- a/clang/test/CodeGen/lifetime3.cpp +++ b/clang/test/CodeGen/lifetime3.cpp @@ -6,30 +6,30 @@ extern int bar(char *A, int n); // CHECK-LABEL: @no_switch_bypass extern "C" void no_switch_bypass(int n) { - // O2: call void @llvm.lifetime.start.p0(i64 4, + // O2: call void @llvm.lifetime.start.p0( switch (n += 1; int b=n) { case 1: { - // O2: call void @llvm.lifetime.start.p0(i64 1, - // O2: call void @llvm.lifetime.end.p0(i64 1, + // O2: call void @llvm.lifetime.start.p0( + // O2: call void @llvm.lifetime.end.p0( char x; bar(&x, 1); break; } case 2: n = n; - // O2: call void @llvm.lifetime.start.p0(i64 5, - // O2: call void @llvm.lifetime.end.p0(i64 5, + // O2: call void @llvm.lifetime.start.p0( + // O2: call void @llvm.lifetime.end.p0( char y[5]; bar(y, 5); break; } - // O2: call void @llvm.lifetime.end.p0(i64 4, + // O2: call void @llvm.lifetime.end.p0( } // CHECK-LABEL: @switch_bypass extern "C" void switch_bypass(int n) { - // O2: call void @llvm.lifetime.start.p0(i64 4, - // O2: call void @llvm.lifetime.end.p0(i64 4, + // O2: call void @llvm.lifetime.start.p0( + // O2: call void @llvm.lifetime.end.p0( switch (n += 1; int b=n) { case 1: n = n; diff --git a/clang/test/CodeGen/math-libcalls-tbaa.c b/clang/test/CodeGen/math-libcalls-tbaa.c index f4e81ea6dff17..b2f502e5b4729 100644 --- a/clang/test/CodeGen/math-libcalls-tbaa.c +++ b/clang/test/CodeGen/math-libcalls-tbaa.c @@ -82,12 +82,12 @@ double test_remainder (double num[], double a) { // CHECK-SAME: ptr noundef readonly captures(none) [[NUM:%.*]]) local_unnamed_addr #[[ATTR5:[0-9]+]] { // CHECK-NEXT: [[ENTRY:.*:]] // CHECK-NEXT: [[E:%.*]] = alloca i32, align 4 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[E]]) #[[ATTR9]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[E]]) #[[ATTR9]] // CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i8, ptr [[NUM]], i64 16 // CHECK-NEXT: [[TMP0:%.*]] = load double, ptr [[ARRAYIDX]], align 8, !tbaa [[TBAA8]] // CHECK-NEXT: [[CALL:%.*]] = call double @frexp(double noundef [[TMP0]], ptr noundef nonnull [[E]]) #[[ATTR9]] // CHECK-NEXT: [[MUL:%.*]] = fmul double [[TMP0]], [[CALL]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[E]]) #[[ATTR9]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[E]]) #[[ATTR9]] // CHECK-NEXT: ret double [[MUL]] // double test_frexp (double num[]) { @@ -105,8 +105,8 @@ double test_frexp (double num[]) { // CHECK-NEXT: [[ENTRY:.*:]] // CHECK-NEXT: [[SIN:%.*]] = alloca float, align 4 // CHECK-NEXT: [[COS:%.*]] = alloca float, align 4 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[SIN]]) #[[ATTR9]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[COS]]) #[[ATTR9]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[SIN]]) #[[ATTR9]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[COS]]) #[[ATTR9]] // CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds nuw i8, ptr [[NUM]], i64 8 // CHECK-NEXT: [[TMP0:%.*]] = load float, ptr [[ARRAYIDX]], align 4, !tbaa [[TBAA2]] // CHECK-NEXT: call void @sincos(float noundef [[TMP0]], ptr noundef nonnull [[SIN]], ptr noundef nonnull [[COS]]) #[[ATTR9]] @@ -115,8 +115,8 @@ double test_frexp (double num[]) { // CHECK-NEXT: [[MUL:%.*]] = fmul float [[TMP1]], [[TMP2]] // CHECK-NEXT: [[TMP3:%.*]] = load float, ptr [[ARRAYIDX]], align 4, !tbaa [[TBAA2]] // CHECK-NEXT: [[ADD:%.*]] = fadd float [[MUL]], [[TMP3]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[COS]]) #[[ATTR9]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[SIN]]) #[[ATTR9]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[COS]]) #[[ATTR9]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[SIN]]) #[[ATTR9]] // CHECK-NEXT: ret float [[ADD]] // float test_sincos (float num[]) { diff --git a/clang/test/CodeGen/nofpclass.c b/clang/test/CodeGen/nofpclass.c index 8e61ae22ef87f..6cd7ec12a2aea 100644 --- a/clang/test/CodeGen/nofpclass.c +++ b/clang/test/CodeGen/nofpclass.c @@ -927,14 +927,14 @@ _Complex _Float16 defined_complex_func_f16_ret(_Complex _Float16 c) { // CLFINITEONLY-NEXT: [[CF16_REAL:%.*]] = load half, ptr [[CF16]], align 8 // CLFINITEONLY-NEXT: [[CF16_IMAGP:%.*]] = getelementptr inbounds nuw i8, ptr [[CF16]], i64 2 // CLFINITEONLY-NEXT: [[CF16_IMAG:%.*]] = load half, ptr [[CF16_IMAGP]], align 2 -// CLFINITEONLY-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR12:[0-9]+]] +// CLFINITEONLY-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[BYVAL_TEMP]]) #[[ATTR12:[0-9]+]] // CLFINITEONLY-NEXT: [[BYVAL_TEMP_IMAGP:%.*]] = getelementptr inbounds nuw i8, ptr [[BYVAL_TEMP]], i64 8 // CLFINITEONLY-NEXT: store double [[CF64_COERCE0]], ptr [[BYVAL_TEMP]], align 8 // CLFINITEONLY-NEXT: store double [[CF64_COERCE1]], ptr [[BYVAL_TEMP_IMAGP]], align 8 // CLFINITEONLY-NEXT: [[COERCE5_SROA_0_0_VEC_INSERT:%.*]] = insertelement <2 x half> poison, half [[CF16_REAL]], i64 0 // CLFINITEONLY-NEXT: [[COERCE5_SROA_0_2_VEC_INSERT:%.*]] = insertelement <2 x half> [[COERCE5_SROA_0_0_VEC_INSERT]], half [[CF16_IMAG]], i64 1 // CLFINITEONLY-NEXT: [[CALL:%.*]] = tail call nnan ninf nofpclass(nan inf) float (float, ...) @variadic(float noundef nofpclass(nan inf) [[F32]], double noundef nofpclass(nan inf) [[CONV]], double noundef nofpclass(nan inf) [[F64]], half noundef nofpclass(nan inf) [[F16]], double noundef nofpclass(nan inf) [[V2F32_COERCE]], <2 x double> noundef nofpclass(nan inf) [[V2F64]], i32 noundef [[V2F16_COERCE]], <2 x float> noundef nofpclass(nan inf) [[CF32_COERCE]], ptr noundef nonnull byval({ double, double }) align 8 [[BYVAL_TEMP]], <2 x half> noundef nofpclass(nan inf) [[COERCE5_SROA_0_2_VEC_INSERT]]) #[[ATTR11]] -// CLFINITEONLY-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR12]] +// CLFINITEONLY-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[BYVAL_TEMP]]) #[[ATTR12]] // CLFINITEONLY-NEXT: ret float [[CALL]] // // NONANS: Function Attrs: noinline nounwind optnone @@ -1180,14 +1180,14 @@ float call_variadic(float f32, double f64, _Float16 f16, // CLFINITEONLY-NEXT: [[CF16_REAL:%.*]] = load half, ptr [[CF16]], align 8 // CLFINITEONLY-NEXT: [[CF16_IMAGP:%.*]] = getelementptr inbounds nuw i8, ptr [[CF16]], i64 2 // CLFINITEONLY-NEXT: [[CF16_IMAG:%.*]] = load half, ptr [[CF16_IMAGP]], align 2 -// CLFINITEONLY-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR12]] +// CLFINITEONLY-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[BYVAL_TEMP]]) #[[ATTR12]] // CLFINITEONLY-NEXT: [[BYVAL_TEMP_IMAGP:%.*]] = getelementptr inbounds nuw i8, ptr [[BYVAL_TEMP]], i64 8 // CLFINITEONLY-NEXT: store double [[CF64_COERCE0]], ptr [[BYVAL_TEMP]], align 8 // CLFINITEONLY-NEXT: store double [[CF64_COERCE1]], ptr [[BYVAL_TEMP_IMAGP]], align 8 // CLFINITEONLY-NEXT: [[COERCE5_SROA_0_0_VEC_INSERT:%.*]] = insertelement <2 x half> poison, half [[CF16_REAL]], i64 0 // CLFINITEONLY-NEXT: [[COERCE5_SROA_0_2_VEC_INSERT:%.*]] = insertelement <2 x half> [[COERCE5_SROA_0_0_VEC_INSERT]], half [[CF16_IMAG]], i64 1 // CLFINITEONLY-NEXT: [[CALL:%.*]] = tail call nnan ninf nofpclass(nan inf) float (float, ...) [[FPTR]](float noundef nofpclass(nan inf) [[F32]], double noundef nofpclass(nan inf) [[CONV]], double noundef nofpclass(nan inf) [[F64]], half noundef nofpclass(nan inf) [[F16]], double noundef nofpclass(nan inf) [[V2F32_COERCE]], <2 x double> noundef nofpclass(nan inf) [[V2F64]], i32 noundef [[V2F16_COERCE]], <2 x float> noundef nofpclass(nan inf) [[CF32_COERCE]], ptr noundef nonnull byval({ double, double }) align 8 [[BYVAL_TEMP]], <2 x half> noundef nofpclass(nan inf) [[COERCE5_SROA_0_2_VEC_INSERT]]) #[[ATTR11]] -// CLFINITEONLY-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[BYVAL_TEMP]]) #[[ATTR12]] +// CLFINITEONLY-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[BYVAL_TEMP]]) #[[ATTR12]] // CLFINITEONLY-NEXT: ret float [[CALL]] // // NONANS: Function Attrs: noinline nounwind optnone diff --git a/clang/test/CodeGen/temporary-lifetime-exceptions.cpp b/clang/test/CodeGen/temporary-lifetime-exceptions.cpp index 50e4a0f56cb2d..45400c20d847b 100644 --- a/clang/test/CodeGen/temporary-lifetime-exceptions.cpp +++ b/clang/test/CodeGen/temporary-lifetime-exceptions.cpp @@ -8,15 +8,15 @@ A Baz(const A&); void Test1() { // CHECK-LABEL: @_Z5Test1v( - // CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr nonnull [[TMP:[^ ]+]]) - // CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr nonnull [[TMP1:[^ ]+]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP:[^ ]+]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP1:[^ ]+]]) // Normal exit - // CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[TMP1]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[TMP]]) + // CHECK: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP1]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP]]) // Exception exit - // CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[TMP1]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[TMP]]) + // CHECK: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP1]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP]]) Baz(Baz(A())); } diff --git a/clang/test/CodeGen/temporary-lifetime.cpp b/clang/test/CodeGen/temporary-lifetime.cpp index 9f085d41d1464..04087292b2c70 100644 --- a/clang/test/CodeGen/temporary-lifetime.cpp +++ b/clang/test/CodeGen/temporary-lifetime.cpp @@ -21,27 +21,27 @@ T Baz(); void Test1() { // CHECK-DTOR-LABEL: Test1 - // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR:.+]]) + // CHECK-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR:.+]]) // CHECK-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR:[^ ]+]]) // CHECK-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-DTOR: call void @_ZN1AD1Ev(ptr nonnull {{[^,]*}} %[[VAR]]) - // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR]]) - // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR:.+]]) + // CHECK-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR]]) + // CHECK-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR:.+]]) // CHECK-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR:[^ ]+]]) // CHECK-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-DTOR: call void @_ZN1AD1Ev(ptr nonnull {{[^,]*}} %[[VAR]]) - // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR]]) + // CHECK-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR]]) // CHECK-DTOR: } // CHECK-NO-DTOR-LABEL: Test1 - // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR:.+]]) + // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR:.+]]) // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR:[^ ]+]]) // CHECK-NO-DTOR: call void @_Z3FooIRK1AEvOT_ - // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR]]) - // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR:.+]]) + // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR]]) + // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR:.+]]) // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR:[^ ]+]]) // CHECK-NO-DTOR: call void @_Z3FooIRK1AEvOT_ - // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR]]) + // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR]]) // CHECK-NO-DTOR: } { const A &a = A{}; @@ -55,27 +55,27 @@ void Test1() { void Test2() { // CHECK-DTOR-LABEL: Test2 - // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR1:.+]]) + // CHECK-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR1:.+]]) // CHECK-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR1:[^ ]+]]) // CHECK-DTOR: call void @_Z3FooIRK1AEvOT_ - // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR2:.+]]) + // CHECK-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR2:.+]]) // CHECK-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR2:[^ ]+]]) // CHECK-DTOR: call void @_Z3FooIRK1AEvOT_ // CHECK-DTOR: call void @_ZN1AD1Ev(ptr nonnull {{[^,]*}} %[[VAR2]]) - // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR2]]) + // CHECK-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR2]]) // CHECK-DTOR: call void @_ZN1AD1Ev(ptr nonnull {{[^,]*}} %[[VAR1]]) - // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR1]]) + // CHECK-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR1]]) // CHECK-DTOR: } // CHECK-NO-DTOR-LABEL: Test2 - // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR1:.+]]) + // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR1:.+]]) // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR1:[^ ]+]]) // CHECK-NO-DTOR: call void @_Z3FooIRK1AEvOT_ - // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR2:.+]]) + // CHECK-NO-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR2:.+]]) // CHECK-NO-DTOR: call void @_ZN1AC1Ev(ptr nonnull {{[^,]*}} %[[VAR2:[^ ]+]]) // CHECK-NO-DTOR: call void @_Z3FooIRK1AEvOT_ - // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR2]]) - // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR1]]) + // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR2]]) + // CHECK-NO-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR1]]) // CHECK-NO-DTOR: } const A &a = A{}; Foo(a); @@ -135,16 +135,16 @@ int Test5() { void Test6() { // CHECK-DTOR-LABEL: Test6 - // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 {{[0-9]+}}, ptr nonnull %[[ADDR:.+]]) + // CHECK-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR:.+]]) // CHECK-DTOR: call i32 @_Z3BazIiET_v() // CHECK-DTOR: store // CHECK-DTOR: call void @_Z3FooIiEvOT_ - // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 {{[0-9]+}}, ptr nonnull %[[ADDR]]) - // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 {{[0-9]+}}, ptr nonnull %[[ADDR:.+]]) + // CHECK-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR]]) + // CHECK-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR:.+]]) // CHECK-DTOR: call i32 @_Z3BazIiET_v() // CHECK-DTOR: store // CHECK-DTOR: call void @_Z3FooIiEvOT_ - // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 {{[0-9]+}}, ptr nonnull %[[ADDR]]) + // CHECK-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR]]) // CHECK-DTOR: } Foo(Baz()); Foo(Baz()); @@ -152,16 +152,16 @@ void Test6() { void Test7() { // CHECK-DTOR-LABEL: Test7 - // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR:.+]]) + // CHECK-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR:.+]]) // CHECK-DTOR: call void @_Z3BazI1AET_v({{.*}} %[[SLOT:[^ ]+]]) // CHECK-DTOR: call void @_Z3FooI1AEvOT_({{.*}} %[[SLOT]]) // CHECK-DTOR: call void @_ZN1AD1Ev(ptr nonnull {{[^,]*}} %[[SLOT]]) - // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR]]) - // CHECK-DTOR: call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %[[ADDR:.+]]) + // CHECK-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR]]) + // CHECK-DTOR: call void @llvm.lifetime.start.p0(ptr nonnull %[[ADDR:.+]]) // CHECK-DTOR: call void @_Z3BazI1AET_v({{.*}} %[[SLOT:[^ ]+]]) // CHECK-DTOR: call void @_Z3FooI1AEvOT_({{.*}} %[[SLOT]]) // CHECK-DTOR: call void @_ZN1AD1Ev(ptr nonnull {{[^,]*}} %[[SLOT]]) - // CHECK-DTOR: call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %[[ADDR]]) + // CHECK-DTOR: call void @llvm.lifetime.end.p0(ptr nonnull %[[ADDR]]) // CHECK-DTOR: } Foo(Baz()); Foo(Baz()); diff --git a/clang/test/CodeGen/union-tbaa1.c b/clang/test/CodeGen/union-tbaa1.c index 1e2f384c29a5b..3322aaa7adf14 100644 --- a/clang/test/CodeGen/union-tbaa1.c +++ b/clang/test/CodeGen/union-tbaa1.c @@ -11,7 +11,7 @@ void bar(vect32 p[][2]); // CHECK-SAME: (i32 noundef [[NUM:%.*]], ptr noundef writeonly captures(none) initializes((0, 8)) [[VEC:%.*]], ptr noundef readonly captures(none) [[INDEX:%.*]], ptr noundef readonly captures(none) [[ARR:%.*]]) local_unnamed_addr #[[ATTR0:[0-9]+]] { // CHECK-NEXT: entry: // CHECK-NEXT: [[TMP:%.*]] = alloca [4 x [2 x %union.vect32]], align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[TMP]]) #[[ATTR3:[0-9]+]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP]]) #[[ATTR3:[0-9]+]] // CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[INDEX]], align 4, !tbaa [[TBAA2:![0-9]+]] // CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [2 x i32], ptr [[ARR]], i32 [[TMP0]] // CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[ARRAYIDX]], align 4, !tbaa [[TBAA2]] @@ -33,7 +33,7 @@ void bar(vect32 p[][2]); // CHECK-NEXT: [[ARRAYIDX17:%.*]] = getelementptr inbounds nuw i8, ptr [[VEC]], i32 4 // CHECK-NEXT: store i32 [[CONV16]], ptr [[ARRAYIDX17]], align 4, !tbaa [[TBAA2]] // CHECK-NEXT: call void @bar(ptr noundef nonnull [[TMP]]) #[[ATTR3]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[TMP]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP]]) #[[ATTR3]] // CHECK-NEXT: ret void // void fred(unsigned Num, int Vec[2], int *Index, int Arr[4][2]) { diff --git a/clang/test/CodeGenCXX/amdgcn_declspec_get.cpp b/clang/test/CodeGenCXX/amdgcn_declspec_get.cpp index 0ce88014eafd2..c784e6053edd0 100644 --- a/clang/test/CodeGenCXX/amdgcn_declspec_get.cpp +++ b/clang/test/CodeGenCXX/amdgcn_declspec_get.cpp @@ -15,10 +15,10 @@ extern const A a; // CHECK-LABEL: define{{.*}} void @_Z4testv() // CHECK: %i = alloca i32, align 4, addrspace(5) // CHECK: %[[ii:.*]] = addrspacecast ptr addrspace(5) %i to ptr -// CHECK: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) %i) +// CHECK: call void @llvm.lifetime.start.p5(ptr addrspace(5) %i) // CHECK: %call = call noundef i32 @_ZN1A6_get_xEv() // CHECK: store i32 %call, ptr %[[ii]] -// CHECK: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) %i) +// CHECK: call void @llvm.lifetime.end.p5(ptr addrspace(5) %i) void test() { int i = a.x; diff --git a/clang/test/CodeGenCXX/attr-likelihood-iteration-stmt.cpp b/clang/test/CodeGenCXX/attr-likelihood-iteration-stmt.cpp index fd9786de3a949..151b77ac1007b 100644 --- a/clang/test/CodeGenCXX/attr-likelihood-iteration-stmt.cpp +++ b/clang/test/CodeGenCXX/attr-likelihood-iteration-stmt.cpp @@ -68,7 +68,7 @@ void w_branch_elided(unsigned e){ // CHECK-NEXT: [[E_ADDR:%.*]] = alloca i32, align 4 // CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 // CHECK-NEXT: store i32 [[E:%.*]], ptr [[E_ADDR]], align 4, !tbaa [[TBAA2]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR3:[0-9]+]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR3:[0-9]+]] // CHECK-NEXT: store i32 0, ptr [[I]], align 4, !tbaa [[TBAA2]] // CHECK-NEXT: br label [[FOR_COND:%.*]] // CHECK: for.cond: @@ -78,7 +78,7 @@ void w_branch_elided(unsigned e){ // CHECK-NEXT: [[CMP_EXPVAL:%.*]] = call i1 @llvm.expect.i1(i1 [[CMP]], i1 true) // CHECK-NEXT: br i1 [[CMP_EXPVAL]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]] // CHECK: for.cond.cleanup: -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR3]] // CHECK-NEXT: br label [[FOR_END:%.*]] // CHECK: for.body: // CHECK-NEXT: br label [[FOR_INC:%.*]] @@ -100,7 +100,7 @@ void fl(unsigned e) // CHECK-NEXT: [[E_ADDR:%.*]] = alloca i32, align 4 // CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 // CHECK-NEXT: store i32 [[E:%.*]], ptr [[E_ADDR]], align 4, !tbaa [[TBAA2]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR3]] // CHECK-NEXT: store i32 0, ptr [[I]], align 4, !tbaa [[TBAA2]] // CHECK-NEXT: br label [[FOR_COND:%.*]] // CHECK: for.cond: @@ -110,7 +110,7 @@ void fl(unsigned e) // CHECK-NEXT: [[CMP_EXPVAL:%.*]] = call i1 @llvm.expect.i1(i1 [[CMP]], i1 false) // CHECK-NEXT: br i1 [[CMP_EXPVAL]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]] // CHECK: for.cond.cleanup: -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR3]] // CHECK-NEXT: br label [[FOR_END:%.*]] // CHECK: for.body: // CHECK-NEXT: br label [[FOR_INC:%.*]] @@ -146,14 +146,14 @@ void f_branch_elided() // CHECK-NEXT: [[__END1:%.*]] = alloca ptr, align 8 // CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 // CHECK-NEXT: store ptr [[E:%.*]], ptr [[E_ADDR]], align 8, !tbaa [[TBAA14:![0-9]+]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[__RANGE1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[__RANGE1]]) #[[ATTR3]] // CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[E_ADDR]], align 8, !tbaa [[TBAA14]] // CHECK-NEXT: store ptr [[TMP0]], ptr [[__RANGE1]], align 8, !tbaa [[TBAA14]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[__BEGIN1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[__BEGIN1]]) #[[ATTR3]] // CHECK-NEXT: [[TMP1:%.*]] = load ptr, ptr [[__RANGE1]], align 8, !tbaa [[TBAA14]] // CHECK-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [4 x i32], ptr [[TMP1]], i64 0, i64 0 // CHECK-NEXT: store ptr [[ARRAYDECAY]], ptr [[__BEGIN1]], align 8, !tbaa [[TBAA14]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[__END1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[__END1]]) #[[ATTR3]] // CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[__RANGE1]], align 8, !tbaa [[TBAA14]] // CHECK-NEXT: [[ARRAYDECAY1:%.*]] = getelementptr inbounds [4 x i32], ptr [[TMP2]], i64 0, i64 0 // CHECK-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr [[ARRAYDECAY1]], i64 4 @@ -166,16 +166,16 @@ void f_branch_elided() // CHECK-NEXT: [[CMP_EXPVAL:%.*]] = call i1 @llvm.expect.i1(i1 [[CMP]], i1 true) // CHECK-NEXT: br i1 [[CMP_EXPVAL]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]] // CHECK: for.cond.cleanup: -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[__END1]]) #[[ATTR3]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[__BEGIN1]]) #[[ATTR3]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[__RANGE1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[__END1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[__BEGIN1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[__RANGE1]]) #[[ATTR3]] // CHECK-NEXT: br label [[FOR_END:%.*]] // CHECK: for.body: -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR3]] // CHECK-NEXT: [[TMP5:%.*]] = load ptr, ptr [[__BEGIN1]], align 8, !tbaa [[TBAA14]] // CHECK-NEXT: [[TMP6:%.*]] = load i32, ptr [[TMP5]], align 4, !tbaa [[TBAA2]] // CHECK-NEXT: store i32 [[TMP6]], ptr [[I]], align 4, !tbaa [[TBAA2]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR3]] // CHECK-NEXT: br label [[FOR_INC:%.*]] // CHECK: for.inc: // CHECK-NEXT: [[TMP7:%.*]] = load ptr, ptr [[__BEGIN1]], align 8, !tbaa [[TBAA14]] @@ -198,14 +198,14 @@ void frl(int (&&e) [4]) // CHECK-NEXT: [[__END1:%.*]] = alloca ptr, align 8 // CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 // CHECK-NEXT: store ptr [[E:%.*]], ptr [[E_ADDR]], align 8, !tbaa [[TBAA14]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[__RANGE1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[__RANGE1]]) #[[ATTR3]] // CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[E_ADDR]], align 8, !tbaa [[TBAA14]] // CHECK-NEXT: store ptr [[TMP0]], ptr [[__RANGE1]], align 8, !tbaa [[TBAA14]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[__BEGIN1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[__BEGIN1]]) #[[ATTR3]] // CHECK-NEXT: [[TMP1:%.*]] = load ptr, ptr [[__RANGE1]], align 8, !tbaa [[TBAA14]] // CHECK-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [4 x i32], ptr [[TMP1]], i64 0, i64 0 // CHECK-NEXT: store ptr [[ARRAYDECAY]], ptr [[__BEGIN1]], align 8, !tbaa [[TBAA14]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[__END1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[__END1]]) #[[ATTR3]] // CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[__RANGE1]], align 8, !tbaa [[TBAA14]] // CHECK-NEXT: [[ARRAYDECAY1:%.*]] = getelementptr inbounds [4 x i32], ptr [[TMP2]], i64 0, i64 0 // CHECK-NEXT: [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr [[ARRAYDECAY1]], i64 4 @@ -218,16 +218,16 @@ void frl(int (&&e) [4]) // CHECK-NEXT: [[CMP_EXPVAL:%.*]] = call i1 @llvm.expect.i1(i1 [[CMP]], i1 false) // CHECK-NEXT: br i1 [[CMP_EXPVAL]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]] // CHECK: for.cond.cleanup: -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[__END1]]) #[[ATTR3]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[__BEGIN1]]) #[[ATTR3]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[__RANGE1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[__END1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[__BEGIN1]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[__RANGE1]]) #[[ATTR3]] // CHECK-NEXT: br label [[FOR_END:%.*]] // CHECK: for.body: -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR3]] // CHECK-NEXT: [[TMP5:%.*]] = load ptr, ptr [[__BEGIN1]], align 8, !tbaa [[TBAA14]] // CHECK-NEXT: [[TMP6:%.*]] = load i32, ptr [[TMP5]], align 4, !tbaa [[TBAA2]] // CHECK-NEXT: store i32 [[TMP6]], ptr [[I]], align 4, !tbaa [[TBAA2]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR3]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR3]] // CHECK-NEXT: br label [[FOR_INC:%.*]] // CHECK: for.inc: // CHECK-NEXT: [[TMP7:%.*]] = load ptr, ptr [[__BEGIN1]], align 8, !tbaa [[TBAA14]] diff --git a/clang/test/CodeGenCXX/destructors.cpp b/clang/test/CodeGenCXX/destructors.cpp index 99c82ec76989a..1bf8b163b4a09 100644 --- a/clang/test/CodeGenCXX/destructors.cpp +++ b/clang/test/CodeGenCXX/destructors.cpp @@ -308,7 +308,7 @@ namespace test5 { // CHECK5: [[ELEMS:%.*]] = alloca [5 x [[A:%.*]]], align // CHECK5v03-NEXT: [[EXN:%.*]] = alloca ptr // CHECK5v03-NEXT: [[SEL:%.*]] = alloca i32 - // CHECK5-NEXT: call void @llvm.lifetime.start.p0(i64 5, ptr [[ELEMS]]) + // CHECK5-NEXT: call void @llvm.lifetime.start.p0(ptr [[ELEMS]]) // CHECK5-NEXT: [[BEGIN:%.*]] = getelementptr inbounds [5 x [[A]]], ptr [[ELEMS]], i32 0, i32 0 // CHECK5-NEXT: [[END:%.*]] = getelementptr inbounds [[A]], ptr [[BEGIN]], i64 5 // CHECK5-NEXT: br label @@ -482,24 +482,24 @@ namespace test11 { // CHECK6: {{^}}invoke.cont // CHECK6: call void @_ZN6test112S1D1Ev(ptr {{[^,]*}} [[T1]]) -// CHECK6: call void @llvm.lifetime.end.p0(i64 32, ptr [[T1]]) +// CHECK6: call void @llvm.lifetime.end.p0(ptr [[T1]]) // CHECK6: {{^}}lpad // CHECK6: call void @_ZN6test112S1D1Ev(ptr {{[^,]*}} [[T1]]) -// CHECK6: call void @llvm.lifetime.end.p0(i64 32, ptr [[T1]]) +// CHECK6: call void @llvm.lifetime.end.p0(ptr [[T1]]) // CHECK6: {{^}}invoke.cont // CHECK6: call void @_ZN6test112S1D1Ev(ptr {{[^,]*}} [[T2]]) -// CHECK6: call void @llvm.lifetime.end.p0(i64 32, ptr [[T2]]) +// CHECK6: call void @llvm.lifetime.end.p0(ptr [[T2]]) // CHECK6: {{^}}lpad // CHECK6: call void @_ZN6test112S1D1Ev(ptr {{[^,]*}} [[T2]]) -// CHECK6: call void @llvm.lifetime.end.p0(i64 32, ptr [[T2]]) +// CHECK6: call void @llvm.lifetime.end.p0(ptr [[T2]]) // CHECK6: {{^}}invoke.cont // CHECK6: call void @_ZN6test112S1D1Ev(ptr {{[^,]*}} [[T3]]) -// CHECK6: call void @llvm.lifetime.end.p0(i64 32, ptr [[T3]]) +// CHECK6: call void @llvm.lifetime.end.p0(ptr [[T3]]) // CHECK6: {{^}}lpad // CHECK6: call void @_ZN6test112S1D1Ev(ptr {{[^,]*}} [[T3]]) -// CHECK6: call void @llvm.lifetime.end.p0(i64 32, ptr [[T3]]) +// CHECK6: call void @llvm.lifetime.end.p0(ptr [[T3]]) struct S1 { ~S1(); diff --git a/clang/test/CodeGenCXX/microsoft-abi-eh-cleanups.cpp b/clang/test/CodeGenCXX/microsoft-abi-eh-cleanups.cpp index 5e2403b242fcb..a60781c164785 100644 --- a/clang/test/CodeGenCXX/microsoft-abi-eh-cleanups.cpp +++ b/clang/test/CodeGenCXX/microsoft-abi-eh-cleanups.cpp @@ -277,13 +277,13 @@ void f() { // WIN32-LIFETIME-LABEL: define dso_local void @"?f@lifetime_marker@@YAXXZ"() // WIN32-LIFETIME: %[[c:.*]] = alloca %"struct.lifetime_marker::C" -// WIN32-LIFETIME: call void @llvm.lifetime.start.p0(i64 1, ptr %c) +// WIN32-LIFETIME: call void @llvm.lifetime.start.p0(ptr %c) // WIN32-LIFETIME: invoke void @"?g@lifetime_marker@@YAXXZ"() // WIN32-LIFETIME-NEXT: to label %[[cont:[^ ]*]] unwind label %[[lpad0:[^ ]*]] // // WIN32-LIFETIME: [[cont]] // WIN32-LIFETIME: call x86_thiscallcc void @"??1C@lifetime_marker@@QAE@XZ"({{.*}}) -// WIN32-LIFETIME: call void @llvm.lifetime.end.p0(i64 1, ptr %[[c]]) +// WIN32-LIFETIME: call void @llvm.lifetime.end.p0(ptr %[[c]]) // // WIN32-LIFETIME: [[lpad0]] // WIN32-LIFETIME-NEXT: cleanuppad @@ -292,7 +292,7 @@ void f() { // // WIN32-LIFETIME: [[lpad1]] // WIN32-LIFETIME-NEXT: cleanuppad -// WIN32-LIFETIME: call void @llvm.lifetime.end.p0(i64 1, ptr %[[c]]) +// WIN32-LIFETIME: call void @llvm.lifetime.end.p0(ptr %[[c]]) } struct class_2 { diff --git a/clang/test/CodeGenCXX/stack-reuse-exceptions.cpp b/clang/test/CodeGenCXX/stack-reuse-exceptions.cpp index e036bcaf729a6..27123a689c303 100644 --- a/clang/test/CodeGenCXX/stack-reuse-exceptions.cpp +++ b/clang/test/CodeGenCXX/stack-reuse-exceptions.cpp @@ -20,32 +20,32 @@ struct NontrivialDtor { // CHECK-LABEL: define{{.*}} void @_Z33cleanupsAreEmittedWithoutTryCatchv void cleanupsAreEmittedWithoutTryCatch() { -// CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr nonnull %[[CLEAN:.*]]) -// CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr nonnull %[[T1:.*]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %[[CLEAN:.*]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %[[T1:.*]]) // CHECK-NEXT: invoke void @_Z8getLargev // CHECK-NEXT: to label %[[CONT:[^ ]+]] unwind label %[[LPAD:[^ ]+]] // // CHECK: [[CONT]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T1]]) -// CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr nonnull %[[T2:.*]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T1]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %[[T2:.*]]) // CHECK-NEXT: invoke void @_Z8getLargev // CHECK-NEXT: to label %[[CONT2:[^ ]+]] unwind label %[[LPAD2:.+]] // // CHECK: [[CONT2]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T2]]) -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[CLEAN]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T2]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[CLEAN]]) // CHECK: ret void // // CHECK: [[LPAD]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T1]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T1]]) // CHECK: br label %[[EHCLEANUP:.+]] // // CHECK: [[LPAD2]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T2]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T2]]) // CHECK: br label %[[EHCLEANUP]] // // CHECK: [[EHCLEANUP]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[CLEAN]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[CLEAN]]) NontrivialDtor clean; @@ -55,27 +55,27 @@ void cleanupsAreEmittedWithoutTryCatch() { // CHECK-LABEL: define{{.*}} void @_Z30cleanupsAreEmittedWithTryCatchv void cleanupsAreEmittedWithTryCatch() { -// CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr nonnull %[[CLEAN:.*]]) -// CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr nonnull %[[T1:.*]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %[[CLEAN:.*]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %[[T1:.*]]) // CHECK-NEXT: invoke void @_Z8getLargev // CHECK-NEXT: to label %[[CONT:[^ ]+]] unwind label %[[LPAD:[^ ]+]] // // CHECK: [[CONT]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T1]]) -// CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr nonnull %[[T2:.*]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T1]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %[[T2:.*]]) // CHECK-NEXT: invoke void @_Z8getLargev // CHECK-NEXT: to label %[[CONT2:[^ ]+]] unwind label %[[LPAD2:.+]] // // CHECK: [[CONT2]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T2]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T2]]) // CHECK: br label %[[TRY_CONT:.+]] // // CHECK: [[LPAD]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T1]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T1]]) // CHECK: br label %[[CATCH:.+]] // // CHECK: [[LPAD2]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T2]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T2]]) // CHECK: br label %[[CATCH]] // // CHECK: [[CATCH]]: @@ -84,13 +84,13 @@ void cleanupsAreEmittedWithTryCatch() { // CHECK-NEXT: to label %[[TRY_CONT]] unwind label %[[OUTER_LPAD:.+]] // // CHECK: [[TRY_CONT]]: -// CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr nonnull %[[T_OUTER:.*]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %[[T_OUTER:.*]]) // CHECK-NEXT: invoke void @_Z8getLargev // CHECK-NEXT: to label %[[OUTER_CONT:[^ ]+]] unwind label %[[OUTER_LPAD2:.+]] // // CHECK: [[OUTER_CONT]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T_OUTER]]) -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[CLEAN]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T_OUTER]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[CLEAN]]) // CHECK: ret void // // CHECK: [[OUTER_LPAD]]: @@ -98,11 +98,11 @@ void cleanupsAreEmittedWithTryCatch() { // CHECK: br label %[[EHCLEANUP:.+]] // // CHECK: [[OUTER_LPAD2]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T_OUTER]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T_OUTER]]) // CHECK: br label %[[EHCLEANUP]] // // CHECK: [[EHCLEANUP]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[CLEAN]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[CLEAN]]) NontrivialDtor clean; @@ -116,44 +116,44 @@ void cleanupsAreEmittedWithTryCatch() { // CHECK-LABEL: define{{.*}} void @_Z39cleanupInTryHappensBeforeCleanupInCatchv void cleanupInTryHappensBeforeCleanupInCatch() { -// CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr nonnull %[[T1:.*]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %[[T1:.*]]) // CHECK-NEXT: invoke void @_Z8getLargev // CHECK-NEXT: to label %[[CONT:[^ ]+]] unwind label %[[LPAD:[^ ]+]] // // CHECK: [[CONT]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T1]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T1]]) // CHECK: br label %[[TRY_CONT]] // // CHECK: [[LPAD]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T1]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T1]]) // CHECK: br i1 {{[^,]+}}, label %[[CATCH_INT_MATCH:[^,]+]], label %[[CATCH_ALL:.+]] // // CHECK: [[CATCH_INT_MATCH]]: -// CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr nonnull %[[T2:.*]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %[[T2:.*]]) // CHECK-NEXT: invoke void @_Z8getLargev // CHECK-NEXT: to label %[[CATCH_INT_CONT:[^ ]+]] unwind label %[[CATCH_INT_LPAD:[^ ]+]] // // CHECK: [[CATCH_INT_CONT]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T2]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T2]]) // CHECK: br label %[[TRY_CONT]] // // CHECK: [[TRY_CONT]]: // CHECK: ret void // // CHECK: [[CATCH_ALL]]: -// CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr nonnull %[[T3:.*]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %[[T3:.*]]) // CHECK-NEXT: invoke void @_Z8getLargev // CHECK-NEXT: to label %[[CATCH_ALL_CONT:[^ ]+]] unwind label %[[CATCH_ALL_LPAD:[^ ]+]] // // CHECK: [[CATCH_ALL_CONT]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T3]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T3]]) // CHECK: br label %[[TRY_CONT]] // // CHECK: [[CATCH_ALL_LPAD]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T3]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T3]]) // // CHECK: [[CATCH_INT_LPAD]]: -// CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr nonnull %[[T2]]) +// CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %[[T2]]) // CHECK-NOT: call void @llvm.lifetime try { diff --git a/clang/test/CodeGenCXX/stack-reuse-miscompile.cpp b/clang/test/CodeGenCXX/stack-reuse-miscompile.cpp index 50a8d167f5b77..67fa9f9c9cd98 100644 --- a/clang/test/CodeGenCXX/stack-reuse-miscompile.cpp +++ b/clang/test/CodeGenCXX/stack-reuse-miscompile.cpp @@ -28,12 +28,12 @@ const char * f(S s) // // FIXME: We could defer starting the lifetime of the return object of concat // until the call. -// CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr [[T1]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr [[T1]]) // -// CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr [[T2]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr [[T2]]) // CHECK: [[T4:%.*]] = call noundef ptr @_ZN1TC1EPKc(ptr {{[^,]*}} [[T2]], ptr noundef @.str) // -// CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr [[T3]]) +// CHECK: call void @llvm.lifetime.start.p0(ptr [[T3]]) // CHECK: [[T5:%.*]] = call noundef ptr @_ZN1TC1E1S(ptr {{[^,]*}} [[T3]], [2 x i32] %{{.*}}) // // CHECK: call void @_ZNK1T6concatERKS_(ptr dead_on_unwind writable sret(%class.T) align 4 [[T1]], ptr {{[^,]*}} [[T2]], ptr noundef nonnull align 4 dereferenceable(16) [[T3]]) diff --git a/clang/test/CodeGenObjC/arc-blocks.m b/clang/test/CodeGenObjC/arc-blocks.m index 72bf35c2e117e..605dda7664bf4 100644 --- a/clang/test/CodeGenObjC/arc-blocks.m +++ b/clang/test/CodeGenObjC/arc-blocks.m @@ -73,7 +73,7 @@ void test3(void (^sink)(id*)) { // CHECK-NEXT: [[TEMP:%.*]] = alloca ptr // CHECK-NEXT: call ptr @llvm.objc.retain( // CHECK-NEXT: store ptr {{%.*}}, ptr [[SINK]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[STRONG]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[STRONG]]) // CHECK-NEXT: store ptr null, ptr [[STRONG]] // CHECK-NEXT: [[BLOCK:%.*]] = load ptr, ptr [[SINK]] @@ -91,7 +91,7 @@ void test3(void (^sink)(id*)) { // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[STRONG]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[STRONG]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[STRONG]]) // CHECK-NEXT: load ptr, ptr [[SINK]] // CHECK-NEXT: call void @llvm.objc.release @@ -161,7 +161,7 @@ void test5(void) { // CHECK-LABEL: define{{.*}} void @test5() // CHECK: [[VAR:%.*]] = alloca ptr // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]], - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VAR]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VAR]]) // CHECK: [[T1:%.*]] = call ptr @test5_source() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T1]]) // CHECK-NEXT: store ptr [[T1]], ptr [[VAR]], @@ -172,7 +172,7 @@ void test5(void) { // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[VAR]] // CHECK-NEXT: store ptr [[T0]], ptr [[CAPTURE]] // CHECK: call void @test5_helper - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VAR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VAR]]) // CHECK-NEXT: ret void } @@ -185,7 +185,7 @@ void test6(void) { // CHECK-LABEL: define{{.*}} void @test6() // CHECK: [[VAR:%.*]] = alloca [[BYREF_T:%.*]], // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]], - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 48, ptr [[VAR]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VAR]]) // CHECK: [[T0:%.*]] = getelementptr inbounds nuw [[BYREF_T]], ptr [[VAR]], i32 0, i32 2 // 0x02000000 - has copy/dispose helpers weak // CHECK-NEXT: store i32 1107296256, ptr [[T0]] @@ -203,7 +203,7 @@ void test6(void) { // CHECK: call void @test6_helper( // CHECK: call void @_Block_object_dispose(ptr [[VAR]], i32 8) // CHECK-NEXT: call void @llvm.objc.destroyWeak(ptr [[SLOT]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 48, ptr [[VAR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VAR]]) // CHECK-NEXT: ret void // CHECK-LABEL: define internal void @__Block_byref_object_copy_.{{[0-9]+}}(ptr noundef %0, ptr noundef %1) #{{[0-9]+}} { @@ -449,7 +449,7 @@ void test13(id x) { // CHECK-NEXT: [[CLEANUP_ACTIVE:%.*]] = alloca i1 // CHECK-NEXT: [[T0:%.*]] = call ptr @llvm.objc.retain(ptr {{%.*}}) // CHECK-NEXT: store ptr [[T0]], ptr [[X]], align 8 - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[B]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[X]], align 8 // CHECK-NEXT: [[T1:%.*]] = icmp ne ptr [[T0]], null // CHECK-NEXT: store i1 false, ptr [[CLEANUP_ACTIVE]] @@ -479,7 +479,7 @@ void test13(id x) { // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) // CHECK-NEXT: br label - // CHECK: call void @llvm.lifetime.end.p0(i64 8, ptr [[B]]) + // CHECK: call void @llvm.lifetime.end.p0(ptr [[B]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) // CHECK-NEXT: ret void @@ -501,7 +501,7 @@ void test16(void) { // CHECK-LABEL: define{{.*}} void @test16( // CHECK: [[BLKVAR:%.*]] = alloca ptr, align 8 // CHECK-NEXT: [[BLOCK:%.*]] = alloca [[BLOCK_T:<{.*}>]], - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[BLKVAR]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[BLKVAR]]) // CHECK-NEXT: store ptr null, ptr [[BLKVAR]], align 8 } diff --git a/clang/test/CodeGenObjC/arc-precise-lifetime.m b/clang/test/CodeGenObjC/arc-precise-lifetime.m index 473c0b031f9f9..ac761ba60e864 100644 --- a/clang/test/CodeGenObjC/arc-precise-lifetime.m +++ b/clang/test/CodeGenObjC/arc-precise-lifetime.m @@ -7,7 +7,7 @@ void test0(void) { PRECISE_LIFETIME id x = test0_helper(); x = 0; // CHECK: [[X:%.*]] = alloca ptr - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: [[CALL:%.*]] = call ptr @test0_helper() // CHECK-NEXT: store ptr [[CALL]], ptr [[X]] @@ -20,7 +20,7 @@ void test0(void) { // CHECK-NEXT: call void @llvm.objc.release(ptr [[T1]]) [[NUW:#[0-9]+]] // CHECK-NOT: clang.imprecise_release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } @@ -37,20 +37,20 @@ - (char*) interior __attribute__((objc_returns_inner_pointer)); void test1a_message(void) { // CHECK: [[PTR:%.*]] = alloca ptr, align 8 // CHECK: [[C:%.*]] = alloca ptr, align 8 - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[PTR]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[PTR]]) // CHECK: [[T0:%.*]] = call ptr @test1_helper() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T0]]) // CHECK-NEXT: store ptr [[T0]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[C]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[C]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: [[T2:%.*]] = call ptr @llvm.objc.retainAutorelease(ptr [[T0]]) // CHECK-NEXT: [[T4:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_ // CHECK-NEXT: [[T6:%.*]] = call ptr // CHECK-NEXT: store ptr [[T6]], ptr - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[C]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[C]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) [[NUW]], !clang.imprecise_release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PTR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTR]]) // CHECK-NEXT: ret void Test1 *ptr = test1_helper(); char *c = [(ptr) interior]; @@ -61,20 +61,20 @@ void test1a_message(void) { void test1a_property(void) { // CHECK: [[PTR:%.*]] = alloca ptr, align 8 // CHECK: [[C:%.*]] = alloca ptr, align 8 - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[PTR]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[PTR]]) // CHECK: [[T0:%.*]] = call ptr @test1_helper() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T0]]) // CHECK-NEXT: store ptr [[T0]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[C]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[C]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: [[T2:%.*]] = call ptr @llvm.objc.retainAutorelease(ptr [[T0]]) // CHECK-NEXT: [[T4:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_ // CHECK-NEXT: [[T6:%.*]] = call ptr // CHECK-NEXT: store ptr [[T6]], ptr - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[C]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[C]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) [[NUW]], !clang.imprecise_release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PTR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTR]]) // CHECK-NEXT: ret void Test1 *ptr = test1_helper(); char *c = ptr.interior; @@ -85,20 +85,20 @@ void test1a_property(void) { void test1b_message(void) { // CHECK: [[PTR:%.*]] = alloca ptr, align 8 // CHECK: [[C:%.*]] = alloca ptr, align 8 - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[PTR]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[PTR]]) // CHECK: [[T0:%.*]] = call ptr @test1_helper() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T0]]) // CHECK-NEXT: store ptr [[T0]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[C]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[C]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: [[T1:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_ // CHECK-NEXT: [[T3:%.*]] = call ptr // CHECK-NEXT: store ptr [[T3]], ptr - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[C]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[C]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) [[NUW]] // CHECK-NOT: clang.imprecise_release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PTR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTR]]) // CHECK-NEXT: ret void PRECISE_LIFETIME Test1 *ptr = test1_helper(); char *c = [ptr interior]; @@ -108,20 +108,20 @@ void test1b_message(void) { void test1b_property(void) { // CHECK: [[PTR:%.*]] = alloca ptr, align 8 // CHECK: [[C:%.*]] = alloca ptr, align 8 - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[PTR]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[PTR]]) // CHECK: [[T0:%.*]] = call ptr @test1_helper() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T0]]) // CHECK-NEXT: store ptr [[T0]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[C]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[C]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: [[T1:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_ // CHECK-NEXT: [[T3:%.*]] = call ptr // CHECK-NEXT: store ptr [[T3]], ptr - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[C]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[C]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) [[NUW]] // CHECK-NOT: clang.imprecise_release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PTR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTR]]) // CHECK-NEXT: ret void PRECISE_LIFETIME Test1 *ptr = test1_helper(); char *c = ptr.interior; @@ -131,20 +131,20 @@ void test1b_property(void) { void test1c_message(void) { // CHECK: [[PTR:%.*]] = alloca ptr, align 8 // CHECK: [[PC:%.*]] = alloca ptr, align 8 - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[PTR]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[PTR]]) // CHECK: [[T0:%.*]] = call ptr @test1_helper() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T0]]) // CHECK-NEXT: store ptr [[T0]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[PC]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PC]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: [[T2:%.*]] = call ptr @llvm.objc.retainAutorelease(ptr [[T0]]) // CHECK-NEXT: [[T4:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_ // CHECK-NEXT: [[T6:%.*]] = call ptr // CHECK-NEXT: store ptr [[T6]], ptr - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PC]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PC]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) [[NUW]], !clang.imprecise_release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PTR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTR]]) // CHECK-NEXT: ret void Test1 *ptr = test1_helper(); char *pc = [ptr PropertyReturnsInnerPointer]; @@ -154,20 +154,20 @@ void test1c_message(void) { void test1c_property(void) { // CHECK: [[PTR:%.*]] = alloca ptr, align 8 // CHECK: [[PC:%.*]] = alloca ptr, align 8 - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[PTR]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[PTR]]) // CHECK: [[T0:%.*]] = call ptr @test1_helper() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T0]]) // CHECK-NEXT: store ptr [[T0]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[PC]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PC]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: [[T2:%.*]] = call ptr @llvm.objc.retainAutorelease(ptr [[T0]]) // CHECK-NEXT: [[T4:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_ // CHECK-NEXT: [[T6:%.*]] = call ptr // CHECK-NEXT: store ptr [[T6]], ptr - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PC]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PC]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) [[NUW]], !clang.imprecise_release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PTR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTR]]) // CHECK-NEXT: ret void Test1 *ptr = test1_helper(); char *pc = ptr.PropertyReturnsInnerPointer; @@ -177,19 +177,19 @@ void test1c_property(void) { void test1d_message(void) { // CHECK: [[PTR:%.*]] = alloca ptr, align 8 // CHECK: [[PC:%.*]] = alloca ptr, align 8 - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[PTR]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[PTR]]) // CHECK: [[T0:%.*]] = call ptr @test1_helper() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T0]]) // CHECK-NEXT: store ptr [[T0]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[PC]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PC]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: [[SEL:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_ // CHECK-NEXT: [[CALL1:%.*]] = call ptr @objc_msgSend(ptr noundef [[T0]], ptr noundef [[SEL]]) // CHECK-NEXT: store ptr [[CALL1]], ptr - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PC]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PC]]) // CHECK-NEXT: [[NINE:%.*]] = load ptr, ptr // CHECK-NEXT: call void @llvm.objc.release(ptr [[NINE]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PTR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTR]]) // CHECK-NEXT: ret void PRECISE_LIFETIME Test1 *ptr = test1_helper(); char *pc = [ptr PropertyReturnsInnerPointer]; @@ -199,19 +199,19 @@ void test1d_message(void) { void test1d_property(void) { // CHECK: [[PTR:%.*]] = alloca ptr, align 8 // CHECK: [[PC:%.*]] = alloca ptr, align 8 - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[PTR]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[PTR]]) // CHECK: [[T0:%.*]] = call ptr @test1_helper() [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T0]]) // CHECK-NEXT: store ptr [[T0]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[PC]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PC]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr // CHECK-NEXT: [[SEL:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_ // CHECK-NEXT: [[CALL1:%.*]] = call ptr @objc_msgSend(ptr noundef [[T0]], ptr noundef [[SEL]]) // CHECK-NEXT: store ptr [[CALL1]], ptr - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PC]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PC]]) // CHECK-NEXT: [[NINE:%.*]] = load ptr, ptr // CHECK-NEXT: call void @llvm.objc.release(ptr [[NINE]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PTR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTR]]) // CHECK-NEXT: ret void PRECISE_LIFETIME Test1 *ptr = test1_helper(); char *pc = ptr.PropertyReturnsInnerPointer; diff --git a/clang/test/CodeGenObjC/arc-ternary-op.m b/clang/test/CodeGenObjC/arc-ternary-op.m index 4a3c00c9807a9..46529b411f113 100644 --- a/clang/test/CodeGenObjC/arc-ternary-op.m +++ b/clang/test/CodeGenObjC/arc-ternary-op.m @@ -12,7 +12,7 @@ void test0(_Bool cond) { // CHECK-NEXT: [[RELCOND:%.*]] = alloca i1 // CHECK-NEXT: zext // CHECK-NEXT: store - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: [[T0:%.*]] = load i8, ptr [[COND]] // CHECK-NEXT: [[T1:%.*]] = trunc i8 [[T0]] to i1 // CHECK-NEXT: store i1 false, ptr [[RELCOND]] @@ -32,7 +32,7 @@ void test0(_Bool cond) { // CHECK-NEXT: br label // CHECK: [[T0:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) [[NUW]] - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void id x = (cond ? 0 : test0_helper()); } @@ -53,9 +53,9 @@ void test1(int cond) { // CHECK-NEXT: [[CONDCLEANUPSAVE:%.*]] = alloca ptr // CHECK-NEXT: [[CONDCLEANUP:%.*]] = alloca i1 // CHECK-NEXT: store i32 - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[STRONG]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[STRONG]]) // CHECK-NEXT: store ptr null, ptr [[STRONG]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[WEAK]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[WEAK]]) // CHECK-NEXT: call ptr @llvm.objc.initWeak(ptr [[WEAK]], ptr null) // CHECK-NEXT: [[T0:%.*]] = load i32, ptr [[COND]] @@ -99,8 +99,8 @@ void test1(int cond) { // CHECK-NEXT: br label // CHECK: call void @llvm.objc.destroyWeak(ptr [[WEAK]]) - // CHECK: call void @llvm.lifetime.end.p0(i64 8, ptr [[WEAK]]) - // CHECK: call void @llvm.lifetime.end.p0(i64 8, ptr [[STRONG]]) + // CHECK: call void @llvm.lifetime.end.p0(ptr [[WEAK]]) + // CHECK: call void @llvm.lifetime.end.p0(ptr [[STRONG]]) // CHECK: ret void } diff --git a/clang/test/CodeGenObjC/arc.m b/clang/test/CodeGenObjC/arc.m index 57afe9c245e77..2d860c1116789 100644 --- a/clang/test/CodeGenObjC/arc.m +++ b/clang/test/CodeGenObjC/arc.m @@ -48,13 +48,13 @@ id test1(id x) { // CHECK-NEXT: [[Y:%.*]] = alloca ptr // CHECK-NEXT: [[PARM:%.*]] = call ptr @llvm.objc.retain(ptr {{%.*}}) // CHECK-NEXT: store ptr [[PARM]], ptr [[X]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[Y]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[Y]]) // CHECK-NEXT: store ptr null, ptr [[Y]] // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[Y]] // CHECK-NEXT: [[RET:%.*]] = call ptr @llvm.objc.retain(ptr [[T0]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[Y]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[Y]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[Y]]) // CHECK-NEXT: [[T1:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T1]]) // CHECK-NEXT: [[T1:%.*]] = tail call ptr @llvm.objc.autoreleaseReturnValue(ptr [[RET]]) @@ -99,7 +99,7 @@ void test3_unelided(void) { extern void test3_helper(void); // CHECK: [[X:%.*]] = alloca ptr - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: store ptr null, ptr [[X]], align Test3 *x; @@ -118,14 +118,14 @@ void test3_unelided(void) { // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) [[NUW]] - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } // CHECK-LABEL: define{{.*}} void @test3() void test3(void) { // CHECK: [[X:%.*]] = alloca ptr - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) id x = [[Test3 alloc] initWith: 5]; @@ -155,7 +155,7 @@ void test3(void) { // Cleanup for x. // CHECK-NEXT: [[TMP:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[TMP]]) [[NUW]] - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } @@ -225,12 +225,12 @@ void test5(Test5 *x, id y) { // CHECK-LABEL: define{{.*}} void @test6() void test6(void) { // CHECK: [[X:%.*]] = alloca ptr - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: [[CALL:%.*]] = call ptr @test6_helper() // CHECK-NEXT: store ptr [[CALL]], ptr [[X]] // CHECK-NEXT: [[T1:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T1]]) [[NUW]], !clang.imprecise_release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void id x = test6_helper(); } @@ -239,14 +239,14 @@ void test6(void) { // CHECK-LABEL: define{{.*}} void @test7() void test7(void) { // CHECK: [[X:%.*]] = alloca ptr - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: store ptr null, ptr [[X]] // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: [[T1:%.*]] = call ptr @llvm.objc.retain(ptr [[T0]]) [[NUW]] // CHECK-NEXT: call void @test7_helper(ptr noundef [[T1]]) // CHECK-NEXT: [[T1:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T1]]) [[NUW]], !clang.imprecise_release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void id x; test7_helper(x); @@ -256,11 +256,11 @@ void test7(void) { void test8(void) { __unsafe_unretained id x = test8_helper(); // CHECK: [[X:%.*]] = alloca ptr - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: [[T0:%.*]] = call ptr @test8_helper() // CHECK-NEXT: store ptr [[T0]], ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) [[NUW]], !clang.imprecise_release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } @@ -274,9 +274,9 @@ void test10(void) { // CHECK-LABEL: define{{.*}} void @test10() // CHECK: [[X:%.*]] = alloca ptr, align // CHECK-NEXT: [[Y:%.*]] = alloca ptr, align - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: store ptr null, ptr [[X]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[Y]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[Y]]) // CHECK-NEXT: load ptr, ptr [[X]], align // CHECK-NEXT: load ptr, ptr @OBJC_SELECTOR_REFERENCES_{{[0-9]*}} // CHECK-NEXT: [[V:%.*]] = call ptr @objc_msgSend{{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] @@ -288,10 +288,10 @@ void test10(void) { // CHECK-NEXT: call void @llvm.objc.release(ptr [[V]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[Y]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) - // CHECK-NEXT: void @llvm.lifetime.end.p0(i64 8, ptr [[Y]]) + // CHECK-NEXT: void @llvm.lifetime.end.p0(ptr [[Y]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) - // CHECK-NEXT: void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } @@ -300,13 +300,13 @@ void test11(id (*f)(void) __attribute__((ns_returns_retained))) { // CHECK: [[F:%.*]] = alloca ptr, align // CHECK-NEXT: [[X:%.*]] = alloca ptr, align // CHECK-NEXT: store ptr {{%.*}}, ptr [[F]], align - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[F]], align // CHECK-NEXT: [[T1:%.*]] = call ptr [[T0]]() // CHECK-NEXT: store ptr [[T1]], ptr [[X]], align // CHECK-NEXT: [[T3:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T3]]) [[NUW]], !clang.imprecise_release - // CHECK-NEXT: void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void id x = f(); } @@ -319,7 +319,7 @@ void test12(void) { // CHECK-NEXT: [[Y:%.*]] = alloca ptr, align __weak id x = test12_helper(); - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: [[T1:%.*]] = call ptr @test12_helper(){{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T1]]) // CHECK-NEXT: call ptr @llvm.objc.initWeak(ptr [[X]], ptr [[T1]]) @@ -332,15 +332,15 @@ void test12(void) { // CHECK-NEXT: call void @llvm.objc.release(ptr [[T1]]) id y = x; - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[Y]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[Y]]) // CHECK-NEXT: [[T2:%.*]] = call ptr @llvm.objc.loadWeakRetained(ptr [[X]]) // CHECK-NEXT: store ptr [[T2]], ptr [[Y]], align // CHECK-NEXT: [[T4:%.*]] = load ptr, ptr [[Y]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T4]]) [[NUW]], !clang.imprecise_release - // CHECK-NEXT: void @llvm.lifetime.end.p0(i64 8, ptr [[Y]]) + // CHECK-NEXT: void @llvm.lifetime.end.p0(ptr [[Y]]) // CHECK-NEXT: call void @llvm.objc.destroyWeak(ptr [[X]]) - // CHECK-NEXT: void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK: ret void } @@ -348,7 +348,7 @@ void test12(void) { void test13(void) { // CHECK-LABEL: define{{.*}} void @test13() // CHECK: [[X:%.*]] = alloca ptr, align - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: store ptr null, ptr [[X]], align id x; @@ -371,7 +371,7 @@ void test13(void) { // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) [[NUW]] - // CHECK-NEXT: void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } @@ -886,7 +886,7 @@ void test37(void) { // CHECK-LABEL: define{{.*}} void @test37() // CHECK: [[VAR:%.*]] = alloca ptr, // CHECK-NEXT: [[TEMP:%.*]] = alloca ptr - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VAR]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VAR]]) // CHECK-NEXT: store ptr null, ptr [[VAR]] // CHECK-NEXT: [[W0:%.*]] = load ptr, ptr [[VAR]] @@ -901,7 +901,7 @@ void test37(void) { // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[VAR]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VAR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VAR]]) // CHECK-NEXT: ret void } @@ -956,7 +956,7 @@ void test47(void) { // CHECK-LABEL: define{{.*}} void @test47() // CHECK: [[X:%.*]] = alloca ptr - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: store ptr null, ptr [[X]] // CHECK-NEXT: [[T0:%.*]] = call ptr @test47_helper(){{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T0]]) @@ -969,7 +969,7 @@ void test47(void) { // CHECK-NEXT: call void @llvm.objc.release(ptr [[T3]]) // CHECK-NEXT: [[T4:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T4]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } @@ -978,7 +978,7 @@ void test48(void) { __weak id x = x = test48_helper(); // CHECK-LABEL: define{{.*}} void @test48() // CHECK: [[X:%.*]] = alloca ptr - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: [[T0:%.*]] = call ptr @llvm.objc.initWeak(ptr [[X]], ptr null) // CHECK-NEXT: [[T2:%.*]] = call ptr @test48_helper(){{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T2]]) @@ -986,7 +986,7 @@ void test48(void) { // CHECK-NEXT: [[T4:%.*]] = call ptr @llvm.objc.storeWeak(ptr [[X]], ptr [[T3]]) // CHECK-NEXT: call void @llvm.objc.release(ptr [[T2]]) // CHECK-NEXT: call void @llvm.objc.destroyWeak(ptr [[X]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } @@ -995,7 +995,7 @@ void test49(void) { __autoreleasing id x = x = test49_helper(); // CHECK-LABEL: define{{.*}} void @test49() // CHECK: [[X:%.*]] = alloca ptr - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: store ptr null, ptr [[X]] // CHECK-NEXT: [[T0:%.*]] = call ptr @test49_helper(){{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T0]]) @@ -1003,7 +1003,7 @@ void test49(void) { // CHECK-NEXT: store ptr [[T1]], ptr [[X]] // CHECK-NEXT: [[T3:%.*]] = call ptr @llvm.objc.retainAutorelease(ptr [[T1]]) // CHECK-NEXT: store ptr [[T3]], ptr [[X]] - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } @@ -1035,12 +1035,12 @@ id test52(void) { // CHECK-LABEL: define{{.*}} ptr @test52() // CHECK: [[X:%.*]] = alloca i32 // CHECK-NEXT: [[TMPALLOCA:%.*]] = alloca ptr -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[X]]) +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: store i32 5, ptr [[X]], // CHECK-NEXT: [[T0:%.*]] = load i32, ptr [[X]], // CHECK-NEXT: [[T1:%.*]] = call ptr @test52_helper(i32 noundef [[T0]]) // CHECK-NEXT: store ptr [[T1]], ptr [[TMPALLOCA]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[X]]) +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: [[T2:%.*]] = load ptr, ptr [[TMPALLOCA]] // CHECK-NEXT: [[T3:%.*]] = tail call ptr @llvm.objc.autoreleaseReturnValue(ptr [[T2]]) // CHECK-NEXT: ret ptr [[T3]] @@ -1054,8 +1054,8 @@ void test53(void) { // CHECK: [[X:%.*]] = alloca ptr, // CHECK-NEXT: [[Y:%.*]] = alloca ptr, // CHECK-NEXT: [[TMPALLOCA:%.*]] = alloca ptr, -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[Y]]) +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[Y]]) // CHECK-NEXT: [[T1:%.*]] = call ptr @test53_helper(){{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T1]]) // CHECK-NEXT: store ptr [[T1]], ptr [[Y]], @@ -1064,13 +1064,13 @@ void test53(void) { // CHECK-NEXT: store ptr [[T1]], ptr [[TMPALLOCA]] // CHECK-NEXT: [[T2:%.*]] = load ptr, ptr [[Y]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T2]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[Y]]) +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[Y]]) // CHECK-NEXT: [[T3:%.*]] = load ptr, ptr [[TMPALLOCA]] // CHECK-NEXT: store ptr [[T3]], ptr [[X]], // CHECK-NEXT: load ptr, ptr [[X]], // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } @@ -1115,12 +1115,12 @@ void test56_test(void) { id x = [Test56 make]; // CHECK-LABEL: define{{.*}} void @test56_test() // CHECK: [[X:%.*]] = alloca ptr, align 8 - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK: [[T0:%.*]] = call ptr @objc_msgSend( // CHECK-NEXT: store ptr [[T0]], ptr [[X]] // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } @@ -1188,7 +1188,7 @@ void test61(void) { // CHECK-NEXT: call void @llvm.objc.release(ptr [[T1]]) [test61_make() performSelector: @selector(test61_void)]; - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[Y]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[Y]]) // CHECK-NEXT: [[T1:%.*]] = call ptr @test61_make(){{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T1]]) // CHECK-NEXT: [[T2:%.*]] = load ptr, ptr @OBJC_SELECTOR_REFERENCES_ @@ -1201,7 +1201,7 @@ void test61(void) { // CHECK-NEXT: [[T0:%.*]] = load ptr, ptr [[Y]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T0]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[Y]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[Y]]) // CHECK-NEXT: ret void } @@ -1213,7 +1213,7 @@ void test62(void) { extern id test62_make(void); extern void test62_body(void); - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) // CHECK-NEXT: store i32 0, ptr [[I]], align 4 // CHECK-NEXT: br label @@ -1300,10 +1300,10 @@ void test67(void) { } // CHECK-LABEL: define{{.*}} void @test67() // CHECK: [[CL:%.*]] = alloca ptr, align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[CL]]) +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[CL]]) // CHECK-NEXT: [[T0:%.*]] = call ptr @test67_helper() // CHECK-NEXT: store ptr [[T0]], ptr [[CL]], align 8 -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[CL]]) +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[CL]]) // CHECK-NEXT: ret void Class test68_helper(void); @@ -1312,13 +1312,13 @@ void test68(void) { } // CHECK-LABEL: define{{.*}} void @test68() // CHECK: [[CL:%.*]] = alloca ptr, align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[CL]]) +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[CL]]) // CHECK-NEXT: [[T1:%.*]] = call ptr @test67_helper(){{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK-NEXT: call void (...) @llvm.objc.clang.arc.noop.use(ptr [[T1]]) // CHECK-NEXT: store ptr [[T1]], ptr [[CL]], align 8 // CHECK-NEXT: [[T2:%.*]] = load ptr, ptr [[CL]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[T2]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[CL]]) +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[CL]]) // CHECK-NEXT: ret void @interface Test69 @end @@ -1351,14 +1351,14 @@ void test70(id i) { // CHECK-LABEL: define{{.*}} void @test71 void test71(void) { - // CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr %[[T:.*]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr %[[T:.*]]) // CHECK: call void @getAggDtor(ptr dead_on_unwind writable sret(%struct.AggDtor) align 8 %[[T]]) // CHECK: call void @__destructor_8_s40(ptr %[[T]]) - // CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr %[[T]]) - // CHECK: call void @llvm.lifetime.start.p0({{[^,]+}}, ptr %[[T2:.*]]) + // CHECK: call void @llvm.lifetime.end.p0(ptr %[[T]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr %[[T2:.*]]) // CHECK: call void @getAggDtor(ptr dead_on_unwind writable sret(%struct.AggDtor) align 8 %[[T2]]) // CHECK: call void @__destructor_8_s40(ptr %[[T2]]) - // CHECK: call void @llvm.lifetime.end.p0({{[^,]+}}, ptr %[[T2]]) + // CHECK: call void @llvm.lifetime.end.p0(ptr %[[T2]]) getAggDtor(); getAggDtor(); } diff --git a/clang/test/CodeGenObjC/exceptions.m b/clang/test/CodeGenObjC/exceptions.m index 832d3a458050c..66dc0515af03e 100644 --- a/clang/test/CodeGenObjC/exceptions.m +++ b/clang/test/CodeGenObjC/exceptions.m @@ -79,7 +79,7 @@ void f3(void) { extern void f3_helper(int, int*); // CHECK: [[X:%.*]] = alloca i32 - // CHECK: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) // CHECK: store i32 0, ptr [[X]] int x = 0; @@ -120,7 +120,7 @@ void f3(void) { } // CHECK: call void @f3_helper(i32 noundef 4, ptr noundef nonnull [[X]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) // CHECK-NEXT: ret void f3_helper(4, &x); } diff --git a/clang/test/CodeGenObjCXX/arc-move.mm b/clang/test/CodeGenObjCXX/arc-move.mm index 9d25a6ac31939..bda03c169f97e 100644 --- a/clang/test/CodeGenObjCXX/arc-move.mm +++ b/clang/test/CodeGenObjCXX/arc-move.mm @@ -48,7 +48,7 @@ void library_move(__strong id &x, __strong id &y) { void library_move(__strong id &y) { // CHECK: [[X:%x]] = alloca ptr, align 8 // CHECK: [[I:%.*]] = alloca i32, align 4 - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK: [[Y:%[a-zA-Z0-9]+]] = call noundef nonnull align {{[0-9]+}} dereferenceable({{[0-9]+}}) ptr @_Z4moveIRU8__strongP11objc_objectEON16remove_referenceIT_E4typeEOS5_ // Load the object // CHECK-NEXT: [[OBJ:%[a-zA-Z0-9]+]] = load ptr, ptr [[Y]] @@ -58,13 +58,13 @@ void library_move(__strong id &y) { // CHECK-NEXT: store ptr [[OBJ]], ptr [[X:%[a-zA-Z0-9]+]] id x = move(y); - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) // CHECK-NEXT: store i32 17 int i = 17; - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) // CHECK-NEXT: [[OBJ:%[a-zA-Z0-9]+]] = load ptr, ptr [[X]] // CHECK-NEXT: call void @llvm.objc.release(ptr [[OBJ]]) - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[X]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) // CHECK-NEXT: ret void } diff --git a/clang/test/CodeGenObjCXX/arc-references.mm b/clang/test/CodeGenObjCXX/arc-references.mm index 273e339bec509..5fad327c0789e 100644 --- a/clang/test/CodeGenObjCXX/arc-references.mm +++ b/clang/test/CodeGenObjCXX/arc-references.mm @@ -45,7 +45,7 @@ void test3() { // CHECK-NEXT: call void @_Z6calleev() callee(); // CHECK-NEXT: call void @llvm.objc.destroyWeak - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[REF]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF]]) // CHECK-NEXT: ret void } @@ -71,10 +71,10 @@ void test5(__strong id &x) { sink(x); // CHECK-NEXT: [[OBJ_A:%[a-zA-Z0-9]+]] = load ptr, ptr [[REFTMP]] // CHECK-NEXT: call void @llvm.objc.release - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) // CHECK-NEXT: store i32 17, ptr int i = 17; - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) // CHECK-NEXT: ret void } diff --git a/clang/test/CodeGenObjCXX/arc.mm b/clang/test/CodeGenObjCXX/arc.mm index 7883378b33828..20f1e375d272e 100644 --- a/clang/test/CodeGenObjCXX/arc.mm +++ b/clang/test/CodeGenObjCXX/arc.mm @@ -61,9 +61,9 @@ void test34(int cond) { // CHECK-NEXT: [[CONDCLEANUPSAVE:%.*]] = alloca ptr // CHECK-NEXT: [[CONDCLEANUP:%.*]] = alloca i1 // CHECK-NEXT: store i32 - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[STRONG]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[STRONG]]) // CHECK-NEXT: store ptr null, ptr [[STRONG]] - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[WEAK]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[WEAK]]) // CHECK-NEXT: call ptr @llvm.objc.initWeak(ptr [[WEAK]], ptr null) // CHECK-NEXT: [[T0:%.*]] = load i32, ptr [[COND]] @@ -293,7 +293,7 @@ + (void) foo:(id *)errorPtr; // CHECK-LABEL: define weak_odr void @_Z13test40_helperIiEvv() // CHECK: [[X:%.*]] = alloca ptr // CHECK-NEXT: [[TEMP:%.*]] = alloca ptr -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[X]]) +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) // CHECK-NEXT: store ptr null, ptr [[X]] // CHECK: [[T0:%.*]] = load ptr, ptr [[X]] // CHECK-NEXT: store ptr [[T0]], ptr [[TEMP]] diff --git a/clang/test/CodeGenObjCXX/literals.mm b/clang/test/CodeGenObjCXX/literals.mm index 737aa9e6c5130..b7938ccc5867a 100644 --- a/clang/test/CodeGenObjCXX/literals.mm +++ b/clang/test/CodeGenObjCXX/literals.mm @@ -22,16 +22,16 @@ void test_array() { // CHECK: [[TMPY:%[a-zA-Z0-9.]+]] = alloca % // Initializing first element - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[ARR]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[ARR]]) // CHECK: [[ELEMENT0:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x ptr], ptr [[OBJECTS]], i64 0, i64 0 - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMPX]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMPX]]) // CHECK-NEXT: call void @_ZN1XC1Ev({{.*}} [[TMPX]]) // CHECK-NEXT: [[OBJECT0:%[a-zA-Z0-9.]+]] = invoke noundef ptr @_ZNK1XcvP11objc_objectEv{{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK: store ptr [[OBJECT0]], ptr [[ELEMENT0]] // Initializing the second element // CHECK: [[ELEMENT1:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x ptr], ptr [[OBJECTS]], i64 0, i64 1 - // CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMPY]]) + // CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMPY]]) // CHECK-NEXT: invoke void @_ZN1YC1Ev({{.*}} [[TMPY]]) // CHECK: [[OBJECT1:%[a-zA-Z0-9.]+]] = invoke noundef ptr @_ZNK1YcvP11objc_objectEv{{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] // CHECK: store ptr [[OBJECT1]], ptr [[ELEMENT1]] @@ -50,7 +50,7 @@ void test_array() { // CHECK-NEXT: call void @_ZN1XD1Ev // CHECK-NOT: ret void // CHECK: call void @llvm.objc.release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[ARR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ARR]]) // CHECK-NEXT: ret void // Check cleanups @@ -71,7 +71,7 @@ void test_array_instantiation() { // CHECK: [[OBJECTS:%[a-zA-Z0-9.]+]] = alloca [2 x ptr] // Initializing first element - // CHECK: call void @llvm.lifetime.start.p0(i64 8, ptr [[ARR]]) + // CHECK: call void @llvm.lifetime.start.p0(ptr [[ARR]]) // CHECK: [[ELEMENT0:%[a-zA-Z0-9.]+]] = getelementptr inbounds [2 x ptr], ptr [[OBJECTS]], i64 0, i64 0 // CHECK: call void @_ZN1XC1Ev // CHECK-NEXT: [[OBJECT0:%[a-zA-Z0-9.]+]] = invoke noundef ptr @_ZNK1XcvP11objc_objectEv{{.*}} [ "clang.arc.attachedcall"(ptr @llvm.objc.retainAutoreleasedReturnValue) ] @@ -97,7 +97,7 @@ void test_array_instantiation() { // CHECK-NEXT: call void @_ZN1XD1Ev // CHECK-NOT: ret void // CHECK: call void @llvm.objc.release - // CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[ARR]]) + // CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ARR]]) // CHECK-NEXT: ret void // Check cleanups diff --git a/clang/test/CodeGenOpenCL/amdgpu-enqueue-kernel.cl b/clang/test/CodeGenOpenCL/amdgpu-enqueue-kernel.cl index bfbed79dc7f16..d71c89811f04b 100644 --- a/clang/test/CodeGenOpenCL/amdgpu-enqueue-kernel.cl +++ b/clang/test/CodeGenOpenCL/amdgpu-enqueue-kernel.cl @@ -523,10 +523,10 @@ kernel void test_target_features_kernel(global int *i) { // GFX900-NEXT: store i8 [[B]], ptr [[B_ADDR_ASCAST]], align 1, !tbaa [[TBAA16]] // GFX900-NEXT: store ptr addrspace(1) [[C]], ptr [[C_ADDR_ASCAST]], align 8, !tbaa [[TBAA7]] // GFX900-NEXT: store i64 [[D]], ptr [[D_ADDR_ASCAST]], align 8, !tbaa [[TBAA3]] -// GFX900-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[DEFAULT_QUEUE]]) #[[ATTR9:[0-9]+]] -// GFX900-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[FLAGS]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[DEFAULT_QUEUE]]) #[[ATTR9:[0-9]+]] +// GFX900-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[FLAGS]]) #[[ATTR9]] // GFX900-NEXT: store i32 0, ptr addrspace(5) [[FLAGS]], align 4, !tbaa [[TBAA17:![0-9]+]] -// GFX900-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[NDRANGE]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[NDRANGE]]) #[[ATTR9]] // GFX900-NEXT: [[TMP0:%.*]] = load ptr addrspace(1), ptr addrspace(5) [[DEFAULT_QUEUE]], align 8, !tbaa [[TBAA19:![0-9]+]] // GFX900-NEXT: [[TMP1:%.*]] = load i32, ptr addrspace(5) [[FLAGS]], align 4, !tbaa [[TBAA17]] // GFX900-NEXT: call void @llvm.memcpy.p0.p5.i64(ptr align 4 [[TMP_ASCAST]], ptr addrspace(5) align 4 [[NDRANGE]], i64 4, i1 false), !tbaa.struct [[TBAA_STRUCT21:![0-9]+]] @@ -586,12 +586,12 @@ kernel void test_target_features_kernel(global int *i) { // GFX900-NEXT: [[BLOCK_CAPTURED19:%.*]] = getelementptr inbounds nuw <{ i32, i32, ptr, ptr addrspace(1), ptr addrspace(1), i64, i8 }>, ptr [[BLOCK12_ASCAST]], i32 0, i32 5 // GFX900-NEXT: [[TMP17:%.*]] = load i64, ptr [[D_ADDR_ASCAST]], align 8, !tbaa [[TBAA3]] // GFX900-NEXT: store i64 [[TMP17]], ptr [[BLOCK_CAPTURED19]], align 8, !tbaa [[TBAA3]] -// GFX900-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[BLOCK_SIZES]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[BLOCK_SIZES]]) #[[ATTR9]] // GFX900-NEXT: [[TMP18:%.*]] = getelementptr [1 x i64], ptr addrspace(5) [[BLOCK_SIZES]], i32 0, i32 0 // GFX900-NEXT: store i64 100, ptr addrspace(5) [[TMP18]], align 8 // GFX900-NEXT: [[TMP19:%.*]] = call i32 @__enqueue_kernel_varargs(ptr addrspace(1) [[TMP12]], i32 [[TMP13]], ptr addrspace(5) [[VARTMP11]], ptr addrspacecast (ptr addrspace(1) @__test_block_invoke_3_kernel.runtime.handle to ptr), ptr [[BLOCK12_ASCAST]], i32 1, ptr addrspace(5) [[TMP18]]) -// GFX900-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[BLOCK_SIZES]]) #[[ATTR9]] -// GFX900-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[BLOCK20]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[BLOCK_SIZES]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[BLOCK20]]) #[[ATTR9]] // GFX900-NEXT: [[BLOCK_SIZE22:%.*]] = getelementptr inbounds nuw <{ i32, i32, ptr, i64, ptr addrspace(1) }>, ptr [[BLOCK21_ASCAST]], i32 0, i32 0 // GFX900-NEXT: store i32 32, ptr [[BLOCK_SIZE22]], align 8 // GFX900-NEXT: [[BLOCK_ALIGN23:%.*]] = getelementptr inbounds nuw <{ i32, i32, ptr, i64, ptr addrspace(1) }>, ptr [[BLOCK21_ASCAST]], i32 0, i32 1 @@ -610,10 +610,10 @@ kernel void test_target_features_kernel(global int *i) { // GFX900-NEXT: call void @llvm.memcpy.p0.p5.i64(ptr align 4 [[TMP27_ASCAST]], ptr addrspace(5) align 4 [[NDRANGE]], i64 4, i1 false), !tbaa.struct [[TBAA_STRUCT21]] // GFX900-NEXT: [[TMP24:%.*]] = load ptr, ptr addrspace(5) [[BLOCK20]], align 8, !tbaa [[TBAA16]] // GFX900-NEXT: [[TMP25:%.*]] = call i32 @__enqueue_kernel_basic(ptr addrspace(1) [[TMP22]], i32 [[TMP23]], ptr addrspace(5) [[VARTMP27]], ptr addrspacecast (ptr addrspace(1) @__test_block_invoke_4_kernel.runtime.handle to ptr), ptr [[BLOCK21_ASCAST]]) -// GFX900-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[BLOCK20]]) #[[ATTR9]] -// GFX900-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[NDRANGE]]) #[[ATTR9]] -// GFX900-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[FLAGS]]) #[[ATTR9]] -// GFX900-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[DEFAULT_QUEUE]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[BLOCK20]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[NDRANGE]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[FLAGS]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[DEFAULT_QUEUE]]) #[[ATTR9]] // GFX900-NEXT: ret void // // @@ -641,18 +641,18 @@ kernel void test_target_features_kernel(global int *i) { // GFX900-NEXT: [[I_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[I_ADDR]] to ptr // GFX900-NEXT: [[TMP_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[TMP]] to ptr // GFX900-NEXT: store ptr addrspace(1) [[I]], ptr [[I_ADDR_ASCAST]], align 8, !tbaa [[TBAA26]] -// GFX900-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[DEFAULT_QUEUE]]) #[[ATTR9]] -// GFX900-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[FLAGS]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[DEFAULT_QUEUE]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[FLAGS]]) #[[ATTR9]] // GFX900-NEXT: store i32 0, ptr addrspace(5) [[FLAGS]], align 4, !tbaa [[TBAA17]] -// GFX900-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[NDRANGE]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[NDRANGE]]) #[[ATTR9]] // GFX900-NEXT: [[TMP0:%.*]] = call i64 @llvm.amdgcn.s.memtime() // GFX900-NEXT: [[TMP1:%.*]] = load ptr addrspace(1), ptr addrspace(5) [[DEFAULT_QUEUE]], align 8, !tbaa [[TBAA19]] // GFX900-NEXT: [[TMP2:%.*]] = load i32, ptr addrspace(5) [[FLAGS]], align 4, !tbaa [[TBAA17]] // GFX900-NEXT: call void @llvm.memcpy.p0.p5.i64(ptr align 4 [[TMP_ASCAST]], ptr addrspace(5) align 4 [[NDRANGE]], i64 4, i1 false), !tbaa.struct [[TBAA_STRUCT21]] // GFX900-NEXT: [[TMP3:%.*]] = call i32 @__enqueue_kernel_basic(ptr addrspace(1) [[TMP1]], i32 [[TMP2]], ptr addrspace(5) [[TMP]], ptr addrspacecast (ptr addrspace(1) @__test_target_features_kernel_block_invoke_kernel.runtime.handle to ptr), ptr addrspacecast (ptr addrspace(1) @__block_literal_global to ptr)) -// GFX900-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[NDRANGE]]) #[[ATTR9]] -// GFX900-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[FLAGS]]) #[[ATTR9]] -// GFX900-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[DEFAULT_QUEUE]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[NDRANGE]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[FLAGS]]) #[[ATTR9]] +// GFX900-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[DEFAULT_QUEUE]]) #[[ATTR9]] // GFX900-NEXT: ret void // // diff --git a/clang/test/CodeGenOpenCL/amdgpu-printf.cl b/clang/test/CodeGenOpenCL/amdgpu-printf.cl index 33fee66d6e9fc..b9e25172a56af 100644 --- a/clang/test/CodeGenOpenCL/amdgpu-printf.cl +++ b/clang/test/CodeGenOpenCL/amdgpu-printf.cl @@ -65,12 +65,12 @@ __kernel void test_printf_str_int(int i) { // CHECK-NEXT: [[I_ADDR:%.*]] = alloca i32, align 4, addrspace(5) // CHECK-NEXT: [[S:%.*]] = alloca [4 x i8], align 1, addrspace(5) // CHECK-NEXT: store i32 [[I]], ptr addrspace(5) [[I_ADDR]], align 4, !tbaa [[TBAA9]] -// CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[S]]) #[[ATTR7:[0-9]+]] +// CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[S]]) #[[ATTR7:[0-9]+]] // CHECK-NEXT: call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) align 1 [[S]], ptr addrspace(4) align 1 @__const.test_printf_str_int.s, i64 4, i1 false) // CHECK-NEXT: [[ARRAYDECAY:%.*]] = getelementptr inbounds [4 x i8], ptr addrspace(5) [[S]], i64 0, i64 0 // CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(5) [[I_ADDR]], align 4, !tbaa [[TBAA9]] // CHECK-NEXT: [[CALL:%.*]] = call i32 (ptr addrspace(4), ...) @printf(ptr addrspace(4) noundef @.str.2, ptr addrspace(5) noundef [[ARRAYDECAY]], i32 noundef [[TMP0]]) #[[ATTR6]] -// CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[S]]) #[[ATTR7]] +// CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[S]]) #[[ATTR7]] // CHECK-NEXT: ret void // //. diff --git a/clang/test/CodeGenOpenCL/cl20-device-side-enqueue.cl b/clang/test/CodeGenOpenCL/cl20-device-side-enqueue.cl index 6c85e734c0eb4..b0dbf601eec39 100644 --- a/clang/test/CodeGenOpenCL/cl20-device-side-enqueue.cl +++ b/clang/test/CodeGenOpenCL/cl20-device-side-enqueue.cl @@ -128,9 +128,9 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { // SPIR: [[DEF_Q:%[0-9]+]] = load target("spirv.Queue"), ptr %default_queue // X86: [[DEF_Q:%[0-9]+]] = load ptr, ptr %default_queue // COMMON: [[FLAGS:%[0-9]+]] = load i32, ptr %flags - // CHECK-LIFETIMES: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %[[BLOCK_SIZES1]]) + // CHECK-LIFETIMES: call void @llvm.lifetime.start.p0(ptr nonnull %[[BLOCK_SIZES1]]) // CHECK-LIFETIMES-LABEL: call {{(spir_func )?}}i32 @__enqueue_kernel_varargs( - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %[[BLOCK_SIZES1]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %[[BLOCK_SIZES1]]) // B32: %[[TMP:.*]] = getelementptr [1 x i32], ptr %[[BLOCK_SIZES1]], i32 0, i32 0 // B32: store i32 256, ptr %[[TMP]], align 4 // B64: %[[TMP:.*]] = getelementptr [1 x i64], ptr %[[BLOCK_SIZES1]], i32 0, i32 0 @@ -153,9 +153,9 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { // SPIR: [[DEF_Q:%[0-9]+]] = load target("spirv.Queue"), ptr %default_queue // X86: [[DEF_Q:%[0-9]+]] = load ptr, ptr %default_queue // COMMON: [[FLAGS:%[0-9]+]] = load i32, ptr %flags - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %[[BLOCK_SIZES2]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %[[BLOCK_SIZES2]]) // CHECK-LIFETIMES-LABEL: call {{(spir_func )?}}i32 @__enqueue_kernel_varargs( - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %[[BLOCK_SIZES2]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %[[BLOCK_SIZES2]]) // B32: %[[TMP:.*]] = getelementptr [1 x i32], ptr %[[BLOCK_SIZES2]], i32 0, i32 0 // B32: store i32 %{{.*}}, ptr %[[TMP]], align 4 // B64: %[[TMP:.*]] = getelementptr [1 x i64], ptr %[[BLOCK_SIZES2]], i32 0, i32 0 @@ -181,9 +181,9 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { // X86: [[AD:%arraydecay[0-9]*]] = getelementptr inbounds [1 x ptr], ptr %event_wait_list2, i{{32|64}} 0, i{{32|64}} 0 // COMMON: [[WAIT_EVNT:%[0-9]+]] ={{.*}} addrspacecast ptr [[AD]] to ptr addrspace(4) // COMMON: [[EVNT:%[0-9]+]] ={{.*}} addrspacecast ptr %clk_event to ptr addrspace(4) - // CHECK-LIFETIMES: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %[[BLOCK_SIZES3]]) + // CHECK-LIFETIMES: call void @llvm.lifetime.start.p0(ptr nonnull %[[BLOCK_SIZES3]]) // CHECK-LIFETIMES-LABEL: call {{(spir_func )?}}i32 @__enqueue_kernel_events_varargs( - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %[[BLOCK_SIZES3]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %[[BLOCK_SIZES3]]) // B32: %[[TMP:.*]] = getelementptr [1 x i32], ptr %[[BLOCK_SIZES3]], i32 0, i32 0 // B32: store i32 256, ptr %[[TMP]], align 4 // B64: %[[TMP:.*]] = getelementptr [1 x i64], ptr %[[BLOCK_SIZES3]], i32 0, i32 0 @@ -209,9 +209,9 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { // X86: [[AD:%arraydecay[0-9]*]] = getelementptr inbounds [1 x ptr], ptr %event_wait_list2, i{{32|64}} 0, i{{32|64}} 0 // COMMON: [[WAIT_EVNT:%[0-9]+]] ={{.*}} addrspacecast ptr [[AD]] to ptr addrspace(4) // COMMON: [[EVNT:%[0-9]+]] ={{.*}} addrspacecast ptr %clk_event to ptr addrspace(4) - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %[[BLOCK_SIZES4]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %[[BLOCK_SIZES4]]) // CHECK-LIFETIMES-LABEL: call {{(spir_func )?}}i32 @__enqueue_kernel_events_varargs( - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %[[BLOCK_SIZES4]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %[[BLOCK_SIZES4]]) // B32: %[[TMP:.*]] = getelementptr [1 x i32], ptr %[[BLOCK_SIZES4]], i32 0, i32 0 // B32: store i32 %{{.*}}, ptr %[[TMP]], align 4 // B64: %[[TMP:.*]] = getelementptr [1 x i64], ptr %[[BLOCK_SIZES4]], i32 0, i32 0 @@ -234,9 +234,9 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { // SPIR: [[DEF_Q:%[0-9]+]] = load target("spirv.Queue"), ptr %default_queue // X86: [[DEF_Q:%[0-9]+]] = load ptr, ptr %default_queue // COMMON: [[FLAGS:%[0-9]+]] = load i32, ptr %flags - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %[[BLOCK_SIZES5]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %[[BLOCK_SIZES5]]) // CHECK-LIFETIMES-LABEL: call {{(spir_func )?}}i32 @__enqueue_kernel_varargs( - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %[[BLOCK_SIZES5]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %[[BLOCK_SIZES5]]) // B32: %[[TMP:.*]] = getelementptr [1 x i32], ptr %[[BLOCK_SIZES5]], i32 0, i32 0 // B32: store i32 %{{.*}}, ptr %[[TMP]], align 4 // B64: %[[TMP:.*]] = getelementptr [1 x i64], ptr %[[BLOCK_SIZES5]], i32 0, i32 0 @@ -258,9 +258,9 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { // SPIR: [[DEF_Q:%[0-9]+]] = load target("spirv.Queue"), ptr %default_queue // X86: [[DEF_Q:%[0-9]+]] = load ptr, ptr %default_queue // COMMON: [[FLAGS:%[0-9]+]] = load i32, ptr %flags - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %[[BLOCK_SIZES6]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %[[BLOCK_SIZES6]]) // CHECK-LIFETIMES-LABEL: call {{(spir_func )?}}i32 @__enqueue_kernel_varargs( - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %[[BLOCK_SIZES6]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %[[BLOCK_SIZES6]]) // B32: %[[TMP:.*]] = getelementptr [3 x i32], ptr %[[BLOCK_SIZES6]], i32 0, i32 0 // B32: store i32 1, ptr %[[TMP]], align 4 // B32: %[[BLOCK_SIZES62:.*]] = getelementptr [3 x i32], ptr %[[BLOCK_SIZES6]], i32 0, i32 1 @@ -290,9 +290,9 @@ kernel void device_side_enqueue(global int *a, global int *b, int i) { // SPIR: [[DEF_Q:%[0-9]+]] = load target("spirv.Queue"), ptr %default_queue // X86: [[DEF_Q:%[0-9]+]] = load ptr, ptr %default_queue // COMMON: [[FLAGS:%[0-9]+]] = load i32, ptr %flags - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %[[BLOCK_SIZES7]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %[[BLOCK_SIZES7]]) // CHECK-LIFETIMES-LABEL: call {{(spir_func )?}}i32 @__enqueue_kernel_varargs( - // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %[[BLOCK_SIZES7]]) + // CHECK-LIFETIMES-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %[[BLOCK_SIZES7]]) // B32: %[[TMP:.*]] = getelementptr [1 x i32], ptr %[[BLOCK_SIZES7]], i32 0, i32 0 // B32: store i32 0, ptr %[[TMP]], align 4 // B64: %[[TMP:.*]] = getelementptr [1 x i64], ptr %[[BLOCK_SIZES7]], i32 0, i32 0 diff --git a/clang/test/CodeGenOpenCL/implicit-addrspacecast-function-parameter.cl b/clang/test/CodeGenOpenCL/implicit-addrspacecast-function-parameter.cl index 8845ffe499fde..4e40073c7e27a 100644 --- a/clang/test/CodeGenOpenCL/implicit-addrspacecast-function-parameter.cl +++ b/clang/test/CodeGenOpenCL/implicit-addrspacecast-function-parameter.cl @@ -32,12 +32,12 @@ __kernel void use_of_local_var() // CHECK-SAME: ) #[[ATTR0:[0-9]+]] { // CHECK-NEXT: [[ENTRY:.*:]] // CHECK-NEXT: [[X:%.*]] = alloca i32, align 4, addrspace(5) -// CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[X]]) #[[ATTR5:[0-9]+]] +// CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[X]]) #[[ATTR5:[0-9]+]] // CHECK-NEXT: store i32 0, ptr addrspace(5) [[X]], align 4, !tbaa [[TBAA4:![0-9]+]] // CHECK-NEXT: call void @private_ptr(ptr addrspace(5) noundef [[X]]) #[[ATTR6:[0-9]+]] // CHECK-NEXT: [[X_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X]] to ptr // CHECK-NEXT: call void @generic_ptr(ptr noundef [[X_ASCAST]]) #[[ATTR6]] -// CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[X]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[X]]) #[[ATTR5]] // CHECK-NEXT: ret void // // diff --git a/clang/test/Headers/__clang_hip_cmath.hip b/clang/test/Headers/__clang_hip_cmath.hip index fcd74996e5fa4..2e0b776c4bfe5 100644 --- a/clang/test/Headers/__clang_hip_cmath.hip +++ b/clang/test/Headers/__clang_hip_cmath.hip @@ -124,12 +124,12 @@ namespace user_namespace { // DEFAULT-NEXT: [[B:%.*]] = alloca [[STRUCT_USER_BFLOAT16]], align 1, addrspace(5) // DEFAULT-NEXT: [[A_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[A]] to ptr // DEFAULT-NEXT: [[B_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[B]] to ptr -// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(i64 1, ptr addrspace(5) [[A]]) #[[ATTR11:[0-9]+]] +// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[A]]) #[[ATTR11:[0-9]+]] // DEFAULT-NEXT: call void @_ZN13user_bfloat16C1Ef(ptr noundef nonnull align 1 dereferenceable(1) [[A_ASCAST]], float noundef 1.000000e+00) #[[ATTR10]] -// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(i64 1, ptr addrspace(5) [[B]]) #[[ATTR11]] +// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[B]]) #[[ATTR11]] // DEFAULT-NEXT: call void @_ZN13user_bfloat16C1Ef(ptr noundef nonnull align 1 dereferenceable(1) [[B_ASCAST]], float noundef 2.000000e+00) #[[ATTR10]] -// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(i64 1, ptr addrspace(5) [[B]]) #[[ATTR11]] -// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(i64 1, ptr addrspace(5) [[A]]) #[[ATTR11]] +// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[B]]) #[[ATTR11]] +// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[A]]) #[[ATTR11]] // DEFAULT-NEXT: ret void // // FINITEONLY-LABEL: @_ZN14user_namespace8test_fmaEv( @@ -138,12 +138,12 @@ namespace user_namespace { // FINITEONLY-NEXT: [[B:%.*]] = alloca [[STRUCT_USER_BFLOAT16]], align 1, addrspace(5) // FINITEONLY-NEXT: [[A_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[A]] to ptr // FINITEONLY-NEXT: [[B_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[B]] to ptr -// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(i64 1, ptr addrspace(5) [[A]]) #[[ATTR11:[0-9]+]] +// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[A]]) #[[ATTR11:[0-9]+]] // FINITEONLY-NEXT: call void @_ZN13user_bfloat16C1Ef(ptr noundef nonnull align 1 dereferenceable(1) [[A_ASCAST]], float noundef nofpclass(nan inf) 1.000000e+00) #[[ATTR10]] -// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(i64 1, ptr addrspace(5) [[B]]) #[[ATTR11]] +// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[B]]) #[[ATTR11]] // FINITEONLY-NEXT: call void @_ZN13user_bfloat16C1Ef(ptr noundef nonnull align 1 dereferenceable(1) [[B_ASCAST]], float noundef nofpclass(nan inf) 2.000000e+00) #[[ATTR10]] -// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(i64 1, ptr addrspace(5) [[B]]) #[[ATTR11]] -// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(i64 1, ptr addrspace(5) [[A]]) #[[ATTR11]] +// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[B]]) #[[ATTR11]] +// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[A]]) #[[ATTR11]] // FINITEONLY-NEXT: ret void // __global__ void test_fma() { diff --git a/clang/test/Headers/__clang_hip_math.hip b/clang/test/Headers/__clang_hip_math.hip index 81c5f43a006e7..15bdb7589bf45 100644 --- a/clang/test/Headers/__clang_hip_math.hip +++ b/clang/test/Headers/__clang_hip_math.hip @@ -3636,52 +3636,52 @@ extern "C" __device__ long int test_lround(double x) { // DEFAULT-LABEL: @test_modff( // DEFAULT-NEXT: entry: // DEFAULT-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17:[0-9]+]] +// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17:[0-9]+]] // DEFAULT-NEXT: [[CALL_I:%.*]] = call contract noundef float @__ocml_modf_f32(float noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // DEFAULT-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA16:![0-9]+]] // DEFAULT-NEXT: store float [[TMP0]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA16]] -// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: ret float [[CALL_I]] // // FINITEONLY-LABEL: @test_modff( // FINITEONLY-NEXT: entry: // FINITEONLY-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17:[0-9]+]] +// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17:[0-9]+]] // FINITEONLY-NEXT: [[CALL_I:%.*]] = call nnan ninf contract noundef nofpclass(nan inf) float @__ocml_modf_f32(float noundef nofpclass(nan inf) [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // FINITEONLY-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA16:![0-9]+]] // FINITEONLY-NEXT: store float [[TMP0]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA16]] -// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: ret float [[CALL_I]] // // APPROX-LABEL: @test_modff( // APPROX-NEXT: entry: // APPROX-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// APPROX-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17:[0-9]+]] +// APPROX-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17:[0-9]+]] // APPROX-NEXT: [[CALL_I:%.*]] = call contract noundef float @__ocml_modf_f32(float noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // APPROX-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA16:![0-9]+]] // APPROX-NEXT: store float [[TMP0]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA16]] -// APPROX-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: ret float [[CALL_I]] // // NCRDIV-LABEL: @test_modff( // NCRDIV-NEXT: entry: // NCRDIV-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17:[0-9]+]] +// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17:[0-9]+]] // NCRDIV-NEXT: [[CALL_I:%.*]] = call contract noundef float @__ocml_modf_f32(float noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // NCRDIV-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA17:![0-9]+]] // NCRDIV-NEXT: store float [[TMP0]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA17]] -// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: ret float [[CALL_I]] // // AMDGCNSPIRV-LABEL: @test_modff( // AMDGCNSPIRV-NEXT: entry: // AMDGCNSPIRV-NEXT: [[__TMP_I:%.*]] = alloca float, align 4 // AMDGCNSPIRV-NEXT: [[__TMP_ASCAST_I:%.*]] = addrspacecast ptr [[__TMP_I]] to ptr addrspace(4) -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[__TMP_I]]) #[[ATTR15:[0-9]+]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15:[0-9]+]] // AMDGCNSPIRV-NEXT: [[CALL_I:%.*]] = call contract spir_func noundef addrspace(4) float @__ocml_modf_f32(float noundef [[X:%.*]], ptr noundef nonnull [[__TMP_I]]) #[[ATTR14]] // AMDGCNSPIRV-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(4) [[__TMP_ASCAST_I]], align 4, !tbaa [[TBAA17:![0-9]+]] // AMDGCNSPIRV-NEXT: store float [[TMP0]], ptr addrspace(4) [[Y:%.*]], align 4, !tbaa [[TBAA17]] -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: ret float [[CALL_I]] // extern "C" __device__ float test_modff(float x, float* y) { @@ -3691,52 +3691,52 @@ extern "C" __device__ float test_modff(float x, float* y) { // DEFAULT-LABEL: @test_modf( // DEFAULT-NEXT: entry: // DEFAULT-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: [[CALL_I:%.*]] = call contract noundef double @__ocml_modf_f64(double noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // DEFAULT-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA18:![0-9]+]] // DEFAULT-NEXT: store double [[TMP0]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA18]] -// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: ret double [[CALL_I]] // // FINITEONLY-LABEL: @test_modf( // FINITEONLY-NEXT: entry: // FINITEONLY-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: [[CALL_I:%.*]] = call nnan ninf contract noundef nofpclass(nan inf) double @__ocml_modf_f64(double noundef nofpclass(nan inf) [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // FINITEONLY-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA18:![0-9]+]] // FINITEONLY-NEXT: store double [[TMP0]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA18]] -// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: ret double [[CALL_I]] // // APPROX-LABEL: @test_modf( // APPROX-NEXT: entry: // APPROX-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// APPROX-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: [[CALL_I:%.*]] = call contract noundef double @__ocml_modf_f64(double noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // APPROX-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA18:![0-9]+]] // APPROX-NEXT: store double [[TMP0]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA18]] -// APPROX-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: ret double [[CALL_I]] // // NCRDIV-LABEL: @test_modf( // NCRDIV-NEXT: entry: // NCRDIV-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: [[CALL_I:%.*]] = call contract noundef double @__ocml_modf_f64(double noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // NCRDIV-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA19:![0-9]+]] // NCRDIV-NEXT: store double [[TMP0]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA19]] -// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: ret double [[CALL_I]] // // AMDGCNSPIRV-LABEL: @test_modf( // AMDGCNSPIRV-NEXT: entry: // AMDGCNSPIRV-NEXT: [[__TMP_I:%.*]] = alloca double, align 8 // AMDGCNSPIRV-NEXT: [[__TMP_ASCAST_I:%.*]] = addrspacecast ptr [[__TMP_I]] to ptr addrspace(4) -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: [[CALL_I:%.*]] = call contract spir_func noundef addrspace(4) double @__ocml_modf_f64(double noundef [[X:%.*]], ptr noundef nonnull [[__TMP_I]]) #[[ATTR14]] // AMDGCNSPIRV-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(4) [[__TMP_ASCAST_I]], align 8, !tbaa [[TBAA19:![0-9]+]] // AMDGCNSPIRV-NEXT: store double [[TMP0]], ptr addrspace(4) [[Y:%.*]], align 8, !tbaa [[TBAA19]] -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: ret double [[CALL_I]] // extern "C" __device__ double test_modf(double x, double* y) { @@ -5362,52 +5362,52 @@ extern "C" __device__ double test_remainder(double x, double y) { // DEFAULT-LABEL: @test_remquof( // DEFAULT-NEXT: entry: // DEFAULT-NEXT: [[__TMP_I:%.*]] = alloca i32, align 4, addrspace(5) -// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: [[CALL_I:%.*]] = call contract noundef float @__ocml_remquo_f32(float noundef [[X:%.*]], float noundef [[Y:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // DEFAULT-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA12]] // DEFAULT-NEXT: store i32 [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA12]] -// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: ret float [[CALL_I]] // // FINITEONLY-LABEL: @test_remquof( // FINITEONLY-NEXT: entry: // FINITEONLY-NEXT: [[__TMP_I:%.*]] = alloca i32, align 4, addrspace(5) -// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: [[CALL_I:%.*]] = call nnan ninf contract noundef nofpclass(nan inf) float @__ocml_remquo_f32(float noundef nofpclass(nan inf) [[X:%.*]], float noundef nofpclass(nan inf) [[Y:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // FINITEONLY-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA12]] // FINITEONLY-NEXT: store i32 [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA12]] -// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: ret float [[CALL_I]] // // APPROX-LABEL: @test_remquof( // APPROX-NEXT: entry: // APPROX-NEXT: [[__TMP_I:%.*]] = alloca i32, align 4, addrspace(5) -// APPROX-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: [[CALL_I:%.*]] = call contract noundef float @__ocml_remquo_f32(float noundef [[X:%.*]], float noundef [[Y:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // APPROX-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA12]] // APPROX-NEXT: store i32 [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA12]] -// APPROX-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: ret float [[CALL_I]] // // NCRDIV-LABEL: @test_remquof( // NCRDIV-NEXT: entry: // NCRDIV-NEXT: [[__TMP_I:%.*]] = alloca i32, align 4, addrspace(5) -// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: [[CALL_I:%.*]] = call contract noundef float @__ocml_remquo_f32(float noundef [[X:%.*]], float noundef [[Y:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // NCRDIV-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA13]] // NCRDIV-NEXT: store i32 [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA13]] -// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: ret float [[CALL_I]] // // AMDGCNSPIRV-LABEL: @test_remquof( // AMDGCNSPIRV-NEXT: entry: // AMDGCNSPIRV-NEXT: [[__TMP_I:%.*]] = alloca i32, align 4 // AMDGCNSPIRV-NEXT: [[__TMP_ASCAST_I:%.*]] = addrspacecast ptr [[__TMP_I]] to ptr addrspace(4) -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: [[CALL_I:%.*]] = call contract spir_func noundef addrspace(4) float @__ocml_remquo_f32(float noundef [[X:%.*]], float noundef [[Y:%.*]], ptr noundef nonnull [[__TMP_I]]) #[[ATTR14]] // AMDGCNSPIRV-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(4) [[__TMP_ASCAST_I]], align 4, !tbaa [[TBAA13]] // AMDGCNSPIRV-NEXT: store i32 [[TMP0]], ptr addrspace(4) [[Z:%.*]], align 4, !tbaa [[TBAA13]] -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: ret float [[CALL_I]] // extern "C" __device__ float test_remquof(float x, float y, int* z) { @@ -5417,52 +5417,52 @@ extern "C" __device__ float test_remquof(float x, float y, int* z) { // DEFAULT-LABEL: @test_remquo( // DEFAULT-NEXT: entry: // DEFAULT-NEXT: [[__TMP_I:%.*]] = alloca i32, align 4, addrspace(5) -// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: [[CALL_I:%.*]] = call contract noundef double @__ocml_remquo_f64(double noundef [[X:%.*]], double noundef [[Y:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // DEFAULT-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA12]] // DEFAULT-NEXT: store i32 [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA12]] -// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: ret double [[CALL_I]] // // FINITEONLY-LABEL: @test_remquo( // FINITEONLY-NEXT: entry: // FINITEONLY-NEXT: [[__TMP_I:%.*]] = alloca i32, align 4, addrspace(5) -// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: [[CALL_I:%.*]] = call nnan ninf contract noundef nofpclass(nan inf) double @__ocml_remquo_f64(double noundef nofpclass(nan inf) [[X:%.*]], double noundef nofpclass(nan inf) [[Y:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // FINITEONLY-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA12]] // FINITEONLY-NEXT: store i32 [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA12]] -// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: ret double [[CALL_I]] // // APPROX-LABEL: @test_remquo( // APPROX-NEXT: entry: // APPROX-NEXT: [[__TMP_I:%.*]] = alloca i32, align 4, addrspace(5) -// APPROX-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: [[CALL_I:%.*]] = call contract noundef double @__ocml_remquo_f64(double noundef [[X:%.*]], double noundef [[Y:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // APPROX-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA12]] // APPROX-NEXT: store i32 [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA12]] -// APPROX-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: ret double [[CALL_I]] // // NCRDIV-LABEL: @test_remquo( // NCRDIV-NEXT: entry: // NCRDIV-NEXT: [[__TMP_I:%.*]] = alloca i32, align 4, addrspace(5) -// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: [[CALL_I:%.*]] = call contract noundef double @__ocml_remquo_f64(double noundef [[X:%.*]], double noundef [[Y:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // NCRDIV-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA13]] // NCRDIV-NEXT: store i32 [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA13]] -// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: ret double [[CALL_I]] // // AMDGCNSPIRV-LABEL: @test_remquo( // AMDGCNSPIRV-NEXT: entry: // AMDGCNSPIRV-NEXT: [[__TMP_I:%.*]] = alloca i32, align 4 // AMDGCNSPIRV-NEXT: [[__TMP_ASCAST_I:%.*]] = addrspacecast ptr [[__TMP_I]] to ptr addrspace(4) -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: [[CALL_I:%.*]] = call contract spir_func noundef addrspace(4) double @__ocml_remquo_f64(double noundef [[X:%.*]], double noundef [[Y:%.*]], ptr noundef nonnull [[__TMP_I]]) #[[ATTR14]] // AMDGCNSPIRV-NEXT: [[TMP0:%.*]] = load i32, ptr addrspace(4) [[__TMP_ASCAST_I]], align 4, !tbaa [[TBAA13]] // AMDGCNSPIRV-NEXT: store i32 [[TMP0]], ptr addrspace(4) [[Z:%.*]], align 4, !tbaa [[TBAA13]] -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: ret double [[CALL_I]] // extern "C" __device__ double test_remquo(double x, double y, int* z) { @@ -6198,57 +6198,57 @@ extern "C" __device__ BOOL_TYPE test___signbit(double x) { // DEFAULT-LABEL: @test_sincosf( // DEFAULT-NEXT: entry: // DEFAULT-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: [[CALL_I:%.*]] = call contract float @__ocml_sincos_f32(float noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // DEFAULT-NEXT: store float [[CALL_I]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA16]] // DEFAULT-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA16]] // DEFAULT-NEXT: store float [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA16]] -// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: ret void // // FINITEONLY-LABEL: @test_sincosf( // FINITEONLY-NEXT: entry: // FINITEONLY-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: [[CALL_I:%.*]] = call nnan ninf contract nofpclass(nan inf) float @__ocml_sincos_f32(float noundef nofpclass(nan inf) [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // FINITEONLY-NEXT: store float [[CALL_I]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA16]] // FINITEONLY-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA16]] // FINITEONLY-NEXT: store float [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA16]] -// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: ret void // // APPROX-LABEL: @test_sincosf( // APPROX-NEXT: entry: // APPROX-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// APPROX-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: [[CALL_I:%.*]] = call contract float @__ocml_sincos_f32(float noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // APPROX-NEXT: store float [[CALL_I]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA16]] // APPROX-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA16]] // APPROX-NEXT: store float [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA16]] -// APPROX-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: ret void // // NCRDIV-LABEL: @test_sincosf( // NCRDIV-NEXT: entry: // NCRDIV-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: [[CALL_I:%.*]] = call contract float @__ocml_sincos_f32(float noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // NCRDIV-NEXT: store float [[CALL_I]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA17]] // NCRDIV-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA17]] // NCRDIV-NEXT: store float [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA17]] -// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: ret void // // AMDGCNSPIRV-LABEL: @test_sincosf( // AMDGCNSPIRV-NEXT: entry: // AMDGCNSPIRV-NEXT: [[__TMP_I:%.*]] = alloca float, align 4 // AMDGCNSPIRV-NEXT: [[__TMP_ASCAST_I:%.*]] = addrspacecast ptr [[__TMP_I]] to ptr addrspace(4) -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: [[CALL_I:%.*]] = call contract spir_func addrspace(4) float @__ocml_sincos_f32(float noundef [[X:%.*]], ptr noundef nonnull [[__TMP_I]]) #[[ATTR14]] // AMDGCNSPIRV-NEXT: store float [[CALL_I]], ptr addrspace(4) [[Y:%.*]], align 4, !tbaa [[TBAA17]] // AMDGCNSPIRV-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(4) [[__TMP_ASCAST_I]], align 4, !tbaa [[TBAA17]] // AMDGCNSPIRV-NEXT: store float [[TMP0]], ptr addrspace(4) [[Z:%.*]], align 4, !tbaa [[TBAA17]] -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: ret void // extern "C" __device__ void test_sincosf(float x, float *y, float *z) { @@ -6258,57 +6258,57 @@ extern "C" __device__ void test_sincosf(float x, float *y, float *z) { // DEFAULT-LABEL: @test_sincos( // DEFAULT-NEXT: entry: // DEFAULT-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: [[CALL_I:%.*]] = call contract double @__ocml_sincos_f64(double noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // DEFAULT-NEXT: store double [[CALL_I]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA18]] // DEFAULT-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA18]] // DEFAULT-NEXT: store double [[TMP0]], ptr [[Z:%.*]], align 8, !tbaa [[TBAA18]] -// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: ret void // // FINITEONLY-LABEL: @test_sincos( // FINITEONLY-NEXT: entry: // FINITEONLY-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: [[CALL_I:%.*]] = call nnan ninf contract nofpclass(nan inf) double @__ocml_sincos_f64(double noundef nofpclass(nan inf) [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // FINITEONLY-NEXT: store double [[CALL_I]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA18]] // FINITEONLY-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA18]] // FINITEONLY-NEXT: store double [[TMP0]], ptr [[Z:%.*]], align 8, !tbaa [[TBAA18]] -// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: ret void // // APPROX-LABEL: @test_sincos( // APPROX-NEXT: entry: // APPROX-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// APPROX-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: [[CALL_I:%.*]] = call contract double @__ocml_sincos_f64(double noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // APPROX-NEXT: store double [[CALL_I]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA18]] // APPROX-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA18]] // APPROX-NEXT: store double [[TMP0]], ptr [[Z:%.*]], align 8, !tbaa [[TBAA18]] -// APPROX-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: ret void // // NCRDIV-LABEL: @test_sincos( // NCRDIV-NEXT: entry: // NCRDIV-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: [[CALL_I:%.*]] = call contract double @__ocml_sincos_f64(double noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // NCRDIV-NEXT: store double [[CALL_I]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA19]] // NCRDIV-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA19]] // NCRDIV-NEXT: store double [[TMP0]], ptr [[Z:%.*]], align 8, !tbaa [[TBAA19]] -// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: ret void // // AMDGCNSPIRV-LABEL: @test_sincos( // AMDGCNSPIRV-NEXT: entry: // AMDGCNSPIRV-NEXT: [[__TMP_I:%.*]] = alloca double, align 8 // AMDGCNSPIRV-NEXT: [[__TMP_ASCAST_I:%.*]] = addrspacecast ptr [[__TMP_I]] to ptr addrspace(4) -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: [[CALL_I:%.*]] = call contract spir_func addrspace(4) double @__ocml_sincos_f64(double noundef [[X:%.*]], ptr noundef nonnull [[__TMP_I]]) #[[ATTR14]] // AMDGCNSPIRV-NEXT: store double [[CALL_I]], ptr addrspace(4) [[Y:%.*]], align 8, !tbaa [[TBAA19]] // AMDGCNSPIRV-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(4) [[__TMP_ASCAST_I]], align 8, !tbaa [[TBAA19]] // AMDGCNSPIRV-NEXT: store double [[TMP0]], ptr addrspace(4) [[Z:%.*]], align 8, !tbaa [[TBAA19]] -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: ret void // extern "C" __device__ void test_sincos(double x, double *y, double *z) { @@ -6318,57 +6318,57 @@ extern "C" __device__ void test_sincos(double x, double *y, double *z) { // DEFAULT-LABEL: @test_sincospif( // DEFAULT-NEXT: entry: // DEFAULT-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: [[CALL_I:%.*]] = call contract float @__ocml_sincospi_f32(float noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // DEFAULT-NEXT: store float [[CALL_I]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA16]] // DEFAULT-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA16]] // DEFAULT-NEXT: store float [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA16]] -// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: ret void // // FINITEONLY-LABEL: @test_sincospif( // FINITEONLY-NEXT: entry: // FINITEONLY-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: [[CALL_I:%.*]] = call nnan ninf contract nofpclass(nan inf) float @__ocml_sincospi_f32(float noundef nofpclass(nan inf) [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // FINITEONLY-NEXT: store float [[CALL_I]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA16]] // FINITEONLY-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA16]] // FINITEONLY-NEXT: store float [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA16]] -// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: ret void // // APPROX-LABEL: @test_sincospif( // APPROX-NEXT: entry: // APPROX-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// APPROX-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: [[CALL_I:%.*]] = call contract float @__ocml_sincospi_f32(float noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // APPROX-NEXT: store float [[CALL_I]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA16]] // APPROX-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA16]] // APPROX-NEXT: store float [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA16]] -// APPROX-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: ret void // // NCRDIV-LABEL: @test_sincospif( // NCRDIV-NEXT: entry: // NCRDIV-NEXT: [[__TMP_I:%.*]] = alloca float, align 4, addrspace(5) -// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: [[CALL_I:%.*]] = call contract float @__ocml_sincospi_f32(float noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // NCRDIV-NEXT: store float [[CALL_I]], ptr [[Y:%.*]], align 4, !tbaa [[TBAA17]] // NCRDIV-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(5) [[__TMP_I]], align 4, !tbaa [[TBAA17]] // NCRDIV-NEXT: store float [[TMP0]], ptr [[Z:%.*]], align 4, !tbaa [[TBAA17]] -// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: ret void // // AMDGCNSPIRV-LABEL: @test_sincospif( // AMDGCNSPIRV-NEXT: entry: // AMDGCNSPIRV-NEXT: [[__TMP_I:%.*]] = alloca float, align 4 // AMDGCNSPIRV-NEXT: [[__TMP_ASCAST_I:%.*]] = addrspacecast ptr [[__TMP_I]] to ptr addrspace(4) -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: [[CALL_I:%.*]] = call contract spir_func addrspace(4) float @__ocml_sincospi_f32(float noundef [[X:%.*]], ptr noundef nonnull [[__TMP_I]]) #[[ATTR14]] // AMDGCNSPIRV-NEXT: store float [[CALL_I]], ptr addrspace(4) [[Y:%.*]], align 4, !tbaa [[TBAA17]] // AMDGCNSPIRV-NEXT: [[TMP0:%.*]] = load float, ptr addrspace(4) [[__TMP_ASCAST_I]], align 4, !tbaa [[TBAA17]] // AMDGCNSPIRV-NEXT: store float [[TMP0]], ptr addrspace(4) [[Z:%.*]], align 4, !tbaa [[TBAA17]] -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: ret void // extern "C" __device__ void test_sincospif(float x, float *y, float *z) { @@ -6378,57 +6378,57 @@ extern "C" __device__ void test_sincospif(float x, float *y, float *z) { // DEFAULT-LABEL: @test_sincospi( // DEFAULT-NEXT: entry: // DEFAULT-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: [[CALL_I:%.*]] = call contract double @__ocml_sincospi_f64(double noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // DEFAULT-NEXT: store double [[CALL_I]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA18]] // DEFAULT-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA18]] // DEFAULT-NEXT: store double [[TMP0]], ptr [[Z:%.*]], align 8, !tbaa [[TBAA18]] -// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// DEFAULT-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // DEFAULT-NEXT: ret void // // FINITEONLY-LABEL: @test_sincospi( // FINITEONLY-NEXT: entry: // FINITEONLY-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: [[CALL_I:%.*]] = call nnan ninf contract nofpclass(nan inf) double @__ocml_sincospi_f64(double noundef nofpclass(nan inf) [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // FINITEONLY-NEXT: store double [[CALL_I]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA18]] // FINITEONLY-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA18]] // FINITEONLY-NEXT: store double [[TMP0]], ptr [[Z:%.*]], align 8, !tbaa [[TBAA18]] -// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// FINITEONLY-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // FINITEONLY-NEXT: ret void // // APPROX-LABEL: @test_sincospi( // APPROX-NEXT: entry: // APPROX-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// APPROX-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: [[CALL_I:%.*]] = call contract double @__ocml_sincospi_f64(double noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // APPROX-NEXT: store double [[CALL_I]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA18]] // APPROX-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA18]] // APPROX-NEXT: store double [[TMP0]], ptr [[Z:%.*]], align 8, !tbaa [[TBAA18]] -// APPROX-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// APPROX-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // APPROX-NEXT: ret void // // NCRDIV-LABEL: @test_sincospi( // NCRDIV-NEXT: entry: // NCRDIV-NEXT: [[__TMP_I:%.*]] = alloca double, align 8, addrspace(5) -// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: [[CALL_I:%.*]] = call contract double @__ocml_sincospi_f64(double noundef [[X:%.*]], ptr addrspace(5) noundef [[__TMP_I]]) #[[ATTR16]] // NCRDIV-NEXT: store double [[CALL_I]], ptr [[Y:%.*]], align 8, !tbaa [[TBAA19]] // NCRDIV-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(5) [[__TMP_I]], align 8, !tbaa [[TBAA19]] // NCRDIV-NEXT: store double [[TMP0]], ptr [[Z:%.*]], align 8, !tbaa [[TBAA19]] -// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] +// NCRDIV-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[__TMP_I]]) #[[ATTR17]] // NCRDIV-NEXT: ret void // // AMDGCNSPIRV-LABEL: @test_sincospi( // AMDGCNSPIRV-NEXT: entry: // AMDGCNSPIRV-NEXT: [[__TMP_I:%.*]] = alloca double, align 8 // AMDGCNSPIRV-NEXT: [[__TMP_ASCAST_I:%.*]] = addrspacecast ptr [[__TMP_I]] to ptr addrspace(4) -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.start.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: [[CALL_I:%.*]] = call contract spir_func addrspace(4) double @__ocml_sincospi_f64(double noundef [[X:%.*]], ptr noundef nonnull [[__TMP_I]]) #[[ATTR14]] // AMDGCNSPIRV-NEXT: store double [[CALL_I]], ptr addrspace(4) [[Y:%.*]], align 8, !tbaa [[TBAA19]] // AMDGCNSPIRV-NEXT: [[TMP0:%.*]] = load double, ptr addrspace(4) [[__TMP_ASCAST_I]], align 8, !tbaa [[TBAA19]] // AMDGCNSPIRV-NEXT: store double [[TMP0]], ptr addrspace(4) [[Z:%.*]], align 8, !tbaa [[TBAA19]] -// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[__TMP_I]]) #[[ATTR15]] +// AMDGCNSPIRV-NEXT: call addrspace(4) void @llvm.lifetime.end.p0(ptr nonnull [[__TMP_I]]) #[[ATTR15]] // AMDGCNSPIRV-NEXT: ret void // extern "C" __device__ void test_sincospi(double x, double *y, double *z) { diff --git a/clang/test/OpenMP/bug54082.c b/clang/test/OpenMP/bug54082.c index da32be2867411..bda4bd29b9e66 100644 --- a/clang/test/OpenMP/bug54082.c +++ b/clang/test/OpenMP/bug54082.c @@ -68,14 +68,14 @@ void foo() { // CHECK-NEXT: entry: // CHECK-NEXT: [[X_TRAITS:%.*]] = alloca [1 x %struct.omp_alloctrait_t], align 16 // CHECK-NEXT: [[X_ALLOC:%.*]] = alloca i64, align 8 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[X_TRAITS]]) #[[ATTR5:[0-9]+]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X_TRAITS]]) #[[ATTR5:[0-9]+]] // CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 16 dereferenceable(16) [[X_TRAITS]], ptr noundef nonnull align 16 dereferenceable(16) @__const.foo.x_traits, i64 16, i1 false) -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[X_ALLOC]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X_ALLOC]]) #[[ATTR5]] // CHECK-NEXT: [[CALL:%.*]] = call i64 @omp_init_allocator(i64 noundef 0, i32 noundef 1, ptr noundef nonnull [[X_TRAITS]]) #[[ATTR5]] // CHECK-NEXT: store i64 [[CALL]], ptr [[X_ALLOC]], align 8, !tbaa [[TBAA3:![0-9]+]] // CHECK-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr nonnull @[[GLOB2:[0-9]+]], i32 1, ptr nonnull @foo.omp_outlined, ptr nonnull [[X_ALLOC]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[X_ALLOC]]) #[[ATTR5]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[X_TRAITS]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X_ALLOC]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X_TRAITS]]) #[[ATTR5]] // CHECK-NEXT: ret void // // @@ -86,13 +86,13 @@ void foo() { // CHECK-NEXT: [[DOTOMP_UB:%.*]] = alloca i32, align 4 // CHECK-NEXT: [[DOTOMP_STRIDE:%.*]] = alloca i32, align 4 // CHECK-NEXT: [[DOTOMP_IS_LAST:%.*]] = alloca i32, align 4 -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[DOTOMP_LB]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[DOTOMP_LB]]) #[[ATTR5]] // CHECK-NEXT: store i32 0, ptr [[DOTOMP_LB]], align 4, !tbaa [[TBAA7:![0-9]+]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[DOTOMP_UB]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[DOTOMP_UB]]) #[[ATTR5]] // CHECK-NEXT: store i32 1023, ptr [[DOTOMP_UB]], align 4, !tbaa [[TBAA7]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[DOTOMP_STRIDE]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[DOTOMP_STRIDE]]) #[[ATTR5]] // CHECK-NEXT: store i32 1, ptr [[DOTOMP_STRIDE]], align 4, !tbaa [[TBAA7]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[DOTOMP_IS_LAST]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[DOTOMP_IS_LAST]]) #[[ATTR5]] // CHECK-NEXT: store i32 0, ptr [[DOTOMP_IS_LAST]], align 4, !tbaa [[TBAA7]] // CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[DOTGLOBAL_TID_]], align 4, !tbaa [[TBAA7]] // CHECK-NEXT: [[TMP1:%.*]] = load i64, ptr [[X_ALLOC]], align 8, !tbaa [[TBAA3]] @@ -106,9 +106,9 @@ void foo() { // CHECK-NEXT: [[TMP3:%.*]] = load i64, ptr [[X_ALLOC]], align 8, !tbaa [[TBAA3]] // CHECK-NEXT: [[CONV5:%.*]] = inttoptr i64 [[TMP3]] to ptr // CHECK-NEXT: call void @__kmpc_free(i32 [[TMP0]], ptr [[DOTX__VOID_ADDR]], ptr [[CONV5]]) -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[DOTOMP_IS_LAST]]) #[[ATTR5]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[DOTOMP_STRIDE]]) #[[ATTR5]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[DOTOMP_UB]]) #[[ATTR5]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[DOTOMP_LB]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[DOTOMP_IS_LAST]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[DOTOMP_STRIDE]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[DOTOMP_UB]]) #[[ATTR5]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[DOTOMP_LB]]) #[[ATTR5]] // CHECK-NEXT: ret void // diff --git a/clang/test/OpenMP/bug56913.c b/clang/test/OpenMP/bug56913.c index cc7231626878c..fad9e17ac4dd8 100644 --- a/clang/test/OpenMP/bug56913.c +++ b/clang/test/OpenMP/bug56913.c @@ -20,12 +20,12 @@ void loop(int n) { // CHECK-NEXT: br i1 [[CMP]], label [[SIMD_IF_THEN:%.*]], label [[SIMD_IF_END:%.*]] // CHECK: simd.if.then: // CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr @j, align 4, !tbaa [[TBAA2:![0-9]+]] -// CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[J]]) #[[ATTR2:[0-9]+]] +// CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[J]]) #[[ATTR2:[0-9]+]] // CHECK-NEXT: store ptr [[J]], ptr @u, align 8, !tbaa [[TBAA6:![0-9]+]], !llvm.access.group [[ACC_GRP8:![0-9]+]] // CHECK-NEXT: [[INC_LE:%.*]] = add i32 [[TMP0]], [[N]] // CHECK-NEXT: store i32 [[INC_LE]], ptr [[J]], align 4, !tbaa [[TBAA2]] // CHECK-NEXT: store i32 [[INC_LE]], ptr @j, align 4, !tbaa [[TBAA2]] -// CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[J]]) #[[ATTR2]] +// CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[J]]) #[[ATTR2]] // CHECK-NEXT: br label [[SIMD_IF_END]] // CHECK: simd.if.end: // CHECK-NEXT: ret void diff --git a/clang/test/OpenMP/nvptx_target_parallel_reduction_codegen_tbaa_PR46146.cpp b/clang/test/OpenMP/nvptx_target_parallel_reduction_codegen_tbaa_PR46146.cpp index 232cfdad043f0..20e344f0a34a0 100644 --- a/clang/test/OpenMP/nvptx_target_parallel_reduction_codegen_tbaa_PR46146.cpp +++ b/clang/test/OpenMP/nvptx_target_parallel_reduction_codegen_tbaa_PR46146.cpp @@ -71,16 +71,16 @@ void test() { // CHECK1-NEXT: [[ISTART:%.*]] = call align 16 ptr @__kmpc_alloc_shared(i64 4) // CHECK1-NEXT: [[IEND:%.*]] = call align 16 ptr @__kmpc_alloc_shared(i64 4) // CHECK1-NEXT: [[PARTIAL_SUM:%.*]] = call align 16 ptr @__kmpc_alloc_shared(i64 8) -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_IV]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_LB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_IV]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_LB]]) #[[ATTR4]] // CHECK1-NEXT: store i32 0, ptr [[DOTOMP_LB]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_UB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_UB]]) #[[ATTR4]] // CHECK1-NEXT: store i32 99, ptr [[DOTOMP_UB]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] // CHECK1-NEXT: store i32 1, ptr [[DOTOMP_STRIDE]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] // CHECK1-NEXT: store i32 0, ptr [[DOTOMP_IS_LAST]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[IB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[IB]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8 // CHECK1-NEXT: [[TMP1:%.*]] = load i32, ptr [[TMP0]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: call void @__kmpc_distribute_static_init_4(ptr @[[GLOB2:[0-9]+]], i32 [[TMP1]], i32 92, ptr [[DOTOMP_IS_LAST]], ptr [[DOTOMP_LB]], ptr [[DOTOMP_UB]], ptr [[DOTOMP_STRIDE]], i32 1, i32 1) @@ -110,13 +110,13 @@ void test() { // CHECK1-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1 // CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]] // CHECK1-NEXT: store i32 [[ADD]], ptr [[IB]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[REF_TMP]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP]]) #[[ATTR4]] // CHECK1-NEXT: store float 0.000000e+00, ptr [[REF_TMP]], align 4, !tbaa [[TBAA19:![0-9]+]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[REF_TMP2]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP2]]) #[[ATTR4]] // CHECK1-NEXT: store float 0.000000e+00, ptr [[REF_TMP2]], align 4, !tbaa [[TBAA19]] // CHECK1-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(ptr nonnull align 4 dereferenceable(8) [[PARTIAL_SUM]], ptr nonnull align 4 dereferenceable(4) [[REF_TMP]], ptr nonnull align 4 dereferenceable(4) [[REF_TMP2]]) #[[ATTR11:[0-9]+]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[REF_TMP2]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[REF_TMP]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP2]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP8:%.*]] = load i32, ptr [[IB]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[MUL3:%.*]] = mul nsw i32 [[TMP8]], 4 // CHECK1-NEXT: store i32 [[MUL3]], ptr [[ISTART]], align 4, !tbaa [[TBAA15]] @@ -143,12 +143,12 @@ void test() { // CHECK1-NEXT: br label [[OMP_LOOP_EXIT:%.*]] // CHECK1: omp.loop.exit: // CHECK1-NEXT: call void @__kmpc_distribute_static_fini(ptr @[[GLOB2]], i32 [[TMP1]]) -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[IB]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_UB]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_LB]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_IV]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[IB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_UB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_LB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_IV]]) #[[ATTR4]] // CHECK1-NEXT: call void @__kmpc_free_shared(ptr [[PARTIAL_SUM]], i64 8) // CHECK1-NEXT: call void @__kmpc_free_shared(ptr [[IEND]], i64 4) // CHECK1-NEXT: call void @__kmpc_free_shared(ptr [[ISTART]], i64 4) @@ -205,14 +205,14 @@ void test() { // CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ISTART_ADDR]], align 8, !tbaa [[TBAA17]] // CHECK1-NEXT: [[TMP1:%.*]] = load ptr, ptr [[IEND_ADDR]], align 8, !tbaa [[TBAA17]] // CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[PARTIAL_SUM_ADDR]], align 8, !tbaa [[TBAA23]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_IV]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTCAPTURE_EXPR_]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_IV]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCAPTURE_EXPR_]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP3:%.*]] = load i32, ptr [[TMP0]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: store i32 [[TMP3]], ptr [[DOTCAPTURE_EXPR_]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTCAPTURE_EXPR_1]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCAPTURE_EXPR_1]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP4:%.*]] = load i32, ptr [[TMP1]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: store i32 [[TMP4]], ptr [[DOTCAPTURE_EXPR_1]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTCAPTURE_EXPR_2]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCAPTURE_EXPR_2]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP5:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[TMP6:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[SUB:%.*]] = sub i32 [[TMP5]], [[TMP6]] @@ -221,33 +221,33 @@ void test() { // CHECK1-NEXT: [[DIV:%.*]] = udiv i32 [[ADD]], 1 // CHECK1-NEXT: [[SUB4:%.*]] = sub i32 [[DIV]], 1 // CHECK1-NEXT: store i32 [[SUB4]], ptr [[DOTCAPTURE_EXPR_2]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP7:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: store i32 [[TMP7]], ptr [[I]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP8:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[TMP9:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP8]], [[TMP9]] // CHECK1-NEXT: br i1 [[CMP]], label [[OMP_PRECOND_THEN:%.*]], label [[OMP_PRECOND_END:%.*]] // CHECK1: omp.precond.then: -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_LB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_LB]]) #[[ATTR4]] // CHECK1-NEXT: store i32 0, ptr [[DOTOMP_LB]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_UB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_UB]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP10:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_2]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: store i32 [[TMP10]], ptr [[DOTOMP_UB]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] // CHECK1-NEXT: store i32 1, ptr [[DOTOMP_STRIDE]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] // CHECK1-NEXT: store i32 0, ptr [[DOTOMP_IS_LAST]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[PARTIAL_SUM5]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[REF_TMP]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[PARTIAL_SUM5]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP]]) #[[ATTR4]] // CHECK1-NEXT: store float 0.000000e+00, ptr [[REF_TMP]], align 4, !tbaa [[TBAA19]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[REF_TMP6]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP6]]) #[[ATTR4]] // CHECK1-NEXT: store float 0.000000e+00, ptr [[REF_TMP6]], align 4, !tbaa [[TBAA19]] // CHECK1-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(ptr nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]], ptr nonnull align 4 dereferenceable(4) [[REF_TMP]], ptr nonnull align 4 dereferenceable(4) [[REF_TMP6]]) #[[ATTR11]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[REF_TMP6]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[REF_TMP]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I7]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP6]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[I7]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP11:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8 // CHECK1-NEXT: [[TMP12:%.*]] = load i32, ptr [[TMP11]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: call void @__kmpc_for_static_init_4u(ptr @[[GLOB3:[0-9]+]], i32 [[TMP12]], i32 33, ptr [[DOTOMP_IS_LAST]], ptr [[DOTOMP_LB]], ptr [[DOTOMP_UB]], ptr [[DOTOMP_STRIDE]], i32 1, i32 1) @@ -291,20 +291,20 @@ void test() { // CHECK1-NEXT: [[MUL:%.*]] = mul i32 [[TMP23]], 1 // CHECK1-NEXT: [[ADD13:%.*]] = add i32 [[TMP22]], [[MUL]] // CHECK1-NEXT: store i32 [[ADD13]], ptr [[I7]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[REF_TMP14]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[REF_TMP15]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP14]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP15]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP24:%.*]] = load i32, ptr [[I7]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[CONV:%.*]] = sitofp i32 [[TMP24]] to float // CHECK1-NEXT: store float [[CONV]], ptr [[REF_TMP15]], align 4, !tbaa [[TBAA19]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[REF_TMP16]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP16]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP25:%.*]] = load i32, ptr [[I7]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[CONV17:%.*]] = sitofp i32 [[TMP25]] to float // CHECK1-NEXT: store float [[CONV17]], ptr [[REF_TMP16]], align 4, !tbaa [[TBAA19]] // CHECK1-NEXT: call void @_ZNSt7complexIfEC1ERKfS2_(ptr nonnull align 4 dereferenceable(8) [[REF_TMP14]], ptr nonnull align 4 dereferenceable(4) [[REF_TMP15]], ptr nonnull align 4 dereferenceable(4) [[REF_TMP16]]) #[[ATTR11]] // CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 4 dereferenceable(8) ptr @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(ptr nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]], ptr nonnull align 4 dereferenceable(8) [[REF_TMP14]]) #[[ATTR11]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[REF_TMP16]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[REF_TMP15]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[REF_TMP14]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP16]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP15]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP14]]) #[[ATTR4]] // CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]] // CHECK1: omp.body.continue: // CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]] @@ -338,18 +338,18 @@ void test() { // CHECK1-NEXT: [[CALL21:%.*]] = call nonnull align 4 dereferenceable(8) ptr @_ZNSt7complexIfEpLIfEERS0_RKS_IT_E(ptr nonnull align 4 dereferenceable(8) [[TMP2]], ptr nonnull align 4 dereferenceable(8) [[PARTIAL_SUM5]]) #[[ATTR11]] // CHECK1-NEXT: br label [[DOTOMP_REDUCTION_DONE]] // CHECK1: .omp.reduction.done: -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I7]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[PARTIAL_SUM5]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_UB]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_LB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[I7]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[PARTIAL_SUM5]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_UB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_LB]]) #[[ATTR4]] // CHECK1-NEXT: br label [[OMP_PRECOND_END]] // CHECK1: omp.precond.end: -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTCAPTURE_EXPR_2]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTCAPTURE_EXPR_1]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTCAPTURE_EXPR_]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_IV]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCAPTURE_EXPR_2]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCAPTURE_EXPR_1]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCAPTURE_EXPR_]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_IV]]) #[[ATTR4]] // CHECK1-NEXT: ret void // // @@ -563,16 +563,16 @@ void test() { // CHECK1-NEXT: [[ISTART:%.*]] = call align 16 ptr @__kmpc_alloc_shared(i64 4) // CHECK1-NEXT: [[IEND:%.*]] = call align 16 ptr @__kmpc_alloc_shared(i64 4) // CHECK1-NEXT: [[PARTIAL_SUM:%.*]] = call align 16 ptr @__kmpc_alloc_shared(i64 16) -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_IV]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_LB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_IV]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_LB]]) #[[ATTR4]] // CHECK1-NEXT: store i32 0, ptr [[DOTOMP_LB]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_UB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_UB]]) #[[ATTR4]] // CHECK1-NEXT: store i32 99, ptr [[DOTOMP_UB]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] // CHECK1-NEXT: store i32 1, ptr [[DOTOMP_STRIDE]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] // CHECK1-NEXT: store i32 0, ptr [[DOTOMP_IS_LAST]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[IB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[IB]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8 // CHECK1-NEXT: [[TMP1:%.*]] = load i32, ptr [[TMP0]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: call void @__kmpc_distribute_static_init_4(ptr @[[GLOB2]], i32 [[TMP1]], i32 92, ptr [[DOTOMP_IS_LAST]], ptr [[DOTOMP_LB]], ptr [[DOTOMP_UB]], ptr [[DOTOMP_STRIDE]], i32 1, i32 1) @@ -602,13 +602,13 @@ void test() { // CHECK1-NEXT: [[MUL:%.*]] = mul nsw i32 [[TMP7]], 1 // CHECK1-NEXT: [[ADD:%.*]] = add nsw i32 0, [[MUL]] // CHECK1-NEXT: store i32 [[ADD]], ptr [[IB]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[REF_TMP]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP]]) #[[ATTR4]] // CHECK1-NEXT: store double 0.000000e+00, ptr [[REF_TMP]], align 8, !tbaa [[TBAA36:![0-9]+]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[REF_TMP2]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP2]]) #[[ATTR4]] // CHECK1-NEXT: store double 0.000000e+00, ptr [[REF_TMP2]], align 8, !tbaa [[TBAA36]] // CHECK1-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(ptr nonnull align 8 dereferenceable(16) [[PARTIAL_SUM]], ptr nonnull align 8 dereferenceable(8) [[REF_TMP]], ptr nonnull align 8 dereferenceable(8) [[REF_TMP2]]) #[[ATTR11]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[REF_TMP2]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[REF_TMP]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP2]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP8:%.*]] = load i32, ptr [[IB]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[MUL3:%.*]] = mul nsw i32 [[TMP8]], 4 // CHECK1-NEXT: store i32 [[MUL3]], ptr [[ISTART]], align 4, !tbaa [[TBAA15]] @@ -635,12 +635,12 @@ void test() { // CHECK1-NEXT: br label [[OMP_LOOP_EXIT:%.*]] // CHECK1: omp.loop.exit: // CHECK1-NEXT: call void @__kmpc_distribute_static_fini(ptr @[[GLOB2]], i32 [[TMP1]]) -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[IB]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_UB]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_LB]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_IV]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[IB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_UB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_LB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_IV]]) #[[ATTR4]] // CHECK1-NEXT: call void @__kmpc_free_shared(ptr [[PARTIAL_SUM]], i64 16) // CHECK1-NEXT: call void @__kmpc_free_shared(ptr [[IEND]], i64 4) // CHECK1-NEXT: call void @__kmpc_free_shared(ptr [[ISTART]], i64 4) @@ -697,14 +697,14 @@ void test() { // CHECK1-NEXT: [[TMP0:%.*]] = load ptr, ptr [[ISTART_ADDR]], align 8, !tbaa [[TBAA17]] // CHECK1-NEXT: [[TMP1:%.*]] = load ptr, ptr [[IEND_ADDR]], align 8, !tbaa [[TBAA17]] // CHECK1-NEXT: [[TMP2:%.*]] = load ptr, ptr [[PARTIAL_SUM_ADDR]], align 8, !tbaa [[TBAA38]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_IV]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTCAPTURE_EXPR_]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_IV]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCAPTURE_EXPR_]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP3:%.*]] = load i32, ptr [[TMP0]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: store i32 [[TMP3]], ptr [[DOTCAPTURE_EXPR_]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTCAPTURE_EXPR_1]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCAPTURE_EXPR_1]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP4:%.*]] = load i32, ptr [[TMP1]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: store i32 [[TMP4]], ptr [[DOTCAPTURE_EXPR_1]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTCAPTURE_EXPR_2]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCAPTURE_EXPR_2]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP5:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[TMP6:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[SUB:%.*]] = sub i32 [[TMP5]], [[TMP6]] @@ -713,33 +713,33 @@ void test() { // CHECK1-NEXT: [[DIV:%.*]] = udiv i32 [[ADD]], 1 // CHECK1-NEXT: [[SUB4:%.*]] = sub i32 [[DIV]], 1 // CHECK1-NEXT: store i32 [[SUB4]], ptr [[DOTCAPTURE_EXPR_2]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP7:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: store i32 [[TMP7]], ptr [[I]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP8:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[TMP9:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_1]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP8]], [[TMP9]] // CHECK1-NEXT: br i1 [[CMP]], label [[OMP_PRECOND_THEN:%.*]], label [[OMP_PRECOND_END:%.*]] // CHECK1: omp.precond.then: -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_LB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_LB]]) #[[ATTR4]] // CHECK1-NEXT: store i32 0, ptr [[DOTOMP_LB]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_UB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_UB]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP10:%.*]] = load i32, ptr [[DOTCAPTURE_EXPR_2]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: store i32 [[TMP10]], ptr [[DOTOMP_UB]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] // CHECK1-NEXT: store i32 1, ptr [[DOTOMP_STRIDE]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] // CHECK1-NEXT: store i32 0, ptr [[DOTOMP_IS_LAST]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[PARTIAL_SUM5]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[REF_TMP]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[PARTIAL_SUM5]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP]]) #[[ATTR4]] // CHECK1-NEXT: store double 0.000000e+00, ptr [[REF_TMP]], align 8, !tbaa [[TBAA36]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[REF_TMP6]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP6]]) #[[ATTR4]] // CHECK1-NEXT: store double 0.000000e+00, ptr [[REF_TMP6]], align 8, !tbaa [[TBAA36]] // CHECK1-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(ptr nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]], ptr nonnull align 8 dereferenceable(8) [[REF_TMP]], ptr nonnull align 8 dereferenceable(8) [[REF_TMP6]]) #[[ATTR11]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[REF_TMP6]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[REF_TMP]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I7]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP6]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[I7]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP11:%.*]] = load ptr, ptr [[DOTGLOBAL_TID__ADDR]], align 8 // CHECK1-NEXT: [[TMP12:%.*]] = load i32, ptr [[TMP11]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: call void @__kmpc_for_static_init_4u(ptr @[[GLOB3]], i32 [[TMP12]], i32 33, ptr [[DOTOMP_IS_LAST]], ptr [[DOTOMP_LB]], ptr [[DOTOMP_UB]], ptr [[DOTOMP_STRIDE]], i32 1, i32 1) @@ -783,20 +783,20 @@ void test() { // CHECK1-NEXT: [[MUL:%.*]] = mul i32 [[TMP23]], 1 // CHECK1-NEXT: [[ADD13:%.*]] = add i32 [[TMP22]], [[MUL]] // CHECK1-NEXT: store i32 [[ADD13]], ptr [[I7]], align 4, !tbaa [[TBAA15]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[REF_TMP14]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[REF_TMP15]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP14]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP15]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP24:%.*]] = load i32, ptr [[I7]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[CONV:%.*]] = sitofp i32 [[TMP24]] to double // CHECK1-NEXT: store double [[CONV]], ptr [[REF_TMP15]], align 8, !tbaa [[TBAA36]] -// CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[REF_TMP16]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr [[REF_TMP16]]) #[[ATTR4]] // CHECK1-NEXT: [[TMP25:%.*]] = load i32, ptr [[I7]], align 4, !tbaa [[TBAA15]] // CHECK1-NEXT: [[CONV17:%.*]] = sitofp i32 [[TMP25]] to double // CHECK1-NEXT: store double [[CONV17]], ptr [[REF_TMP16]], align 8, !tbaa [[TBAA36]] // CHECK1-NEXT: call void @_ZNSt7complexIdEC1ERKdS2_(ptr nonnull align 8 dereferenceable(16) [[REF_TMP14]], ptr nonnull align 8 dereferenceable(8) [[REF_TMP15]], ptr nonnull align 8 dereferenceable(8) [[REF_TMP16]]) #[[ATTR11]] // CHECK1-NEXT: [[CALL:%.*]] = call nonnull align 8 dereferenceable(16) ptr @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(ptr nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]], ptr nonnull align 8 dereferenceable(16) [[REF_TMP14]]) #[[ATTR11]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[REF_TMP16]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[REF_TMP15]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[REF_TMP14]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP16]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP15]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[REF_TMP14]]) #[[ATTR4]] // CHECK1-NEXT: br label [[OMP_BODY_CONTINUE:%.*]] // CHECK1: omp.body.continue: // CHECK1-NEXT: br label [[OMP_INNER_FOR_INC:%.*]] @@ -830,18 +830,18 @@ void test() { // CHECK1-NEXT: [[CALL21:%.*]] = call nonnull align 8 dereferenceable(16) ptr @_ZNSt7complexIdEpLIdEERS0_RKS_IT_E(ptr nonnull align 8 dereferenceable(16) [[TMP2]], ptr nonnull align 8 dereferenceable(16) [[PARTIAL_SUM5]]) #[[ATTR11]] // CHECK1-NEXT: br label [[DOTOMP_REDUCTION_DONE]] // CHECK1: .omp.reduction.done: -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I7]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[PARTIAL_SUM5]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_UB]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_LB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[I7]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[PARTIAL_SUM5]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_IS_LAST]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_STRIDE]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_UB]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_LB]]) #[[ATTR4]] // CHECK1-NEXT: br label [[OMP_PRECOND_END]] // CHECK1: omp.precond.end: -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTCAPTURE_EXPR_2]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTCAPTURE_EXPR_1]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTCAPTURE_EXPR_]]) #[[ATTR4]] -// CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DOTOMP_IV]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCAPTURE_EXPR_2]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCAPTURE_EXPR_1]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCAPTURE_EXPR_]]) #[[ATTR4]] +// CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTOMP_IV]]) #[[ATTR4]] // CHECK1-NEXT: ret void // // diff --git a/flang/include/flang/Optimizer/Builder/FIRBuilder.h b/flang/include/flang/Optimizer/Builder/FIRBuilder.h index d8b6a9f87ab19..e3a44f147b4cd 100644 --- a/flang/include/flang/Optimizer/Builder/FIRBuilder.h +++ b/flang/include/flang/Optimizer/Builder/FIRBuilder.h @@ -944,16 +944,15 @@ void genDimInfoFromBox(fir::FirOpBuilder &builder, mlir::Location loc, llvm::SmallVectorImpl *strides); /// Generate an LLVM dialect lifetime start marker at the current insertion -/// point given an fir.alloca and its constant size in bytes. Returns the value -/// to be passed to the lifetime end marker. +/// point given an fir.alloca. Returns the value to be passed to the lifetime +/// end marker. mlir::Value genLifetimeStart(mlir::OpBuilder &builder, mlir::Location loc, - fir::AllocaOp alloc, int64_t size, - const mlir::DataLayout *dl); + fir::AllocaOp alloc, const mlir::DataLayout *dl); /// Generate an LLVM dialect lifetime end marker at the current insertion point -/// given an llvm.ptr value and the constant size in bytes of its storage. +/// given an llvm.ptr value. void genLifetimeEnd(mlir::OpBuilder &builder, mlir::Location loc, - mlir::Value mem, int64_t size); + mlir::Value mem); } // namespace fir::factory diff --git a/flang/lib/Optimizer/Builder/FIRBuilder.cpp b/flang/lib/Optimizer/Builder/FIRBuilder.cpp index 87a52ffc339f4..b6baefb67b4bf 100644 --- a/flang/lib/Optimizer/Builder/FIRBuilder.cpp +++ b/flang/lib/Optimizer/Builder/FIRBuilder.cpp @@ -1947,17 +1947,17 @@ void fir::factory::genDimInfoFromBox( mlir::Value fir::factory::genLifetimeStart(mlir::OpBuilder &builder, mlir::Location loc, - fir::AllocaOp alloc, int64_t size, + fir::AllocaOp alloc, const mlir::DataLayout *dl) { mlir::Type ptrTy = mlir::LLVM::LLVMPointerType::get( alloc.getContext(), getAllocaAddressSpace(dl)); mlir::Value cast = fir::ConvertOp::create(builder, loc, ptrTy, alloc.getResult()); - mlir::LLVM::LifetimeStartOp::create(builder, loc, size, cast); + mlir::LLVM::LifetimeStartOp::create(builder, loc, cast); return cast; } void fir::factory::genLifetimeEnd(mlir::OpBuilder &builder, mlir::Location loc, - mlir::Value cast, int64_t size) { - mlir::LLVM::LifetimeEndOp::create(builder, loc, size, cast); + mlir::Value cast) { + mlir::LLVM::LifetimeEndOp::create(builder, loc, cast); } diff --git a/flang/lib/Optimizer/Transforms/StackArrays.cpp b/flang/lib/Optimizer/Transforms/StackArrays.cpp index 0d131291feef3..72ea2a699b739 100644 --- a/flang/lib/Optimizer/Transforms/StackArrays.cpp +++ b/flang/lib/Optimizer/Transforms/StackArrays.cpp @@ -813,10 +813,10 @@ void AllocMemConversion::insertLifetimeMarkers( mlir::OpBuilder::InsertionGuard insertGuard(rewriter); rewriter.setInsertionPoint(oldAlloc); mlir::Value ptr = fir::factory::genLifetimeStart( - rewriter, newAlloc.getLoc(), newAlloc, *size, &*dl); + rewriter, newAlloc.getLoc(), newAlloc, &*dl); visitFreeMemOp(oldAlloc, [&](mlir::Operation *op) { rewriter.setInsertionPoint(op); - fir::factory::genLifetimeEnd(rewriter, op->getLoc(), ptr, *size); + fir::factory::genLifetimeEnd(rewriter, op->getLoc(), ptr); }); newAlloc->setAttr(attrName, rewriter.getUnitAttr()); } diff --git a/flang/test/Transforms/stack-arrays-lifetime.fir b/flang/test/Transforms/stack-arrays-lifetime.fir index 5b2faeba132c3..960ce9fad7b2d 100644 --- a/flang/test/Transforms/stack-arrays-lifetime.fir +++ b/flang/test/Transforms/stack-arrays-lifetime.fir @@ -39,15 +39,15 @@ func.func @_QPcst_alloca(%arg0: !fir.ref> {fir.bindc_name // CHECK-DAG: %[[VAL_0:.*]] = fir.alloca !fir.array<100000xf32> {bindc_name = ".tmp.array", fir.has_lifetime} // CHECK-DAG: %[[VAL_2:.*]] = fir.alloca !fir.array<100000xi32> {bindc_name = ".tmp.array", fir.has_lifetime} // CHECK: %[[VAL_9:.*]] = fir.convert %[[VAL_0]] : (!fir.ref>) -> !llvm.ptr -// CHECK: llvm.intr.lifetime.start 400000, %[[VAL_9]] : !llvm.ptr +// CHECK: llvm.intr.lifetime.start %[[VAL_9]] : !llvm.ptr // CHECK: fir.do_loop // CHECK: fir.call @_QPbar( -// CHECK: llvm.intr.lifetime.end 400000, %[[VAL_9]] : !llvm.ptr +// CHECK: llvm.intr.lifetime.end %[[VAL_9]] : !llvm.ptr // CHECK: %[[VAL_17:.*]] = fir.convert %[[VAL_2]] : (!fir.ref>) -> !llvm.ptr -// CHECK: llvm.intr.lifetime.start 400000, %[[VAL_17]] : !llvm.ptr +// CHECK: llvm.intr.lifetime.start %[[VAL_17]] : !llvm.ptr // CHECK: fir.do_loop // CHECK: fir.call @_QPibar( -// CHECK: llvm.intr.lifetime.end 400000, %[[VAL_17]] : !llvm.ptr +// CHECK: llvm.intr.lifetime.end %[[VAL_17]] : !llvm.ptr func.func @_QPdyn_alloca(%arg0: !fir.ref> {fir.bindc_name = "x"}, %arg1: !fir.ref {fir.bindc_name = "n"}) { diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst index 3a3a74f323a26..2fbca05bd8674 100644 --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -26730,7 +26730,7 @@ Syntax: :: - declare void @llvm.lifetime.start(i64 , ptr captures(none) ) + declare void @llvm.lifetime.start(ptr captures(none) ) Overview: """"""""" @@ -26741,11 +26741,8 @@ object's lifetime. Arguments: """""""""" -The first argument is a constant integer, which is ignored and will be removed -in the future. - -The second argument is either a pointer to an ``alloca`` instruction or -a ``poison`` value. +The argument is either a pointer to an ``alloca`` instruction or a ``poison`` +value. Semantics: """""""""" @@ -26774,7 +26771,7 @@ Syntax: :: - declare void @llvm.lifetime.end(i64 , ptr captures(none) ) + declare void @llvm.lifetime.end(ptr captures(none) ) Overview: """"""""" @@ -26785,11 +26782,8 @@ The '``llvm.lifetime.end``' intrinsic specifies the end of a Arguments: """""""""" -The first argument is a constant integer, which is ignored and will be removed -in the future. - -The second argument is either a pointer to an ``alloca`` instruction or -a ``poison`` value. +The argument is either a pointer to an ``alloca`` instruction or a ``poison`` +value. Semantics: """""""""" diff --git a/llvm/include/llvm/IR/IRBuilder.h b/llvm/include/llvm/IR/IRBuilder.h index d106dedf814e5..78f966d838ec2 100644 --- a/llvm/include/llvm/IR/IRBuilder.h +++ b/llvm/include/llvm/IR/IRBuilder.h @@ -812,15 +812,10 @@ class IRBuilderBase { LLVM_ABI CallInst *CreateFPMinimumReduce(Value *Src); /// Create a lifetime.start intrinsic. - /// - /// If the pointer isn't i8* it will be converted. - LLVM_ABI CallInst *CreateLifetimeStart(Value *Ptr, - ConstantInt *Size = nullptr); + LLVM_ABI CallInst *CreateLifetimeStart(Value *Ptr); /// Create a lifetime.end intrinsic. - /// - /// If the pointer isn't i8* it will be converted. - LLVM_ABI CallInst *CreateLifetimeEnd(Value *Ptr, ConstantInt *Size = nullptr); + LLVM_ABI CallInst *CreateLifetimeEnd(Value *Ptr); /// Create a call to invariant.start intrinsic. /// diff --git a/llvm/include/llvm/IR/Intrinsics.td b/llvm/include/llvm/IR/Intrinsics.td index 1a23276bc6ffb..e0ee12391b31d 100644 --- a/llvm/include/llvm/IR/Intrinsics.td +++ b/llvm/include/llvm/IR/Intrinsics.td @@ -1644,16 +1644,12 @@ def int_ucmp : DefaultAttrsIntrinsic< //===------------------------- Memory Use Markers -------------------------===// // -def int_lifetime_start : DefaultAttrsIntrinsic<[], - [llvm_i64_ty, llvm_anyptr_ty], - [IntrArgMemOnly, - NoCapture>, - ImmArg>]>; -def int_lifetime_end : DefaultAttrsIntrinsic<[], - [llvm_i64_ty, llvm_anyptr_ty], - [IntrArgMemOnly, - NoCapture>, - ImmArg>]>; +def int_lifetime_start + : DefaultAttrsIntrinsic<[], [llvm_anyptr_ty], + [IntrArgMemOnly, NoCapture>]>; +def int_lifetime_end + : DefaultAttrsIntrinsic<[], [llvm_anyptr_ty], + [IntrArgMemOnly, NoCapture>]>; def int_invariant_start : DefaultAttrsIntrinsic<[llvm_ptr_ty], [llvm_i64_ty, llvm_anyptr_ty], [IntrArgMemOnly, diff --git a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp index 2b0f212bff01a..67c2cfadb6533 100644 --- a/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp +++ b/llvm/lib/Analysis/MemoryDependenceAnalysis.cpp @@ -150,6 +150,10 @@ static ModRefInfo GetLocation(const Instruction *Inst, MemoryLocation &Loc, switch (II->getIntrinsicID()) { case Intrinsic::lifetime_start: case Intrinsic::lifetime_end: + Loc = MemoryLocation::getForArgument(II, 0, TLI); + // These intrinsics don't really modify the memory, but returning Mod + // will allow them to be handled conservatively. + return ModRefInfo::Mod; case Intrinsic::invariant_start: Loc = MemoryLocation::getForArgument(II, 1, TLI); // These intrinsics don't really modify the memory, but returning Mod @@ -441,11 +445,7 @@ MemDepResult MemoryDependenceResults::getSimplePointerDependencyFrom( Intrinsic::ID ID = II->getIntrinsicID(); switch (ID) { case Intrinsic::lifetime_start: { - // FIXME: This only considers queries directly on the invariant-tagged - // pointer, not on query pointers that are indexed off of them. It'd - // be nice to handle that at some point (the right approach is to use - // GetPointerBaseWithConstantOffset). - MemoryLocation ArgLoc = MemoryLocation::getAfter(II->getArgOperand(1)); + MemoryLocation ArgLoc = MemoryLocation::getAfter(II->getArgOperand(0)); if (BatchAA.isMustAlias(ArgLoc, MemLoc)) return MemDepResult::getDef(II); continue; diff --git a/llvm/lib/Analysis/MemoryLocation.cpp b/llvm/lib/Analysis/MemoryLocation.cpp index 28a264093af23..72b643c56a994 100644 --- a/llvm/lib/Analysis/MemoryLocation.cpp +++ b/llvm/lib/Analysis/MemoryLocation.cpp @@ -191,7 +191,7 @@ MemoryLocation MemoryLocation::getForArgument(const CallBase *Call, case Intrinsic::lifetime_start: case Intrinsic::lifetime_end: { - assert(ArgIdx == 1 && "Invalid argument index"); + assert(ArgIdx == 0 && "Invalid argument index"); auto *AI = dyn_cast(Arg); if (!AI) // lifetime of poison value. diff --git a/llvm/lib/Analysis/StackLifetime.cpp b/llvm/lib/Analysis/StackLifetime.cpp index abe4985544e40..1e20fca965ace 100644 --- a/llvm/lib/Analysis/StackLifetime.cpp +++ b/llvm/lib/Analysis/StackLifetime.cpp @@ -70,7 +70,7 @@ void StackLifetime::collectMarkers() { const IntrinsicInst *II = dyn_cast(&I); if (!II || !II->isLifetimeStartOrEnd()) continue; - const AllocaInst *AI = dyn_cast(II->getArgOperand(1)); + const AllocaInst *AI = dyn_cast(II->getArgOperand(0)); if (!AI) continue; auto It = AllocaNumbering.find(AI); diff --git a/llvm/lib/CodeGen/AtomicExpandPass.cpp b/llvm/lib/CodeGen/AtomicExpandPass.cpp index 3f3d5dc90711f..278dd6560e736 100644 --- a/llvm/lib/CodeGen/AtomicExpandPass.cpp +++ b/llvm/lib/CodeGen/AtomicExpandPass.cpp @@ -1915,7 +1915,6 @@ bool AtomicExpandImpl::expandAtomicOpToLibcall( // TODO: the "order" argument type is "int", not int32. So // getInt32Ty may be wrong if the arch uses e.g. 16-bit ints. - ConstantInt *SizeVal64 = ConstantInt::get(Type::getInt64Ty(Ctx), Size); assert(Ordering != AtomicOrdering::NotAtomic && "expect atomic MO"); Constant *OrderingVal = ConstantInt::get(Type::getInt32Ty(Ctx), (int)toCABI(Ordering)); @@ -2012,7 +2011,7 @@ bool AtomicExpandImpl::expandAtomicOpToLibcall( if (CASExpected) { AllocaCASExpected = AllocaBuilder.CreateAlloca(CASExpected->getType()); AllocaCASExpected->setAlignment(AllocaAlignment); - Builder.CreateLifetimeStart(AllocaCASExpected, SizeVal64); + Builder.CreateLifetimeStart(AllocaCASExpected); Builder.CreateAlignedStore(CASExpected, AllocaCASExpected, AllocaAlignment); Args.push_back(AllocaCASExpected); } @@ -2026,7 +2025,7 @@ bool AtomicExpandImpl::expandAtomicOpToLibcall( } else { AllocaValue = AllocaBuilder.CreateAlloca(ValueOperand->getType()); AllocaValue->setAlignment(AllocaAlignment); - Builder.CreateLifetimeStart(AllocaValue, SizeVal64); + Builder.CreateLifetimeStart(AllocaValue); Builder.CreateAlignedStore(ValueOperand, AllocaValue, AllocaAlignment); Args.push_back(AllocaValue); } @@ -2036,7 +2035,7 @@ bool AtomicExpandImpl::expandAtomicOpToLibcall( if (!CASExpected && HasResult && !UseSizedLibcall) { AllocaResult = AllocaBuilder.CreateAlloca(I->getType()); AllocaResult->setAlignment(AllocaAlignment); - Builder.CreateLifetimeStart(AllocaResult, SizeVal64); + Builder.CreateLifetimeStart(AllocaResult); Args.push_back(AllocaResult); } @@ -2069,7 +2068,7 @@ bool AtomicExpandImpl::expandAtomicOpToLibcall( // And then, extract the results... if (ValueOperand && !UseSizedLibcall) - Builder.CreateLifetimeEnd(AllocaValue, SizeVal64); + Builder.CreateLifetimeEnd(AllocaValue); if (CASExpected) { // The final result from the CAS is {load of 'expected' alloca, bool result @@ -2078,7 +2077,7 @@ bool AtomicExpandImpl::expandAtomicOpToLibcall( Value *V = PoisonValue::get(FinalResultTy); Value *ExpectedOut = Builder.CreateAlignedLoad( CASExpected->getType(), AllocaCASExpected, AllocaAlignment); - Builder.CreateLifetimeEnd(AllocaCASExpected, SizeVal64); + Builder.CreateLifetimeEnd(AllocaCASExpected); V = Builder.CreateInsertValue(V, ExpectedOut, 0); V = Builder.CreateInsertValue(V, Result, 1); I->replaceAllUsesWith(V); @@ -2089,7 +2088,7 @@ bool AtomicExpandImpl::expandAtomicOpToLibcall( else { V = Builder.CreateAlignedLoad(I->getType(), AllocaResult, AllocaAlignment); - Builder.CreateLifetimeEnd(AllocaResult, SizeVal64); + Builder.CreateLifetimeEnd(AllocaResult); } I->replaceAllUsesWith(V); } diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index bbfae570e1e1a..d30dfa72f0e9c 100644 --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -2209,7 +2209,7 @@ bool IRTranslator::translateKnownIntrinsic(const CallInst &CI, Intrinsic::ID ID, unsigned Op = ID == Intrinsic::lifetime_start ? TargetOpcode::LIFETIME_START : TargetOpcode::LIFETIME_END; - const AllocaInst *AI = dyn_cast(CI.getArgOperand(1)); + const AllocaInst *AI = dyn_cast(CI.getArgOperand(0)); if (!AI || !AI->isStaticAlloca()) return true; diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index f5f5c1466a7be..0d1e95450a6b7 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -7597,7 +7597,7 @@ void SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, if (TM.getOptLevel() == CodeGenOptLevel::None) return; - const AllocaInst *LifetimeObject = dyn_cast(I.getArgOperand(1)); + const AllocaInst *LifetimeObject = dyn_cast(I.getArgOperand(0)); if (!LifetimeObject) return; diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp index 71591074cea50..35f00aed41041 100644 --- a/llvm/lib/IR/AutoUpgrade.cpp +++ b/llvm/lib/IR/AutoUpgrade.cpp @@ -1311,14 +1311,15 @@ static bool upgradeIntrinsicFunction1(Function *F, Function *&NewFn, } break; case 'l': - if (Name.starts_with("lifetime.start") || - Name.starts_with("lifetime.end")) { - // Unless remangling is required, do not upgrade the function declaration, - // but do upgrade the calls. - if (auto Result = llvm::Intrinsic::remangleIntrinsicFunction(F)) - NewFn = *Result; - else - NewFn = F; + if ((Name.starts_with("lifetime.start") || + Name.starts_with("lifetime.end")) && + F->arg_size() == 2) { + rename(F); + NewFn = Intrinsic::getOrInsertDeclaration( + F->getParent(), + Name.starts_with("lifetime.start") ? Intrinsic::lifetime_start + : Intrinsic::lifetime_end, + F->getArg(0)->getType()); return true; } break; @@ -5133,21 +5134,20 @@ void llvm::UpgradeIntrinsicCall(CallBase *CI, Function *NewFn) { case Intrinsic::lifetime_start: case Intrinsic::lifetime_end: { - Value *Size = CI->getArgOperand(0); - Value *Ptr = CI->getArgOperand(1); - if (isa(Ptr)) { + if (CI->arg_size() != 2) { DefaultCase(); return; } + Value *Ptr = CI->getArgOperand(1); // Try to strip pointer casts, such that the lifetime works on an alloca. Ptr = Ptr->stripPointerCasts(); if (isa(Ptr)) { // Don't use NewFn, as we might have looked through an addrspacecast. if (NewFn->getIntrinsicID() == Intrinsic::lifetime_start) - NewCall = Builder.CreateLifetimeStart(Ptr, cast(Size)); + NewCall = Builder.CreateLifetimeStart(Ptr); else - NewCall = Builder.CreateLifetimeEnd(Ptr, cast(Size)); + NewCall = Builder.CreateLifetimeEnd(Ptr); break; } diff --git a/llvm/lib/IR/IRBuilder.cpp b/llvm/lib/IR/IRBuilder.cpp index 49c6dc7f401ad..614c3a9abb8d0 100644 --- a/llvm/lib/IR/IRBuilder.cpp +++ b/llvm/lib/IR/IRBuilder.cpp @@ -411,28 +411,16 @@ CallInst *IRBuilderBase::CreateFPMinimumReduce(Value *Src) { return getReductionIntrinsic(Intrinsic::vector_reduce_fminimum, Src); } -CallInst *IRBuilderBase::CreateLifetimeStart(Value *Ptr, ConstantInt *Size) { +CallInst *IRBuilderBase::CreateLifetimeStart(Value *Ptr) { assert(isa(Ptr->getType()) && "lifetime.start only applies to pointers."); - if (!Size) - Size = getInt64(-1); - else - assert(Size->getType() == getInt64Ty() && - "lifetime.start requires the size to be an i64"); - Value *Ops[] = { Size, Ptr }; - return CreateIntrinsic(Intrinsic::lifetime_start, {Ptr->getType()}, Ops); + return CreateIntrinsic(Intrinsic::lifetime_start, {Ptr->getType()}, {Ptr}); } -CallInst *IRBuilderBase::CreateLifetimeEnd(Value *Ptr, ConstantInt *Size) { +CallInst *IRBuilderBase::CreateLifetimeEnd(Value *Ptr) { assert(isa(Ptr->getType()) && "lifetime.end only applies to pointers."); - if (!Size) - Size = getInt64(-1); - else - assert(Size->getType() == getInt64Ty() && - "lifetime.end requires the size to be an i64"); - Value *Ops[] = { Size, Ptr }; - return CreateIntrinsic(Intrinsic::lifetime_end, {Ptr->getType()}, Ops); + return CreateIntrinsic(Intrinsic::lifetime_end, {Ptr->getType()}, {Ptr}); } CallInst *IRBuilderBase::CreateInvariantStart(Value *Ptr, ConstantInt *Size) { diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp index ca3f148f881a4..f5dcb5e9b7d4f 100644 --- a/llvm/lib/IR/Verifier.cpp +++ b/llvm/lib/IR/Verifier.cpp @@ -6770,7 +6770,7 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) { } case Intrinsic::lifetime_start: case Intrinsic::lifetime_end: { - Value *Ptr = Call.getArgOperand(1); + Value *Ptr = Call.getArgOperand(0); Check(isa(Ptr) || isa(Ptr), "llvm.lifetime.start/end can only be used on alloca or poison", &Call); diff --git a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp index f136a18421524..a67bd42aa16e0 100644 --- a/llvm/lib/Target/AArch64/AArch64StackTagging.cpp +++ b/llvm/lib/Target/AArch64/AArch64StackTagging.cpp @@ -585,8 +585,7 @@ bool AArch64StackTagging::runOnFunction(Function &Fn) { ClMaxLifetimes); if (StandardLifetime) { IntrinsicInst *Start = Info.LifetimeStart[0]; - uint64_t Size = - cast(Start->getArgOperand(0))->getZExtValue(); + uint64_t Size = *Info.AI->getAllocationSize(*DL); Size = alignTo(Size, kTagGranuleSize); tagAlloca(AI, Start->getNextNode(), TagPCall, Size); diff --git a/llvm/lib/Target/SPIRV/SPIRVPrepareFunctions.cpp b/llvm/lib/Target/SPIRV/SPIRVPrepareFunctions.cpp index 74aec4fd9b358..2b34f61fa2434 100644 --- a/llvm/lib/Target/SPIRV/SPIRVPrepareFunctions.cpp +++ b/llvm/lib/Target/SPIRV/SPIRVPrepareFunctions.cpp @@ -359,18 +359,15 @@ static void lowerExpectAssume(IntrinsicInst *II) { } } -static bool toSpvOverloadedIntrinsic(IntrinsicInst *II, Intrinsic::ID NewID, - ArrayRef OpNos) { - Function *F = nullptr; - if (OpNos.empty()) { - F = Intrinsic::getOrInsertDeclaration(II->getModule(), NewID); - } else { - SmallVector Tys; - for (unsigned OpNo : OpNos) - Tys.push_back(II->getOperand(OpNo)->getType()); - F = Intrinsic::getOrInsertDeclaration(II->getModule(), NewID, Tys); - } - II->setCalledFunction(F); +static bool toSpvLifetimeIntrinsic(IntrinsicInst *II, Intrinsic::ID NewID) { + IRBuilder<> Builder(II); + auto *Alloca = cast(II->getArgOperand(0)); + std::optional Size = + Alloca->getAllocationSize(Alloca->getDataLayout()); + Value *SizeVal = Builder.getInt64(Size ? *Size : -1); + Builder.CreateIntrinsic(NewID, Alloca->getType(), + {SizeVal, II->getArgOperand(0)}); + II->eraseFromParent(); return true; } @@ -406,8 +403,8 @@ bool SPIRVPrepareFunctions::substituteIntrinsicCalls(Function *F) { break; case Intrinsic::lifetime_start: if (!STI.isShader()) { - Changed |= toSpvOverloadedIntrinsic( - II, Intrinsic::SPVIntrinsics::spv_lifetime_start, {1}); + Changed |= toSpvLifetimeIntrinsic( + II, Intrinsic::SPVIntrinsics::spv_lifetime_start); } else { II->eraseFromParent(); Changed = true; @@ -415,8 +412,8 @@ bool SPIRVPrepareFunctions::substituteIntrinsicCalls(Function *F) { break; case Intrinsic::lifetime_end: if (!STI.isShader()) { - Changed |= toSpvOverloadedIntrinsic( - II, Intrinsic::SPVIntrinsics::spv_lifetime_end, {1}); + Changed |= toSpvLifetimeIntrinsic( + II, Intrinsic::SPVIntrinsics::spv_lifetime_end); } else { II->eraseFromParent(); Changed = true; diff --git a/llvm/lib/Transforms/Coroutines/CoroFrame.cpp b/llvm/lib/Transforms/Coroutines/CoroFrame.cpp index 332050860e05b..b775c43460190 100644 --- a/llvm/lib/Transforms/Coroutines/CoroFrame.cpp +++ b/llvm/lib/Transforms/Coroutines/CoroFrame.cpp @@ -1821,7 +1821,7 @@ static void sinkLifetimeStartMarkers(Function &F, coro::Shape &Shape, // only used outside the region. if (Valid && Lifetimes.size() != 0) { auto *NewLifetime = Lifetimes[0]->clone(); - NewLifetime->replaceUsesOfWith(NewLifetime->getOperand(1), AI); + NewLifetime->replaceUsesOfWith(NewLifetime->getOperand(0), AI); NewLifetime->insertBefore(DomBB->getTerminator()->getIterator()); // All the outsided lifetime.start markers are no longer necessary. diff --git a/llvm/lib/Transforms/IPO/ExpandVariadics.cpp b/llvm/lib/Transforms/IPO/ExpandVariadics.cpp index da60f521bf084..6ed3b62872ddb 100644 --- a/llvm/lib/Transforms/IPO/ExpandVariadics.cpp +++ b/llvm/lib/Transforms/IPO/ExpandVariadics.cpp @@ -226,13 +226,6 @@ class ExpandVariadics : public ModulePass { /*IsVarArgs=*/false); } - static ConstantInt *sizeOfAlloca(LLVMContext &Ctx, const DataLayout &DL, - AllocaInst *Alloced) { - std::optional AllocaTypeSize = Alloced->getAllocationSize(DL); - uint64_t AsInt = AllocaTypeSize ? AllocaTypeSize->getFixedValue() : 0; - return ConstantInt::get(Type::getInt64Ty(Ctx), AsInt); - } - bool expansionApplicableToFunction(Module &M, Function *F) { if (F->isIntrinsic() || !F->isVarArg() || F->hasFnAttribute(Attribute::Naked)) @@ -577,8 +570,7 @@ ExpandVariadics::defineVariadicWrapper(Module &M, IRBuilder<> &Builder, AllocaInst *VaListInstance = Builder.CreateAlloca(VaListTy, nullptr, "va_start"); - Builder.CreateLifetimeStart(VaListInstance, - sizeOfAlloca(Ctx, DL, VaListInstance)); + Builder.CreateLifetimeStart(VaListInstance); Builder.CreateIntrinsic(Intrinsic::vastart, {DL.getAllocaPtrType(Ctx)}, {VaListInstance}); @@ -595,8 +587,7 @@ ExpandVariadics::defineVariadicWrapper(Module &M, IRBuilder<> &Builder, Builder.CreateIntrinsic(Intrinsic::vaend, {DL.getAllocaPtrType(Ctx)}, {VaListInstance}); - Builder.CreateLifetimeEnd(VaListInstance, - sizeOfAlloca(Ctx, DL, VaListInstance)); + Builder.CreateLifetimeEnd(VaListInstance); if (Result->getType()->isVoidTy()) Builder.CreateRetVoid(); @@ -746,7 +737,7 @@ bool ExpandVariadics::expandCall(Module &M, IRBuilder<> &Builder, CallBase *CB, // Initialize the fields in the struct Builder.SetInsertPoint(CB); - Builder.CreateLifetimeStart(Alloced, sizeOfAlloca(Ctx, DL, Alloced)); + Builder.CreateLifetimeStart(Alloced); Frame.initializeStructAlloca(DL, Builder, Alloced); const unsigned NumArgs = FuncType->getNumParams(); @@ -762,7 +753,7 @@ bool ExpandVariadics::expandCall(Module &M, IRBuilder<> &Builder, CallBase *CB, Builder.SetCurrentDebugLocation(CB->getStableDebugLoc()); VaList = Builder.CreateAlloca(VaListTy, nullptr, "va_argument"); Builder.SetInsertPoint(CB); - Builder.CreateLifetimeStart(VaList, sizeOfAlloca(Ctx, DL, VaList)); + Builder.CreateLifetimeStart(VaList); } Builder.SetInsertPoint(CB); Args.push_back(ABI->initializeVaList(M, Ctx, Builder, VaList, Alloced)); @@ -802,9 +793,9 @@ bool ExpandVariadics::expandCall(Module &M, IRBuilder<> &Builder, CallBase *CB, } if (VaList) - Builder.CreateLifetimeEnd(VaList, sizeOfAlloca(Ctx, DL, VaList)); + Builder.CreateLifetimeEnd(VaList); - Builder.CreateLifetimeEnd(Alloced, sizeOfAlloca(Ctx, DL, Alloced)); + Builder.CreateLifetimeEnd(Alloced); NewCB->setAttributes(PAL); NewCB->takeName(CB); diff --git a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp index 8da65c597116f..50258af5e26c3 100644 --- a/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/AddressSanitizer.cpp @@ -1211,23 +1211,19 @@ struct FunctionStackPoisoner : public InstVisitor { return; if (!II.isLifetimeStartOrEnd()) return; - // Found lifetime intrinsic, add ASan instrumentation if necessary. - auto *Size = cast(II.getArgOperand(0)); - // If size argument is undefined, don't do anything. - if (Size->isMinusOne()) return; - // Check that size doesn't saturate uint64_t and can - // be stored in IntptrTy. - const uint64_t SizeValue = Size->getValue().getLimitedValue(); - if (SizeValue == ~0ULL || - !ConstantInt::isValueValidForType(IntptrTy, SizeValue)) - return; // Find alloca instruction that corresponds to llvm.lifetime argument. - AllocaInst *AI = dyn_cast(II.getArgOperand(1)); + AllocaInst *AI = dyn_cast(II.getArgOperand(0)); // We're interested only in allocas we can handle. if (!AI || !ASan.isInterestingAlloca(*AI)) return; + + std::optional Size = AI->getAllocationSize(AI->getDataLayout()); + // Check that size is known and can be stored in IntptrTy. + if (!Size || !ConstantInt::isValueValidForType(IntptrTy, *Size)) + return; + bool DoPoison = (ID == Intrinsic::lifetime_end); - AllocaPoisonCall APC = {&II, AI, SizeValue, DoPoison}; + AllocaPoisonCall APC = {&II, AI, *Size, DoPoison}; if (AI->isStaticAlloca()) StaticAllocaPoisonCallVec.push_back(APC); else if (ClInstrumentDynamicAllocas) diff --git a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp index bcb90d6523c72..fc34d14259d1f 100644 --- a/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/HWAddressSanitizer.cpp @@ -1469,22 +1469,6 @@ void HWAddressSanitizer::instrumentStack(memtag::StackInfo &SInfo, size_t Size = memtag::getAllocaSizeInBytes(*AI); size_t AlignedSize = alignTo(Size, Mapping.getObjectAlignment()); - auto HandleLifetime = [&](IntrinsicInst *II) { - // Set the lifetime intrinsic to cover the whole alloca. This reduces the - // set of assumptions we need to make about the lifetime. Without this we - // would need to ensure that we can track the lifetime pointer to a - // constant offset from the alloca, and would still need to change the - // size to include the extra alignment we use for the untagging to make - // the size consistent. - // - // The check for standard lifetime below makes sure that we have exactly - // one set of start / end in any execution (i.e. the ends are not - // reachable from each other), so this will not cause any problems. - II->setArgOperand(0, ConstantInt::get(Int64Ty, AlignedSize)); - }; - llvm::for_each(Info.LifetimeStart, HandleLifetime); - llvm::for_each(Info.LifetimeEnd, HandleLifetime); - AI->replaceUsesWithIf(Replacement, [AILong](const Use &U) { auto *User = U.getUser(); return User != AILong && !isa(User); diff --git a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp index 7d3c940c0065f..6e8138725375a 100644 --- a/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp @@ -3301,7 +3301,7 @@ struct MemorySanitizerVisitor : public InstVisitor { void handleLifetimeStart(IntrinsicInst &I) { if (!PoisonStack) return; - AllocaInst *AI = dyn_cast(I.getArgOperand(1)); + AllocaInst *AI = dyn_cast(I.getArgOperand(0)); if (AI) LifetimeStartList.push_back(std::make_pair(&I, AI)); } diff --git a/llvm/lib/Transforms/Instrumentation/TypeSanitizer.cpp b/llvm/lib/Transforms/Instrumentation/TypeSanitizer.cpp index 4edf25c054b1d..9471ae3a6c4e9 100644 --- a/llvm/lib/Transforms/Instrumentation/TypeSanitizer.cpp +++ b/llvm/lib/Transforms/Instrumentation/TypeSanitizer.cpp @@ -818,12 +818,12 @@ bool TypeSanitizer::instrumentMemInst(Value *V, Instruction *ShadowBase, } } } else if (auto *II = dyn_cast(I)) { - auto *AI = dyn_cast(II->getArgOperand(1)); + auto *AI = dyn_cast(II->getArgOperand(0)); if (!AI) return false; Size = GetAllocaSize(AI); - Dest = II->getArgOperand(1); + Dest = II->getArgOperand(0); } else if (auto *AI = dyn_cast(I)) { // We need to clear the types for new stack allocations (or else we might // read stale type information from a previous function execution). diff --git a/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp b/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp index 9b8718035df62..f46d54b463171 100644 --- a/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp +++ b/llvm/lib/Transforms/Scalar/DeadStoreElimination.cpp @@ -1363,7 +1363,7 @@ struct DSEState { if (auto *CB = dyn_cast(I)) { if (CB->getIntrinsicID() == Intrinsic::lifetime_end) return { - std::make_pair(MemoryLocation::getForArgument(CB, 1, &TLI), false)}; + std::make_pair(MemoryLocation::getForArgument(CB, 0, &TLI), false)}; if (Value *FreedOp = getFreedOperand(CB, &TLI)) return {std::make_pair(MemoryLocation::getAfter(FreedOp), true)}; } diff --git a/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp b/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp index 85ee824b67121..a097d338a42ca 100644 --- a/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp +++ b/llvm/lib/Transforms/Scalar/InferAddressSpaces.cpp @@ -434,7 +434,7 @@ bool InferAddressSpacesImpl::rewriteIntrinsicOperands(IntrinsicInst *II, NewV = NewV->stripPointerCasts(); Function *NewDecl = Intrinsic::getOrInsertDeclaration( M, II->getIntrinsicID(), {NewV->getType()}); - II->setArgOperand(1, NewV); + II->setArgOperand(0, NewV); II->setCalledFunction(NewDecl); return true; } @@ -491,7 +491,7 @@ void InferAddressSpacesImpl::collectRewritableIntrinsicOperands( } case Intrinsic::lifetime_start: case Intrinsic::lifetime_end: { - appendsFlatAddressExpressionToPostorderStack(II->getArgOperand(1), + appendsFlatAddressExpressionToPostorderStack(II->getArgOperand(0), PostorderStack, Visited); break; } diff --git a/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp b/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp index b3bffeb7ea412..fcdb8a93a3e31 100644 --- a/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp +++ b/llvm/lib/Transforms/Scalar/LowerMatrixIntrinsics.cpp @@ -2166,7 +2166,7 @@ class LowerMatrixIntrinsics { // If the loads don't alias the lifetime.end, it won't interfere with // fusion. - MemoryLocation EndLoc = MemoryLocation::getForArgument(End, 1, nullptr); + MemoryLocation EndLoc = MemoryLocation::getForArgument(End, 0, nullptr); if (!EndLoc.Ptr) continue; if (AA->isNoAlias(Load0Loc, EndLoc) && AA->isNoAlias(Load1Loc, EndLoc)) diff --git a/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp b/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp index 79721dc5f39f0..f237322f90455 100644 --- a/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp +++ b/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp @@ -915,7 +915,7 @@ bool MemCpyOptPass::performCallSlotOptzn(Instruction *cpyLoad, // move the bitcast as well, which we don't handle. if (SkippedLifetimeStart) { auto *LifetimeArg = - dyn_cast(SkippedLifetimeStart->getOperand(1)); + dyn_cast(SkippedLifetimeStart->getOperand(0)); if (LifetimeArg && LifetimeArg->getParent() == C->getParent() && C->comesBefore(LifetimeArg)) return false; @@ -1010,7 +1010,7 @@ bool MemCpyOptPass::performCallSlotOptzn(Instruction *cpyLoad, // Lifetime of srcAlloca ends at lifetime.end. if (auto *II = dyn_cast(&I)) { if (II->getIntrinsicID() == Intrinsic::lifetime_end && - II->getArgOperand(1) == srcAlloca) + II->getArgOperand(0) == srcAlloca) break; } @@ -1393,7 +1393,7 @@ static bool hasUndefContents(MemorySSA *MSSA, BatchAAResults &AA, Value *V, if (auto *II = dyn_cast_or_null(Def->getMemoryInst())) if (II->getIntrinsicID() == Intrinsic::lifetime_start) if (auto *Alloca = dyn_cast(getUnderlyingObject(V))) - return II->getArgOperand(1) == Alloca; + return II->getArgOperand(0) == Alloca; return false; } diff --git a/llvm/lib/Transforms/Scalar/NewGVN.cpp b/llvm/lib/Transforms/Scalar/NewGVN.cpp index 1a52af1045d5c..40eeeb252d8ff 100644 --- a/llvm/lib/Transforms/Scalar/NewGVN.cpp +++ b/llvm/lib/Transforms/Scalar/NewGVN.cpp @@ -1535,7 +1535,7 @@ NewGVN::performSymbolicLoadCoercion(Type *LoadType, Value *LoadPtr, if (auto *II = dyn_cast(DepInst)) { if (II->getIntrinsicID() == Intrinsic::lifetime_start) { - auto *LifetimePtr = II->getOperand(1); + auto *LifetimePtr = II->getOperand(0); if (LoadPtr == lookupOperandLeader(LifetimePtr) || AA->isMustAlias(LoadPtr, LifetimePtr)) return createConstantExpression(UndefValue::get(LoadType)); diff --git a/llvm/lib/Transforms/Scalar/SROA.cpp b/llvm/lib/Transforms/Scalar/SROA.cpp index 03d9f32aa3f03..d6e27aa20730b 100644 --- a/llvm/lib/Transforms/Scalar/SROA.cpp +++ b/llvm/lib/Transforms/Scalar/SROA.cpp @@ -1260,10 +1260,7 @@ class AllocaSlices::SliceBuilder : public PtrUseVisitor { return PI.setAborted(&II); if (II.isLifetimeStartOrEnd()) { - ConstantInt *Length = cast(II.getArgOperand(0)); - uint64_t Size = std::min(AllocSize - Offset.getLimitedValue(), - Length->getLimitedValue()); - insertUse(II, Offset, Size, true); + insertUse(II, Offset, AllocSize, true); return; } @@ -3614,30 +3611,14 @@ class AllocaSliceRewriter : public InstVisitor { return true; } - assert(II.getArgOperand(1) == OldPtr); - // Lifetime intrinsics are only promotable if they cover the whole alloca. - // Therefore, we drop lifetime intrinsics which don't cover the whole - // alloca. - // (In theory, intrinsics which partially cover an alloca could be - // promoted, but PromoteMemToReg doesn't handle that case.) - // FIXME: Check whether the alloca is promotable before dropping the - // lifetime intrinsics? - if (NewBeginOffset != NewAllocaBeginOffset || - NewEndOffset != NewAllocaEndOffset) - return true; - - ConstantInt *Size = - ConstantInt::get(cast(II.getArgOperand(0)->getType()), - NewEndOffset - NewBeginOffset); - // Lifetime intrinsics always expect an i8* so directly get such a pointer - // for the new alloca slice. + assert(II.getArgOperand(0) == OldPtr); Type *PointerTy = IRB.getPtrTy(OldPtr->getType()->getPointerAddressSpace()); Value *Ptr = getNewAllocaSlicePtr(IRB, PointerTy); Value *New; if (II.getIntrinsicID() == Intrinsic::lifetime_start) - New = IRB.CreateLifetimeStart(Ptr, Size); + New = IRB.CreateLifetimeStart(Ptr); else - New = IRB.CreateLifetimeEnd(Ptr, Size); + New = IRB.CreateLifetimeEnd(Ptr); (void)New; LLVM_DEBUG(dbgs() << " to: " << *New << "\n"); diff --git a/llvm/lib/Transforms/Utils/CodeExtractor.cpp b/llvm/lib/Transforms/Utils/CodeExtractor.cpp index 7a9dd37b72205..bbd1ed6a3ab2d 100644 --- a/llvm/lib/Transforms/Utils/CodeExtractor.cpp +++ b/llvm/lib/Transforms/Utils/CodeExtractor.cpp @@ -1099,7 +1099,7 @@ static void eraseLifetimeMarkersOnInputs(const SetVector &Blocks, // Get the memory operand of the lifetime marker. If the underlying // object is a sunk alloca, or is otherwise defined in the extraction // region, the lifetime marker must not be erased. - Value *Mem = II->getOperand(1)->stripInBoundsOffsets(); + Value *Mem = II->getOperand(0); if (SunkAllocas.count(Mem) || definedInRegion(Blocks, Mem)) continue; @@ -1115,8 +1115,6 @@ static void eraseLifetimeMarkersOnInputs(const SetVector &Blocks, static void insertLifetimeMarkersSurroundingCall( Module *M, ArrayRef LifetimesStart, ArrayRef LifetimesEnd, CallInst *TheCall) { - LLVMContext &Ctx = M->getContext(); - auto NegativeOne = ConstantInt::getSigned(Type::getInt64Ty(Ctx), -1); Instruction *Term = TheCall->getParent()->getTerminator(); // Emit lifetime markers for the pointers given in \p Objects. Insert the @@ -1130,7 +1128,7 @@ static void insertLifetimeMarkersSurroundingCall( Function *Func = Intrinsic::getOrInsertDeclaration(M, MarkerFunc, Mem->getType()); - auto Marker = CallInst::Create(Func, {NegativeOne, Mem}); + auto Marker = CallInst::Create(Func, Mem); if (InsertBefore) Marker->insertBefore(TheCall->getIterator()); else diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp index 59a47a9bb0d3e..fa3c467dd12b9 100644 --- a/llvm/lib/Transforms/Utils/InlineFunction.cpp +++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp @@ -3004,31 +3004,11 @@ void llvm::InlineFunctionImpl(CallBase &CB, InlineFunctionInfo &IFI, if (hasLifetimeMarkers(AI)) continue; - // Try to determine the size of the allocation. - ConstantInt *AllocaSize = nullptr; - if (ConstantInt *AIArraySize = - dyn_cast(AI->getArraySize())) { - auto &DL = Caller->getDataLayout(); - Type *AllocaType = AI->getAllocatedType(); - TypeSize AllocaTypeSize = DL.getTypeAllocSize(AllocaType); - uint64_t AllocaArraySize = AIArraySize->getLimitedValue(); - - // Don't add markers for zero-sized allocas. - if (AllocaArraySize == 0) - continue; - - // Check that array size doesn't saturate uint64_t and doesn't - // overflow when it's multiplied by type size. - if (!AllocaTypeSize.isScalable() && - AllocaArraySize != std::numeric_limits::max() && - std::numeric_limits::max() / AllocaArraySize >= - AllocaTypeSize.getFixedValue()) { - AllocaSize = ConstantInt::get(Type::getInt64Ty(AI->getContext()), - AllocaArraySize * AllocaTypeSize); - } - } + std::optional Size = AI->getAllocationSize(AI->getDataLayout()); + if (Size && Size->isZero()) + continue; - builder.CreateLifetimeStart(AI, AllocaSize); + builder.CreateLifetimeStart(AI); for (ReturnInst *RI : Returns) { // Don't insert llvm.lifetime.end calls between a musttail or deoptimize // call and a return. The return kills all local allocas. @@ -3038,7 +3018,7 @@ void llvm::InlineFunctionImpl(CallBase &CB, InlineFunctionInfo &IFI, if (InlinedDeoptimizeCalls && RI->getParent()->getTerminatingDeoptimizeCall()) continue; - IRBuilder<>(RI).CreateLifetimeEnd(AI, AllocaSize); + IRBuilder<>(RI).CreateLifetimeEnd(AI); } } } diff --git a/llvm/lib/Transforms/Utils/Local.cpp b/llvm/lib/Transforms/Utils/Local.cpp index 2619e73f7fc8a..b559212de71d7 100644 --- a/llvm/lib/Transforms/Utils/Local.cpp +++ b/llvm/lib/Transforms/Utils/Local.cpp @@ -481,7 +481,7 @@ bool llvm::wouldInstructionBeTriviallyDead(const Instruction *I, return true; if (II->isLifetimeStartOrEnd()) { - auto *Arg = II->getArgOperand(1); + auto *Arg = II->getArgOperand(0); if (isa(Arg)) return true; diff --git a/llvm/lib/Transforms/Utils/MemoryTaggingSupport.cpp b/llvm/lib/Transforms/Utils/MemoryTaggingSupport.cpp index 472c03f7fc6ca..1f59b1782c709 100644 --- a/llvm/lib/Transforms/Utils/MemoryTaggingSupport.cpp +++ b/llvm/lib/Transforms/Utils/MemoryTaggingSupport.cpp @@ -155,7 +155,7 @@ void StackInfoBuilder::visit(OptimizationRemarkEmitter &ORE, return; } if (auto *II = dyn_cast(&Inst)) { - AllocaInst *AI = dyn_cast(II->getArgOperand(1)); + AllocaInst *AI = dyn_cast(II->getArgOperand(0)); if (!AI || getAllocaInterestingness(*AI) != AllocaInterestingness::kInteresting) return; diff --git a/llvm/test/Analysis/BasicAA/modref.ll b/llvm/test/Analysis/BasicAA/modref.ll index 1aab28f3f1871..4a91feeafc6cd 100644 --- a/llvm/test/Analysis/BasicAA/modref.ll +++ b/llvm/test/Analysis/BasicAA/modref.ll @@ -2,7 +2,7 @@ ; RUN: opt < %s -aa-pipeline=basic-aa -passes=gvn,dse -S | FileCheck %s target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128" -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @external(ptr) @@ -71,7 +71,7 @@ define void @test3(i8 %X) { ; CHECK-LABEL: @test3( ; CHECK-NEXT: [[P:%.*]] = alloca i64, align 8 ; CHECK-NEXT: [[P2:%.*]] = getelementptr i8, ptr [[P]], i32 2 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[P]]) ; CHECK-NEXT: store i8 2, ptr [[P2]], align 1 ; CHECK-NEXT: call void @external(ptr [[P]]) ; CHECK-NEXT: ret void @@ -81,7 +81,7 @@ define void @test3(i8 %X) { %P2 = getelementptr i8, ptr %P, i32 2 store i8 %Y, ptr %P2 ;; Not read by lifetime.end, should be removed. - call void @llvm.lifetime.end.p0(i64 1, ptr %P) + call void @llvm.lifetime.end.p0(ptr %P) store i8 2, ptr %P2 call void @external(ptr %P) ret void @@ -90,7 +90,7 @@ define void @test3(i8 %X) { define void @test3a(i8 %X) { ; CHECK-LABEL: @test3a( ; CHECK-NEXT: [[P:%.*]] = alloca i64, align 8 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 10, ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[P]]) ; CHECK-NEXT: ret void ; %P = alloca i64 @@ -98,7 +98,7 @@ define void @test3a(i8 %X) { %P2 = getelementptr i8, ptr %P, i32 2 store i8 %Y, ptr %P2 - call void @llvm.lifetime.end.p0(i64 10, ptr %P) + call void @llvm.lifetime.end.p0(ptr %P) ret void } diff --git a/llvm/test/Analysis/BasicAA/phi-values-usage.ll b/llvm/test/Analysis/BasicAA/phi-values-usage.ll index 43df41c916418..680e1df9c68b9 100644 --- a/llvm/test/Analysis/BasicAA/phi-values-usage.ll +++ b/llvm/test/Analysis/BasicAA/phi-values-usage.ll @@ -14,7 +14,7 @@ target datalayout = "p:8:8-n8" declare void @otherfn(ptr) declare i32 @__gxx_personality_v0(...) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) @c = external global ptr, align 1 ; This function is one where if we didn't free basicaa after memcpyopt then the @@ -65,7 +65,7 @@ for.body: ; preds = %for.cond br label %for.cond for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 1, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) %1 = load ptr, ptr %d.0, align 1 store ptr %1, ptr @c, align 1 ret void diff --git a/llvm/test/Analysis/CallGraph/ignore-assumelike-calls.ll b/llvm/test/Analysis/CallGraph/ignore-assumelike-calls.ll index 1c9d20193869e..b93a2a0d505a7 100644 --- a/llvm/test/Analysis/CallGraph/ignore-assumelike-calls.ll +++ b/llvm/test/Analysis/CallGraph/ignore-assumelike-calls.ll @@ -29,7 +29,7 @@ define internal void @used_by_lifetime() { entry: %a = alloca i8 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) ret void } @@ -55,6 +55,6 @@ define internal void @other_cast_intrinsic_use() { ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @llvm.memset.p0.i64(ptr, i8, i64, i1 immarg) declare void @llvm.memset.p1.i64(ptr addrspace(1), i8, i64, i1 immarg) diff --git a/llvm/test/Analysis/CostModel/SystemZ/intrinsic-cost-crash.ll b/llvm/test/Analysis/CostModel/SystemZ/intrinsic-cost-crash.ll index ecc7fc8fdb98a..245e8f70df8d6 100644 --- a/llvm/test/Analysis/CostModel/SystemZ/intrinsic-cost-crash.ll +++ b/llvm/test/Analysis/CostModel/SystemZ/intrinsic-cost-crash.ll @@ -23,7 +23,7 @@ %"class.llvm::Metadata.306.1758.9986.10470.10954.11438.11922.12406.12890.13374.13858.15310.15794.16278.17730.19182.21118.25958.26926.29346.29830.30314.30798.31282.31766.32250.32734.33702.36606.38058.41638" = type { i8, i8, i16, i32 } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end(i64, ptr nocapture) #0 +declare void @llvm.lifetime.end(ptr nocapture) #0 ; Function Attrs: nounwind ssp uwtable define hidden void @fun(ptr %N, i1 %arg) #1 align 2 { @@ -42,7 +42,6 @@ for.cond.cleanup: ; preds = %for.body, %entry for.body: ; preds = %for.body, %for.body.lr.ph %indvars.iv190 = phi i64 [ 0, %for.body.lr.ph ], [ %indvars.iv.next191, %for.body ] - call void @llvm.lifetime.end(i64 16, ptr nonnull null) %indvars.iv.next191 = add nuw nsw i64 %indvars.iv190, 1 %exitcond193 = icmp eq i64 %indvars.iv.next191, %wide.trip.count192 br i1 %exitcond193, label %for.cond.cleanup, label %for.body diff --git a/llvm/test/Analysis/CostModel/X86/free-intrinsics.ll b/llvm/test/Analysis/CostModel/X86/free-intrinsics.ll index 3a54428bd8291..cef960d3bcd30 100644 --- a/llvm/test/Analysis/CostModel/X86/free-intrinsics.ll +++ b/llvm/test/Analysis/CostModel/X86/free-intrinsics.ll @@ -14,8 +14,8 @@ define i32 @trivially_free() { ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a4 = call i1 @llvm.is.constant.i32(i32 undef) -; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(i64 1, ptr %alloca) -; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(i64 1, ptr %alloca) +; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(ptr %alloca) +; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(ptr %alloca) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 true, i1 true, i1 true) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a6 = call ptr @llvm.ptr.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.var.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) @@ -32,8 +32,8 @@ define i32 @trivially_free() { ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a4 = call i1 @llvm.is.constant.i32(i32 undef) -; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(i64 1, ptr %alloca) -; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(i64 1, ptr %alloca) +; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(ptr %alloca) +; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(ptr %alloca) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 true, i1 true, i1 true) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a6 = call ptr @llvm.ptr.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.var.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) @@ -49,8 +49,8 @@ define i32 @trivially_free() { %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef) %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef) %a4 = call i1 @llvm.is.constant.i32(i32 undef) - call void @llvm.lifetime.start.p0(i64 1, ptr %alloca) - call void @llvm.lifetime.end.p0(i64 1, ptr %alloca) + call void @llvm.lifetime.start.p0(ptr %alloca) + call void @llvm.lifetime.end.p0(ptr %alloca) %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 1, i1 1, i1 1) %a6 = call ptr @llvm.ptr.annotation.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) call void @llvm.var.annotation(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) @@ -66,8 +66,8 @@ declare void @llvm.invariant.end.p0(ptr, i64, ptr) declare ptr @llvm.launder.invariant.group.p0(ptr) declare ptr @llvm.strip.invariant.group.p0(ptr) declare i1 @llvm.is.constant.i32(i32) -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) declare i64 @llvm.objectsize.i64.p0(ptr, i1, i1, i1) declare ptr @llvm.ptr.annotation.p0(ptr, ptr, ptr, i32, ptr) declare void @llvm.var.annotation(ptr, ptr, ptr, i32, ptr) diff --git a/llvm/test/Analysis/CostModel/free-intrinsics-datalayout.ll b/llvm/test/Analysis/CostModel/free-intrinsics-datalayout.ll index 96064dc3af60b..2acc8e8cf4e20 100644 --- a/llvm/test/Analysis/CostModel/free-intrinsics-datalayout.ll +++ b/llvm/test/Analysis/CostModel/free-intrinsics-datalayout.ll @@ -16,8 +16,8 @@ define i32 @trivially_free() { ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a4 = call i1 @llvm.is.constant.i32(i32 undef) -; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(i64 1, ptr %alloca) -; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(i64 1, ptr %alloca) +; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(ptr %alloca) +; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(ptr %alloca) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 true, i1 true, i1 true) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a6 = call ptr @llvm.ptr.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a7 = call i1 @llvm.allow.ubsan.check(i8 123) @@ -36,8 +36,8 @@ define i32 @trivially_free() { ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a4 = call i1 @llvm.is.constant.i32(i32 undef) -; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(i64 1, ptr %alloca) -; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(i64 1, ptr %alloca) +; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(ptr %alloca) +; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(ptr %alloca) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 true, i1 true, i1 true) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a6 = call ptr @llvm.ptr.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a7 = call i1 @llvm.allow.ubsan.check(i8 123) @@ -55,8 +55,8 @@ define i32 @trivially_free() { %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef) %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef) %a4 = call i1 @llvm.is.constant.i32(i32 undef) - call void @llvm.lifetime.start.p0(i64 1, ptr %alloca) - call void @llvm.lifetime.end.p0(i64 1, ptr %alloca) + call void @llvm.lifetime.start.p0(ptr %alloca) + call void @llvm.lifetime.end.p0(ptr %alloca) %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 1, i1 1, i1 1) %a6 = call ptr @llvm.ptr.annotation.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) %a7 = call i1 @llvm.allow.ubsan.check(i8 123) @@ -74,8 +74,8 @@ declare void @llvm.invariant.end.p0(ptr, i64, ptr) declare ptr @llvm.launder.invariant.group.p0(ptr) declare ptr @llvm.strip.invariant.group.p0(ptr) declare i1 @llvm.is.constant.i32(i32) -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) declare i64 @llvm.objectsize.i64.p0(ptr, i1, i1, i1) declare ptr @llvm.ptr.annotation.p0(ptr, ptr, ptr, i32, ptr) declare void @llvm.var.annotation(ptr, ptr, ptr, i32, ptr) diff --git a/llvm/test/Analysis/CostModel/free-intrinsics-no_info.ll b/llvm/test/Analysis/CostModel/free-intrinsics-no_info.ll index f989ebe592a11..7f002d0ee88e4 100644 --- a/llvm/test/Analysis/CostModel/free-intrinsics-no_info.ll +++ b/llvm/test/Analysis/CostModel/free-intrinsics-no_info.ll @@ -14,8 +14,8 @@ define i32 @trivially_free() { ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a4 = call i1 @llvm.is.constant.i32(i32 undef) -; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(i64 1, ptr %alloca) -; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(i64 1, ptr %alloca) +; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(ptr %alloca) +; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(ptr %alloca) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 true, i1 true, i1 true) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a6 = call ptr @llvm.ptr.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) ; CHECK-SIZE-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.var.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) @@ -34,8 +34,8 @@ define i32 @trivially_free() { ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a4 = call i1 @llvm.is.constant.i32(i32 undef) -; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(i64 1, ptr %alloca) -; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(i64 1, ptr %alloca) +; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.start.p0(ptr %alloca) +; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.lifetime.end.p0(ptr %alloca) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 true, i1 true, i1 true) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: %a6 = call ptr @llvm.ptr.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) ; CHECK-THROUGHPUT-NEXT: Cost Model: Found an estimated cost of 0 for instruction: call void @llvm.var.annotation.p0.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) @@ -53,8 +53,8 @@ define i32 @trivially_free() { %a2 = call ptr @llvm.launder.invariant.group.p0(ptr undef) %a3 = call ptr @llvm.strip.invariant.group.p0(ptr undef) %a4 = call i1 @llvm.is.constant.i32(i32 undef) - call void @llvm.lifetime.start.p0(i64 1, ptr %alloca) - call void @llvm.lifetime.end.p0(i64 1, ptr %alloca) + call void @llvm.lifetime.start.p0(ptr %alloca) + call void @llvm.lifetime.end.p0(ptr %alloca) %a5 = call i64 @llvm.objectsize.i64.p0(ptr undef, i1 1, i1 1, i1 1) %a6 = call ptr @llvm.ptr.annotation.p0(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) call void @llvm.var.annotation(ptr undef, ptr undef, ptr undef, i32 undef, ptr undef) @@ -72,8 +72,8 @@ declare void @llvm.invariant.end.p0(ptr, i64, ptr) declare ptr @llvm.launder.invariant.group.p0(ptr) declare ptr @llvm.strip.invariant.group.p0(ptr) declare i1 @llvm.is.constant.i32(i32) -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) declare i64 @llvm.objectsize.i64.p0(ptr, i1, i1, i1) declare ptr @llvm.ptr.annotation.p0(ptr, ptr, ptr, i32, ptr) declare void @llvm.var.annotation(ptr, ptr, ptr, i32, ptr) diff --git a/llvm/test/Analysis/KernelInfo/openmp/nvptx.ll b/llvm/test/Analysis/KernelInfo/openmp/nvptx.ll index bd46741b24e8c..da5a89897cacb 100644 --- a/llvm/test/Analysis/KernelInfo/openmp/nvptx.ll +++ b/llvm/test/Analysis/KernelInfo/openmp/nvptx.ll @@ -417,7 +417,7 @@ define internal noundef range(i32 -1, 1024) i32 @__kmpc_target_init(ptr nofree n br label %116 116: ; preds = %110, %128 - call void @llvm.lifetime.start.p0(i64 noundef 8, ptr noundef nonnull align 8 dereferenceable(8) %3) #20 + call void @llvm.lifetime.start.p0(ptr noundef nonnull align 8 dereferenceable(8) %3) #20 tail call void @llvm.nvvm.barrier.sync(i32 noundef 8) %117 = call zeroext i1 @__kmpc_kernel_parallel(ptr noalias nocapture nofree noundef nonnull writeonly align 8 dereferenceable(8) %3) #20 %118 = load ptr, ptr %3, align 8, !tbaa !93 @@ -446,11 +446,11 @@ define internal noundef range(i32 -1, 1024) i32 @__kmpc_target_init(ptr nofree n 128: ; preds = %126, %120 tail call void @llvm.nvvm.barrier.sync(i32 noundef 8) - call void @llvm.lifetime.end.p0(i64 noundef 8, ptr noundef nonnull %3) #20 + call void @llvm.lifetime.end.p0(ptr noundef nonnull %3) #20 br label %116, !llvm.loop !94 129: ; preds = %116 - call void @llvm.lifetime.end.p0(i64 noundef 8, ptr noundef nonnull %3) #20 + call void @llvm.lifetime.end.p0(ptr noundef nonnull %3) #20 br label %130 130: ; preds = %106, %129, %100, %98 @@ -495,7 +495,7 @@ define internal fastcc void @__assert_fail_internal(ptr noundef nonnull derefere declare void @llvm.assume(i1 noundef) #9 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #10 +declare void @llvm.lifetime.start.p0(ptr nocapture) #10 ; Function Attrs: convergent nocallback nounwind declare void @llvm.nvvm.barrier.sync(i32) #11 @@ -587,7 +587,7 @@ define internal void @__kmpc_kernel_end_parallel() local_unnamed_addr #13 { } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #10 +declare void @llvm.lifetime.end.p0(ptr nocapture) #10 ; Function Attrs: convergent mustprogress nounwind willreturn allockind("free") memory(argmem: readwrite, inaccessiblemem: readwrite) declare extern_weak void @free(ptr allocptr nocapture noundef) local_unnamed_addr #14 @@ -595,11 +595,11 @@ declare extern_weak void @free(ptr allocptr nocapture noundef) local_unnamed_add ; Function Attrs: convergent mustprogress nounwind define internal noundef i32 @_ZN4ompx6printfEPKcz(ptr noundef %0, ...) local_unnamed_addr #15 { %2 = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 noundef 8, ptr noundef nonnull align 8 %2) #29 + call void @llvm.lifetime.start.p0(ptr noundef nonnull align 8 %2) #29 call void @llvm.va_start.p0(ptr noundef nonnull align 8 %2) #27 %3 = load ptr, ptr %2, align 8, !tbaa !101 %4 = call i32 @vprintf(ptr noundef %0, ptr noundef %3) #24 - call void @llvm.lifetime.end.p0(i64 noundef 8, ptr noundef nonnull %2) #20 + call void @llvm.lifetime.end.p0(ptr noundef nonnull %2) #20 ret i32 %4 } @@ -641,7 +641,7 @@ define internal void @__kmpc_target_deinit() #4 { br i1 %14, label %15, label %27 15: ; preds = %11 - call void @llvm.lifetime.start.p0(i64 noundef 8, ptr noundef nonnull align 8 dereferenceable(8) %1) #29 + call void @llvm.lifetime.start.p0(ptr noundef nonnull align 8 dereferenceable(8) %1) #29 %16 = call zeroext i1 @__kmpc_kernel_parallel(ptr noalias nocapture nofree noundef nonnull writeonly align 8 dereferenceable(8) %1) #20 %17 = load i32, ptr @__omp_rtl_debug_kind, align 4, !tbaa !62 %18 = load i32, ptr addrspace(4) @__omp_rtl_device_environment, align 8, !tbaa !83 @@ -659,7 +659,7 @@ define internal void @__kmpc_target_deinit() #4 { 26: ; preds = %15 tail call void @llvm.assume(i1 noundef %23) #23 - call void @llvm.lifetime.end.p0(i64 noundef 8, ptr noundef nonnull %1) #20 + call void @llvm.lifetime.end.p0(ptr noundef nonnull %1) #20 br label %27 27: ; preds = %26, %11, %10, %0 diff --git a/llvm/test/Analysis/LazyValueAnalysis/invalidation.ll b/llvm/test/Analysis/LazyValueAnalysis/invalidation.ll index 71ea5d2ec1dae..0ad1a337f5235 100644 --- a/llvm/test/Analysis/LazyValueAnalysis/invalidation.ll +++ b/llvm/test/Analysis/LazyValueAnalysis/invalidation.ll @@ -17,13 +17,13 @@ target triple = "x86_64-unknown-linux-gnu" @.str = private unnamed_addr constant [8 x i8] c"a = %l\0A\00", align 1 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @hoo(ptr) declare i32 @printf(ptr nocapture readonly, ...) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define void @goo(i32 %N, ptr %b) { entry: @@ -38,12 +38,12 @@ for.cond: ; preds = %for.body, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - call void @llvm.lifetime.start.p0(i64 8, ptr %tmp) + call void @llvm.lifetime.start.p0(ptr %tmp) call void @hoo(ptr %a.i) call void @hoo(ptr %c) %tmp1 = load volatile i64, ptr %a.i, align 8 %call.i = call i32 (ptr, ...) @printf(ptr @.str, i64 %tmp1) - call void @llvm.lifetime.end.p0(i64 8, ptr %tmp) + call void @llvm.lifetime.end.p0(ptr %tmp) %inc = add nsw i32 %i.0, 1 br label %for.cond diff --git a/llvm/test/Analysis/MemorySSA/lifetime-simple.ll b/llvm/test/Analysis/MemorySSA/lifetime-simple.ll index 18d2459b42c40..03b67682392d1 100644 --- a/llvm/test/Analysis/MemorySSA/lifetime-simple.ll +++ b/llvm/test/Analysis/MemorySSA/lifetime-simple.ll @@ -9,8 +9,8 @@ entry: %P = alloca [32 x i8] %Q = call ptr @obscure(ptr %P) ; CHECK: 1 = MemoryDef(liveOnEntry) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr %P) - call void @llvm.lifetime.start.p0(i64 32, ptr %P) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %P) + call void @llvm.lifetime.start.p0(ptr %P) ; CHECK: MemoryUse(1) ; CHECK-NEXT: %0 = load i8, ptr %P %0 = load i8, ptr %P @@ -18,8 +18,8 @@ entry: ; CHECK-NEXT: store i8 1, ptr %P store i8 1, ptr %P ; CHECK: 3 = MemoryDef(2) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr %P) - call void @llvm.lifetime.end.p0(i64 32, ptr %P) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %P) + call void @llvm.lifetime.end.p0(ptr %P) ; CHECK: MemoryUse(3) ; CHECK-NEXT: %1 = load i8, ptr %P %1 = load i8, ptr %P @@ -28,5 +28,5 @@ entry: %2 = load i8, ptr %Q ret i8 %1 } -declare void @llvm.lifetime.start.p0(i64 %S, ptr nocapture %P) readonly -declare void @llvm.lifetime.end.p0(i64 %S, ptr nocapture %P) +declare void @llvm.lifetime.start.p0(ptr nocapture %P) readonly +declare void @llvm.lifetime.end.p0(ptr nocapture %P) diff --git a/llvm/test/Analysis/MemorySSA/phi-translation.ll b/llvm/test/Analysis/MemorySSA/phi-translation.ll index b8244818c6e15..22bbeadc845d5 100644 --- a/llvm/test/Analysis/MemorySSA/phi-translation.ll +++ b/llvm/test/Analysis/MemorySSA/phi-translation.ll @@ -465,7 +465,7 @@ end: ; preds = %for.body define void @use_clobbered_by_def_in_loop() { entry: %nodeStack = alloca [12 x i32], align 4 - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %nodeStack) + call void @llvm.lifetime.start.p0(ptr nonnull %nodeStack) br i1 false, label %cleanup, label %while.cond ; CHECK-LABEL: while.cond: @@ -502,12 +502,12 @@ while.end: ; preds = %while.cond, %land.r br i1 true, label %cleanup, label %while.cond.backedge cleanup: ; preds = %while.body, %while.end, %entry - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %nodeStack) + call void @llvm.lifetime.end.p0(ptr nonnull %nodeStack) ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define void @another_loop_clobber_inc() { ; CHECK-LABEL: void @another_loop_clobber_inc diff --git a/llvm/test/Analysis/MemorySSA/pr43044.ll b/llvm/test/Analysis/MemorySSA/pr43044.ll index bd767d3b771e6..7ae02f35ff88c 100644 --- a/llvm/test/Analysis/MemorySSA/pr43044.ll +++ b/llvm/test/Analysis/MemorySSA/pr43044.ll @@ -4,7 +4,7 @@ target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64" target triple = "s390x-ibm-linux" -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; CHECK-LABEL: @func_42() define void @func_42() { diff --git a/llvm/test/Analysis/MemorySSA/pr49859.ll b/llvm/test/Analysis/MemorySSA/pr49859.ll index 25ef58698d92d..0e97f57a81804 100644 --- a/llvm/test/Analysis/MemorySSA/pr49859.ll +++ b/llvm/test/Analysis/MemorySSA/pr49859.ll @@ -11,12 +11,12 @@ entry: %n = alloca i8, align 1 %i = alloca i8, align 1 %cleanup.dest.slot = alloca i32, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %sum) #3 + call void @llvm.lifetime.start.p0(ptr %sum) #3 store i8 0, ptr %sum, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %n) #3 + call void @llvm.lifetime.start.p0(ptr %n) #3 %call = call i8 @idi(i8 10) store i8 %call, ptr %n, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %i) #3 + call void @llvm.lifetime.start.p0(ptr %i) #3 store i8 0, ptr %i, align 1 br label %for.cond @@ -61,9 +61,9 @@ for.inc: ; preds = %if.end ; CHECK: final.cleanup: ; CHECK-NEXT: ; [[NO20:.*]] = MemoryPhi({if.then,[[NO9:.*]]},{for.cond.cleanup,[[NO8:.*]]}) ; CHECK-NEXT: ; [[NO12:.*]] = MemoryDef([[NO20]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr %i) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %i) final.cleanup: ; preds = %if.then, %for.cond.cleanup - call void @llvm.lifetime.end.p0(i64 1, ptr %i) #3 + call void @llvm.lifetime.end.p0(ptr %i) #3 br label %for.end ; CHECK: for.end: @@ -71,23 +71,23 @@ final.cleanup: ; preds = %if.then, %for ; CHECK-NEXT: %3 = load i8, ptr %sum, align 1 for.end: ; preds = %final.cleanup %8 = load i8, ptr %sum, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %res.addr.i) + call void @llvm.lifetime.start.p0(ptr %res.addr.i) store i8 %8, ptr %res.addr.i, align 1 %9 = load i8, ptr %res.addr.i, align 1 call void @foo(i8 %9) #3 - call void @llvm.lifetime.end.p0(i64 1, ptr %res.addr.i) - call void @llvm.lifetime.end.p0(i64 1, ptr %n) #3 - call void @llvm.lifetime.end.p0(i64 1, ptr %sum) #3 + call void @llvm.lifetime.end.p0(ptr %res.addr.i) + call void @llvm.lifetime.end.p0(ptr %n) #3 + call void @llvm.lifetime.end.p0(ptr %sum) #3 ret void } ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i8 @idi(i8) ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind declare void @foo(i8) diff --git a/llvm/test/Analysis/MemorySSA/renamephis.ll b/llvm/test/Analysis/MemorySSA/renamephis.ll index e297b99eb89a7..a731ef1db8039 100644 --- a/llvm/test/Analysis/MemorySSA/renamephis.ll +++ b/llvm/test/Analysis/MemorySSA/renamephis.ll @@ -8,7 +8,7 @@ target triple = "x86_64-unknown-linux-gnu" declare void @g() ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0 +declare void @llvm.lifetime.end.p0(ptr nocapture) #0 ; CHECK-LABEL: @f define void @f(i1 %arg) align 2 { diff --git a/llvm/test/Analysis/ScalarEvolution/add-expr-pointer-operand-sorting.ll b/llvm/test/Analysis/ScalarEvolution/add-expr-pointer-operand-sorting.ll index 39b475dfaba9c..7120eec5982e9 100644 --- a/llvm/test/Analysis/ScalarEvolution/add-expr-pointer-operand-sorting.ll +++ b/llvm/test/Analysis/ScalarEvolution/add-expr-pointer-operand-sorting.ll @@ -50,7 +50,7 @@ define i32 @d(i32 %base) { ; entry: %e = alloca [1 x [1 x i8]], align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %e) #2 + call void @llvm.lifetime.start.p0(ptr %e) #2 br label %for.cond for.cond: ; preds = %for.cond, %entry @@ -69,4 +69,4 @@ for.cond: ; preds = %for.cond, %entry br label %for.cond } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) diff --git a/llvm/test/Analysis/ScalarEvolution/sdiv.ll b/llvm/test/Analysis/ScalarEvolution/sdiv.ll index 9eaaf8badd739..acc6ab01978f8 100644 --- a/llvm/test/Analysis/ScalarEvolution/sdiv.ll +++ b/llvm/test/Analysis/ScalarEvolution/sdiv.ll @@ -38,7 +38,7 @@ define dso_local void @_Z4loopi(i32 %width) local_unnamed_addr #0 { entry: %storage = alloca [2 x i32], align 4 %0 = bitcast ptr %storage to ptr - call void @llvm.lifetime.start.p0(i64 8, ptr %storage) #4 + call void @llvm.lifetime.start.p0(ptr %storage) #4 call void @llvm.memset.p0.i64(ptr align 4 %0, i8 0, i64 8, i1 false) br label %for.cond @@ -48,7 +48,7 @@ for.cond: br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: - call void @llvm.lifetime.end.p0(i64 8, ptr %storage) #4 + call void @llvm.lifetime.end.p0(ptr %storage) #4 ret void for.body: @@ -64,10 +64,10 @@ for.body: br label %for.cond } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 declare dso_local i32 @_Z3adji(i32) local_unnamed_addr #3 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 diff --git a/llvm/test/Analysis/ScalarEvolution/srem.ll b/llvm/test/Analysis/ScalarEvolution/srem.ll index 377e58a588b3a..9d4538f381728 100644 --- a/llvm/test/Analysis/ScalarEvolution/srem.ll +++ b/llvm/test/Analysis/ScalarEvolution/srem.ll @@ -38,7 +38,7 @@ define dso_local void @_Z4loopi(i32 %width) local_unnamed_addr #0 { entry: %storage = alloca [2 x i32], align 4 %0 = bitcast ptr %storage to ptr - call void @llvm.lifetime.start.p0(i64 8, ptr %storage) #4 + call void @llvm.lifetime.start.p0(ptr %storage) #4 call void @llvm.memset.p0.i64(ptr align 4 %0, i8 0, i64 8, i1 false) br label %for.cond @@ -48,7 +48,7 @@ for.cond: br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: - call void @llvm.lifetime.end.p0(i64 8, ptr %storage) #4 + call void @llvm.lifetime.end.p0(ptr %storage) #4 ret void for.body: @@ -64,10 +64,10 @@ for.body: br label %for.cond } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 declare dso_local i32 @_Z3adji(i32) local_unnamed_addr #3 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 diff --git a/llvm/test/Analysis/ScopedNoAliasAA/alias-scope-merging.ll b/llvm/test/Analysis/ScopedNoAliasAA/alias-scope-merging.ll index 840a5172561dc..36d79f9e44b96 100644 --- a/llvm/test/Analysis/ScopedNoAliasAA/alias-scope-merging.ll +++ b/llvm/test/Analysis/ScopedNoAliasAA/alias-scope-merging.ll @@ -8,10 +8,10 @@ define i8 @test(i8 %input) { %dst = alloca i8 %src = alloca i8 ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %src, i64 1, i1 false), !alias.scope ![[SCOPE:[0-9]+]] - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %src), !noalias !4 + call void @llvm.lifetime.start.p0(ptr nonnull %src), !noalias !4 store i8 %input, ptr %src call void @llvm.memcpy.p0.p0.i64(ptr align 8 %tmp, ptr align 8 %src, i64 1, i1 false), !alias.scope !0 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %src), !noalias !4 + call void @llvm.lifetime.end.p0(ptr nonnull %src), !noalias !4 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %tmp, i64 1, i1 false), !alias.scope !4 %ret_value = load i8, ptr %dst call void @use(ptr %src) @@ -23,8 +23,8 @@ define i8 @test(i8 %input) { ; CHECK-DAG: ![[CALLEE0_B:[0-9]+]] = distinct !{!{{[0-9]+}}, !{{[0-9]+}}, !"callee0: %b"} ; CHECK-DAG: ![[SCOPE]] = !{![[CALLEE0_A]], ![[CALLEE0_B]]} -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @llvm.memcpy.p0.p0.i64(ptr, ptr, i64, i1) !0 = !{!1, !7} diff --git a/llvm/test/Analysis/StackSafetyAnalysis/lifetime.ll b/llvm/test/Analysis/StackSafetyAnalysis/lifetime.ll index 6c3dec9fadac7..51bfa154e957a 100644 --- a/llvm/test/Analysis/StackSafetyAnalysis/lifetime.ll +++ b/llvm/test/Analysis/StackSafetyAnalysis/lifetime.ll @@ -11,31 +11,31 @@ entry: ; CHECK: %y = alloca i32, align 4 ; CHECK-NEXT: Alive: <> %z = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %z) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %z) + call void @llvm.lifetime.start.p0(ptr %z) +; CHECK: call void @llvm.lifetime.start.p0(ptr %z) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: call void @capture32(ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y) ; CHECK-NEXT: Alive: call void @capture32(ptr %z) - call void @llvm.lifetime.end.p0(i64 -1, ptr %z) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %z) + call void @llvm.lifetime.end.p0(ptr %z) +; CHECK: call void @llvm.lifetime.end.p0(ptr %z) ; CHECK-NEXT: Alive: <> ret void @@ -48,13 +48,13 @@ entry: ; CHECK-NEXT: Alive: %x = alloca i32, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: call void @capture32(ptr %y) @@ -69,31 +69,31 @@ entry: %x = alloca i32, align 4 %y = alloca i32, align 4 %z = alloca i64, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: call void @capture32(ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y) ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 -1, ptr %z) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %z) + call void @llvm.lifetime.start.p0(ptr %z) +; CHECK: call void @llvm.lifetime.start.p0(ptr %z) ; CHECK-NEXT: Alive: call void @capture64(ptr %z) - call void @llvm.lifetime.end.p0(i64 -1, ptr %z) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %z) + call void @llvm.lifetime.end.p0(ptr %z) +; CHECK: call void @llvm.lifetime.end.p0(ptr %z) ; CHECK-NEXT: Alive: <> ret void @@ -111,31 +111,31 @@ entry: ; CHECK-NEXT: Alive: <> %z = alloca i64, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %z) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %z) + call void @llvm.lifetime.start.p0(ptr %z) +; CHECK: call void @llvm.lifetime.start.p0(ptr %z) ; CHECK-NEXT: Alive: call void @capture32(ptr %x) call void @capture32(ptr %y) call void @capture64(ptr %z) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %z) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %z) + call void @llvm.lifetime.end.p0(ptr %z) +; CHECK: call void @llvm.lifetime.end.p0(ptr %z) ; CHECK-NEXT: Alive: <> ret void @@ -154,12 +154,12 @@ entry: %z = alloca i64, align 8 %z1 = alloca i64, align 8 %z2 = alloca i64, align 8 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x1) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %x1) + call void @llvm.lifetime.start.p0(ptr %x1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x1) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %x2) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %x2) + call void @llvm.lifetime.start.p0(ptr %x2) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x2) ; CHECK-NEXT: Alive: call void @capture64(ptr nonnull %x1) @@ -171,8 +171,8 @@ entry: if.then: ; preds = %entry ; CHECK: if.then: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: call void @capture64(ptr nonnull %y) @@ -181,13 +181,13 @@ if.then: ; preds = %entry if.then3: ; preds = %if.then ; CHECK: if.then3: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y1) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y1) + call void @llvm.lifetime.start.p0(ptr %y1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y1) ; CHECK-NEXT: Alive: call void @capture64(ptr nonnull %y1) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y1) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %y1) + call void @llvm.lifetime.end.p0(ptr %y1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y1) ; CHECK-NEXT: Alive: br label %if.end @@ -195,13 +195,13 @@ if.then3: ; preds = %if.then if.else: ; preds = %if.then ; CHECK: if.else: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y2) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y2) + call void @llvm.lifetime.start.p0(ptr %y2) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y2) ; CHECK-NEXT: Alive: call void @capture64(ptr nonnull %y2) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y2) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %y2) + call void @llvm.lifetime.end.p0(ptr %y2) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y2) ; CHECK-NEXT: Alive: br label %if.end @@ -209,8 +209,8 @@ if.else: ; preds = %if.then if.end: ; preds = %if.else, %if.then3 ; CHECK: if.end: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y) ; CHECK-NEXT: Alive: br label %if.end9 @@ -222,8 +222,8 @@ if.else4: ; preds = %entry ; CHECK: %z.cast = bitcast ptr %z to ptr ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %z) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %z) + call void @llvm.lifetime.start.p0(ptr %z) +; CHECK: call void @llvm.lifetime.start.p0(ptr %z) ; CHECK-NEXT: Alive: call void @capture64(ptr nonnull %z) @@ -232,13 +232,13 @@ if.else4: ; preds = %entry if.then6: ; preds = %if.else4 ; CHECK: if.then6: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %z1) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %z1) + call void @llvm.lifetime.start.p0(ptr %z1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %z1) ; CHECK-NEXT: Alive: call void @capture64(ptr nonnull %z1) - call void @llvm.lifetime.end.p0(i64 -1, ptr %z1) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %z1) + call void @llvm.lifetime.end.p0(ptr %z1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %z1) ; CHECK-NEXT: Alive: br label %if.end8 @@ -246,13 +246,13 @@ if.then6: ; preds = %if.else4 if.else7: ; preds = %if.else4 ; CHECK: if.else7: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %z2) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %z2) + call void @llvm.lifetime.start.p0(ptr %z2) +; CHECK: call void @llvm.lifetime.start.p0(ptr %z2) ; CHECK-NEXT: Alive: call void @capture64(ptr nonnull %z2) - call void @llvm.lifetime.end.p0(i64 -1, ptr %z2) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %z2) + call void @llvm.lifetime.end.p0(ptr %z2) +; CHECK: call void @llvm.lifetime.end.p0(ptr %z2) ; CHECK-NEXT: Alive: br label %if.end8 @@ -260,8 +260,8 @@ if.else7: ; preds = %if.else4 if.end8: ; preds = %if.else7, %if.then6 ; CHECK: if.end8: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %z) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %z) + call void @llvm.lifetime.end.p0(ptr %z) +; CHECK: call void @llvm.lifetime.end.p0(ptr %z) ; CHECK-NEXT: Alive: br label %if.end9 @@ -269,12 +269,12 @@ if.end8: ; preds = %if.else7, %if.then6 if.end9: ; preds = %if.end8, %if.end ; CHECK: if.end9: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %x2) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x2) + call void @llvm.lifetime.end.p0(ptr %x2) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x2) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %x1) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x1) + call void @llvm.lifetime.end.p0(ptr %x1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x1) ; CHECK-NEXT: Alive: <> ret void @@ -287,8 +287,8 @@ entry: ; CHECK-NEXT: Alive: <> %x = alloca i32, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: call void @capture32(ptr %x) @@ -297,17 +297,17 @@ entry: bb2: ; preds = %entry ; CHECK: bb2: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: call void @capture32(ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: <> ret void @@ -315,8 +315,8 @@ bb2: ; preds = %entry bb3: ; preds = %entry ; CHECK: bb3: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: <> ret void @@ -329,13 +329,13 @@ entry: ; CHECK-NEXT: Alive: <> %x = alloca i32, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: <> br i1 %d, label %bb2, label %bb3 @@ -343,13 +343,13 @@ entry: bb2: ; preds = %entry ; CHECK: bb2: ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: call void @capture32(ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y) ; CHECK-NEXT: Alive: <> ret void @@ -367,13 +367,13 @@ entry: ; CHECK-NEXT: Alive: <> %x = alloca i32, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: <> br i1 %d, label %bb2, label %bb3 @@ -381,8 +381,8 @@ entry: bb2: ; preds = %entry ; CHECK: bb2: ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: call void @capture32(ptr %y) @@ -401,8 +401,8 @@ entry: ; CHECK-NEXT: Alive: <> %x = alloca i32, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: call void @capture32(ptr %x) @@ -411,12 +411,12 @@ entry: bb2: ; preds = %entry ; CHECK: bb2: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: call void @capture32(ptr %y) @@ -436,8 +436,8 @@ entry: %x = alloca i32, align 4 %y = alloca i32, align 4 call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: br i1 %d, label %bb2, label %bb3 @@ -445,8 +445,8 @@ entry: bb2: ; preds = %entry ; CHECK: bb2: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: call void @capture32(ptr %y) @@ -467,12 +467,12 @@ entry: %B.i2 = alloca [100 x i32], align 4 %A.i = alloca [100 x i32], align 4 %B.i = alloca [100 x i32], align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %A.i) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %A.i) + call void @llvm.lifetime.start.p0(ptr %A.i) +; CHECK: call void @llvm.lifetime.start.p0(ptr %A.i) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %B.i) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %B.i) + call void @llvm.lifetime.start.p0(ptr %B.i) +; CHECK: call void @llvm.lifetime.start.p0(ptr %B.i) ; CHECK-NEXT: Alive: call void @capture100x32(ptr %A.i) @@ -480,30 +480,30 @@ entry: ; CHECK-NEXT: Alive: call void @capture100x32(ptr %B.i) - call void @llvm.lifetime.end.p0(i64 -1, ptr %A.i) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %A.i) + call void @llvm.lifetime.end.p0(ptr %A.i) +; CHECK: call void @llvm.lifetime.end.p0(ptr %A.i) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %B.i) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %B.i) + call void @llvm.lifetime.end.p0(ptr %B.i) +; CHECK: call void @llvm.lifetime.end.p0(ptr %B.i) ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 -1, ptr %A.i1) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %A.i1) + call void @llvm.lifetime.start.p0(ptr %A.i1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %A.i1) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %B.i2) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %B.i2) + call void @llvm.lifetime.start.p0(ptr %B.i2) +; CHECK: call void @llvm.lifetime.start.p0(ptr %B.i2) ; CHECK-NEXT: Alive: call void @capture100x32(ptr %A.i1) call void @capture100x32(ptr %B.i2) - call void @llvm.lifetime.end.p0(i64 -1, ptr %A.i1) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %A.i1) + call void @llvm.lifetime.end.p0(ptr %A.i1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %A.i1) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %B.i2) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %B.i2) + call void @llvm.lifetime.end.p0(ptr %B.i2) +; CHECK: call void @llvm.lifetime.end.p0(ptr %B.i2) ; CHECK-NEXT: Alive: <> ret void @@ -516,20 +516,20 @@ entry: ; CHECK-NEXT: Alive: <> %buf1 = alloca i8, i32 100000, align 16 %buf2 = alloca i8, i32 100000, align 16 - call void @llvm.lifetime.start.p0(i64 -1, ptr %buf1) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %buf1) + call void @llvm.lifetime.start.p0(ptr %buf1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %buf1) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %buf1) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %buf1) + call void @llvm.lifetime.end.p0(ptr %buf1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %buf1) ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 -1, ptr %buf1) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %buf1) + call void @llvm.lifetime.start.p0(ptr %buf1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %buf1) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %buf2) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %buf2) + call void @llvm.lifetime.start.p0(ptr %buf2) +; CHECK: call void @llvm.lifetime.start.p0(ptr %buf2) ; CHECK-NEXT: Alive: call void @capture8(ptr %buf1) @@ -546,22 +546,22 @@ entry: %B.i2 = alloca [100 x i32], align 4 %A.i = alloca [100 x i32], align 4 %B.i = alloca [100 x i32], align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %A.i) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %A.i) + call void @llvm.lifetime.start.p0(ptr %A.i) +; CHECK: call void @llvm.lifetime.start.p0(ptr %A.i) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %B.i) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %B.i) + call void @llvm.lifetime.start.p0(ptr %B.i) +; CHECK: call void @llvm.lifetime.start.p0(ptr %B.i) ; CHECK-NEXT: Alive: call void @capture100x32(ptr %A.i) call void @capture100x32(ptr %B.i) - call void @llvm.lifetime.end.p0(i64 -1, ptr %A.i) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %A.i) + call void @llvm.lifetime.end.p0(ptr %A.i) +; CHECK: call void @llvm.lifetime.end.p0(ptr %A.i) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %B.i) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %B.i) + call void @llvm.lifetime.end.p0(ptr %B.i) +; CHECK: call void @llvm.lifetime.end.p0(ptr %B.i) ; CHECK-NEXT: Alive: br label %block2 @@ -583,23 +583,23 @@ entry: ; CHECK-NEXT: Alive: <> %a.i = alloca [4 x %struct.Klass], align 16 %b.i = alloca [4 x %struct.Klass], align 16 - call void @llvm.lifetime.start.p0(i64 -1, ptr %a.i) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %a.i) + call void @llvm.lifetime.start.p0(ptr %a.i) +; CHECK: call void @llvm.lifetime.start.p0(ptr %a.i) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 -1, ptr %b.i) -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %b.i) + call void @llvm.lifetime.start.p0(ptr %b.i) +; CHECK: call void @llvm.lifetime.start.p0(ptr %b.i) ; CHECK-NEXT: Alive: call void @capture8(ptr %a.i) call void @capture8(ptr %b.i) %z3 = load i32, ptr %a.i, align 16 - call void @llvm.lifetime.end.p0(i64 -1, ptr %a.i) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %a.i) + call void @llvm.lifetime.end.p0(ptr %a.i) +; CHECK: call void @llvm.lifetime.end.p0(ptr %a.i) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 -1, ptr %b.i) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %b.i) + call void @llvm.lifetime.end.p0(ptr %b.i) +; CHECK: call void @llvm.lifetime.end.p0(ptr %b.i) ; CHECK-NEXT: Alive: <> ret i32 %z3 @@ -611,8 +611,8 @@ entry: ; CHECK: entry: ; CHECK-NEXT: Alive: <> %x = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: br label %l2 @@ -622,8 +622,8 @@ l2: ; preds = %l2, %entry ; MAY-NEXT: Alive: ; MUST-NEXT: Alive: <> call void @capture8(ptr %x) - call void @llvm.lifetime.end.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: <> br label %l2 @@ -636,8 +636,8 @@ entry: ; CHECK-NEXT: Alive: <> %x = alloca i8, align 4 %y = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: br label %l2 @@ -645,17 +645,17 @@ entry: l2: ; preds = %l2, %entry ; CHECK: l2: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: call void @capture8(ptr %y) - call void @llvm.lifetime.end.p0(i64 1, ptr %y) -; CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: call void @capture8(ptr %x) @@ -677,24 +677,24 @@ entry: if.then: ; preds = %entry ; CHECK: if.then: ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %a) -; CHECK: call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) +; CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %a) ; CHECK-NEXT: Alive: tail call void @capture8(ptr %a) - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %a) -; CHECK: call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) +; CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %a) ; CHECK-NEXT: Alive: <> br label %if.end if.else: ; preds = %entry ; CHECK: if.else: ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %b) -; CHECK: call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %b) + call void @llvm.lifetime.start.p0(ptr nonnull %b) +; CHECK: call void @llvm.lifetime.start.p0(ptr nonnull %b) ; CHECK-NEXT: Alive: tail call void @capture8(ptr %b) - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %b) -; CHECK: call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) +; CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %b) ; CHECK-NEXT: Alive: <> br label %if.end @@ -719,8 +719,8 @@ entry: if.then: ; CHECK: if.then: ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: br label %if.end @@ -730,12 +730,12 @@ if.then: if.else: ; CHECK: if.else: ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: br label %if.end @@ -758,12 +758,12 @@ entry: %x = alloca i8, align 4 %y = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: br label %end @@ -773,7 +773,7 @@ entry: dead: ; CHECK: dead: ; CHECK-NOT: Alive: - call void @llvm.lifetime.start.p0(i64 4, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) br label %end ; CHECK: br label %end @@ -792,20 +792,20 @@ entry: ; CHECK: entry: ; CHECK-NEXT: Alive: <> %x = alloca i8 - call void @llvm.lifetime.start.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.end.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: <> ret void @@ -827,8 +827,8 @@ if.then: ; CHECK: if.then: ; MAY-NEXT: Alive: ; MUST-NEXT: Alive: <> - call void @llvm.lifetime.end.p0(i64 1, ptr %y) -; CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y) ; MAY-NEXT: Alive: ; MUST-NEXT: Alive: <> @@ -840,12 +840,12 @@ if.then: if.else: ; CHECK: if.else: ; CHECK-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: br label %if.then @@ -868,8 +868,8 @@ entry: %x = alloca i8, align 4 %y = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: br i1 %a, label %if.then, label %if.else @@ -880,8 +880,8 @@ if.then: ; CHECK: if.then: ; MAY-NEXT: Alive: ; MUST-NEXT: Alive: <> - call void @llvm.lifetime.start.p0(i64 1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; MAY-NEXT: Alive: ; MUST-NEXT: Alive: @@ -893,12 +893,12 @@ if.then: if.else: ; CHECK: if.else: ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 1, ptr %y) -; CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) +; CHECK: call void @llvm.lifetime.end.p0(ptr %y) ; CHECK-NEXT: Alive: - call void @llvm.lifetime.end.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) +; CHECK: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: Alive: <> br label %if.then @@ -921,8 +921,8 @@ entry: %x = alloca i8, align 4 %y = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr %x) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) +; CHECK: call void @llvm.lifetime.start.p0(ptr %x) ; CHECK-NEXT: Alive: br i1 %a, label %if.then, label %if.end @@ -933,8 +933,8 @@ if.then: ; CHECK: if.then: ; MAY-NEXT: Alive: ; MUST-NEXT: Alive: - call void @llvm.lifetime.start.p0(i64 1, ptr %y) -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) +; CHECK: call void @llvm.lifetime.start.p0(ptr %y) ; CHECK-NEXT: Alive: br i1 %a, label %if.then, label %if.end @@ -949,8 +949,8 @@ if.end: ret void } -declare void @llvm.lifetime.start.p0(i64, ptr captures(none)) -declare void @llvm.lifetime.end.p0(i64, ptr captures(none)) +declare void @llvm.lifetime.start.p0(ptr captures(none)) +declare void @llvm.lifetime.end.p0(ptr captures(none)) declare void @capture8(ptr) declare void @capture32(ptr) declare void @capture64(ptr) diff --git a/llvm/test/Analysis/StackSafetyAnalysis/local.ll b/llvm/test/Analysis/StackSafetyAnalysis/local.ll index 02d46c8449bae..6944f38411003 100644 --- a/llvm/test/Analysis/StackSafetyAnalysis/local.ll +++ b/llvm/test/Analysis/StackSafetyAnalysis/local.ll @@ -707,9 +707,9 @@ entry: %n = load i8, ptr %y call void @llvm.memset.p0.i32(ptr nonnull %z, i8 0, i32 1, i1 false) - call void @llvm.lifetime.start.p0(i64 1, ptr %x) - call void @llvm.lifetime.start.p0(i64 1, ptr %y) - call void @llvm.lifetime.start.p0(i64 1, ptr %z) + call void @llvm.lifetime.start.p0(ptr %x) + call void @llvm.lifetime.start.p0(ptr %y) + call void @llvm.lifetime.start.p0(ptr %z) ret void } @@ -731,9 +731,9 @@ entry: %y = alloca i8, align 4 %z = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr %x) - call void @llvm.lifetime.start.p0(i64 1, ptr %y) - call void @llvm.lifetime.start.p0(i64 1, ptr %z) + call void @llvm.lifetime.start.p0(ptr %x) + call void @llvm.lifetime.start.p0(ptr %y) + call void @llvm.lifetime.start.p0(ptr %z) store i8 5, ptr %x %n = load i8, ptr %y @@ -756,13 +756,13 @@ entry: %y = alloca i8, align 4 %z = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr %x) - call void @llvm.lifetime.start.p0(i64 1, ptr %y) - call void @llvm.lifetime.start.p0(i64 1, ptr %z) + call void @llvm.lifetime.start.p0(ptr %x) + call void @llvm.lifetime.start.p0(ptr %y) + call void @llvm.lifetime.start.p0(ptr %z) - call void @llvm.lifetime.end.p0(i64 1, ptr %x) - call void @llvm.lifetime.end.p0(i64 1, ptr %y) - call void @llvm.lifetime.end.p0(i64 1, ptr %z) + call void @llvm.lifetime.end.p0(ptr %x) + call void @llvm.lifetime.end.p0(ptr %y) + call void @llvm.lifetime.end.p0(ptr %z) store i8 5, ptr %x %n = load i8, ptr %y @@ -973,13 +973,13 @@ define void @DoubleLifetime() { ; CHECK-EMPTY: entry: %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) call void @llvm.memset.p0.i32(ptr %a, i8 1, i32 4, i1 true) - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @llvm.memset.p0.i32(ptr %a, i8 1, i32 4, i1 false) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -993,13 +993,13 @@ define void @DoubleLifetime2() { ; CHECK-EMPTY: entry: %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) %n = load i32, ptr %a - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @llvm.memset.p0.i32(ptr %a, i8 1, i32 4, i1 false) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -1013,13 +1013,13 @@ define void @DoubleLifetime3() { ; CHECK-EMPTY: entry: %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) store i32 5, ptr %a - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @llvm.memset.p0.i32(ptr %a, i8 1, i32 4, i1 false) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -1033,9 +1033,9 @@ define void @DoubleLifetime4() { ; CHECK-EMPTY: entry: %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @llvm.memset.p0.i32(ptr %a, i8 1, i32 4, i1 false) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) call void @unknown_call(ptr %a) ret void } @@ -1136,5 +1136,5 @@ entry: ret ptr null } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Assembler/auto_upgrade_intrinsics.ll b/llvm/test/Assembler/auto_upgrade_intrinsics.ll index d1b535b49ca95..37cb49650f6bd 100644 --- a/llvm/test/Assembler/auto_upgrade_intrinsics.ll +++ b/llvm/test/Assembler/auto_upgrade_intrinsics.ll @@ -171,10 +171,10 @@ define void @tests.lifetime.start.end() { ; CHECK-LABEL: @tests.lifetime.start.end( %a = alloca i8 call void @llvm.lifetime.start(i64 1, ptr %a) - ; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %a) + ; CHECK: call void @llvm.lifetime.start.p0(ptr %a) store i8 0, ptr %a call void @llvm.lifetime.end(i64 1, ptr %a) - ; CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr %a) + ; CHECK: call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -185,10 +185,10 @@ define void @tests.lifetime.start.end.unnamed() { ; CHECK-LABEL: @tests.lifetime.start.end.unnamed( %a = alloca ptr call void @llvm.lifetime.start.unnamed(i64 1, ptr %a) - ; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %a) + ; CHECK: call void @llvm.lifetime.start.p0(ptr %a) store ptr null, ptr %a call void @llvm.lifetime.end.unnamed(i64 1, ptr %a) - ; CHECK: call void @llvm.lifetime.end.p0(i64 1, ptr %a) + ; CHECK: call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -220,5 +220,5 @@ define void @test.prefetch.unnamed(ptr %ptr) { ; emitted at the end. ; CHECK: declare i32 @llvm.objectsize.i32.p0 -; CHECK: declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) -; CHECK: declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) +; CHECK: declare void @llvm.lifetime.start.p0(ptr captures(none)) +; CHECK: declare void @llvm.lifetime.end.p0(ptr captures(none)) diff --git a/llvm/test/Assembler/autoupgrade-lifetime-intrinsics.ll b/llvm/test/Assembler/autoupgrade-lifetime-intrinsics.ll index 00ab93470c193..377c00203079f 100644 --- a/llvm/test/Assembler/autoupgrade-lifetime-intrinsics.ll +++ b/llvm/test/Assembler/autoupgrade-lifetime-intrinsics.ll @@ -5,8 +5,8 @@ define void @strip_bitcast() { ; CHECK-LABEL: define void @strip_bitcast() { ; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[B:%.*]] = bitcast ptr [[A]] to ptr -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %a = alloca i8 @@ -20,8 +20,8 @@ define void @strip_addrspacecast() { ; CHECK-LABEL: define void @strip_addrspacecast() { ; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[B:%.*]] = addrspacecast ptr [[A]] to ptr addrspace(1) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %a = alloca i8 @@ -35,8 +35,8 @@ define void @strip_gep() { ; CHECK-LABEL: define void @strip_gep() { ; CHECK-NEXT: [[A:%.*]] = alloca [2 x i8], align 1 ; CHECK-NEXT: [[B:%.*]] = getelementptr [2 x i8], ptr [[A]], i64 0, i64 0 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %a = alloca [2 x i8] @@ -55,3 +55,8 @@ define void @remove_unanalyzable(ptr %p) { call void @llvm.lifetime.end.p0(i64 1, ptr %p) ret void } + +declare void @llvm.lifetime.start.p0(i64, ptr) +declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p1(i64, ptr addrspace(1)) +declare void @llvm.lifetime.end.p1(i64, ptr addrspace(1)) diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/vararg.mir b/llvm/test/CodeGen/AArch64/GlobalISel/vararg.mir index 437a9e6cb89ac..3f14162d29f8d 100644 --- a/llvm/test/CodeGen/AArch64/GlobalISel/vararg.mir +++ b/llvm/test/CodeGen/AArch64/GlobalISel/vararg.mir @@ -10,7 +10,7 @@ define i32 @va_start(ptr %a, ...) { entry: %ap = alloca %struct.__va_list, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %ap) + call void @llvm.lifetime.start.p0(ptr %ap) call void @llvm.va_start.p0(ptr %ap) %vr_offs_p = getelementptr inbounds i8, ptr %ap, i64 28 %vr_offs = load i32, ptr %vr_offs_p, align 4 diff --git a/llvm/test/CodeGen/AArch64/lifetime-poison.ll b/llvm/test/CodeGen/AArch64/lifetime-poison.ll index e04530de528b5..dfb76d1628bdd 100644 --- a/llvm/test/CodeGen/AArch64/lifetime-poison.ll +++ b/llvm/test/CodeGen/AArch64/lifetime-poison.ll @@ -8,7 +8,7 @@ define void @test() { ; CHECK-LABEL: test: ; CHECK: // %bb.0: ; CHECK-NEXT: ret - call void @llvm.lifetime.start.p0(i64 4, ptr poison) - call void @llvm.lifetime.end.p0(i64 4, ptr poison) + call void @llvm.lifetime.start.p0(ptr poison) + call void @llvm.lifetime.end.p0(ptr poison) ret void } diff --git a/llvm/test/CodeGen/AArch64/stack-tagging-initializer-merge.ll b/llvm/test/CodeGen/AArch64/stack-tagging-initializer-merge.ll index 0711f69e7ca72..df8376280318c 100644 --- a/llvm/test/CodeGen/AArch64/stack-tagging-initializer-merge.ll +++ b/llvm/test/CodeGen/AArch64/stack-tagging-initializer-merge.ll @@ -5,8 +5,8 @@ target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" target triple = "aarch64--linux-android" declare void @use(ptr) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) define void @OneVarNoInit() sanitize_memtag { @@ -16,18 +16,18 @@ define void @OneVarNoInit() sanitize_memtag { ; CHECK-NEXT: [[BASETAG:%.*]] = call ptr @llvm.aarch64.irg.sp(i64 0) ; CHECK-NEXT: [[X:%.*]] = alloca { i32, [12 x i8] }, align 16 ; CHECK-NEXT: [[TX:%.*]] = call ptr @llvm.aarch64.tagp.p0(ptr [[X]], ptr [[BASETAG]], i64 0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[TX]], i64 16) ; CHECK-NEXT: call void @use(ptr nonnull [[TX]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[X]], i64 16) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: ret void ; entry: %x = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) call void @use(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -39,19 +39,19 @@ define void @OneVarInitConst() sanitize_memtag { ; CHECK-NEXT: [[BASETAG:%.*]] = call ptr @llvm.aarch64.irg.sp(i64 0) ; CHECK-NEXT: [[X:%.*]] = alloca { i32, [12 x i8] }, align 16 ; CHECK-NEXT: [[TX:%.*]] = call ptr @llvm.aarch64.tagp.p0(ptr [[X]], ptr [[BASETAG]], i64 0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: call void @llvm.aarch64.stgp(ptr [[TX]], i64 42, i64 0) ; CHECK-NEXT: call void @use(ptr nonnull [[TX]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[X]], i64 16) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: ret void ; entry: %x = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) store i32 42, ptr %x, align 4 call void @use(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -64,21 +64,21 @@ define void @ArrayInitConst() sanitize_memtag { ; CHECK-NEXT: [[BASETAG:%.*]] = call ptr @llvm.aarch64.irg.sp(i64 0) ; CHECK-NEXT: [[X:%.*]] = alloca i32, i32 16, align 16 ; CHECK-NEXT: [[TX:%.*]] = call ptr @llvm.aarch64.tagp.p0(ptr [[X]], ptr [[BASETAG]], i64 0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: call void @llvm.aarch64.stgp(ptr [[TX]], i64 42, i64 0) ; CHECK-NEXT: [[TX8_16:%.*]] = getelementptr i8, ptr [[TX]], i32 16 ; CHECK-NEXT: call void @llvm.aarch64.settag.zero(ptr [[TX8_16]], i64 48) ; CHECK-NEXT: call void @use(ptr nonnull [[TX]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[X]], i64 64) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: ret void ; entry: %x = alloca i32, i32 16, align 4 - call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) store i32 42, ptr %x, align 4 call void @use(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -90,7 +90,7 @@ define void @ArrayInitConst2() sanitize_memtag { ; CHECK-NEXT: [[BASETAG:%.*]] = call ptr @llvm.aarch64.irg.sp(i64 0) ; CHECK-NEXT: [[X:%.*]] = alloca i32, i32 16, align 16 ; CHECK-NEXT: [[TX:%.*]] = call ptr @llvm.aarch64.tagp.p0(ptr [[X]], ptr [[BASETAG]], i64 0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i32, ptr [[TX]], i32 1 ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[TX]], i32 2 ; CHECK-NEXT: call void @llvm.aarch64.stgp(ptr [[TX]], i64 184683593770, i64 -1) @@ -98,19 +98,19 @@ define void @ArrayInitConst2() sanitize_memtag { ; CHECK-NEXT: call void @llvm.aarch64.settag.zero(ptr [[TX8_16]], i64 48) ; CHECK-NEXT: call void @use(ptr nonnull [[TX]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[X]], i64 64) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: ret void ; entry: %x = alloca i32, i32 16, align 4 - call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) store i32 42, ptr %x, align 4 %0 = getelementptr i32, ptr %x, i32 1 store i32 43, ptr %0, align 4 %1 = getelementptr i32, ptr %x, i32 2 store i64 -1, ptr %1, align 4 call void @use(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -122,23 +122,23 @@ define void @ArrayInitConstSplit() sanitize_memtag { ; CHECK-NEXT: [[BASETAG:%.*]] = call ptr @llvm.aarch64.irg.sp(i64 0) ; CHECK-NEXT: [[X:%.*]] = alloca i32, i32 16, align 16 ; CHECK-NEXT: [[TX:%.*]] = call ptr @llvm.aarch64.tagp.p0(ptr [[X]], ptr [[BASETAG]], i64 0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i32, ptr [[TX]], i32 1 ; CHECK-NEXT: call void @llvm.aarch64.stgp(ptr [[TX]], i64 -4294967296, i64 4294967295) ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i8, ptr [[TX]], i32 16 ; CHECK-NEXT: call void @llvm.aarch64.settag.zero(ptr [[TMP1]], i64 48) ; CHECK-NEXT: call void @use(ptr nonnull [[TX]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[X]], i64 64) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: ret void ; entry: %x = alloca i32, i32 16, align 4 - call void @llvm.lifetime.start.p0(i64 64, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) %0 = getelementptr i32, ptr %x, i32 1 store i64 -1, ptr %0, align 4 call void @use(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 64, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -150,7 +150,7 @@ define void @ArrayInitConstWithHoles() sanitize_memtag { ; CHECK-NEXT: [[BASETAG:%.*]] = call ptr @llvm.aarch64.irg.sp(i64 0) ; CHECK-NEXT: [[X:%.*]] = alloca i32, i32 32, align 16 ; CHECK-NEXT: [[TX:%.*]] = call ptr @llvm.aarch64.tagp.p0(ptr [[X]], ptr [[BASETAG]], i64 0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 128, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i32, ptr [[TX]], i32 5 ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[TX]], i32 14 ; CHECK-NEXT: call void @llvm.aarch64.settag.zero(ptr [[TX]], i64 16) @@ -164,18 +164,18 @@ define void @ArrayInitConstWithHoles() sanitize_memtag { ; CHECK-NEXT: call void @llvm.aarch64.settag.zero(ptr [[TX8_64]], i64 64) ; CHECK-NEXT: call void @use(ptr nonnull [[TX]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[X]], i64 128) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 128, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: ret void ; entry: %x = alloca i32, i32 32, align 4 - call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) %0 = getelementptr i32, ptr %x, i32 5 store i32 42, ptr %0, align 4 %1 = getelementptr i32, ptr %x, i32 14 store i32 43, ptr %1, align 4 call void @use(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -187,20 +187,20 @@ define void @InitNonConst(i32 %v) sanitize_memtag { ; CHECK-NEXT: [[BASETAG:%.*]] = call ptr @llvm.aarch64.irg.sp(i64 0) ; CHECK-NEXT: [[X:%.*]] = alloca { i32, [12 x i8] }, align 16 ; CHECK-NEXT: [[X_TAG:%.*]] = call ptr @llvm.aarch64.tagp.p0(ptr [[X]], ptr [[BASETAG]], i64 0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: [[TMP0:%.*]] = zext i32 [[V]] to i64 ; CHECK-NEXT: call void @llvm.aarch64.stgp(ptr [[X_TAG]], i64 [[TMP0]], i64 0) ; CHECK-NEXT: call void @use(ptr nonnull [[X_TAG]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[X]], i64 16) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: ret void ; entry: %x = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) store i32 %v, ptr %x, align 4 call void @use(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -212,7 +212,7 @@ define void @InitNonConst2(i32 %v, i32 %w) sanitize_memtag { ; CHECK-NEXT: [[BASETAG:%.*]] = call ptr @llvm.aarch64.irg.sp(i64 0) ; CHECK-NEXT: [[X:%.*]] = alloca i32, i32 4, align 16 ; CHECK-NEXT: [[TX:%.*]] = call ptr @llvm.aarch64.tagp.p0(ptr [[X]], ptr [[BASETAG]], i64 0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: [[TMP0:%.*]] = zext i32 [[V]] to i64 ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr i32, ptr [[TX]], i32 1 ; CHECK-NEXT: [[TMP2:%.*]] = zext i32 [[W]] to i64 @@ -221,17 +221,17 @@ define void @InitNonConst2(i32 %v, i32 %w) sanitize_memtag { ; CHECK-NEXT: call void @llvm.aarch64.stgp(ptr [[TX]], i64 [[VW]], i64 0) ; CHECK-NEXT: call void @use(ptr nonnull [[TX]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[X]], i64 16) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: ret void ; entry: %x = alloca i32, i32 4, align 4 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) store i32 %v, ptr %x, align 4 %0 = getelementptr i32, ptr %x, i32 1 store i32 %w, ptr %0, align 4 call void @use(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -243,19 +243,19 @@ define void @InitVector() sanitize_memtag { ; CHECK-NEXT: [[BASETAG:%.*]] = call ptr @llvm.aarch64.irg.sp(i64 0) ; CHECK-NEXT: [[X:%.*]] = alloca i32, i32 4, align 16 ; CHECK-NEXT: [[TX:%.*]] = call ptr @llvm.aarch64.tagp.p0(ptr [[X]], ptr [[BASETAG]], i64 0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: call void @llvm.aarch64.stgp(ptr [[TX]], i64 bitcast (<2 x i32> to i64), i64 0) ; CHECK-NEXT: call void @use(ptr nonnull [[TX]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[X]], i64 16) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: ret void ; entry: %x = alloca i32, i32 4, align 4 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) store <2 x i32> , ptr %x, align 4 call void @use(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -302,23 +302,23 @@ define void @InitVectorSplit() sanitize_memtag { ; CHECK-NEXT: [[BASETAG:%.*]] = call ptr @llvm.aarch64.irg.sp(i64 0) ; CHECK-NEXT: [[X:%.*]] = alloca i32, i32 4, align 16 ; CHECK-NEXT: [[TX:%.*]] = call ptr @llvm.aarch64.tagp.p0(ptr [[X]], ptr [[BASETAG]], i64 0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr i32, ptr [[TX]], i32 1 ; CHECK-NEXT: [[TMP1:%.*]] = shl i64 bitcast (<2 x i32> to i64), 32 ; CHECK-NEXT: [[LSHR:%.*]] = lshr i64 bitcast (<2 x i32> to i64), 32 ; CHECK-NEXT: call void @llvm.aarch64.stgp(ptr [[TX]], i64 [[TMP1]], i64 [[LSHR]]) ; CHECK-NEXT: call void @use(ptr nonnull [[TX]]) ; CHECK-NEXT: call void @llvm.aarch64.settag(ptr [[X]], i64 16) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: ret void ; entry: %x = alloca i32, i32 4, align 4 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) %0 = getelementptr i32, ptr %x, i32 1 store <2 x i32> , ptr %0, align 4 call void @use(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } diff --git a/llvm/test/CodeGen/AArch64/stack-tagging-merge-past-memcpy.mir b/llvm/test/CodeGen/AArch64/stack-tagging-merge-past-memcpy.mir index 45f6bfe80ac2b..0fa5103232a89 100644 --- a/llvm/test/CodeGen/AArch64/stack-tagging-merge-past-memcpy.mir +++ b/llvm/test/CodeGen/AArch64/stack-tagging-merge-past-memcpy.mir @@ -18,15 +18,15 @@ %C.tag = call ptr @llvm.aarch64.tagp.p0(ptr %C, ptr %basetag, i64 1) call void @llvm.aarch64.settag(ptr %C.tag, i64 32) call void @F56(ptr %C.tag) - call void @llvm.lifetime.start.p0(i64 32, ptr %A) + call void @llvm.lifetime.start.p0(ptr %A) call void @llvm.aarch64.settag(ptr %A.tag, i64 32) call void @F56(ptr %A.tag) call void @llvm.aarch64.settag(ptr %A, i64 32) - call void @llvm.lifetime.end.p0(i64 32, ptr %A) - call void @llvm.lifetime.start.p0(i64 32, ptr %A) + call void @llvm.lifetime.end.p0(ptr %A) + call void @llvm.lifetime.start.p0(ptr %A) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %A, ptr align 4 @glob, i64 32, i1 false) call void @F78(ptr %A) - call void @llvm.lifetime.end.p0(i64 32, ptr %A) + call void @llvm.lifetime.end.p0(ptr %A) call void @llvm.aarch64.settag(ptr %C, i64 32) ret void } diff --git a/llvm/test/CodeGen/AArch64/stack-tagging-untag-placement.ll b/llvm/test/CodeGen/AArch64/stack-tagging-untag-placement.ll index aa9cccc58712d..91adf8257c992 100644 --- a/llvm/test/CodeGen/AArch64/stack-tagging-untag-placement.ll +++ b/llvm/test/CodeGen/AArch64/stack-tagging-untag-placement.ll @@ -17,17 +17,17 @@ S0: S1: ; CHECK-LABEL: S1: - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %v) #1 + call void @llvm.lifetime.start.p0(ptr nonnull %v) #1 ; CHECK: call void @llvm.aarch64.settag(ptr %v.tag, i64 48) - call void @llvm.lifetime.start.p0(i64 48, ptr nonnull %w) #1 + call void @llvm.lifetime.start.p0(ptr nonnull %w) #1 ; CHECK: call void @llvm.aarch64.settag(ptr %w.tag, i64 48) %t1 = call i32 @g1(ptr nonnull %v, ptr nonnull %w) #1 ; CHECK: call i32 @g1 ; CHECK-NOT: settag{{.*}}%v ; CHECK: call void @llvm.aarch64.settag(ptr %w, i64 48) ; CHECK-NOT: settag{{.*}}%v - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %w) #1 -; CHECK: call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %w) + call void @llvm.lifetime.end.p0(ptr nonnull %w) #1 +; CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %w) %b1 = icmp eq i32 %t1, 0 br i1 %b1, label %S2, label %S3 ; CHECK-NOT: settag @@ -40,7 +40,7 @@ S2: S3: ; CHECK-LABEL: S3: - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %v) #1 + call void @llvm.lifetime.end.p0(ptr nonnull %v) #1 tail call void @z1() #1 br label %exit2 ; CHECK-NOT: settag @@ -73,9 +73,9 @@ declare void @z1() #0 declare void @z2() #0 -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { sanitize_memtag "correctly-rounded-divide-sqrt-fp-math"="false" "denormal-fp-math"="preserve-sign" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-jump-tables"="false" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+mte,+neon,+v8.5a" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { nounwind } diff --git a/llvm/test/CodeGen/AMDGPU/expand-variadic-call.ll b/llvm/test/CodeGen/AMDGPU/expand-variadic-call.ll index f58cb8472bc64..839d0ba35cf11 100644 --- a/llvm/test/CodeGen/AMDGPU/expand-variadic-call.ll +++ b/llvm/test/CodeGen/AMDGPU/expand-variadic-call.ll @@ -38,11 +38,11 @@ define hidden void @copy(ptr noundef %va) { ; CHECK-NEXT: %va.addr.ascast = addrspacecast ptr addrspace(5) %va.addr to ptr ; CHECK-NEXT: %cp.ascast = addrspacecast ptr addrspace(5) %cp to ptr ; CHECK-NEXT: store ptr %va, ptr addrspace(5) %va.addr, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) %cp) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %cp) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr %cp.ascast, ptr %va.addr.ascast, i32 8, i1 false) ; CHECK-NEXT: %0 = load ptr, ptr addrspace(5) %cp, align 8 ; CHECK-NEXT: call void @valist(ptr noundef %0) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) %cp) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %cp) ; CHECK-NEXT: ret void ; entry: @@ -51,43 +51,43 @@ entry: %va.addr.ascast = addrspacecast ptr addrspace(5) %va.addr to ptr %cp.ascast = addrspacecast ptr addrspace(5) %cp to ptr store ptr %va, ptr addrspace(5) %va.addr, align 8 - call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) %cp) + call void @llvm.lifetime.start.p5(ptr addrspace(5) %cp) call void @llvm.va_copy.p0(ptr %cp.ascast, ptr nonnull %va.addr.ascast) %0 = load ptr, ptr addrspace(5) %cp, align 8 call void @valist(ptr noundef %0) - call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) %cp) + call void @llvm.lifetime.end.p5(ptr addrspace(5) %cp) ret void } -declare void @llvm.lifetime.start.p5(i64 immarg, ptr addrspace(5) nocapture) +declare void @llvm.lifetime.start.p5(ptr addrspace(5) nocapture) declare void @llvm.va_copy.p0(ptr, ptr) declare hidden void @valist(ptr noundef) -declare void @llvm.lifetime.end.p5(i64 immarg, ptr addrspace(5) nocapture) +declare void @llvm.lifetime.end.p5(ptr addrspace(5) nocapture) define hidden void @start_once(...) { ; CHECK-LABEL: define {{[^@]+}}@start_once(ptr %varargs) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %s = alloca ptr, align 8, addrspace(5) ; CHECK-NEXT: %s.ascast = addrspacecast ptr addrspace(5) %s to ptr -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) %s) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %s) ; CHECK-NEXT: store ptr %varargs, ptr %s.ascast, align 8 ; CHECK-NEXT: %0 = load ptr, ptr addrspace(5) %s, align 8 ; CHECK-NEXT: call void @valist(ptr noundef %0) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) %s) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %s) ; CHECK-NEXT: ret void ; entry: %s = alloca ptr, align 8, addrspace(5) %s.ascast = addrspacecast ptr addrspace(5) %s to ptr - call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) %s) + call void @llvm.lifetime.start.p5(ptr addrspace(5) %s) call void @llvm.va_start.p0(ptr %s.ascast) %0 = load ptr, ptr addrspace(5) %s, align 8 call void @valist(ptr noundef %0) call void @llvm.va_end.p0(ptr %s.ascast) - call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) %s) + call void @llvm.lifetime.end.p5(ptr addrspace(5) %s) ret void } @@ -102,16 +102,16 @@ define hidden void @start_twice(...) { ; CHECK-NEXT: %s1 = alloca ptr, align 8, addrspace(5) ; CHECK-NEXT: %s0.ascast = addrspacecast ptr addrspace(5) %s0 to ptr ; CHECK-NEXT: %s1.ascast = addrspacecast ptr addrspace(5) %s1 to ptr -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) %s0) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) %s1) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %s0) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %s1) ; CHECK-NEXT: store ptr %varargs, ptr %s0.ascast, align 8 ; CHECK-NEXT: %0 = load ptr, ptr addrspace(5) %s0, align 8 ; CHECK-NEXT: call void @valist(ptr noundef %0) ; CHECK-NEXT: store ptr %varargs, ptr %s1.ascast, align 8 ; CHECK-NEXT: %1 = load ptr, ptr addrspace(5) %s1, align 8 ; CHECK-NEXT: call void @valist(ptr noundef %1) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) %s1) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) %s0) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %s1) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %s0) ; CHECK-NEXT: ret void ; entry: @@ -119,8 +119,8 @@ entry: %s1 = alloca ptr, align 8, addrspace(5) %s0.ascast = addrspacecast ptr addrspace(5) %s0 to ptr %s1.ascast = addrspacecast ptr addrspace(5) %s1 to ptr - call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) %s0) - call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) %s1) + call void @llvm.lifetime.start.p5(ptr addrspace(5) %s0) + call void @llvm.lifetime.start.p5(ptr addrspace(5) %s1) call void @llvm.va_start.p0(ptr %s0.ascast) %0 = load ptr, ptr addrspace(5) %s0, align 8 call void @valist(ptr noundef %0) @@ -129,8 +129,8 @@ entry: %1 = load ptr, ptr addrspace(5) %s1, align 8 call void @valist(ptr noundef %1) call void @llvm.va_end.p0(ptr %s1.ascast) - call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) %s1) - call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) %s0) + call void @llvm.lifetime.end.p5(ptr addrspace(5) %s1) + call void @llvm.lifetime.end.p5(ptr addrspace(5) %s0) ret void } @@ -138,12 +138,12 @@ define hidden void @single_i32(i32 noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_i32(i32 noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_i32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr addrspace(5) %0, align 4 ; CHECK-NEXT: %1 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %1) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -157,12 +157,12 @@ define hidden void @single_double(double noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_double(double noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_double.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 8, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_double.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store double %x, ptr addrspace(5) %0, align 8 ; CHECK-NEXT: %1 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %1) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 8, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -174,12 +174,12 @@ define hidden void @single_v4f32(<4 x float> noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_v4f32(<4 x float> noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_v4f32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 16, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v4f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <4 x float> %x, ptr addrspace(5) %0, align 16 ; CHECK-NEXT: %1 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %1) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 16, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -191,12 +191,12 @@ define hidden void @single_v8f32(<8 x float> noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_v8f32(<8 x float> noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_v8f32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 32, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v8f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <8 x float> %x, ptr addrspace(5) %0, align 32 ; CHECK-NEXT: %1 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %1) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 32, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -208,12 +208,12 @@ define hidden void @single_v16f32(<16 x float> noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_v16f32(<16 x float> noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_v16f32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 64, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v16f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <16 x float> %x, ptr addrspace(5) %0, align 64 ; CHECK-NEXT: %1 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %1) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 64, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -225,12 +225,12 @@ define hidden void @single_v32f32(<32 x float> noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_v32f32(<32 x float> noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_v32f32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 128, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v32f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <32 x float> %x, ptr addrspace(5) %0, align 128 ; CHECK-NEXT: %1 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %1) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 128, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -242,14 +242,14 @@ define hidden void @i32_double(i32 noundef %x, double noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@i32_double(i32 noundef %x, double noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %i32_double.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 12, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_double.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr addrspace(5) %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_double.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store double %y, ptr addrspace(5) %1, align 8 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 12, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -261,14 +261,14 @@ define hidden void @double_i32(double noundef %x, i32 noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@double_i32(double noundef %x, i32 noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %double_i32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 12, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %double_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store double %x, ptr addrspace(5) %0, align 8 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %double_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr addrspace(5) %1, align 4 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 12, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -286,14 +286,14 @@ define hidden void @i32_libcS(i32 noundef %x, i8 %y.coerce0, i16 %y.coerce1, i32 ; CHECK-NEXT: %.fca.3.insert = insertvalue %struct.libcS %.fca.2.insert, i64 %y.coerce3, 3 ; CHECK-NEXT: %.fca.4.insert = insertvalue %struct.libcS %.fca.3.insert, float %y.coerce4, 4 ; CHECK-NEXT: %.fca.5.insert = insertvalue %struct.libcS %.fca.4.insert, double %y.coerce5, 5 -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 36, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_libcS.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr addrspace(5) %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_libcS.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store %struct.libcS %.fca.5.insert, ptr addrspace(5) %1, align 8 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 36, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -317,14 +317,14 @@ define hidden void @libcS_i32(i8 %x.coerce0, i16 %x.coerce1, i32 %x.coerce2, i64 ; CHECK-NEXT: %.fca.3.insert = insertvalue %struct.libcS %.fca.2.insert, i64 %x.coerce3, 3 ; CHECK-NEXT: %.fca.4.insert = insertvalue %struct.libcS %.fca.3.insert, float %x.coerce4, 4 ; CHECK-NEXT: %.fca.5.insert = insertvalue %struct.libcS %.fca.4.insert, double %x.coerce5, 5 -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 36, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %libcS_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store %struct.libcS %.fca.5.insert, ptr addrspace(5) %0, align 8 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %libcS_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr addrspace(5) %1, align 4 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 36, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -342,14 +342,14 @@ define hidden void @i32_v4f32(i32 noundef %x, <4 x float> noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@i32_v4f32(i32 noundef %x, <4 x float> noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %i32_v4f32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 20, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v4f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr addrspace(5) %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v4f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store <4 x float> %y, ptr addrspace(5) %1, align 16 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 20, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -361,14 +361,14 @@ define hidden void @v4f32_i32(<4 x float> noundef %x, i32 noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@v4f32_i32(<4 x float> noundef %x, i32 noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %v4f32_i32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 20, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %v4f32_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <4 x float> %x, ptr addrspace(5) %0, align 16 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %v4f32_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr addrspace(5) %1, align 4 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 20, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -380,14 +380,14 @@ define hidden void @i32_v8f32(i32 noundef %x, <8 x float> noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@i32_v8f32(i32 noundef %x, <8 x float> noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %i32_v8f32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 36, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v8f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr addrspace(5) %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v8f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store <8 x float> %y, ptr addrspace(5) %1, align 32 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 36, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -399,14 +399,14 @@ define hidden void @v8f32_i32(<8 x float> noundef %x, i32 noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@v8f32_i32(<8 x float> noundef %x, i32 noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %v8f32_i32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 36, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %v8f32_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <8 x float> %x, ptr addrspace(5) %0, align 32 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %v8f32_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr addrspace(5) %1, align 4 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 36, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -418,14 +418,14 @@ define hidden void @i32_v16f32(i32 noundef %x, <16 x float> noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@i32_v16f32(i32 noundef %x, <16 x float> noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %i32_v16f32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 68, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v16f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr addrspace(5) %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v16f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store <16 x float> %y, ptr addrspace(5) %1, align 64 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 68, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -437,14 +437,14 @@ define hidden void @v16f32_i32(<16 x float> noundef %x, i32 noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@v16f32_i32(<16 x float> noundef %x, i32 noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %v16f32_i32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 68, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %v16f32_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <16 x float> %x, ptr addrspace(5) %0, align 64 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %v16f32_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr addrspace(5) %1, align 4 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 68, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -456,14 +456,14 @@ define hidden void @i32_v32f32(i32 noundef %x, <32 x float> noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@i32_v32f32(i32 noundef %x, <32 x float> noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %i32_v32f32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 132, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v32f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr addrspace(5) %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v32f32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store <32 x float> %y, ptr addrspace(5) %1, align 128 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 132, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -475,14 +475,14 @@ define hidden void @v32f32_i32(<32 x float> noundef %x, i32 noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@v32f32_i32(<32 x float> noundef %x, i32 noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %v32f32_i32.vararg, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 132, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %v32f32_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <32 x float> %x, ptr addrspace(5) %0, align 128 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %v32f32_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr addrspace(5) %1, align 4 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void @vararg(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 132, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -495,12 +495,12 @@ define hidden void @fptr_single_i32(i32 noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %fptr_single_i32.vararg, align 4, addrspace(5) ; CHECK-NEXT: %0 = load volatile ptr, ptr addrspacecast (ptr addrspace(1) @vararg_ptr to ptr), align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %1 = getelementptr inbounds nuw %fptr_single_i32.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr addrspace(5) %1, align 4 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void %0(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -520,12 +520,12 @@ define hidden void @fptr_libcS(i8 %x.coerce0, i16 %x.coerce1, i32 %x.coerce2, i6 ; CHECK-NEXT: %.fca.3.insert = insertvalue %struct.libcS %.fca.2.insert, i64 %x.coerce3, 3 ; CHECK-NEXT: %.fca.4.insert = insertvalue %struct.libcS %.fca.3.insert, float %x.coerce4, 4 ; CHECK-NEXT: %.fca.5.insert = insertvalue %struct.libcS %.fca.4.insert, double %x.coerce5, 5 -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 32, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: %1 = getelementptr inbounds nuw %fptr_libcS.vararg, ptr addrspace(5) %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store %struct.libcS %.fca.5.insert, ptr addrspace(5) %1, align 8 ; CHECK-NEXT: %2 = addrspacecast ptr addrspace(5) %vararg_buffer to ptr ; CHECK-NEXT: call void %0(ptr %2) -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 32, ptr addrspace(5) %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) %vararg_buffer) ; CHECK-NEXT: ret void ; entry: diff --git a/llvm/test/CodeGen/BPF/loop-exit-cond.ll b/llvm/test/CodeGen/BPF/loop-exit-cond.ll index 69fe7148daa74..fa6a4a0254e79 100644 --- a/llvm/test/CodeGen/BPF/loop-exit-cond.ll +++ b/llvm/test/CodeGen/BPF/loop-exit-cond.ll @@ -35,14 +35,14 @@ define dso_local i32 @test(i32 %len, ptr %data) #0 { ; CHECK-NEXT: br i1 [[OR_COND]], label [[FOR_BODY:%.*]], label [[IF_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[I_05:%.*]] = phi i32 [ [[INC:%.*]], [[FOR_BODY]] ], [ 1, [[ENTRY:%.*]] ] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[D]]) #[[ATTR3:[0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[D]]) #[[ATTR3:[0-9]+]] ; CHECK-NEXT: [[TMP1:%.*]] = load i8, ptr [[DATA]], align 1, !tbaa [[TBAA3:![0-9]+]] ; CHECK-NEXT: [[TOBOOL_NOT:%.*]] = icmp eq i8 [[TMP1]], 0 ; CHECK-NEXT: [[NARROW:%.*]] = select i1 [[TOBOOL_NOT]], i8 48, i8 [[TMP1]] ; CHECK-NEXT: [[CONV2:%.*]] = sext i8 [[NARROW]] to i64 ; CHECK-NEXT: store i64 [[CONV2]], ptr [[D]], align 8, !tbaa [[TBAA6:![0-9]+]] ; CHECK-NEXT: call void @foo(ptr nonnull @.str, i32 [[I_05]], ptr nonnull [[D]]) #[[ATTR3]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[D]]) #[[ATTR3]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[D]]) #[[ATTR3]] ; CHECK-NEXT: [[INC]] = add nuw nsw i32 [[I_05]], 1 ; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i32 [[INC]], [[LEN]] ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label [[IF_END]], label [[FOR_BODY]], !llvm.loop [[LOOP8:![0-9]+]] @@ -61,7 +61,7 @@ entry: br i1 %cmp, label %if.then, label %if.end if.then: ; preds = %entry - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #3 + call void @llvm.lifetime.start.p0(ptr %i) #3 store i32 1, ptr %i, align 4, !tbaa !3 br label %for.cond @@ -73,11 +73,11 @@ for.cond: ; preds = %for.inc, %if.then for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #3 + call void @llvm.lifetime.end.p0(ptr %i) #3 br label %for.end for.body: ; preds = %for.cond - call void @llvm.lifetime.start.p0(i64 8, ptr %d) #3 + call void @llvm.lifetime.start.p0(ptr %d) #3 %3 = load ptr, ptr %data.addr, align 8, !tbaa !7 %4 = load i8, ptr %3, align 1, !tbaa !9 %conv = sext i8 %4 to i32 @@ -96,7 +96,7 @@ cond.end: ; preds = %cond.false, %cond.t store i64 %conv2, ptr %d, align 8, !tbaa !10 %5 = load i32, ptr %i, align 4, !tbaa !3 call void @foo(ptr @.str, i32 %5, ptr %d) - call void @llvm.lifetime.end.p0(i64 8, ptr %d) #3 + call void @llvm.lifetime.end.p0(ptr %d) #3 br label %for.inc for.inc: ; preds = %cond.end @@ -113,12 +113,12 @@ if.end: ; preds = %for.end, %entry } ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare dso_local void @foo(ptr, i32, ptr) #2 ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" } attributes #1 = { argmemonly nofree nosync nounwind willreturn } diff --git a/llvm/test/CodeGen/BPF/vla.ll b/llvm/test/CodeGen/BPF/vla.ll index 9a2276970bb52..708b41efac257 100644 --- a/llvm/test/CodeGen/BPF/vla.ll +++ b/llvm/test/CodeGen/BPF/vla.ll @@ -33,17 +33,17 @@ define dso_local i32 @test1() { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[SAVED_STACK:%.*]] = alloca ptr, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: store i32 8, ptr [[A]], align 4 ; CHECK-NEXT: [[VLA:%.*]] = alloca i8, i64 68, align 1 ; CHECK-NEXT: call void @foo(ptr [[VLA]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret i32 0 ; entry: %a = alloca i32, align 4 %saved_stack = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) store i32 8, ptr %a, align 4 %0 = call ptr @llvm.stacksave() store ptr %0, ptr %saved_stack, align 8 @@ -51,11 +51,11 @@ entry: call void @foo(ptr %vla) %1 = load ptr, ptr %saved_stack, align 8 call void @llvm.stackrestore(ptr %1) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret i32 0 } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare ptr @llvm.stacksave() @@ -63,7 +63,7 @@ declare dso_local void @foo(ptr) declare void @llvm.stackrestore(ptr) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define dso_local i32 @test2(i32 %b) { ; CHECK-LABEL: @test2( @@ -73,7 +73,7 @@ define dso_local i32 @test2(i32 %b) { ; CHECK-NEXT: [[SAVED_STACK:%.*]] = alloca ptr, align 8 ; CHECK-NEXT: [[__VLA_EXPR0:%.*]] = alloca i64, align 8 ; CHECK-NEXT: store i32 [[B:%.*]], ptr [[B_ADDR]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: store i32 8, ptr [[A]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[B_ADDR]], align 4 ; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 8, [[TMP1]] @@ -81,7 +81,7 @@ define dso_local i32 @test2(i32 %b) { ; CHECK-NEXT: [[VLA:%.*]] = alloca i8, i64 [[TMP2]], align 1 ; CHECK-NEXT: store i64 [[TMP2]], ptr [[__VLA_EXPR0]], align 8 ; CHECK-NEXT: call void @foo(ptr [[VLA]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret i32 0 ; entry: @@ -90,7 +90,7 @@ entry: %saved_stack = alloca ptr, align 8 %__vla_expr0 = alloca i64, align 8 store i32 %b, ptr %b.addr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) store i32 8, ptr %a, align 4 %0 = load i32, ptr %b.addr, align 4 %add = add nsw i32 8, %0 @@ -102,6 +102,6 @@ entry: call void @foo(ptr %vla) %3 = load ptr, ptr %saved_stack, align 8 call void @llvm.stackrestore(ptr %3) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret i32 0 } diff --git a/llvm/test/CodeGen/NVPTX/frameindex-lifetime.ll b/llvm/test/CodeGen/NVPTX/frameindex-lifetime.ll index 42655538cc7ad..9c564ffe7037e 100644 --- a/llvm/test/CodeGen/NVPTX/frameindex-lifetime.ll +++ b/llvm/test/CodeGen/NVPTX/frameindex-lifetime.ll @@ -44,8 +44,8 @@ declare void @bar(ptr) define void @foo() { %p = alloca i32 - call void @llvm.lifetime.start(i64 4, ptr %p) + call void @llvm.lifetime.start(ptr %p) call void @bar(ptr %p) - call void @llvm.lifetime.end(i64 4, ptr %p) + call void @llvm.lifetime.end(ptr %p) ret void } diff --git a/llvm/test/CodeGen/NVPTX/variadics-lowering.ll b/llvm/test/CodeGen/NVPTX/variadics-lowering.ll index 5502980a263b2..1d69f8de2ca8c 100644 --- a/llvm/test/CodeGen/NVPTX/variadics-lowering.ll +++ b/llvm/test/CodeGen/NVPTX/variadics-lowering.ll @@ -119,7 +119,7 @@ define dso_local i32 @foo() { ; CHECK-NEXT: [[CONV:%.*]] = sext i8 1 to i32 ; CHECK-NEXT: [[CONV1:%.*]] = sext i16 1 to i32 ; CHECK-NEXT: [[CONV2:%.*]] = fpext float 1.000000e+00 to double -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 40, ptr [[VARARG_BUFFER]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[FOO_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; CHECK-NEXT: store i32 [[CONV]], ptr [[TMP0]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[FOO_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 @@ -133,7 +133,7 @@ define dso_local i32 @foo() { ; CHECK-NEXT: [[TMP5:%.*]] = getelementptr inbounds nuw [[FOO_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 6 ; CHECK-NEXT: store double 1.000000e+00, ptr [[TMP5]], align 8 ; CHECK-NEXT: [[CALL:%.*]] = call i32 @variadics1(i32 noundef 1, ptr [[VARARG_BUFFER]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 40, ptr [[VARARG_BUFFER]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; CHECK-NEXT: ret i32 [[CALL]] ; entry: @@ -208,7 +208,7 @@ define dso_local i32 @bar() { ; CHECK-NEXT: [[S1_SROA_2_0_COPYLOAD:%.*]] = load i8, ptr getelementptr inbounds (i8, ptr @__const.bar.s1, i64 4), align 4 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 1 [[S1_SROA_3]], ptr align 1 getelementptr inbounds (i8, ptr @__const.bar.s1, i64 5), i64 3, i1 false) ; CHECK-NEXT: [[S1_SROA_31_0_COPYLOAD:%.*]] = load i64, ptr getelementptr inbounds (i8, ptr @__const.bar.s1, i64 8), align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[VARARG_BUFFER]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[BAR_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; CHECK-NEXT: store i32 [[S1_SROA_0_0_COPYLOAD]], ptr [[TMP0]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[BAR_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 @@ -216,7 +216,7 @@ define dso_local i32 @bar() { ; CHECK-NEXT: [[TMP2:%.*]] = getelementptr inbounds nuw [[BAR_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 3 ; CHECK-NEXT: store i64 [[S1_SROA_31_0_COPYLOAD]], ptr [[TMP2]], align 8 ; CHECK-NEXT: [[CALL:%.*]] = call i32 @variadics2(i32 noundef 1, ptr [[VARARG_BUFFER]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[VARARG_BUFFER]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; CHECK-NEXT: ret i32 [[CALL]] ; entry: @@ -274,11 +274,11 @@ define dso_local i32 @baz() { ; CHECK-LABEL: define dso_local i32 @baz() { ; CHECK-NEXT: [[ENTRY:.*:]] ; CHECK-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[BAZ_VARARG:%.*]], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[VARARG_BUFFER]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[BAZ_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; CHECK-NEXT: store <4 x i32> splat (i32 1), ptr [[TMP0]], align 16 ; CHECK-NEXT: [[CALL:%.*]] = call i32 @variadics3(i32 noundef 1, ptr [[VARARG_BUFFER]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[VARARG_BUFFER]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; CHECK-NEXT: ret i32 [[CALL]] ; entry: @@ -333,11 +333,11 @@ define dso_local void @qux() { ; CHECK-NEXT: [[S:%.*]] = alloca [[STRUCT_S2:%.*]], align 8 ; CHECK-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[QUX_VARARG:%.*]], align 8 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[S]], ptr align 8 @__const.qux.s, i64 16, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VARARG_BUFFER]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[QUX_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; CHECK-NEXT: store i64 1, ptr [[TMP0]], align 8 ; CHECK-NEXT: [[CALL:%.*]] = call i32 @variadics4(ptr noundef byval([[STRUCT_S2]]) align 8 [[S]], ptr [[VARARG_BUFFER]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VARARG_BUFFER]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; CHECK-NEXT: ret void ; entry: diff --git a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/lifetime.ll b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/lifetime.ll index 483d7077a66f9..3d93eca72aaed 100644 --- a/llvm/test/CodeGen/SPIRV/llvm-intrinsics/lifetime.ll +++ b/llvm/test/CodeGen/SPIRV/llvm-intrinsics/lifetime.ll @@ -17,11 +17,11 @@ ; CL: OpFunction ; CL: %[[#FooVar:]] = OpVariable ; CL-NEXT: %[[#Casted1:]] = OpBitcast %[[#PtrChar]] %[[#FooVar]] -; CL-NEXT: OpLifetimeStart %[[#Casted1]], 72 +; CL-NEXT: OpLifetimeStart %[[#Casted1]], 16 ; CL-NEXT: OpBitcast ; CL-NEXT: OpInBoundsPtrAccessChain ; CL-NEXT: %[[#Casted2:]] = OpBitcast %[[#PtrChar]] %[[#FooVar]] -; CL-NEXT: OpLifetimeStop %[[#Casted2]], 72 +; CL-NEXT: OpLifetimeStop %[[#Casted2]], 16 ; VK: OpFunction ; VK: %[[#FooVar:]] = OpVariable @@ -29,18 +29,20 @@ ; VK-NEXT: OpReturn define spir_func void @foo(ptr noundef byval(%tprange) align 8 %_arg_UserRange) { %RoundedRangeKernel = alloca %tprange, align 8 - call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %RoundedRangeKernel) + call void @llvm.lifetime.start.p0(ptr nonnull %RoundedRangeKernel) %KernelFunc = getelementptr inbounds i8, ptr %RoundedRangeKernel, i64 8 - call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %RoundedRangeKernel) + call void @llvm.lifetime.end.p0(ptr nonnull %RoundedRangeKernel) ret void } ; CL: OpFunction ; CL: %[[#BarVar:]] = OpVariable -; CL-NEXT: OpLifetimeStart %[[#BarVar]], 0 +; CL-NEXT: %[[#Casted1:]] = OpBitcast %[[#PtrChar]] %[[#BarVar]] +; CL-NEXT: OpLifetimeStart %[[#Casted1]], 16 ; CL-NEXT: OpBitcast ; CL-NEXT: OpInBoundsPtrAccessChain -; CL-NEXT: OpLifetimeStop %[[#BarVar]], 0 +; CL-NEXT: %[[#Casted2:]] = OpBitcast %[[#PtrChar]] %[[#BarVar]] +; CL-NEXT: OpLifetimeStop %[[#Casted2]], 16 ; VK: OpFunction ; VK: %[[#BarVar:]] = OpVariable @@ -48,9 +50,9 @@ define spir_func void @foo(ptr noundef byval(%tprange) align 8 %_arg_UserRange) ; VK-NEXT: OpReturn define spir_func void @bar(ptr noundef byval(%tprange) align 8 %_arg_UserRange) { %RoundedRangeKernel = alloca %tprange, align 8 - call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %RoundedRangeKernel) + call void @llvm.lifetime.start.p0(ptr nonnull %RoundedRangeKernel) %KernelFunc = getelementptr inbounds i8, ptr %RoundedRangeKernel, i64 8 - call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %RoundedRangeKernel) + call void @llvm.lifetime.end.p0(ptr nonnull %RoundedRangeKernel) ret void } @@ -66,12 +68,12 @@ define spir_func void @bar(ptr noundef byval(%tprange) align 8 %_arg_UserRange) ; VK-NEXT: OpReturn define spir_func void @test(ptr noundef align 8 %_arg) { %var = alloca i8, align 8 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %var) + call void @llvm.lifetime.start.p0(ptr nonnull %var) %KernelFunc = getelementptr inbounds i8, ptr %var, i64 1 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %var) + call void @llvm.lifetime.end.p0(ptr nonnull %var) ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/CodeGen/WebAssembly/expand-variadic-call.ll b/llvm/test/CodeGen/WebAssembly/expand-variadic-call.ll index a27650f9cd961..7a90d28abeef5 100644 --- a/llvm/test/CodeGen/WebAssembly/expand-variadic-call.ll +++ b/llvm/test/CodeGen/WebAssembly/expand-variadic-call.ll @@ -37,52 +37,52 @@ define hidden void @copy(ptr noundef %va) { ; CHECK-NEXT: %va.addr = alloca ptr, align 4 ; CHECK-NEXT: %cp = alloca ptr, align 4 ; CHECK-NEXT: store ptr %va, ptr %va.addr, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %cp) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %cp) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr %cp, ptr %va.addr, i32 4, i1 false) ; CHECK-NEXT: %0 = load ptr, ptr %cp, align 4 ; CHECK-NEXT: call void @valist(ptr noundef %0) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %cp) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %cp) ; CHECK-NEXT: ret void ; entry: %va.addr = alloca ptr, align 4 %cp = alloca ptr, align 4 store ptr %va, ptr %va.addr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %cp) + call void @llvm.lifetime.start.p0(ptr nonnull %cp) call void @llvm.va_copy.p0(ptr nonnull %cp, ptr nonnull %va.addr) %0 = load ptr, ptr %cp, align 4 call void @valist(ptr noundef %0) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %cp) + call void @llvm.lifetime.end.p0(ptr nonnull %cp) ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @llvm.va_copy.p0(ptr, ptr) declare void @valist(ptr noundef) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define hidden void @start_once(...) { ; CHECK-LABEL: define {{[^@]+}}@start_once(ptr %varargs) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %s = alloca ptr, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %s) ; CHECK-NEXT: store ptr %varargs, ptr %s, align 4 ; CHECK-NEXT: %0 = load ptr, ptr %s, align 4 ; CHECK-NEXT: call void @valist(ptr noundef %0) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %s) ; CHECK-NEXT: ret void ; entry: %s = alloca ptr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s) + call void @llvm.lifetime.start.p0(ptr nonnull %s) call void @llvm.va_start.p0(ptr nonnull %s) %0 = load ptr, ptr %s, align 4 call void @valist(ptr noundef %0) call void @llvm.va_end.p0(ptr %s) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s) + call void @llvm.lifetime.end.p0(ptr nonnull %s) ret void } @@ -95,23 +95,23 @@ define hidden void @start_twice(...) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %s0 = alloca ptr, align 4 ; CHECK-NEXT: %s1 = alloca ptr, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s0) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s1) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %s0) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %s1) ; CHECK-NEXT: store ptr %varargs, ptr %s0, align 4 ; CHECK-NEXT: %0 = load ptr, ptr %s0, align 4 ; CHECK-NEXT: call void @valist(ptr noundef %0) ; CHECK-NEXT: store ptr %varargs, ptr %s1, align 4 ; CHECK-NEXT: %1 = load ptr, ptr %s1, align 4 ; CHECK-NEXT: call void @valist(ptr noundef %1) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s1) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s0) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %s1) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull %s0) ; CHECK-NEXT: ret void ; entry: %s0 = alloca ptr, align 4 %s1 = alloca ptr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s0) - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s1) + call void @llvm.lifetime.start.p0(ptr nonnull %s0) + call void @llvm.lifetime.start.p0(ptr nonnull %s1) call void @llvm.va_start.p0(ptr nonnull %s0) %0 = load ptr, ptr %s0, align 4 call void @valist(ptr noundef %0) @@ -120,8 +120,8 @@ entry: %1 = load ptr, ptr %s1, align 4 call void @valist(ptr noundef %1) call void @llvm.va_end.p0(ptr %s1) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s1) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s0) + call void @llvm.lifetime.end.p0(ptr nonnull %s1) + call void @llvm.lifetime.end.p0(ptr nonnull %s0) ret void } @@ -129,11 +129,11 @@ define hidden void @single_i32(i32 noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_i32(i32 noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_i32.vararg, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_i32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr %0, align 4 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -147,11 +147,11 @@ define hidden void @single_double(double noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_double(double noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_double.vararg, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_double.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store double %x, ptr %0, align 8 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -163,11 +163,11 @@ define hidden void @single_v4f32(<4 x float> noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_v4f32(<4 x float> noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_v4f32.vararg, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v4f32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <4 x float> %x, ptr %0, align 16 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -179,11 +179,11 @@ define hidden void @single_v8f32(<8 x float> noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_v8f32(<8 x float> noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_v8f32.vararg, align 32 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v8f32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <8 x float> %x, ptr %0, align 32 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -195,11 +195,11 @@ define hidden void @single_v16f32(<16 x float> noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_v16f32(<16 x float> noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_v16f32.vararg, align 64 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v16f32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <16 x float> %x, ptr %0, align 64 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -211,11 +211,11 @@ define hidden void @single_v32f32(<32 x float> noundef %x) { ; CHECK-LABEL: define {{[^@]+}}@single_v32f32(<32 x float> noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %single_v32f32.vararg, align 128 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 128, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %single_v32f32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <32 x float> %x, ptr %0, align 128 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 128, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -227,13 +227,13 @@ define hidden void @i32_double(i32 noundef %x, double noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@i32_double(i32 noundef %x, double noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %i32_double.vararg, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_double.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_double.vararg, ptr %vararg_buffer, i32 0, i32 2 ; CHECK-NEXT: store double %y, ptr %1, align 8 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -245,13 +245,13 @@ define hidden void @double_i32(double noundef %x, i32 noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@double_i32(double noundef %x, i32 noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %double_i32.vararg, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %double_i32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store double %x, ptr %0, align 8 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %double_i32.vararg, ptr %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr %1, align 4 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -265,13 +265,13 @@ define hidden void @i32_libcS(i32 noundef %x, ptr noundef byval(%struct.libcS) a ; CHECK-NEXT: %IndirectAlloca = alloca %struct.libcS, align 8 ; CHECK-NEXT: %vararg_buffer = alloca %i32_libcS.vararg, align 16 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr %IndirectAlloca, ptr %y, i64 24, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_libcS.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_libcS.vararg, ptr %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store ptr %IndirectAlloca, ptr %1, align 4 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -285,13 +285,13 @@ define hidden void @libcS_i32(ptr noundef byval(%struct.libcS) align 8 %x, i32 n ; CHECK-NEXT: %IndirectAlloca = alloca %struct.libcS, align 8 ; CHECK-NEXT: %vararg_buffer = alloca %libcS_i32.vararg, align 16 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr %IndirectAlloca, ptr %x, i64 24, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %libcS_i32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store ptr %IndirectAlloca, ptr %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %libcS_i32.vararg, ptr %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr %1, align 4 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -303,13 +303,13 @@ define hidden void @i32_v4f32(i32 noundef %x, <4 x float> noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@i32_v4f32(i32 noundef %x, <4 x float> noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %i32_v4f32.vararg, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v4f32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v4f32.vararg, ptr %vararg_buffer, i32 0, i32 2 ; CHECK-NEXT: store <4 x float> %y, ptr %1, align 16 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -321,13 +321,13 @@ define hidden void @v4f32_i32(<4 x float> noundef %x, i32 noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@v4f32_i32(<4 x float> noundef %x, i32 noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %v4f32_i32.vararg, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %v4f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <4 x float> %x, ptr %0, align 16 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %v4f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr %1, align 4 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -339,13 +339,13 @@ define hidden void @i32_v8f32(i32 noundef %x, <8 x float> noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@i32_v8f32(i32 noundef %x, <8 x float> noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %i32_v8f32.vararg, align 32 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v8f32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v8f32.vararg, ptr %vararg_buffer, i32 0, i32 2 ; CHECK-NEXT: store <8 x float> %y, ptr %1, align 32 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -357,13 +357,13 @@ define hidden void @v8f32_i32(<8 x float> noundef %x, i32 noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@v8f32_i32(<8 x float> noundef %x, i32 noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %v8f32_i32.vararg, align 32 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 36, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %v8f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <8 x float> %x, ptr %0, align 32 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %v8f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr %1, align 4 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 36, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -375,13 +375,13 @@ define hidden void @i32_v16f32(i32 noundef %x, <16 x float> noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@i32_v16f32(i32 noundef %x, <16 x float> noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %i32_v16f32.vararg, align 64 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 128, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v16f32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v16f32.vararg, ptr %vararg_buffer, i32 0, i32 2 ; CHECK-NEXT: store <16 x float> %y, ptr %1, align 64 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 128, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -393,13 +393,13 @@ define hidden void @v16f32_i32(<16 x float> noundef %x, i32 noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@v16f32_i32(<16 x float> noundef %x, i32 noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %v16f32_i32.vararg, align 64 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 68, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %v16f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <16 x float> %x, ptr %0, align 64 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %v16f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr %1, align 4 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 68, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -411,13 +411,13 @@ define hidden void @i32_v32f32(i32 noundef %x, <32 x float> noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@i32_v32f32(i32 noundef %x, <32 x float> noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %i32_v32f32.vararg, align 128 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 256, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %i32_v32f32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %i32_v32f32.vararg, ptr %vararg_buffer, i32 0, i32 2 ; CHECK-NEXT: store <32 x float> %y, ptr %1, align 128 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 256, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -429,13 +429,13 @@ define hidden void @v32f32_i32(<32 x float> noundef %x, i32 noundef %y) { ; CHECK-LABEL: define {{[^@]+}}@v32f32_i32(<32 x float> noundef %x, i32 noundef %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %v32f32_i32.vararg, align 128 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 132, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds nuw %v32f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store <32 x float> %x, ptr %0, align 128 ; CHECK-NEXT: %1 = getelementptr inbounds nuw %v32f32_i32.vararg, ptr %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store i32 %y, ptr %1, align 4 ; CHECK-NEXT: call void @vararg(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 132, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -448,11 +448,11 @@ define hidden void @fptr_single_i32(i32 noundef %x) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %fptr_single_i32.vararg, align 16 ; CHECK-NEXT: %0 = load volatile ptr, ptr @vararg_ptr, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %1 = getelementptr inbounds nuw %fptr_single_i32.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr %1, align 4 ; CHECK-NEXT: call void %0(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: @@ -468,11 +468,11 @@ define hidden void @fptr_libcS(ptr noundef byval(%struct.libcS) align 8 %x) { ; CHECK-NEXT: %vararg_buffer = alloca %fptr_libcS.vararg, align 16 ; CHECK-NEXT: %0 = load volatile ptr, ptr @vararg_ptr, align 4 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr %IndirectAlloca, ptr %x, i64 24, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %1 = getelementptr inbounds nuw %fptr_libcS.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store ptr %IndirectAlloca, ptr %1, align 4 ; CHECK-NEXT: call void %0(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: ret void ; entry: diff --git a/llvm/test/CodeGen/WebAssembly/lower-em-sjlj-alloca.ll b/llvm/test/CodeGen/WebAssembly/lower-em-sjlj-alloca.ll index 0f968de8a7344..3264fe9a20b4c 100644 --- a/llvm/test/CodeGen/WebAssembly/lower-em-sjlj-alloca.ll +++ b/llvm/test/CodeGen/WebAssembly/lower-em-sjlj-alloca.ll @@ -18,7 +18,7 @@ define void @test_static() { ; CHECK-NEXT: i32 1, label %[[ENTRY_SPLIT_SPLIT:.*]] ; CHECK-NEXT: ] ; CHECK: [[ENTRY_SPLIT]]: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) ; CHECK-NEXT: call void @__wasm_setjmp(ptr @buf, i32 1, ptr [[FUNCTIONINVOCATIONID]]) ; CHECK-NEXT: br label %[[ENTRY_SPLIT_SPLIT]] ; CHECK: [[ENTRY_SPLIT_SPLIT]]: @@ -31,7 +31,7 @@ define void @test_static() { ; CHECK: [[_NOEXC:.*:]] ; CHECK-NEXT: ret void ; CHECK: [[ELSE]]: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) ; CHECK-NEXT: ret void ; CHECK: [[CATCH_DISPATCH_LONGJMP]]: ; CHECK-NEXT: [[TMP0:%.*]] = catchswitch within none [label %catch.longjmp] unwind to caller @@ -53,7 +53,7 @@ define void @test_static() { ; entry: %x = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) %call = call i32 @setjmp(ptr @buf) returns_twice %cmp = icmp eq i32 %call, 0 br i1 %cmp, label %if, label %else @@ -63,7 +63,7 @@ if: ret void else: - call void @llvm.lifetime.end.p0(i64 4, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) ret void } @@ -114,7 +114,7 @@ define void @test_dynamic(i32 %size) { ; entry: %x = alloca i32, i32 %size, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) %call = call i32 @setjmp(ptr @buf) returns_twice %cmp = icmp eq i32 %call, 0 br i1 %cmp, label %if, label %else @@ -124,6 +124,6 @@ if: ret void else: - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) ret void } diff --git a/llvm/test/CodeGen/WebAssembly/returned.ll b/llvm/test/CodeGen/WebAssembly/returned.ll index aef75d8bee437..bad9d608b4bf0 100644 --- a/llvm/test/CodeGen/WebAssembly/returned.ll +++ b/llvm/test/CodeGen/WebAssembly/returned.ll @@ -99,8 +99,8 @@ define void @test() { ; CHECK-NEXT: return entry: %a = alloca i32 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) %ret = call ptr @returns_arg(ptr %a) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } diff --git a/llvm/test/CodeGen/X86/pr140491-sincos-lifetimes.ll b/llvm/test/CodeGen/X86/pr140491-sincos-lifetimes.ll index 2ca99bdc4b316..58dfd63641d5b 100644 --- a/llvm/test/CodeGen/X86/pr140491-sincos-lifetimes.ll +++ b/llvm/test/CodeGen/X86/pr140491-sincos-lifetimes.ll @@ -51,20 +51,20 @@ entry: %sincos = tail call { float, float } @llvm.sincos.f32(float %in) %sin = extractvalue { float, float } %sincos, 0 %cos = extractvalue { float, float } %sincos, 1 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %computed) + call void @llvm.lifetime.start.p0(ptr nonnull %computed) store float %cos, ptr %computed, align 4 call void @use_ptr(ptr nonnull %computed) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %computed) - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %computed1) + call void @llvm.lifetime.end.p0(ptr nonnull %computed) + call void @llvm.lifetime.start.p0(ptr nonnull %computed1) %fneg_sin = fneg float %sin store float %fneg_sin, ptr %computed1, align 4 call void @use_ptr(ptr nonnull %computed1) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %computed1) - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %computed3) + call void @llvm.lifetime.end.p0(ptr nonnull %computed1) + call void @llvm.lifetime.start.p0(ptr nonnull %computed3) %fneg_cos = fneg float %cos store float %fneg_cos, ptr %computed3, align 4 call void @use_ptr(ptr nonnull %computed3) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %computed3) + call void @llvm.lifetime.end.p0(ptr nonnull %computed3) ret i32 0 } diff --git a/llvm/test/CodeGen/X86/select-optimize.ll b/llvm/test/CodeGen/X86/select-optimize.ll index c7cf9cb221300..6cb49f243ec69 100644 --- a/llvm/test/CodeGen/X86/select-optimize.ll +++ b/llvm/test/CodeGen/X86/select-optimize.ll @@ -233,7 +233,7 @@ define i32 @expensive_val_operand5(i32 %b, i32 %y, i1 %cmp) { ; CHECK-LABEL: @expensive_val_operand5( ; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[LOAD:%.*]] = load i32, ptr [[A]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[A]]) ; CHECK-NEXT: [[CMP_FROZEN:%.*]] = freeze i1 [[CMP:%.*]] ; CHECK-NEXT: br i1 [[CMP_FROZEN]], label [[SELECT_TRUE_SINK:%.*]], label [[SELECT_END:%.*]], !prof [[PROF18]] ; CHECK: select.true.sink: @@ -245,7 +245,7 @@ define i32 @expensive_val_operand5(i32 %b, i32 %y, i1 %cmp) { ; %a = alloca i32 %load = load i32, ptr %a, align 8 - call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) %x = add i32 %load, %b %sel = select i1 %cmp, i32 %x, i32 %y, !prof !17 ret i32 %sel @@ -520,7 +520,7 @@ for.body: ; preds = %for.body.preheader, declare void @llvm.dbg.value(metadata, metadata, metadata) ; Function Attrs: argmemonly mustprogress nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @free(ptr nocapture) diff --git a/llvm/test/Instrumentation/AddressSanitizer/lifetime-uar-uas.ll b/llvm/test/Instrumentation/AddressSanitizer/lifetime-uar-uas.ll index 3685d8d530bed..aad8940689b4a 100644 --- a/llvm/test/Instrumentation/AddressSanitizer/lifetime-uar-uas.ll +++ b/llvm/test/Instrumentation/AddressSanitizer/lifetime-uar-uas.ll @@ -8,9 +8,6 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind - define i32 @basic_test(i64 %i) sanitize_address { ; CHECK-LABEL: define i32 @basic_test( @@ -22,7 +19,7 @@ entry: ; CHECK-UAS: store i64 -868082052615769615, ptr %{{[0-9]+}} ; CHECK-UAS-SS-NOT: store i64 - call void @llvm.lifetime.start.p0(i64 2, ptr %c) + call void @llvm.lifetime.start.p0(ptr %c) ; Memory is unpoisoned at llvm.lifetime.start: 01 ; CHECK-UAS: store i8 2, ptr %{{[0-9]+}} @@ -30,7 +27,7 @@ entry: store volatile i32 0, ptr %retval store volatile i8 0, ptr %ci, align 1 - call void @llvm.lifetime.end.p0(i64 2, ptr %c) + call void @llvm.lifetime.end.p0(ptr %c) ; Memory is poisoned at llvm.lifetime.end: F8 ; CHECK-UAS: store i8 -8, ptr %{{[0-9]+}} ; CHECK-UAS-SS-NOT: store i8 -8, diff --git a/llvm/test/Instrumentation/AddressSanitizer/lifetime.ll b/llvm/test/Instrumentation/AddressSanitizer/lifetime.ll index 959437001a039..d1e01807f6c26 100644 --- a/llvm/test/Instrumentation/AddressSanitizer/lifetime.ll +++ b/llvm/test/Instrumentation/AddressSanitizer/lifetime.ll @@ -9,73 +9,10 @@ target triple = "x86_64-unknown-linux-gnu" declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind -define void @lifetime_no_size(i64 %i) sanitize_address { -; CHECK-LABEL: define void @lifetime_no_size( -; CHECK-SAME: i64 [[I:%.*]]) #[[ATTR1:[0-9]+]] { -; CHECK-NEXT: [[ENTRY:.*:]] -; CHECK-NEXT: [[MYALLOCA:%.*]] = alloca i8, i64 64, align 32 -; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[MYALLOCA]] to i64 -; CHECK-NEXT: [[TMP1:%.*]] = add i64 [[TMP0]], 32 -; CHECK-NEXT: [[TMP2:%.*]] = inttoptr i64 [[TMP1]] to ptr -; CHECK-NEXT: [[TMP3:%.*]] = inttoptr i64 [[TMP0]] to ptr -; CHECK-NEXT: store i64 1102416563, ptr [[TMP3]], align 8 -; CHECK-NEXT: [[TMP4:%.*]] = add i64 [[TMP0]], 8 -; CHECK-NEXT: [[TMP5:%.*]] = inttoptr i64 [[TMP4]] to ptr -; CHECK-NEXT: store i64 ptrtoint (ptr @___asan_gen_stack to i64), ptr [[TMP5]], align 8 -; CHECK-NEXT: [[TMP6:%.*]] = add i64 [[TMP0]], 16 -; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr -; CHECK-NEXT: store i64 ptrtoint (ptr @lifetime_no_size to i64), ptr [[TMP7]], align 8 -; CHECK-NEXT: [[TMP8:%.*]] = lshr i64 [[TMP0]], 3 -; CHECK-NEXT: [[TMP9:%.*]] = add i64 [[TMP8]], 2147450880 -; CHECK-NEXT: [[TMP10:%.*]] = add i64 [[TMP9]], 0 -; CHECK-NEXT: [[TMP11:%.*]] = inttoptr i64 [[TMP10]] to ptr -; CHECK-NEXT: store i64 -868083117767659023, ptr [[TMP11]], align 1 -; CHECK-NEXT: [[AI:%.*]] = getelementptr inbounds [2 x i32], ptr [[TMP2]], i64 0, i64 [[I]] -; CHECK-NEXT: [[TMP12:%.*]] = ptrtoint ptr [[AI]] to i64 -; CHECK-NEXT: [[TMP13:%.*]] = lshr i64 [[TMP12]], 3 -; CHECK-NEXT: [[TMP14:%.*]] = add i64 [[TMP13]], 2147450880 -; CHECK-NEXT: [[TMP15:%.*]] = inttoptr i64 [[TMP14]] to ptr -; CHECK-NEXT: [[TMP16:%.*]] = load i8, ptr [[TMP15]], align 1 -; CHECK-NEXT: [[TMP17:%.*]] = icmp ne i8 [[TMP16]], 0 -; CHECK-NEXT: br i1 [[TMP17]], label %[[BB18:.*]], label %[[BB23:.*]], !prof [[PROF1:![0-9]+]] -; CHECK: [[BB18]]: -; CHECK-NEXT: [[TMP19:%.*]] = and i64 [[TMP12]], 7 -; CHECK-NEXT: [[TMP20:%.*]] = trunc i64 [[TMP19]] to i8 -; CHECK-NEXT: [[TMP21:%.*]] = icmp sge i8 [[TMP20]], [[TMP16]] -; CHECK-NEXT: br i1 [[TMP21]], label %[[BB22:.*]], label %[[BB23]] -; CHECK: [[BB22]]: -; CHECK-NEXT: call void @__asan_report_store1(i64 [[TMP12]]) #[[ATTR4:[0-9]+]] -; CHECK-NEXT: unreachable -; CHECK: [[BB23]]: -; CHECK-NEXT: store volatile i8 0, ptr [[AI]], align 4 -; CHECK-NEXT: store i64 1172321806, ptr [[TMP3]], align 8 -; CHECK-NEXT: [[TMP24:%.*]] = add i64 [[TMP9]], 0 -; CHECK-NEXT: [[TMP25:%.*]] = inttoptr i64 [[TMP24]] to ptr -; CHECK-NEXT: store i64 0, ptr [[TMP25]], align 1 -; CHECK-NEXT: ret void -; -entry: - %a = alloca [2 x i32], align 4 - - ; Poison memory in prologue: 0xf3f3f300f1f1f1f1 - - call void @llvm.lifetime.start.p0(i64 -1, ptr %a) - ; Check that lifetime with no size are ignored. - - %ai = getelementptr inbounds [2 x i32], ptr %a, i64 0, i64 %i - store volatile i8 0, ptr %ai, align 4 - - call void @llvm.lifetime.end.p0(i64 -1, ptr %a) - ; Check that lifetime with no size are ignored. - - ; Unpoison stack frame on exit. - ret void -} - ; Generic case of lifetime analysis. define void @lifetime() sanitize_address { ; CHECK-DEFAULT-LABEL: define void @lifetime( -; CHECK-DEFAULT-SAME: ) #[[ATTR1]] { +; CHECK-DEFAULT-SAME: ) #[[ATTR0:[0-9]+]] { ; CHECK-DEFAULT-NEXT: [[TMP1:%.*]] = alloca i64, align 32 ; CHECK-DEFAULT-NEXT: store i64 0, ptr [[TMP1]], align 8 ; CHECK-DEFAULT-NEXT: [[MYALLOCA:%.*]] = alloca i8, i64 64, align 32 @@ -86,7 +23,7 @@ define void @lifetime() sanitize_address { ; CHECK-DEFAULT-NEXT: store i64 1102416563, ptr [[TMP5]], align 8 ; CHECK-DEFAULT-NEXT: [[TMP6:%.*]] = add i64 [[TMP2]], 8 ; CHECK-DEFAULT-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr -; CHECK-DEFAULT-NEXT: store i64 ptrtoint (ptr @___asan_gen_stack.1 to i64), ptr [[TMP7]], align 8 +; CHECK-DEFAULT-NEXT: store i64 ptrtoint (ptr @___asan_gen_stack to i64), ptr [[TMP7]], align 8 ; CHECK-DEFAULT-NEXT: [[TMP8:%.*]] = add i64 [[TMP2]], 16 ; CHECK-DEFAULT-NEXT: [[TMP9:%.*]] = inttoptr i64 [[TMP8]] to ptr ; CHECK-DEFAULT-NEXT: store i64 ptrtoint (ptr @lifetime to i64), ptr [[TMP9]], align 8 @@ -104,14 +41,14 @@ define void @lifetime() sanitize_address { ; CHECK-DEFAULT-NEXT: [[TMP19:%.*]] = inttoptr i64 [[TMP18]] to ptr ; CHECK-DEFAULT-NEXT: [[TMP20:%.*]] = load i8, ptr [[TMP19]], align 1 ; CHECK-DEFAULT-NEXT: [[TMP21:%.*]] = icmp ne i8 [[TMP20]], 0 -; CHECK-DEFAULT-NEXT: br i1 [[TMP21]], label %[[BB22:.*]], label %[[BB27:.*]], !prof [[PROF1]] +; CHECK-DEFAULT-NEXT: br i1 [[TMP21]], label %[[BB22:.*]], label %[[BB27:.*]], !prof [[PROF1:![0-9]+]] ; CHECK-DEFAULT: [[BB22]]: ; CHECK-DEFAULT-NEXT: [[TMP23:%.*]] = and i64 [[TMP16]], 7 ; CHECK-DEFAULT-NEXT: [[TMP24:%.*]] = trunc i64 [[TMP23]] to i8 ; CHECK-DEFAULT-NEXT: [[TMP25:%.*]] = icmp sge i8 [[TMP24]], [[TMP20]] ; CHECK-DEFAULT-NEXT: br i1 [[TMP25]], label %[[BB26:.*]], label %[[BB27]] ; CHECK-DEFAULT: [[BB26]]: -; CHECK-DEFAULT-NEXT: call void @__asan_report_store1(i64 [[TMP16]]) #[[ATTR4]] +; CHECK-DEFAULT-NEXT: call void @__asan_report_store1(i64 [[TMP16]]) #[[ATTR4:[0-9]+]] ; CHECK-DEFAULT-NEXT: unreachable ; CHECK-DEFAULT: [[BB27]]: ; CHECK-DEFAULT-NEXT: store volatile i8 0, ptr [[TMP4]], align 1 @@ -182,7 +119,7 @@ define void @lifetime() sanitize_address { ; CHECK-DEFAULT-NEXT: ret void ; ; CHECK-NO-DYNAMIC-LABEL: define void @lifetime( -; CHECK-NO-DYNAMIC-SAME: ) #[[ATTR1]] { +; CHECK-NO-DYNAMIC-SAME: ) #[[ATTR0:[0-9]+]] { ; CHECK-NO-DYNAMIC-NEXT: [[MYALLOCA:%.*]] = alloca i8, i64 64, align 32 ; CHECK-NO-DYNAMIC-NEXT: [[TMP1:%.*]] = ptrtoint ptr [[MYALLOCA]] to i64 ; CHECK-NO-DYNAMIC-NEXT: [[TMP2:%.*]] = add i64 [[TMP1]], 32 @@ -191,7 +128,7 @@ define void @lifetime() sanitize_address { ; CHECK-NO-DYNAMIC-NEXT: store i64 1102416563, ptr [[TMP4]], align 8 ; CHECK-NO-DYNAMIC-NEXT: [[TMP5:%.*]] = add i64 [[TMP1]], 8 ; CHECK-NO-DYNAMIC-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr -; CHECK-NO-DYNAMIC-NEXT: store i64 ptrtoint (ptr @___asan_gen_stack.1 to i64), ptr [[TMP6]], align 8 +; CHECK-NO-DYNAMIC-NEXT: store i64 ptrtoint (ptr @___asan_gen_stack to i64), ptr [[TMP6]], align 8 ; CHECK-NO-DYNAMIC-NEXT: [[TMP7:%.*]] = add i64 [[TMP1]], 16 ; CHECK-NO-DYNAMIC-NEXT: [[TMP8:%.*]] = inttoptr i64 [[TMP7]] to ptr ; CHECK-NO-DYNAMIC-NEXT: store i64 ptrtoint (ptr @lifetime to i64), ptr [[TMP8]], align 8 @@ -209,14 +146,14 @@ define void @lifetime() sanitize_address { ; CHECK-NO-DYNAMIC-NEXT: [[TMP18:%.*]] = inttoptr i64 [[TMP17]] to ptr ; CHECK-NO-DYNAMIC-NEXT: [[TMP19:%.*]] = load i8, ptr [[TMP18]], align 1 ; CHECK-NO-DYNAMIC-NEXT: [[TMP20:%.*]] = icmp ne i8 [[TMP19]], 0 -; CHECK-NO-DYNAMIC-NEXT: br i1 [[TMP20]], label %[[BB21:.*]], label %[[BB26:.*]], !prof [[PROF1]] +; CHECK-NO-DYNAMIC-NEXT: br i1 [[TMP20]], label %[[BB21:.*]], label %[[BB26:.*]], !prof [[PROF1:![0-9]+]] ; CHECK-NO-DYNAMIC: [[BB21]]: ; CHECK-NO-DYNAMIC-NEXT: [[TMP22:%.*]] = and i64 [[TMP15]], 7 ; CHECK-NO-DYNAMIC-NEXT: [[TMP23:%.*]] = trunc i64 [[TMP22]] to i8 ; CHECK-NO-DYNAMIC-NEXT: [[TMP24:%.*]] = icmp sge i8 [[TMP23]], [[TMP19]] ; CHECK-NO-DYNAMIC-NEXT: br i1 [[TMP24]], label %[[BB25:.*]], label %[[BB26]] ; CHECK-NO-DYNAMIC: [[BB25]]: -; CHECK-NO-DYNAMIC-NEXT: call void @__asan_report_store1(i64 [[TMP15]]) #[[ATTR4]] +; CHECK-NO-DYNAMIC-NEXT: call void @__asan_report_store1(i64 [[TMP15]]) #[[ATTR4:[0-9]+]] ; CHECK-NO-DYNAMIC-NEXT: unreachable ; CHECK-NO-DYNAMIC: [[BB26]]: ; CHECK-NO-DYNAMIC-NEXT: store volatile i8 0, ptr [[TMP3]], align 1 @@ -227,7 +164,7 @@ define void @lifetime() sanitize_address { ; CHECK-NO-DYNAMIC-NEXT: [[TMP30:%.*]] = inttoptr i64 [[TMP29]] to ptr ; CHECK-NO-DYNAMIC-NEXT: store i8 -8, ptr [[TMP30]], align 1 ; CHECK-NO-DYNAMIC-NEXT: [[ARR:%.*]] = alloca [10 x i32], align 16 -; CHECK-NO-DYNAMIC-NEXT: call void @llvm.lifetime.start.p0(i64 40, ptr [[ARR]]) +; CHECK-NO-DYNAMIC-NEXT: call void @llvm.lifetime.start.p0(ptr [[ARR]]) ; CHECK-NO-DYNAMIC-NEXT: [[TMP31:%.*]] = ptrtoint ptr [[ARR]] to i64 ; CHECK-NO-DYNAMIC-NEXT: [[TMP32:%.*]] = lshr i64 [[TMP31]], 3 ; CHECK-NO-DYNAMIC-NEXT: [[TMP33:%.*]] = add i64 [[TMP32]], 2147450880 @@ -245,7 +182,7 @@ define void @lifetime() sanitize_address { ; CHECK-NO-DYNAMIC-NEXT: unreachable ; CHECK-NO-DYNAMIC: [[BB42]]: ; CHECK-NO-DYNAMIC-NEXT: store volatile i8 0, ptr [[ARR]], align 1 -; CHECK-NO-DYNAMIC-NEXT: call void @llvm.lifetime.end.p0(i64 40, ptr [[ARR]]) +; CHECK-NO-DYNAMIC-NEXT: call void @llvm.lifetime.end.p0(ptr [[ARR]]) ; CHECK-NO-DYNAMIC-NEXT: [[TMP43:%.*]] = add i64 [[TMP10]], 4 ; CHECK-NO-DYNAMIC-NEXT: [[TMP44:%.*]] = inttoptr i64 [[TMP43]] to ptr ; CHECK-NO-DYNAMIC-NEXT: store i8 4, ptr [[TMP44]], align 1 @@ -318,8 +255,8 @@ define void @zero_sized(i64 %a) #0 { ; CHECK-NEXT: [[A_ADDR:%.*]] = alloca i64, align 8 ; CHECK-NEXT: [[B:%.*]] = alloca [0 x i8], align 1 ; CHECK-NEXT: store i64 [[A]], ptr [[A_ADDR]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 0, ptr [[B]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 0, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B]]) ; CHECK-NEXT: ret void ; diff --git a/llvm/test/Instrumentation/AddressSanitizer/remove-memory-effects.ll b/llvm/test/Instrumentation/AddressSanitizer/remove-memory-effects.ll index 481e780f3acf0..07b28f4d35384 100644 --- a/llvm/test/Instrumentation/AddressSanitizer/remove-memory-effects.ll +++ b/llvm/test/Instrumentation/AddressSanitizer/remove-memory-effects.ll @@ -10,9 +10,9 @@ declare void @foo(ptr writeonly) memory(argmem: write) define void @bar() sanitize_address { entry: %x = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) call void @foo(ptr %x) - call void @llvm.lifetime.end.p0(i64 4, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) ret void } diff --git a/llvm/test/Instrumentation/HWAddressSanitizer/RISCV/exception-lifetime.ll b/llvm/test/Instrumentation/HWAddressSanitizer/RISCV/exception-lifetime.ll index ac5d8b82099cb..37b280c5bd242 100644 --- a/llvm/test/Instrumentation/HWAddressSanitizer/RISCV/exception-lifetime.ll +++ b/llvm/test/Instrumentation/HWAddressSanitizer/RISCV/exception-lifetime.ll @@ -10,8 +10,8 @@ target triple = "riscv64-unknown-linux" declare void @mayFail(ptr %x) sanitize_hwaddress declare void @onExcept(ptr %x) sanitize_hwaddress -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind declare i32 @__gxx_personality_v0(...) define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 { @@ -46,7 +46,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 { ; CHECK-NEXT: [[X_HWASAN:%.*]] = inttoptr i64 [[TMP19]] to ptr ; CHECK-NEXT: [[EXN_SLOT:%.*]] = alloca ptr, align 8 ; CHECK-NEXT: [[EHSELECTOR_SLOT:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) ; CHECK-NEXT: [[TMP20:%.*]] = trunc i64 [[TMP15]] to i8 ; CHECK-NEXT: [[TMP21:%.*]] = ptrtoint ptr [[X]] to i64 ; CHECK-NEXT: [[TMP22:%.*]] = and i64 [[TMP21]], 72057594037927935 @@ -65,7 +65,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 { ; CHECK-NEXT: [[TMP30:%.*]] = lshr i64 [[TMP29]], 4 ; CHECK-NEXT: [[TMP31:%.*]] = getelementptr i8, ptr [[TMP14]], i64 [[TMP30]] ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP31]], i8 [[TMP27]], i64 1, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) ; CHECK-NEXT: ret void ; CHECK: lpad: ; CHECK-NEXT: [[TMP32:%.*]] = landingpad { ptr, i32 } @@ -81,7 +81,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 { ; CHECK-NEXT: [[TMP38:%.*]] = lshr i64 [[TMP37]], 4 ; CHECK-NEXT: [[TMP39:%.*]] = getelementptr i8, ptr [[TMP14]], i64 [[TMP38]] ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP39]], i8 [[TMP35]], i64 1, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) ; CHECK-NEXT: br label [[EH_RESUME:%.*]] ; CHECK: eh.resume: ; CHECK-NEXT: [[EXN:%.*]] = load ptr, ptr [[EXN_SLOT]], align 8 @@ -94,12 +94,12 @@ entry: %x = alloca i32, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) invoke void @mayFail(ptr %x) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - call void @llvm.lifetime.end.p0(i64 4, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) ret void lpad: ; preds = %entry @@ -111,7 +111,7 @@ lpad: ; preds = %entry %2 = extractvalue { ptr, i32 } %0, 1 store i32 %2, ptr %ehselector.slot, align 4 call void @onExcept(ptr %x) #18 - call void @llvm.lifetime.end.p0(i64 4, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) br label %eh.resume eh.resume: ; preds = %lpad diff --git a/llvm/test/Instrumentation/HWAddressSanitizer/RISCV/use-after-scope-setjmp.ll b/llvm/test/Instrumentation/HWAddressSanitizer/RISCV/use-after-scope-setjmp.ll index db78c1f05b0df..d2949bfb9c1b2 100644 --- a/llvm/test/Instrumentation/HWAddressSanitizer/RISCV/use-after-scope-setjmp.ll +++ b/llvm/test/Instrumentation/HWAddressSanitizer/RISCV/use-after-scope-setjmp.ll @@ -78,13 +78,13 @@ sw.bb1: ; preds = %entry br label %return while.body: ; preds = %entry - call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %buf) #10 + call void @llvm.lifetime.start.p0(ptr nonnull %buf) #10 store ptr %buf, ptr @stackbuf, align 8 ; may_jump may call longjmp, going back to the switch (and then the return), ; bypassing the lifetime.end. This is why we need to untag on the return, ; rather than the lifetime.end. call void @may_jump() - call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %buf) #10 + call void @llvm.lifetime.end.p0(ptr nonnull %buf) #10 br label %return return: ; preds = %entry, %while.body, %sw.bb1 @@ -94,5 +94,5 @@ return: ; preds = %entry, %while.body, declare i32 @setjmp(ptr noundef) returns_twice -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Instrumentation/HWAddressSanitizer/X86/alloca.ll b/llvm/test/Instrumentation/HWAddressSanitizer/X86/alloca.ll index 292a565a1e61b..ef86e63aca0d6 100644 --- a/llvm/test/Instrumentation/HWAddressSanitizer/X86/alloca.ll +++ b/llvm/test/Instrumentation/HWAddressSanitizer/X86/alloca.ll @@ -109,7 +109,7 @@ define i32 @test_simple(ptr %a) sanitize_hwaddress { ; CHECK-NEXT: [[TMP8:%.*]] = shl i64 [[TMP5]], 57 ; CHECK-NEXT: [[TMP9:%.*]] = or i64 [[TMP7]], [[TMP8]] ; CHECK-NEXT: [[BUF_SROA_0_HWASAN:%.*]] = inttoptr i64 [[TMP9]] to ptr -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[BUF_SROA_0]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[BUF_SROA_0]]) ; CHECK-NEXT: [[TMP10:%.*]] = trunc i64 [[TMP5]] to i8 ; CHECK-NEXT: call void @__hwasan_tag_memory(ptr [[BUF_SROA_0]], i8 [[TMP10]], i64 16) ; CHECK-NEXT: [[TMP11:%.*]] = ptrtoint ptr [[BUF_SROA_0_HWASAN]] to i64 @@ -117,7 +117,7 @@ define i32 @test_simple(ptr %a) sanitize_hwaddress { ; CHECK-NEXT: store volatile i8 0, ptr [[BUF_SROA_0_HWASAN]], align 4 ; CHECK-NEXT: [[TMP12:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8 ; CHECK-NEXT: call void @__hwasan_tag_memory(ptr [[BUF_SROA_0]], i8 [[TMP12]], i64 16) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[BUF_SROA_0]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[BUF_SROA_0]]) ; CHECK-NEXT: ret i32 0 ; ; INLINE-LABEL: define i32 @test_simple @@ -150,7 +150,7 @@ define i32 @test_simple(ptr %a) sanitize_hwaddress { ; INLINE-NEXT: [[TMP19:%.*]] = shl i64 [[TMP16]], 57 ; INLINE-NEXT: [[TMP20:%.*]] = or i64 [[TMP18]], [[TMP19]] ; INLINE-NEXT: [[BUF_SROA_0_HWASAN:%.*]] = inttoptr i64 [[TMP20]] to ptr -; INLINE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[BUF_SROA_0]]) +; INLINE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[BUF_SROA_0]]) ; INLINE-NEXT: [[TMP21:%.*]] = trunc i64 [[TMP16]] to i8 ; INLINE-NEXT: [[TMP22:%.*]] = ptrtoint ptr [[BUF_SROA_0]] to i64 ; INLINE-NEXT: [[TMP23:%.*]] = and i64 [[TMP22]], -9079256848778919937 @@ -197,19 +197,19 @@ define i32 @test_simple(ptr %a) sanitize_hwaddress { ; INLINE-NEXT: [[TMP54:%.*]] = lshr i64 [[TMP53]], 4 ; INLINE-NEXT: [[TMP55:%.*]] = getelementptr i8, ptr [[TMP14]], i64 [[TMP54]] ; INLINE-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP55]], i8 [[TMP51]], i64 1, i1 false) -; INLINE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[BUF_SROA_0]]) +; INLINE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[BUF_SROA_0]]) ; INLINE-NEXT: ret i32 0 ; entry: %buf.sroa.0 = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) store volatile i8 0, ptr %buf.sroa.0, align 4 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } ; Function Attrs: argmemonly mustprogress nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) ; Function Attrs: argmemonly mustprogress nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Instrumentation/HWAddressSanitizer/exception-lifetime.ll b/llvm/test/Instrumentation/HWAddressSanitizer/exception-lifetime.ll index 3e13eb48054d7..f2ba94c92d45e 100644 --- a/llvm/test/Instrumentation/HWAddressSanitizer/exception-lifetime.ll +++ b/llvm/test/Instrumentation/HWAddressSanitizer/exception-lifetime.ll @@ -10,8 +10,8 @@ target triple = "aarch64--linux-android" declare void @mayFail(ptr %x) sanitize_hwaddress declare void @onExcept(ptr %x) sanitize_hwaddress -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind declare i32 @__gxx_personality_v0(...) define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 { @@ -48,7 +48,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 { ; CHECK-NEXT: [[X_HWASAN:%.*]] = inttoptr i64 [[TMP21]] to ptr ; CHECK-NEXT: [[EXN_SLOT:%.*]] = alloca ptr, align 8 ; CHECK-NEXT: [[EHSELECTOR_SLOT:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) ; CHECK-NEXT: [[TMP22:%.*]] = trunc i64 [[TMP17]] to i8 ; CHECK-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[X]] to i64 ; CHECK-NEXT: [[TMP24:%.*]] = and i64 [[TMP23]], 72057594037927935 @@ -64,7 +64,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 { ; CHECK-NEXT: [[TMP30:%.*]] = lshr i64 [[TMP29]], 4 ; CHECK-NEXT: [[TMP31:%.*]] = getelementptr i8, ptr [[TMP16]], i64 [[TMP30]] ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP31]], i8 [[TMP27]], i64 1, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) ; CHECK-NEXT: ret void ; CHECK: lpad: ; CHECK-NEXT: [[TMP32:%.*]] = landingpad { ptr, i32 } @@ -82,7 +82,7 @@ define void @test() sanitize_hwaddress personality ptr @__gxx_personality_v0 { ; CHECK-NEXT: [[TMP39:%.*]] = lshr i64 [[TMP38]], 4 ; CHECK-NEXT: [[TMP40:%.*]] = getelementptr i8, ptr [[TMP16]], i64 [[TMP39]] ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP40]], i8 [[TMP36]], i64 1, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) ; CHECK-NEXT: br label [[EH_RESUME:%.*]] ; CHECK: eh.resume: ; CHECK-NEXT: [[EXN:%.*]] = load ptr, ptr [[EXN_SLOT]], align 8 @@ -95,12 +95,12 @@ entry: %x = alloca i32, align 8 %exn.slot = alloca ptr, align 8 %ehselector.slot = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) invoke void @mayFail(ptr %x) to label %invoke.cont unwind label %lpad invoke.cont: ; preds = %entry - call void @llvm.lifetime.end.p0(i64 4, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) ret void lpad: ; preds = %entry @@ -112,7 +112,7 @@ lpad: ; preds = %entry %2 = extractvalue { ptr, i32 } %0, 1 store i32 %2, ptr %ehselector.slot, align 4 call void @onExcept(ptr %x) #18 - call void @llvm.lifetime.end.p0(i64 4, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) br label %eh.resume eh.resume: ; preds = %lpad diff --git a/llvm/test/Instrumentation/HWAddressSanitizer/stack-coloring.ll b/llvm/test/Instrumentation/HWAddressSanitizer/stack-coloring.ll index ae6fe5776f203..a40d964aa47e3 100644 --- a/llvm/test/Instrumentation/HWAddressSanitizer/stack-coloring.ll +++ b/llvm/test/Instrumentation/HWAddressSanitizer/stack-coloring.ll @@ -16,22 +16,22 @@ define i32 @myCall_w2(i32 %in) sanitize_hwaddress { entry: %a = alloca [17 x ptr], align 8 %a2 = alloca [16 x ptr], align 8 - call void @llvm.lifetime.start.p0(i64 136, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) %t1 = call i32 @foo(i32 %in, ptr %a) %t2 = call i32 @foo(i32 %in, ptr %a) - call void @llvm.lifetime.end.p0(i64 136, ptr %a) - call void @llvm.lifetime.start.p0(i64 128, ptr %a2) + call void @llvm.lifetime.end.p0(ptr %a) + call void @llvm.lifetime.start.p0(ptr %a2) %t3 = call i32 @foo(i32 %in, ptr %a2) %t4 = call i32 @foo(i32 %in, ptr %a2) - call void @llvm.lifetime.end.p0(i64 128, ptr %a2) + call void @llvm.lifetime.end.p0(ptr %a2) %t5 = add i32 %t1, %t2 %t6 = add i32 %t3, %t4 %t7 = add i32 %t5, %t6 ret i32 %t7 } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind declare i32 @foo(i32, ptr) diff --git a/llvm/test/Instrumentation/HWAddressSanitizer/stack-safety-analysis.ll b/llvm/test/Instrumentation/HWAddressSanitizer/stack-safety-analysis.ll index 60af551eb458b..a76566ba3d643 100644 --- a/llvm/test/Instrumentation/HWAddressSanitizer/stack-safety-analysis.ll +++ b/llvm/test/Instrumentation/HWAddressSanitizer/stack-safety-analysis.ll @@ -24,9 +24,9 @@ entry: ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: safeAlloca{{[[:space:]]}}Function: test_simple ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_simple %buf.sroa.0 = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) store volatile i8 0, ptr %buf.sroa.0, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -43,9 +43,9 @@ entry: ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: safeAlloca{{[[:space:]]}}Function: test_cmpxchg ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_cmpxchg %buf.sroa.0 = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) %0 = cmpxchg ptr %buf.sroa.0, i8 1, i8 2 monotonic monotonic, align 4 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -62,9 +62,9 @@ entry: ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: safeAlloca{{[[:space:]]}}Function: test_atomicrwm ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_atomicrwm %buf.sroa.0 = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) %0 = atomicrmw add ptr %buf.sroa.0, i8 1 monotonic, align 4 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -82,9 +82,9 @@ entry: ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_use %buf.sroa.0 = alloca i8, align 4 call void @use(ptr nonnull %buf.sroa.0) - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) store volatile i8 0, ptr %buf.sroa.0, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -101,9 +101,9 @@ entry: ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: safeAlloca{{[[:space:]]}}Function: test_in_range ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_in_range %buf.sroa.0 = alloca [10 x i8], align 4 - call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) store volatile i8 0, ptr %buf.sroa.0, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -121,9 +121,9 @@ entry: ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_in_range2 %buf.sroa.0 = alloca [10 x i8], align 4 %ptr = getelementptr [10 x i8], ptr %buf.sroa.0, i32 0, i32 9 - call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) store volatile i8 0, ptr %ptr, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -194,9 +194,9 @@ entry: ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_out_of_range %buf.sroa.0 = alloca [10 x i8], align 4 %ptr = getelementptr [10 x i8], ptr %buf.sroa.0, i32 0, i32 10 - call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) store volatile i8 0, ptr %ptr, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -213,9 +213,9 @@ entry: ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_out_of_range2 %buf.sroa.0 = alloca [10 x i8], align 4 %ptr = getelementptr [10 x i8], ptr %buf.sroa.0, i32 0, i32 10 - call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) %0 = cmpxchg ptr %ptr, i8 1, i8 2 monotonic monotonic, align 4 - call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -268,11 +268,11 @@ entry: %ptr = getelementptr [10 x i8], ptr %buf.sroa.0, i32 0, i32 9 %buf.sroa.1 = alloca [10 x i8], align 4 %ptr1 = getelementptr [10 x i8], ptr %buf.sroa.0, i32 0, i32 9 - call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %buf.sroa.0) - call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %buf.sroa.0) - call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %buf.sroa.1) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.1) call void @llvm.memmove.p0.p0.i32(ptr %ptr, ptr %ptr1, i32 1, i1 true) - call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %buf.sroa.1) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.1) ret i32 0 } @@ -289,31 +289,9 @@ entry: ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_out_of_range6 %buf.sroa.0 = alloca [10 x i8], align 4 %ptr = getelementptr [10 x i8], ptr %buf.sroa.0, i32 0, i32 10 - call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) %0 = atomicrmw add ptr %ptr, i32 1 monotonic, align 4 - call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %buf.sroa.0) - ret i32 0 -} - -; Check an alloca with potentially out of range GEP to ensure it gets a tag and -; check. -define i32 @test_potentially_out_of_range(ptr %a) sanitize_hwaddress { -entry: - ; CHECK-LABEL: @test_potentially_out_of_range - ; NOSAFETY: call {{.*}}__hwasan_generate_tag - ; NOSAFETY: call {{.*}}__hwasan_store - ; SAFETY: call {{.*}}__hwasan_generate_tag - ; SAFETY: call {{.*}}__hwasan_store - ; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag - ; NOSTACK-NOT: call {{.*}}__hwasan_store - ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: safeAlloca{{[[:space:]]}}Function: test_potentially_out_of_range - ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_potentially_out_of_range - %buf.sroa.0 = alloca [10 x i8], align 4 - %off = call i32 @getoffset() - %ptr = getelementptr [10 x i8], ptr %buf.sroa.0, i32 0, i32 %off - call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %ptr) - store volatile i8 0, ptr %ptr, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %ptr) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -333,26 +311,6 @@ entry: call void @llvm.memmove.p0.p0.i32(ptr %ptr, ptr %a, i32 1, i1 true) ret i32 0 } -; Check an alloca with potentially out of range GEP to ensure it gets a tag and -; check. -define i32 @test_unclear(ptr %a) sanitize_hwaddress { -entry: - ; CHECK-LABEL: @test_unclear - ; NOSAFETY: call {{.*}}__hwasan_generate_tag - ; NOSAFETY: call {{.*}}__hwasan_store - ; SAFETY: call {{.*}}__hwasan_generate_tag - ; SAFETY: call {{.*}}__hwasan_store - ; NOSTACK-NOT: call {{.*}}__hwasan_generate_tag - ; NOSTACK: call {{.*}}__hwasan_store - ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: safeAlloca{{[[:space:]]}}Function: test_unclear - ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_unclear - %buf.sroa.0 = alloca i8, align 4 - %ptr = call ptr @getptr(ptr %buf.sroa.0) - call void @llvm.lifetime.start.p0(i64 10, ptr nonnull %ptr) - store volatile i8 0, ptr %ptr, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 10, ptr nonnull %ptr) - ret i32 0 -} define i32 @test_select(ptr %a) sanitize_hwaddress { entry: @@ -367,11 +325,11 @@ entry: ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_select %x = call ptr @getptr(ptr %a) %buf.sroa.0 = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) %c = call i1 @cond() %ptr = select i1 %c, ptr %x, ptr %buf.sroa.0 store volatile i8 0, ptr %ptr, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -388,10 +346,10 @@ entry: ; SAFETY-REMARKS: --- !Missed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: safeAlloca{{[[:space:]]}}Function: test_retptr ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_retptr %buf.sroa.0 = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.start.p0(ptr nonnull %buf.sroa.0) %ptr = call ptr @retptr(ptr %buf.sroa.0) store volatile i8 0, ptr %ptr, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %buf.sroa.0) + call void @llvm.lifetime.end.p0(ptr nonnull %buf.sroa.0) ret i32 0 } @@ -408,17 +366,17 @@ entry: ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: safeAlloca{{[[:space:]]}}Function: test_lifetime_poison ; SAFETY-REMARKS: --- !Passed{{[[:space:]]}}Pass: hwasan{{[[:space:]]}}Name: ignoreAccess{{[[:space:]]}}Function: test_lifetime_poison %buf.sroa.0 = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 1, ptr poison) + call void @llvm.lifetime.start.p0(ptr poison) store volatile i8 0, ptr %buf.sroa.0, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 1, ptr poison) + call void @llvm.lifetime.end.p0(ptr poison) ret i32 0 } ; Function Attrs: argmemonly mustprogress nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) ; Function Attrs: argmemonly mustprogress nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @llvm.memset.p0.i32(ptr, i8, i32, i1) declare void @llvm.memcpy.p0.p0.i32(ptr, ptr, i32, i1) diff --git a/llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope-setjmp.ll b/llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope-setjmp.ll index 57d37ca1ef95a..af6411a541e9a 100644 --- a/llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope-setjmp.ll +++ b/llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope-setjmp.ll @@ -79,13 +79,13 @@ sw.bb1: ; preds = %entry br label %return while.body: ; preds = %entry - call void @llvm.lifetime.start.p0(i64 4096, ptr nonnull %buf) #10 + call void @llvm.lifetime.start.p0(ptr nonnull %buf) #10 store ptr %buf, ptr @stackbuf, align 8 ; may_jump may call longjmp, going back to the switch (and then the return), ; bypassing the lifetime.end. This is why we need to untag on the return, ; rather than the lifetime.end. call void @may_jump() - call void @llvm.lifetime.end.p0(i64 4096, ptr nonnull %buf) #10 + call void @llvm.lifetime.end.p0(ptr nonnull %buf) #10 br label %return return: ; preds = %entry, %while.body, %sw.bb1 @@ -95,5 +95,5 @@ return: ; preds = %entry, %while.body, declare i32 @setjmp(ptr noundef) returns_twice -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll b/llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll index e30b51890e172..cfded025dce7f 100644 --- a/llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll +++ b/llvm/test/Instrumentation/HWAddressSanitizer/use-after-scope.ll @@ -26,13 +26,13 @@ define dso_local i32 @standard_lifetime() local_unnamed_addr sanitize_hwaddress ; X86-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP10]] to ptr ; X86-SCOPE-NEXT: br label [[TMP11:%.*]] ; X86-SCOPE: 11: -; X86-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP4]]) +; X86-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP4]]) ; X86-SCOPE-NEXT: [[TMP12:%.*]] = trunc i64 [[TMP6]] to i8 ; X86-SCOPE-NEXT: call void @__hwasan_tag_memory(ptr [[TMP4]], i8 [[TMP12]], i64 16) ; X86-SCOPE-NEXT: [[TMP13:%.*]] = tail call i1 (...) @cond() ; X86-SCOPE-NEXT: [[TMP14:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8 ; X86-SCOPE-NEXT: call void @__hwasan_tag_memory(ptr [[TMP4]], i8 [[TMP14]], i64 16) -; X86-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP4]]) +; X86-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP4]]) ; X86-SCOPE-NEXT: br i1 [[TMP13]], label [[TMP15:%.*]], label [[TMP11]] ; X86-SCOPE: 15: ; X86-SCOPE-NEXT: call void @use(ptr nonnull [[ALLOCA_0_HWASAN]]) @@ -96,7 +96,7 @@ define dso_local i32 @standard_lifetime() local_unnamed_addr sanitize_hwaddress ; AARCH64-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP24]] to ptr ; AARCH64-SCOPE-NEXT: br label [[TMP25:%.*]] ; AARCH64-SCOPE: 25: -; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP18]]) ; AARCH64-SCOPE-NEXT: [[TMP26:%.*]] = trunc i64 [[TMP20]] to i8 ; AARCH64-SCOPE-NEXT: [[TMP27:%.*]] = ptrtoint ptr [[TMP18]] to i64 ; AARCH64-SCOPE-NEXT: [[TMP28:%.*]] = and i64 [[TMP27]], 72057594037927935 @@ -110,7 +110,7 @@ define dso_local i32 @standard_lifetime() local_unnamed_addr sanitize_hwaddress ; AARCH64-SCOPE-NEXT: [[TMP35:%.*]] = lshr i64 [[TMP34]], 4 ; AARCH64-SCOPE-NEXT: [[TMP36:%.*]] = getelementptr i8, ptr [[TMP17]], i64 [[TMP35]] ; AARCH64-SCOPE-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP36]], i8 [[TMP32]], i64 1, i1 false) -; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP18]]) ; AARCH64-SCOPE-NEXT: br i1 [[TMP31]], label [[TMP37:%.*]], label [[TMP25]] ; AARCH64-SCOPE: 37: ; AARCH64-SCOPE-NEXT: call void @use(ptr nonnull [[ALLOCA_0_HWASAN]]) @@ -198,7 +198,7 @@ define dso_local i32 @standard_lifetime() local_unnamed_addr sanitize_hwaddress ; AARCH64-SHORT-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP24]] to ptr ; AARCH64-SHORT-SCOPE-NEXT: br label [[TMP25:%.*]] ; AARCH64-SHORT-SCOPE: 25: -; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP18]]) ; AARCH64-SHORT-SCOPE-NEXT: [[TMP26:%.*]] = trunc i64 [[TMP20]] to i8 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP27:%.*]] = ptrtoint ptr [[TMP18]] to i64 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP28:%.*]] = and i64 [[TMP27]], 72057594037927935 @@ -215,7 +215,7 @@ define dso_local i32 @standard_lifetime() local_unnamed_addr sanitize_hwaddress ; AARCH64-SHORT-SCOPE-NEXT: [[TMP37:%.*]] = lshr i64 [[TMP36]], 4 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP38:%.*]] = getelementptr i8, ptr [[TMP17]], i64 [[TMP37]] ; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP38]], i8 [[TMP34]], i64 1, i1 false) -; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP18]]) ; AARCH64-SHORT-SCOPE-NEXT: br i1 [[TMP33]], label [[TMP39:%.*]], label [[TMP25]] ; AARCH64-SHORT-SCOPE: 39: ; AARCH64-SHORT-SCOPE-NEXT: call void @use(ptr nonnull [[ALLOCA_0_HWASAN]]) @@ -279,10 +279,10 @@ define dso_local i32 @standard_lifetime() local_unnamed_addr sanitize_hwaddress 2: ; preds = %2, %0 ; We should tag the memory after the br (in the loop). - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.start.p0(ptr nonnull %1) %3 = tail call i1 (...) @cond() #2 ; We should tag the memory before the next br (before the jump back). - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.end.p0(ptr nonnull %1) br i1 %3, label %4, label %2 4: ; preds = %2 @@ -307,13 +307,13 @@ define dso_local i32 @standard_lifetime_optnone() local_unnamed_addr optnone noi ; X86-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP10]] to ptr ; X86-SCOPE-NEXT: br label [[TMP11:%.*]] ; X86-SCOPE: 11: -; X86-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP4]]) +; X86-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP4]]) ; X86-SCOPE-NEXT: [[TMP12:%.*]] = trunc i64 [[TMP6]] to i8 ; X86-SCOPE-NEXT: call void @__hwasan_tag_memory(ptr [[TMP4]], i8 [[TMP12]], i64 16) ; X86-SCOPE-NEXT: [[TMP13:%.*]] = tail call i1 (...) @cond() ; X86-SCOPE-NEXT: [[TMP14:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8 ; X86-SCOPE-NEXT: call void @__hwasan_tag_memory(ptr [[TMP4]], i8 [[TMP14]], i64 16) -; X86-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP4]]) +; X86-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP4]]) ; X86-SCOPE-NEXT: br i1 [[TMP13]], label [[TMP15:%.*]], label [[TMP11]] ; X86-SCOPE: 15: ; X86-SCOPE-NEXT: call void @use(ptr nonnull [[ALLOCA_0_HWASAN]]) @@ -377,7 +377,7 @@ define dso_local i32 @standard_lifetime_optnone() local_unnamed_addr optnone noi ; AARCH64-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP24]] to ptr ; AARCH64-SCOPE-NEXT: br label [[TMP25:%.*]] ; AARCH64-SCOPE: 25: -; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP18]]) ; AARCH64-SCOPE-NEXT: [[TMP26:%.*]] = trunc i64 [[TMP20]] to i8 ; AARCH64-SCOPE-NEXT: [[TMP27:%.*]] = ptrtoint ptr [[TMP18]] to i64 ; AARCH64-SCOPE-NEXT: [[TMP28:%.*]] = and i64 [[TMP27]], 72057594037927935 @@ -391,7 +391,7 @@ define dso_local i32 @standard_lifetime_optnone() local_unnamed_addr optnone noi ; AARCH64-SCOPE-NEXT: [[TMP35:%.*]] = lshr i64 [[TMP34]], 4 ; AARCH64-SCOPE-NEXT: [[TMP36:%.*]] = getelementptr i8, ptr [[TMP17]], i64 [[TMP35]] ; AARCH64-SCOPE-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP36]], i8 [[TMP32]], i64 1, i1 false) -; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP18]]) ; AARCH64-SCOPE-NEXT: br i1 [[TMP31]], label [[TMP37:%.*]], label [[TMP25]] ; AARCH64-SCOPE: 37: ; AARCH64-SCOPE-NEXT: call void @use(ptr nonnull [[ALLOCA_0_HWASAN]]) @@ -479,7 +479,7 @@ define dso_local i32 @standard_lifetime_optnone() local_unnamed_addr optnone noi ; AARCH64-SHORT-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP24]] to ptr ; AARCH64-SHORT-SCOPE-NEXT: br label [[TMP25:%.*]] ; AARCH64-SHORT-SCOPE: 25: -; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP18]]) ; AARCH64-SHORT-SCOPE-NEXT: [[TMP26:%.*]] = trunc i64 [[TMP20]] to i8 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP27:%.*]] = ptrtoint ptr [[TMP18]] to i64 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP28:%.*]] = and i64 [[TMP27]], 72057594037927935 @@ -496,7 +496,7 @@ define dso_local i32 @standard_lifetime_optnone() local_unnamed_addr optnone noi ; AARCH64-SHORT-SCOPE-NEXT: [[TMP37:%.*]] = lshr i64 [[TMP36]], 4 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP38:%.*]] = getelementptr i8, ptr [[TMP17]], i64 [[TMP37]] ; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP38]], i8 [[TMP34]], i64 1, i1 false) -; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP18]]) ; AARCH64-SHORT-SCOPE-NEXT: br i1 [[TMP33]], label [[TMP39:%.*]], label [[TMP25]] ; AARCH64-SHORT-SCOPE: 39: ; AARCH64-SHORT-SCOPE-NEXT: call void @use(ptr nonnull [[ALLOCA_0_HWASAN]]) @@ -560,10 +560,10 @@ define dso_local i32 @standard_lifetime_optnone() local_unnamed_addr optnone noi 2: ; preds = %2, %0 ; We should tag the memory after the br (in the loop). - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.start.p0(ptr nonnull %1) %3 = tail call i1 (...) @cond() #2 ; We should tag the memory before the next br (before the jump back). - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.end.p0(ptr nonnull %1) br i1 %3, label %4, label %2 4: ; preds = %2 @@ -809,12 +809,12 @@ define dso_local i32 @multiple_lifetimes() local_unnamed_addr sanitize_hwaddress %1 = alloca i8, align 1 ; We erase lifetime markers if we insert instrumentation outside of the ; lifetime. - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.start.p0(ptr nonnull %1) call void @use(ptr nonnull %1) #2 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %1) - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.end.p0(ptr nonnull %1) + call void @llvm.lifetime.start.p0(ptr nonnull %1) call void @use(ptr nonnull %1) #2 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.end.p0(ptr nonnull %1) ret i32 0 } @@ -833,7 +833,7 @@ define dso_local i32 @unreachable_exit() local_unnamed_addr sanitize_hwaddress { ; X86-SCOPE-NEXT: [[TMP9:%.*]] = shl i64 [[TMP6]], 57 ; X86-SCOPE-NEXT: [[TMP10:%.*]] = or i64 [[TMP8]], [[TMP9]] ; X86-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP10]] to ptr -; X86-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP4]]) +; X86-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP4]]) ; X86-SCOPE-NEXT: [[TMP11:%.*]] = trunc i64 [[TMP6]] to i8 ; X86-SCOPE-NEXT: call void @__hwasan_tag_memory(ptr [[TMP4]], i8 [[TMP11]], i64 16) ; X86-SCOPE-NEXT: [[TMP12:%.*]] = tail call i1 (...) @cond() @@ -906,7 +906,7 @@ define dso_local i32 @unreachable_exit() local_unnamed_addr sanitize_hwaddress { ; AARCH64-SCOPE-NEXT: [[TMP23:%.*]] = shl i64 [[TMP20]], 56 ; AARCH64-SCOPE-NEXT: [[TMP24:%.*]] = or i64 [[TMP22]], [[TMP23]] ; AARCH64-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP24]] to ptr -; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP18]]) ; AARCH64-SCOPE-NEXT: [[TMP25:%.*]] = trunc i64 [[TMP20]] to i8 ; AARCH64-SCOPE-NEXT: [[TMP26:%.*]] = ptrtoint ptr [[TMP18]] to i64 ; AARCH64-SCOPE-NEXT: [[TMP27:%.*]] = and i64 [[TMP26]], 72057594037927935 @@ -1019,7 +1019,7 @@ define dso_local i32 @unreachable_exit() local_unnamed_addr sanitize_hwaddress { ; AARCH64-SHORT-SCOPE-NEXT: [[TMP23:%.*]] = shl i64 [[TMP20]], 56 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP24:%.*]] = or i64 [[TMP22]], [[TMP23]] ; AARCH64-SHORT-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP24]] to ptr -; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP18]]) ; AARCH64-SHORT-SCOPE-NEXT: [[TMP25:%.*]] = trunc i64 [[TMP20]] to i8 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP26:%.*]] = ptrtoint ptr [[TMP18]] to i64 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP27:%.*]] = and i64 [[TMP26]], 72057594037927935 @@ -1109,13 +1109,13 @@ define dso_local i32 @unreachable_exit() local_unnamed_addr sanitize_hwaddress { ; AARCH64-SHORT-NOSCOPE-NEXT: ret i32 0 ; %1 = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.start.p0(ptr nonnull %1) %2 = tail call i1 (...) @cond() #2 br i1 %2, label %3, label %4 3: call void @use(ptr nonnull %1) #2 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.end.p0(ptr nonnull %1) ret i32 0 4: @@ -1137,7 +1137,7 @@ define dso_local i32 @diamond_lifetime() local_unnamed_addr sanitize_hwaddress { ; X86-SCOPE-NEXT: [[TMP9:%.*]] = shl i64 [[TMP6]], 57 ; X86-SCOPE-NEXT: [[TMP10:%.*]] = or i64 [[TMP8]], [[TMP9]] ; X86-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP10]] to ptr -; X86-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP4]]) +; X86-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP4]]) ; X86-SCOPE-NEXT: [[TMP11:%.*]] = trunc i64 [[TMP6]] to i8 ; X86-SCOPE-NEXT: call void @__hwasan_tag_memory(ptr [[TMP4]], i8 [[TMP11]], i64 16) ; X86-SCOPE-NEXT: [[TMP12:%.*]] = tail call i1 (...) @cond() @@ -1146,12 +1146,12 @@ define dso_local i32 @diamond_lifetime() local_unnamed_addr sanitize_hwaddress { ; X86-SCOPE-NEXT: call void @use(ptr nonnull [[ALLOCA_0_HWASAN]]) ; X86-SCOPE-NEXT: [[TMP14:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8 ; X86-SCOPE-NEXT: call void @__hwasan_tag_memory(ptr [[TMP4]], i8 [[TMP14]], i64 16) -; X86-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP4]]) +; X86-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP4]]) ; X86-SCOPE-NEXT: br label [[TMP17:%.*]] ; X86-SCOPE: 15: ; X86-SCOPE-NEXT: [[TMP16:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8 ; X86-SCOPE-NEXT: call void @__hwasan_tag_memory(ptr [[TMP4]], i8 [[TMP16]], i64 16) -; X86-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP4]]) +; X86-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP4]]) ; X86-SCOPE-NEXT: br label [[TMP17]] ; X86-SCOPE: 17: ; X86-SCOPE-NEXT: ret i32 0 @@ -1214,7 +1214,7 @@ define dso_local i32 @diamond_lifetime() local_unnamed_addr sanitize_hwaddress { ; AARCH64-SCOPE-NEXT: [[TMP23:%.*]] = shl i64 [[TMP20]], 56 ; AARCH64-SCOPE-NEXT: [[TMP24:%.*]] = or i64 [[TMP22]], [[TMP23]] ; AARCH64-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP24]] to ptr -; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP18]]) ; AARCH64-SCOPE-NEXT: [[TMP25:%.*]] = trunc i64 [[TMP20]] to i8 ; AARCH64-SCOPE-NEXT: [[TMP26:%.*]] = ptrtoint ptr [[TMP18]] to i64 ; AARCH64-SCOPE-NEXT: [[TMP27:%.*]] = and i64 [[TMP26]], 72057594037927935 @@ -1231,7 +1231,7 @@ define dso_local i32 @diamond_lifetime() local_unnamed_addr sanitize_hwaddress { ; AARCH64-SCOPE-NEXT: [[TMP35:%.*]] = lshr i64 [[TMP34]], 4 ; AARCH64-SCOPE-NEXT: [[TMP36:%.*]] = getelementptr i8, ptr [[TMP17]], i64 [[TMP35]] ; AARCH64-SCOPE-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP36]], i8 [[TMP32]], i64 1, i1 false) -; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP18]]) ; AARCH64-SCOPE-NEXT: br label [[TMP43:%.*]] ; AARCH64-SCOPE: 37: ; AARCH64-SCOPE-NEXT: [[TMP38:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8 @@ -1240,7 +1240,7 @@ define dso_local i32 @diamond_lifetime() local_unnamed_addr sanitize_hwaddress { ; AARCH64-SCOPE-NEXT: [[TMP41:%.*]] = lshr i64 [[TMP40]], 4 ; AARCH64-SCOPE-NEXT: [[TMP42:%.*]] = getelementptr i8, ptr [[TMP17]], i64 [[TMP41]] ; AARCH64-SCOPE-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP42]], i8 [[TMP38]], i64 1, i1 false) -; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP18]]) ; AARCH64-SCOPE-NEXT: br label [[TMP43]] ; AARCH64-SCOPE: 43: ; AARCH64-SCOPE-NEXT: ret i32 0 @@ -1327,7 +1327,7 @@ define dso_local i32 @diamond_lifetime() local_unnamed_addr sanitize_hwaddress { ; AARCH64-SHORT-SCOPE-NEXT: [[TMP23:%.*]] = shl i64 [[TMP20]], 56 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP24:%.*]] = or i64 [[TMP22]], [[TMP23]] ; AARCH64-SHORT-SCOPE-NEXT: [[ALLOCA_0_HWASAN:%.*]] = inttoptr i64 [[TMP24]] to ptr -; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP18]]) ; AARCH64-SHORT-SCOPE-NEXT: [[TMP25:%.*]] = trunc i64 [[TMP20]] to i8 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP26:%.*]] = ptrtoint ptr [[TMP18]] to i64 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP27:%.*]] = and i64 [[TMP26]], 72057594037927935 @@ -1347,7 +1347,7 @@ define dso_local i32 @diamond_lifetime() local_unnamed_addr sanitize_hwaddress { ; AARCH64-SHORT-SCOPE-NEXT: [[TMP37:%.*]] = lshr i64 [[TMP36]], 4 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP38:%.*]] = getelementptr i8, ptr [[TMP17]], i64 [[TMP37]] ; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP38]], i8 [[TMP34]], i64 1, i1 false) -; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP18]]) ; AARCH64-SHORT-SCOPE-NEXT: br label [[TMP45:%.*]] ; AARCH64-SHORT-SCOPE: 39: ; AARCH64-SHORT-SCOPE-NEXT: [[TMP40:%.*]] = trunc i64 [[HWASAN_UAR_TAG]] to i8 @@ -1356,7 +1356,7 @@ define dso_local i32 @diamond_lifetime() local_unnamed_addr sanitize_hwaddress { ; AARCH64-SHORT-SCOPE-NEXT: [[TMP43:%.*]] = lshr i64 [[TMP42]], 4 ; AARCH64-SHORT-SCOPE-NEXT: [[TMP44:%.*]] = getelementptr i8, ptr [[TMP17]], i64 [[TMP43]] ; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.memset.p0.i64(ptr align 1 [[TMP44]], i8 [[TMP40]], i64 1, i1 false) -; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[TMP18]]) +; AARCH64-SHORT-SCOPE-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP18]]) ; AARCH64-SHORT-SCOPE-NEXT: br label [[TMP45]] ; AARCH64-SHORT-SCOPE: 45: ; AARCH64-SHORT-SCOPE-NEXT: ret i32 0 @@ -1417,17 +1417,17 @@ define dso_local i32 @diamond_lifetime() local_unnamed_addr sanitize_hwaddress { ; AARCH64-SHORT-NOSCOPE-NEXT: ret i32 0 ; %1 = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.start.p0(ptr nonnull %1) %2 = tail call i1 (...) @cond() #2 br i1 %2, label %3, label %4 3: call void @use(ptr nonnull %1) #2 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %5 4: - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %1) + call void @llvm.lifetime.end.p0(ptr nonnull %1) br label %5 5: @@ -1439,7 +1439,7 @@ declare dso_local i1 @cond(...) local_unnamed_addr declare dso_local void @use(ptr) local_unnamed_addr ; Function Attrs: argmemonly mustprogress nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) ; Function Attrs: argmemonly mustprogress nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg-kmsan.ll b/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg-kmsan.ll index 2189424cd76fa..b64dfbfde2dea 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg-kmsan.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg-kmsan.ll @@ -7,10 +7,10 @@ target triple = "aarch64-unknown-linux-gnu" define i32 @foo(i32 %guard, ...) { %vl = alloca %struct.__va_list, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -45,7 +45,7 @@ define i32 @foo(i32 %guard, ...) { ; CHECK: [[STACK:%.*]] = getelementptr inbounds i8, ptr {{%.*}}, i32 192 ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 16 {{%.*}}, ptr align 16 [[STACK]], i64 {{%.*}}, i1 false) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 diff --git a/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg.ll b/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg.ll index 0bd0968b0f1a2..f3cceb7c075b2 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg.ll @@ -7,10 +7,10 @@ target triple = "aarch64-unknown-linux-gnu" define i32 @foo(i32 %guard, ...) { %vl = alloca %struct.__va_list, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -45,10 +45,10 @@ define i32 @foo(i32 %guard, ...) { ; CHECK: [[STACK:%.*]] = getelementptr inbounds i8, ptr {{%.*}}, i32 192 ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 16 {{%.*}}, ptr align 16 [[STACK]], i64 {{%.*}}, i1 false) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { %1 = call i32 (i32, ...) @foo(i32 0, i32 1, i32 2, double 3.000000e+00, diff --git a/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg_shadow.ll b/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg_shadow.ll index 9133b329deb26..06a34ac469e8c 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg_shadow.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/AArch64/vararg_shadow.ll @@ -749,7 +749,7 @@ define linkonce_odr dso_local void @_Z5test2IcEvT_iz(i8 noundef %t, i32 noundef ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -809,26 +809,26 @@ define linkonce_odr dso_local void @_Z5test2IcEvT_iz(i8 noundef %t, i32 noundef ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.start.p0(ptr nocapture) #3 declare void @llvm.va_start(ptr) #4 declare void @llvm.va_end(ptr) #4 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.end.p0(ptr nocapture) #3 define linkonce_odr dso_local void @_Z5test2IiEvT_iz(i32 noundef %t, i32 noundef %n, ...) sanitize_memory { ; CHECK-LABEL: define linkonce_odr dso_local void @_Z5test2IiEvT_iz( @@ -842,7 +842,7 @@ define linkonce_odr dso_local void @_Z5test2IiEvT_iz(i32 noundef %t, i32 noundef ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -902,16 +902,16 @@ define linkonce_odr dso_local void @_Z5test2IiEvT_iz(i32 noundef %t, i32 noundef ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } @@ -927,7 +927,7 @@ define linkonce_odr dso_local void @_Z5test2IfEvT_iz(float noundef %t, i32 nound ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -987,16 +987,16 @@ define linkonce_odr dso_local void @_Z5test2IfEvT_iz(float noundef %t, i32 nound ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } @@ -1012,7 +1012,7 @@ define linkonce_odr dso_local void @_Z5test2IdEvT_iz(double noundef %t, i32 noun ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1072,16 +1072,16 @@ define linkonce_odr dso_local void @_Z5test2IdEvT_iz(double noundef %t, i32 noun ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } @@ -1097,7 +1097,7 @@ define linkonce_odr dso_local void @_Z5test2IeEvT_iz(fp128 noundef %t, i32 nound ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1157,16 +1157,16 @@ define linkonce_odr dso_local void @_Z5test2IeEvT_iz(fp128 noundef %t, i32 nound ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } @@ -1182,7 +1182,7 @@ define linkonce_odr dso_local void @_Z5test2I6IntIntEvT_iz(i64 %t.coerce, i32 no ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1242,16 +1242,16 @@ define linkonce_odr dso_local void @_Z5test2I6IntIntEvT_iz(i64 %t.coerce, i32 no ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } @@ -1267,7 +1267,7 @@ define linkonce_odr dso_local void @_Z5test2I10Int64Int64EvT_iz([2 x i64] %t.coe ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1327,16 +1327,16 @@ define linkonce_odr dso_local void @_Z5test2I10Int64Int64EvT_iz([2 x i64] %t.coe ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } @@ -1352,7 +1352,7 @@ define linkonce_odr dso_local void @_Z5test2I12DoubleDoubleEvT_iz([2 x double] a ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1412,16 +1412,16 @@ define linkonce_odr dso_local void @_Z5test2I12DoubleDoubleEvT_iz([2 x double] a ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } @@ -1437,7 +1437,7 @@ define linkonce_odr dso_local void @_Z5test2I7Double4EvT_iz([4 x double] alignst ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1497,16 +1497,16 @@ define linkonce_odr dso_local void @_Z5test2I7Double4EvT_iz([4 x double] alignst ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } @@ -1522,7 +1522,7 @@ define linkonce_odr dso_local void @_Z5test2I11DoubleFloatEvT_iz([2 x i64] %t.co ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1582,16 +1582,16 @@ define linkonce_odr dso_local void @_Z5test2I11DoubleFloatEvT_iz([2 x i64] %t.co ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } @@ -1607,7 +1607,7 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble2EvT_iz([2 x fp128] ali ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1667,16 +1667,16 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble2EvT_iz([2 x fp128] ali ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } @@ -1692,7 +1692,7 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble4EvT_iz([4 x fp128] ali ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca %"struct.std::__va_list", align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 193514046488576 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1752,16 +1752,16 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble4EvT_iz([4 x fp128] ali ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca %"struct.std::__va_list", align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #5 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %args) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #5 ret void } diff --git a/llvm/test/Instrumentation/MemorySanitizer/ARM32/vararg-arm32.ll b/llvm/test/Instrumentation/MemorySanitizer/ARM32/vararg-arm32.ll index 52f4901298611..e05018c2d5372 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/ARM32/vararg-arm32.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/ARM32/vararg-arm32.ll @@ -18,7 +18,7 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], -2147483649 ; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[TMP7]], i8 0, i64 8, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VL]]) ; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[VL]] to i64 ; CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], -2147483649 ; CHECK-NEXT: [[TMP10:%.*]] = inttoptr i64 [[TMP9]] to ptr @@ -32,15 +32,15 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP16:%.*]] = inttoptr i64 [[TMP15]] to ptr ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP16]], ptr align 8 [[TMP3]], i64 [[TMP2]], i1 false) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[VL]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VL]]) ; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret i32 0 ; %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -49,10 +49,10 @@ define i32 @foo(i32 %guard, ...) { -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { ; CHECK-LABEL: define i32 @bar() { diff --git a/llvm/test/Instrumentation/MemorySanitizer/LoongArch/vararg-loongarch64.ll b/llvm/test/Instrumentation/MemorySanitizer/LoongArch/vararg-loongarch64.ll index 23df3fcd903c1..e6d3a4b2994ad 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/LoongArch/vararg-loongarch64.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/LoongArch/vararg-loongarch64.ll @@ -4,10 +4,10 @@ target datalayout = "e-m:e-p:64:64-i64:64-i128:128-n64-S128" target triple = "loongarch64-unknown-linux-gnu" ;; First, check allocation of the save area. -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @foo(i32 %guard, ...) { ; CHECK-LABEL: @foo ; CHECK: [[TMP1:%.*]] = load {{.*}} @__msan_va_arg_overflow_size_tls @@ -17,10 +17,10 @@ define i32 @foo(i32 %guard, ...) { ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP3]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP4]], i1 false) ; %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } diff --git a/llvm/test/Instrumentation/MemorySanitizer/Mips/vararg-mips64.ll b/llvm/test/Instrumentation/MemorySanitizer/Mips/vararg-mips64.ll index 64a76c5fd436a..69a74a37a1f04 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/Mips/vararg-mips64.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/Mips/vararg-mips64.ll @@ -5,10 +5,10 @@ target triple = "mips64--linux" define i32 @foo(i32 %guard, ...) { %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -23,10 +23,10 @@ define i32 @foo(i32 %guard, ...) { ; CHECK: [[D:%.*]] = call i64 @llvm.umin.i64(i64 [[A]], i64 800) ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[C]], ptr align 8 @__msan_va_arg_tls, i64 [[D]], i1 false) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { %1 = call i32 (i32, ...) @foo(i32 0, i32 1, i64 2, double 3.000000e+00) diff --git a/llvm/test/Instrumentation/MemorySanitizer/Mips/vararg-mips64el.ll b/llvm/test/Instrumentation/MemorySanitizer/Mips/vararg-mips64el.ll index 9f3127e9d89ed..b19da8e9ff14b 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/Mips/vararg-mips64el.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/Mips/vararg-mips64el.ll @@ -5,10 +5,10 @@ target triple = "mips64el--linux" define i32 @foo(i32 %guard, ...) { %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -23,10 +23,10 @@ define i32 @foo(i32 %guard, ...) { ; CHECK: [[D:%.*]] = call i64 @llvm.umin.i64(i64 [[A]], i64 800) ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[C]], ptr align 8 @__msan_va_arg_tls, i64 [[D]], i1 false) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { %1 = call i32 (i32, ...) @foo(i32 0, i32 1, i64 2, double 3.000000e+00) diff --git a/llvm/test/Instrumentation/MemorySanitizer/Mips32/vararg-mips.ll b/llvm/test/Instrumentation/MemorySanitizer/Mips32/vararg-mips.ll index 05a88f0c252a0..4d47b02bb2713 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/Mips32/vararg-mips.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/Mips32/vararg-mips.ll @@ -18,7 +18,7 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], -2147483649 ; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[TMP7]], i8 0, i64 8, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VL]]) ; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[VL]] to i64 ; CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], -2147483649 ; CHECK-NEXT: [[TMP10:%.*]] = inttoptr i64 [[TMP9]] to ptr @@ -32,15 +32,15 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP16:%.*]] = inttoptr i64 [[TMP15]] to ptr ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP16]], ptr align 8 [[TMP3]], i64 [[TMP2]], i1 false) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[VL]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VL]]) ; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret i32 0 ; %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -49,10 +49,10 @@ define i32 @foo(i32 %guard, ...) { -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { ; CHECK-LABEL: define i32 @bar() { diff --git a/llvm/test/Instrumentation/MemorySanitizer/Mips32/vararg-mipsel.ll b/llvm/test/Instrumentation/MemorySanitizer/Mips32/vararg-mipsel.ll index 971b25febe0e2..98294e7c0383c 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/Mips32/vararg-mipsel.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/Mips32/vararg-mipsel.ll @@ -18,7 +18,7 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], -2147483649 ; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[TMP7]], i8 0, i64 8, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VL]]) ; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[VL]] to i64 ; CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], -2147483649 ; CHECK-NEXT: [[TMP10:%.*]] = inttoptr i64 [[TMP9]] to ptr @@ -32,15 +32,15 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP16:%.*]] = inttoptr i64 [[TMP15]] to ptr ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP16]], ptr align 8 [[TMP3]], i64 [[TMP2]], i1 false) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[VL]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VL]]) ; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret i32 0 ; %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -49,10 +49,10 @@ define i32 @foo(i32 %guard, ...) { -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { ; CHECK-LABEL: define i32 @bar() { diff --git a/llvm/test/Instrumentation/MemorySanitizer/PowerPC/vararg-ppc64.ll b/llvm/test/Instrumentation/MemorySanitizer/PowerPC/vararg-ppc64.ll index 45e8b2d16854a..9351067969050 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/PowerPC/vararg-ppc64.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/PowerPC/vararg-ppc64.ll @@ -5,10 +5,10 @@ target triple = "powerpc64--linux" define i32 @foo(i32 %guard, ...) { %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -23,10 +23,10 @@ define i32 @foo(i32 %guard, ...) { ; CHECK: [[D:%.*]] = call i64 @llvm.umin.i64(i64 [[A]], i64 800) ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[C]], ptr align 8 @__msan_va_arg_tls, i64 [[D]], i1 false) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { %1 = call i32 (i32, ...) @foo(i32 0, i32 1, i64 2, double 3.000000e+00) diff --git a/llvm/test/Instrumentation/MemorySanitizer/PowerPC/vararg-ppc64le.ll b/llvm/test/Instrumentation/MemorySanitizer/PowerPC/vararg-ppc64le.ll index d6b956c821e54..4151f3b223b3a 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/PowerPC/vararg-ppc64le.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/PowerPC/vararg-ppc64le.ll @@ -5,10 +5,10 @@ target triple = "powerpc64le--linux" define i32 @foo(i32 %guard, ...) { %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -23,10 +23,10 @@ define i32 @foo(i32 %guard, ...) { ; CHECK: [[D:%.*]] = call i64 @llvm.umin.i64(i64 [[A]], i64 800) ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[C]], ptr align 8 @__msan_va_arg_tls, i64 [[D]], i1 false) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { %1 = call i32 (i32, ...) @foo(i32 0, i32 1, i64 2, double 3.000000e+00) diff --git a/llvm/test/Instrumentation/MemorySanitizer/PowerPC32/vararg-ppc.ll b/llvm/test/Instrumentation/MemorySanitizer/PowerPC32/vararg-ppc.ll index 246db9dcb8d42..29d1fbd053ecb 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/PowerPC32/vararg-ppc.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/PowerPC32/vararg-ppc.ll @@ -18,7 +18,7 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP5:%.*]] = and i32 [[TMP4]], 2147483647 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i32 [[TMP5]] to ptr ; CHECK-NEXT: call void @llvm.memset.p0.i32(ptr align 8 [[TMP6]], i8 0, i32 4, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VL]]) ; CHECK-NEXT: [[TMP7:%.*]] = ptrtoint ptr [[VL]] to i32 ; CHECK-NEXT: [[TMP8:%.*]] = and i32 [[TMP7]], 2147483647 ; CHECK-NEXT: [[TMP10:%.*]] = inttoptr i32 [[TMP8]] to ptr @@ -50,15 +50,15 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP31:%.*]] = inttoptr i32 [[TMP30]] to ptr ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 4 [[TMP17]], ptr align 4 [[TMP31]], i32 [[TMP21]], i1 false) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[VL]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VL]]) ; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret i32 0 ; %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -67,10 +67,10 @@ define i32 @foo(i32 %guard, ...) { -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { ; CHECK-LABEL: define i32 @bar() { diff --git a/llvm/test/Instrumentation/MemorySanitizer/PowerPC32/vararg-ppcle.ll b/llvm/test/Instrumentation/MemorySanitizer/PowerPC32/vararg-ppcle.ll index 4a7b7b289a20d..a4d2e165dd3a8 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/PowerPC32/vararg-ppcle.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/PowerPC32/vararg-ppcle.ll @@ -18,7 +18,7 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP5:%.*]] = and i32 [[TMP4]], 2147483647 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i32 [[TMP5]] to ptr ; CHECK-NEXT: call void @llvm.memset.p0.i32(ptr align 8 [[TMP6]], i8 0, i32 4, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VL]]) ; CHECK-NEXT: [[TMP7:%.*]] = ptrtoint ptr [[VL]] to i32 ; CHECK-NEXT: [[TMP8:%.*]] = and i32 [[TMP7]], 2147483647 ; CHECK-NEXT: [[TMP10:%.*]] = inttoptr i32 [[TMP8]] to ptr @@ -50,15 +50,15 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP31:%.*]] = inttoptr i32 [[TMP30]] to ptr ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 4 [[TMP17]], ptr align 4 [[TMP31]], i32 [[TMP21]], i1 false) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[VL]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VL]]) ; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret i32 0 ; %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -67,10 +67,10 @@ define i32 @foo(i32 %guard, ...) { -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { ; CHECK-LABEL: define i32 @bar() { diff --git a/llvm/test/Instrumentation/MemorySanitizer/RISCV32/vararg-riscv32.ll b/llvm/test/Instrumentation/MemorySanitizer/RISCV32/vararg-riscv32.ll index 50e7be13049eb..0c6e75c331012 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/RISCV32/vararg-riscv32.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/RISCV32/vararg-riscv32.ll @@ -18,7 +18,7 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], -2147483649 ; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[TMP7]], i8 0, i64 8, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VL]]) ; CHECK-NEXT: [[TMP8:%.*]] = ptrtoint ptr [[VL]] to i64 ; CHECK-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], -2147483649 ; CHECK-NEXT: [[TMP10:%.*]] = inttoptr i64 [[TMP9]] to ptr @@ -32,15 +32,15 @@ define i32 @foo(i32 %guard, ...) { ; CHECK-NEXT: [[TMP16:%.*]] = inttoptr i64 [[TMP15]] to ptr ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP16]], ptr align 8 [[TMP3]], i64 [[TMP2]], i1 false) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[VL]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[VL]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VL]]) ; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret i32 0 ; %vl = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i32 0 } @@ -49,10 +49,10 @@ define i32 @foo(i32 %guard, ...) { -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 define i32 @bar() { ; CHECK-LABEL: define i32 @bar() { diff --git a/llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg-kernel.ll b/llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg-kernel.ll index e0b5907719afc..c340d155cad4c 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg-kernel.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg-kernel.ll @@ -4,17 +4,17 @@ target datalayout = "E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64" target triple = "s390x-unknown-linux-gnu" %struct.__va_list = type { i64, i64, ptr, ptr } -declare void @llvm.lifetime.start.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) declare void @llvm.va_start(ptr) declare void @llvm.va_end(ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.end.p0(ptr) define i64 @foo(i64 %guard, ...) #1 { %vl = alloca %struct.__va_list - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i64 0 } diff --git a/llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg.ll b/llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg.ll index 009aef970ba70..91b21ea9c37ad 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/SystemZ/vararg.ll @@ -7,10 +7,10 @@ target triple = "s390x-unknown-linux-gnu" define i64 @foo(i64 %guard, ...) { %vl = alloca %struct.__va_list, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %vl) + call void @llvm.lifetime.start.p0(ptr %vl) call void @llvm.va_start(ptr %vl) call void @llvm.va_end(ptr %vl) - call void @llvm.lifetime.end.p0(i64 32, ptr %vl) + call void @llvm.lifetime.end.p0(ptr %vl) ret i64 0 } @@ -28,10 +28,10 @@ define i64 @foo(i64 %guard, ...) { ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 {{%.*}}, ptr align 8 {{%.*}}, i64 160, i1 false) ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 {{%.*}}, ptr align 8 {{%.*}}, i64 [[A]], i1 false) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 declare i32 @random_i32() declare i64 @random_i64() diff --git a/llvm/test/Instrumentation/MemorySanitizer/X86/vararg_call.ll b/llvm/test/Instrumentation/MemorySanitizer/X86/vararg_call.ll index 7a3f0dd88f9c1..b61cb6aebb3ea 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/X86/vararg_call.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/X86/vararg_call.ll @@ -29,7 +29,7 @@ entry: define dso_local i32 @sum(i32 %n, ...) local_unnamed_addr #0 { entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #2 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #2 call void @llvm.va_start(ptr nonnull %args) %cmp9 = icmp sgt i32 %n, 0 br i1 %cmp9, label %for.body.lr.ph, label %for.end @@ -85,13 +85,13 @@ vaarg.end: ; preds = %vaarg.in_mem, %vaar for.end: ; preds = %vaarg.end, %entry %sum.0.lcssa = phi i32 [ 0, %entry ], [ %add, %vaarg.end ] call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #2 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #2 ret i32 %sum.0.lcssa } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nounwind declare void @llvm.va_start(ptr) #2 @@ -100,7 +100,7 @@ declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 declare dso_local i80 @sum_i80(i32, ...) local_unnamed_addr diff --git a/llvm/test/Instrumentation/MemorySanitizer/X86/vararg_shadow.ll b/llvm/test/Instrumentation/MemorySanitizer/X86/vararg_shadow.ll index 205101564dfe0..4bc14daaca427 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/X86/vararg_shadow.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/X86/vararg_shadow.ll @@ -551,7 +551,7 @@ define linkonce_odr dso_local void @_Z5test2IcEvT_iz(i8 noundef signext %t, i32 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -581,26 +581,26 @@ define linkonce_odr dso_local void @_Z5test2IcEvT_iz(i8 noundef signext %t, i32 ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 declare void @llvm.va_start(ptr) #5 declare void @llvm.va_end(ptr) #5 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 define linkonce_odr dso_local void @_Z5test2IiEvT_iz(i32 noundef %t, i32 noundef %n, ...) sanitize_memory { ; CHECK-LABEL: define linkonce_odr dso_local void @_Z5test2IiEvT_iz( @@ -614,7 +614,7 @@ define linkonce_odr dso_local void @_Z5test2IiEvT_iz(i32 noundef %t, i32 noundef ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -644,16 +644,16 @@ define linkonce_odr dso_local void @_Z5test2IiEvT_iz(i32 noundef %t, i32 noundef ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -669,7 +669,7 @@ define linkonce_odr dso_local void @_Z5test2IfEvT_iz(float noundef %t, i32 nound ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -699,16 +699,16 @@ define linkonce_odr dso_local void @_Z5test2IfEvT_iz(float noundef %t, i32 nound ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -724,7 +724,7 @@ define linkonce_odr dso_local void @_Z5test2IdEvT_iz(double noundef %t, i32 noun ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -754,16 +754,16 @@ define linkonce_odr dso_local void @_Z5test2IdEvT_iz(double noundef %t, i32 noun ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -779,7 +779,7 @@ define linkonce_odr dso_local void @_Z5test2IeEvT_iz(x86_fp80 noundef %t, i32 no ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -809,16 +809,16 @@ define linkonce_odr dso_local void @_Z5test2IeEvT_iz(x86_fp80 noundef %t, i32 no ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -834,7 +834,7 @@ define linkonce_odr dso_local void @_Z5test2I6IntIntEvT_iz(i64 %t.coerce, i32 no ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -864,16 +864,16 @@ define linkonce_odr dso_local void @_Z5test2I6IntIntEvT_iz(i64 %t.coerce, i32 no ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -889,7 +889,7 @@ define linkonce_odr dso_local void @_Z5test2I10Int64Int64EvT_iz(i64 %t.coerce0, ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -919,16 +919,16 @@ define linkonce_odr dso_local void @_Z5test2I10Int64Int64EvT_iz(i64 %t.coerce0, ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -944,7 +944,7 @@ define linkonce_odr dso_local void @_Z5test2I12DoubleDoubleEvT_iz(double %t.coer ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -974,16 +974,16 @@ define linkonce_odr dso_local void @_Z5test2I12DoubleDoubleEvT_iz(double %t.coer ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -999,7 +999,7 @@ define linkonce_odr dso_local void @_Z5test2I7Double4EvT_iz(ptr noundef byval(%s ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1029,16 +1029,16 @@ define linkonce_odr dso_local void @_Z5test2I7Double4EvT_iz(ptr noundef byval(%s ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -1054,7 +1054,7 @@ define linkonce_odr dso_local void @_Z5test2I11DoubleFloatEvT_iz(double %t.coerc ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1084,16 +1084,16 @@ define linkonce_odr dso_local void @_Z5test2I11DoubleFloatEvT_iz(double %t.coerc ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -1109,7 +1109,7 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble2EvT_iz(ptr noundef byv ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1139,16 +1139,16 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble2EvT_iz(ptr noundef byv ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -1164,7 +1164,7 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble4EvT_iz(ptr noundef byv ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = xor i64 [[TMP4]], 87960930222080 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1194,16 +1194,16 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble4EvT_iz(ptr noundef byv ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } diff --git a/llvm/test/Instrumentation/MemorySanitizer/alloca.ll b/llvm/test/Instrumentation/MemorySanitizer/alloca.ll index 40ade5f40f9af..c05702b0669d3 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/alloca.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/alloca.ll @@ -125,12 +125,12 @@ entry: br label %another_bb another_bb: - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) store i32 7, ptr %x - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %x) - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) store i32 8, ptr %x - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -158,8 +158,10 @@ another_bb: define void @lifetime_start_var(i64 %cnt) sanitize_memory { entry: %x = alloca i32, i64 %cnt, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) + call void @llvm.lifetime.start.p0(ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) ret void } @@ -176,5 +178,5 @@ entry: ; CHECK: call void @llvm.lifetime.end ; CHECK: ret void -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Instrumentation/MemorySanitizer/i386/vararg_call.ll b/llvm/test/Instrumentation/MemorySanitizer/i386/vararg_call.ll index b27ef5ddc93bf..27459397b34a3 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/i386/vararg_call.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/i386/vararg_call.ll @@ -93,7 +93,7 @@ define dso_local i32 @sum(i32 %n, ...) local_unnamed_addr #0 { ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 16 [[TMP6]], i8 0, i64 24, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP7:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP8:%.*]] = and i64 [[TMP7]], -2147483649 ; CHECK-NEXT: [[TMP9:%.*]] = inttoptr i64 [[TMP8]] to ptr @@ -165,7 +165,7 @@ define dso_local i32 @sum(i32 %n, ...) local_unnamed_addr #0 { ; CHECK: [[FOR_END]]: ; CHECK-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[ADD]], %[[VAARG_END]] ] ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: store i32 0, ptr @__msan_retval_tls, align 8 ; CHECK-NEXT: ret i32 [[SUM_0_LCSSA]] ; @@ -186,7 +186,7 @@ define dso_local i32 @sum(i32 %n, ...) local_unnamed_addr #0 { ; ORIGIN-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], -4 ; ORIGIN-NEXT: [[TMP10:%.*]] = inttoptr i64 [[TMP9]] to ptr ; ORIGIN-NEXT: call void @llvm.memset.p0.i64(ptr align 16 [[TMP7]], i8 0, i64 24, i1 false) -; ORIGIN-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; ORIGIN-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; ORIGIN-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; ORIGIN-NEXT: [[TMP11:%.*]] = and i64 [[TMP23]], -2147483649 ; ORIGIN-NEXT: [[TMP12:%.*]] = inttoptr i64 [[TMP11]] to ptr @@ -266,7 +266,7 @@ define dso_local i32 @sum(i32 %n, ...) local_unnamed_addr #0 { ; ORIGIN: [[FOR_END]]: ; ORIGIN-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[ADD]], %[[VAARG_END]] ] ; ORIGIN-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; ORIGIN-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; ORIGIN-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; ORIGIN-NEXT: store i32 0, ptr @__msan_retval_tls, align 8 ; ORIGIN-NEXT: store i32 0, ptr @__msan_retval_origin_tls, align 4 ; ORIGIN-NEXT: ret i32 [[SUM_0_LCSSA]] @@ -288,7 +288,7 @@ define dso_local i32 @sum(i32 %n, ...) local_unnamed_addr #0 { ; ORIGIN2-NEXT: [[TMP9:%.*]] = and i64 [[TMP8]], -4 ; ORIGIN2-NEXT: [[TMP10:%.*]] = inttoptr i64 [[TMP9]] to ptr ; ORIGIN2-NEXT: call void @llvm.memset.p0.i64(ptr align 16 [[TMP7]], i8 0, i64 24, i1 false) -; ORIGIN2-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; ORIGIN2-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; ORIGIN2-NEXT: [[TMP23:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; ORIGIN2-NEXT: [[TMP11:%.*]] = and i64 [[TMP23]], -2147483649 ; ORIGIN2-NEXT: [[TMP12:%.*]] = inttoptr i64 [[TMP11]] to ptr @@ -368,14 +368,14 @@ define dso_local i32 @sum(i32 %n, ...) local_unnamed_addr #0 { ; ORIGIN2: [[FOR_END]]: ; ORIGIN2-NEXT: [[SUM_0_LCSSA:%.*]] = phi i32 [ 0, %[[ENTRY]] ], [ [[ADD]], %[[VAARG_END]] ] ; ORIGIN2-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; ORIGIN2-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; ORIGIN2-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; ORIGIN2-NEXT: store i32 0, ptr @__msan_retval_tls, align 8 ; ORIGIN2-NEXT: store i32 0, ptr @__msan_retval_origin_tls, align 4 ; ORIGIN2-NEXT: ret i32 [[SUM_0_LCSSA]] ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #2 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #2 call void @llvm.va_start(ptr nonnull %args) %cmp9 = icmp sgt i32 %n, 0 br i1 %cmp9, label %for.body.lr.ph, label %for.end @@ -419,13 +419,13 @@ vaarg.end: ; preds = %vaarg.in_mem, %vaar for.end: ; preds = %vaarg.end, %entry %sum.0.lcssa = phi i32 [ 0, %entry ], [ %add, %vaarg.end ] call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #2 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #2 ret i32 %sum.0.lcssa } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nounwind declare void @llvm.va_start(ptr) #2 @@ -434,7 +434,7 @@ declare void @llvm.va_start(ptr) #2 declare void @llvm.va_end(ptr) #2 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 declare dso_local i80 @sum_i80(i32, ...) local_unnamed_addr diff --git a/llvm/test/Instrumentation/MemorySanitizer/i386/vararg_shadow.ll b/llvm/test/Instrumentation/MemorySanitizer/i386/vararg_shadow.ll index aedefca2ef2b6..74a62762fc184 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/i386/vararg_shadow.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/i386/vararg_shadow.ll @@ -562,7 +562,7 @@ define linkonce_odr dso_local void @_Z5test2IcEvT_iz(i8 noundef signext %t, i32 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -582,26 +582,26 @@ define linkonce_odr dso_local void @_Z5test2IcEvT_iz(i8 noundef signext %t, i32 ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 declare void @llvm.va_start(ptr) #5 declare void @llvm.va_end(ptr) #5 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 define linkonce_odr dso_local void @_Z5test2IiEvT_iz(i32 noundef %t, i32 noundef %n, ...) sanitize_memory { ; CHECK-LABEL: define linkonce_odr dso_local void @_Z5test2IiEvT_iz( @@ -614,7 +614,7 @@ define linkonce_odr dso_local void @_Z5test2IiEvT_iz(i32 noundef %t, i32 noundef ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -634,16 +634,16 @@ define linkonce_odr dso_local void @_Z5test2IiEvT_iz(i32 noundef %t, i32 noundef ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -658,7 +658,7 @@ define linkonce_odr dso_local void @_Z5test2IfEvT_iz(float noundef %t, i32 nound ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -678,16 +678,16 @@ define linkonce_odr dso_local void @_Z5test2IfEvT_iz(float noundef %t, i32 nound ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -702,7 +702,7 @@ define linkonce_odr dso_local void @_Z5test2IdEvT_iz(double noundef %t, i32 noun ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -722,16 +722,16 @@ define linkonce_odr dso_local void @_Z5test2IdEvT_iz(double noundef %t, i32 noun ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -746,7 +746,7 @@ define linkonce_odr dso_local void @_Z5test2IeEvT_iz(x86_fp80 noundef %t, i32 no ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -766,16 +766,16 @@ define linkonce_odr dso_local void @_Z5test2IeEvT_iz(x86_fp80 noundef %t, i32 no ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -790,7 +790,7 @@ define linkonce_odr dso_local void @_Z5test2I6IntIntEvT_iz(i64 %t.coerce, i32 no ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -810,16 +810,16 @@ define linkonce_odr dso_local void @_Z5test2I6IntIntEvT_iz(i64 %t.coerce, i32 no ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -834,7 +834,7 @@ define linkonce_odr dso_local void @_Z5test2I10Int64Int64EvT_iz(i64 %t.coerce0, ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -854,16 +854,16 @@ define linkonce_odr dso_local void @_Z5test2I10Int64Int64EvT_iz(i64 %t.coerce0, ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -878,7 +878,7 @@ define linkonce_odr dso_local void @_Z5test2I12DoubleDoubleEvT_iz(double %t.coer ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -898,16 +898,16 @@ define linkonce_odr dso_local void @_Z5test2I12DoubleDoubleEvT_iz(double %t.coer ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -922,7 +922,7 @@ define linkonce_odr dso_local void @_Z5test2I7Double4EvT_iz(ptr noundef byval(%s ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -942,16 +942,16 @@ define linkonce_odr dso_local void @_Z5test2I7Double4EvT_iz(ptr noundef byval(%s ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -966,7 +966,7 @@ define linkonce_odr dso_local void @_Z5test2I11DoubleFloatEvT_iz(double %t.coerc ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -986,16 +986,16 @@ define linkonce_odr dso_local void @_Z5test2I11DoubleFloatEvT_iz(double %t.coerc ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -1010,7 +1010,7 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble2EvT_iz(ptr noundef byv ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1030,16 +1030,16 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble2EvT_iz(ptr noundef byv ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } @@ -1054,7 +1054,7 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble4EvT_iz(ptr noundef byv ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[TMP2]], ptr align 8 @__msan_va_arg_tls, i64 [[TMP3]], i1 false) ; CHECK-NEXT: call void @llvm.donothing() ; CHECK-NEXT: [[ARGS:%.*]] = alloca [1 x %struct.__va_list_tag], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[ARGS]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = and i64 [[TMP4]], -2147483649 ; CHECK-NEXT: [[TMP6:%.*]] = inttoptr i64 [[TMP5]] to ptr @@ -1074,16 +1074,16 @@ define linkonce_odr dso_local void @_Z5test2I11LongDouble4EvT_iz(ptr noundef byv ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8 ; CHECK-NEXT: call void @_Z3usePv(ptr noundef nonnull [[ARGS]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr nonnull [[ARGS]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr nonnull [[ARGS]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[ARGS]]) ; CHECK-NEXT: ret void ; entry: %args = alloca [1 x %struct.__va_list_tag], align 16 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %args) #6 call void @llvm.va_start(ptr nonnull %args) call void @_Z3usePv(ptr noundef nonnull %args) call void @llvm.va_end(ptr nonnull %args) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %args) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %args) #6 ret void } diff --git a/llvm/test/Instrumentation/MemorySanitizer/msan_debug_info.ll b/llvm/test/Instrumentation/MemorySanitizer/msan_debug_info.ll index f07f3ad06e607..04fdd23aa5a88 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/msan_debug_info.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/msan_debug_info.ll @@ -664,8 +664,8 @@ entry: declare i32 @NoSanitizeMemoryUndefHelper(i32 %x) -declare void @llvm.lifetime.start.p0(i64 immarg %0, ptr nocapture %1) -declare void @llvm.lifetime.end.p0(i64 immarg %0, ptr nocapture %1) +declare void @llvm.lifetime.start.p0(ptr nocapture %1) +declare void @llvm.lifetime.end.p0(ptr nocapture %1) declare void @foo8(ptr nocapture) @@ -674,7 +674,7 @@ define void @msan() sanitize_memory { ; CHECK-NEXT: entry: ; CHECK-NEXT: call void @llvm.donothing(), !dbg [[DBG1]] ; CHECK-NEXT: [[TEXT:%.*]] = alloca i8, align 1, !dbg [[DBG1]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TEXT]]), !dbg [[DBG7]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TEXT]]), !dbg [[DBG7]] ; CHECK-NEXT: [[TMP0:%.*]] = ptrtoint ptr [[TEXT]] to i64, !dbg [[DBG7]] ; CHECK-NEXT: [[TMP1:%.*]] = xor i64 [[TMP0]], 87960930222080, !dbg [[DBG7]] ; CHECK-NEXT: [[TMP2:%.*]] = inttoptr i64 [[TMP1]] to ptr, !dbg [[DBG7]] @@ -685,13 +685,13 @@ define void @msan() sanitize_memory { ; CHECK-NEXT: call void @__msan_set_alloca_origin_with_descr(ptr [[TEXT]], i64 1, ptr @[[GLOB6:[0-9]+]], ptr @[[GLOB7:[0-9]+]]), !dbg [[DBG7]] ; CHECK-NEXT: store i64 0, ptr @__msan_param_tls, align 8, !dbg [[DBG8]] ; CHECK-NEXT: call void @foo8(ptr [[TEXT]]), !dbg [[DBG8]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TEXT]]), !dbg +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TEXT]]), !dbg ; CHECK-NEXT: ret void, !dbg ; entry: %text = alloca i8, align 1, !dbg !10 - call void @llvm.lifetime.start.p0(i64 1, ptr %text), !dbg !11 + call void @llvm.lifetime.start.p0(ptr %text), !dbg !11 call void @foo8(ptr %text), !dbg !12 - call void @llvm.lifetime.end.p0(i64 1, ptr %text), !dbg !13 + call void @llvm.lifetime.end.p0(ptr %text), !dbg !13 ret void, !dbg !14 } diff --git a/llvm/test/Instrumentation/MemorySanitizer/msan_llvm_launder_invariant.ll b/llvm/test/Instrumentation/MemorySanitizer/msan_llvm_launder_invariant.ll index 2cc8fd645c596..5779367875388 100644 --- a/llvm/test/Instrumentation/MemorySanitizer/msan_llvm_launder_invariant.ll +++ b/llvm/test/Instrumentation/MemorySanitizer/msan_llvm_launder_invariant.ll @@ -12,14 +12,14 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local ptr @_Z1fv() local_unnamed_addr #0 { entry: %p = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %p) + call void @llvm.lifetime.start.p0(ptr nonnull %p) %0 = load i8, ptr @flag, align 1 %tobool = icmp ne i8 %0, 0 %call = call zeroext i1 @_Z2f1PPvb(ptr nonnull %p, i1 zeroext %tobool) %1 = load ptr, ptr %p, align 8 %2 = call ptr @llvm.launder.invariant.group.p0(ptr %1) %retval.0 = select i1 %call, ptr %2, ptr null - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %p) + call void @llvm.lifetime.end.p0(ptr nonnull %p) ret ptr %retval.0 } @@ -29,8 +29,8 @@ declare dso_local zeroext i1 @_Z2f1PPvb(ptr, i1 zeroext) local_unnamed_addr declare ptr @llvm.launder.invariant.group.p0(ptr) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) attributes #0 = { sanitize_memory uwtable } diff --git a/llvm/test/Instrumentation/TypeSanitizer/alloca.ll b/llvm/test/Instrumentation/TypeSanitizer/alloca.ll index fc7263193dad6..deddecfc19d81 100644 --- a/llvm/test/Instrumentation/TypeSanitizer/alloca.ll +++ b/llvm/test/Instrumentation/TypeSanitizer/alloca.ll @@ -48,7 +48,7 @@ define void @alloca_lifetime_test(i1 %c) sanitize_type { ; CHECK-NEXT: [[TMP8:%.*]] = add i64 [[TMP7]], [[SHADOW_BASE]] ; CHECK-NEXT: [[TMP9:%.*]] = inttoptr i64 [[TMP8]] to ptr ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[TMP9]], i8 0, i64 80, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 10, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) ; CHECK-NEXT: call void @alloca_test_use(ptr [[X]]) ; CHECK-NEXT: [[TMP10:%.*]] = ptrtoint ptr [[X]] to i64 ; CHECK-NEXT: [[TMP11:%.*]] = and i64 [[TMP10]], [[APP_MEM_MASK]] @@ -56,7 +56,7 @@ define void @alloca_lifetime_test(i1 %c) sanitize_type { ; CHECK-NEXT: [[TMP13:%.*]] = add i64 [[TMP12]], [[SHADOW_BASE]] ; CHECK-NEXT: [[TMP14:%.*]] = inttoptr i64 [[TMP13]] to ptr ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[TMP14]], i8 0, i64 80, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 10, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) ; CHECK-NEXT: br i1 [[C:%.*]], label [[LOOP]], label [[EXIT:%.*]] ; CHECK: exit: ; CHECK-NEXT: ret void @@ -66,9 +66,9 @@ entry: br label %loop loop: - call void @llvm.lifetime.start.p0(i64 10, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) call void @alloca_test_use(ptr %x) - call void @llvm.lifetime.end.p0(i64 10, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) br i1 %c, label %loop, label %exit exit: @@ -99,7 +99,7 @@ define void @dynamic_alloca_lifetime_test(i1 %c, i64 %n) sanitize_type { ; CHECK-NEXT: [[TMP12:%.*]] = inttoptr i64 [[TMP11]] to ptr ; CHECK-NEXT: [[TMP13:%.*]] = shl i64 [[TMP7]], 3 ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[TMP12]], i8 0, i64 [[TMP13]], i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[X]]) ; CHECK-NEXT: call void @alloca_test_use(ptr [[X]]) ; CHECK-NEXT: [[TMP14:%.*]] = mul i64 [[N]], 4 ; CHECK-NEXT: [[TMP15:%.*]] = ptrtoint ptr [[X]] to i64 @@ -109,7 +109,7 @@ define void @dynamic_alloca_lifetime_test(i1 %c, i64 %n) sanitize_type { ; CHECK-NEXT: [[TMP19:%.*]] = inttoptr i64 [[TMP18]] to ptr ; CHECK-NEXT: [[TMP20:%.*]] = shl i64 [[TMP14]], 3 ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[TMP19]], i8 0, i64 [[TMP20]], i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[X]]) ; CHECK-NEXT: br i1 [[C:%.*]], label [[LOOP]], label [[EXIT:%.*]] ; CHECK: exit: ; CHECK-NEXT: ret void @@ -119,9 +119,9 @@ entry: br label %loop loop: - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) call void @alloca_test_use(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) br i1 %c, label %loop, label %exit exit: diff --git a/llvm/test/Transforms/AddDiscriminators/call.ll b/llvm/test/Transforms/AddDiscriminators/call.ll index d093c65c4befa..93d3aa4c4a1c2 100644 --- a/llvm/test/Transforms/AddDiscriminators/call.ll +++ b/llvm/test/Transforms/AddDiscriminators/call.ll @@ -12,8 +12,8 @@ define void @_Z3foov() #0 !dbg !4 { call void @_Z3barv(), !dbg !10 ; CHECK: call void @_Z3barv(), !dbg ![[CALL0:[0-9]+]] %a = alloca [100 x i8], align 16 - call void @llvm.lifetime.start.p0(i64 100, ptr %a), !dbg !11 - call void @llvm.lifetime.end.p0(i64 100, ptr %a), !dbg !11 + call void @llvm.lifetime.start.p0(ptr %a), !dbg !11 + call void @llvm.lifetime.end.p0(ptr %a), !dbg !11 call void @_Z3barv(), !dbg !11 ; CHECK: call void @_Z3barv(), !dbg ![[CALL1:[0-9]+]] call void @_Z3barv(), !dbg !12 @@ -22,8 +22,8 @@ define void @_Z3foov() #0 !dbg !4 { } declare void @_Z3barv() #1 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind argmemonly -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind argmemonly +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind argmemonly +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind argmemonly attributes #0 = { uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" } diff --git a/llvm/test/Transforms/AtomicExpand/PowerPC/cmpxchg.ll b/llvm/test/Transforms/AtomicExpand/PowerPC/cmpxchg.ll index cc51a00db415c..9bf8a5149b3d5 100644 --- a/llvm/test/Transforms/AtomicExpand/PowerPC/cmpxchg.ll +++ b/llvm/test/Transforms/AtomicExpand/PowerPC/cmpxchg.ll @@ -31,11 +31,11 @@ define i1 @test_cmpxchg_seq_cst(ptr %addr, i128 %desire, i128 %new) { ; PWR7-LABEL: @test_cmpxchg_seq_cst( ; PWR7-NEXT: entry: ; PWR7-NEXT: [[TMP0:%.*]] = alloca i128, align 16 -; PWR7-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[TMP0]]) +; PWR7-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP0]]) ; PWR7-NEXT: store i128 [[DESIRE:%.*]], ptr [[TMP0]], align 16 ; PWR7-NEXT: [[TMP1:%.*]] = call zeroext i1 @__atomic_compare_exchange_16(ptr [[ADDR:%.*]], ptr [[TMP0]], i128 [[NEW:%.*]], i32 5, i32 5) ; PWR7-NEXT: [[TMP2:%.*]] = load i128, ptr [[TMP0]], align 16 -; PWR7-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[TMP0]]) +; PWR7-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP0]]) ; PWR7-NEXT: [[TMP3:%.*]] = insertvalue { i128, i1 } poison, i128 [[TMP2]], 0 ; PWR7-NEXT: [[TMP4:%.*]] = insertvalue { i128, i1 } [[TMP3]], i1 [[TMP1]], 1 ; PWR7-NEXT: [[SUCC:%.*]] = extractvalue { i128, i1 } [[TMP4]], 1 diff --git a/llvm/test/Transforms/AtomicExpand/RISCV/atomicrmw-fp.ll b/llvm/test/Transforms/AtomicExpand/RISCV/atomicrmw-fp.ll index 2cbb1794b4340..60fb2487faa13 100644 --- a/llvm/test/Transforms/AtomicExpand/RISCV/atomicrmw-fp.ll +++ b/llvm/test/Transforms/AtomicExpand/RISCV/atomicrmw-fp.ll @@ -9,12 +9,12 @@ define float @test_atomicrmw_fadd_f32(ptr %ptr, float %value) { ; CHECK: atomicrmw.start: ; CHECK-NEXT: [[LOADED:%.*]] = phi float [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], [[ATOMICRMW_START]] ] ; CHECK-NEXT: [[NEW:%.*]] = fadd float [[LOADED]], [[VALUE:%.*]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store float [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP3:%.*]] = bitcast float [[NEW]] to i32 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[PTR]], ptr [[TMP1]], i32 [[TMP3]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load float, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { float, i1 } poison, float [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { float, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { float, i1 } [[TMP7]], 1 @@ -35,12 +35,12 @@ define float @test_atomicrmw_fsub_f32(ptr %ptr, float %value) { ; CHECK: atomicrmw.start: ; CHECK-NEXT: [[LOADED:%.*]] = phi float [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], [[ATOMICRMW_START]] ] ; CHECK-NEXT: [[NEW:%.*]] = fsub float [[LOADED]], [[VALUE:%.*]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store float [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP3:%.*]] = bitcast float [[NEW]] to i32 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[PTR]], ptr [[TMP1]], i32 [[TMP3]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load float, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { float, i1 } poison, float [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { float, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { float, i1 } [[TMP7]], 1 diff --git a/llvm/test/Transforms/AtomicExpand/SPARC/libcalls.ll b/llvm/test/Transforms/AtomicExpand/SPARC/libcalls.ll index 682c1e6848b31..1d6a32ca093f1 100644 --- a/llvm/test/Transforms/AtomicExpand/SPARC/libcalls.ll +++ b/llvm/test/Transforms/AtomicExpand/SPARC/libcalls.ll @@ -38,11 +38,11 @@ define i16 @test_exchange_i16(ptr %arg, i16 %val) { ; CHECK-LABEL: @test_cmpxchg_i16( ; CHECK: %1 = alloca i16, align 2 -; CHECK: call void @llvm.lifetime.start.p0(i64 2, ptr %1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %1) ; CHECK: store i16 %old, ptr %1, align 2 ; CHECK: %2 = call zeroext i1 @__atomic_compare_exchange_2(ptr %arg, ptr %1, i16 %new, i32 5, i32 0) ; CHECK: %3 = load i16, ptr %1, align 2 -; CHECK: call void @llvm.lifetime.end.p0(i64 2, ptr %1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %1) ; CHECK: %4 = insertvalue { i16, i1 } poison, i16 %3, 0 ; CHECK: %5 = insertvalue { i16, i1 } %4, i1 %2, 1 ; CHECK: %ret = extractvalue { i16, i1 } %5, 0 @@ -68,10 +68,10 @@ define i16 @test_add_i16(ptr %arg, i16 %val) { ; CHECK-LABEL: @test_load_i128( ; CHECK: %1 = alloca i128, align 8 -; CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %1) ; CHECK: call void @__atomic_load(i32 16, ptr %arg, ptr %1, i32 5) ; CHECK: %2 = load i128, ptr %1, align 8 -; CHECK: call void @llvm.lifetime.end.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %1) ; CHECK: ret i128 %2 define i128 @test_load_i128(ptr %arg) { %ret = load atomic i128, ptr %arg seq_cst, align 16 @@ -80,10 +80,10 @@ define i128 @test_load_i128(ptr %arg) { ; CHECK-LABEL: @test_store_i128( ; CHECK: %1 = alloca i128, align 8 -; CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %1) ; CHECK: store i128 %val, ptr %1, align 8 ; CHECK: call void @__atomic_store(i32 16, ptr %arg, ptr %1, i32 5) -; CHECK: call void @llvm.lifetime.end.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %1) ; CHECK: ret void define void @test_store_i128(ptr %arg, i128 %val) { store atomic i128 %val, ptr %arg seq_cst, align 16 @@ -92,14 +92,14 @@ define void @test_store_i128(ptr %arg, i128 %val) { ; CHECK-LABEL: @test_exchange_i128( ; CHECK: %1 = alloca i128, align 8 -; CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %1) ; CHECK: store i128 %val, ptr %1, align 8 ; CHECK: %2 = alloca i128, align 8 -; CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr %2) +; CHECK: call void @llvm.lifetime.start.p0(ptr %2) ; CHECK: call void @__atomic_exchange(i32 16, ptr %arg, ptr %1, ptr %2, i32 5) -; CHECK: call void @llvm.lifetime.end.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %1) ; CHECK: %3 = load i128, ptr %2, align 8 -; CHECK: call void @llvm.lifetime.end.p0(i64 16, ptr %2) +; CHECK: call void @llvm.lifetime.end.p0(ptr %2) ; CHECK: ret i128 %3 define i128 @test_exchange_i128(ptr %arg, i128 %val) { %ret = atomicrmw xchg ptr %arg, i128 %val seq_cst @@ -108,15 +108,15 @@ define i128 @test_exchange_i128(ptr %arg, i128 %val) { ; CHECK-LABEL: @test_cmpxchg_i128( ; CHECK: %1 = alloca i128, align 8 -; CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %1) ; CHECK: store i128 %old, ptr %1, align 8 ; CHECK: %2 = alloca i128, align 8 -; CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr %2) +; CHECK: call void @llvm.lifetime.start.p0(ptr %2) ; CHECK: store i128 %new, ptr %2, align 8 ; CHECK: %3 = call zeroext i1 @__atomic_compare_exchange(i32 16, ptr %arg, ptr %1, ptr %2, i32 5, i32 0) -; CHECK: call void @llvm.lifetime.end.p0(i64 16, ptr %2) +; CHECK: call void @llvm.lifetime.end.p0(ptr %2) ; CHECK: %4 = load i128, ptr %1, align 8 -; CHECK: call void @llvm.lifetime.end.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %1) ; CHECK: %5 = insertvalue { i128, i1 } poison, i128 %4, 0 ; CHECK: %6 = insertvalue { i128, i1 } %5, i1 %3, 1 ; CHECK: %ret = extractvalue { i128, i1 } %6, 0 @@ -139,14 +139,14 @@ define i128 @test_cmpxchg_i128(ptr %arg, i128 %old, i128 %new) { ; CHECK:atomicrmw.start: ; CHECK: %loaded = phi i128 [ %3, %0 ], [ %newloaded, %atomicrmw.start ] ; CHECK: %new = add i128 %loaded, %val -; CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %1) ; CHECK: store i128 %loaded, ptr %1, align 8 -; CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr %2) +; CHECK: call void @llvm.lifetime.start.p0(ptr %2) ; CHECK: store i128 %new, ptr %2, align 8 ; CHECK: %4 = call zeroext i1 @__atomic_compare_exchange(i32 16, ptr %arg, ptr %1, ptr %2, i32 5, i32 5) -; CHECK: call void @llvm.lifetime.end.p0(i64 16, ptr %2) +; CHECK: call void @llvm.lifetime.end.p0(ptr %2) ; CHECK: %5 = load i128, ptr %1, align 8 -; CHECK: call void @llvm.lifetime.end.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %1) ; CHECK: %6 = insertvalue { i128, i1 } poison, i128 %5, 0 ; CHECK: %7 = insertvalue { i128, i1 } %6, i1 %4, 1 ; CHECK: %success = extractvalue { i128, i1 } %7, 1 @@ -181,12 +181,12 @@ define void @test_store_double(ptr %arg, double %val) { ; CHECK-LABEL: @test_cmpxchg_ptr( ; CHECK: %1 = alloca ptr, align 4 -; CHECK: call void @llvm.lifetime.start.p0(i64 4, ptr %1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %1) ; CHECK: store ptr %old, ptr %1, align 4 ; CHECK: %2 = ptrtoint ptr %new to i32 ; CHECK: %3 = call zeroext i1 @__atomic_compare_exchange_4(ptr %arg, ptr %1, i32 %2, i32 5, i32 2) ; CHECK: %4 = load ptr, ptr %1, align 4 -; CHECK: call void @llvm.lifetime.end.p0(i64 4, ptr %1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %1) ; CHECK: %5 = insertvalue { ptr, i1 } poison, ptr %4, 0 ; CHECK: %6 = insertvalue { ptr, i1 } %5, i1 %3, 1 ; CHECK: %ret = extractvalue { ptr, i1 } %6, 0 @@ -202,10 +202,10 @@ define ptr @test_cmpxchg_ptr(ptr %arg, ptr %old, ptr %new) { ; CHECK-LABEL: @test_store_fp128 ; CHECK: %1 = alloca fp128, align 8 -; CHECK: call void @llvm.lifetime.start.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.start.p0(ptr %1) ; CHECK: store fp128 %val, ptr %1, align 8 ; CHECK: call void @__atomic_store(i32 16, ptr %arg, ptr %1, i32 5) -; CHECK: call void @llvm.lifetime.end.p0(i64 16, ptr %1) +; CHECK: call void @llvm.lifetime.end.p0(ptr %1) ; CHECK: ret void define void @test_store_fp128(ptr %arg, fp128 %val) { store atomic fp128 %val, ptr %arg seq_cst, align 16 diff --git a/llvm/test/Transforms/AtomicExpand/X86/expand-atomic-libcall.ll b/llvm/test/Transforms/AtomicExpand/X86/expand-atomic-libcall.ll index 20a9e9f6cb86a..fda296be02a71 100644 --- a/llvm/test/Transforms/AtomicExpand/X86/expand-atomic-libcall.ll +++ b/llvm/test/Transforms/AtomicExpand/X86/expand-atomic-libcall.ll @@ -5,10 +5,10 @@ define i256 @atomic_load256_libcall(ptr %ptr) nounwind { ; CHECK-LABEL: @atomic_load256_libcall( ; CHECK-NEXT: [[TMP1:%.*]] = alloca i256, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: call void @__atomic_load(i32 32, ptr [[PTR:%.*]], ptr [[TMP1]], i32 0) ; CHECK-NEXT: [[TMP2:%.*]] = load i256, ptr [[TMP1]], align 16 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: ret i256 [[TMP2]] ; %result = load atomic i256, ptr %ptr unordered, align 16 @@ -19,10 +19,10 @@ define i256 @atomic_load256_libcall_as1(ptr addrspace(1) %ptr) nounwind { ; CHECK-LABEL: @atomic_load256_libcall_as1( ; CHECK-NEXT: [[TMP1:%.*]] = addrspacecast ptr addrspace(1) [[PTR:%.*]] to ptr ; CHECK-NEXT: [[TMP2:%.*]] = alloca i256, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[TMP2]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP2]]) ; CHECK-NEXT: call void @__atomic_load(i32 32, ptr [[TMP1]], ptr [[TMP2]], i32 0) ; CHECK-NEXT: [[TMP3:%.*]] = load i256, ptr [[TMP2]], align 16 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[TMP2]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP2]]) ; CHECK-NEXT: ret i256 [[TMP3]] ; %result = load atomic i256, ptr addrspace(1) %ptr unordered, align 16 diff --git a/llvm/test/Transforms/AtomicExpand/Xtensa/atomicrmw-expand.ll b/llvm/test/Transforms/AtomicExpand/Xtensa/atomicrmw-expand.ll index 59916cc9e8e91..647f187ed7f3a 100644 --- a/llvm/test/Transforms/AtomicExpand/Xtensa/atomicrmw-expand.ll +++ b/llvm/test/Transforms/AtomicExpand/Xtensa/atomicrmw-expand.ll @@ -361,11 +361,11 @@ define i8 @atomicrmw_max_i8_monotonic(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -388,11 +388,11 @@ define i8 @atomicrmw_max_i8_acquire(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -415,11 +415,11 @@ define i8 @atomicrmw_max_i8_release(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -442,11 +442,11 @@ define i8 @atomicrmw_max_i8_acq_rel(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -469,11 +469,11 @@ define i8 @atomicrmw_max_i8_seq_cst(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -496,11 +496,11 @@ define i8 @atomicrmw_min_i8_monotonic(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -523,11 +523,11 @@ define i8 @atomicrmw_min_i8_acquire(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -550,11 +550,11 @@ define i8 @atomicrmw_min_i8_release(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -577,11 +577,11 @@ define i8 @atomicrmw_min_i8_acq_rel(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -604,11 +604,11 @@ define i8 @atomicrmw_min_i8_seq_cst(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -631,11 +631,11 @@ define i8 @atomicrmw_umax_i8_monotonic(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -658,11 +658,11 @@ define i8 @atomicrmw_umax_i8_acquire(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -685,11 +685,11 @@ define i8 @atomicrmw_umax_i8_release(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -712,11 +712,11 @@ define i8 @atomicrmw_umax_i8_acq_rel(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -739,11 +739,11 @@ define i8 @atomicrmw_umax_i8_seq_cst(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -766,11 +766,11 @@ define i8 @atomicrmw_umin_i8_monotonic(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -793,11 +793,11 @@ define i8 @atomicrmw_umin_i8_acquire(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -820,11 +820,11 @@ define i8 @atomicrmw_umin_i8_release(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -847,11 +847,11 @@ define i8 @atomicrmw_umin_i8_acq_rel(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -874,11 +874,11 @@ define i8 @atomicrmw_umin_i8_seq_cst(ptr %a, i8 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i8 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i8 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i8 [[LOADED]], i8 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i8 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_1(ptr [[A]], ptr [[TMP1]], i8 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i8, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i8, i1 } poison, i8 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i8, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i8, i1 } [[TMP7]], 1 @@ -1251,11 +1251,11 @@ define i16 @atomicrmw_max_i16_monotonic(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1278,11 +1278,11 @@ define i16 @atomicrmw_max_i16_acquire(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1305,11 +1305,11 @@ define i16 @atomicrmw_max_i16_release(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1332,11 +1332,11 @@ define i16 @atomicrmw_max_i16_acq_rel(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1359,11 +1359,11 @@ define i16 @atomicrmw_max_i16_seq_cst(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1386,11 +1386,11 @@ define i16 @atomicrmw_min_i16_monotonic(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1413,11 +1413,11 @@ define i16 @atomicrmw_min_i16_acquire(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1440,11 +1440,11 @@ define i16 @atomicrmw_min_i16_release(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1467,11 +1467,11 @@ define i16 @atomicrmw_min_i16_acq_rel(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1494,11 +1494,11 @@ define i16 @atomicrmw_min_i16_seq_cst(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1521,11 +1521,11 @@ define i16 @atomicrmw_umax_i16_monotonic(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1548,11 +1548,11 @@ define i16 @atomicrmw_umax_i16_acquire(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1575,11 +1575,11 @@ define i16 @atomicrmw_umax_i16_release(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1602,11 +1602,11 @@ define i16 @atomicrmw_umax_i16_acq_rel(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1629,11 +1629,11 @@ define i16 @atomicrmw_umax_i16_seq_cst(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1656,11 +1656,11 @@ define i16 @atomicrmw_umin_i16_monotonic(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1683,11 +1683,11 @@ define i16 @atomicrmw_umin_i16_acquire(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1710,11 +1710,11 @@ define i16 @atomicrmw_umin_i16_release(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1737,11 +1737,11 @@ define i16 @atomicrmw_umin_i16_acq_rel(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -1764,11 +1764,11 @@ define i16 @atomicrmw_umin_i16_seq_cst(ptr %a, i16 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i16 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i16 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i16 [[LOADED]], i16 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i16 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_2(ptr [[A]], ptr [[TMP1]], i16 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i16, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i16, i1 } poison, i16 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i16, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i16, i1 } [[TMP7]], 1 @@ -2112,11 +2112,11 @@ define i32 @atomicrmw_max_i32_monotonic(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2139,11 +2139,11 @@ define i32 @atomicrmw_max_i32_acquire(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2166,11 +2166,11 @@ define i32 @atomicrmw_max_i32_release(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2193,11 +2193,11 @@ define i32 @atomicrmw_max_i32_acq_rel(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2220,11 +2220,11 @@ define i32 @atomicrmw_max_i32_seq_cst(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sgt i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2247,11 +2247,11 @@ define i32 @atomicrmw_min_i32_monotonic(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2274,11 +2274,11 @@ define i32 @atomicrmw_min_i32_acquire(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2301,11 +2301,11 @@ define i32 @atomicrmw_min_i32_release(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2328,11 +2328,11 @@ define i32 @atomicrmw_min_i32_acq_rel(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2355,11 +2355,11 @@ define i32 @atomicrmw_min_i32_seq_cst(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp sle i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2382,11 +2382,11 @@ define i32 @atomicrmw_umax_i32_monotonic(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2409,11 +2409,11 @@ define i32 @atomicrmw_umax_i32_acquire(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2436,11 +2436,11 @@ define i32 @atomicrmw_umax_i32_release(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2463,11 +2463,11 @@ define i32 @atomicrmw_umax_i32_acq_rel(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2490,11 +2490,11 @@ define i32 @atomicrmw_umax_i32_seq_cst(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ugt i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2517,11 +2517,11 @@ define i32 @atomicrmw_umin_i32_monotonic(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 0, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2544,11 +2544,11 @@ define i32 @atomicrmw_umin_i32_acquire(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 2, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2571,11 +2571,11 @@ define i32 @atomicrmw_umin_i32_release(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 3, i32 0) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2598,11 +2598,11 @@ define i32 @atomicrmw_umin_i32_acq_rel(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 4, i32 2) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 @@ -2625,11 +2625,11 @@ define i32 @atomicrmw_umin_i32_seq_cst(ptr %a, i32 %b) nounwind { ; CHECK-NEXT: [[LOADED:%.*]] = phi i32 [ [[TMP2]], [[TMP0:%.*]] ], [ [[NEWLOADED:%.*]], %[[ATOMICRMW_START]] ] ; CHECK-NEXT: [[TMP3:%.*]] = icmp ule i32 [[LOADED]], [[B]] ; CHECK-NEXT: [[NEW:%.*]] = select i1 [[TMP3]], i32 [[LOADED]], i32 [[B]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store i32 [[LOADED]], ptr [[TMP1]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call zeroext i1 @__atomic_compare_exchange_4(ptr [[A]], ptr [[TMP1]], i32 [[NEW]], i32 5, i32 5) ; CHECK-NEXT: [[TMP5:%.*]] = load i32, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; CHECK-NEXT: [[TMP6:%.*]] = insertvalue { i32, i1 } poison, i32 [[TMP5]], 0 ; CHECK-NEXT: [[TMP7:%.*]] = insertvalue { i32, i1 } [[TMP6]], i1 [[TMP4]], 1 ; CHECK-NEXT: [[SUCCESS:%.*]] = extractvalue { i32, i1 } [[TMP7]], 1 diff --git a/llvm/test/Transforms/Attributor/heap_to_stack.ll b/llvm/test/Transforms/Attributor/heap_to_stack.ll index 67192902b52df..d54f713e7bbfe 100644 --- a/llvm/test/Transforms/Attributor/heap_to_stack.ll +++ b/llvm/test/Transforms/Attributor/heap_to_stack.ll @@ -27,7 +27,7 @@ declare i32 @no_return_call() noreturn declare void @free(ptr nocapture) allockind("free") -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind ;. ; CHECK: @G = internal global ptr undef, align 4 diff --git a/llvm/test/Transforms/Attributor/heap_to_stack_gpu.ll b/llvm/test/Transforms/Attributor/heap_to_stack_gpu.ll index 0be9434829cce..9a6e0680bb44d 100644 --- a/llvm/test/Transforms/Attributor/heap_to_stack_gpu.ll +++ b/llvm/test/Transforms/Attributor/heap_to_stack_gpu.ll @@ -32,7 +32,7 @@ declare i32 @no_return_call() noreturn declare void @free(ptr nocapture) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind ;. ; CHECK: @G = internal global ptr undef, align 4 diff --git a/llvm/test/Transforms/Attributor/liveness.ll b/llvm/test/Transforms/Attributor/liveness.ll index 874eff661f053..c112d995148d5 100644 --- a/llvm/test/Transforms/Attributor/liveness.ll +++ b/llvm/test/Transforms/Attributor/liveness.ll @@ -2589,7 +2589,7 @@ define void @bad_gep() { ; TUNIT-NEXT: entry: ; TUNIT-NEXT: [[N1:%.*]] = alloca i8, i32 0, align 1 ; TUNIT-NEXT: [[M2:%.*]] = alloca i8, i32 0, align 1 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 1, ptr noalias nofree noundef nonnull captures(none) dereferenceable(1) [[N1]]) #[[ATTR18:[0-9]+]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull captures(none) dereferenceable(1) [[N1]]) #[[ATTR18:[0-9]+]] ; TUNIT-NEXT: br label [[EXIT:%.*]] ; TUNIT: while.body: ; TUNIT-NEXT: unreachable @@ -2598,7 +2598,7 @@ define void @bad_gep() { ; TUNIT: if.end: ; TUNIT-NEXT: unreachable ; TUNIT: exit: -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 1, ptr noalias nofree noundef nonnull captures(none) dereferenceable(1) [[N1]]) #[[ATTR18]] +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull captures(none) dereferenceable(1) [[N1]]) #[[ATTR18]] ; TUNIT-NEXT: ret void ; ; CGSCC: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) @@ -2607,7 +2607,7 @@ define void @bad_gep() { ; CGSCC-NEXT: entry: ; CGSCC-NEXT: [[N1:%.*]] = alloca i8, i32 0, align 1 ; CGSCC-NEXT: [[M2:%.*]] = alloca i8, i32 0, align 1 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 1, ptr noalias nofree noundef nonnull captures(none) dereferenceable(1) [[N1]]) #[[ATTR21:[0-9]+]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull captures(none) dereferenceable(1) [[N1]]) #[[ATTR21:[0-9]+]] ; CGSCC-NEXT: br label [[EXIT:%.*]] ; CGSCC: while.body: ; CGSCC-NEXT: unreachable @@ -2616,13 +2616,13 @@ define void @bad_gep() { ; CGSCC: if.end: ; CGSCC-NEXT: unreachable ; CGSCC: exit: -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 1, ptr noalias nofree noundef nonnull captures(none) dereferenceable(1) [[N1]]) #[[ATTR21]] +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull captures(none) dereferenceable(1) [[N1]]) #[[ATTR21]] ; CGSCC-NEXT: ret void ; entry: %n = alloca i8 %m = alloca i8 - call void @llvm.lifetime.start.p0(i64 1, ptr %n) + call void @llvm.lifetime.start.p0(ptr %n) br label %exit while.body: @@ -2640,7 +2640,7 @@ if.end: br i1 %cmp, label %exit, label %while.body exit: - call void @llvm.lifetime.end.p0(i64 1, ptr %n) + call void @llvm.lifetime.end.p0(ptr %n) ret void } @@ -2679,8 +2679,8 @@ b2: declare i1 @bad_gep_helper1(ptr, ptr, ptr) declare void @bad_gep_helper2(i8) -declare void @llvm.lifetime.start.p0(i64 %0, ptr %1) -declare void @llvm.lifetime.end.p0(i64 %0, ptr %1) +declare void @llvm.lifetime.start.p0(ptr %1) +declare void @llvm.lifetime.end.p0(ptr %1) ;. ; TUNIT: attributes #[[ATTR0]] = { nofree noreturn nosync nounwind } ; TUNIT: attributes #[[ATTR1:[0-9]+]] = { memory(none) } diff --git a/llvm/test/Transforms/Attributor/noalias.ll b/llvm/test/Transforms/Attributor/noalias.ll index 46d9f77660253..b7c295ae4179c 100644 --- a/llvm/test/Transforms/Attributor/noalias.ll +++ b/llvm/test/Transforms/Attributor/noalias.ll @@ -577,31 +577,31 @@ define internal fastcc double @strtox(ptr %s, ptr %p, i32 %prec) unnamed_addr { ; TUNIT-SAME: (ptr [[S:%.*]]) unnamed_addr { ; TUNIT-NEXT: entry: ; TUNIT-NEXT: [[F:%.*]] = alloca [[STRUCT__IO_FILE:%.*]], align 8 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 144, ptr nofree noundef nonnull align 8 captures(none) dereferenceable(240) [[F]]) #[[ATTR13:[0-9]+]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 8 captures(none) dereferenceable(240) [[F]]) #[[ATTR13:[0-9]+]] ; TUNIT-NEXT: [[CALL:%.*]] = call i32 @sh_fromstring(ptr noundef nonnull align 8 dereferenceable(240) [[F]], ptr [[S]]) ; TUNIT-NEXT: call void @__shlim(ptr noundef nonnull align 8 dereferenceable(240) [[F]], i64 noundef 0) ; TUNIT-NEXT: [[CALL1:%.*]] = call double @__floatscan(ptr noundef nonnull align 8 dereferenceable(240) [[F]], i32 noundef 1, i32 noundef 1) -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 144, ptr nofree noundef nonnull align 8 captures(none) dereferenceable(240) [[F]]) +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 8 captures(none) dereferenceable(240) [[F]]) ; TUNIT-NEXT: ret double [[CALL1]] ; ; CGSCC-LABEL: define {{[^@]+}}@strtox ; CGSCC-SAME: (ptr [[S:%.*]]) unnamed_addr { ; CGSCC-NEXT: entry: ; CGSCC-NEXT: [[F:%.*]] = alloca [[STRUCT__IO_FILE:%.*]], align 8 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 144, ptr nofree noundef nonnull align 8 captures(none) dereferenceable(240) [[F]]) #[[ATTR14:[0-9]+]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 8 captures(none) dereferenceable(240) [[F]]) #[[ATTR14:[0-9]+]] ; CGSCC-NEXT: [[CALL:%.*]] = call i32 @sh_fromstring(ptr noundef nonnull align 8 dereferenceable(240) [[F]], ptr [[S]]) ; CGSCC-NEXT: call void @__shlim(ptr noundef nonnull align 8 dereferenceable(240) [[F]], i64 noundef 0) ; CGSCC-NEXT: [[CALL1:%.*]] = call double @__floatscan(ptr noundef nonnull align 8 dereferenceable(240) [[F]], i32 noundef 1, i32 noundef 1) -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 144, ptr nofree noundef nonnull align 8 captures(none) dereferenceable(240) [[F]]) +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 8 captures(none) dereferenceable(240) [[F]]) ; CGSCC-NEXT: ret double [[CALL1]] ; entry: %f = alloca %struct._IO_FILE, align 8 - call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %f) + call void @llvm.lifetime.start.p0(ptr nonnull %f) %call = call i32 @sh_fromstring(ptr nonnull %f, ptr %s) call void @__shlim(ptr nonnull %f, i64 0) %call1 = call double @__floatscan(ptr nonnull %f, i32 %prec, i32 1) - call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %f) + call void @llvm.lifetime.end.p0(ptr nonnull %f) ret double %call1 } @@ -620,7 +620,7 @@ entry: } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) ; Function Attrs: optsize declare dso_local i32 @sh_fromstring(...) local_unnamed_addr @@ -632,7 +632,7 @@ declare dso_local void @__shlim(ptr, i64) local_unnamed_addr declare dso_local double @__floatscan(ptr, i32, i32) local_unnamed_addr ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; Test 15 ; propagate noalias to some callsite arguments that there is no possibly reachable capture before it diff --git a/llvm/test/Transforms/Attributor/openmp_parallel.ll b/llvm/test/Transforms/Attributor/openmp_parallel.ll index d7b194dd64071..54da16c58afc7 100644 --- a/llvm/test/Transforms/Attributor/openmp_parallel.ll +++ b/llvm/test/Transforms/Attributor/openmp_parallel.ll @@ -68,13 +68,13 @@ define internal void @.omp_outlined.(ptr noalias nocapture readonly %.global_tid ; TUNIT-NEXT: [[DOTOMP_IS_LAST:%.*]] = alloca i32, align 4 ; TUNIT-NEXT: br label [[OMP_PRECOND_THEN:%.*]] ; TUNIT: omp.precond.then: -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_LB]]) #[[ATTR3:[0-9]+]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_LB]]) #[[ATTR3:[0-9]+]] ; TUNIT-NEXT: store i32 0, ptr [[DOTOMP_LB]], align 4 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_UB]]) #[[ATTR3]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_UB]]) #[[ATTR3]] ; TUNIT-NEXT: store i32 197, ptr [[DOTOMP_UB]], align 4 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_STRIDE]]) #[[ATTR3]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_STRIDE]]) #[[ATTR3]] ; TUNIT-NEXT: store i32 1, ptr [[DOTOMP_STRIDE]], align 4 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_IS_LAST]]) #[[ATTR3]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_IS_LAST]]) #[[ATTR3]] ; TUNIT-NEXT: store i32 0, ptr [[DOTOMP_IS_LAST]], align 4 ; TUNIT-NEXT: [[TMP0:%.*]] = load i32, ptr [[DOTGLOBAL_TID_]], align 4 ; TUNIT-NEXT: call void @__kmpc_for_static_init_4(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB1]], i32 [[TMP0]], i32 noundef 34, ptr noundef nonnull align 4 dereferenceable(4) [[DOTOMP_IS_LAST]], ptr noundef nonnull align 4 dereferenceable(4) [[DOTOMP_LB]], ptr noundef nonnull align 4 dereferenceable(4) [[DOTOMP_UB]], ptr noundef nonnull align 4 dereferenceable(4) [[DOTOMP_STRIDE]], i32 noundef 1, i32 noundef 1) @@ -103,10 +103,10 @@ define internal void @.omp_outlined.(ptr noalias nocapture readonly %.global_tid ; TUNIT-NEXT: br i1 [[CMP5]], label [[OMP_INNER_FOR_BODY]], label [[OMP_LOOP_EXIT]] ; TUNIT: omp.loop.exit: ; TUNIT-NEXT: call void @__kmpc_for_static_fini(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB1]], i32 [[TMP0]]) -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_IS_LAST]]) -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_STRIDE]]) -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_UB]]) -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_LB]]) +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_IS_LAST]]) +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_STRIDE]]) +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_UB]]) +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_LB]]) ; TUNIT-NEXT: br label [[OMP_PRECOND_END:%.*]] ; TUNIT: omp.precond.end: ; TUNIT-NEXT: ret void @@ -124,13 +124,13 @@ define internal void @.omp_outlined.(ptr noalias nocapture readonly %.global_tid ; CGSCC-NEXT: [[CMP:%.*]] = icmp sgt i32 [[TMP0]], 1 ; CGSCC-NEXT: br i1 [[CMP]], label [[OMP_PRECOND_THEN:%.*]], label [[OMP_PRECOND_END:%.*]] ; CGSCC: omp.precond.then: -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_LB]]) #[[ATTR3:[0-9]+]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_LB]]) #[[ATTR3:[0-9]+]] ; CGSCC-NEXT: store i32 0, ptr [[DOTOMP_LB]], align 4 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_UB]]) #[[ATTR3]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_UB]]) #[[ATTR3]] ; CGSCC-NEXT: store i32 [[SUB2]], ptr [[DOTOMP_UB]], align 4 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_STRIDE]]) #[[ATTR3]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_STRIDE]]) #[[ATTR3]] ; CGSCC-NEXT: store i32 1, ptr [[DOTOMP_STRIDE]], align 4 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_IS_LAST]]) #[[ATTR3]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_IS_LAST]]) #[[ATTR3]] ; CGSCC-NEXT: store i32 0, ptr [[DOTOMP_IS_LAST]], align 4 ; CGSCC-NEXT: [[TMP1:%.*]] = load i32, ptr [[DOTGLOBAL_TID_]], align 4 ; CGSCC-NEXT: call void @__kmpc_for_static_init_4(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB1]], i32 [[TMP1]], i32 noundef 34, ptr noundef nonnull align 4 dereferenceable(4) [[DOTOMP_IS_LAST]], ptr noundef nonnull align 4 dereferenceable(4) [[DOTOMP_LB]], ptr noundef nonnull align 4 dereferenceable(4) [[DOTOMP_UB]], ptr noundef nonnull align 4 dereferenceable(4) [[DOTOMP_STRIDE]], i32 noundef 1, i32 noundef 1) @@ -159,10 +159,10 @@ define internal void @.omp_outlined.(ptr noalias nocapture readonly %.global_tid ; CGSCC-NEXT: br i1 [[CMP5]], label [[OMP_INNER_FOR_BODY]], label [[OMP_LOOP_EXIT]] ; CGSCC: omp.loop.exit: ; CGSCC-NEXT: call void @__kmpc_for_static_fini(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB1]], i32 [[TMP1]]) -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_IS_LAST]]) -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_STRIDE]]) -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_UB]]) -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_LB]]) +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_IS_LAST]]) +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_STRIDE]]) +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_UB]]) +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[DOTOMP_LB]]) ; CGSCC-NEXT: br label [[OMP_PRECOND_END]] ; CGSCC: omp.precond.end: ; CGSCC-NEXT: ret void @@ -178,13 +178,13 @@ entry: br i1 %cmp, label %omp.precond.then, label %omp.precond.end omp.precond.then: ; preds = %entry - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.omp.lb) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %.omp.lb) #3 store i32 0, ptr %.omp.lb, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.omp.ub) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %.omp.ub) #3 store i32 %sub2, ptr %.omp.ub, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.omp.stride) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %.omp.stride) #3 store i32 1, ptr %.omp.stride, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %.omp.is_last) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %.omp.is_last) #3 store i32 0, ptr %.omp.is_last, align 4 %1 = load i32, ptr %.global_tid., align 4 call void @__kmpc_for_static_init_4(ptr nonnull @1, i32 %1, i32 34, ptr nonnull %.omp.is_last, ptr nonnull %.omp.lb, ptr nonnull %.omp.ub, ptr nonnull %.omp.stride, i32 1, i32 1) #3 @@ -216,10 +216,10 @@ omp.inner.for.body: ; preds = %omp.inner.for.body, omp.loop.exit: ; preds = %omp.inner.for.body, %omp.precond.then call void @__kmpc_for_static_fini(ptr nonnull @1, i32 %1) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.omp.is_last) #3 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.omp.stride) #3 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.omp.ub) #3 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %.omp.lb) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %.omp.is_last) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %.omp.stride) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %.omp.ub) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %.omp.lb) #3 br label %omp.precond.end omp.precond.end: ; preds = %omp.loop.exit, %entry @@ -227,10 +227,10 @@ omp.precond.end: ; preds = %omp.loop.exit, %ent } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 declare dso_local void @__kmpc_for_static_init_4(ptr, i32, i32, ptr, ptr, ptr, ptr, i32, i32) local_unnamed_addr diff --git a/llvm/test/Transforms/Attributor/reduced/register_benchmark_test.ll b/llvm/test/Transforms/Attributor/reduced/register_benchmark_test.ll index 472ed30367884..eb7d78f51018f 100644 --- a/llvm/test/Transforms/Attributor/reduced/register_benchmark_test.ll +++ b/llvm/test/Transforms/Attributor/reduced/register_benchmark_test.ll @@ -201,7 +201,7 @@ declare dso_local void @_ZNSt6vectorIN12_GLOBAL__N_18TestCaseESaIS1_EED2Ev(ptr) declare dso_local void @_Z11BM_functionRN9benchmark5StateE(ptr dereferenceable(144)) #0 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #5 +declare void @llvm.lifetime.start.p0(ptr nocapture) #5 ; Function Attrs: alwaysinline uwtable declare dso_local { i64, ptr } @_ZN9benchmark5State5beginEv(ptr) #6 align 2 @@ -216,7 +216,7 @@ declare dso_local zeroext i1 @_ZNK9benchmark5State13StateIteratorneERKS1_(ptr, p declare dso_local void @_ZNK9benchmark5State13StateIteratordeEv(ptr) #7 align 2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #5 +declare void @llvm.lifetime.end.p0(ptr nocapture) #5 ; Function Attrs: alwaysinline nounwind uwtable declare dso_local dereferenceable(16) ptr @_ZN9benchmark5State13StateIteratorppEv(ptr) #7 align 2 diff --git a/llvm/test/Transforms/Attributor/value-simplify-pointer-info.ll b/llvm/test/Transforms/Attributor/value-simplify-pointer-info.ll index fa942c99fb36f..82bed0f27c046 100644 --- a/llvm/test/Transforms/Attributor/value-simplify-pointer-info.ll +++ b/llvm/test/Transforms/Attributor/value-simplify-pointer-info.ll @@ -116,7 +116,7 @@ define void @local_alloca_simplifiable_1(ptr noalias sret(%struct.S) align 4 %ag ; TUNIT-SAME: (ptr noalias nofree writeonly sret([[STRUCT_S:%.*]]) align 4 captures(none) dereferenceable_or_null(24) [[AGG_RESULT:%.*]]) #[[ATTR1:[0-9]+]] { ; TUNIT-NEXT: entry: ; TUNIT-NEXT: [[S:%.*]] = alloca [[STRUCT_S]], align 4 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 24, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(24) [[S]]) #[[ATTR17:[0-9]+]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(24) [[S]]) #[[ATTR17:[0-9]+]] ; TUNIT-NEXT: [[F1:%.*]] = getelementptr inbounds [[STRUCT_S]], ptr [[S]], i64 0, i32 3 ; TUNIT-NEXT: [[F2:%.*]] = getelementptr inbounds [[STRUCT_S]], ptr [[S]], i64 0, i32 4 ; TUNIT-NEXT: [[F3:%.*]] = getelementptr inbounds [[STRUCT_S]], ptr [[S]], i64 0, i32 5 @@ -136,7 +136,7 @@ define void @local_alloca_simplifiable_1(ptr noalias sret(%struct.S) align 4 %ag ; TUNIT-NEXT: store i32 4, ptr [[I212]], align 4, !tbaa [[TBAA13:![0-9]+]] ; TUNIT-NEXT: [[I316:%.*]] = getelementptr inbounds [[STRUCT_S]], ptr [[AGG_RESULT]], i64 0, i32 2 ; TUNIT-NEXT: store i32 4, ptr [[I316]], align 4, !tbaa [[TBAA14:![0-9]+]] -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 24, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(24) [[S]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(24) [[S]]) #[[ATTR17]] ; TUNIT-NEXT: ret void ; ; CGSCC: Function Attrs: mustprogress nofree nosync nounwind willreturn memory(argmem: readwrite) @@ -144,7 +144,7 @@ define void @local_alloca_simplifiable_1(ptr noalias sret(%struct.S) align 4 %ag ; CGSCC-SAME: (ptr noalias nofree noundef nonnull writeonly sret([[STRUCT_S:%.*]]) align 4 captures(none) dereferenceable(24) [[AGG_RESULT:%.*]]) #[[ATTR1:[0-9]+]] { ; CGSCC-NEXT: entry: ; CGSCC-NEXT: [[S:%.*]] = alloca [[STRUCT_S]], align 4 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 24, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(24) [[S]]) #[[ATTR20:[0-9]+]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(24) [[S]]) #[[ATTR20:[0-9]+]] ; CGSCC-NEXT: [[F1:%.*]] = getelementptr inbounds [[STRUCT_S]], ptr [[S]], i64 0, i32 3 ; CGSCC-NEXT: store float 0x3FF19999A0000000, ptr [[F1]], align 4, !tbaa [[TBAA7:![0-9]+]] ; CGSCC-NEXT: [[F2:%.*]] = getelementptr inbounds [[STRUCT_S]], ptr [[S]], i64 0, i32 4 @@ -185,12 +185,12 @@ define void @local_alloca_simplifiable_1(ptr noalias sret(%struct.S) align 4 %ag ; CGSCC-NEXT: [[ADD15:%.*]] = add nsw i32 [[I10]], [[I11]] ; CGSCC-NEXT: [[I316:%.*]] = getelementptr inbounds [[STRUCT_S]], ptr [[AGG_RESULT]], i64 0, i32 2 ; CGSCC-NEXT: store i32 [[ADD15]], ptr [[I316]], align 4, !tbaa [[TBAA14]] -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 24, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(24) [[S]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(24) [[S]]) #[[ATTR20]] ; CGSCC-NEXT: ret void ; entry: %s = alloca %struct.S, align 4 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %s) + call void @llvm.lifetime.start.p0(ptr nonnull %s) %f1 = getelementptr inbounds %struct.S, ptr %s, i64 0, i32 3 store float 0x3FF19999A0000000, ptr %f1, align 4, !tbaa !7 %f2 = getelementptr inbounds %struct.S, ptr %s, i64 0, i32 4 @@ -231,13 +231,13 @@ entry: %add15 = add nsw i32 %i10, %i11 %i316 = getelementptr inbounds %struct.S, ptr %agg.result, i64 0, i32 2 store i32 %add15, ptr %i316, align 4, !tbaa !14 - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %s) + call void @llvm.lifetime.end.p0(ptr nonnull %s) ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; void local_alloca_simplifiable_2(void) { ; char Bytes[1024]; @@ -260,7 +260,7 @@ define void @local_alloca_simplifiable_2() { ; TUNIT-SAME: () #[[ATTR3:[0-9]+]] { ; TUNIT-NEXT: entry: ; TUNIT-NEXT: [[BYTES:%.*]] = alloca [1024 x i8], align 16 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 1024, ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(1024) [[BYTES]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(1024) [[BYTES]]) #[[ATTR17]] ; TUNIT-NEXT: br label [[FOR_COND:%.*]] ; TUNIT: for.cond: ; TUNIT-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], [[FOR_INC:%.*]] ], [ 0, [[ENTRY:%.*]] ] @@ -326,7 +326,7 @@ define void @local_alloca_simplifiable_2() { ; TUNIT-NEXT: [[INDVARS_IV_NEXT13]] = add nuw nsw i64 [[INDVARS_IV12]], 1 ; TUNIT-NEXT: br label [[FOR_COND28]], !llvm.loop [[LOOP20:![0-9]+]] ; TUNIT: for.end38: -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 1024, ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(1024) [[BYTES]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(1024) [[BYTES]]) #[[ATTR17]] ; TUNIT-NEXT: ret void ; ; CGSCC: Function Attrs: mustprogress nofree nosync nounwind willreturn @@ -334,7 +334,7 @@ define void @local_alloca_simplifiable_2() { ; CGSCC-SAME: () #[[ATTR3:[0-9]+]] { ; CGSCC-NEXT: entry: ; CGSCC-NEXT: [[BYTES:%.*]] = alloca [1024 x i8], align 16 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 1024, ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(1024) [[BYTES]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(1024) [[BYTES]]) #[[ATTR20]] ; CGSCC-NEXT: br label [[FOR_COND:%.*]] ; CGSCC: for.cond: ; CGSCC-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[INDVARS_IV_NEXT:%.*]], [[FOR_INC:%.*]] ], [ 0, [[ENTRY:%.*]] ] @@ -406,12 +406,12 @@ define void @local_alloca_simplifiable_2() { ; CGSCC-NEXT: [[INDVARS_IV_NEXT13]] = add nuw nsw i64 [[INDVARS_IV12]], 1 ; CGSCC-NEXT: br label [[FOR_COND28]], !llvm.loop [[LOOP23:![0-9]+]] ; CGSCC: for.end38: -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 1024, ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(1024) [[BYTES]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(1024) [[BYTES]]) #[[ATTR20]] ; CGSCC-NEXT: ret void ; entry: %Bytes = alloca [1024 x i8], align 16 - call void @llvm.lifetime.start.p0(i64 1024, ptr nonnull %Bytes) + call void @llvm.lifetime.start.p0(ptr nonnull %Bytes) br label %for.cond for.cond: ; preds = %for.inc, %entry @@ -503,7 +503,7 @@ for.inc36: ; preds = %for.body31 br label %for.cond28, !llvm.loop !23 for.end38: ; preds = %for.cond.cleanup30 - call void @llvm.lifetime.end.p0(i64 1024, ptr nonnull %Bytes) + call void @llvm.lifetime.end.p0(ptr nonnull %Bytes) ret void } @@ -558,7 +558,7 @@ define i32 @multi_obj_simplifiable_1(i32 %cnd) { ; TUNIT-SAME: (i32 [[CND:%.*]]) #[[ATTR3]] { ; TUNIT-NEXT: entry: ; TUNIT-NEXT: [[L:%.*]] = alloca i32, align 4 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR17]] ; TUNIT-NEXT: [[TOBOOL_NOT:%.*]] = icmp eq i32 [[CND]], 0 ; TUNIT-NEXT: br i1 [[TOBOOL_NOT]], label [[COND_FALSE:%.*]], label [[COND_TRUE:%.*]] ; TUNIT: cond.true: @@ -566,7 +566,7 @@ define i32 @multi_obj_simplifiable_1(i32 %cnd) { ; TUNIT: cond.false: ; TUNIT-NEXT: br label [[COND_END]] ; TUNIT: cond.end: -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR17]] ; TUNIT-NEXT: ret i32 5 ; ; CGSCC: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn @@ -574,7 +574,7 @@ define i32 @multi_obj_simplifiable_1(i32 %cnd) { ; CGSCC-SAME: (i32 [[CND:%.*]]) #[[ATTR5:[0-9]+]] { ; CGSCC-NEXT: entry: ; CGSCC-NEXT: [[L:%.*]] = alloca i32, align 4 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR20]] ; CGSCC-NEXT: [[TOBOOL_NOT:%.*]] = icmp eq i32 [[CND]], 0 ; CGSCC-NEXT: br i1 [[TOBOOL_NOT]], label [[COND_FALSE:%.*]], label [[COND_TRUE:%.*]] ; CGSCC: cond.true: @@ -582,12 +582,12 @@ define i32 @multi_obj_simplifiable_1(i32 %cnd) { ; CGSCC: cond.false: ; CGSCC-NEXT: br label [[COND_END]] ; CGSCC: cond.end: -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR20]] ; CGSCC-NEXT: ret i32 5 ; entry: %L = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %L) + call void @llvm.lifetime.start.p0(ptr nonnull %L) store i32 5, ptr @GI1, align 4, !tbaa !3 store i32 5, ptr %L, align 4, !tbaa !3 %tobool.not = icmp eq i32 %cnd, 0 @@ -602,7 +602,7 @@ cond.false: ; preds = %entry cond.end: ; preds = %cond.false, %cond.true %cond = phi ptr [ @GI1, %cond.true ], [ %L, %cond.false ] %i1 = load i32, ptr %cond, align 4, !tbaa !3 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %L) + call void @llvm.lifetime.end.p0(ptr nonnull %L) ret i32 %i1 } @@ -620,7 +620,7 @@ define i32 @multi_obj_simplifiable_2(i32 %cnd) { ; TUNIT-SAME: (i32 [[CND:%.*]]) #[[ATTR3]] { ; TUNIT-NEXT: entry: ; TUNIT-NEXT: [[L:%.*]] = alloca i32, align 4 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR17]] ; TUNIT-NEXT: [[TOBOOL_NOT:%.*]] = icmp eq i32 [[CND]], 0 ; TUNIT-NEXT: br i1 [[TOBOOL_NOT]], label [[COND_FALSE:%.*]], label [[COND_TRUE:%.*]] ; TUNIT: cond.true: @@ -628,7 +628,7 @@ define i32 @multi_obj_simplifiable_2(i32 %cnd) { ; TUNIT: cond.false: ; TUNIT-NEXT: br label [[COND_END]] ; TUNIT: cond.end: -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR17]] ; TUNIT-NEXT: ret i32 5 ; ; CGSCC: Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn @@ -636,7 +636,7 @@ define i32 @multi_obj_simplifiable_2(i32 %cnd) { ; CGSCC-SAME: (i32 [[CND:%.*]]) #[[ATTR5]] { ; CGSCC-NEXT: entry: ; CGSCC-NEXT: [[L:%.*]] = alloca i32, align 4 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR20]] ; CGSCC-NEXT: [[TOBOOL_NOT:%.*]] = icmp eq i32 [[CND]], 0 ; CGSCC-NEXT: br i1 [[TOBOOL_NOT]], label [[COND_FALSE:%.*]], label [[COND_TRUE:%.*]] ; CGSCC: cond.true: @@ -644,12 +644,12 @@ define i32 @multi_obj_simplifiable_2(i32 %cnd) { ; CGSCC: cond.false: ; CGSCC-NEXT: br label [[COND_END]] ; CGSCC: cond.end: -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[L]]) #[[ATTR20]] ; CGSCC-NEXT: ret i32 5 ; entry: %L = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %L) + call void @llvm.lifetime.start.p0(ptr nonnull %L) %tobool.not = icmp eq i32 %cnd, 0 br i1 %tobool.not, label %cond.false, label %cond.true @@ -663,7 +663,7 @@ cond.end: ; preds = %cond.false, %cond.t %cond = phi ptr [ @GI2, %cond.true ], [ %L, %cond.false ] store i32 5, ptr %cond, align 4, !tbaa !3 %l = load i32, ptr %cond, align 4, !tbaa !3 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %L) + call void @llvm.lifetime.end.p0(ptr nonnull %L) ret i32 %l } @@ -1528,8 +1528,8 @@ define i32 @local_alloca_not_simplifiable_1() { ; TUNIT-NEXT: entry: ; TUNIT-NEXT: [[X:%.*]] = alloca i32, align 4 ; TUNIT-NEXT: [[Y:%.*]] = alloca i32, align 4 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[X]]) #[[ATTR17]] -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[Y]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[X]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[Y]]) #[[ATTR17]] ; TUNIT-NEXT: store i32 1, ptr [[Y]], align 4, !tbaa [[TBAA3]] ; TUNIT-NEXT: store i32 1, ptr [[X]], align 4, !tbaa [[TBAA3]] ; TUNIT-NEXT: call void @escape(ptr noundef nonnull align 4 dereferenceable(4) [[X]]) @@ -1540,16 +1540,16 @@ define i32 @local_alloca_not_simplifiable_1() { ; TUNIT-NEXT: [[I4:%.*]] = load i32, ptr [[Y]], align 4, !tbaa [[TBAA3]] ; TUNIT-NEXT: [[ADD:%.*]] = add nsw i32 [[I3]], [[I4]] ; TUNIT-NEXT: [[ADD1:%.*]] = add nsw i32 [[ADD]], [[COND]] -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[Y]]) -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[X]]) +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[Y]]) +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[X]]) ; TUNIT-NEXT: ret i32 [[ADD1]] ; ; CGSCC-LABEL: define {{[^@]+}}@local_alloca_not_simplifiable_1() { ; CGSCC-NEXT: entry: ; CGSCC-NEXT: [[X:%.*]] = alloca i32, align 4 ; CGSCC-NEXT: [[Y:%.*]] = alloca i32, align 4 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[X]]) #[[ATTR20]] -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[Y]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[X]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[Y]]) #[[ATTR20]] ; CGSCC-NEXT: store i32 1, ptr [[Y]], align 4, !tbaa [[TBAA3]] ; CGSCC-NEXT: store i32 1, ptr [[X]], align 4, !tbaa [[TBAA3]] ; CGSCC-NEXT: call void @escape(ptr noundef nonnull align 4 dereferenceable(4) [[X]]) @@ -1560,15 +1560,15 @@ define i32 @local_alloca_not_simplifiable_1() { ; CGSCC-NEXT: [[I4:%.*]] = load i32, ptr [[Y]], align 4, !tbaa [[TBAA3]] ; CGSCC-NEXT: [[ADD:%.*]] = add nsw i32 [[I3]], [[I4]] ; CGSCC-NEXT: [[ADD1:%.*]] = add nsw i32 [[ADD]], [[COND]] -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[Y]]) -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[X]]) +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[Y]]) +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[X]]) ; CGSCC-NEXT: ret i32 [[ADD1]] ; entry: %X = alloca i32, align 4 %Y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %X) - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %Y) + call void @llvm.lifetime.start.p0(ptr nonnull %X) + call void @llvm.lifetime.start.p0(ptr nonnull %Y) store i32 1, ptr %Y, align 4, !tbaa !3 store i32 1, ptr %X, align 4, !tbaa !3 call void @escape(ptr nonnull %X) @@ -1579,8 +1579,8 @@ entry: %i4 = load i32, ptr %Y, align 4, !tbaa !3 %add = add nsw i32 %i3, %i4 %add1 = add nsw i32 %add, %cond - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %Y) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %X) + call void @llvm.lifetime.end.p0(ptr nonnull %Y) + call void @llvm.lifetime.end.p0(ptr nonnull %X) ret i32 %add1 } @@ -2755,7 +2755,7 @@ define hidden void @no_propagation_of_unknown_index_access(ptr %in, ptr %out, i3 ; TUNIT-SAME: (ptr nofree readonly captures(none) [[IN:%.*]], ptr nofree writeonly captures(none) [[OUT:%.*]], i32 [[IDX:%.*]]) #[[ATTR1]] { ; TUNIT-NEXT: entry: ; TUNIT-NEXT: [[BUF:%.*]] = alloca [128 x i32], align 16 -; TUNIT-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 512, ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(512) [[BUF]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(512) [[BUF]]) #[[ATTR17]] ; TUNIT-NEXT: br label [[FOR_COND:%.*]] ; TUNIT: for.cond: ; TUNIT-NEXT: [[I_0:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[FOR_BODY:%.*]] ] @@ -2776,7 +2776,7 @@ define hidden void @no_propagation_of_unknown_index_access(ptr %in, ptr %out, i3 ; TUNIT-NEXT: [[CMP5:%.*]] = icmp slt i32 [[I3_0]], 128 ; TUNIT-NEXT: br i1 [[CMP5]], label [[FOR_BODY7]], label [[FOR_COND_CLEANUP6:%.*]] ; TUNIT: for.cond.cleanup6: -; TUNIT-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 512, ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(512) [[BUF]]) #[[ATTR17]] +; TUNIT-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(512) [[BUF]]) #[[ATTR17]] ; TUNIT-NEXT: ret void ; TUNIT: for.body7: ; TUNIT-NEXT: [[IDXPROM8:%.*]] = sext i32 [[I3_0]] to i64 @@ -2797,7 +2797,7 @@ define hidden void @no_propagation_of_unknown_index_access(ptr %in, ptr %out, i3 ; CGSCC-SAME: (ptr nofree readonly captures(none) [[IN:%.*]], ptr nofree writeonly captures(none) [[OUT:%.*]], i32 [[IDX:%.*]]) #[[ATTR13:[0-9]+]] { ; CGSCC-NEXT: entry: ; CGSCC-NEXT: [[BUF:%.*]] = alloca [128 x i32], align 16 -; CGSCC-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 512, ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(512) [[BUF]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.start.p0(ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(512) [[BUF]]) #[[ATTR20]] ; CGSCC-NEXT: br label [[FOR_COND:%.*]] ; CGSCC: for.cond: ; CGSCC-NEXT: [[I_0:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[INC:%.*]], [[FOR_BODY:%.*]] ] @@ -2818,7 +2818,7 @@ define hidden void @no_propagation_of_unknown_index_access(ptr %in, ptr %out, i3 ; CGSCC-NEXT: [[CMP5:%.*]] = icmp slt i32 [[I3_0]], 128 ; CGSCC-NEXT: br i1 [[CMP5]], label [[FOR_BODY7]], label [[FOR_COND_CLEANUP6:%.*]] ; CGSCC: for.cond.cleanup6: -; CGSCC-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 512, ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(512) [[BUF]]) #[[ATTR20]] +; CGSCC-NEXT: call void @llvm.lifetime.end.p0(ptr noalias nofree noundef nonnull align 16 captures(none) dereferenceable(512) [[BUF]]) #[[ATTR20]] ; CGSCC-NEXT: ret void ; CGSCC: for.body7: ; CGSCC-NEXT: [[IDXPROM8:%.*]] = sext i32 [[I3_0]] to i64 @@ -2836,7 +2836,7 @@ define hidden void @no_propagation_of_unknown_index_access(ptr %in, ptr %out, i3 ; entry: %buf = alloca [128 x i32], align 16 - call void @llvm.lifetime.start.p0(i64 512, ptr %buf) #2 + call void @llvm.lifetime.start.p0(ptr %buf) #2 br label %for.cond for.cond: ; preds = %for.body, %entry @@ -2862,7 +2862,7 @@ for.cond4: ; preds = %for.body7, %for.con br i1 %cmp5, label %for.body7, label %for.cond.cleanup6 for.cond.cleanup6: ; preds = %for.cond4 - call void @llvm.lifetime.end.p0(i64 512, ptr %buf) #2 + call void @llvm.lifetime.end.p0(ptr %buf) #2 ret void for.body7: ; preds = %for.cond4 diff --git a/llvm/test/Transforms/CodeExtractor/LoopExtractor_alloca.ll b/llvm/test/Transforms/CodeExtractor/LoopExtractor_alloca.ll index b932a7dc0bf9f..09abf1f3cd85b 100644 --- a/llvm/test/Transforms/CodeExtractor/LoopExtractor_alloca.ll +++ b/llvm/test/Transforms/CodeExtractor/LoopExtractor_alloca.ll @@ -30,16 +30,16 @@ entry: br label %loop1 loop1: - call void @llvm.lifetime.start.p0(i64 4, ptr %v1) + call void @llvm.lifetime.start.p0(ptr %v1) %r1 = call i32 @foo(ptr %v1) - call void @llvm.lifetime.end.p0(i64 4, ptr %v1) + call void @llvm.lifetime.end.p0(ptr %v1) %cmp1 = icmp ne i32 %r1, 0 br i1 %cmp1, label %loop1, label %loop2 loop2: - call void @llvm.lifetime.start.p0(i64 4, ptr %v2) + call void @llvm.lifetime.start.p0(ptr %v2) %r2 = call i32 @foo(ptr %v2) - call void @llvm.lifetime.end.p0(i64 4, ptr %v2) + call void @llvm.lifetime.end.p0(ptr %v2) %cmp2 = icmp ne i32 %r2, 0 br i1 %cmp2, label %loop2, label %exit @@ -49,6 +49,6 @@ exit: declare i32 @foo(ptr) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca.ll index 9cdc37a2864ef..a24bb744e90c7 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca.ll @@ -20,11 +20,11 @@ bb: br i1 %tmp4, label %bb6, label %bb5 bb5: ; preds = %bb - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp) #2 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) #2 store i32 %tmp3, ptr %tmp, align 4, !tbaa !2 store i32 %tmp3, ptr @g, align 4, !tbaa !2 call void @bar(ptr nonnull %tmp) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) #2 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) #2 br label %bb6 bb6: ; preds = %bb5, %bb @@ -32,14 +32,14 @@ bb6: ; preds = %bb5, %bb ret i32 %tmp7 } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @bar(ptr) local_unnamed_addr #2 declare void @bar2(ptr, ptr) local_unnamed_addr #1 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define i32 @caller(i32 %arg) local_unnamed_addr #0 { diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca2.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca2.ll index f4a37e7708726..22c0baf4b47ae 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca2.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca2.ll @@ -18,10 +18,10 @@ bb: br i1 %tmp4, label %bb6, label %bb5 bb5: ; preds = %bb - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp) #2 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) #2 store i32 %tmp3, ptr @g, align 4, !tbaa !2 call void @bar(ptr nonnull %tmp) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) #2 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) #2 br label %bb6 bb6: ; preds = %bb5, %bb @@ -30,14 +30,14 @@ bb6: ; preds = %bb5, %bb } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @bar(ptr) local_unnamed_addr #2 declare void @bar2(ptr, ptr) local_unnamed_addr #1 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define i32 @caller(i32 %arg) local_unnamed_addr #0 { diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca4.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca4.ll index bd51910aaf1c8..8b9c5dd619ba3 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca4.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca4.ll @@ -7,7 +7,7 @@ @g = external local_unnamed_addr global i32, align 4 ; CHECK-LABEL: define{{.*}}@caller( -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %tmp.i) +; CHECK: call void @llvm.lifetime.start.p0(ptr %tmp.i) ; CHECK-NEXT: call void @callee_unknown_use1.{{.*}}(ptr %tmp.i define i32 @callee_unknown_use1(i32 %arg) local_unnamed_addr #0 { @@ -21,11 +21,11 @@ bb: br i1 %tmp4, label %bb6, label %bb5 bb5: ; preds = %bb - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp) #2 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) #2 store i32 %tmp3, ptr @g, align 4, !tbaa !2 %tmp11 = bitcast ptr %tmp to ptr call void @bar(ptr nonnull %tmp11) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) #2 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) #2 br label %bb6 bb6: ; preds = %bb5, %bb @@ -36,14 +36,14 @@ bb6: ; preds = %bb5, %bb ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @bar(ptr) local_unnamed_addr #2 declare void @bar2(ptr, ptr) local_unnamed_addr #1 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define i32 @caller(i32 %arg) local_unnamed_addr #0 { diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca5.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca5.ll index 54782c505e8f2..10be1c8f95990 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca5.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineAlloca5.ll @@ -18,11 +18,11 @@ bb: br i1 %tmp4, label %bb6, label %bb5 bb5: ; preds = %bb - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp) #2 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) #2 store i32 %tmp3, ptr %tmp, align 4, !tbaa !2 store i32 %tmp3, ptr @g, align 4, !tbaa !2 call void @bar(ptr nonnull %tmp) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) #2 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) #2 br label %bb6 bb6: ; preds = %bb5, %bb @@ -32,14 +32,14 @@ bb6: ; preds = %bb5, %bb } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @bar(ptr) local_unnamed_addr #2 declare void @bar2(ptr, ptr) local_unnamed_addr #1 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define i32 @caller(i32 %arg) local_unnamed_addr #0 { diff --git a/llvm/test/Transforms/CodeExtractor/PartialInlineInvokeProducesOutVal.ll b/llvm/test/Transforms/CodeExtractor/PartialInlineInvokeProducesOutVal.ll index bdf9e233dc30f..5e0ce20645265 100644 --- a/llvm/test/Transforms/CodeExtractor/PartialInlineInvokeProducesOutVal.ll +++ b/llvm/test/Transforms/CodeExtractor/PartialInlineInvokeProducesOutVal.ll @@ -26,10 +26,10 @@ bb5: ; preds = %bb4, %bb1, %bb ; CHECK-LABEL: bb: ; CHECK-NEXT: [[CALL26LOC:%.*]] = alloca ptr ; CHECK-LABEL: codeRepl.i: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[CALL26LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[CALL26LOC]]) ; CHECK-NEXT: call void @bar.1.bb1(ptr [[CALL26LOC]]) ; CHECK-NEXT: %call26.reload.i = load ptr, ptr [[CALL26LOC]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[CALL26LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[CALL26LOC]]) define ptr @dummy_caller(i32 %arg) { bb: %tmp = tail call ptr @bar(i32 %arg) diff --git a/llvm/test/Transforms/CodeExtractor/live_shrink.ll b/llvm/test/Transforms/CodeExtractor/live_shrink.ll index f5debc5035859..43cc248fa874a 100644 --- a/llvm/test/Transforms/CodeExtractor/live_shrink.ll +++ b/llvm/test/Transforms/CodeExtractor/live_shrink.ll @@ -8,7 +8,7 @@ define void @_Z3foov() local_unnamed_addr { bb: %tmp = alloca %class.A, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp) + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) %tmp2 = load i32, ptr @cond, align 4, !tbaa !2 %tmp3 = icmp eq i32 %tmp2, 0 br i1 %tmp3, label %bb4, label %bb5 @@ -18,17 +18,17 @@ bb4: ; preds = %bb br label %bb5 bb5: ; preds = %bb4, %bb - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) ret void } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @_ZN1A7memfuncEv(ptr) local_unnamed_addr ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; Function Attrs: uwtable define void @_Z3goov() local_unnamed_addr { @@ -49,8 +49,8 @@ bb: ; CHECK-LABEL: define internal void @_Z3foov.1. ; CHECK: newFuncRoot: ; CHECK-NEXT: %tmp = alloca %class.A -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp) -; CHECK: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull %tmp) +; CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %tmp) ; CHECK-NEXT: br label %bb5.exitStub diff --git a/llvm/test/Transforms/CodeExtractor/live_shrink_gep.ll b/llvm/test/Transforms/CodeExtractor/live_shrink_gep.ll index e9d5fb6556faf..ef815adc6387e 100644 --- a/llvm/test/Transforms/CodeExtractor/live_shrink_gep.ll +++ b/llvm/test/Transforms/CodeExtractor/live_shrink_gep.ll @@ -9,7 +9,7 @@ define void @_Z3foov() local_unnamed_addr { bb: %tmp = alloca %class.A, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %tmp) + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) %tmp2 = load i32, ptr @cond, align 4, !tbaa !2 %tmp3 = icmp eq i32 %tmp2, 0 br i1 %tmp3, label %bb4, label %bb5 @@ -19,17 +19,17 @@ bb4: ; preds = %bb br label %bb5 bb5: ; preds = %bb4, %bb - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %tmp) + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) ret void } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @_ZN1A7memfuncEv(ptr) local_unnamed_addr ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; Function Attrs: uwtable define void @_Z3goov() local_unnamed_addr { diff --git a/llvm/test/Transforms/CodeExtractor/live_shrink_hoist.ll b/llvm/test/Transforms/CodeExtractor/live_shrink_hoist.ll index 6f63bca00c633..70748542fd0ee 100644 --- a/llvm/test/Transforms/CodeExtractor/live_shrink_hoist.ll +++ b/llvm/test/Transforms/CodeExtractor/live_shrink_hoist.ll @@ -9,7 +9,7 @@ define void @_Z3foov() local_unnamed_addr { bb: %tmp = alloca %class.A, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp) + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) %tmp2 = load i32, ptr @cond, align 4, !tbaa !2 %tmp3 = icmp eq i32 %tmp2, 0 br i1 %tmp3, label %bb4, label %bb9 @@ -29,17 +29,17 @@ bb8: ; preds = %bb4 br label %bb9 bb9: ; preds = %bb8, %bb4, %bb - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) ret void } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @_ZN1A7memfuncEv(ptr) local_unnamed_addr ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; Function Attrs: uwtable define void @_Z3goov() local_unnamed_addr { @@ -50,7 +50,7 @@ bb: ; CHECK-LABEL: define internal void @_Z3foov.1. ; CHECK: bb9: -; CHECK: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) +; CHECK: call void @llvm.lifetime.end.p0(ptr nonnull %tmp) ; CHECK: br label %.exitStub diff --git a/llvm/test/Transforms/CodeExtractor/live_shrink_multiple.ll b/llvm/test/Transforms/CodeExtractor/live_shrink_multiple.ll index 2512ac96b46ce..1d0af23e74c7f 100644 --- a/llvm/test/Transforms/CodeExtractor/live_shrink_multiple.ll +++ b/llvm/test/Transforms/CodeExtractor/live_shrink_multiple.ll @@ -8,8 +8,8 @@ define void @_Z3foov() local_unnamed_addr { bb: %tmp = alloca %class.A, align 4 %tmp1 = alloca %class.A, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp) - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp1) + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) + call void @llvm.lifetime.start.p0(ptr nonnull %tmp1) %tmp4 = load i32, ptr @cond, align 4, !tbaa !2 %tmp5 = icmp eq i32 %tmp4, 0 br i1 %tmp5, label %bb6, label %bb7 @@ -19,18 +19,18 @@ bb6: ; preds = %bb br label %bb7 bb7: ; preds = %bb6, %bb - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp1) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) + call void @llvm.lifetime.end.p0(ptr nonnull %tmp1) + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) ret void } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @_ZN1A7memfuncEv(ptr) local_unnamed_addr ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; Function Attrs: uwtable define void @_Z3goov() local_unnamed_addr { diff --git a/llvm/test/Transforms/CodeExtractor/live_shrink_unsafe.ll b/llvm/test/Transforms/CodeExtractor/live_shrink_unsafe.ll index 7942418e8fb2e..c5bd6265f81dd 100644 --- a/llvm/test/Transforms/CodeExtractor/live_shrink_unsafe.ll +++ b/llvm/test/Transforms/CodeExtractor/live_shrink_unsafe.ll @@ -14,8 +14,8 @@ define void @_Z3foo_unknown_mem_accessv() local_unnamed_addr { bb: %tmp = alloca %class.A, align 4 %tmp1 = alloca %class.A, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp) - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp1) + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) + call void @llvm.lifetime.start.p0(ptr nonnull %tmp1) %tmp4 = load ptr, ptr @condptr, align 8, !tbaa !2 %tmp5 = load i32, ptr %tmp4, align 4, !tbaa !6 %tmp6 = icmp eq i32 %tmp5, 0 @@ -26,20 +26,20 @@ bb7: ; preds = %bb br label %bb8 bb8: ; preds = %bb7, %bb - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp1) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) + call void @llvm.lifetime.end.p0(ptr nonnull %tmp1) + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) ret void } declare void @_Z3barv() local_unnamed_addr -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @_ZN1A7memfuncEv(ptr) local_unnamed_addr -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define void @_Z3foo_unknown_calli(i32 %arg) local_unnamed_addr { bb: %tmp = alloca %class.A, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %tmp) + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) tail call void @_Z3barv() %tmp2 = icmp eq i32 %arg, 0 br i1 %tmp2, label %bb3, label %bb4 @@ -49,7 +49,7 @@ bb3: ; preds = %bb br label %bb4 bb4: ; preds = %bb3, %bb - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %tmp) + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) ret void } diff --git a/llvm/test/Transforms/CodeGenPrepare/ARM/tailcall-dup.ll b/llvm/test/Transforms/CodeGenPrepare/ARM/tailcall-dup.ll index 3f113e6ea1632..d2b79ab1151b7 100644 --- a/llvm/test/Transforms/CodeGenPrepare/ARM/tailcall-dup.ll +++ b/llvm/test/Transforms/CodeGenPrepare/ARM/tailcall-dup.ll @@ -4,8 +4,8 @@ target triple = "armv8m.main-none-eabi" declare ptr @f0() declare ptr @f1() -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind define ptr @tail_dup() { ; CHECK-LABEL: tail_dup @@ -15,7 +15,7 @@ define ptr @tail_dup() { ; CHECK-NEXT: ret ptr bb0: %a = alloca i32 - call void @llvm.lifetime.start.p0(i64 -1, ptr %a) nounwind + call void @llvm.lifetime.start.p0(ptr %a) nounwind %tmp0 = tail call ptr @f0() br label %return bb1: @@ -23,7 +23,7 @@ bb1: br label %return return: %retval = phi ptr [ %tmp0, %bb0 ], [ %tmp1, %bb1 ] - call void @llvm.lifetime.end.p0(i64 -1, ptr %a) nounwind + call void @llvm.lifetime.end.p0(ptr %a) nounwind ret ptr %retval } diff --git a/llvm/test/Transforms/CodeGenPrepare/X86/tailcall-assume-xbb.ll b/llvm/test/Transforms/CodeGenPrepare/X86/tailcall-assume-xbb.ll index dd47d5eb6cc46..f72756db8cad3 100644 --- a/llvm/test/Transforms/CodeGenPrepare/X86/tailcall-assume-xbb.ll +++ b/llvm/test/Transforms/CodeGenPrepare/X86/tailcall-assume-xbb.ll @@ -14,7 +14,7 @@ define ptr @foo(i64 %size, i64 %v1, i64 %v2) { entry: %a = alloca i8 - call void @llvm.lifetime.start.p0(i64 -1, ptr %a) nounwind + call void @llvm.lifetime.start.p0(ptr %a) nounwind %cmp1 = icmp ult i64 %size, 1025 br i1 %cmp1, label %if.end, label %case1 @@ -42,12 +42,12 @@ exit1: exit2: %retval2 = phi ptr [ %ret1, %case1 ], [ %retval1, %exit1 ] - call void @llvm.lifetime.end.p0(i64 -1, ptr %a) nounwind + call void @llvm.lifetime.end.p0(ptr %a) nounwind ret ptr %retval2 } declare void @llvm.assume(i1) declare ptr @qux() declare ptr @bar() -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind diff --git a/llvm/test/Transforms/ConstantHoisting/AArch64/const-hoist-intrinsics.ll b/llvm/test/Transforms/ConstantHoisting/AArch64/const-hoist-intrinsics.ll index 6bf268b1c162c..6997c9f11a808 100644 --- a/llvm/test/Transforms/ConstantHoisting/AArch64/const-hoist-intrinsics.ll +++ b/llvm/test/Transforms/ConstantHoisting/AArch64/const-hoist-intrinsics.ll @@ -65,25 +65,25 @@ define void @test_free_intrinsics(i64 %x) { ; CHECK-LABEL: @test_free_intrinsics( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[PTR:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 100000000032, ptr [[PTR]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 100000000064, ptr [[PTR]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 100000000128, ptr [[PTR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PTR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PTR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTR]]) ; CHECK-NEXT: [[I:%.*]] = call ptr @llvm.invariant.start.p0(i64 100000000256, ptr [[PTR]]) ; CHECK-NEXT: call void @llvm.invariant.end.p0(ptr [[I]], i64 100000000256, ptr [[PTR]]) ; CHECK-NEXT: ret void ; entry: %ptr = alloca i8 - call void @llvm.lifetime.start.p0(i64 100000000032, ptr %ptr) - call void @llvm.lifetime.start.p0(i64 100000000064, ptr %ptr) - call void @llvm.lifetime.end.p0(i64 100000000128, ptr %ptr) + call void @llvm.lifetime.start.p0(ptr %ptr) + call void @llvm.lifetime.start.p0(ptr %ptr) + call void @llvm.lifetime.end.p0(ptr %ptr) %i = call ptr @llvm.invariant.start.p0(i64 100000000256, ptr %ptr) call void @llvm.invariant.end.p0(ptr %i, i64 100000000256, ptr %ptr) ret void } -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) declare ptr @llvm.invariant.start.p0(i64, ptr nocapture) declare void @llvm.invariant.end.p0(ptr, i64, ptr nocapture) diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-06.ll b/llvm/test/Transforms/Coroutines/coro-alloca-06.ll index 89149ceba4c14..bf75196047aff 100644 --- a/llvm/test/Transforms/Coroutines/coro-alloca-06.ll +++ b/llvm/test/Transforms/Coroutines/coro-alloca-06.ll @@ -17,11 +17,11 @@ entry: tricky: %2 = call ptr @await_suspend() store ptr %2, ptr %0, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %1) + call void @llvm.lifetime.start.p0(ptr %1) store ptr %0, ptr %1, align 8 %3 = load ptr, ptr %1, align 8 %4 = load ptr, ptr %3, align 8 - call void @llvm.lifetime.end.p0(i64 8, ptr %1) + call void @llvm.lifetime.end.p0(ptr %1) br label %finish finish: @@ -49,9 +49,9 @@ suspend: ; CHECK: [[TMP2:%.*]] = call ptr @await_suspend() ; CHECK-NEXT: store ptr [[TMP2]], ptr [[TMP0]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP1]]) ; CHECK-NEXT: store ptr [[TMP0]], ptr [[TMP1]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[TMP1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP1]]) ; declare ptr @llvm.coro.free(token, ptr) @@ -65,8 +65,8 @@ declare i1 @llvm.coro.alloc(token) declare ptr @llvm.coro.begin(token, ptr) declare i1 @llvm.coro.end(ptr, i1, token) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare ptr @await_suspend() declare void @print(ptr nocapture) diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-07.ll b/llvm/test/Transforms/Coroutines/coro-alloca-07.ll index 3b0acdd794af4..8bfb8cfabbd27 100644 --- a/llvm/test/Transforms/Coroutines/coro-alloca-07.ll +++ b/llvm/test/Transforms/Coroutines/coro-alloca-07.ll @@ -13,11 +13,11 @@ entry: br i1 %n, label %flag_true, label %flag_false flag_true: - call void @llvm.lifetime.start.p0(i64 8, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) br label %merge flag_false: - call void @llvm.lifetime.start.p0(i64 8, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) br label %merge merge: @@ -51,7 +51,7 @@ declare i1 @llvm.coro.alloc(token) declare ptr @llvm.coro.begin(token, ptr) declare i1 @llvm.coro.end(ptr, i1, token) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @print(ptr) declare noalias ptr @malloc(i32) diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-08.ll b/llvm/test/Transforms/Coroutines/coro-alloca-08.ll index 5a14a0eb98869..80be62ac64c8c 100644 --- a/llvm/test/Transforms/Coroutines/coro-alloca-08.ll +++ b/llvm/test/Transforms/Coroutines/coro-alloca-08.ll @@ -18,9 +18,9 @@ entry: %alloc = call ptr @malloc(i64 16) #3 %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) - call void @llvm.lifetime.start.p0(i64 100, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) call void @consume.i8.array(ptr %testval) - call void @llvm.lifetime.end.p0(i64 100, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) %save = call token @llvm.coro.save(ptr null) %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) @@ -53,9 +53,9 @@ entry: await.ready: %StrayCoroSave = call token @llvm.coro.save(ptr null) - call void @llvm.lifetime.start.p0(i64 100, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) call void @consume.i8.array(ptr %testval) - call void @llvm.lifetime.end.p0(i64 100, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) br label %exit exit: @@ -76,5 +76,5 @@ declare ptr @llvm.coro.frame() #5 declare i8 @llvm.coro.suspend(token, i1) #3 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-09.ll b/llvm/test/Transforms/Coroutines/coro-alloca-09.ll deleted file mode 100644 index 5c60c5be46206..0000000000000 --- a/llvm/test/Transforms/Coroutines/coro-alloca-09.ll +++ /dev/null @@ -1,57 +0,0 @@ -; RUN: opt < %s -passes='cgscc(coro-split),simplifycfg,early-cse' -S | FileCheck %s - -%"struct.std::coroutine_handle" = type { ptr } -%"struct.std::coroutine_handle.0" = type { %"struct.std::coroutine_handle" } -%"struct.lean_future::Awaiter" = type { i32, %"struct.std::coroutine_handle.0" } - -declare ptr @malloc(i64) - -%i8.array = type { [100 x i8] } -declare void @consume.i8(ptr) - -; The testval lives across suspend point so that it should be put on the frame. -; However, part of testval has lifetime marker which indicates the part -; wouldn't live across suspend point. -; This test whether or not %testval would be put on the frame by ignoring the -; partial lifetime markers. -define void @foo(ptr %to_store) presplitcoroutine { -entry: - %testval = alloca %i8.array - %subrange = getelementptr inbounds %i8.array, ptr %testval, i64 0, i32 0, i64 50 - %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) - %alloc = call ptr @malloc(i64 16) #3 - %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) - - call void @llvm.lifetime.start.p0(i64 50, ptr %subrange) - call void @consume.i8(ptr %subrange) - call void @llvm.lifetime.end.p0(i64 50, ptr %subrange) - store ptr %testval, ptr %to_store - - %save = call token @llvm.coro.save(ptr null) - %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) - switch i8 %suspend, label %exit [ - i8 0, label %await.ready - i8 1, label %exit - ] -await.ready: - %StrayCoroSave = call token @llvm.coro.save(ptr null) - br label %exit -exit: - call i1 @llvm.coro.end(ptr null, i1 false, token none) - ret void -} - -; Verify that for both foo and bar, testval isn't put on the frame. -; CHECK: %foo.Frame = type { ptr, ptr, %i8.array, i1 } - -declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) -declare i1 @llvm.coro.alloc(token) #3 -declare i64 @llvm.coro.size.i64() #5 -declare ptr @llvm.coro.begin(token, ptr writeonly) #3 -declare token @llvm.coro.save(ptr) #3 -declare ptr @llvm.coro.frame() #5 -declare i8 @llvm.coro.suspend(token, i1) #3 -declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 -declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-alloca-loop-carried-address.ll b/llvm/test/Transforms/Coroutines/coro-alloca-loop-carried-address.ll index f828b226698fb..8b8dbacbfc5c7 100644 --- a/llvm/test/Transforms/Coroutines/coro-alloca-loop-carried-address.ll +++ b/llvm/test/Transforms/Coroutines/coro-alloca-loop-carried-address.ll @@ -50,7 +50,7 @@ entry: br label %loop loop: - call void @llvm.lifetime.start(i64 8, ptr %stackvar0) + call void @llvm.lifetime.start(ptr %stackvar0) store i64 1234, ptr %stackvar0 @@ -58,7 +58,7 @@ loop: ; %stackvar1 and rely on it staying the same across suspension. call void @bar() - call void @llvm.lifetime.end(i64 8, ptr %stackvar0) + call void @llvm.lifetime.end(ptr %stackvar0) %save = call token @llvm.coro.save(ptr null) %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) @@ -81,5 +81,5 @@ declare ptr @llvm.coro.begin(token, ptr writeonly) declare token @llvm.coro.save(ptr) declare i8 @llvm.coro.suspend(token, i1) declare i1 @llvm.coro.end(ptr, i1, token) -declare void @llvm.lifetime.start(i64, ptr nocapture) -declare void @llvm.lifetime.end(i64, ptr nocapture) +declare void @llvm.lifetime.start(ptr nocapture) +declare void @llvm.lifetime.end(ptr nocapture) diff --git a/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-infinite-loop-bug.ll b/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-infinite-loop-bug.ll index 07b3bd8fa94ac..d662638d2dd9a 100644 --- a/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-infinite-loop-bug.ll +++ b/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-infinite-loop-bug.ll @@ -49,7 +49,7 @@ entry: %id = call token @llvm.coro.id.async(i32 128, i32 16, i32 0, ptr @my_async_function_fp) %hdl = call ptr @llvm.coro.begin(token %id, ptr null) - call void @llvm.lifetime.start.p0(i64 4, ptr %escaped_addr) + call void @llvm.lifetime.start.p0(ptr %escaped_addr) call void @escape(ptr %escaped_addr) br label %callblock @@ -80,6 +80,6 @@ declare void @llvm.coro.async.context.dealloc(ptr) declare swiftcc void @asyncSuspend(ptr) declare ptr @llvm.coro.async.resume() declare void @llvm.coro.async.size.replace(ptr, ptr) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 +declare void @llvm.lifetime.end.p0(ptr nocapture) #0 attributes #0 = { argmemonly nofree nosync nounwind willreturn } diff --git a/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-start-bug.ll b/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-start-bug.ll index 40101595092b0..49c4207887340 100644 --- a/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-start-bug.ll +++ b/llvm/test/Transforms/Coroutines/coro-async-addr-lifetime-start-bug.ll @@ -43,7 +43,7 @@ entry: %id = call token @llvm.coro.id.async(i32 128, i32 16, i32 0, ptr @my_async_function_fp) %hdl = call ptr @llvm.coro.begin(token %id, ptr null) - call void @llvm.lifetime.start.p0(i64 4, ptr %escaped_addr) + call void @llvm.lifetime.start.p0(ptr %escaped_addr) br label %callblock @@ -81,7 +81,7 @@ loop: br label %callblock loop_exit: - call void @llvm.lifetime.end.p0(i64 4, ptr %escaped_addr) + call void @llvm.lifetime.end.p0(ptr %escaped_addr) call i1 (ptr, i1, ...) @llvm.coro.end.async(ptr %hdl, i1 false) unreachable } @@ -104,6 +104,6 @@ declare void @llvm.coro.async.context.dealloc(ptr) declare swiftcc void @asyncSuspend(ptr) declare ptr @llvm.coro.async.resume() declare void @llvm.coro.async.size.replace(ptr, ptr) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 +declare void @llvm.lifetime.end.p0(ptr nocapture) #0 attributes #0 = { argmemonly nofree nosync nounwind willreturn } diff --git a/llvm/test/Transforms/Coroutines/coro-byval-param.ll b/llvm/test/Transforms/Coroutines/coro-byval-param.ll index 47059182d8ed6..38ab5ac481cd9 100644 --- a/llvm/test/Transforms/Coroutines/coro-byval-param.ll +++ b/llvm/test/Transforms/Coroutines/coro-byval-param.ll @@ -19,7 +19,7 @@ coro.alloc: ; preds = %entry coro.init: ; preds = %coro.alloc, %entry %3 = phi ptr [ null, %entry ], [ %call, %coro.alloc ] %4 = call ptr @llvm.coro.begin(token %0, ptr %3) #10 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %__promise) #2 + call void @llvm.lifetime.start.p0(ptr nonnull %__promise) #2 %call2 = call ptr @_ZN4task12promise_type17get_return_objectEv(ptr nonnull dereferenceable(1) %__promise) call void @initial_suspend(ptr nonnull dereferenceable(1) %__promise) %5 = call token @llvm.coro.save(ptr null) @@ -31,9 +31,9 @@ coro.init: ; preds = %coro.alloc, %entry ] init.ready: ; preds = %coro.init - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %a2) #2 + call void @llvm.lifetime.start.p0(ptr nonnull %a2) #2 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %a2, ptr align 8 %a1, i64 24, i1 false) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %a2) #2 + call void @llvm.lifetime.end.p0(ptr nonnull %a2) #2 call void @_ZN4task12promise_type13final_suspendEv(ptr nonnull dereferenceable(1) %__promise) #2 %7 = call token @llvm.coro.save(ptr null) call fastcc void @_ZNSt12experimental13coroutines_v116coroutine_handleIN4task12promise_typeEE12from_addressEPv(ptr %4) #2 @@ -42,7 +42,7 @@ init.ready: ; preds = %coro.init br i1 %switch, label %cleanup33, label %coro.ret cleanup33: ; preds = %init.ready, %coro.init - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %__promise) #2 + call void @llvm.lifetime.end.p0(ptr nonnull %__promise) #2 %9 = call ptr @llvm.coro.free(token %0, ptr %4) %.not = icmp eq ptr %9, null br i1 %.not, label %coro.ret, label %coro.free @@ -75,7 +75,7 @@ declare i64 @llvm.coro.size.i64() #4 declare ptr @llvm.coro.begin(token, ptr writeonly) #2 ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #5 +declare void @llvm.lifetime.start.p0(ptr nocapture) #5 ; Function Attrs: argmemonly nofree nounwind willreturn declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #6 @@ -93,7 +93,7 @@ declare token @llvm.coro.save(ptr) #2 declare hidden fastcc void @_ZNSt12experimental13coroutines_v116coroutine_handleIN4task12promise_typeEE12from_addressEPv(ptr) unnamed_addr #7 align 2 ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #5 +declare void @llvm.lifetime.end.p0(ptr nocapture) #5 ; Function Attrs: nounwind declare i8 @llvm.coro.suspend(token, i1) #2 diff --git a/llvm/test/Transforms/Coroutines/coro-elide-musttail.ll b/llvm/test/Transforms/Coroutines/coro-elide-musttail.ll index 6c6e5a69af91d..d369a2177b7cb 100644 --- a/llvm/test/Transforms/Coroutines/coro-elide-musttail.ll +++ b/llvm/test/Transforms/Coroutines/coro-elide-musttail.ll @@ -48,7 +48,7 @@ entry: } ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 ; Function Attrs: argmemonly nounwind readonly declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #1 diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-00.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-00.ll index c9700c8a09961..bf08d6ff0b205 100644 --- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-00.ll +++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-00.ll @@ -16,33 +16,33 @@ entry: br i1 %cond, label %then, label %else then: - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %data) + call void @llvm.lifetime.start.p0(ptr nonnull %data) call void @consume(ptr %data) %suspend.value = call i8 @llvm.coro.suspend(token none, i1 false) switch i8 %suspend.value, label %coro.ret [i8 0, label %resume i8 1, label %cleanup1] resume: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %data) + call void @llvm.lifetime.end.p0(ptr nonnull %data) br label %cleanup1 cleanup1: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %data) + call void @llvm.lifetime.end.p0(ptr nonnull %data) br label %cleanup else: - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %data2) + call void @llvm.lifetime.start.p0(ptr nonnull %data2) call void @consume(ptr %data2) %suspend.value2 = call i8 @llvm.coro.suspend(token none, i1 false) switch i8 %suspend.value2, label %coro.ret [i8 0, label %resume2 i8 1, label %cleanup2] resume2: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %data2) + call void @llvm.lifetime.end.p0(ptr nonnull %data2) br label %cleanup2 cleanup2: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %data2) + call void @llvm.lifetime.end.p0(ptr nonnull %data2) br label %cleanup cleanup: @@ -72,5 +72,5 @@ declare noalias ptr @malloc(i32) declare double @print(double) declare void @free(ptr) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-01.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-01.ll index 584caa356e9b8..78c6f0cacd695 100644 --- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-01.ll +++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-01.ll @@ -17,10 +17,10 @@ entry: br label %init.ready init.ready: %1 = call noalias nonnull ptr @llvm.coro.begin(token %0, ptr null) - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %__promise) + call void @llvm.lifetime.start.p0(ptr nonnull %__promise) br i1 %cond, label %if.then, label %if.else if.then: - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) call void @consume(ptr nonnull %a) %save = call token @llvm.coro.save(ptr null) %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) @@ -29,10 +29,10 @@ if.then: i8 1, label %cleanup1 ] await.ready: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) br label %cleanup1 if.else: - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %b) + call void @llvm.lifetime.start.p0(ptr nonnull %b) call void @consume(ptr nonnull %b) %save2 = call token @llvm.coro.save(ptr null) %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) @@ -41,13 +41,13 @@ if.else: i8 1, label %cleanup2 ] await2.ready: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) br label %cleanup2 cleanup1: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) br label %cleanup cleanup2: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) br label %cleanup cleanup: call ptr @llvm.coro.free(token %0, ptr %1) @@ -69,5 +69,5 @@ declare ptr @llvm.coro.frame() #5 declare i8 @llvm.coro.suspend(token, i1) #3 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-02.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-02.ll index f916ebb915982..82657318d7785 100644 --- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-02.ll +++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-02.ll @@ -19,10 +19,10 @@ entry: br label %init.ready init.ready: %1 = call noalias nonnull ptr @llvm.coro.begin(token %0, ptr null) - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %__promise) + call void @llvm.lifetime.start.p0(ptr nonnull %__promise) br i1 %cond, label %if.then, label %if.else if.then: - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) call void @consume(ptr nonnull %a) %save = call token @llvm.coro.save(ptr null) %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) @@ -31,10 +31,10 @@ if.then: i8 1, label %cleanup1 ] await.ready: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) br label %cleanup1 if.else: - call void @llvm.lifetime.start.p0(i64 300, ptr nonnull %b) + call void @llvm.lifetime.start.p0(ptr nonnull %b) call void @consume.2(ptr nonnull %b) %save2 = call token @llvm.coro.save(ptr null) %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) @@ -43,13 +43,13 @@ if.else: i8 1, label %cleanup2 ] await2.ready: - call void @llvm.lifetime.end.p0(i64 300, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) br label %cleanup2 cleanup1: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) br label %cleanup cleanup2: - call void @llvm.lifetime.end.p0(i64 300, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) br label %cleanup cleanup: call ptr @llvm.coro.free(token %0, ptr %1) @@ -70,5 +70,5 @@ declare ptr @llvm.coro.frame() #5 declare i8 @llvm.coro.suspend(token, i1) #3 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-03.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-03.ll index 525df873a0f0c..66d41372cd9e7 100644 --- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-03.ll +++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-03.ll @@ -16,33 +16,33 @@ entry: br i1 %cond, label %then, label %else then: - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %data) + call void @llvm.lifetime.start.p0(ptr nonnull %data) call void @consume(ptr %data) %suspend.value = call i8 @llvm.coro.suspend(token none, i1 false) switch i8 %suspend.value, label %coro.ret [i8 0, label %resume i8 1, label %cleanup1] resume: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %data) + call void @llvm.lifetime.end.p0(ptr nonnull %data) br label %cleanup1 cleanup1: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %data) + call void @llvm.lifetime.end.p0(ptr nonnull %data) br label %cleanup else: - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %data2) + call void @llvm.lifetime.start.p0(ptr nonnull %data2) call void @consume(ptr %data2) %suspend.value2 = call i8 @llvm.coro.suspend(token none, i1 false) switch i8 %suspend.value2, label %coro.ret [i8 0, label %resume2 i8 1, label %cleanup2] resume2: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %data2) + call void @llvm.lifetime.end.p0(ptr nonnull %data2) br label %cleanup2 cleanup2: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %data2) + call void @llvm.lifetime.end.p0(ptr nonnull %data2) br label %cleanup cleanup: @@ -72,5 +72,5 @@ declare noalias ptr @malloc(i32) declare double @print(double) declare void @free(ptr) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-04.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-04.ll index 27e0c47cb9042..6ff31e566283b 100644 --- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-04.ll +++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-04.ll @@ -19,10 +19,10 @@ entry: br label %init.ready init.ready: %1 = call noalias nonnull ptr @llvm.coro.begin(token %0, ptr null) - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %__promise) + call void @llvm.lifetime.start.p0(ptr nonnull %__promise) br i1 %cond, label %if.then, label %if.else if.then: - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) call void @consume(ptr nonnull %a) %save = call token @llvm.coro.save(ptr null) %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) @@ -31,10 +31,10 @@ if.then: i8 1, label %cleanup1 ] await.ready: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) br label %cleanup1 if.else: - call void @llvm.lifetime.start.p0(i64 300, ptr nonnull %b) + call void @llvm.lifetime.start.p0(ptr nonnull %b) call void @consume.2(ptr nonnull %b) %save2 = call token @llvm.coro.save(ptr null) %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) @@ -43,13 +43,13 @@ if.else: i8 1, label %cleanup2 ] await2.ready: - call void @llvm.lifetime.end.p0(i64 300, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) br label %cleanup2 cleanup1: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) br label %cleanup cleanup2: - call void @llvm.lifetime.end.p0(i64 300, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) br label %cleanup cleanup: call ptr @llvm.coro.free(token %0, ptr %1) @@ -70,5 +70,5 @@ declare ptr @llvm.coro.frame() #5 declare i8 @llvm.coro.suspend(token, i1) #3 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-05.ll b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-05.ll index 6d93eeaa3211e..c3da8e872dc07 100644 --- a/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-05.ll +++ b/llvm/test/Transforms/Coroutines/coro-frame-reuse-alloca-05.ll @@ -19,10 +19,10 @@ entry: br label %init.ready init.ready: %1 = call noalias nonnull ptr @llvm.coro.begin(token %0, ptr null) - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %__promise) + call void @llvm.lifetime.start.p0(ptr nonnull %__promise) br i1 %cond, label %if.then, label %if.else if.then: - call void @llvm.lifetime.start.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) call void @consume(ptr nonnull %a) %save = call token @llvm.coro.save(ptr null) %suspend = call i8 @llvm.coro.suspend(token %save, i1 false) @@ -31,10 +31,10 @@ if.then: i8 1, label %cleanup1 ] await.ready: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) br label %cleanup1 if.else: - call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %b) + call void @llvm.lifetime.start.p0(ptr nonnull %b) call void @consume.2(ptr nonnull %b) %save2 = call token @llvm.coro.save(ptr null) %suspend2 = call i8 @llvm.coro.suspend(token %save2, i1 false) @@ -43,13 +43,13 @@ if.else: i8 1, label %cleanup2 ] await2.ready: - call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) br label %cleanup2 cleanup1: - call void @llvm.lifetime.end.p0(i64 500, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) br label %cleanup cleanup2: - call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) br label %cleanup cleanup: call ptr @llvm.coro.free(token %0, ptr %1) @@ -70,5 +70,5 @@ declare ptr @llvm.coro.frame() #5 declare i8 @llvm.coro.suspend(token, i1) #3 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-lifetime-end.ll b/llvm/test/Transforms/Coroutines/coro-lifetime-end.ll index 8d0e7729d4a4f..df2ed7e4bcead 100644 --- a/llvm/test/Transforms/Coroutines/coro-lifetime-end.ll +++ b/llvm/test/Transforms/Coroutines/coro-lifetime-end.ll @@ -31,7 +31,7 @@ entry: %alloc = call ptr @malloc(i64 16) #3 %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) - call void @llvm.lifetime.start.p0(i64 100, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) call void @consume.i8.array(ptr %testval) %save = call token @llvm.coro.save(ptr null) @@ -68,7 +68,7 @@ entry: %alloc = call ptr @malloc(i64 16) #3 %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) - call void @llvm.lifetime.start.p0(i64 100, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) call void @consume.i8.array(ptr %testval) %save = call token @llvm.coro.save(ptr null) @@ -81,7 +81,7 @@ await.ready: br label %exit exit: call i1 @llvm.coro.end(ptr null, i1 false, token none) - call void @llvm.lifetime.end.p0(i64 100, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) ret void } @@ -107,7 +107,7 @@ entry: %alloc = call ptr @malloc(i64 16) #3 %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) - call void @llvm.lifetime.start.p0(i64 100, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) call void @consume.i8.array(ptr %testval) %0 = load i8, ptr @testbool, align 1 @@ -115,7 +115,7 @@ entry: br i1 %tobool, label %if.then, label %if.end if.then: - call void @llvm.lifetime.end.p0(i64 100, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) br label %if.end if.end: @@ -138,5 +138,5 @@ declare ptr @llvm.coro.begin(token, ptr writeonly) #3 declare ptr @llvm.coro.frame() #5 declare i8 @llvm.coro.suspend(token, i1) #3 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-only-destroy-when-complete.ll b/llvm/test/Transforms/Coroutines/coro-only-destroy-when-complete.ll index 3f0899a02178e..c3d0fb1a18dd2 100644 --- a/llvm/test/Transforms/Coroutines/coro-only-destroy-when-complete.ll +++ b/llvm/test/Transforms/Coroutines/coro-only-destroy-when-complete.ll @@ -19,7 +19,7 @@ coro.alloc: ; preds = %entry init.suspend: ; preds = %entry, %coro.alloc %3 = phi ptr [ null, %entry ], [ %call, %coro.alloc ] %4 = call ptr @llvm.coro.begin(token %0, ptr %3) #12 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %__promise) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %__promise) #3 store ptr null, ptr %__promise, align 8 %5 = call token @llvm.coro.save(ptr null) %6 = call i8 @llvm.coro.suspend(token %5, i1 false) @@ -80,7 +80,7 @@ cleanup3: br label %cleanup62 cleanup62: ; preds = %await2.suspend, %await.suspend, %init.suspend, %final.suspend - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %__promise) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %__promise) #3 %18 = call ptr @llvm.coro.free(token %0, ptr %4) %.not = icmp eq ptr %18, null br i1 %.not, label %coro.ret, label %coro.free @@ -99,9 +99,9 @@ declare i1 @llvm.coro.alloc(token) #3 declare dso_local noundef nonnull ptr @_Znwm(i64 noundef) local_unnamed_addr #4 declare i64 @llvm.coro.size.i64() #5 declare ptr @llvm.coro.begin(token, ptr writeonly) #3 -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #6 +declare void @llvm.lifetime.start.p0(ptr nocapture) #6 declare token @llvm.coro.save(ptr) #7 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #6 +declare void @llvm.lifetime.end.p0(ptr nocapture) #6 declare i8 @llvm.coro.suspend(token, i1) #3 declare ptr @_Z5Innerv() local_unnamed_addr declare dso_local void @_ZdlPv(ptr noundef) local_unnamed_addr #8 diff --git a/llvm/test/Transforms/Coroutines/coro-retcon-unreachable.ll b/llvm/test/Transforms/Coroutines/coro-retcon-unreachable.ll index 8ed03849fb63b..31839aa2a2b5f 100644 --- a/llvm/test/Transforms/Coroutines/coro-retcon-unreachable.ll +++ b/llvm/test/Transforms/Coroutines/coro-retcon-unreachable.ll @@ -37,9 +37,9 @@ declare token @llvm.coro.id.retcon.once(i32, i32, ptr, ptr, ptr, ptr) #5 declare ptr @llvm.coro.begin(token, ptr writeonly) #5 declare token @llvm.coro.alloca.alloc.i64(i64, i32) #5 declare ptr @llvm.coro.alloca.get(token) #5 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #6 +declare void @llvm.lifetime.start.p0(ptr nocapture) #6 declare i1 @llvm.coro.suspend.retcon.i1(...) #5 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #6 +declare void @llvm.lifetime.end.p0(ptr nocapture) #6 declare void @llvm.coro.alloca.free(token) #5 declare i1 @llvm.coro.end(ptr, i1, token) #5 diff --git a/llvm/test/Transforms/Coroutines/coro-split-02.ll b/llvm/test/Transforms/Coroutines/coro-split-02.ll index 31e8e8155035c..c487ab1e42ff6 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-02.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-02.ll @@ -27,10 +27,10 @@ entry: await.ready: %StrayCoroSave = call token @llvm.coro.save(ptr null) %val = load i32, ptr %ref.tmp7 - call void @llvm.lifetime.start.p0(i64 4, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) %test = load i32, ptr %testval call void @print(i32 %test) - call void @llvm.lifetime.end.p0(i64 4, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) call void @print(i32 %val) br label %exit exit: @@ -42,10 +42,10 @@ exit: ; CHECK: %testval = alloca i32 ; CHECK-NOT: call token @llvm.coro.save(ptr null) ; CHECK: %val = load i32, ptr %ref.tmp7 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %testval) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %testval) ; CHECK-NEXT: %test = load i32, ptr %testval ; CHECK-NEXT: call void @print(i32 %test) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %testval) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %testval) ; CHECK-NEXT: call void @print(i32 %val) ; CHECK-NEXT: ret void @@ -61,5 +61,5 @@ declare i8 @llvm.coro.suspend(token, i1) #3 declare void @"\01??3@YAXPEAX@Z"(ptr) local_unnamed_addr #10 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-split-dbg.ll b/llvm/test/Transforms/Coroutines/coro-split-dbg.ll index 184d4a564ab72..9a9e3c3f2bf0e 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-dbg.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-dbg.ll @@ -43,7 +43,7 @@ coro_Suspend: ; preds = %for.cond, %if.then, } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 ; Function Attrs: argmemonly nounwind readonly declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) #5 @@ -54,7 +54,7 @@ declare i64 @llvm.coro.size.i64() #1 declare ptr @llvm.coro.begin(token, ptr writeonly) #7 declare token @llvm.coro.save(ptr) #7 declare i8 @llvm.coro.suspend(token, i1) #7 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #5 declare void @free(ptr nocapture) local_unnamed_addr #6 declare i1 @llvm.coro.end(ptr, i1, token) #7 diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail-chain-pgo-counter-promo.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail-chain-pgo-counter-promo.ll index e2ed205f2c2f4..e661932bf020e 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-musttail-chain-pgo-counter-promo.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-musttail-chain-pgo-counter-promo.ll @@ -33,8 +33,8 @@ declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) declare i8 @llvm.coro.suspend(token, i1) declare void @llvm.instrprof.increment(ptr, i64, i32, i32) declare void @llvm.instrprof.value.profile(ptr, i64, i64, i32, i32) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; Function Attrs: noinline nounwind presplitcoroutine uwtable define ptr @f(i32 %0) presplitcoroutine align 32 { @@ -56,11 +56,11 @@ define ptr @f(i32 %0) presplitcoroutine align 32 { 12: ; preds = %8, %1 %13 = phi ptr [ null, %1 ], [ %11, %8 ] %14 = call ptr @llvm.coro.begin(token %6, ptr %13) #28 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) #9 + call void @llvm.lifetime.start.p0(ptr nonnull %3) #9 store ptr null, ptr %3, align 16 %15 = getelementptr inbounds {ptr, i64}, ptr %3, i64 0, i32 1 store i64 0, ptr %15, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %4) #9 + call void @llvm.lifetime.start.p0(ptr nonnull %4) #9 store ptr %3, ptr %4, align 8 %16 = call token @llvm.coro.save(ptr null) call void @await_suspend(ptr noundef nonnull align 1 dereferenceable(1) %4, ptr %14) #9 @@ -71,7 +71,7 @@ define ptr @f(i32 %0) presplitcoroutine align 32 { ] 18: ; preds = %12 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9 + call void @llvm.lifetime.end.p0(ptr nonnull %4) #9 %19 = icmp slt i32 0, %0 br i1 %19, label %20, label %36 @@ -79,12 +79,12 @@ define ptr @f(i32 %0) presplitcoroutine align 32 { br label %22 21: ; preds = %12 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %4) #9 + call void @llvm.lifetime.end.p0(ptr nonnull %4) #9 br label %54 22: ; preds = %20, %31 %23 = phi i32 [ 0, %20 ], [ %32, %31 ] - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %5) #9 + call void @llvm.lifetime.start.p0(ptr nonnull %5) #9 %24 = call ptr @other_coro() store ptr %3, ptr %5, align 8 %25 = getelementptr inbounds { ptr, ptr }, ptr %5, i64 0, i32 1 @@ -98,13 +98,13 @@ define ptr @f(i32 %0) presplitcoroutine align 32 { ] 31: ; preds = %22 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #9 + call void @llvm.lifetime.end.p0(ptr nonnull %5) #9 %32 = add nuw nsw i32 %23, 1 %33 = icmp slt i32 %32, %0 br i1 %33, label %22, label %35, !llvm.loop !0 34: ; preds = %22 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %5) #9 + call void @llvm.lifetime.end.p0(ptr nonnull %5) #9 br label %54 35: ; preds = %31 @@ -142,11 +142,11 @@ define ptr @f(i32 %0) presplitcoroutine align 32 { br label %54 53: ; preds = %47 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %2) #9 + call void @llvm.lifetime.start.p0(ptr nonnull %2) #9 unreachable 54: ; preds = %52, %34, %21 - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) #9 + call void @llvm.lifetime.end.p0(ptr nonnull %3) #9 %55 = call ptr @llvm.coro.free(token %6, ptr %14) %56 = icmp eq ptr %55, null br i1 %56, label %61, label %57 diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail5.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail5.ll index 7c1a13fd83cec..b2561751e6377 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-musttail5.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-musttail5.ll @@ -9,7 +9,7 @@ entry: %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) %alloc = call ptr @malloc(i64 16) #3 %alloc.var = alloca i8 - call void @llvm.lifetime.start.p0(i64 1, ptr %alloc.var) + call void @llvm.lifetime.start.p0(ptr %alloc.var) %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) %save = call token @llvm.coro.save(ptr null) @@ -29,7 +29,7 @@ await.suspend: ] await.ready: call void @consume(ptr %alloc.var) - call void @llvm.lifetime.end.p0(i64 1, ptr %alloc.var) + call void @llvm.lifetime.end.p0(ptr %alloc.var) br label %exit exit: call i1 @llvm.coro.end(ptr null, i1 false, token none) @@ -53,8 +53,8 @@ declare i1 @llvm.coro.end(ptr, i1, token) #2 declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1 declare ptr @malloc(i64) declare void @consume(ptr) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare ptr @await_suspend_function(ptr %awaiter, ptr %hdl) attributes #0 = { presplitcoroutine } diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail6.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail6.ll index e05169a729168..99174ff283120 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-musttail6.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-musttail6.ll @@ -13,7 +13,7 @@ entry: %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) %alloc = call ptr @malloc(i64 16) #3 %alloc.var = alloca i64 - call void @llvm.lifetime.start.p0(i64 1, ptr %alloc.var) + call void @llvm.lifetime.start.p0(ptr %alloc.var) %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) %save = call token @llvm.coro.save(ptr null) @@ -33,7 +33,7 @@ await.suspend: ] await.ready: call void @consume(ptr %alloc.var) - call void @llvm.lifetime.end.p0(i64 1, ptr %alloc.var) + call void @llvm.lifetime.end.p0(ptr %alloc.var) br label %exit exit: call i1 @llvm.coro.end(ptr null, i1 false, token none) @@ -51,7 +51,7 @@ entry: %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) %alloc = call ptr @malloc(i64 16) #3 %alloc.var = alloca i64 - call void @llvm.lifetime.start.p0(i64 1, ptr %alloc.var) + call void @llvm.lifetime.start.p0(ptr %alloc.var) %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) %save = call token @llvm.coro.save(ptr null) @@ -71,7 +71,7 @@ await.suspend: ] await.ready: call void @consume(ptr %alloc.var) - call void @llvm.lifetime.end.p0(i64 1, ptr %alloc.var) + call void @llvm.lifetime.end.p0(ptr %alloc.var) br label %exit cleanup: @@ -106,8 +106,8 @@ declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1 declare ptr @malloc(i64) declare void @delete(ptr nonnull) #2 declare void @consume(ptr) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare ptr @await_suspend_function(ptr %awaiter, ptr %hdl) attributes #0 = { presplitcoroutine } diff --git a/llvm/test/Transforms/Coroutines/coro-split-musttail7.ll b/llvm/test/Transforms/Coroutines/coro-split-musttail7.ll index 8ceb0dda94f6a..91f8543dffe93 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-musttail7.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-musttail7.ll @@ -11,7 +11,7 @@ entry: %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) %alloc = call ptr @malloc(i64 16) #3 %alloc.var = alloca i64 - call void @llvm.lifetime.start.p0(i64 1, ptr %alloc.var) + call void @llvm.lifetime.start.p0(ptr %alloc.var) %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) %save = call token @llvm.coro.save(ptr null) @@ -36,7 +36,7 @@ await.suspend: ] await.ready: call void @consume(ptr %alloc.var) - call void @llvm.lifetime.end.p0(i64 1, ptr %alloc.var) + call void @llvm.lifetime.end.p0(ptr %alloc.var) br label %exit exit: %result = phi i64 [0, %entry], [0, %entry], [%foo, %await.suspend], [%foo, %await.suspend], [%foo, %await.ready] @@ -57,7 +57,7 @@ entry: %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) %alloc = call ptr @malloc(i64 16) #3 %alloc.var = alloca i64 - call void @llvm.lifetime.start.p0(i64 1, ptr %alloc.var) + call void @llvm.lifetime.start.p0(ptr %alloc.var) %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) %save = call token @llvm.coro.save(ptr null) @@ -77,7 +77,7 @@ await.suspend: ] await.ready: call void @consume(ptr %alloc.var) - call void @llvm.lifetime.end.p0(i64 1, ptr %alloc.var) + call void @llvm.lifetime.end.p0(ptr %alloc.var) br label %exit cleanup: @@ -114,8 +114,8 @@ declare ptr @llvm.coro.subfn.addr(ptr nocapture readonly, i8) #1 declare ptr @malloc(i64) declare void @delete(ptr nonnull) #2 declare void @consume(ptr) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare ptr @await_suspend_function(ptr %awaiter, ptr %hdl) attributes #0 = { presplitcoroutine } diff --git a/llvm/test/Transforms/Coroutines/coro-split-no-lifetime.ll b/llvm/test/Transforms/Coroutines/coro-split-no-lifetime.ll index 157807dc05363..12d65647c8b01 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-no-lifetime.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-no-lifetime.ll @@ -12,11 +12,11 @@ entry: br i1 %n, label %flag_true, label %flag_false flag_true: - call void @llvm.lifetime.start.p0(i64 8, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) br label %merge flag_false: - call void @llvm.lifetime.start.p0(i64 8, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) br label %merge merge: @@ -27,8 +27,8 @@ merge: i8 1, label %cleanup] resume: call void @print(ptr %phi) - call void @llvm.lifetime.end.p0(i64 8, ptr %x) - call void @llvm.lifetime.end.p0(i64 8, ptr %y) + call void @llvm.lifetime.end.p0(ptr %x) + call void @llvm.lifetime.end.p0(ptr %y) br label %cleanup cleanup: @@ -54,8 +54,8 @@ declare i1 @llvm.coro.alloc(token) declare ptr @llvm.coro.begin(token, ptr) declare i1 @llvm.coro.end(ptr, i1, token) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @print(ptr) declare noalias ptr @malloc(i32) diff --git a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll index 1d0cf94c1a979..a5a2bcf2ecb81 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-01.ll @@ -17,7 +17,7 @@ entry: %ref.tmp7 = alloca %"struct.lean_future::Awaiter", align 8 %testval = alloca i32 ; lifetime of %testval starts here, but not used until await.ready. - call void @llvm.lifetime.start.p0(i64 4, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) %alloc = call ptr @malloc(i64 16) #3 %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) @@ -33,7 +33,7 @@ await.ready: %val = load i32, ptr %ref.tmp7 %test = load i32, ptr %testval call void @print(i32 %test) - call void @llvm.lifetime.end.p0(i64 4, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) call void @print(i32 %val) br label %exit exit: @@ -43,11 +43,11 @@ exit: ; CHECK-LABEL: @a.resume( ; CHECK: %testval = alloca i32, align 4 -; CHECK: call void @llvm.lifetime.start.p0(i64 4, ptr %testval) +; CHECK: call void @llvm.lifetime.start.p0(ptr %testval) ; CHECK-NEXT: %val = load i32, ptr %ref.tmp7 ; CHECK-NEXT: %test = load i32, ptr %testval ; CHECK-NEXT: call void @print(i32 %test) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %testval) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %testval) ; CHECK-NEXT: call void @print(i32 %val) ; CHECK-NEXT: ret void @@ -56,7 +56,7 @@ entry: %ref.tmp7 = alloca %"struct.lean_future::Awaiter", align 8 %testval = alloca i32 ; lifetime of %testval starts here, but not used until await.ready. - call void @llvm.lifetime.start.p0(i64 4, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) %alloc = call ptr @malloc(i64 16) #3 %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) @@ -72,7 +72,7 @@ await.ready: %val = load i32, ptr %ref.tmp7 %test = load i32, ptr %testval call void @print(i32 %test) - call void @llvm.lifetime.end.p0(i64 4, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) call void @print(i32 %val) br label %exit exit: @@ -92,5 +92,5 @@ declare i8 @llvm.coro.suspend(token, i1) #3 declare void @"\01??3@YAXPEAX@Z"(ptr) local_unnamed_addr #10 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-02.ll b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-02.ll index 38a2a33efe051..abc91c3b11c6b 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-02.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-02.ll @@ -15,7 +15,7 @@ entry: %ref.tmp7 = alloca %"struct.lean_future::Awaiter", align 8 %testval = alloca i32 ; lifetime of %testval starts here, but not used until await.ready. - call void @llvm.lifetime.start.p0(i64 4, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) %alloc = call ptr @malloc(i64 16) #3 %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) @@ -44,7 +44,7 @@ await.ready: after.await: %test1 = load i32, ptr %testval call void @print(i32 %test1) - call void @llvm.lifetime.end.p0(i64 4, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) br label %exit exit: @@ -54,7 +54,7 @@ exit: ; CHECK-LABEL: @a.resume( ; CHECK: %[[VAL:testval.+]] = getelementptr inbounds %a.Frame -; CHECK-NOT: call void @llvm.lifetime.start.p0(i64 4, ptr %{{.*}}) +; CHECK-NOT: call void @llvm.lifetime.start.p0(ptr %{{.*}}) ; CHECK: %test = load i32, ptr %[[VAL]] declare token @llvm.coro.id(i32, ptr readnone, ptr nocapture readonly, ptr) @@ -69,5 +69,5 @@ declare i8 @llvm.coro.suspend(token, i1) #3 declare void @"\01??3@YAXPEAX@Z"(ptr) local_unnamed_addr #10 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-03.ll b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-03.ll index de377a6a38b94..efd1adfc54b53 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-03.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-03.ll @@ -17,7 +17,7 @@ entry: %ref.tmp7 = alloca %"struct.lean_future::Awaiter", align 8 %testval = alloca %i8.array ; lifetime of %testval starts here, but not used until await.ready. - call void @llvm.lifetime.start.p0(i64 100, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) %alloc = call ptr @malloc(i64 16) #3 %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) @@ -32,7 +32,7 @@ await.ready: %StrayCoroSave = call token @llvm.coro.save(ptr null) %val = load i32, ptr %ref.tmp7 call void @consume.i8.array(ptr %testval) - call void @llvm.lifetime.end.p0(i64 100, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) call void @print(i32 %val) br label %exit exit: @@ -41,10 +41,10 @@ exit: } ; CHECK-LABEL: @a.gep.resume( ; CHECK: %testval = alloca %i8.array -; CHECK: call void @llvm.lifetime.start.p0(i64 100, ptr %testval) +; CHECK: call void @llvm.lifetime.start.p0(ptr %testval) ; CHECK-NEXT: %val = load i32, ptr %ref.tmp7 ; CHECK-NEXT: call void @consume.i8.array(ptr %testval) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 100, ptr %testval) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %testval) ; CHECK-NEXT: call void @print(i32 %val) ; CHECK-NEXT: ret void @@ -60,5 +60,5 @@ declare i8 @llvm.coro.suspend(token, i1) #3 declare void @"\01??3@YAXPEAX@Z"(ptr) local_unnamed_addr #10 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-04.ll b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-04.ll index 821045583092d..af5aa8ade0b65 100644 --- a/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-04.ll +++ b/llvm/test/Transforms/Coroutines/coro-split-sink-lifetime-04.ll @@ -15,7 +15,7 @@ entry: %ref.tmp7 = alloca %"struct.lean_future::Awaiter", align 8 %testval = alloca i8 ; lifetime of %testval starts here, but not used until await.ready. - call void @llvm.lifetime.start.p0(i64 1, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) %id = call token @llvm.coro.id(i32 0, ptr null, ptr null, ptr null) %alloc = call ptr @malloc(i64 16) #3 %vFrame = call noalias nonnull ptr @llvm.coro.begin(token %id, ptr %alloc) @@ -31,7 +31,7 @@ await.ready: %val = load i32, ptr %ref.tmp7 %test = load i8, ptr %testval call void @consume.i8(i8 %test) - call void @llvm.lifetime.end.p0(i64 1, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) call void @print(i32 %val) br label %exit exit: @@ -41,11 +41,11 @@ exit: ; CHECK-LABEL: @a.resume( ; CHECK: %testval = alloca i8, align 1 -; CHECK: call void @llvm.lifetime.start.p0(i64 1, ptr %testval) +; CHECK: call void @llvm.lifetime.start.p0(ptr %testval) ; CHECK-NEXT: %val = load i32, ptr %ref.tmp7 ; CHECK-NEXT: %test = load i8, ptr %testval ; CHECK-NEXT: call void @consume.i8(i8 %test) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr %testval) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %testval) ; CHECK-NEXT: call void @print(i32 %val) ; CHECK-NEXT: ret void @@ -62,5 +62,5 @@ declare i8 @llvm.coro.suspend(token, i1) #3 declare void @"\01??3@YAXPEAX@Z"(ptr) local_unnamed_addr #10 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1, token) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Coroutines/coro-transform-must-elide.ll b/llvm/test/Transforms/Coroutines/coro-transform-must-elide.ll index d2c4f57478b52..4eec7edad8b0f 100644 --- a/llvm/test/Transforms/Coroutines/coro-transform-must-elide.ll +++ b/llvm/test/Transforms/Coroutines/coro-transform-must-elide.ll @@ -61,11 +61,11 @@ entry: ret ptr %task ; CHECK: %[[TASK:.+]] = alloca %struct.Task, align 8 ; CHECK-NEXT: %[[FRAME:.+]] = alloca [32 x i8], align 8 - ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr %[[TASK]]) + ; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %[[TASK]]) ; CHECK-NEXT: %[[ID:.+]] = call token @llvm.coro.id(i32 0, ptr null, ptr @callee, ptr @callee.resumers) ; CHECK-NEXT: %[[HDL:.+]] = call ptr @llvm.coro.begin(token %[[ID]], ptr null) ; CHECK-NEXT: store ptr %[[HDL]], ptr %[[TASK]], align 8 - ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr %[[TASK]]) + ; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %[[TASK]]) ; CHECK-NEXT: ret ptr %[[TASK]] } diff --git a/llvm/test/Transforms/CorrelatedValuePropagation/alloca.ll b/llvm/test/Transforms/CorrelatedValuePropagation/alloca.ll index 9e47bd283e3b5..390e96ecbb9f2 100644 --- a/llvm/test/Transforms/CorrelatedValuePropagation/alloca.ll +++ b/llvm/test/Transforms/CorrelatedValuePropagation/alloca.ll @@ -12,14 +12,14 @@ target triple = "x86_64-unknown-linux-gnu" @.str = private unnamed_addr constant [8 x i8] c"a = %l\0A\00", align 1 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @hoo(ptr) declare i32 @printf(ptr nocapture readonly, ...) ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define void @goo(i32 %N, ptr %b) { entry: @@ -32,12 +32,12 @@ for.cond: ; preds = %for.body, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - call void @llvm.lifetime.start.p0(i64 8, ptr %a.i) + call void @llvm.lifetime.start.p0(ptr %a.i) call void @hoo(ptr %a.i) call void @hoo(ptr %b) %tmp1 = load volatile i64, ptr %a.i, align 8 %call.i = call i32 (ptr, ...) @printf(ptr @.str, i64 %tmp1) - call void @llvm.lifetime.end.p0(i64 8, ptr %a.i) + call void @llvm.lifetime.end.p0(ptr %a.i) %inc = add nsw i32 %i.0, 1 br label %for.cond diff --git a/llvm/test/Transforms/DCE/basic.ll b/llvm/test/Transforms/DCE/basic.ll index 1a3b12e8cfc92..28772f0bac37b 100644 --- a/llvm/test/Transforms/DCE/basic.ll +++ b/llvm/test/Transforms/DCE/basic.ll @@ -10,8 +10,8 @@ define void @test() { ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind ; CHECK-LABEL: @test_lifetime_alloca define i32 @test_lifetime_alloca() { @@ -21,8 +21,8 @@ define i32 @test_lifetime_alloca() { ; CHECK-NOT: llvm.lifetime.start ; CHECK-NOT: llvm.lifetime.end %i = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %i) - call void @llvm.lifetime.end.p0(i64 -1, ptr %i) + call void @llvm.lifetime.start.p0(ptr %i) + call void @llvm.lifetime.end.p0(ptr %i) ret i32 0 } diff --git a/llvm/test/Transforms/DeadStoreElimination/batchaa-caching-new-pointers.ll b/llvm/test/Transforms/DeadStoreElimination/batchaa-caching-new-pointers.ll index ee9bd6912e2ae..4ec69bcfc9be6 100644 --- a/llvm/test/Transforms/DeadStoreElimination/batchaa-caching-new-pointers.ll +++ b/llvm/test/Transforms/DeadStoreElimination/batchaa-caching-new-pointers.ll @@ -12,17 +12,17 @@ define ptr @foo(ptr noundef %ptr) { ; CHECK-LABEL: define ptr @foo( ; CHECK-SAME: ptr noundef [[PTR:%.*]]) { ; CHECK-NEXT: [[STRUCT_ALLOCA:%.*]] = alloca [[STRUCT_TYPE:%.*]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 56, ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6:[0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6:[0-9]+]] ; CHECK-NEXT: [[STRUCT_BYTE_8:%.*]] = getelementptr inbounds i8, ptr [[STRUCT_ALLOCA]], i64 8 ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds i8, ptr [[STRUCT_BYTE_8]], i64 4 ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 [[TMP1]], i8 42, i64 4, i1 false) ; CHECK-NEXT: store i32 43, ptr [[STRUCT_BYTE_8]], align 4 ; CHECK-NEXT: [[RET:%.*]] = load ptr, ptr [[STRUCT_BYTE_8]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 56, ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] ; CHECK-NEXT: ret ptr [[RET]] ; %struct.alloca = alloca %struct.type, align 8 - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %struct.alloca) nounwind + call void @llvm.lifetime.start.p0(ptr nonnull %struct.alloca) nounwind %struct.byte.8 = getelementptr inbounds i8, ptr %struct.alloca, i64 8 ; Set %struct.alloca[8, 16) to 42. call void @llvm.memset.p0.i64(ptr noundef nonnull align 4 %struct.byte.8, i8 42, i64 8, i1 false) @@ -33,7 +33,7 @@ define ptr @foo(ptr noundef %ptr) { store i32 44, ptr %struct.byte.4, align 4 ; Return %struct.alloca[8, 16). %ret = load ptr, ptr %struct.byte.8 - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %struct.alloca) nounwind + call void @llvm.lifetime.end.p0(ptr nonnull %struct.alloca) nounwind ret ptr %ret } @@ -44,7 +44,7 @@ define ptr @foo(ptr noundef %ptr) { define ptr @foo_with_removable_malloc() { ; CHECK-LABEL: define ptr @foo_with_removable_malloc() { ; CHECK-NEXT: [[STRUCT_ALLOCA:%.*]] = alloca [[STRUCT_TYPE:%.*]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 56, ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] ; CHECK-NEXT: [[STRUCT_BYTE_4:%.*]] = getelementptr inbounds i8, ptr [[STRUCT_ALLOCA]], i64 4 ; CHECK-NEXT: [[STRUCT_BYTE_8:%.*]] = getelementptr inbounds i8, ptr [[STRUCT_ALLOCA]], i64 8 ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr inbounds i8, ptr [[STRUCT_BYTE_8]], i64 4 @@ -53,11 +53,11 @@ define ptr @foo_with_removable_malloc() { ; CHECK-NEXT: [[RET:%.*]] = load ptr, ptr [[STRUCT_BYTE_8]], align 8 ; CHECK-NEXT: call void @readnone(ptr [[STRUCT_BYTE_4]]) ; CHECK-NEXT: call void @readnone(ptr [[STRUCT_BYTE_8]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 56, ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] ; CHECK-NEXT: ret ptr [[RET]] ; %struct.alloca = alloca %struct.type, align 8 - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %struct.alloca) nounwind + call void @llvm.lifetime.start.p0(ptr nonnull %struct.alloca) nounwind %struct.byte.4 = getelementptr inbounds i8, ptr %struct.alloca, i64 4 %struct.byte.8 = getelementptr inbounds i8, ptr %struct.alloca, i64 8 @@ -79,7 +79,7 @@ define ptr @foo_with_removable_malloc() { %ret = load ptr, ptr %struct.byte.8 call void @readnone(ptr %struct.byte.4); call void @readnone(ptr %struct.byte.8); - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %struct.alloca) nounwind + call void @llvm.lifetime.end.p0(ptr nonnull %struct.alloca) nounwind ret ptr %ret } @@ -87,7 +87,7 @@ define ptr @foo_with_removable_malloc_free() { ; CHECK-LABEL: define ptr @foo_with_removable_malloc_free() { ; CHECK-NEXT: [[STRUCT_ALLOCA:%.*]] = alloca [[STRUCT_TYPE:%.*]], align 8 ; CHECK-NEXT: [[M1:%.*]] = tail call ptr @malloc(i64 4) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 56, ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] ; CHECK-NEXT: [[STRUCT_BYTE_4:%.*]] = getelementptr inbounds i8, ptr [[STRUCT_ALLOCA]], i64 4 ; CHECK-NEXT: [[STRUCT_BYTE_8:%.*]] = getelementptr inbounds i8, ptr [[STRUCT_ALLOCA]], i64 8 ; CHECK-NEXT: [[M2:%.*]] = tail call ptr @malloc(i64 4) @@ -99,12 +99,12 @@ define ptr @foo_with_removable_malloc_free() { ; CHECK-NEXT: [[RET:%.*]] = load ptr, ptr [[STRUCT_BYTE_8]], align 8 ; CHECK-NEXT: call void @readnone(ptr [[STRUCT_BYTE_4]]) ; CHECK-NEXT: call void @readnone(ptr [[STRUCT_BYTE_8]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 56, ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] ; CHECK-NEXT: ret ptr [[RET]] ; %struct.alloca = alloca %struct.type, align 8 %m1 = tail call ptr @malloc(i64 4) - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %struct.alloca) nounwind + call void @llvm.lifetime.start.p0(ptr nonnull %struct.alloca) nounwind %struct.byte.4 = getelementptr inbounds i8, ptr %struct.alloca, i64 4 %struct.byte.8 = getelementptr inbounds i8, ptr %struct.alloca, i64 8 @@ -126,14 +126,14 @@ define ptr @foo_with_removable_malloc_free() { %ret = load ptr, ptr %struct.byte.8 call void @readnone(ptr %struct.byte.4); call void @readnone(ptr %struct.byte.8); - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %struct.alloca) nounwind + call void @llvm.lifetime.end.p0(ptr nonnull %struct.alloca) nounwind ret ptr %ret } define ptr @foo_with_malloc_to_calloc() { ; CHECK-LABEL: define ptr @foo_with_malloc_to_calloc() { ; CHECK-NEXT: [[STRUCT_ALLOCA:%.*]] = alloca [[STRUCT_TYPE:%.*]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 56, ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] ; CHECK-NEXT: [[STRUCT_BYTE_8:%.*]] = getelementptr inbounds i8, ptr [[STRUCT_ALLOCA]], i64 8 ; CHECK-NEXT: [[STRUCT_BYTE_4:%.*]] = getelementptr inbounds i8, ptr [[STRUCT_ALLOCA]], i64 4 ; CHECK-NEXT: [[CALLOC1:%.*]] = call ptr @calloc(i64 1, i64 4) @@ -144,13 +144,13 @@ define ptr @foo_with_malloc_to_calloc() { ; CHECK-NEXT: [[RET:%.*]] = load ptr, ptr [[STRUCT_BYTE_8]], align 8 ; CHECK-NEXT: call void @readnone(ptr [[STRUCT_BYTE_4]]) ; CHECK-NEXT: call void @readnone(ptr [[STRUCT_BYTE_8]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 56, ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[STRUCT_ALLOCA]]) #[[ATTR6]] ; CHECK-NEXT: call void @use(ptr [[CALLOC1]]) ; CHECK-NEXT: call void @use(ptr [[CALLOC]]) ; CHECK-NEXT: ret ptr [[RET]] ; %struct.alloca = alloca %struct.type, align 8 - call void @llvm.lifetime.start.p0(i64 56, ptr nonnull %struct.alloca) nounwind + call void @llvm.lifetime.start.p0(ptr nonnull %struct.alloca) nounwind %struct.byte.8 = getelementptr inbounds i8, ptr %struct.alloca, i64 8 %struct.byte.4 = getelementptr inbounds i8, ptr %struct.alloca, i64 4 @@ -172,15 +172,15 @@ define ptr @foo_with_malloc_to_calloc() { %ret = load ptr, ptr %struct.byte.8 call void @readnone(ptr %struct.byte.4); call void @readnone(ptr %struct.byte.8); - call void @llvm.lifetime.end.p0(i64 56, ptr nonnull %struct.alloca) nounwind + call void @llvm.lifetime.end.p0(ptr nonnull %struct.alloca) nounwind call void @use(ptr %m1) call void @use(ptr %m2) ret ptr %ret } declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare noalias ptr @malloc(i64) willreturn allockind("alloc,uninitialized") "alloc-family"="malloc" declare void @readnone(ptr) readnone nounwind diff --git a/llvm/test/Transforms/DeadStoreElimination/captures-before-load.ll b/llvm/test/Transforms/DeadStoreElimination/captures-before-load.ll index 7d827fa2f6996..56c84c7ed5c77 100644 --- a/llvm/test/Transforms/DeadStoreElimination/captures-before-load.ll +++ b/llvm/test/Transforms/DeadStoreElimination/captures-before-load.ll @@ -865,7 +865,7 @@ exit: ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 declare void @use.i64(i64) @@ -883,7 +883,7 @@ define i64 @test_a_not_captured_at_all(ptr %ptr, ptr %ptr.2, i1 %c) { ; CHECK-NEXT: call void @use.i64(i64 [[LV_2]]) ; CHECK-NEXT: br label [[EXIT]] ; CHECK: exit: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: call void @clobber() ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr [[A]], i8 0, i64 8, i1 false) ; CHECK-NEXT: [[L:%.*]] = load i64, ptr [[A]], align 4 @@ -902,7 +902,7 @@ then: br label %exit exit: - call void @llvm.lifetime.start.p0(i64 8, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) store i64 99, ptr %a call void @clobber() call void @llvm.memset.p0.i64(ptr %a, i8 0, i64 8, i1 false) @@ -1112,7 +1112,7 @@ else: declare void @capture_and_clobber_multiple(ptr, ptr) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define i64 @earliest_escape_ptrtoint(ptr %p.1) { ; CHECK-LABEL: @earliest_escape_ptrtoint( @@ -1122,7 +1122,7 @@ define i64 @earliest_escape_ptrtoint(ptr %p.1) { ; CHECK-NEXT: [[LV_1:%.*]] = load ptr, ptr [[P_1:%.*]], align 8 ; CHECK-NEXT: [[LV_2:%.*]] = load i64, ptr [[LV_1]], align 4 ; CHECK-NEXT: store ptr [[A_1]], ptr [[P_1]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[A_2]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_2]]) ; CHECK-NEXT: ret i64 [[LV_2]] ; entry: @@ -1134,7 +1134,7 @@ entry: store ptr %a.1, ptr %p.1, align 8 %int = ptrtoint ptr %a.2 to i64 store i64 %int , ptr %a.2, align 8 - call void @llvm.lifetime.end.p0(i64 8, ptr %a.2) + call void @llvm.lifetime.end.p0(ptr %a.2) ret i64 %lv.2 } diff --git a/llvm/test/Transforms/DeadStoreElimination/dominate.ll b/llvm/test/Transforms/DeadStoreElimination/dominate.ll index 262d16e45849c..7e3ddb30ffe64 100644 --- a/llvm/test/Transforms/DeadStoreElimination/dominate.ll +++ b/llvm/test/Transforms/DeadStoreElimination/dominate.ll @@ -8,12 +8,12 @@ bb1: br label %bb3 bb2: - call void @llvm.lifetime.end.p0(i64 -1, ptr %memtmp3.i) + call void @llvm.lifetime.end.p0(ptr %memtmp3.i) br label %bb3 bb3: call void @bar() - call void @llvm.lifetime.end.p0(i64 -1, ptr %memtmp3.i) + call void @llvm.lifetime.end.p0(ptr %memtmp3.i) br label %bb4 bb4: @@ -21,4 +21,4 @@ bb4: } -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind diff --git a/llvm/test/Transforms/DeadStoreElimination/libcalls.ll b/llvm/test/Transforms/DeadStoreElimination/libcalls.ll index 27ad6390e5ddb..8225e143cba99 100644 --- a/llvm/test/Transforms/DeadStoreElimination/libcalls.ll +++ b/llvm/test/Transforms/DeadStoreElimination/libcalls.ll @@ -56,14 +56,14 @@ define void @test3(ptr %src) { define void @test_strcat_with_lifetime(ptr %src) { ; CHECK-LABEL: @test_strcat_with_lifetime( ; CHECK-NEXT: [[B:%.*]] = alloca [16 x i8], align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[B]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[B]]) ; CHECK-NEXT: ret void ; %B = alloca [16 x i8] - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %B) + call void @llvm.lifetime.start.p0(ptr nonnull %B) %call = call ptr @strcat(ptr %B, ptr %src) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %B) + call void @llvm.lifetime.end.p0(ptr nonnull %B) ret void } @@ -344,61 +344,61 @@ entry: define void @dse_strcpy(ptr nocapture readonly %src) { ; CHECK-LABEL: @dse_strcpy( ; CHECK-NEXT: [[A:%.*]] = alloca [256 x i8], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 256, ptr nonnull [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 256, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[A]]) ; CHECK-NEXT: ret void ; %a = alloca [256 x i8], align 16 - call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) call ptr @strcpy(ptr nonnull %a, ptr nonnull dereferenceable(1) %src) - call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) ret void } define void @dse_strncpy(ptr nocapture readonly %src) { ; CHECK-LABEL: @dse_strncpy( ; CHECK-NEXT: [[A:%.*]] = alloca [256 x i8], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 256, ptr nonnull [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 256, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[A]]) ; CHECK-NEXT: ret void ; %a = alloca [256 x i8], align 16 - call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) call ptr @strncpy(ptr nonnull %a, ptr nonnull dereferenceable(1) %src, i64 6) - call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) ret void } define void @dse_strcat(ptr nocapture readonly %src) { ; CHECK-LABEL: @dse_strcat( ; CHECK-NEXT: [[A:%.*]] = alloca [256 x i8], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 256, ptr nonnull [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 256, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[A]]) ; CHECK-NEXT: ret void ; %a = alloca [256 x i8], align 16 - call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) call ptr @strcat(ptr nonnull %a, ptr nonnull dereferenceable(1) %src) - call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) ret void } define void @dse_strncat(ptr nocapture readonly %src) { ; CHECK-LABEL: @dse_strncat( ; CHECK-NEXT: [[A:%.*]] = alloca [256 x i8], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 256, ptr nonnull [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 256, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[A]]) ; CHECK-NEXT: ret void ; %a = alloca [256 x i8], align 16 - call void @llvm.lifetime.start.p0(i64 256, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) call ptr @strncat(ptr nonnull %a, ptr nonnull dereferenceable(1) %src, i64 6) - call void @llvm.lifetime.end.p0(i64 256, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) nounwind diff --git a/llvm/test/Transforms/DeadStoreElimination/lifetime.ll b/llvm/test/Transforms/DeadStoreElimination/lifetime.ll index f2a372eafb0b7..3d74c846032fc 100644 --- a/llvm/test/Transforms/DeadStoreElimination/lifetime.ll +++ b/llvm/test/Transforms/DeadStoreElimination/lifetime.ll @@ -3,20 +3,20 @@ target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128" -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind declare void @llvm.memset.p0.i8(ptr nocapture, i8, i8, i1) nounwind define void @test1() { ; CHECK-LABEL: @test1( ; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %A = alloca i8 store i8 0, ptr %A ;; Written to by memset - call void @llvm.lifetime.end.p0(i64 1, ptr %A) + call void @llvm.lifetime.end.p0(ptr %A) call void @llvm.memset.p0.i8(ptr %A, i8 0, i8 -1, i1 false) @@ -26,14 +26,14 @@ define void @test1() { define void @test2(ptr %P) { ; CHECK-LABEL: @test2( ; CHECK-NEXT: [[Q:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[Q]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[Q]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[Q]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[Q]]) ; CHECK-NEXT: ret void ; %Q = alloca i32 - call void @llvm.lifetime.start.p0(i64 4, ptr %Q) + call void @llvm.lifetime.start.p0(ptr %Q) store i32 0, ptr %Q ;; This store is dead. - call void @llvm.lifetime.end.p0(i64 4, ptr %Q) + call void @llvm.lifetime.end.p0(ptr %Q) ret void } diff --git a/llvm/test/Transforms/DeadStoreElimination/memcpy-lifetimes.ll b/llvm/test/Transforms/DeadStoreElimination/memcpy-lifetimes.ll index 7dd8e4153e6e8..264e816c24e81 100644 --- a/llvm/test/Transforms/DeadStoreElimination/memcpy-lifetimes.ll +++ b/llvm/test/Transforms/DeadStoreElimination/memcpy-lifetimes.ll @@ -15,7 +15,7 @@ define ptr @alloc_tree() { ; CHECK-LABEL: @alloc_tree( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[FVAL:%.*]] = alloca [4 x ptr], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[FVAL]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[FVAL]]) ; CHECK-NEXT: [[CALL:%.*]] = tail call dereferenceable_or_null(192) ptr @malloc(i64 192) ; CHECK-NEXT: [[CALL3:%.*]] = tail call ptr @alloc(ptr [[CALL]]) ; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds [4 x ptr], ptr [[FVAL]], i64 0, i64 3 @@ -29,12 +29,12 @@ define ptr @alloc_tree() { ; CHECK-NEXT: [[CALL3_3:%.*]] = tail call ptr @alloc(ptr [[CALL]]) ; CHECK-NEXT: store ptr [[CALL3_3]], ptr [[FVAL]], align 16 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(32) [[CALL]], ptr nonnull align 16 dereferenceable(32) [[FVAL]], i64 32, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[FVAL]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[FVAL]]) ; CHECK-NEXT: ret ptr [[CALL]] ; entry: %fval = alloca [4 x ptr], align 16 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %fval) #7 + call void @llvm.lifetime.start.p0(ptr nonnull %fval) #7 %call = tail call dereferenceable_or_null(192) ptr @malloc(i64 192) #8 %call3 = tail call ptr @alloc(ptr %call) %arrayidx = getelementptr inbounds [4 x ptr], ptr %fval, i64 0, i64 3 @@ -48,11 +48,11 @@ entry: %call3.3 = tail call ptr @alloc(ptr %call) store ptr %call3.3, ptr %fval, align 16 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(32) %call, ptr nonnull align 16 dereferenceable(32) %fval, i64 32, i1 false) - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %fval) #7 + call void @llvm.lifetime.end.p0(ptr nonnull %fval) #7 ret ptr %call } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare noalias ptr @malloc(i64) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) diff --git a/llvm/test/Transforms/DeadStoreElimination/multiblock-loop-carried-dependence.ll b/llvm/test/Transforms/DeadStoreElimination/multiblock-loop-carried-dependence.ll index f3f5cb1e4c981..112e9f4489905 100644 --- a/llvm/test/Transforms/DeadStoreElimination/multiblock-loop-carried-dependence.ll +++ b/llvm/test/Transforms/DeadStoreElimination/multiblock-loop-carried-dependence.ll @@ -103,7 +103,7 @@ define void @test.2() { ; CHECK-NEXT: [[C_2:%.*]] = icmp slt i64 [[IV_2_NEXT]], 100 ; CHECK-NEXT: br i1 [[C_2]], label [[LOOP_2]], label [[EXIT:%.*]] ; CHECK: exit: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 400, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[A]]) ; CHECK-NEXT: ret void ; entry: @@ -136,11 +136,11 @@ loop.2: br i1 %c.2, label %loop.2, label %exit exit: - call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %A) #5 + call void @llvm.lifetime.end.p0(ptr nonnull %A) #5 ret void } -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; Make sure `store i32 10, ptr %ptr.2` in %cond.store is not removed. The ; stored value may be read by `%use = load i32, ptr %ptr.1` in a future @@ -171,7 +171,7 @@ define void@test.3() { ; CHECK-NEXT: [[DEPTH_1_BE]] = phi i32 [ [[SUB]], [[COND_READ]] ], [ [[INC]], [[COND_STORE]] ] ; CHECK-NEXT: br label [[LOOP_HEADER]] ; CHECK: cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 48, ptr nonnull [[NODESTACK]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[NODESTACK]]) ; CHECK-NEXT: ret void ; entry: @@ -203,7 +203,7 @@ loop.latch: br label %loop.header cleanup: ; preds = %while.body, %while.end, %entry - call void @llvm.lifetime.end.p0(i64 48, ptr nonnull %nodeStack) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %nodeStack) #3 ret void } diff --git a/llvm/test/Transforms/DeadStoreElimination/multiblock-malloc-free.ll b/llvm/test/Transforms/DeadStoreElimination/multiblock-malloc-free.ll index d32d562eedc44..8ecc7939c549c 100644 --- a/llvm/test/Transforms/DeadStoreElimination/multiblock-malloc-free.ll +++ b/llvm/test/Transforms/DeadStoreElimination/multiblock-malloc-free.ll @@ -4,8 +4,8 @@ target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64" declare void @unknown_func() -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture, i64, i1) nounwind declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i32, i1) nounwind diff --git a/llvm/test/Transforms/DeadStoreElimination/nounwind-invoke.ll b/llvm/test/Transforms/DeadStoreElimination/nounwind-invoke.ll index 3712bec25ee94..72932280de3f0 100644 --- a/llvm/test/Transforms/DeadStoreElimination/nounwind-invoke.ll +++ b/llvm/test/Transforms/DeadStoreElimination/nounwind-invoke.ll @@ -9,7 +9,7 @@ define void @test_nounwind_invoke() personality ptr @__gxx_personality_v0 { ; CHECK-NEXT: invoke void @foo(ptr [[TMP]]) ; CHECK-NEXT: to label [[BB1:%.*]] unwind label [[BB2:%.*]] ; CHECK: bb1: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[TMP]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP]]) ; CHECK-NEXT: ret void ; CHECK: bb2: ; CHECK-NEXT: [[ABCTMP1:%.*]] = landingpad { ptr, i32 } @@ -26,7 +26,7 @@ bb: to label %bb1 unwind label %bb2 bb1: ; preds = %bb - call void @llvm.lifetime.end.p0(i64 4, ptr %tmp) + call void @llvm.lifetime.end.p0(ptr %tmp) ret void bb2: ; preds = %bb @@ -36,7 +36,7 @@ bb2: ; preds = %bb } ; Function Attrs: argmemonly nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0 +declare void @llvm.lifetime.end.p0(ptr nocapture) #0 ; Function Attrs: argmemonly nounwind willreturn declare void @foo(ptr) #1 declare i32 @__gxx_personality_v0(...) diff --git a/llvm/test/Transforms/DeadStoreElimination/simple.ll b/llvm/test/Transforms/DeadStoreElimination/simple.ll index 6c04e15edc374..9d28395a4ccd0 100644 --- a/llvm/test/Transforms/DeadStoreElimination/simple.ll +++ b/llvm/test/Transforms/DeadStoreElimination/simple.ll @@ -697,26 +697,26 @@ define void @test39_atomic(ptr %P, ptr %Q, ptr %R) { declare void @llvm.memmove.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) declare void @llvm.memmove.element.unordered.atomic.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i32) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind define void @test40(ptr noalias %Pp, ptr noalias %Q) { ; CHECK-LABEL: @test40( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[A]]) ; CHECK-NEXT: [[PC:%.*]] = load ptr, ptr [[PP:%.*]], align 8 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 [[A]], ptr align 4 [[Q:%.*]], i64 4, i1 false) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[PC]], ptr nonnull align 4 [[A]], i64 4, i1 true) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[A]]) ; CHECK-NEXT: ret void ; entry: %A = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %A) + call void @llvm.lifetime.start.p0(ptr nonnull %A) %Pc = load ptr, ptr %Pp, align 8 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 4 %A, ptr align 4 %Q, i64 4, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %Pc, ptr nonnull align 4 %A, i64 4, i1 true) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %A) + call void @llvm.lifetime.end.p0(ptr nonnull %A) ret void } diff --git a/llvm/test/Transforms/DeadStoreElimination/trivial-dse-calls.ll b/llvm/test/Transforms/DeadStoreElimination/trivial-dse-calls.ll index df2feb087e397..0970ed35b2f2f 100644 --- a/llvm/test/Transforms/DeadStoreElimination/trivial-dse-calls.ll +++ b/llvm/test/Transforms/DeadStoreElimination/trivial-dse-calls.ll @@ -1,8 +1,8 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -passes=dse -S < %s | FileCheck %s -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @unknown() declare void @f(ptr) @@ -23,14 +23,14 @@ define void @test_dead() { define void @test_lifetime() { ; CHECK-LABEL: @test_lifetime( ; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @f(ptr writeonly nocapture %a) argmemonly nounwind willreturn - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -39,18 +39,18 @@ define void @test_lifetime() { define void @test_lifetime2() { ; CHECK-LABEL: @test_lifetime2( ; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: call void @unknown() ; CHECK-NEXT: call void @unknown() -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @unknown() call void @f(ptr writeonly nocapture %a) argmemonly nounwind willreturn call void @unknown() - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } diff --git a/llvm/test/Transforms/EarlyCSE/memoryssa.ll b/llvm/test/Transforms/EarlyCSE/memoryssa.ll index ba4cce406a12e..f7f7ba31aef9b 100644 --- a/llvm/test/Transforms/EarlyCSE/memoryssa.ll +++ b/llvm/test/Transforms/EarlyCSE/memoryssa.ll @@ -146,12 +146,12 @@ define void @test_writeback_lifetimes() { ; CHECK-NOMEMSSA-LABEL: @test_writeback_lifetimes( ; CHECK-NOMEMSSA-NEXT: entry: ; CHECK-NOMEMSSA-NEXT: [[P:%.*]] = alloca i64, align 8 -; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[P]]) +; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) ; CHECK-NOMEMSSA-NEXT: [[Q:%.*]] = getelementptr i32, ptr [[P]], i64 1 ; CHECK-NOMEMSSA-NEXT: [[PV:%.*]] = load i32, ptr [[P]], align 4 ; CHECK-NOMEMSSA-NEXT: [[QV:%.*]] = load i32, ptr [[Q]], align 4 -; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[P]]) -; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[P]]) +; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.end.p0(ptr [[P]]) +; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) ; CHECK-NOMEMSSA-NEXT: store i32 [[PV]], ptr [[P]], align 4 ; CHECK-NOMEMSSA-NEXT: store i32 [[QV]], ptr [[Q]], align 4 ; CHECK-NOMEMSSA-NEXT: ret void @@ -159,24 +159,24 @@ define void @test_writeback_lifetimes() { ; CHECK-LABEL: @test_writeback_lifetimes( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[P:%.*]] = alloca i64, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) ; CHECK-NEXT: [[Q:%.*]] = getelementptr i32, ptr [[P]], i64 1 ; CHECK-NEXT: [[PV:%.*]] = load i32, ptr [[P]], align 4 ; CHECK-NEXT: [[QV:%.*]] = load i32, ptr [[Q]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[P]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) ; CHECK-NEXT: store i32 [[PV]], ptr [[P]], align 4 ; CHECK-NEXT: store i32 [[QV]], ptr [[Q]], align 4 ; CHECK-NEXT: ret void ; entry: %p = alloca i64 - call void @llvm.lifetime.start.p0(i64 8, ptr %p) + call void @llvm.lifetime.start.p0(ptr %p) %q = getelementptr i32, ptr %p, i64 1 %pv = load i32, ptr %p %qv = load i32, ptr %q - call void @llvm.lifetime.end.p0(i64 8, ptr %p) - call void @llvm.lifetime.start.p0(i64 8, ptr %p) + call void @llvm.lifetime.end.p0(ptr %p) + call void @llvm.lifetime.start.p0(ptr %p) store i32 %pv, ptr %p store i32 %qv, ptr %q ret void @@ -188,11 +188,11 @@ define void @test_writeback_lifetimes_multi_arg(ptr %q) { ; CHECK-NOMEMSSA-LABEL: @test_writeback_lifetimes_multi_arg( ; CHECK-NOMEMSSA-NEXT: entry: ; CHECK-NOMEMSSA-NEXT: [[P:%.*]] = alloca i64, align 8 -; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[P]]) +; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) ; CHECK-NOMEMSSA-NEXT: [[PV:%.*]] = load i32, ptr [[P]], align 4 ; CHECK-NOMEMSSA-NEXT: [[QV:%.*]] = load i32, ptr [[Q:%.*]], align 4 -; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[P]]) -; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[P]]) +; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.end.p0(ptr [[P]]) +; CHECK-NOMEMSSA-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) ; CHECK-NOMEMSSA-NEXT: store i32 [[PV]], ptr [[P]], align 4 ; CHECK-NOMEMSSA-NEXT: store i32 [[QV]], ptr [[Q]], align 4 ; CHECK-NOMEMSSA-NEXT: ret void @@ -200,25 +200,25 @@ define void @test_writeback_lifetimes_multi_arg(ptr %q) { ; CHECK-LABEL: @test_writeback_lifetimes_multi_arg( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[P:%.*]] = alloca i64, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) ; CHECK-NEXT: [[PV:%.*]] = load i32, ptr [[P]], align 4 ; CHECK-NEXT: [[QV:%.*]] = load i32, ptr [[Q:%.*]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[P]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) ; CHECK-NEXT: store i32 [[PV]], ptr [[P]], align 4 ; CHECK-NEXT: ret void ; entry: %p = alloca i64 - call void @llvm.lifetime.start.p0(i64 8, ptr %p) + call void @llvm.lifetime.start.p0(ptr %p) %pv = load i32, ptr %p %qv = load i32, ptr %q - call void @llvm.lifetime.end.p0(i64 8, ptr %p) - call void @llvm.lifetime.start.p0(i64 8, ptr %p) + call void @llvm.lifetime.end.p0(ptr %p) + call void @llvm.lifetime.start.p0(ptr %p) store i32 %pv, ptr %p store i32 %qv, ptr %q ret void } -declare void @llvm.lifetime.end.p0(i64, ptr) -declare void @llvm.lifetime.start.p0(i64, ptr) +declare void @llvm.lifetime.end.p0(ptr) +declare void @llvm.lifetime.start.p0(ptr) diff --git a/llvm/test/Transforms/ExpandVariadics/expand-va-intrinsic-split-linkage.ll b/llvm/test/Transforms/ExpandVariadics/expand-va-intrinsic-split-linkage.ll index f7e21cd586e60..736b07276cebf 100644 --- a/llvm/test/Transforms/ExpandVariadics/expand-va-intrinsic-split-linkage.ll +++ b/llvm/test/Transforms/ExpandVariadics/expand-va-intrinsic-split-linkage.ll @@ -25,11 +25,11 @@ define void @defn_simple(...) { ; OPT-LABEL: define {{[^@]+}}@defn_simple(...) { ; OPT-NEXT: entry: ; OPT-NEXT: %va_start = alloca ptr, align 4 -; OPT-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %va_start) ; OPT-NEXT: call void @llvm.va_start.p0(ptr %va_start) ; OPT-NEXT: %0 = load ptr, ptr %va_start, align 4 ; OPT-NEXT: call void @defn_simple.valist(ptr %0) -; OPT-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %va_start) ; OPT-NEXT: ret void ; ; ABI-LABEL: define {{[^@]+}}@defn_simple(ptr %varargs) { @@ -50,11 +50,11 @@ define private void @defn_private_simple(...) { ; OPT-LABEL: define {{[^@]+}}@defn_private_simple(...) { ; OPT-NEXT: entry: ; OPT-NEXT: %va_start = alloca ptr, align 4 -; OPT-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %va_start) ; OPT-NEXT: call void @llvm.va_start.p0(ptr %va_start) ; OPT-NEXT: %0 = load ptr, ptr %va_start, align 4 ; OPT-NEXT: call void @defn_private_simple.valist(ptr %0) -; OPT-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %va_start) ; OPT-NEXT: ret void ; ; ABI-LABEL: define {{[^@]+}}@defn_private_simple(ptr %varargs) { @@ -75,11 +75,11 @@ define internal void @defn_internal_simple(...) { ; OPT-LABEL: define {{[^@]+}}@defn_internal_simple(...) { ; OPT-NEXT: entry: ; OPT-NEXT: %va_start = alloca ptr, align 4 -; OPT-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %va_start) ; OPT-NEXT: call void @llvm.va_start.p0(ptr %va_start) ; OPT-NEXT: %0 = load ptr, ptr %va_start, align 4 ; OPT-NEXT: call void @defn_internal_simple.valist(ptr %0) -; OPT-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %va_start) ; OPT-NEXT: ret void ; ; ABI-LABEL: define {{[^@]+}}@defn_internal_simple(ptr %varargs) { @@ -211,11 +211,11 @@ define external void @defn_external_simple(...) { ; OPT-LABEL: define {{[^@]+}}@defn_external_simple(...) { ; OPT-NEXT: entry: ; OPT-NEXT: %va_start = alloca ptr, align 4 -; OPT-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %va_start) ; OPT-NEXT: call void @llvm.va_start.p0(ptr %va_start) ; OPT-NEXT: %0 = load ptr, ptr %va_start, align 4 ; OPT-NEXT: call void @defn_external_simple.valist(ptr %0) -; OPT-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %va_start) ; OPT-NEXT: ret void ; ; ABI-LABEL: define {{[^@]+}}@defn_external_simple(ptr %varargs) { diff --git a/llvm/test/Transforms/ExpandVariadics/expand-va-intrinsic-split-simple.ll b/llvm/test/Transforms/ExpandVariadics/expand-va-intrinsic-split-simple.ll index 96cc826aef4ec..e21b72dbc4d2d 100644 --- a/llvm/test/Transforms/ExpandVariadics/expand-va-intrinsic-split-simple.ll +++ b/llvm/test/Transforms/ExpandVariadics/expand-va-intrinsic-split-simple.ll @@ -10,11 +10,11 @@ define i32 @variadic_int_double_get_firstz(...) { ; OPT-LABEL: define {{[^@]+}}@variadic_int_double_get_firstz(...) { ; OPT-NEXT: entry: ; OPT-NEXT: %va_start = alloca ptr, align 4 -; OPT-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %va_start) ; OPT-NEXT: call void @llvm.va_start.p0(ptr %va_start) ; OPT-NEXT: %0 = load ptr, ptr %va_start, align 4 ; OPT-NEXT: %1 = call i32 @variadic_int_double_get_firstz.valist(ptr %0) -; OPT-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %va_start) ; OPT-NEXT: ret i32 %1 ; ; ABI-LABEL: define {{[^@]+}}@variadic_int_double_get_firstz(ptr %varargs) { @@ -61,11 +61,11 @@ define double @variadic_int_double_get_secondz(...) { ; OPT-LABEL: define {{[^@]+}}@variadic_int_double_get_secondz(...) { ; OPT-NEXT: entry: ; OPT-NEXT: %va_start = alloca ptr, align 4 -; OPT-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %va_start) ; OPT-NEXT: call void @llvm.va_start.p0(ptr %va_start) ; OPT-NEXT: %0 = load ptr, ptr %va_start, align 4 ; OPT-NEXT: %1 = call double @variadic_int_double_get_secondz.valist(ptr %0) -; OPT-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %va_start) +; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %va_start) ; OPT-NEXT: ret double %1 ; ; ABI-LABEL: define {{[^@]+}}@variadic_int_double_get_secondz(ptr %varargs) { @@ -115,13 +115,13 @@ entry: ; CHECK-LABEL: @variadic_can_get_firstIidEEbT_T0_(i32 %x, double %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %variadic_can_get_firstIidEEbT_T0_.vararg, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds %variadic_can_get_firstIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds %variadic_can_get_firstIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store double %y, ptr %1, align 4 ; CHECK-NEXT: %call = call i32 @variadic_int_double_get_firstz.valist(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: %cmp.i = icmp eq i32 %call, %x ; CHECK-NEXT: ret i1 %cmp.i ; CHECK-NEXT: } @@ -130,26 +130,26 @@ define zeroext i1 @variadic_can_get_firstIidEEbT_T0_(i32 %x, double %y) { ; OPT-LABEL: define {{[^@]+}}@variadic_can_get_firstIidEEbT_T0_(i32 %x, double %y) { ; OPT-NEXT: entry: ; OPT-NEXT: %vararg_buffer = alloca %variadic_can_get_firstIidEEbT_T0_.vararg, align 16 -; OPT-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr %vararg_buffer) +; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; OPT-NEXT: %0 = getelementptr inbounds nuw %variadic_can_get_firstIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 0 ; OPT-NEXT: store i32 %x, ptr %0, align 4 ; OPT-NEXT: %1 = getelementptr inbounds nuw %variadic_can_get_firstIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 2 ; OPT-NEXT: store double %y, ptr %1, align 8 ; OPT-NEXT: %call = call i32 @variadic_int_double_get_firstz.valist(ptr %vararg_buffer) -; OPT-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr %vararg_buffer) +; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; OPT-NEXT: %cmp.i = icmp eq i32 %call, %x ; OPT-NEXT: ret i1 %cmp.i ; ; ABI-LABEL: define {{[^@]+}}@variadic_can_get_firstIidEEbT_T0_(i32 %x, double %y) { ; ABI-NEXT: entry: ; ABI-NEXT: %vararg_buffer = alloca %variadic_can_get_firstIidEEbT_T0_.vararg, align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr %vararg_buffer) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; ABI-NEXT: %0 = getelementptr inbounds nuw %variadic_can_get_firstIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 0 ; ABI-NEXT: store i32 %x, ptr %0, align 4 ; ABI-NEXT: %1 = getelementptr inbounds nuw %variadic_can_get_firstIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 2 ; ABI-NEXT: store double %y, ptr %1, align 8 ; ABI-NEXT: %call = call i32 @variadic_int_double_get_firstz(ptr %vararg_buffer) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr %vararg_buffer) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; ABI-NEXT: %cmp.i = icmp eq i32 %call, %x ; ABI-NEXT: ret i1 %cmp.i ; @@ -162,13 +162,13 @@ entry: ; CHECK-LABEL: @variadic_can_get_secondIidEEbT_T0_(i32 %x, double %y) { ; CHECK-NEXT: entry: ; CHECK-NEXT: %vararg_buffer = alloca %variadic_can_get_secondIidEEbT_T0_.vararg, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; CHECK-NEXT: %0 = getelementptr inbounds %variadic_can_get_secondIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 0 ; CHECK-NEXT: store i32 %x, ptr %0, align 4 ; CHECK-NEXT: %1 = getelementptr inbounds %variadic_can_get_secondIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 1 ; CHECK-NEXT: store double %y, ptr %1, align 4 ; CHECK-NEXT: %call = call double @variadic_int_double_get_secondz.valist(ptr %vararg_buffer) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr %vararg_buffer) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; CHECK-NEXT: %cmp.i = fcmp oeq double %call, %y ; CHECK-NEXT: ret i1 %cmp.i ; CHECK-NEXT: } @@ -177,26 +177,26 @@ define zeroext i1 @variadic_can_get_secondIidEEbT_T0_(i32 %x, double %y) { ; OPT-LABEL: define {{[^@]+}}@variadic_can_get_secondIidEEbT_T0_(i32 %x, double %y) { ; OPT-NEXT: entry: ; OPT-NEXT: %vararg_buffer = alloca %variadic_can_get_secondIidEEbT_T0_.vararg, align 16 -; OPT-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr %vararg_buffer) +; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; OPT-NEXT: %0 = getelementptr inbounds nuw %variadic_can_get_secondIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 0 ; OPT-NEXT: store i32 %x, ptr %0, align 4 ; OPT-NEXT: %1 = getelementptr inbounds nuw %variadic_can_get_secondIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 2 ; OPT-NEXT: store double %y, ptr %1, align 8 ; OPT-NEXT: %call = call double @variadic_int_double_get_secondz.valist(ptr %vararg_buffer) -; OPT-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr %vararg_buffer) +; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; OPT-NEXT: %cmp.i = fcmp oeq double %call, %y ; OPT-NEXT: ret i1 %cmp.i ; ; ABI-LABEL: define {{[^@]+}}@variadic_can_get_secondIidEEbT_T0_(i32 %x, double %y) { ; ABI-NEXT: entry: ; ABI-NEXT: %vararg_buffer = alloca %variadic_can_get_secondIidEEbT_T0_.vararg, align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr %vararg_buffer) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr %vararg_buffer) ; ABI-NEXT: %0 = getelementptr inbounds nuw %variadic_can_get_secondIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 0 ; ABI-NEXT: store i32 %x, ptr %0, align 4 ; ABI-NEXT: %1 = getelementptr inbounds nuw %variadic_can_get_secondIidEEbT_T0_.vararg, ptr %vararg_buffer, i32 0, i32 2 ; ABI-NEXT: store double %y, ptr %1, align 8 ; ABI-NEXT: %call = call double @variadic_int_double_get_secondz(ptr %vararg_buffer) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr %vararg_buffer) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr %vararg_buffer) ; ABI-NEXT: %cmp.i = fcmp oeq double %call, %y ; ABI-NEXT: ret i1 %cmp.i ; diff --git a/llvm/test/Transforms/ExpandVariadics/indirect-calls.ll b/llvm/test/Transforms/ExpandVariadics/indirect-calls.ll index b661f7f3e495f..0f178c7555c2f 100644 --- a/llvm/test/Transforms/ExpandVariadics/indirect-calls.ll +++ b/llvm/test/Transforms/ExpandVariadics/indirect-calls.ll @@ -19,11 +19,11 @@ define hidden void @fptr_single_i32(i32 noundef %x) { ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[FPTR_SINGLE_I32_VARARG:%.*]], align 16 ; ABI-NEXT: [[TMP0:%.*]] = load volatile ptr, ptr @vararg_ptr, align 4 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[FPTR_SINGLE_I32_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[X:%.*]], ptr [[TMP1]], align 4 ; ABI-NEXT: call void [[TMP0]](ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -45,11 +45,11 @@ define hidden void @fptr_libcS(ptr noundef byval(%struct.libcS) align 8 %x) { ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[FPTR_LIBCS_VARARG:%.*]], align 16 ; ABI-NEXT: [[TMP0:%.*]] = load volatile ptr, ptr @vararg_ptr, align 4 ; ABI-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[INDIRECTALLOCA]], ptr [[X:%.*]], i64 24, i1 false) -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[FPTR_LIBCS_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store ptr [[INDIRECTALLOCA]], ptr [[TMP1]], align 4 ; ABI-NEXT: call void [[TMP0]](ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: diff --git a/llvm/test/Transforms/ExpandVariadics/intrinsics.ll b/llvm/test/Transforms/ExpandVariadics/intrinsics.ll index 1782c92295744..52ce80eb4b7b6 100644 --- a/llvm/test/Transforms/ExpandVariadics/intrinsics.ll +++ b/llvm/test/Transforms/ExpandVariadics/intrinsics.ll @@ -3,13 +3,13 @@ ; RUN: opt -mtriple=wasm32-unknown-unknown -S --passes=expand-variadics --expand-variadics-override=lowering < %s | FileCheck %s -check-prefixes=CHECK,ABI ; REQUIRES: webassembly-registered-target -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @llvm.va_copy.p0(ptr, ptr) declare void @valist(ptr noundef) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @llvm.va_start.p0(ptr) @@ -20,31 +20,31 @@ define void @start_once(...) { ; OPT-LABEL: @start_once( ; OPT-NEXT: entry: ; OPT-NEXT: [[VA_START:%.*]] = alloca ptr, align 4 -; OPT-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[VA_START]]) +; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr [[VA_START]]) ; OPT-NEXT: call void @llvm.va_start.p0(ptr [[VA_START]]) ; OPT-NEXT: [[TMP0:%.*]] = load ptr, ptr [[VA_START]], align 4 ; OPT-NEXT: call void @start_once.valist(ptr [[TMP0]]) -; OPT-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[VA_START]]) +; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr [[VA_START]]) ; OPT-NEXT: ret void ; ; ABI-LABEL: @start_once( ; ABI-NEXT: entry: ; ABI-NEXT: [[S:%.*]] = alloca ptr, align 4 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[S]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S]]) ; ABI-NEXT: store ptr [[VARARGS:%.*]], ptr [[S]], align 4 ; ABI-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S]], align 4 ; ABI-NEXT: call void @valist(ptr noundef [[TMP0]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[S]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S]]) ; ABI-NEXT: ret void ; entry: %s = alloca ptr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s) + call void @llvm.lifetime.start.p0(ptr nonnull %s) call void @llvm.va_start.p0(ptr nonnull %s) %0 = load ptr, ptr %s, align 4 call void @valist(ptr noundef %0) call void @llvm.va_end.p0(ptr %s) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s) + call void @llvm.lifetime.end.p0(ptr nonnull %s) ret void } @@ -53,34 +53,34 @@ define void @start_twice(...) { ; OPT-LABEL: @start_twice( ; OPT-NEXT: entry: ; OPT-NEXT: [[VA_START:%.*]] = alloca ptr, align 4 -; OPT-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[VA_START]]) +; OPT-NEXT: call void @llvm.lifetime.start.p0(ptr [[VA_START]]) ; OPT-NEXT: call void @llvm.va_start.p0(ptr [[VA_START]]) ; OPT-NEXT: [[TMP0:%.*]] = load ptr, ptr [[VA_START]], align 4 ; OPT-NEXT: call void @start_twice.valist(ptr [[TMP0]]) -; OPT-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[VA_START]]) +; OPT-NEXT: call void @llvm.lifetime.end.p0(ptr [[VA_START]]) ; OPT-NEXT: ret void ; ; ABI-LABEL: @start_twice( ; ABI-NEXT: entry: ; ABI-NEXT: [[S0:%.*]] = alloca ptr, align 4 ; ABI-NEXT: [[S1:%.*]] = alloca ptr, align 4 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[S0]]) -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[S1]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S0]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S1]]) ; ABI-NEXT: store ptr [[VARARGS:%.*]], ptr [[S0]], align 4 ; ABI-NEXT: [[TMP0:%.*]] = load ptr, ptr [[S0]], align 4 ; ABI-NEXT: call void @valist(ptr noundef [[TMP0]]) ; ABI-NEXT: store ptr [[VARARGS]], ptr [[S1]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = load ptr, ptr [[S1]], align 4 ; ABI-NEXT: call void @valist(ptr noundef [[TMP1]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[S1]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[S0]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S1]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S0]]) ; ABI-NEXT: ret void ; entry: %s0 = alloca ptr, align 4 %s1 = alloca ptr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s0) - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %s1) + call void @llvm.lifetime.start.p0(ptr nonnull %s0) + call void @llvm.lifetime.start.p0(ptr nonnull %s1) call void @llvm.va_start.p0(ptr nonnull %s0) %0 = load ptr, ptr %s0, align 4 call void @valist(ptr noundef %0) @@ -89,8 +89,8 @@ entry: %1 = load ptr, ptr %s1, align 4 call void @valist(ptr noundef %1) call void @llvm.va_end.p0(ptr %s1) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s1) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %s0) + call void @llvm.lifetime.end.p0(ptr nonnull %s1) + call void @llvm.lifetime.end.p0(ptr nonnull %s0) ret void } @@ -100,21 +100,21 @@ define void @copy(ptr noundef %va) { ; CHECK-NEXT: [[VA_ADDR:%.*]] = alloca ptr, align 4 ; CHECK-NEXT: [[CP:%.*]] = alloca ptr, align 4 ; CHECK-NEXT: store ptr [[VA:%.*]], ptr [[VA_ADDR]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[CP]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[CP]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr [[CP]], ptr [[VA_ADDR]], i32 4, i1 false) ; CHECK-NEXT: [[TMP0:%.*]] = load ptr, ptr [[CP]], align 4 ; CHECK-NEXT: call void @valist(ptr noundef [[TMP0]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[CP]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[CP]]) ; CHECK-NEXT: ret void ; entry: %va.addr = alloca ptr, align 4 %cp = alloca ptr, align 4 store ptr %va, ptr %va.addr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %cp) + call void @llvm.lifetime.start.p0(ptr nonnull %cp) call void @llvm.va_copy.p0(ptr nonnull %cp, ptr nonnull %va.addr) %0 = load ptr, ptr %cp, align 4 call void @valist(ptr noundef %0) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %cp) + call void @llvm.lifetime.end.p0(ptr nonnull %cp) ret void } diff --git a/llvm/test/Transforms/ExpandVariadics/pass-byval-byref.ll b/llvm/test/Transforms/ExpandVariadics/pass-byval-byref.ll index a9f27f730ce91..83b33b93e2cd1 100644 --- a/llvm/test/Transforms/ExpandVariadics/pass-byval-byref.ll +++ b/llvm/test/Transforms/ExpandVariadics/pass-byval-byref.ll @@ -16,11 +16,11 @@ define void @pass_byval(ptr byval(i32) %b) { ; ABI-LABEL: @pass_byval( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_BYVAL_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_BYVAL_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[TMP0]], ptr [[B:%.*]], i64 4, i1 false) ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -41,13 +41,13 @@ define void @i32_libcS_byval(i32 %x, ptr noundef byval(%struct.libcS) align 8 %y ; ABI-NEXT: [[INDIRECTALLOCA:%.*]] = alloca [[STRUCT_LIBCS:%.*]], align 8 ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[I32_LIBCS_BYVAL_VARARG:%.*]], align 16 ; ABI-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[INDIRECTALLOCA]], ptr [[Y:%.*]], i64 24, i1 false) -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[I32_LIBCS_BYVAL_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[X:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[I32_LIBCS_BYVAL_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 ; ABI-NEXT: store ptr [[INDIRECTALLOCA]], ptr [[TMP1]], align 4 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -66,13 +66,13 @@ define void @libcS_i32_byval(ptr byval(%struct.libcS) align 8 %x, i32 %y) { ; ABI-NEXT: [[INDIRECTALLOCA:%.*]] = alloca [[STRUCT_LIBCS:%.*]], align 8 ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[LIBCS_I32_BYVAL_VARARG:%.*]], align 16 ; ABI-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[INDIRECTALLOCA]], ptr [[X:%.*]], i64 24, i1 false) -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[LIBCS_I32_BYVAL_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store ptr [[INDIRECTALLOCA]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[LIBCS_I32_BYVAL_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 ; ABI-NEXT: store i32 [[Y:%.*]], ptr [[TMP1]], align 4 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -90,11 +90,11 @@ define void @pass_byref(ptr byref(i32) %b) { ; ABI-LABEL: @pass_byref( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_BYREF_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_BYREF_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store ptr [[B:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -113,13 +113,13 @@ define void @i32_libcS_byref(i32 %x, ptr noundef byref(%struct.libcS) align 8 %y ; ABI-NEXT: [[INDIRECTALLOCA:%.*]] = alloca [[STRUCT_LIBCS:%.*]], align 8 ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[I32_LIBCS_BYREF_VARARG:%.*]], align 16 ; ABI-NEXT: store ptr [[Y:%.*]], ptr [[INDIRECTALLOCA]], align 4 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[I32_LIBCS_BYREF_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[X:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[I32_LIBCS_BYREF_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 ; ABI-NEXT: store ptr [[INDIRECTALLOCA]], ptr [[TMP1]], align 4 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -138,13 +138,13 @@ define void @libcS_i32_byref(ptr byref(%struct.libcS) align 8 %x, i32 %y) { ; ABI-NEXT: [[INDIRECTALLOCA:%.*]] = alloca [[STRUCT_LIBCS:%.*]], align 8 ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[LIBCS_I32_BYREF_VARARG:%.*]], align 16 ; ABI-NEXT: store ptr [[X:%.*]], ptr [[INDIRECTALLOCA]], align 4 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[LIBCS_I32_BYREF_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store ptr [[INDIRECTALLOCA]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[LIBCS_I32_BYREF_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 ; ABI-NEXT: store i32 [[Y:%.*]], ptr [[TMP1]], align 4 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: diff --git a/llvm/test/Transforms/ExpandVariadics/pass-indirect.ll b/llvm/test/Transforms/ExpandVariadics/pass-indirect.ll index 67cb2690e51b5..46e19040d86b5 100644 --- a/llvm/test/Transforms/ExpandVariadics/pass-indirect.ll +++ b/llvm/test/Transforms/ExpandVariadics/pass-indirect.ll @@ -19,13 +19,13 @@ define void @i32_libcS(i32 %x, %struct.libcS %y) { ; ABI-NEXT: [[INDIRECTALLOCA:%.*]] = alloca [[STRUCT_LIBCS:%.*]], align 8 ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[I32_LIBCS_VARARG:%.*]], align 16 ; ABI-NEXT: store [[STRUCT_LIBCS]] [[Y:%.*]], ptr [[INDIRECTALLOCA]], align 8 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[I32_LIBCS_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[X:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[I32_LIBCS_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 ; ABI-NEXT: store ptr [[INDIRECTALLOCA]], ptr [[TMP1]], align 4 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -44,13 +44,13 @@ define void @libcS_i32(%struct.libcS %x, i32 %y) { ; ABI-NEXT: [[INDIRECTALLOCA:%.*]] = alloca [[STRUCT_LIBCS:%.*]], align 8 ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[LIBCS_I32_VARARG:%.*]], align 16 ; ABI-NEXT: store [[STRUCT_LIBCS]] [[X:%.*]], ptr [[INDIRECTALLOCA]], align 8 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[LIBCS_I32_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store ptr [[INDIRECTALLOCA]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[LIBCS_I32_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 ; ABI-NEXT: store i32 [[Y:%.*]], ptr [[TMP1]], align 4 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: diff --git a/llvm/test/Transforms/ExpandVariadics/pass-integers.ll b/llvm/test/Transforms/ExpandVariadics/pass-integers.ll index 7a0c004fff2f7..cf527246673e8 100644 --- a/llvm/test/Transforms/ExpandVariadics/pass-integers.ll +++ b/llvm/test/Transforms/ExpandVariadics/pass-integers.ll @@ -17,9 +17,9 @@ define void @pass_nothing() { ; ABI-LABEL: @pass_nothing( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_NOTHING_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -36,11 +36,11 @@ define void @pass_s1(i8 %x) { ; ABI-LABEL: @pass_s1( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_S1_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_S1_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i8 [[X:%.*]], ptr [[TMP0]], align 1 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -57,11 +57,11 @@ define void @pass_s2(i16 %x) { ; ABI-LABEL: @pass_s2( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_S2_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_S2_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i16 [[X:%.*]], ptr [[TMP0]], align 2 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -78,11 +78,11 @@ define void @pass_s3(i32 %x) { ; ABI-LABEL: @pass_s3( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_S3_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_S3_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[X:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -99,11 +99,11 @@ define void @pass_s4(i64 %x) { ; ABI-LABEL: @pass_s4( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_S4_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_S4_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i64 [[X:%.*]], ptr [[TMP0]], align 8 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -120,11 +120,11 @@ define void @pass_s5(<4 x i32> %x) { ; ABI-LABEL: @pass_s5( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_S5_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_S5_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store <4 x i32> [[X:%.*]], ptr [[TMP0]], align 16 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -141,13 +141,13 @@ define void @pass_int_s1(i32 %i, i8 %x) { ; ABI-LABEL: @pass_int_s1( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_INT_S1_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 5, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_INT_S1_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[I:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[PASS_INT_S1_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 ; ABI-NEXT: store i8 [[X:%.*]], ptr [[TMP1]], align 1 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 5, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -164,13 +164,13 @@ define void @pass_int_s2(i32 %i, i16 %x) { ; ABI-LABEL: @pass_int_s2( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_INT_S2_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 6, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_INT_S2_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[I:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[PASS_INT_S2_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 ; ABI-NEXT: store i16 [[X:%.*]], ptr [[TMP1]], align 2 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 6, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -187,13 +187,13 @@ define void @pass_int_s3(i32 %i, i32 %x) { ; ABI-LABEL: @pass_int_s3( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_INT_S3_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_INT_S3_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[I:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[PASS_INT_S3_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 ; ABI-NEXT: store i32 [[X:%.*]], ptr [[TMP1]], align 4 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -210,13 +210,13 @@ define void @pass_int_s4(i32 %i, i64 %x) { ; ABI-LABEL: @pass_int_s4( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_INT_S4_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_INT_S4_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[I:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[PASS_INT_S4_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 2 ; ABI-NEXT: store i64 [[X:%.*]], ptr [[TMP1]], align 8 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -233,13 +233,13 @@ define void @pass_int_s5(i32 %i, <4 x i32> %x) { ; ABI-LABEL: @pass_int_s5( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_INT_S5_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_INT_S5_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[I:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[PASS_INT_S5_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 2 ; ABI-NEXT: store <4 x i32> [[X:%.*]], ptr [[TMP1]], align 16 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -256,7 +256,7 @@ define void @pass_asc(i8 %x1, i16 %x2, i32 %x3, i64 %x4, <4 x i32> %x5) { ; ABI-LABEL: @pass_asc( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_ASC_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 48, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_ASC_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i8 [[X1:%.*]], ptr [[TMP0]], align 1 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[PASS_ASC_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 2 @@ -268,7 +268,7 @@ define void @pass_asc(i8 %x1, i16 %x2, i32 %x3, i64 %x4, <4 x i32> %x5) { ; ABI-NEXT: [[TMP4:%.*]] = getelementptr inbounds nuw [[PASS_ASC_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 8 ; ABI-NEXT: store <4 x i32> [[X5:%.*]], ptr [[TMP4]], align 16 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 48, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -285,7 +285,7 @@ define void @pass_dsc(<4 x i32> %x0, i64 %x1, i32 %x2, i16 %x3, i8 %x4) { ; ABI-LABEL: @pass_dsc( ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_DSC_VARARG:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 33, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_DSC_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store <4 x i32> [[X0:%.*]], ptr [[TMP0]], align 16 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[PASS_DSC_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 @@ -297,7 +297,7 @@ define void @pass_dsc(<4 x i32> %x0, i64 %x1, i32 %x2, i16 %x3, i8 %x4) { ; ABI-NEXT: [[TMP4:%.*]] = getelementptr inbounds nuw [[PASS_DSC_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 5 ; ABI-NEXT: store i8 [[X4:%.*]], ptr [[TMP4]], align 1 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 33, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: ret void ; entry: @@ -316,7 +316,7 @@ define void @pass_multiple(i32 %i, i8 %x1, i16 %x2, i32 %x3, i64 %x4, <4 x i32> ; ABI-NEXT: entry: ; ABI-NEXT: [[VARARG_BUFFER:%.*]] = alloca [[PASS_MULTIPLE_VARARG:%.*]], align 16 ; ABI-NEXT: [[VARARG_BUFFER1:%.*]] = alloca [[PASS_MULTIPLE_VARARG_0:%.*]], align 16 -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER]]) ; ABI-NEXT: [[TMP0:%.*]] = getelementptr inbounds nuw [[PASS_MULTIPLE_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 0 ; ABI-NEXT: store i32 [[I:%.*]], ptr [[TMP0]], align 4 ; ABI-NEXT: [[TMP1:%.*]] = getelementptr inbounds nuw [[PASS_MULTIPLE_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 1 @@ -324,8 +324,8 @@ define void @pass_multiple(i32 %i, i8 %x1, i16 %x2, i32 %x3, i64 %x4, <4 x i32> ; ABI-NEXT: [[TMP2:%.*]] = getelementptr inbounds nuw [[PASS_MULTIPLE_VARARG]], ptr [[VARARG_BUFFER]], i32 0, i32 3 ; ABI-NEXT: store i64 [[X4:%.*]], ptr [[TMP2]], align 8 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[VARARG_BUFFER]]) -; ABI-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[VARARG_BUFFER1]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER]]) +; ABI-NEXT: call void @llvm.lifetime.start.p0(ptr [[VARARG_BUFFER1]]) ; ABI-NEXT: [[TMP3:%.*]] = getelementptr inbounds nuw [[PASS_MULTIPLE_VARARG_0]], ptr [[VARARG_BUFFER1]], i32 0, i32 0 ; ABI-NEXT: store i32 [[I]], ptr [[TMP3]], align 4 ; ABI-NEXT: [[TMP4:%.*]] = getelementptr inbounds nuw [[PASS_MULTIPLE_VARARG_0]], ptr [[VARARG_BUFFER1]], i32 0, i32 1 @@ -335,7 +335,7 @@ define void @pass_multiple(i32 %i, i8 %x1, i16 %x2, i32 %x3, i64 %x4, <4 x i32> ; ABI-NEXT: [[TMP6:%.*]] = getelementptr inbounds nuw [[PASS_MULTIPLE_VARARG_0]], ptr [[VARARG_BUFFER1]], i32 0, i32 5 ; ABI-NEXT: store <4 x i32> [[X5:%.*]], ptr [[TMP6]], align 16 ; ABI-NEXT: call void @sink(ptr [[VARARG_BUFFER1]]) -; ABI-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[VARARG_BUFFER1]]) +; ABI-NEXT: call void @llvm.lifetime.end.p0(ptr [[VARARG_BUFFER1]]) ; ABI-NEXT: ret void ; entry: diff --git a/llvm/test/Transforms/GVN/cond_br2.ll b/llvm/test/Transforms/GVN/cond_br2.ll index 420246713882e..ff80328ae6b48 100644 --- a/llvm/test/Transforms/GVN/cond_br2.ll +++ b/llvm/test/Transforms/GVN/cond_br2.ll @@ -17,7 +17,7 @@ define void @_Z4testv() #0 personality ptr @__gxx_personality_v0 { entry: %sv = alloca %"class.llvm::SmallVector", align 16 - call void @llvm.lifetime.start.p0(i64 64, ptr %sv) #1 + call void @llvm.lifetime.start.p0(ptr %sv) #1 %FirstEl.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SmallVector", ptr %sv, i64 0, i32 0, i32 0, i32 0, i32 0, i32 3 store ptr %FirstEl.i.i.i.i.i.i, ptr %sv, align 16, !tbaa !4 %EndX.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SmallVector", ptr %sv, i64 0, i32 0, i32 0, i32 0, i32 0, i32 1 @@ -86,7 +86,7 @@ if.then.i.i.i20: ; preds = %invoke.cont3 br label %_ZN4llvm11SmallVectorIiLj8EED1Ev.exit21 _ZN4llvm11SmallVectorIiLj8EED1Ev.exit21: ; preds = %invoke.cont3, %if.then.i.i.i20 - call void @llvm.lifetime.end.p0(i64 64, ptr %sv) #1 + call void @llvm.lifetime.end.p0(ptr %sv) #1 ret void lpad: ; preds = %if.end.i14, %if.end.i, %invoke.cont2 @@ -105,14 +105,14 @@ eh.resume: ; preds = %if.then.i.i.i, %lpa } ; Function Attrs: nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i32 @__gxx_personality_v0(...) declare void @_Z1gRN4llvm11SmallVectorIiLj8EEE(ptr) #2 ; Function Attrs: nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 declare void @_ZN4llvm15SmallVectorBase8grow_podEmm(ptr, i64, i64) #2 diff --git a/llvm/test/Transforms/GVN/lifetime-simple.ll b/llvm/test/Transforms/GVN/lifetime-simple.ll index 89ca127a47fda..bd35052680cef 100644 --- a/llvm/test/Transforms/GVN/lifetime-simple.ll +++ b/llvm/test/Transforms/GVN/lifetime-simple.ll @@ -6,18 +6,18 @@ define i8 @test() nounwind { ; CHECK-SAME: ) #[[ATTR0:[0-9]+]] { ; CHECK-NEXT: [[ENTRY:.*:]] ; CHECK-NEXT: [[P:%.*]] = alloca [32 x i8], align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) ; CHECK-NEXT: store i8 1, ptr [[P]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[P]]) ; CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[P]], align 1 ; CHECK-NEXT: ret i8 [[TMP0]] ; entry: %P = alloca [32 x i8] - call void @llvm.lifetime.start.p0(i64 32, ptr %P) + call void @llvm.lifetime.start.p0(ptr %P) %0 = load i8, ptr %P store i8 1, ptr %P - call void @llvm.lifetime.end.p0(i64 32, ptr %P) + call void @llvm.lifetime.end.p0(ptr %P) %1 = load i8, ptr %P ret i8 %1 } @@ -28,17 +28,17 @@ define void @assume_eq_arg(ptr %arg) { ; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr [[ALLOCA]], [[ARG]] ; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ALLOCA]]) ; CHECK-NEXT: store volatile i32 0, ptr [[ALLOCA]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ALLOCA]]) ; CHECK-NEXT: ret void ; %alloca = alloca i32 %cmp = icmp eq ptr %alloca, %arg call void @llvm.assume(i1 %cmp) - call void @llvm.lifetime.start.p0(i64 4, ptr %alloca) + call void @llvm.lifetime.start.p0(ptr %alloca) store volatile i32 0, ptr %alloca - call void @llvm.lifetime.end.p0(i64 4, ptr %alloca) + call void @llvm.lifetime.end.p0(ptr %alloca) ret void } @@ -47,17 +47,17 @@ define void @assume_eq_null() { ; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i32, align 4, addrspace(1) ; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr addrspace(1) [[ALLOCA]], null ; CHECK-NEXT: call void @llvm.assume(i1 [[CMP]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p1(i64 4, ptr addrspace(1) [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p1(ptr addrspace(1) [[ALLOCA]]) ; CHECK-NEXT: store volatile i32 0, ptr addrspace(1) null, align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p1(i64 4, ptr addrspace(1) [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p1(ptr addrspace(1) [[ALLOCA]]) ; CHECK-NEXT: ret void ; %alloca = alloca i32, addrspace(1) %cmp = icmp eq ptr addrspace(1) %alloca, null call void @llvm.assume(i1 %cmp) - call void @llvm.lifetime.start.p1(i64 4, ptr addrspace(1) %alloca) + call void @llvm.lifetime.start.p1(ptr addrspace(1) %alloca) store volatile i32 0, ptr addrspace(1) %alloca - call void @llvm.lifetime.end.p1(i64 4, ptr addrspace(1) %alloca) + call void @llvm.lifetime.end.p1(ptr addrspace(1) %alloca) ret void } @@ -67,9 +67,9 @@ define void @dom_eq_null() { ; CHECK-NEXT: [[CMP:%.*]] = icmp eq ptr addrspace(1) [[ALLOCA]], null ; CHECK-NEXT: br i1 [[CMP]], label %[[IF:.*]], label %[[ELSE:.*]] ; CHECK: [[IF]]: -; CHECK-NEXT: call void @llvm.lifetime.start.p1(i64 4, ptr addrspace(1) [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p1(ptr addrspace(1) [[ALLOCA]]) ; CHECK-NEXT: store volatile i32 0, ptr addrspace(1) null, align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p1(i64 4, ptr addrspace(1) [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p1(ptr addrspace(1) [[ALLOCA]]) ; CHECK-NEXT: ret void ; CHECK: [[ELSE]]: ; CHECK-NEXT: ret void @@ -79,14 +79,14 @@ define void @dom_eq_null() { br i1 %cmp, label %if, label %else if: - call void @llvm.lifetime.start.p1(i64 4, ptr addrspace(1) %alloca) + call void @llvm.lifetime.start.p1(ptr addrspace(1) %alloca) store volatile i32 0, ptr addrspace(1) %alloca - call void @llvm.lifetime.end.p1(i64 4, ptr addrspace(1) %alloca) + call void @llvm.lifetime.end.p1(ptr addrspace(1) %alloca) ret void else: ret void } -declare void @llvm.lifetime.start.p0(i64 %S, ptr nocapture %P) readonly -declare void @llvm.lifetime.end.p0(i64 %S, ptr nocapture %P) +declare void @llvm.lifetime.start.p0(ptr nocapture %P) readonly +declare void @llvm.lifetime.end.p0(ptr nocapture %P) diff --git a/llvm/test/Transforms/GVN/opt-remarks.ll b/llvm/test/Transforms/GVN/opt-remarks.ll index 87cd54dd566b9..a5c3cb5c55925 100644 --- a/llvm/test/Transforms/GVN/opt-remarks.ll +++ b/llvm/test/Transforms/GVN/opt-remarks.ll @@ -109,9 +109,9 @@ entry: define i8 @lifetime_end(i8 %val) { %p = alloca [32 x i8] - call void @llvm.lifetime.start.p0(i64 32, ptr %p) + call void @llvm.lifetime.start.p0(ptr %p) store i8 %val, ptr %p - call void @llvm.lifetime.end.p0(i64 32, ptr %p) + call void @llvm.lifetime.end.p0(ptr %p) %1 = load i8, ptr %p ret i8 %1 } diff --git a/llvm/test/Transforms/GVN/vscale.ll b/llvm/test/Transforms/GVN/vscale.ll index 5d6c55990a855..b358df54750d8 100644 --- a/llvm/test/Transforms/GVN/vscale.ll +++ b/llvm/test/Transforms/GVN/vscale.ll @@ -696,7 +696,7 @@ define { , , , , , , }, align 16 -; MDEP-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull [[REF_TMP]]) +; MDEP-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[REF_TMP]]) ; MDEP-NEXT: [[A_ELT:%.*]] = extractvalue { , , , } [[A:%.*]], 0 ; MDEP-NEXT: store [[A_ELT]], ptr [[REF_TMP]], align 16 ; MDEP-NEXT: [[TMP0:%.*]] = call i64 @llvm.vscale.i64() @@ -720,13 +720,13 @@ define { , , , , , , } [[TMP7]], [[TMP8]], 2 ; MDEP-NEXT: [[TMP10:%.*]] = bitcast [[A_ELT6]] to ; MDEP-NEXT: [[TMP11:%.*]] = insertvalue { , , , } [[TMP9]], [[TMP10]], 3 -; MDEP-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull [[REF_TMP]]) +; MDEP-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[REF_TMP]]) ; MDEP-NEXT: ret { , , , } [[TMP11]] ; ; MSSA-LABEL: @bigexample( ; MSSA-NEXT: entry: ; MSSA-NEXT: [[REF_TMP:%.*]] = alloca { , , , }, align 16 -; MSSA-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull [[REF_TMP]]) +; MSSA-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[REF_TMP]]) ; MSSA-NEXT: [[A_ELT:%.*]] = extractvalue { , , , } [[A:%.*]], 0 ; MSSA-NEXT: store [[A_ELT]], ptr [[REF_TMP]], align 16 ; MSSA-NEXT: [[TMP0:%.*]] = call i64 @llvm.vscale.i64() @@ -750,12 +750,12 @@ define { , , , , , , } [[TMP5]], [[DOTUNPACK10]], 2 ; MSSA-NEXT: [[DOTUNPACK12:%.*]] = load , ptr [[REF_TMP_REPACK5]], align 16 ; MSSA-NEXT: [[TMP7:%.*]] = insertvalue { , , , } [[TMP6]], [[DOTUNPACK12]], 3 -; MSSA-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull [[REF_TMP]]) +; MSSA-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[REF_TMP]]) ; MSSA-NEXT: ret { , , , } [[TMP7]] ; entry: %ref.tmp = alloca { , , , }, align 16 - call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %ref.tmp) + call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp) %a.elt = extractvalue { , , , } %a, 0 store %a.elt, ptr %ref.tmp, align 16 %0 = call i64 @llvm.vscale.i64() @@ -790,7 +790,7 @@ entry: %.elt11 = getelementptr inbounds i8, ptr %ref.tmp, i64 %14 %.unpack12 = load , ptr %.elt11, align 16 %15 = insertvalue { , , , } %12, %.unpack12, 3 - call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %ref.tmp) + call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp) ret { , , , } %15 } diff --git a/llvm/test/Transforms/GVNHoist/pr29034.ll b/llvm/test/Transforms/GVNHoist/pr29034.ll index f5378eacac3c6..a5294c52a87bd 100644 --- a/llvm/test/Transforms/GVNHoist/pr29034.ll +++ b/llvm/test/Transforms/GVNHoist/pr29034.ll @@ -37,7 +37,7 @@ define void @music_task(ptr nocapture readnone %p) local_unnamed_addr { entry: %mapi = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %mapi) + call void @llvm.lifetime.start.p0(ptr %mapi) store ptr null, ptr %mapi, align 8, !tbaa !1 %call = call i32 @music_decoder_init(ptr nonnull %mapi) br label %while.cond @@ -99,7 +99,7 @@ while.cond2.backedge: ; preds = %sw.default, %sw.bb1 br label %while.cond2 } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare i32 @music_decoder_init(ptr) declare i32 @music_play_api(ptr, i32, i32, i32, ptr) declare i32 @printf(ptr nocapture readonly, ...) diff --git a/llvm/test/Transforms/GVNSink/lifetime.ll b/llvm/test/Transforms/GVNSink/lifetime.ll index 1a8a69bb0986e..f8731e54bb846 100644 --- a/llvm/test/Transforms/GVNSink/lifetime.ll +++ b/llvm/test/Transforms/GVNSink/lifetime.ll @@ -9,34 +9,34 @@ define void @test_cant_sink(i1 %c) { ; CHECK-SAME: i1 [[C:%.*]]) { ; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[B:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B]]) ; CHECK-NEXT: br i1 [[C]], label %[[IF:.*]], label %[[ELSE:.*]] ; CHECK: [[IF]]: ; CHECK-NEXT: store i64 1, ptr [[A]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: br label %[[JOIN:.*]] ; CHECK: [[ELSE]]: ; CHECK-NEXT: store i64 1, ptr [[B]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B]]) ; CHECK-NEXT: br label %[[JOIN]] ; CHECK: [[JOIN]]: ; CHECK-NEXT: ret void ; %a = alloca i8 %b = alloca i8 - call void @llvm.lifetime.start(i64 1, ptr %a) - call void @llvm.lifetime.start(i64 1, ptr %b) + call void @llvm.lifetime.start(ptr %a) + call void @llvm.lifetime.start(ptr %b) br i1 %c, label %if, label %else if: store i64 1, ptr %a - call void @llvm.lifetime.end(i64 1, ptr %a) + call void @llvm.lifetime.end(ptr %a) br label %join else: store i64 1, ptr %b - call void @llvm.lifetime.end(i64 1, ptr %b) + call void @llvm.lifetime.end(ptr %b) br label %join join: @@ -47,7 +47,7 @@ define void @test_can_sink(i1 %c) { ; CHECK-LABEL: define void @test_can_sink( ; CHECK-SAME: i1 [[C:%.*]]) { ; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: br i1 [[C]], label %[[IF:.*]], label %[[ELSE:.*]] ; CHECK: [[IF]]: ; CHECK-NEXT: br label %[[JOIN:.*]] @@ -55,21 +55,21 @@ define void @test_can_sink(i1 %c) { ; CHECK-NEXT: br label %[[JOIN]] ; CHECK: [[JOIN]]: ; CHECK-NEXT: store i64 1, ptr [[A]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %a = alloca i8 - call void @llvm.lifetime.start(i64 1, ptr %a) + call void @llvm.lifetime.start(ptr %a) br i1 %c, label %if, label %else if: store i64 1, ptr %a - call void @llvm.lifetime.end(i64 1, ptr %a) + call void @llvm.lifetime.end(ptr %a) br label %join else: store i64 1, ptr %a - call void @llvm.lifetime.end(i64 1, ptr %a) + call void @llvm.lifetime.end(ptr %a) br label %join join: diff --git a/llvm/test/Transforms/GlobalOpt/dead-store-status.ll b/llvm/test/Transforms/GlobalOpt/dead-store-status.ll index 9a8fbb8d65f0e..7cb3a9626ec05 100644 --- a/llvm/test/Transforms/GlobalOpt/dead-store-status.ll +++ b/llvm/test/Transforms/GlobalOpt/dead-store-status.ll @@ -24,17 +24,17 @@ entry: define i16 @bar() local_unnamed_addr #1 { entry: %local2 = alloca [1 x i16], align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %local2) + call void @llvm.lifetime.start.p0(ptr nonnull %local2) store ptr %local2, ptr @global, align 1 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %local2) + call void @llvm.lifetime.end.p0(ptr nonnull %local2) ret i16 undef } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 attributes #0 = { nofree noinline norecurse nounwind writeonly } attributes #1 = { noinline nounwind writeonly } diff --git a/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-1.ll b/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-1.ll index e5bab0c02222a..28782d5f802d0 100644 --- a/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-1.ll +++ b/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-1.ll @@ -1,8 +1,8 @@ ; RUN: opt -S -passes=hotcoldsplit -hotcoldsplit-threshold=0 < %s 2>&1 | FileCheck %s -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @use(ptr) @@ -18,17 +18,17 @@ entry: normalPath: ; These two uses of stack slots are non-overlapping. Based on this alone, ; the stack slots could be merged. - call void @llvm.lifetime.start.p0(i64 1, ptr %local1) + call void @llvm.lifetime.start.p0(ptr %local1) call void @use(ptr %local1) - call void @llvm.lifetime.end.p0(i64 1, ptr %local1) - call void @llvm.lifetime.start.p0(i64 1, ptr %local2) + call void @llvm.lifetime.end.p0(ptr %local1) + call void @llvm.lifetime.start.p0(ptr %local2) call void @use(ptr %local2) - call void @llvm.lifetime.end.p0(i64 1, ptr %local2) + call void @llvm.lifetime.end.p0(ptr %local2) ret void ; CHECK-LABEL: codeRepl: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr %local1) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr %local2) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %local1) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %local2) ; CHECK-NEXT: call i1 @foo.cold.1(ptr %local1, ptr %local2) ; CHECK-NEXT: br i1 @@ -36,19 +36,19 @@ outlinedPath: ; These two uses of stack slots are overlapping. This should prevent ; merging of stack slots. CodeExtractor must replicate the effects of ; these markers in the caller to inhibit stack coloring. - call void @llvm.lifetime.start.p0(i64 1, ptr %local1) - call void @llvm.lifetime.start.p0(i64 1, ptr %local2) + call void @llvm.lifetime.start.p0(ptr %local1) + call void @llvm.lifetime.start.p0(ptr %local2) call void @cold_use2(ptr %local1, ptr %local2) - call void @llvm.lifetime.end.p0(i64 1, ptr %local1) - call void @llvm.lifetime.end.p0(i64 1, ptr %local2) + call void @llvm.lifetime.end.p0(ptr %local1) + call void @llvm.lifetime.end.p0(ptr %local2) br i1 undef, label %outlinedPath2, label %outlinedPathExit outlinedPath2: ; These extra lifetime markers are used to test that we emit only one ; pair of guard markers in the caller per memory object. - call void @llvm.lifetime.start.p0(i64 1, ptr %local2) + call void @llvm.lifetime.start.p0(ptr %local2) call void @use(ptr %local2) - call void @llvm.lifetime.end.p0(i64 1, ptr %local2) + call void @llvm.lifetime.end.p0(ptr %local2) ret void outlinedPathExit: diff --git a/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-2.ll b/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-2.ll index e42db78c195bc..da7a9b8d7531b 100644 --- a/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-2.ll +++ b/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-2.ll @@ -1,9 +1,9 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -S -passes=hotcoldsplit -hotcoldsplit-threshold=0 < %s 2>&1 | FileCheck %s -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @cold_use(ptr) cold @@ -40,13 +40,13 @@ define void @only_lifetime_start_is_cold(i1 %arg) { ; CHECK-NEXT: [[LOCAL1:%.*]] = alloca i256, align 8 ; CHECK-NEXT: br i1 [[ARG:%.*]], label [[CODEREPL:%.*]], label [[NO_EXTRACT1:%.*]] ; CHECK: codeRepl: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[LOCAL1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[LOCAL1]]) ; CHECK-NEXT: [[TARGETBLOCK:%.*]] = call i1 @only_lifetime_start_is_cold.cold.1(ptr [[LOCAL1]], i1 [[ARG]]) #[[ATTR3:[0-9]+]] ; CHECK-NEXT: br i1 [[TARGETBLOCK]], label [[NO_EXTRACT1]], label [[EXIT:%.*]] ; CHECK: no-extract1: ; CHECK-NEXT: br label [[EXIT]] ; CHECK: exit: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[LOCAL1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[LOCAL1]]) ; CHECK-NEXT: ret void ; entry: @@ -55,7 +55,7 @@ entry: extract1: ; lt.start - call void @llvm.lifetime.start.p0(i64 1, ptr %local1) + call void @llvm.lifetime.start.p0(ptr %local1) call void @cold_use(ptr %local1) br i1 %arg, label %extract2, label %no-extract1 @@ -67,7 +67,7 @@ no-extract1: exit: ; lt.end - call void @llvm.lifetime.end.p0(i64 1, ptr %local1) + call void @llvm.lifetime.end.p0(ptr %local1) ret void } @@ -96,10 +96,10 @@ define void @only_lifetime_end_is_cold(i1 %arg) { ; CHECK-LABEL: @only_lifetime_end_is_cold( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[LOCAL1:%.*]] = alloca i256, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[LOCAL1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[LOCAL1]]) ; CHECK-NEXT: br i1 [[ARG:%.*]], label [[NO_EXTRACT1:%.*]], label [[CODEREPL:%.*]] ; CHECK: no-extract1: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[LOCAL1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[LOCAL1]]) ; CHECK-NEXT: br label [[EXIT:%.*]] ; CHECK: codeRepl: ; CHECK-NEXT: call void @only_lifetime_end_is_cold.cold.1(ptr [[LOCAL1]]) #[[ATTR3]] @@ -110,18 +110,18 @@ define void @only_lifetime_end_is_cold(i1 %arg) { entry: ; lt.start %local1 = alloca i256 - call void @llvm.lifetime.start.p0(i64 1, ptr %local1) + call void @llvm.lifetime.start.p0(ptr %local1) br i1 %arg, label %no-extract1, label %extract1 no-extract1: ; lt.end - call void @llvm.lifetime.end.p0(i64 1, ptr %local1) + call void @llvm.lifetime.end.p0(ptr %local1) br label %exit extract1: ; lt.end call void @cold_use(ptr %local1) - call void @llvm.lifetime.end.p0(i64 1, ptr %local1) + call void @llvm.lifetime.end.p0(ptr %local1) br label %exit exit: @@ -134,7 +134,7 @@ define void @do_not_lift_lifetime_end(i1 %arg) { ; CHECK-LABEL: @do_not_lift_lifetime_end( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[LOCAL1:%.*]] = alloca i256, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[LOCAL1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[LOCAL1]]) ; CHECK-NEXT: br label [[HEADER:%.*]] ; CHECK: header: ; CHECK-NEXT: call void @use(ptr [[LOCAL1]]) @@ -148,7 +148,7 @@ define void @do_not_lift_lifetime_end(i1 %arg) { entry: ; lt.start %local1 = alloca i256 - call void @llvm.lifetime.start.p0(i64 1, ptr %local1) + call void @llvm.lifetime.start.p0(ptr %local1) br label %header header: @@ -167,7 +167,7 @@ extract2: extract3: ; lt.end - call void @llvm.lifetime.end.p0(i64 1, ptr %local1) + call void @llvm.lifetime.end.p0(ptr %local1) br label %exit exit: diff --git a/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-3.ll b/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-3.ll index 26faaa326141f..b453c61b9aa88 100644 --- a/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-3.ll +++ b/llvm/test/Transforms/HotColdSplit/lifetime-markers-on-inputs-3.ll @@ -3,9 +3,9 @@ %type1 = type opaque %type2 = type opaque -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @use(ptr, ptr) @@ -23,16 +23,16 @@ normalPath: ret void ; CHECK-LABEL: codeRepl: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr %local1) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr %local2) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %local1) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %local2) ; CHECK-NEXT: call void @foo.cold.1(ptr %local1, ptr %local2 outlinedPath: - call void @llvm.lifetime.start.p0(i64 1, ptr %local1) - call void @llvm.lifetime.start.p0(i64 1, ptr %local2) + call void @llvm.lifetime.start.p0(ptr %local1) + call void @llvm.lifetime.start.p0(ptr %local2) call void @use2(ptr %local1, ptr %local2) - call void @llvm.lifetime.end.p0(i64 1, ptr %local1) - call void @llvm.lifetime.end.p0(i64 1, ptr %local2) + call void @llvm.lifetime.end.p0(ptr %local1) + call void @llvm.lifetime.end.p0(ptr %local2) br label %outlinedPathExit outlinedPathExit: diff --git a/llvm/test/Transforms/HotColdSplit/sink-multiple-bitcasts-of-allocas-pr42451.ll b/llvm/test/Transforms/HotColdSplit/sink-multiple-bitcasts-of-allocas-pr42451.ll index df7cb3c0874b0..80249fc64fb96 100644 --- a/llvm/test/Transforms/HotColdSplit/sink-multiple-bitcasts-of-allocas-pr42451.ll +++ b/llvm/test/Transforms/HotColdSplit/sink-multiple-bitcasts-of-allocas-pr42451.ll @@ -6,8 +6,8 @@ target triple = "x86_64-apple-macosx10.14.0" @c = common global i32 0, align 4 @h = common global i32 0, align 4 -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 +declare void @llvm.lifetime.end.p0(ptr nocapture) #0 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #1 declare ptr @m() @@ -27,15 +27,15 @@ bb: bb3: ; preds = %bb %i4 = call ptr @m() - call void @llvm.lifetime.start.p0(i64 20, ptr %.sroa.4.i) - call void @llvm.lifetime.start.p0(i64 6, ptr %.sroa.5.i) + call void @llvm.lifetime.start.p0(ptr %.sroa.4.i) + call void @llvm.lifetime.start.p0(ptr %.sroa.5.i) call void @llvm.memset.p0.i64(ptr align 2 %.sroa.4.i, i8 0, i64 20, i1 false) call void @llvm.memset.p0.i64(ptr align 8 %.sroa.5.i, i8 0, i64 6, i1 false) %i5 = load i32, ptr @c, align 4, !tbaa !4 %i6 = trunc i32 %i5 to i16 - call void @llvm.lifetime.end.p0(i64 20, ptr %.sroa.4.i) - call void @llvm.lifetime.end.p0(i64 6, ptr %.sroa.5.i) - call void @llvm.lifetime.start.p0(i64 6, ptr %.sroa.5.i) + call void @llvm.lifetime.end.p0(ptr %.sroa.4.i) + call void @llvm.lifetime.end.p0(ptr %.sroa.5.i) + call void @llvm.lifetime.start.p0(ptr %.sroa.5.i) call void @llvm.memset.p0.i64(ptr align 1 %.sroa.5.i, i8 3, i64 6, i1 false) br label %bb7 @@ -47,7 +47,7 @@ bb7: ; preds = %bb7, %bb3 br i1 %i10, label %bb7, label %l.exit l.exit: ; preds = %bb7 - call void @llvm.lifetime.end.p0(i64 6, ptr %.sroa.5.i) + call void @llvm.lifetime.end.p0(ptr %.sroa.5.i) br label %bb11 bb11: ; preds = %l.exit, %bb diff --git a/llvm/test/Transforms/IROutliner/alloca-addrspace-1.ll b/llvm/test/Transforms/IROutliner/alloca-addrspace-1.ll index a096e6d38e4ff..73db71b6bafc9 100644 --- a/llvm/test/Transforms/IROutliner/alloca-addrspace-1.ll +++ b/llvm/test/Transforms/IROutliner/alloca-addrspace-1.ll @@ -20,14 +20,14 @@ declare i32 @llvm.foo(i32, i32) ; CHECK-NEXT: bb: ; CHECK-NEXT: [[I3_LOC:%.*]] = alloca i32, align 4, addrspace(5) ; CHECK-NEXT: [[I1_LOC:%.*]] = alloca i32, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 -1, ptr addrspace(5) [[I1_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[I1_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i32 0, i32 1, ptr addrspace(5) [[I1_LOC]]) ; CHECK-NEXT: [[I1_RELOAD:%.*]] = load i32, ptr addrspace(5) [[I1_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 -1, ptr addrspace(5) [[I1_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 -1, ptr addrspace(5) [[I3_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[I1_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[I3_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i32 [[I1_RELOAD]], i32 0, ptr addrspace(5) [[I3_LOC]]) ; CHECK-NEXT: [[I3_RELOAD:%.*]] = load i32, ptr addrspace(5) [[I3_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 -1, ptr addrspace(5) [[I3_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[I3_LOC]]) ; CHECK-NEXT: [[I4:%.*]] = tail call i32 @llvm.foo(i32 [[I3_RELOAD]], i32 0) ; CHECK-NEXT: ret i32 0 ; diff --git a/llvm/test/Transforms/IROutliner/alloca-addrspace.ll b/llvm/test/Transforms/IROutliner/alloca-addrspace.ll index e8701500b502d..ed7644426ffc0 100644 --- a/llvm/test/Transforms/IROutliner/alloca-addrspace.ll +++ b/llvm/test/Transforms/IROutliner/alloca-addrspace.ll @@ -18,10 +18,10 @@ declare i32 @func(i32, i32) ; CHECK-LABEL: define {{[^@]+}}@outlineable() { ; CHECK-NEXT: bb: ; CHECK-NEXT: [[I1_LOC:%.*]] = alloca i32, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 -1, ptr addrspace(5) [[I1_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[I1_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i32 0, i32 1, ptr addrspace(5) [[I1_LOC]], i32 0) ; CHECK-NEXT: [[I1_RELOAD:%.*]] = load i32, ptr addrspace(5) [[I1_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 -1, ptr addrspace(5) [[I1_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[I1_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i32 [[I1_RELOAD]], i32 0, ptr addrspace(5) null, i32 -1) ; CHECK-NEXT: ret i32 0 ; diff --git a/llvm/test/Transforms/IROutliner/different-intrinsics.ll b/llvm/test/Transforms/IROutliner/different-intrinsics.ll index 5fb22c3101d82..f0e43bb533fdc 100644 --- a/llvm/test/Transforms/IROutliner/different-intrinsics.ll +++ b/llvm/test/Transforms/IROutliner/different-intrinsics.ll @@ -31,18 +31,18 @@ entry: ; CHECK-NEXT: [[B_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[A_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[RET_LOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(ptr [[S:%.*]], ptr [[D:%.*]], ptr [[A_LOC]], ptr [[B_LOC]]) ; CHECK-NEXT: [[A_RELOAD:%.*]] = load i8, ptr [[A_LOC]], align 1 ; CHECK-NEXT: [[B_RELOAD:%.*]] = load i8, ptr [[B_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[D]], ptr [[S]], i64 [[LEN:%.*]], i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i8 [[A_RELOAD]], i8 [[B_RELOAD]], ptr [[S]], ptr [[RET_LOC]]) ; CHECK-NEXT: [[RET_RELOAD:%.*]] = load i8, ptr [[RET_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: ret i8 [[RET_RELOAD]] ; ; @@ -51,18 +51,18 @@ entry: ; CHECK-NEXT: [[B_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[A_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[RET_LOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(ptr [[S:%.*]], ptr [[D:%.*]], ptr [[A_LOC]], ptr [[B_LOC]]) ; CHECK-NEXT: [[A_RELOAD:%.*]] = load i8, ptr [[A_LOC]], align 1 ; CHECK-NEXT: [[B_RELOAD:%.*]] = load i8, ptr [[B_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @llvm.memmove.p0.p0.i64(ptr [[D]], ptr [[S]], i64 [[LEN:%.*]], i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i8 [[A_RELOAD]], i8 [[B_RELOAD]], ptr [[S]], ptr [[RET_LOC]]) ; CHECK-NEXT: [[RET_RELOAD:%.*]] = load i8, ptr [[RET_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: ret i8 [[RET_RELOAD]] ; ; diff --git a/llvm/test/Transforms/IROutliner/different-order-phi-merges.ll b/llvm/test/Transforms/IROutliner/different-order-phi-merges.ll index baf27edfca3d9..6730d1bda0f82 100644 --- a/llvm/test/Transforms/IROutliner/different-order-phi-merges.ll +++ b/llvm/test/Transforms/IROutliner/different-order-phi-merges.ll @@ -46,10 +46,10 @@ bb5: ; CHECK-LABEL: @f1( ; CHECK-NEXT: bb1: ; CHECK-NEXT: [[PHINODE_CE_LOC:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[PHINODE_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PHINODE_CE_LOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = call i1 @outlined_ir_func_0(ptr [[PHINODE_CE_LOC]], i32 0) ; CHECK-NEXT: [[PHINODE_CE_RELOAD:%.*]] = load i32, ptr [[PHINODE_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[PHINODE_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PHINODE_CE_LOC]]) ; CHECK-NEXT: br i1 [[TMP0]], label [[BB5:%.*]], label [[BB1_AFTER_OUTLINE:%.*]] ; CHECK: bb1_after_outline: ; CHECK-NEXT: ret void @@ -61,10 +61,10 @@ bb5: ; CHECK-LABEL: @f2( ; CHECK-NEXT: bb1: ; CHECK-NEXT: [[PHINODE_CE_LOC:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[PHINODE_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PHINODE_CE_LOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = call i1 @outlined_ir_func_0(ptr [[PHINODE_CE_LOC]], i32 1) ; CHECK-NEXT: [[PHINODE_CE_RELOAD:%.*]] = load i32, ptr [[PHINODE_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[PHINODE_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PHINODE_CE_LOC]]) ; CHECK-NEXT: br i1 [[TMP0]], label [[BB5:%.*]], label [[BB1_AFTER_OUTLINE:%.*]] ; CHECK: bb1_after_outline: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IROutliner/duplicate-merging-phis.ll b/llvm/test/Transforms/IROutliner/duplicate-merging-phis.ll index 534efc38e3971..53d52f51f7ad2 100644 --- a/llvm/test/Transforms/IROutliner/duplicate-merging-phis.ll +++ b/llvm/test/Transforms/IROutliner/duplicate-merging-phis.ll @@ -49,13 +49,13 @@ bb5: ; CHECK-NEXT: bb1: ; CHECK-NEXT: [[PHINODE1_CE_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[PHINODE_CE_LOC:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[PHINODE_CE_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[PHINODE1_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PHINODE_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PHINODE1_CE_LOC]]) ; CHECK-NEXT: [[TARGETBLOCK:%.*]] = call i1 @outlined_ir_func_0(ptr [[PHINODE_CE_LOC]], ptr [[PHINODE1_CE_LOC]]) ; CHECK-NEXT: [[PHINODE_CE_RELOAD:%.*]] = load i32, ptr [[PHINODE_CE_LOC]], align 4 ; CHECK-NEXT: [[PHINODE1_CE_RELOAD:%.*]] = load i32, ptr [[PHINODE1_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[PHINODE_CE_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[PHINODE1_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PHINODE_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PHINODE1_CE_LOC]]) ; CHECK-NEXT: br i1 [[TARGETBLOCK]], label [[BB5:%.*]], label [[BB1_AFTER_OUTLINE:%.*]] ; CHECK: bb1_after_outline: ; CHECK-NEXT: ret void @@ -69,13 +69,13 @@ bb5: ; CHECK-NEXT: bb1: ; CHECK-NEXT: [[PHINODE1_CE_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[PHINODE_CE_LOC:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[PHINODE_CE_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[PHINODE1_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PHINODE_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PHINODE1_CE_LOC]]) ; CHECK-NEXT: [[TARGETBLOCK:%.*]] = call i1 @outlined_ir_func_0(ptr [[PHINODE_CE_LOC]], ptr [[PHINODE1_CE_LOC]]) ; CHECK-NEXT: [[PHINODE_CE_RELOAD:%.*]] = load i32, ptr [[PHINODE_CE_LOC]], align 4 ; CHECK-NEXT: [[PHINODE1_CE_RELOAD:%.*]] = load i32, ptr [[PHINODE1_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[PHINODE_CE_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[PHINODE1_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PHINODE_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PHINODE1_CE_LOC]]) ; CHECK-NEXT: br i1 [[TARGETBLOCK]], label [[BB5:%.*]], label [[BB1_AFTER_OUTLINE:%.*]] ; CHECK: bb1_after_outline: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IROutliner/exit-block-phi-node-value-attribution.ll b/llvm/test/Transforms/IROutliner/exit-block-phi-node-value-attribution.ll index 3d3dbffcc243a..04ec9284ff5b6 100644 --- a/llvm/test/Transforms/IROutliner/exit-block-phi-node-value-attribution.ll +++ b/llvm/test/Transforms/IROutliner/exit-block-phi-node-value-attribution.ll @@ -42,19 +42,19 @@ bb5: ; CHECK-NEXT: bb1: ; CHECK-NEXT: [[PHINODE_CE_LOC1:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[PHINODE_CE_LOC:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[PHINODE_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PHINODE_CE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[PHINODE_CE_LOC]], i32 0) ; CHECK-NEXT: [[PHINODE_CE_RELOAD:%.*]] = load i32, ptr [[PHINODE_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[PHINODE_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PHINODE_CE_LOC]]) ; CHECK-NEXT: br label [[BB5:%.*]] ; CHECK: placeholder: ; CHECK-NEXT: [[A:%.*]] = sub i32 5, 4 ; CHECK-NEXT: br label [[BB5]] ; CHECK: bb3: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[PHINODE_CE_LOC1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PHINODE_CE_LOC1]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[PHINODE_CE_LOC1]], i32 1) ; CHECK-NEXT: [[PHINODE_CE_RELOAD2:%.*]] = load i32, ptr [[PHINODE_CE_LOC1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[PHINODE_CE_LOC1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PHINODE_CE_LOC1]]) ; CHECK-NEXT: br label [[BB5]] ; CHECK: placeholder1: ; CHECK-NEXT: [[B:%.*]] = add i32 5, 4 diff --git a/llvm/test/Transforms/IROutliner/exit-phi-nodes-incoming-value-constant-argument.ll b/llvm/test/Transforms/IROutliner/exit-phi-nodes-incoming-value-constant-argument.ll index cd60f936a9ed5..0e82217708d14 100644 --- a/llvm/test/Transforms/IROutliner/exit-phi-nodes-incoming-value-constant-argument.ll +++ b/llvm/test/Transforms/IROutliner/exit-phi-nodes-incoming-value-constant-argument.ll @@ -72,10 +72,10 @@ bb5: ; CHECK-NEXT: br label [[BB5:%.*]] ; CHECK: bb2: ; CHECK-NEXT: [[A:%.*]] = sub i32 [[TMP0:%.*]], [[TMP1:%.*]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[F_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[F_CE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i32 [[TMP0]], i32 [[TMP1]], i32 1, ptr [[F_CE_LOC]], i32 0) ; CHECK-NEXT: [[F_CE_RELOAD:%.*]] = load i32, ptr [[F_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[F_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[F_CE_LOC]]) ; CHECK-NEXT: br label [[BB5]] ; CHECK: bb4: ; CHECK-NEXT: [[E:%.*]] = add i32 [[TMP0]], [[TMP1]] diff --git a/llvm/test/Transforms/IROutliner/extraction.ll b/llvm/test/Transforms/IROutliner/extraction.ll index 1eca4ea2f135e..77f904dd70861 100644 --- a/llvm/test/Transforms/IROutliner/extraction.ll +++ b/llvm/test/Transforms/IROutliner/extraction.ll @@ -59,13 +59,13 @@ define void @extract_outs1() #0 { ; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[OUTPUT:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[RESULT:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[ADD_LOC]], ptr [[DOTLOC]]) ; CHECK-NEXT: [[ADD_RELOAD:%.*]] = load i32, ptr [[ADD_LOC]], align 4 ; CHECK-NEXT: [[DOTRELOAD:%.*]] = load i32, ptr [[DOTLOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[OUTPUT]], align 4 ; CHECK-NEXT: call void @outlined_ir_func_2(i32 [[DOTRELOAD]], i32 [[ADD_RELOAD]], ptr [[RESULT]]) ; CHECK-NEXT: ret void @@ -99,13 +99,13 @@ define void @extract_outs2() #0 { ; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[OUTPUT:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[RESULT:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[ADD_LOC]], ptr [[DOTLOC]]) ; CHECK-NEXT: [[ADD_RELOAD:%.*]] = load i32, ptr [[ADD_LOC]], align 4 ; CHECK-NEXT: [[DOTRELOAD:%.*]] = load i32, ptr [[DOTLOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: call void @outlined_ir_func_2(i32 [[DOTRELOAD]], i32 [[ADD_RELOAD]], ptr [[RESULT]]) ; CHECK-NEXT: ret void ; diff --git a/llvm/test/Transforms/IROutliner/gvn-output-set-overload.ll b/llvm/test/Transforms/IROutliner/gvn-output-set-overload.ll index 1184b4a3d64fd..54f013c5652e6 100644 --- a/llvm/test/Transforms/IROutliner/gvn-output-set-overload.ll +++ b/llvm/test/Transforms/IROutliner/gvn-output-set-overload.ll @@ -44,10 +44,10 @@ next: ; CHECK-NEXT: entry: ; CHECK-NEXT: [[DOTCE_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: [[TMP1:%.*]] = call i1 @outlined_ir_func_0(ptr [[TMP0]], ptr [[DOTCE_LOC]], ptr null, i32 0) ; CHECK-NEXT: [[DOTCE_RELOAD:%.*]] = load i32, ptr [[DOTCE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: br i1 [[TMP1]], label [[FIRST:%.*]], label [[NEXT:%.*]] ; CHECK: first: ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[DOTCE_RELOAD]], [[ENTRY:%.*]] ] @@ -61,13 +61,13 @@ next: ; CHECK-NEXT: [[E_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[C_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[C_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[C_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[E_LOC]]) ; CHECK-NEXT: [[TMP1:%.*]] = call i1 @outlined_ir_func_0(ptr [[TMP0]], ptr [[C_LOC]], ptr [[E_LOC]], i32 1) ; CHECK-NEXT: [[C_RELOAD:%.*]] = load i32, ptr [[C_LOC]], align 4 ; CHECK-NEXT: [[E_RELOAD:%.*]] = load i32, ptr [[E_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[C_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[C_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[E_LOC]]) ; CHECK-NEXT: br i1 [[TMP1]], label [[FIRST:%.*]], label [[NEXT:%.*]] ; CHECK: first: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IROutliner/gvn-phi-debug.ll b/llvm/test/Transforms/IROutliner/gvn-phi-debug.ll index 951466c359403..0c899dcd0339f 100644 --- a/llvm/test/Transforms/IROutliner/gvn-phi-debug.ll +++ b/llvm/test/Transforms/IROutliner/gvn-phi-debug.ll @@ -8,10 +8,10 @@ define i32 @r() { ; CHECK-LABEL: define i32 @r() { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[DOTLOC:%.*]] = alloca ptr, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = call i1 @outlined_ir_func_0(ptr [[DOTLOC]], i32 0) ; CHECK-NEXT: [[DOTRELOAD:%.*]] = load ptr, ptr [[DOTLOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: br i1 [[TMP0]], label [[IF_END8:%.*]], label [[ENTRY_AFTER_OUTLINE:%.*]] ; CHECK: entry_after_outline: ; CHECK-NEXT: [[CALL7:%.*]] = call i32 [[DOTRELOAD]]() @@ -91,10 +91,10 @@ define i32 @w() !dbg !8 { ; CHECK-SAME: ) !dbg [[DBG8:![0-9]+]] { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[RETVAL_1_CE_LOC:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RETVAL_1_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RETVAL_1_CE_LOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = call i1 @outlined_ir_func_0(ptr [[RETVAL_1_CE_LOC]], i32 1), !dbg [[DBG11:![0-9]+]] ; CHECK-NEXT: [[RETVAL_1_CE_RELOAD:%.*]] = load i32, ptr [[RETVAL_1_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RETVAL_1_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RETVAL_1_CE_LOC]]) ; CHECK-NEXT: br i1 [[TMP0]], label [[CLEANUP10:%.*]], label [[ENTRY_AFTER_OUTLINE:%.*]] ; CHECK: entry_after_outline: ; CHECK-NEXT: [[CALL8:%.*]] = call i32 @llvm.bswap.i32(i32 0) diff --git a/llvm/test/Transforms/IROutliner/illegal-assumes.ll b/llvm/test/Transforms/IROutliner/illegal-assumes.ll index d863fe7a29903..c0c4e1aa42e34 100644 --- a/llvm/test/Transforms/IROutliner/illegal-assumes.ll +++ b/llvm/test/Transforms/IROutliner/illegal-assumes.ll @@ -12,10 +12,10 @@ define void @outline_assumes() { ; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[C:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[D:%.*]] = alloca i1, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DL_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_4(i1 true, ptr [[D]], ptr [[DL_LOC]]) ; CHECK-NEXT: [[DL_RELOAD:%.*]] = load i1, ptr [[DL_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DL_LOC]]) ; CHECK-NEXT: [[SPLIT_INST:%.*]] = sub i1 [[DL_RELOAD]], [[DL_RELOAD]] ; CHECK-NEXT: call void @outlined_ir_func_1(ptr [[A]], ptr [[B]], ptr [[C]]) ; CHECK-NEXT: call void @llvm.assume(i1 [[DL_RELOAD]]) @@ -48,10 +48,10 @@ define void @outline_assumes2() { ; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[C:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[D:%.*]] = alloca i1, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DL_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_4(i1 false, ptr [[D]], ptr [[DL_LOC]]) ; CHECK-NEXT: [[DL_RELOAD:%.*]] = load i1, ptr [[DL_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DL_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(ptr [[A]], ptr [[B]], ptr [[C]]) ; CHECK-NEXT: call void @llvm.assume(i1 [[DL_RELOAD]]) ; CHECK-NEXT: call void @outlined_ir_func_2(ptr [[A]], ptr [[B]], ptr [[C]]) @@ -82,10 +82,10 @@ define void @outline_assumes3() { ; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[C:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[D:%.*]] = alloca i1, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DL_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i1 true, ptr [[D]], ptr [[A]], ptr [[B]], ptr [[C]], ptr [[DL_LOC]]) ; CHECK-NEXT: [[DL_RELOAD:%.*]] = load i1, ptr [[DL_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DL_LOC]]) ; CHECK-NEXT: call void @llvm.assume(i1 [[DL_RELOAD]]) ; CHECK-NEXT: call void @outlined_ir_func_3(ptr [[A]]) ; CHECK-NEXT: ret void @@ -115,10 +115,10 @@ define void @outline_assumes4() { ; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[C:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[D:%.*]] = alloca i1, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DL_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i1 false, ptr [[D]], ptr [[A]], ptr [[B]], ptr [[C]], ptr [[DL_LOC]]) ; CHECK-NEXT: [[DL_RELOAD:%.*]] = load i1, ptr [[DL_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DL_LOC]]) ; CHECK-NEXT: call void @llvm.assume(i1 [[DL_RELOAD]]) ; CHECK-NEXT: call void @outlined_ir_func_3(ptr [[A]]) ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IROutliner/illegal-memcpy.ll b/llvm/test/Transforms/IROutliner/illegal-memcpy.ll index 20e009aa32721..523fd23230461 100644 --- a/llvm/test/Transforms/IROutliner/illegal-memcpy.ll +++ b/llvm/test/Transforms/IROutliner/illegal-memcpy.ll @@ -12,18 +12,18 @@ define i8 @function1(ptr noalias %s, ptr noalias %d, i64 %len) { ; CHECK-NEXT: [[B_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[A_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[RET_LOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(ptr [[S:%.*]], ptr [[D:%.*]], ptr [[A_LOC]], ptr [[B_LOC]]) ; CHECK-NEXT: [[A_RELOAD:%.*]] = load i8, ptr [[A_LOC]], align 1 ; CHECK-NEXT: [[B_RELOAD:%.*]] = load i8, ptr [[B_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[D]], ptr [[S]], i64 [[LEN:%.*]], i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i8 [[A_RELOAD]], i8 [[B_RELOAD]], ptr [[S]], ptr [[RET_LOC]]) ; CHECK-NEXT: [[RET_RELOAD:%.*]] = load i8, ptr [[RET_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: ret i8 [[RET_RELOAD]] ; entry: @@ -41,18 +41,18 @@ define i8 @function2(ptr noalias %s, ptr noalias %d, i64 %len) { ; CHECK-NEXT: [[B_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[A_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[RET_LOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(ptr [[S:%.*]], ptr [[D:%.*]], ptr [[A_LOC]], ptr [[B_LOC]]) ; CHECK-NEXT: [[A_RELOAD:%.*]] = load i8, ptr [[A_LOC]], align 1 ; CHECK-NEXT: [[B_RELOAD:%.*]] = load i8, ptr [[B_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[D]], ptr [[S]], i64 [[LEN:%.*]], i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i8 [[A_RELOAD]], i8 [[B_RELOAD]], ptr [[S]], ptr [[RET_LOC]]) ; CHECK-NEXT: [[RET_RELOAD:%.*]] = load i8, ptr [[RET_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: ret i8 [[RET_RELOAD]] ; entry: diff --git a/llvm/test/Transforms/IROutliner/illegal-memmove.ll b/llvm/test/Transforms/IROutliner/illegal-memmove.ll index 06480c8adb653..7482405b9d04d 100644 --- a/llvm/test/Transforms/IROutliner/illegal-memmove.ll +++ b/llvm/test/Transforms/IROutliner/illegal-memmove.ll @@ -12,18 +12,18 @@ define i8 @function1(ptr noalias %s, ptr noalias %d, i64 %len) { ; CHECK-NEXT: [[B_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[A_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[RET_LOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(ptr [[S:%.*]], ptr [[D:%.*]], ptr [[A_LOC]], ptr [[B_LOC]]) ; CHECK-NEXT: [[A_RELOAD:%.*]] = load i8, ptr [[A_LOC]], align 1 ; CHECK-NEXT: [[B_RELOAD:%.*]] = load i8, ptr [[B_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @llvm.memmove.p0.p0.i64(ptr [[D]], ptr [[S]], i64 [[LEN:%.*]], i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i8 [[A_RELOAD]], i8 [[B_RELOAD]], ptr [[S]], ptr [[RET_LOC]]) ; CHECK-NEXT: [[RET_RELOAD:%.*]] = load i8, ptr [[RET_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: ret i8 [[RET_RELOAD]] ; entry: @@ -41,18 +41,18 @@ define i8 @function2(ptr noalias %s, ptr noalias %d, i64 %len) { ; CHECK-NEXT: [[B_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[A_LOC:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[RET_LOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(ptr [[S:%.*]], ptr [[D:%.*]], ptr [[A_LOC]], ptr [[B_LOC]]) ; CHECK-NEXT: [[A_RELOAD:%.*]] = load i8, ptr [[A_LOC]], align 1 ; CHECK-NEXT: [[B_RELOAD:%.*]] = load i8, ptr [[B_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B_LOC]]) ; CHECK-NEXT: call void @llvm.memmove.p0.p0.i64(ptr [[D]], ptr [[S]], i64 [[LEN:%.*]], i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i8 [[A_RELOAD]], i8 [[B_RELOAD]], ptr [[S]], ptr [[RET_LOC]]) ; CHECK-NEXT: [[RET_RELOAD:%.*]] = load i8, ptr [[RET_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: ret i8 [[RET_RELOAD]] ; entry: diff --git a/llvm/test/Transforms/IROutliner/illegal-vaarg.ll b/llvm/test/Transforms/IROutliner/illegal-vaarg.ll index 38dfd25e039e6..15f9aa2f5932a 100644 --- a/llvm/test/Transforms/IROutliner/illegal-vaarg.ll +++ b/llvm/test/Transforms/IROutliner/illegal-vaarg.ll @@ -21,10 +21,10 @@ define i32 @func1(i32 %a, double %b, ptr %v, ...) nounwind { ; CHECK-NEXT: [[TMP0:%.*]] = va_arg ptr [[AP]], i32 ; CHECK-NEXT: call void @llvm.va_copy.p0(ptr [[V:%.*]], ptr [[AP]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[AP]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[TMP_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(i32 [[TMP0]], ptr [[C]], ptr [[TMP_LOC]]) ; CHECK-NEXT: [[TMP_RELOAD:%.*]] = load i32, ptr [[TMP_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[TMP_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP_LOC]]) ; CHECK-NEXT: ret i32 [[TMP_RELOAD]] ; entry: @@ -56,10 +56,10 @@ define i32 @func2(i32 %a, double %b, ptr %v, ...) nounwind { ; CHECK-NEXT: [[TMP0:%.*]] = va_arg ptr [[AP]], i32 ; CHECK-NEXT: call void @llvm.va_copy.p0(ptr [[V:%.*]], ptr [[AP]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[AP]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[TMP_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(i32 [[TMP0]], ptr [[C]], ptr [[TMP_LOC]]) ; CHECK-NEXT: [[TMP_RELOAD:%.*]] = load i32, ptr [[TMP_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[TMP_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP_LOC]]) ; CHECK-NEXT: ret i32 [[TMP_RELOAD]] ; entry: diff --git a/llvm/test/Transforms/IROutliner/mismatched-phi-exits-not-in-first-outlined.ll b/llvm/test/Transforms/IROutliner/mismatched-phi-exits-not-in-first-outlined.ll index 24ad86f8e9c48..f9d49993b692d 100644 --- a/llvm/test/Transforms/IROutliner/mismatched-phi-exits-not-in-first-outlined.ll +++ b/llvm/test/Transforms/IROutliner/mismatched-phi-exits-not-in-first-outlined.ll @@ -47,10 +47,10 @@ first: ; CHECK-NEXT: entry: ; CHECK-NEXT: [[DOTCE_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[TMP0]], ptr [[DOTCE_LOC]], i32 0) ; CHECK-NEXT: [[DOTCE_RELOAD:%.*]] = load i32, ptr [[DOTCE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: br label [[FIRST:%.*]] ; CHECK: first: ; CHECK-NEXT: [[TMP1:%.*]] = phi i32 [ [[DOTCE_RELOAD]], [[ENTRY:%.*]] ] diff --git a/llvm/test/Transforms/IROutliner/mismatched-phi-exits.ll b/llvm/test/Transforms/IROutliner/mismatched-phi-exits.ll index 6b50e99e2cf25..7191c80534f1b 100644 --- a/llvm/test/Transforms/IROutliner/mismatched-phi-exits.ll +++ b/llvm/test/Transforms/IROutliner/mismatched-phi-exits.ll @@ -38,10 +38,10 @@ first: ; CHECK-NEXT: entry: ; CHECK-NEXT: [[DOTCE_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[TMP0]], ptr [[DOTCE_LOC]], i32 0) ; CHECK-NEXT: [[DOTCE_RELOAD:%.*]] = load i32, ptr [[DOTCE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: br label [[FIRST:%.*]] ; CHECK: first: ; CHECK-NEXT: [[TMP1:%.*]] = phi i32 [ [[DOTCE_RELOAD]], [[ENTRY:%.*]] ] diff --git a/llvm/test/Transforms/IROutliner/mismatched-phi-outputs-ordering.ll b/llvm/test/Transforms/IROutliner/mismatched-phi-outputs-ordering.ll index ab1836f7a4d28..9085e7e507726 100644 --- a/llvm/test/Transforms/IROutliner/mismatched-phi-outputs-ordering.ll +++ b/llvm/test/Transforms/IROutliner/mismatched-phi-outputs-ordering.ll @@ -48,16 +48,16 @@ next: ; CHECK-NEXT: [[D_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[E_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[E_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[D_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[D_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: [[TMP1:%.*]] = call i1 @outlined_ir_func_0(ptr [[TMP0]], ptr [[E_LOC]], ptr [[D_LOC]], ptr [[DOTCE_LOC]], i32 0) ; CHECK-NEXT: [[E_RELOAD:%.*]] = load i32, ptr [[E_LOC]], align 4 ; CHECK-NEXT: [[D_RELOAD:%.*]] = load i32, ptr [[D_LOC]], align 4 ; CHECK-NEXT: [[DOTCE_RELOAD:%.*]] = load i32, ptr [[DOTCE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[E_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[D_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[D_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: br i1 [[TMP1]], label [[FIRST:%.*]], label [[NEXT:%.*]] ; CHECK: first: ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[DOTCE_RELOAD]], [[ENTRY:%.*]] ] @@ -72,13 +72,13 @@ next: ; CHECK-NEXT: [[D_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[E_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[E_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[D_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[D_LOC]]) ; CHECK-NEXT: [[TMP1:%.*]] = call i1 @outlined_ir_func_0(ptr [[TMP0]], ptr [[E_LOC]], ptr [[D_LOC]], ptr null, i32 1) ; CHECK-NEXT: [[E_RELOAD:%.*]] = load i32, ptr [[E_LOC]], align 4 ; CHECK-NEXT: [[D_RELOAD:%.*]] = load i32, ptr [[D_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[E_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[D_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[D_LOC]]) ; CHECK-NEXT: br i1 [[TMP1]], label [[FIRST:%.*]], label [[NEXT:%.*]] ; CHECK: first: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IROutliner/must-capture-all-phi-nodes-begin.ll b/llvm/test/Transforms/IROutliner/must-capture-all-phi-nodes-begin.ll index 32973ea3530dd..3229f4255c31d 100644 --- a/llvm/test/Transforms/IROutliner/must-capture-all-phi-nodes-begin.ll +++ b/llvm/test/Transforms/IROutliner/must-capture-all-phi-nodes-begin.ll @@ -57,10 +57,10 @@ first: ; CHECK: test1: ; CHECK-NEXT: [[TMP1:%.*]] = phi i32 [ [[E_RELOAD:%.*]], [[TEST1]] ], [ [[Y]], [[ENTRY:%.*]] ] ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[E_RELOAD]], [[TEST1]] ], [ [[Y]], [[ENTRY]] ] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[E_LOC]]) ; CHECK-NEXT: [[TARGETBLOCK:%.*]] = call i1 @outlined_ir_func_0(ptr [[TMP0]], i32 [[C]], ptr [[E_LOC]]) ; CHECK-NEXT: [[E_RELOAD]] = load i32, ptr [[E_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[E_LOC]]) ; CHECK-NEXT: br i1 [[TARGETBLOCK]], label [[TEST1]], label [[FIRST:%.*]] ; CHECK: first: ; CHECK-NEXT: ret void @@ -78,10 +78,10 @@ first: ; CHECK: test1: ; CHECK-NEXT: [[TMP1:%.*]] = phi i32 [ [[E_RELOAD:%.*]], [[TEST1]] ], [ [[Y]], [[ENTRY:%.*]] ] ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[Y]], [[ENTRY]] ], [ [[E_RELOAD]], [[TEST1]] ] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[E_LOC]]) ; CHECK-NEXT: [[TARGETBLOCK:%.*]] = call i1 @outlined_ir_func_0(ptr [[TMP0]], i32 [[C]], ptr [[E_LOC]]) ; CHECK-NEXT: [[E_RELOAD]] = load i32, ptr [[E_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[E_LOC]]) ; CHECK-NEXT: br i1 [[TARGETBLOCK]], label [[TEST1]], label [[FIRST:%.*]] ; CHECK: first: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IROutliner/no-external-block-entries.ll b/llvm/test/Transforms/IROutliner/no-external-block-entries.ll index 44260097e4415..fb2c5e9701f68 100644 --- a/llvm/test/Transforms/IROutliner/no-external-block-entries.ll +++ b/llvm/test/Transforms/IROutliner/no-external-block-entries.ll @@ -35,10 +35,10 @@ block_6: ; CHECK-LABEL: @fn1( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[B_CE_LOC:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B_CE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[B_CE_LOC]], i32 0) ; CHECK-NEXT: [[B_CE_RELOAD:%.*]] = load i32, ptr [[B_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B_CE_LOC]]) ; CHECK-NEXT: br label [[BLOCK_3:%.*]] ; CHECK: block_3: ; CHECK-NEXT: [[B:%.*]] = phi i32 [ [[B_CE_RELOAD]], [[ENTRY:%.*]] ] diff --git a/llvm/test/Transforms/IROutliner/one-external-incoming-block-phi-node.ll b/llvm/test/Transforms/IROutliner/one-external-incoming-block-phi-node.ll index 77e3a827453aa..96272745df70b 100644 --- a/llvm/test/Transforms/IROutliner/one-external-incoming-block-phi-node.ll +++ b/llvm/test/Transforms/IROutliner/one-external-incoming-block-phi-node.ll @@ -33,10 +33,10 @@ block_6: ; CHECK-LABEL: @fn1( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[B_CE_LOC:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B_CE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[B_CE_LOC]], i32 0) ; CHECK-NEXT: [[B_CE_RELOAD:%.*]] = load i32, ptr [[B_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B_CE_LOC]]) ; CHECK-NEXT: br label [[BLOCK_3:%.*]] ; CHECK: block_3: ; CHECK-NEXT: [[B:%.*]] = phi i32 [ [[B_CE_RELOAD]], [[ENTRY:%.*]] ] diff --git a/llvm/test/Transforms/IROutliner/outline-memcpy.ll b/llvm/test/Transforms/IROutliner/outline-memcpy.ll index 0cf4f34d23212..83fd5f6af925c 100644 --- a/llvm/test/Transforms/IROutliner/outline-memcpy.ll +++ b/llvm/test/Transforms/IROutliner/outline-memcpy.ll @@ -27,20 +27,20 @@ entry: ; CHECK-LABEL: @function1( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[RET_LOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[S:%.*]], ptr [[D:%.*]], i64 [[LEN:%.*]], ptr [[RET_LOC]]) ; CHECK-NEXT: [[RET_RELOAD:%.*]] = load i8, ptr [[RET_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: ret i8 [[RET_RELOAD]] ; ; ; CHECK-LABEL: @function2( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[RET_LOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[S:%.*]], ptr [[D:%.*]], i64 [[LEN:%.*]], ptr [[RET_LOC]]) ; CHECK-NEXT: [[RET_RELOAD:%.*]] = load i8, ptr [[RET_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: ret i8 [[RET_RELOAD]] ; ; diff --git a/llvm/test/Transforms/IROutliner/outline-memmove.ll b/llvm/test/Transforms/IROutliner/outline-memmove.ll index cf7924433d5bb..c512cd4a22e8f 100644 --- a/llvm/test/Transforms/IROutliner/outline-memmove.ll +++ b/llvm/test/Transforms/IROutliner/outline-memmove.ll @@ -27,20 +27,20 @@ entry: ; CHECK-LABEL: @function1( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[RET_LOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[S:%.*]], ptr [[D:%.*]], i64 [[LEN:%.*]], ptr [[RET_LOC]]) ; CHECK-NEXT: [[RET_RELOAD:%.*]] = load i8, ptr [[RET_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: ret i8 [[RET_RELOAD]] ; ; ; CHECK-LABEL: @function2( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[RET_LOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[S:%.*]], ptr [[D:%.*]], i64 [[LEN:%.*]], ptr [[RET_LOC]]) ; CHECK-NEXT: [[RET_RELOAD:%.*]] = load i8, ptr [[RET_LOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[RET_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RET_LOC]]) ; CHECK-NEXT: ret i8 [[RET_RELOAD]] ; ; diff --git a/llvm/test/Transforms/IROutliner/outline-vaarg-intrinsic.ll b/llvm/test/Transforms/IROutliner/outline-vaarg-intrinsic.ll index 2d526086fae49..6a9cbca7dfddb 100644 --- a/llvm/test/Transforms/IROutliner/outline-vaarg-intrinsic.ll +++ b/llvm/test/Transforms/IROutliner/outline-vaarg-intrinsic.ll @@ -53,10 +53,10 @@ entry: ; CHECK-NEXT: store double [[B]], ptr [[B_ADDR]], align 8 ; CHECK-NEXT: call void @llvm.va_start.p0(ptr [[AP]]) ; CHECK-NEXT: [[TMP0:%.*]] = va_arg ptr [[AP]], i32 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[TMP_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[V]], ptr [[AP]], i32 [[TMP0]], ptr [[C]], ptr [[TMP_LOC]]) ; CHECK-NEXT: [[TMP_RELOAD:%.*]] = load i32, ptr [[TMP_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[TMP_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP_LOC]]) ; CHECK-NEXT: ret i32 [[TMP_RELOAD]] ; ; @@ -72,10 +72,10 @@ entry: ; CHECK-NEXT: store double [[B]], ptr [[B_ADDR]], align 8 ; CHECK-NEXT: call void @llvm.va_start.p0(ptr [[AP]]) ; CHECK-NEXT: [[TMP0:%.*]] = va_arg ptr [[AP]], i32 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[TMP_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[V]], ptr [[AP]], i32 [[TMP0]], ptr [[C]], ptr [[TMP_LOC]]) ; CHECK-NEXT: [[TMP_RELOAD:%.*]] = load i32, ptr [[TMP_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[TMP_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP_LOC]]) ; CHECK-NEXT: ret i32 [[TMP_RELOAD]] ; ; diff --git a/llvm/test/Transforms/IROutliner/outlining-bitcasts.ll b/llvm/test/Transforms/IROutliner/outlining-bitcasts.ll index 31f1d12bd3603..a8153a4fda446 100644 --- a/llvm/test/Transforms/IROutliner/outlining-bitcasts.ll +++ b/llvm/test/Transforms/IROutliner/outlining-bitcasts.ll @@ -8,8 +8,8 @@ ; Additionally, we check that the newly added bitcast instruction is excluded in ; further extractions. -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define void @outline_bitcast_base() { entry: @@ -38,11 +38,11 @@ entry: %al = load i32, ptr %a %bl = load i32, ptr %b %cl = load i32, ptr %c - call void @llvm.lifetime.start.p0(i64 -1, ptr %d) + call void @llvm.lifetime.start.p0(ptr %d) %am = load i32, ptr %b %bm = load i32, ptr %a %cm = load i32, ptr %c - call void @llvm.lifetime.end.p0(i64 -1, ptr %d) + call void @llvm.lifetime.end.p0(ptr %d) ret void } @@ -61,8 +61,8 @@ entry: %am = add i32 %a, %b %bm = add i32 %b, %a %cm = add i32 %b, %c - call void @llvm.lifetime.start.p0(i64 -1, ptr %d) - call void @llvm.lifetime.end.p0(i64 -1, ptr %d) + call void @llvm.lifetime.start.p0(ptr %d) + call void @llvm.lifetime.end.p0(ptr %d) ret void } @@ -114,13 +114,13 @@ entry: ; CHECK-LABEL: @outlined_ir_func_1( ; CHECK-NEXT: newFuncRoot: ; CHECK-NEXT: [[D:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[D]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[D]]) ; CHECK-NEXT: br label [[ENTRY_TO_OUTLINE:%.*]] ; CHECK: entry_to_outline: ; CHECK-NEXT: [[AL:%.*]] = add i32 [[TMP0:%.*]], [[TMP1:%.*]] ; CHECK-NEXT: [[BL:%.*]] = add i32 [[TMP1]], [[TMP0]] ; CHECK-NEXT: [[CL:%.*]] = add i32 [[TMP1]], [[TMP2:%.*]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[D]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[D]]) ; CHECK-NEXT: br label [[ENTRY_AFTER_OUTLINE_EXITSTUB:%.*]] ; CHECK: entry_after_outline.exitStub: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IROutliner/outlining-branches-phi-nodes.ll b/llvm/test/Transforms/IROutliner/outlining-branches-phi-nodes.ll index 28c23e34771ac..bb6bf8f2e1454 100644 --- a/llvm/test/Transforms/IROutliner/outlining-branches-phi-nodes.ll +++ b/llvm/test/Transforms/IROutliner/outlining-branches-phi-nodes.ll @@ -100,10 +100,10 @@ block_6: ; CHECK-NEXT: [[B2:%.*]] = alloca i32, align 4 ; CHECK-NEXT: br label [[BLOCK_2]] ; CHECK: block_2: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DIFF_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DIFF_CE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[RESULT]], ptr [[DIFF_CE_LOC]]) ; CHECK-NEXT: [[DIFF_CE_RELOAD:%.*]] = load i32, ptr [[DIFF_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DIFF_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DIFF_CE_LOC]]) ; CHECK-NEXT: br label [[BLOCK_6:%.*]] ; CHECK: dummy: ; CHECK-NEXT: ret void @@ -127,10 +127,10 @@ block_6: ; CHECK-NEXT: [[B2:%.*]] = alloca i32, align 4 ; CHECK-NEXT: br label [[BLOCK_2]] ; CHECK: block_2: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DIFF_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DIFF_CE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[RESULT]], ptr [[DIFF_CE_LOC]]) ; CHECK-NEXT: [[DIFF_CE_RELOAD:%.*]] = load i32, ptr [[DIFF_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DIFF_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DIFF_CE_LOC]]) ; CHECK-NEXT: br label [[BLOCK_6:%.*]] ; CHECK: dummy: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IROutliner/outlining-cost-model.ll b/llvm/test/Transforms/IROutliner/outlining-cost-model.ll index 81bf4f09a70d7..bb3163a7941fe 100644 --- a/llvm/test/Transforms/IROutliner/outlining-cost-model.ll +++ b/llvm/test/Transforms/IROutliner/outlining-cost-model.ll @@ -104,13 +104,13 @@ define void @function3() #0 { ; NOCOST-NEXT: [[B:%.*]] = alloca i32, align 4 ; NOCOST-NEXT: [[OUTPUT:%.*]] = alloca i32, align 4 ; NOCOST-NEXT: [[RESULT:%.*]] = alloca i32, align 4 -; NOCOST-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD_LOC]]) -; NOCOST-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC]]) +; NOCOST-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD_LOC]]) +; NOCOST-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC]]) ; NOCOST-NEXT: call void @outlined_ir_func_1(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[ADD_LOC]], ptr [[DOTLOC]]) ; NOCOST-NEXT: [[ADD_RELOAD:%.*]] = load i32, ptr [[ADD_LOC]], align 4 ; NOCOST-NEXT: [[DOTRELOAD:%.*]] = load i32, ptr [[DOTLOC]], align 4 -; NOCOST-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD_LOC]]) -; NOCOST-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC]]) +; NOCOST-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD_LOC]]) +; NOCOST-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC]]) ; NOCOST-NEXT: [[TMP0:%.*]] = load i32, ptr [[OUTPUT]], align 4 ; NOCOST-NEXT: call void @outlined_ir_func_2(i32 [[DOTRELOAD]], i32 [[ADD_RELOAD]], ptr [[RESULT]]) ; NOCOST-NEXT: ret void @@ -159,13 +159,13 @@ define void @function4() #0 { ; NOCOST-NEXT: [[B:%.*]] = alloca i32, align 4 ; NOCOST-NEXT: [[OUTPUT:%.*]] = alloca i32, align 4 ; NOCOST-NEXT: [[RESULT:%.*]] = alloca i32, align 4 -; NOCOST-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD_LOC]]) -; NOCOST-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC]]) +; NOCOST-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD_LOC]]) +; NOCOST-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC]]) ; NOCOST-NEXT: call void @outlined_ir_func_1(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[ADD_LOC]], ptr [[DOTLOC]]) ; NOCOST-NEXT: [[ADD_RELOAD:%.*]] = load i32, ptr [[ADD_LOC]], align 4 ; NOCOST-NEXT: [[DOTRELOAD:%.*]] = load i32, ptr [[DOTLOC]], align 4 -; NOCOST-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD_LOC]]) -; NOCOST-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC]]) +; NOCOST-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD_LOC]]) +; NOCOST-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC]]) ; NOCOST-NEXT: call void @outlined_ir_func_2(i32 [[DOTRELOAD]], i32 [[ADD_RELOAD]], ptr [[RESULT]]) ; NOCOST-NEXT: ret void ; diff --git a/llvm/test/Transforms/IROutliner/outlining-different-output-blocks.ll b/llvm/test/Transforms/IROutliner/outlining-different-output-blocks.ll index 2e1fae352cd44..64e87fcf7fb75 100644 --- a/llvm/test/Transforms/IROutliner/outlining-different-output-blocks.ll +++ b/llvm/test/Transforms/IROutliner/outlining-different-output-blocks.ll @@ -14,13 +14,13 @@ define void @outline_outputs1() #0 { ; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[OUTPUT:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[RESULT:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[ADD_LOC]], ptr [[DOTLOC]], i32 0) ; CHECK-NEXT: [[ADD_RELOAD:%.*]] = load i32, ptr [[ADD_LOC]], align 4 ; CHECK-NEXT: [[DOTRELOAD:%.*]] = load i32, ptr [[DOTLOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[OUTPUT]], align 4 ; CHECK-NEXT: call void @outlined_ir_func_1(i32 [[DOTRELOAD]], i32 [[ADD_RELOAD]], ptr [[RESULT]]) ; CHECK-NEXT: ret void @@ -53,13 +53,13 @@ define void @outline_outputs2() #0 { ; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[OUTPUT:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[RESULT:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[SUB_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[SUB_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[SUB_LOC]], ptr [[DOTLOC]], i32 1) ; CHECK-NEXT: [[SUB_RELOAD:%.*]] = load i32, ptr [[SUB_LOC]], align 4 ; CHECK-NEXT: [[DOTRELOAD:%.*]] = load i32, ptr [[DOTLOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[SUB_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[SUB_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(i32 [[DOTRELOAD]], i32 [[SUB_RELOAD]], ptr [[RESULT]]) ; CHECK-NEXT: ret void ; diff --git a/llvm/test/Transforms/IROutliner/outlining-exits-to-phi-node.ll b/llvm/test/Transforms/IROutliner/outlining-exits-to-phi-node.ll index cb5d5057182a4..d901955caadfb 100644 --- a/llvm/test/Transforms/IROutliner/outlining-exits-to-phi-node.ll +++ b/llvm/test/Transforms/IROutliner/outlining-exits-to-phi-node.ll @@ -43,10 +43,10 @@ first: ; CHECK-NEXT: entry: ; CHECK-NEXT: [[DOTCE_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[TMP0]], ptr [[DOTCE_LOC]]) ; CHECK-NEXT: [[DOTCE_RELOAD:%.*]] = load i32, ptr [[DOTCE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: br label [[FIRST:%.*]] ; CHECK: dummy: ; CHECK-NEXT: ret void @@ -59,10 +59,10 @@ first: ; CHECK-NEXT: entry: ; CHECK-NEXT: [[DOTCE_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[TMP0]], ptr [[DOTCE_LOC]]) ; CHECK-NEXT: [[DOTCE_RELOAD:%.*]] = load i32, ptr [[DOTCE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: br label [[FIRST:%.*]] ; CHECK: dummy: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IROutliner/outlining-multiple-exits-diff-outputs.ll b/llvm/test/Transforms/IROutliner/outlining-multiple-exits-diff-outputs.ll index 463e097cd2f29..9dbfa9ebd7e37 100644 --- a/llvm/test/Transforms/IROutliner/outlining-multiple-exits-diff-outputs.ll +++ b/llvm/test/Transforms/IROutliner/outlining-multiple-exits-diff-outputs.ll @@ -103,19 +103,19 @@ block_7: ; CHECK-NEXT: [[B2:%.*]] = alloca i32, align 4 ; CHECK-NEXT: br label [[BLOCK_2]] ; CHECK: block_2: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[AVAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[BVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[AVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[BVAL_LOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = call i1 @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[RESULT]], ptr [[A2VAL_LOC]], ptr [[B2VAL_LOC]], ptr [[AVAL_LOC]], ptr [[BVAL_LOC]], i32 0) ; CHECK-NEXT: [[A2VAL_RELOAD:%.*]] = load i32, ptr [[A2VAL_LOC]], align 4 ; CHECK-NEXT: [[B2VAL_RELOAD:%.*]] = load i32, ptr [[B2VAL_LOC]], align 4 ; CHECK-NEXT: [[AVAL_RELOAD:%.*]] = load i32, ptr [[AVAL_LOC]], align 4 ; CHECK-NEXT: [[BVAL_RELOAD:%.*]] = load i32, ptr [[BVAL_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[AVAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[BVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[AVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[BVAL_LOC]]) ; CHECK-NEXT: br i1 [[TMP0]], label [[BLOCK_6:%.*]], label [[BLOCK_7:%.*]] ; CHECK: block_6: ; CHECK-NEXT: [[DIV:%.*]] = udiv i32 [[AVAL_RELOAD]], [[BVAL_RELOAD]] @@ -143,19 +143,19 @@ block_7: ; CHECK-NEXT: [[B2:%.*]] = alloca i32, align 4 ; CHECK-NEXT: br label [[BLOCK_2]] ; CHECK: block_2: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[MUL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[MUL_LOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = call i1 @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[RESULT]], ptr [[A2VAL_LOC]], ptr [[B2VAL_LOC]], ptr [[ADD_LOC]], ptr [[MUL_LOC]], i32 1) ; CHECK-NEXT: [[A2VAL_RELOAD:%.*]] = load i32, ptr [[A2VAL_LOC]], align 4 ; CHECK-NEXT: [[B2VAL_RELOAD:%.*]] = load i32, ptr [[B2VAL_LOC]], align 4 ; CHECK-NEXT: [[ADD_RELOAD:%.*]] = load i32, ptr [[ADD_LOC]], align 4 ; CHECK-NEXT: [[MUL_RELOAD:%.*]] = load i32, ptr [[MUL_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[MUL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[MUL_LOC]]) ; CHECK-NEXT: br i1 [[TMP0]], label [[BLOCK_7:%.*]], label [[BLOCK_6:%.*]] ; CHECK: block_6: ; CHECK-NEXT: [[DIFF:%.*]] = sub i32 [[A2VAL_RELOAD]], [[B2VAL_RELOAD]] diff --git a/llvm/test/Transforms/IROutliner/outlining-multiple-exits-one-output-set.ll b/llvm/test/Transforms/IROutliner/outlining-multiple-exits-one-output-set.ll index 5293647ad6c4c..f7897358a55bc 100644 --- a/llvm/test/Transforms/IROutliner/outlining-multiple-exits-one-output-set.ll +++ b/llvm/test/Transforms/IROutliner/outlining-multiple-exits-one-output-set.ll @@ -124,19 +124,19 @@ block_7: ; CHECK-NEXT: [[B2:%.*]] = alloca i32, align 4 ; CHECK-NEXT: br label [[BLOCK_2]] ; CHECK: block_2: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[MUL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[MUL_LOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = call i1 @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[RESULT]], ptr [[A2VAL_LOC]], ptr [[B2VAL_LOC]], ptr [[ADD_LOC]], ptr [[MUL_LOC]], i32 0) ; CHECK-NEXT: [[A2VAL_RELOAD:%.*]] = load i32, ptr [[A2VAL_LOC]], align 4 ; CHECK-NEXT: [[B2VAL_RELOAD:%.*]] = load i32, ptr [[B2VAL_LOC]], align 4 ; CHECK-NEXT: [[ADD_RELOAD:%.*]] = load i32, ptr [[ADD_LOC]], align 4 ; CHECK-NEXT: [[MUL_RELOAD:%.*]] = load i32, ptr [[MUL_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[MUL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[MUL_LOC]]) ; CHECK-NEXT: br i1 [[TMP0]], label [[BLOCK_7:%.*]], label [[BLOCK_6:%.*]] ; CHECK: block_6: ; CHECK-NEXT: [[DIFF:%.*]] = sub i32 [[A2VAL_RELOAD]], [[B2VAL_RELOAD]] diff --git a/llvm/test/Transforms/IROutliner/outlining-multiple-exits.ll b/llvm/test/Transforms/IROutliner/outlining-multiple-exits.ll index 663e6d865b64a..1de13ebc3bc3a 100644 --- a/llvm/test/Transforms/IROutliner/outlining-multiple-exits.ll +++ b/llvm/test/Transforms/IROutliner/outlining-multiple-exits.ll @@ -104,19 +104,19 @@ block_7: ; CHECK-NEXT: [[B2:%.*]] = alloca i32, align 4 ; CHECK-NEXT: br label [[BLOCK_2]] ; CHECK: block_2: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[AVAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[BVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[AVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[BVAL_LOC]]) ; CHECK-NEXT: [[TARGETBLOCK:%.*]] = call i1 @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[RESULT]], ptr [[A2VAL_LOC]], ptr [[B2VAL_LOC]], ptr [[AVAL_LOC]], ptr [[BVAL_LOC]]) ; CHECK-NEXT: [[A2VAL_RELOAD:%.*]] = load i32, ptr [[A2VAL_LOC]], align 4 ; CHECK-NEXT: [[B2VAL_RELOAD:%.*]] = load i32, ptr [[B2VAL_LOC]], align 4 ; CHECK-NEXT: [[AVAL_RELOAD:%.*]] = load i32, ptr [[AVAL_LOC]], align 4 ; CHECK-NEXT: [[BVAL_RELOAD:%.*]] = load i32, ptr [[BVAL_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[AVAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[BVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[AVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[BVAL_LOC]]) ; CHECK-NEXT: br i1 [[TARGETBLOCK]], label [[BLOCK_6:%.*]], label [[BLOCK_7:%.*]] ; CHECK: block_6: ; CHECK-NEXT: [[DIV:%.*]] = udiv i32 [[AVAL_RELOAD]], [[BVAL_RELOAD]] @@ -144,19 +144,19 @@ block_7: ; CHECK-NEXT: [[B2:%.*]] = alloca i32, align 4 ; CHECK-NEXT: br label [[BLOCK_2]] ; CHECK: block_2: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[A2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[AVAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[BVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[AVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[BVAL_LOC]]) ; CHECK-NEXT: [[TARGETBLOCK:%.*]] = call i1 @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[RESULT]], ptr [[A2VAL_LOC]], ptr [[B2VAL_LOC]], ptr [[AVAL_LOC]], ptr [[BVAL_LOC]]) ; CHECK-NEXT: [[A2VAL_RELOAD:%.*]] = load i32, ptr [[A2VAL_LOC]], align 4 ; CHECK-NEXT: [[B2VAL_RELOAD:%.*]] = load i32, ptr [[B2VAL_LOC]], align 4 ; CHECK-NEXT: [[AVAL_RELOAD:%.*]] = load i32, ptr [[AVAL_LOC]], align 4 ; CHECK-NEXT: [[BVAL_RELOAD:%.*]] = load i32, ptr [[BVAL_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B2VAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[AVAL_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[BVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B2VAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[AVAL_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[BVAL_LOC]]) ; CHECK-NEXT: br i1 [[TARGETBLOCK]], label [[BLOCK_7:%.*]], label [[BLOCK_6:%.*]] ; CHECK: block_6: ; CHECK-NEXT: [[DIFF:%.*]] = sub i32 [[A2VAL_RELOAD]], [[B2VAL_RELOAD]] diff --git a/llvm/test/Transforms/IROutliner/outlining-remapped-outputs.ll b/llvm/test/Transforms/IROutliner/outlining-remapped-outputs.ll index 6d0b15394f330..77f17c3162131 100644 --- a/llvm/test/Transforms/IROutliner/outlining-remapped-outputs.ll +++ b/llvm/test/Transforms/IROutliner/outlining-remapped-outputs.ll @@ -17,24 +17,24 @@ define void @outline_outputs1() #0 { ; CHECK-NEXT: [[RESULT:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[OUTPUT2:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[RESULT2:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i32 2, ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[ADD_LOC]], ptr [[DOTLOC]]) ; CHECK-NEXT: [[ADD_RELOAD:%.*]] = load i32, ptr [[ADD_LOC]], align 4 ; CHECK-NEXT: [[DOTRELOAD:%.*]] = load i32, ptr [[DOTLOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[OUTPUT]], align 4 ; CHECK-NEXT: call void @outlined_ir_func_1(i32 [[DOTRELOAD]], i32 [[ADD_RELOAD]], ptr [[RESULT]]) ; CHECK-NEXT: br label [[NEXT:%.*]] ; CHECK: next: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD2_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC2]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD2_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC2]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i32 [[ADD_RELOAD]], ptr [[OUTPUT]], ptr [[RESULT]], ptr [[OUTPUT2]], ptr [[ADD2_LOC]], ptr [[DOTLOC2]]) ; CHECK-NEXT: [[ADD2_RELOAD:%.*]] = load i32, ptr [[ADD2_LOC]], align 4 ; CHECK-NEXT: [[DOTRELOAD3:%.*]] = load i32, ptr [[DOTLOC2]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD2_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC2]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD2_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC2]]) ; CHECK-NEXT: call void @outlined_ir_func_1(i32 [[DOTRELOAD3]], i32 [[ADD2_RELOAD]], ptr [[RESULT2]]) ; CHECK-NEXT: ret void ; diff --git a/llvm/test/Transforms/IROutliner/outlining-same-output-blocks.ll b/llvm/test/Transforms/IROutliner/outlining-same-output-blocks.ll index 380c53d1e77e3..cc4f6ef6d7e07 100644 --- a/llvm/test/Transforms/IROutliner/outlining-same-output-blocks.ll +++ b/llvm/test/Transforms/IROutliner/outlining-same-output-blocks.ll @@ -14,13 +14,13 @@ define void @outline_outputs1() #0 { ; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[OUTPUT:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[RESULT:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[ADD_LOC]], ptr [[DOTLOC]]) ; CHECK-NEXT: [[ADD_RELOAD:%.*]] = load i32, ptr [[ADD_LOC]], align 4 ; CHECK-NEXT: [[DOTRELOAD:%.*]] = load i32, ptr [[DOTLOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[OUTPUT]], align 4 ; CHECK-NEXT: call void @outlined_ir_func_1(i32 [[DOTRELOAD]], i32 [[ADD_RELOAD]], ptr [[RESULT]]) ; CHECK-NEXT: ret void @@ -52,13 +52,13 @@ define void @outline_outputs2() #0 { ; CHECK-NEXT: [[B:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[OUTPUT:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[RESULT:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[A]], ptr [[B]], ptr [[OUTPUT]], ptr [[ADD_LOC]], ptr [[DOTLOC]]) ; CHECK-NEXT: [[ADD_RELOAD:%.*]] = load i32, ptr [[ADD_LOC]], align 4 ; CHECK-NEXT: [[DOTRELOAD:%.*]] = load i32, ptr [[DOTLOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ADD_LOC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ADD_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTLOC]]) ; CHECK-NEXT: call void @outlined_ir_func_1(i32 [[DOTRELOAD]], i32 [[ADD_RELOAD]], ptr [[RESULT]]) ; CHECK-NEXT: ret void ; diff --git a/llvm/test/Transforms/IROutliner/phi-node-exit-path-order.ll b/llvm/test/Transforms/IROutliner/phi-node-exit-path-order.ll index 4bbe6e7ea9918..15d313a41bf7c 100644 --- a/llvm/test/Transforms/IROutliner/phi-node-exit-path-order.ll +++ b/llvm/test/Transforms/IROutliner/phi-node-exit-path-order.ll @@ -58,10 +58,10 @@ bb5: ; CHECK-NEXT: br label [[BB5:%.*]] ; CHECK: bb2: ; CHECK-NEXT: [[A:%.*]] = add i32 [[TMP0:%.*]], [[TMP1:%.*]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[F_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[F_CE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i32 [[TMP0]], i32 [[TMP1]], ptr [[F_CE_LOC]], i32 0) ; CHECK-NEXT: [[F_CE_RELOAD:%.*]] = load i32, ptr [[F_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[F_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[F_CE_LOC]]) ; CHECK-NEXT: br label [[BB5]] ; CHECK: bb4: ; CHECK-NEXT: [[E:%.*]] = sub i32 [[TMP0]], [[TMP1]] @@ -77,10 +77,10 @@ bb5: ; CHECK-NEXT: br label [[BB5:%.*]] ; CHECK: bb2: ; CHECK-NEXT: [[A:%.*]] = sub i32 [[TMP0:%.*]], [[TMP1:%.*]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[F_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[F_CE_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(i32 [[TMP0]], i32 [[TMP1]], ptr [[F_CE_LOC]], i32 1) ; CHECK-NEXT: [[F_CE_RELOAD:%.*]] = load i32, ptr [[F_CE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[F_CE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[F_CE_LOC]]) ; CHECK-NEXT: br label [[BB5]] ; CHECK: bb4: ; CHECK-NEXT: [[E:%.*]] = add i32 [[TMP0]], [[TMP1]] diff --git a/llvm/test/Transforms/IROutliner/phi-nodes-output-overload.ll b/llvm/test/Transforms/IROutliner/phi-nodes-output-overload.ll index 9631bfac7d1c0..9e443abaaff50 100644 --- a/llvm/test/Transforms/IROutliner/phi-nodes-output-overload.ll +++ b/llvm/test/Transforms/IROutliner/phi-nodes-output-overload.ll @@ -43,10 +43,10 @@ next: ; CHECK-NEXT: entry: ; CHECK-NEXT: [[DOTCE_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: [[TMP1:%.*]] = call i1 @outlined_ir_func_0(ptr [[TMP0]], ptr [[DOTCE_LOC]], i32 0) ; CHECK-NEXT: [[DOTCE_RELOAD:%.*]] = load i32, ptr [[DOTCE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: br i1 [[TMP1]], label [[FIRST:%.*]], label [[NEXT:%.*]] ; CHECK: first: ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[DOTCE_RELOAD]], [[ENTRY:%.*]] ] @@ -59,10 +59,10 @@ next: ; CHECK-NEXT: entry: ; CHECK-NEXT: [[DOTCE_LOC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: [[TMP1:%.*]] = call i1 @outlined_ir_func_0(ptr [[TMP0]], ptr [[DOTCE_LOC]], i32 1) ; CHECK-NEXT: [[DOTCE_RELOAD:%.*]] = load i32, ptr [[DOTCE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: br i1 [[TMP1]], label [[FIRST:%.*]], label [[NEXT:%.*]] ; CHECK: first: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IROutliner/phi-nodes-parent-block-referential.ll b/llvm/test/Transforms/IROutliner/phi-nodes-parent-block-referential.ll index 608abfa95333c..02930d77be3a8 100644 --- a/llvm/test/Transforms/IROutliner/phi-nodes-parent-block-referential.ll +++ b/llvm/test/Transforms/IROutliner/phi-nodes-parent-block-referential.ll @@ -53,10 +53,10 @@ first: ; CHECK: test1: ; CHECK-NEXT: [[TMP1:%.*]] = phi i32 [ [[E_RELOAD:%.*]], [[TEST1]] ], [ [[Y]], [[ENTRY:%.*]] ] ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[E_RELOAD]], [[TEST1]] ], [ [[Y]], [[ENTRY]] ] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[E_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[TMP0]], i32 [[C]], ptr [[E_LOC]]) ; CHECK-NEXT: [[E_RELOAD]] = load i32, ptr [[E_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[E_LOC]]) ; CHECK-NEXT: [[TMP3:%.*]] = sub i32 [[C]], [[C]] ; CHECK-NEXT: br i1 true, label [[FIRST:%.*]], label [[TEST1]] ; CHECK: first: @@ -75,10 +75,10 @@ first: ; CHECK: test1: ; CHECK-NEXT: [[TMP1:%.*]] = phi i32 [ [[E_RELOAD:%.*]], [[TEST1]] ], [ [[Y]], [[ENTRY:%.*]] ] ; CHECK-NEXT: [[TMP2:%.*]] = phi i32 [ [[Y]], [[ENTRY]] ], [ [[E_RELOAD]], [[TEST1]] ] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[E_LOC]]) ; CHECK-NEXT: call void @outlined_ir_func_0(ptr [[TMP0]], i32 [[C]], ptr [[E_LOC]]) ; CHECK-NEXT: [[E_RELOAD]] = load i32, ptr [[E_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[E_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[E_LOC]]) ; CHECK-NEXT: [[TMP3:%.*]] = mul i32 [[C]], [[C]] ; CHECK-NEXT: br i1 true, label [[FIRST:%.*]], label [[TEST1]] ; CHECK: first: diff --git a/llvm/test/Transforms/IROutliner/region-inputs-in-phi-nodes.ll b/llvm/test/Transforms/IROutliner/region-inputs-in-phi-nodes.ll index f46035a883832..25b1e8ee29f3c 100644 --- a/llvm/test/Transforms/IROutliner/region-inputs-in-phi-nodes.ll +++ b/llvm/test/Transforms/IROutliner/region-inputs-in-phi-nodes.ll @@ -53,10 +53,10 @@ next: ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[C:%.*]] = load i32, ptr [[TMP0]], align 4 ; CHECK-NEXT: [[Z:%.*]] = add i32 [[C]], [[C]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: [[TARGETBLOCK:%.*]] = call i1 @outlined_ir_func_0(ptr [[TMP0]], i32 [[C]], ptr [[DOTCE_LOC]]) ; CHECK-NEXT: [[DOTCE_RELOAD:%.*]] = load i32, ptr [[DOTCE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: br i1 [[TARGETBLOCK]], label [[FIRST:%.*]], label [[NEXT:%.*]] ; CHECK: dummy: ; CHECK-NEXT: ret void @@ -73,10 +73,10 @@ next: ; CHECK-NEXT: [[TMP0:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[C:%.*]] = load i32, ptr [[TMP0]], align 4 ; CHECK-NEXT: [[Z:%.*]] = mul i32 [[C]], [[C]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: [[TARGETBLOCK:%.*]] = call i1 @outlined_ir_func_0(ptr [[TMP0]], i32 [[C]], ptr [[DOTCE_LOC]]) ; CHECK-NEXT: [[DOTCE_RELOAD:%.*]] = load i32, ptr [[DOTCE_LOC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[DOTCE_LOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DOTCE_LOC]]) ; CHECK-NEXT: br i1 [[TARGETBLOCK]], label [[FIRST:%.*]], label [[NEXT:%.*]] ; CHECK: dummy: ; CHECK-NEXT: ret void diff --git a/llvm/test/Transforms/IndVarSimplify/exit_value_test2.ll b/llvm/test/Transforms/IndVarSimplify/exit_value_test2.ll index 66c7222ce6d4e..697c81603318d 100644 --- a/llvm/test/Transforms/IndVarSimplify/exit_value_test2.ll +++ b/llvm/test/Transforms/IndVarSimplify/exit_value_test2.ll @@ -6,14 +6,14 @@ ; udiv will be introduced by expand and the cost will be high. declare void @_Z3mixRjj(ptr dereferenceable(4), i32) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define i32 @_Z3fooPKcjj(ptr nocapture readonly %s, i32 %len, i32 %c) { ; CHECK-LABEL: @_Z3fooPKcjj( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: store i32 -1640531527, ptr [[A]], align 4 ; CHECK-NEXT: [[CMP8:%.*]] = icmp ugt i32 [[LEN:%.*]], 11 ; CHECK-NEXT: br i1 [[CMP8]], label [[WHILE_BODY_LR_PH:%.*]], label [[WHILE_END:%.*]] @@ -40,12 +40,12 @@ define i32 @_Z3fooPKcjj(ptr nocapture readonly %s, i32 %len, i32 %c) { ; CHECK-NEXT: [[KEYLEN_0_LCSSA:%.*]] = phi i32 [ [[SUB_LCSSA]], [[WHILE_COND_WHILE_END_CRIT_EDGE]] ], [ [[LEN]], [[ENTRY:%.*]] ] ; CHECK-NEXT: call void @_Z3mixRjj(ptr dereferenceable(4) [[A]], i32 [[KEYLEN_0_LCSSA]]) ; CHECK-NEXT: [[T4:%.*]] = load i32, ptr [[A]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret i32 [[T4]] ; entry: %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) store i32 -1640531527, ptr %a, align 4 %cmp8 = icmp ugt i32 %len, 11 br i1 %cmp8, label %while.body.lr.ph, label %while.end @@ -76,7 +76,7 @@ while.end: ; preds = %while.cond.while.en %keylen.0.lcssa = phi i32 [ %sub.lcssa, %while.cond.while.end_crit_edge ], [ %len, %entry ] call void @_Z3mixRjj(ptr dereferenceable(4) %a, i32 %keylen.0.lcssa) %t4 = load i32, ptr %a, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret i32 %t4 } diff --git a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/lifetime.ll b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/lifetime.ll index 053d073d06309..4c04e6d02e7be 100644 --- a/llvm/test/Transforms/InferAddressSpaces/AMDGPU/lifetime.ll +++ b/llvm/test/Transforms/InferAddressSpaces/AMDGPU/lifetime.ll @@ -4,17 +4,17 @@ define i32 @lifetime_flat_pointer() { ; CHECK-LABEL: define i32 @lifetime_flat_pointer() { ; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i32, align 4, addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p5(i64 4, ptr addrspace(5) [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p5(ptr addrspace(5) [[ALLOCA]]) ; CHECK-NEXT: store i32 1, ptr addrspace(5) [[ALLOCA]], align 4 ; CHECK-NEXT: [[RET:%.*]] = load i32, ptr addrspace(5) [[ALLOCA]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p5(i64 4, ptr addrspace(5) [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p5(ptr addrspace(5) [[ALLOCA]]) ; CHECK-NEXT: ret i32 [[RET]] ; %alloca = alloca i32, align 4, addrspace(5) %flat = addrspacecast ptr addrspace(5) %alloca to ptr - call void @llvm.lifetime.start(i64 4, ptr addrspace(5) %alloca) + call void @llvm.lifetime.start(ptr addrspace(5) %alloca) store i32 1, ptr %flat, align 4 %ret = load i32, ptr %flat, align 4 - call void @llvm.lifetime.end(i64 4, ptr addrspace(5) %alloca) + call void @llvm.lifetime.end(ptr addrspace(5) %alloca) ret i32 %ret } diff --git a/llvm/test/Transforms/InferAddressSpaces/NVPTX/lifetime.ll b/llvm/test/Transforms/InferAddressSpaces/NVPTX/lifetime.ll index 31e914a64de4e..1a214162d19f7 100644 --- a/llvm/test/Transforms/InferAddressSpaces/NVPTX/lifetime.ll +++ b/llvm/test/Transforms/InferAddressSpaces/NVPTX/lifetime.ll @@ -7,20 +7,20 @@ define i32 @lifetime_flat_pointer() { ; CHECK-LABEL: define i32 @lifetime_flat_pointer() { ; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[TMP1:%.*]] = addrspacecast ptr [[ALLOCA]] to ptr addrspace(5) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ALLOCA]]) ; CHECK-NEXT: store i32 1, ptr addrspace(5) [[TMP1]], align 4 ; CHECK-NEXT: [[RET:%.*]] = load i32, ptr addrspace(5) [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ALLOCA]]) ; CHECK-NEXT: ret i32 [[RET]] ; %alloca = alloca i32, align 4 %1 = addrspacecast ptr %alloca to ptr addrspace(5) - call void @llvm.lifetime.start.p0(i64 4, ptr %alloca) + call void @llvm.lifetime.start.p0(ptr %alloca) store i32 1, ptr addrspace(5) %1, align 4 %ret = load i32, ptr addrspace(5) %1, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %alloca) + call void @llvm.lifetime.end.p0(ptr %alloca) ret i32 %ret } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Transforms/Inline/AArch64/sve-alloca-merge.ll b/llvm/test/Transforms/Inline/AArch64/sve-alloca-merge.ll index c1375cbf3493d..54daf7c3f4cc9 100644 --- a/llvm/test/Transforms/Inline/AArch64/sve-alloca-merge.ll +++ b/llvm/test/Transforms/Inline/AArch64/sve-alloca-merge.ll @@ -14,8 +14,8 @@ entry: define i64 @foo() { ; CHECK-LABEL: @foo( -; CHECK: call void @llvm.lifetime.start.p0(i64 -1, ptr %{{.*}}) -; CHECK: call void @llvm.lifetime.end.p0(i64 -1, ptr %{{.*}}) +; CHECK: call void @llvm.lifetime.start.p0(ptr %{{.*}}) +; CHECK: call void @llvm.lifetime.end.p0(ptr %{{.*}}) entry: %a = alloca , align 16 store zeroinitializer, ptr %a, align 16 diff --git a/llvm/test/Transforms/Inline/ML/state-tracking-coro.ll b/llvm/test/Transforms/Inline/ML/state-tracking-coro.ll index bbce9e43b10c9..c3f6dd700b451 100644 --- a/llvm/test/Transforms/Inline/ML/state-tracking-coro.ll +++ b/llvm/test/Transforms/Inline/ML/state-tracking-coro.ll @@ -31,10 +31,10 @@ entry: await.ready: %StrayCoroSave = call token @llvm.coro.save(ptr null) %val = load i32, ptr %ref.tmp7 - call void @llvm.lifetime.start.p0(i64 4, ptr %testval) + call void @llvm.lifetime.start.p0(ptr %testval) %test = load i32, ptr %testval call void @print(i32 %test) - call void @llvm.lifetime.end.p0(i64 4, ptr %testval) + call void @llvm.lifetime.end.p0(ptr %testval) call void @print(i32 %val) br label %exit exit: @@ -54,5 +54,5 @@ declare i8 @llvm.coro.suspend(token, i1) #3 declare void @"\01??3@YAXPEAX@Z"(ptr) local_unnamed_addr #10 declare ptr @llvm.coro.free(token, ptr nocapture readonly) #2 declare i1 @llvm.coro.end(ptr, i1) #3 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #4 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 diff --git a/llvm/test/Transforms/Inline/access-attributes-prop.ll b/llvm/test/Transforms/Inline/access-attributes-prop.ll index 28fa44ecc5b13..fed2590d36669 100644 --- a/llvm/test/Transforms/Inline/access-attributes-prop.ll +++ b/llvm/test/Transforms/Inline/access-attributes-prop.ll @@ -410,9 +410,9 @@ define void @prop_fn_decl_fail_alloca(ptr %p) { ; CHECK-LABEL: define {{[^@]+}}@prop_fn_decl_fail_alloca ; CHECK-SAME: (ptr [[P:%.*]]) { ; CHECK-NEXT: [[A_I:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @bar2(ptr [[P]], ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @bar1(ptr [[P]]) ; CHECK-NEXT: ret void ; @@ -425,9 +425,9 @@ define void @prop_cb_def_wr_fail_alloca(ptr %p) { ; CHECK-LABEL: define {{[^@]+}}@prop_cb_def_wr_fail_alloca ; CHECK-SAME: (ptr [[P:%.*]]) { ; CHECK-NEXT: [[A_I:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @bar2(ptr [[P]], ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @bar1(ptr [[P]]) ; CHECK-NEXT: ret void ; @@ -440,10 +440,10 @@ define void @prop_fn_decl_partially_okay_alloca(ptr %p) { ; CHECK-LABEL: define {{[^@]+}}@prop_fn_decl_partially_okay_alloca ; CHECK-SAME: (ptr [[P:%.*]]) { ; CHECK-NEXT: [[A_I:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @bar1(ptr [[P]]) ; CHECK-NEXT: call void @bar2(ptr [[P]], ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @bar1(ptr [[P]]) ; CHECK-NEXT: ret void ; @@ -456,10 +456,10 @@ define void @prop_cb_def_wr_partially_okay_alloca(ptr %p) { ; CHECK-LABEL: define {{[^@]+}}@prop_cb_def_wr_partially_okay_alloca ; CHECK-SAME: (ptr [[P:%.*]]) { ; CHECK-NEXT: [[A_I:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @bar1(ptr [[P]]) ; CHECK-NEXT: call void @bar2(ptr [[P]], ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @bar1(ptr [[P]]) ; CHECK-NEXT: ret void ; diff --git a/llvm/test/Transforms/Inline/byval-align.ll b/llvm/test/Transforms/Inline/byval-align.ll index 0b135aa570a72..a23f3640abb13 100644 --- a/llvm/test/Transforms/Inline/byval-align.ll +++ b/llvm/test/Transforms/Inline/byval-align.ll @@ -28,13 +28,13 @@ define void @byval_caller(ptr nocapture align 64 %a, ptr %b) #0 { ; CHECK-SAME: (ptr align 64 captures(none) [[A:%.*]], ptr [[B:%.*]]) #[[ATTR0]] { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A1:%.*]] = alloca float, align 128 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A1]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 128 [[A1]], ptr align 128 [[A]], i64 4, i1 false) ; CHECK-NEXT: [[LOAD_I:%.*]] = load float, ptr [[A1]], align 4 ; CHECK-NEXT: [[B_IDX_I:%.*]] = getelementptr inbounds float, ptr [[B]], i64 8 ; CHECK-NEXT: [[ADD_I:%.*]] = fadd float [[LOAD_I]], 2.000000e+00 ; CHECK-NEXT: store float [[ADD_I]], ptr [[B_IDX_I]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A1]]) ; CHECK-NEXT: [[CALLER_LOAD:%.*]] = load float, ptr [[B]], align 4 ; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds float, ptr [[A]], i64 7 ; CHECK-NEXT: store float [[CALLER_LOAD]], ptr [[ARRAYIDX]], align 4 diff --git a/llvm/test/Transforms/Inline/byval-tail-call.ll b/llvm/test/Transforms/Inline/byval-tail-call.ll index 808104c591791..f8fd4a646aa1d 100644 --- a/llvm/test/Transforms/Inline/byval-tail-call.ll +++ b/llvm/test/Transforms/Inline/byval-tail-call.ll @@ -22,11 +22,11 @@ define void @bar(ptr byval(i32) %x) { define void @foo(ptr %x) { ; CHECK-LABEL: @foo( ; CHECK-NEXT: [[X1:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X1]]) ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[X:%.*]], align 1 ; CHECK-NEXT: store i32 [[TMP2]], ptr [[X1]], align 4 ; CHECK-NEXT: call void @ext(ptr nonnull [[X1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X1]]) ; CHECK-NEXT: ret void ; call void @bar(ptr byval(i32) %x) @@ -42,12 +42,12 @@ define internal void @qux(ptr byval(i32) %x) { define void @frob(ptr %x) { ; CHECK-LABEL: @frob( ; CHECK-NEXT: [[X1:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X1]]) ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[X:%.*]], align 1 ; CHECK-NEXT: store i32 [[TMP2]], ptr [[X1]], align 4 ; CHECK-NEXT: call void @ext(ptr nonnull [[X1]]) ; CHECK-NEXT: tail call void @ext(ptr null) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X1]]) ; CHECK-NEXT: ret void ; tail call void @qux(ptr byval(i32) %x) @@ -71,11 +71,11 @@ define void @bar2(ptr byval(i32) %x) { define void @foobar(ptr %x) { ; CHECK-LABEL: @foobar( ; CHECK-NEXT: [[X1:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X1]]) ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[X:%.*]], align 1 ; CHECK-NEXT: store i32 [[TMP2]], ptr [[X1]], align 4 ; CHECK-NEXT: tail call void @ext2(ptr nonnull byval(i32) [[X1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X1]]) ; CHECK-NEXT: ret void ; tail call void @bar2(ptr byval(i32) %x) @@ -85,9 +85,9 @@ define void @foobar(ptr %x) { define void @barfoo() { ; CHECK-LABEL: @barfoo( ; CHECK-NEXT: [[X1:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X1]]) ; CHECK-NEXT: tail call void @ext2(ptr nonnull byval(i32) [[X1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X1]]) ; CHECK-NEXT: ret void ; %x = alloca i32 diff --git a/llvm/test/Transforms/Inline/byval-with-non-alloca-addrspace.ll b/llvm/test/Transforms/Inline/byval-with-non-alloca-addrspace.ll index 1d1cb459d53b6..e79ac66423d12 100644 --- a/llvm/test/Transforms/Inline/byval-with-non-alloca-addrspace.ll +++ b/llvm/test/Transforms/Inline/byval-with-non-alloca-addrspace.ll @@ -26,11 +26,11 @@ define i64 @foo(ptr %arg) { ; CHECK-LABEL: define i64 @foo( ; CHECK-SAME: ptr [[ARG:%.*]]) { ; CHECK-NEXT: [[ARG1:%.*]] = alloca [[STRUCT:%.*]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[ARG1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ARG1]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[ARG1]], ptr align 8 [[ARG]], i64 16, i1 false) ; CHECK-NEXT: [[TMP1:%.*]] = getelementptr [[STRUCT]], ptr [[ARG1]], i64 0, i32 1 ; CHECK-NEXT: [[TMP2:%.*]] = load i64, ptr [[TMP1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[ARG1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ARG1]]) ; CHECK-NEXT: ret i64 0 ; %1 = call i64 @bar(ptr byval(%struct) align 8 %arg) diff --git a/llvm/test/Transforms/Inline/byval.ll b/llvm/test/Transforms/Inline/byval.ll index b4a19c55c20a0..c945d7fe1a01a 100644 --- a/llvm/test/Transforms/Inline/byval.ll +++ b/llvm/test/Transforms/Inline/byval.ll @@ -35,12 +35,12 @@ define i32 @test1() nounwind { ; CHECK-NEXT: store i32 1, ptr [[TMP1]], align 8 ; CHECK-NEXT: [[TMP4:%.*]] = getelementptr [[STRUCT_SS]], ptr [[S]], i32 0, i32 1 ; CHECK-NEXT: store i64 2, ptr [[TMP4]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr [[S1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[S1]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[S1]], ptr [[S]], i64 12, i1 false) ; CHECK-NEXT: [[TMP1_I:%.*]] = load i32, ptr [[S1]], align 4 ; CHECK-NEXT: [[TMP2_I:%.*]] = add i32 [[TMP1_I]], 1 ; CHECK-NEXT: store i32 [[TMP2_I]], ptr [[S1]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr [[S1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[S1]]) ; CHECK-NEXT: ret i32 0 ; entry: @@ -104,10 +104,10 @@ define void @test3() nounwind { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[S1:%.*]] = alloca [[STRUCT_SS:%.*]], align 64 ; CHECK-NEXT: [[S:%.*]] = alloca [[STRUCT_SS]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr [[S1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[S1]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 64 [[S1]], ptr align 64 [[S]], i64 12, i1 false) ; CHECK-NEXT: call void @g3(ptr align 64 [[S1]]) #[[ATTR0]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr [[S1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[S1]]) ; CHECK-NEXT: ret void ; entry: @@ -157,12 +157,12 @@ define i32 @test5() { ; CHECK-LABEL: define i32 @test5() { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[B:%.*]] = alloca [[STRUCT_S0:%.*]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[B]], ptr align 4 @b, i64 4, i1 false) ; CHECK-NEXT: store i32 0, ptr @b, align 4 ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[B]], align 4 ; CHECK-NEXT: store i32 [[TMP0]], ptr @a, align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B]]) ; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr @a, align 4 ; CHECK-NEXT: ret i32 [[TMP1]] ; diff --git a/llvm/test/Transforms/Inline/callbr.ll b/llvm/test/Transforms/Inline/callbr.ll index 160770051c368..57e92bb2a6774 100644 --- a/llvm/test/Transforms/Inline/callbr.ll +++ b/llvm/test/Transforms/Inline/callbr.ll @@ -10,8 +10,8 @@ define dso_local i32 @main() { ; CHECK-NEXT: [[I1_I:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 ; CHECK-NEXT: store i32 0, ptr [[I]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I_I]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I1_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I1_I]]) ; CHECK-NEXT: store i32 0, ptr [[I1_I]], align 4 ; CHECK-NEXT: [[I2_I:%.*]] = load i32, ptr [[I1_I]], align 4 ; CHECK-NEXT: callbr void asm sideeffect "", "r,!i,!i,~{dirflag},~{fpsr},~{flags}"(i32 [[I2_I]]) @@ -27,8 +27,8 @@ define dso_local i32 @main() { ; CHECK-NEXT: br label [[T32_EXIT]] ; CHECK: t32.exit: ; CHECK-NEXT: [[I7_I:%.*]] = load i32, ptr [[I_I]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I_I]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I1_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I1_I]]) ; CHECK-NEXT: ret i32 [[I7_I]] ; bb: diff --git a/llvm/test/Transforms/Inline/devirtualize-4.ll b/llvm/test/Transforms/Inline/devirtualize-4.ll index d29360f73b473..f96b5a9cdcab4 100644 --- a/llvm/test/Transforms/Inline/devirtualize-4.ll +++ b/llvm/test/Transforms/Inline/devirtualize-4.ll @@ -48,14 +48,14 @@ define dso_local void @_Z4Testv() local_unnamed_addr { entry: %o = alloca %class.Impl, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %o) + call void @llvm.lifetime.start.p0(ptr nonnull %o) call void @_ZN4ImplC2Ev(ptr nonnull %o) call fastcc void @_ZL11IndirectRunR9Interface(ptr nonnull dereferenceable(8) %o) - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %o) + call void @llvm.lifetime.end.p0(ptr nonnull %o) ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) define linkonce_odr dso_local void @_ZN4ImplC2Ev(ptr %this) unnamed_addr align 2 { entry: @@ -74,7 +74,7 @@ entry: ret void } -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define linkonce_odr dso_local void @_ZN9InterfaceC2Ev(ptr %this) unnamed_addr align 2 { entry: @@ -85,10 +85,10 @@ entry: define linkonce_odr dso_local void @_ZN4Impl3RunEv(ptr %this) unnamed_addr align 2 { entry: %ref.tmp = alloca ptr, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %ref.tmp) + call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp) store ptr %this, ptr %ref.tmp, align 8 call void @_Z13DoNotOptimizeIP4ImplEvRKT_(ptr nonnull dereferenceable(8) %ref.tmp) - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %ref.tmp) + call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp) ret void } @@ -160,10 +160,10 @@ memptr.end: ; preds = %memptr.nonvirtual, define i32 @_Z2g1v() { entry: %a = alloca %struct.A, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) call void @_ZN1AC1Ev(ptr nonnull %a) %call = call i32 @_Z1fP1AMS_FivE(ptr nonnull %a, i64 1, i64 0) - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) ret i32 %call } @@ -176,10 +176,10 @@ entry: define i32 @_Z2g2v() { entry: %a = alloca %struct.A, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) call void @_ZN1AC1Ev(ptr nonnull %a) %call = call i32 @_Z1fP1AMS_FivE(ptr nonnull %a, i64 9, i64 0) - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) ret i32 %call } diff --git a/llvm/test/Transforms/Inline/dynamic-alloca-simplified-large.ll b/llvm/test/Transforms/Inline/dynamic-alloca-simplified-large.ll index 9b293d39c85f9..aad192a84fe24 100644 --- a/llvm/test/Transforms/Inline/dynamic-alloca-simplified-large.ll +++ b/llvm/test/Transforms/Inline/dynamic-alloca-simplified-large.ll @@ -54,9 +54,9 @@ define void @caller2_below_threshold(ptr %p1, i1 %b) { ; CHECK-NEXT: br i1 [[COND]], label [[EXIT:%.*]], label [[SPLIT:%.*]] ; CHECK: split: ; CHECK-NEXT: [[SAVEDSTACK:%.*]] = call ptr @llvm.stacksave.p0() -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 60000, ptr [[VLA_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[VLA_I]]) ; CHECK-NEXT: call void @extern_call(ptr nonnull [[VLA_I]]) #[[ATTR3]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 60000, ptr [[VLA_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[VLA_I]]) ; CHECK-NEXT: call void @llvm.stackrestore.p0(ptr [[SAVEDSTACK]]) ; CHECK-NEXT: br label [[EXIT]] ; CHECK: exit: diff --git a/llvm/test/Transforms/Inline/inline-deferred-instsimplify.ll b/llvm/test/Transforms/Inline/inline-deferred-instsimplify.ll index c74351b300399..02f5774d05076 100644 --- a/llvm/test/Transforms/Inline/inline-deferred-instsimplify.ll +++ b/llvm/test/Transforms/Inline/inline-deferred-instsimplify.ll @@ -52,7 +52,7 @@ return: ; preds = %check_pointers_are_ define i32 @main() { ; CHECK-LABEL: define i32 @main() { ; CHECK-NEXT: [[G_VAR:%.*]] = alloca [[STRUCT_A:%.*]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr [[G_VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[G_VAR]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[G_VAR]], ptr align 8 @g_var, i64 20, i1 false) ; CHECK-NEXT: [[VAL_I:%.*]] = load i32, ptr [[G_VAR]], align 8 ; CHECK-NEXT: [[DOTNOT_I:%.*]] = icmp eq i32 [[VAL_I]], 0 @@ -68,7 +68,7 @@ define i32 @main() { ; CHECK-NEXT: call void @abort() ; CHECK-NEXT: unreachable ; CHECK: callee.exit: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr [[G_VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[G_VAR]]) ; CHECK-NEXT: ret i32 0 ; call void @callee(ptr noundef byval(%struct.a) align 8 @g_var) diff --git a/llvm/test/Transforms/Inline/inline-tail.ll b/llvm/test/Transforms/Inline/inline-tail.ll index 0bfd0565eef57..b2bf3bbdf26b3 100644 --- a/llvm/test/Transforms/Inline/inline-tail.ll +++ b/llvm/test/Transforms/Inline/inline-tail.ll @@ -64,7 +64,7 @@ define void @test_byval_a(ptr byval(i32) %p) { ; CHECK-LABEL: define void @test_byval_a ; CHECK-SAME: (ptr byval(i32) [[P:%.*]]) { ; CHECK-NEXT: [[P1:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[P1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[P1]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[P1]], ptr [[P]], i64 4, i1 false) ; CHECK-NEXT: musttail call void @test_byval_c(ptr byval(i32) [[P1]]) ; CHECK-NEXT: ret void @@ -87,7 +87,7 @@ define void @test_dynalloca_a(ptr byval(i32) %p, i32 %n) { ; CHECK-SAME: (ptr byval(i32) [[P:%.*]], i32 [[N:%.*]]) { ; CHECK-NEXT: [[P1:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[SAVEDSTACK:%.*]] = call ptr @llvm.stacksave.p0() -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[P1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[P1]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[P1]], ptr [[P]], i64 4, i1 false) ; CHECK-NEXT: [[BUF_I:%.*]] = alloca i8, i32 [[N]], align 1 ; CHECK-NEXT: call void @escape(ptr [[BUF_I]]) diff --git a/llvm/test/Transforms/Inline/inlined-mustprogress-loop-metadata.ll b/llvm/test/Transforms/Inline/inlined-mustprogress-loop-metadata.ll index 4e13ff4e90075..4ac4675720385 100644 --- a/llvm/test/Transforms/Inline/inlined-mustprogress-loop-metadata.ll +++ b/llvm/test/Transforms/Inline/inlined-mustprogress-loop-metadata.ll @@ -312,9 +312,9 @@ define void @caller_multiple(i32 %a, i32 %b) #1 { ; CHECK-NEXT: store i32 [[INC]], ptr [[I]], align 4 ; CHECK-NEXT: br label %[[FOR_COND1]] ; CHECK: [[FOR_END4]]: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A_ADDR_I]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[B_ADDR_I]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_ADDR_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B_ADDR_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I_I]]) ; CHECK-NEXT: store i32 0, ptr [[A_ADDR_I]], align 4 ; CHECK-NEXT: store i32 5, ptr [[B_ADDR_I]], align 4 ; CHECK-NEXT: br label %[[FOR_COND_I:.*]] @@ -526,9 +526,9 @@ define void @caller_nested(i32 %a, i32 %b) #1 { ; CHECK-NEXT: store i32 [[INC14]], ptr [[I9]], align 4 ; CHECK-NEXT: br label %[[FOR_COND10]] ; CHECK: [[FOR_END15]]: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A_ADDR_I]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[B_ADDR_I]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_ADDR_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B_ADDR_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I_I]]) ; CHECK-NEXT: store i32 0, ptr [[A_ADDR_I]], align 4 ; CHECK-NEXT: store i32 5, ptr [[B_ADDR_I]], align 4 ; CHECK-NEXT: br label %[[FOR_COND_I:.*]] diff --git a/llvm/test/Transforms/Inline/lifetime-no-datalayout.ll b/llvm/test/Transforms/Inline/lifetime-no-datalayout.ll index 7438ef3b4e744..074550b41f263 100644 --- a/llvm/test/Transforms/Inline/lifetime-no-datalayout.ll +++ b/llvm/test/Transforms/Inline/lifetime-no-datalayout.ll @@ -18,9 +18,9 @@ define void @helper() { define void @test() { ; CHECK-LABEL: define void @test() { ; CHECK-NEXT: [[A_I:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @use(ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I]]) ; CHECK-NEXT: ret void ; call void @helper() diff --git a/llvm/test/Transforms/Inline/lifetime.ll b/llvm/test/Transforms/Inline/lifetime.ll index 3ef5019303b48..06b911d20257e 100644 --- a/llvm/test/Transforms/Inline/lifetime.ll +++ b/llvm/test/Transforms/Inline/lifetime.ll @@ -2,21 +2,21 @@ ; RUN: opt -passes=inline -S < %s | FileCheck %s target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128" -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) define void @helper_both_markers() { ; CHECK-LABEL: define void @helper_both_markers() { ; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %a = alloca i8 ; Size in llvm.lifetime.start / llvm.lifetime.end differs from ; allocation size. We should use the former. - call void @llvm.lifetime.start.p0(i64 2, ptr %a) - call void @llvm.lifetime.end.p0(i64 2, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -24,10 +24,10 @@ define void @test_both_markers() { ; CHECK-LABEL: define void @test_both_markers() { ; CHECK-NEXT: [[A_I1:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[A_I:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr [[A_I1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr [[A_I1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I1]]) ; CHECK-NEXT: ret void ; call void @helper_both_markers() @@ -54,12 +54,12 @@ define void @test_no_marker() { ; CHECK-LABEL: define void @test_no_marker() { ; CHECK-NEXT: [[A_I1:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[A_I:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @use(ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[A_I1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I1]]) ; CHECK-NEXT: call void @use(ptr [[A_I1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[A_I1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I1]]) ; CHECK-NEXT: ret void ; call void @helper_no_markers() @@ -70,13 +70,13 @@ define void @test_no_marker() { define void @helper_two_casts() { ; CHECK-LABEL: define void @helper_two_casts() { ; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %a = alloca i32 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -84,10 +84,10 @@ define void @test_two_casts() { ; CHECK-LABEL: define void @test_two_casts() { ; CHECK-NEXT: [[A_I1:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[A_I:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A_I1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A_I1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I1]]) ; CHECK-NEXT: ret void ; call void @helper_two_casts() @@ -109,9 +109,9 @@ define void @helper_arrays_alloca() { define void @test_arrays_alloca() { ; CHECK-LABEL: define void @test_arrays_alloca() { ; CHECK-NEXT: [[A_I:%.*]] = alloca [10 x i32], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 40, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_I]]) ; CHECK-NEXT: call void @use(ptr [[A_I]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 40, ptr [[A_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A_I]]) ; CHECK-NEXT: ret void ; call void @helper_arrays_alloca() diff --git a/llvm/test/Transforms/Inline/no-inline-incompatible-gc.ll b/llvm/test/Transforms/Inline/no-inline-incompatible-gc.ll index 531801df7cc46..2bded9ce4f916 100644 --- a/llvm/test/Transforms/Inline/no-inline-incompatible-gc.ll +++ b/llvm/test/Transforms/Inline/no-inline-incompatible-gc.ll @@ -16,12 +16,12 @@ define i32 @caller_no_gc() { ; CHECK-LABEL: define i32 @caller_no_gc() gc "example" { ; CHECK-NEXT: [[ROOT_I:%.*]] = alloca ptr, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[ROOT_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ROOT_I]]) ; CHECK-NEXT: call void @llvm.gcroot(ptr [[ROOT_I]], ptr null) ; CHECK-NEXT: [[OBJ_I:%.*]] = call ptr @h() ; CHECK-NEXT: store ptr [[OBJ_I]], ptr [[ROOT_I]], align 8 ; CHECK-NEXT: [[LENGTH_I:%.*]] = load i32, ptr [[OBJ_I]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[ROOT_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ROOT_I]]) ; CHECK-NEXT: ret i32 [[LENGTH_I]] ; %x = call i32 @callee_with_gc() @@ -32,12 +32,12 @@ define i32 @caller_no_gc() { define i32 @caller_same_gc() gc "example" { ; CHECK-LABEL: define i32 @caller_same_gc() gc "example" { ; CHECK-NEXT: [[ROOT_I:%.*]] = alloca ptr, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[ROOT_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ROOT_I]]) ; CHECK-NEXT: call void @llvm.gcroot(ptr [[ROOT_I]], ptr null) ; CHECK-NEXT: [[OBJ_I:%.*]] = call ptr @h() ; CHECK-NEXT: store ptr [[OBJ_I]], ptr [[ROOT_I]], align 8 ; CHECK-NEXT: [[LENGTH_I:%.*]] = load i32, ptr [[OBJ_I]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[ROOT_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ROOT_I]]) ; CHECK-NEXT: ret i32 [[LENGTH_I]] ; %x = call i32 @callee_with_gc() @@ -97,12 +97,12 @@ define i32 @callee_with_other_gc() gc "other-example" { define i32 @caller_inline_first_caller() { ; CHECK-LABEL: define i32 @caller_inline_first_caller() gc "example" { ; CHECK-NEXT: [[ROOT_I:%.*]] = alloca ptr, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[ROOT_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ROOT_I]]) ; CHECK-NEXT: call void @llvm.gcroot(ptr [[ROOT_I]], ptr null) ; CHECK-NEXT: [[OBJ_I:%.*]] = call ptr @h() ; CHECK-NEXT: store ptr [[OBJ_I]], ptr [[ROOT_I]], align 8 ; CHECK-NEXT: [[LENGTH_I:%.*]] = load i32, ptr [[OBJ_I]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[ROOT_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ROOT_I]]) ; CHECK-NEXT: [[Y:%.*]] = call i32 @callee_with_other_gc() ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[LENGTH_I]], [[Y]] ; CHECK-NEXT: ret i32 [[ADD]] @@ -118,12 +118,12 @@ define i32 @caller_inline_first_caller() { define i32 @caller_inline_second_caller() gc "example" { ; CHECK-LABEL: define i32 @caller_inline_second_caller() gc "example" { ; CHECK-NEXT: [[ROOT_I:%.*]] = alloca ptr, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[ROOT_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ROOT_I]]) ; CHECK-NEXT: call void @llvm.gcroot(ptr [[ROOT_I]], ptr null) ; CHECK-NEXT: [[OBJ_I:%.*]] = call ptr @h() ; CHECK-NEXT: store ptr [[OBJ_I]], ptr [[ROOT_I]], align 8 ; CHECK-NEXT: [[LENGTH_I:%.*]] = load i32, ptr [[OBJ_I]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[ROOT_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ROOT_I]]) ; CHECK-NEXT: [[Y:%.*]] = call i32 @callee_with_other_gc() ; CHECK-NEXT: [[ADD:%.*]] = add i32 [[LENGTH_I]], [[Y]] ; CHECK-NEXT: ret i32 [[ADD]] diff --git a/llvm/test/Transforms/Inline/noalias-calls-always.ll b/llvm/test/Transforms/Inline/noalias-calls-always.ll index a80cd12b26b65..18a65b9876412 100644 --- a/llvm/test/Transforms/Inline/noalias-calls-always.ll +++ b/llvm/test/Transforms/Inline/noalias-calls-always.ll @@ -33,13 +33,13 @@ define void @foo(ptr nocapture %a, ptr nocapture readonly %c, ptr nocapture %b) ; CHECK-NEXT: [[L_I:%.*]] = alloca i8, i32 512, align 1 ; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata [[META0:![0-9]+]]) ; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata [[META3:![0-9]+]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 512, ptr [[L_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[L_I]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[A:%.*]], ptr align 16 [[B:%.*]], i64 16, i1 false), !noalias [[META3]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[B]], ptr readonly align 16 [[C:%.*]], i64 16, i1 false), !noalias [[META0]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[A]], ptr readonly align 16 [[C]], i64 16, i1 false), !alias.scope [[META5:![0-9]+]] ; CHECK-NEXT: call void @hey(), !noalias [[META5]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[L_I]], ptr readonly align 16 [[C]], i64 16, i1 false), !noalias [[META0]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 512, ptr [[L_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[L_I]]) ; CHECK-NEXT: ret void ; entry: @@ -74,13 +74,13 @@ define void @foo_cs(ptr nocapture %a, ptr nocapture readonly %c, ptr nocapture % ; CHECK-NEXT: [[L_I:%.*]] = alloca i8, i32 512, align 1 ; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata [[META6:![0-9]+]]) ; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata [[META9:![0-9]+]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 512, ptr [[L_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[L_I]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[A:%.*]], ptr align 16 [[B:%.*]], i64 16, i1 false), !noalias [[META9]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[B]], ptr readonly align 16 [[C:%.*]], i64 16, i1 false), !noalias [[META6]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[A]], ptr readonly align 16 [[C]], i64 16, i1 false), !alias.scope [[META11:![0-9]+]] ; CHECK-NEXT: call void @hey(), !noalias [[META11]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[L_I]], ptr readonly align 16 [[C]], i64 16, i1 false), !noalias [[META6]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 512, ptr [[L_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[L_I]]) ; CHECK-NEXT: ret void ; entry: diff --git a/llvm/test/Transforms/Inline/noalias-calls.ll b/llvm/test/Transforms/Inline/noalias-calls.ll index fdbad60b0e1cd..4673daefa4db2 100644 --- a/llvm/test/Transforms/Inline/noalias-calls.ll +++ b/llvm/test/Transforms/Inline/noalias-calls.ll @@ -36,13 +36,13 @@ define void @foo(ptr nocapture %a, ptr nocapture readonly %c, ptr nocapture %b) ; CHECK-NEXT: [[L_I:%.*]] = alloca i8, i32 512, align 1 ; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata [[META0:![0-9]+]]) ; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata [[META3:![0-9]+]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 512, ptr [[L_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[L_I]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[A]], ptr align 16 [[B]], i64 16, i1 false), !noalias [[META3]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[B]], ptr readonly align 16 [[C]], i64 16, i1 false), !noalias [[META0]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[A]], ptr readonly align 16 [[C]], i64 16, i1 false), !alias.scope [[META5:![0-9]+]] ; CHECK-NEXT: call void @hey(), !noalias [[META5]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[L_I]], ptr readonly align 16 [[C]], i64 16, i1 false), !noalias [[META0]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 512, ptr [[L_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[L_I]]) ; CHECK-NEXT: ret void ; entry: @@ -79,13 +79,13 @@ define void @foo_cs(ptr nocapture %a, ptr nocapture readonly %c, ptr nocapture % ; CHECK-NEXT: [[L_I:%.*]] = alloca i8, i32 512, align 1 ; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata [[META6:![0-9]+]]) ; CHECK-NEXT: call void @llvm.experimental.noalias.scope.decl(metadata [[META9:![0-9]+]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 512, ptr [[L_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[L_I]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[A]], ptr align 16 [[B]], i64 16, i1 false), !noalias [[META9]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[B]], ptr readonly align 16 [[C]], i64 16, i1 false), !noalias [[META6]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[A]], ptr readonly align 16 [[C]], i64 16, i1 false), !alias.scope [[META11:![0-9]+]] ; CHECK-NEXT: call void @hey(), !noalias [[META11]] ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 16 [[L_I]], ptr readonly align 16 [[C]], i64 16, i1 false), !noalias [[META6]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 512, ptr [[L_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[L_I]]) ; CHECK-NEXT: ret void ; entry: diff --git a/llvm/test/Transforms/InstCombine/assume_inevitable.ll b/llvm/test/Transforms/InstCombine/assume_inevitable.ll index 2643c9b525cb5..5f27ff1e609ba 100644 --- a/llvm/test/Transforms/InstCombine/assume_inevitable.ll +++ b/llvm/test/Transforms/InstCombine/assume_inevitable.ll @@ -35,10 +35,10 @@ entry: %dummy_eq = icmp ugt i32 %loadres, 42 tail call void @llvm.assume(i1 %dummy_eq) - call void @llvm.lifetime.start.p0(i64 1, ptr %dummy) + call void @llvm.lifetime.start.p0(ptr %dummy) %i = call ptr @llvm.invariant.start.p0(i64 1, ptr %dummy) call void @llvm.invariant.end.p0(ptr %i, i64 1, ptr %dummy) - call void @llvm.lifetime.end.p0(i64 1, ptr %dummy) + call void @llvm.lifetime.end.p0(ptr %dummy) %m_a = call ptr @llvm.ptr.annotation.p0(ptr %m, ptr @.str, ptr @.str1, i32 2, ptr null) %objsz = call i64 @llvm.objectsize.i64.p0(ptr %c, i1 false) @@ -61,8 +61,8 @@ declare i64 @llvm.objectsize.i64.p0(ptr, i1) declare i32 @llvm.annotation.i32(i32, ptr, ptr, i32) declare ptr @llvm.ptr.annotation.p0(ptr, ptr, ptr, i32, ptr) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare ptr @llvm.invariant.start.p0(i64, ptr nocapture) declare void @llvm.invariant.end.p0(ptr, i64, ptr nocapture) diff --git a/llvm/test/Transforms/InstCombine/builtin-object-size-custom-dl.ll b/llvm/test/Transforms/InstCombine/builtin-object-size-custom-dl.ll index fe8b321114e47..93c4ae68c3a2f 100644 --- a/llvm/test/Transforms/InstCombine/builtin-object-size-custom-dl.ll +++ b/llvm/test/Transforms/InstCombine/builtin-object-size-custom-dl.ll @@ -15,16 +15,16 @@ entry: define i32 @objsize2_custom_idx() #0 { entry: %var = alloca %struct.V, align 4 - call void @llvm.lifetime.start.p0(i64 28, ptr %var) #3 + call void @llvm.lifetime.start.p0(ptr %var) #3 %arrayidx = getelementptr inbounds [10 x i8], ptr %var, i64 0, i64 1 %0 = call i64 @llvm.objectsize.i64.p0(ptr %arrayidx, i1 false, i1 false, i1 false) %conv = trunc i64 %0 to i32 - call void @llvm.lifetime.end.p0(i64 28, ptr %var) #3 + call void @llvm.lifetime.end.p0(ptr %var) #3 ret i32 %conv ; CHECK: ret i32 27 } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 declare ptr @malloc(i64) declare i64 @llvm.objectsize.i64.p0(ptr, i1, i1, i1) diff --git a/llvm/test/Transforms/InstCombine/builtin-object-size-offset.ll b/llvm/test/Transforms/InstCombine/builtin-object-size-offset.ll index b8919a76b122a..051466f95ab18 100644 --- a/llvm/test/Transforms/InstCombine/builtin-object-size-offset.ll +++ b/llvm/test/Transforms/InstCombine/builtin-object-size-offset.ll @@ -25,24 +25,24 @@ define i32 @foo1(i32 %N) { entry: %Big = alloca [20 x i8], align 16 %Small = alloca [10 x i8], align 1 - call void @llvm.lifetime.start.p0(i64 20, ptr %Big) - call void @llvm.lifetime.start.p0(i64 10, ptr %Small) + call void @llvm.lifetime.start.p0(ptr %Big) + call void @llvm.lifetime.start.p0(ptr %Small) %tobool = icmp ne i32 %N, 0 %add.ptr = getelementptr inbounds [20 x i8], ptr %Big, i64 0, i64 10 %cond = select i1 %tobool, ptr %add.ptr, ptr %Small %0 = call i64 @llvm.objectsize.i64.p0(ptr %cond, i1 false) %conv = trunc i64 %0 to i32 - call void @llvm.lifetime.end.p0(i64 10, ptr %Small) - call void @llvm.lifetime.end.p0(i64 20, ptr %Big) + call void @llvm.lifetime.end.p0(ptr %Small) + call void @llvm.lifetime.end.p0(ptr %Big) ret i32 %conv ; CHECK: ret i32 10 } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare i64 @llvm.objectsize.i64.p0(ptr, i1) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define void @foo() { entry: diff --git a/llvm/test/Transforms/InstCombine/builtin-object-size-ptr.ll b/llvm/test/Transforms/InstCombine/builtin-object-size-ptr.ll index 533451f26666a..3a7b76002b123 100644 --- a/llvm/test/Transforms/InstCombine/builtin-object-size-ptr.ll +++ b/llvm/test/Transforms/InstCombine/builtin-object-size-ptr.ll @@ -18,11 +18,11 @@ define i32 @foo() #0 { ; CHECK-NEXT: ret i32 27 ; %var = alloca %struct.V, align 4 - call void @llvm.lifetime.start.p0(i64 28, ptr %var) #3 + call void @llvm.lifetime.start.p0(ptr %var) #3 %arrayidx = getelementptr inbounds [10 x i8], ptr %var, i64 0, i64 1 %t1 = call i64 @llvm.objectsize.i64.p0(ptr %arrayidx, i1 false) %conv = trunc i64 %t1 to i32 - call void @llvm.lifetime.end.p0(i64 28, ptr %var) #3 + call void @llvm.lifetime.end.p0(ptr %var) #3 ret i32 %conv } @@ -63,9 +63,9 @@ define ptr @minimal_invariant_start_use(i8 %x) { ret ptr %i } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i64 @llvm.objectsize.i64.p0(ptr, i1) #2 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #0 declare ptr @llvm.invariant.start.p0(i64 immarg, ptr nocapture) #0 declare void @llvm.invariant.end.p0(ptr, i64 immarg, ptr nocapture) #0 diff --git a/llvm/test/Transforms/InstCombine/compare-alloca.ll b/llvm/test/Transforms/InstCombine/compare-alloca.ll index a27cd70fe8bab..55d92b79a9ed6 100644 --- a/llvm/test/Transforms/InstCombine/compare-alloca.ll +++ b/llvm/test/Transforms/InstCombine/compare-alloca.ll @@ -86,18 +86,18 @@ define i1 @alloca_argument_compare_escaped_through_store(ptr %arg, ptr %ptr) { ret i1 %cmp } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define i1 @alloca_argument_compare_benign_instrs(ptr %arg) { ; CHECK-LABEL: @alloca_argument_compare_benign_instrs( ; CHECK-NEXT: ret i1 false ; %alloc = alloca i8 - call void @llvm.lifetime.start.p0(i64 1, ptr %alloc) + call void @llvm.lifetime.start.p0(ptr %alloc) %cmp = icmp eq ptr %arg, %alloc %x = load i8, ptr %arg store i8 %x, ptr %alloc - call void @llvm.lifetime.end.p0(i64 1, ptr %alloc) + call void @llvm.lifetime.end.p0(ptr %alloc) ret i1 %cmp } diff --git a/llvm/test/Transforms/InstCombine/deadcode.ll b/llvm/test/Transforms/InstCombine/deadcode.ll index f3e1ba6787ad2..4dcdbb9618808 100644 --- a/llvm/test/Transforms/InstCombine/deadcode.ll +++ b/llvm/test/Transforms/InstCombine/deadcode.ll @@ -22,13 +22,13 @@ define ptr @test2(i32 %width) { declare ptr @llvm.stacksave() -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) define void @test3() { %a = alloca i32 - call void @llvm.lifetime.start.p0(i64 -1, ptr %a) - call void @llvm.lifetime.end.p0(i64 -1, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } diff --git a/llvm/test/Transforms/InstCombine/lifetime-no-null-opt.ll b/llvm/test/Transforms/InstCombine/lifetime-no-null-opt.ll index 422e1796b2bed..597bd2c80c059 100644 --- a/llvm/test/Transforms/InstCombine/lifetime-no-null-opt.ll +++ b/llvm/test/Transforms/InstCombine/lifetime-no-null-opt.ll @@ -2,8 +2,8 @@ ; RUN: opt < %s -passes=instcombine -S | FileCheck %s declare void @llvm.dbg.declare(metadata, metadata, metadata) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @foo(ptr nocapture, ptr nocapture) define void @bar(i1 %flag) #0 !dbg !4 { @@ -20,11 +20,11 @@ define void @bar(i1 %flag) #0 !dbg !4 { ; CHECK-NEXT: #dbg_declare(ptr [[TEXT]], [[META16:![0-9]+]], !DIExpression(), [[META24:![0-9]+]]) ; CHECK-NEXT: br label [[FIN:%.*]] ; CHECK: else: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr nonnull [[TEXT]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr nonnull [[BUFF]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TEXT]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[BUFF]]) ; CHECK-NEXT: call void @foo(ptr nonnull [[BUFF]], ptr nonnull [[TEXT]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[BUFF]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[TEXT]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[BUFF]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TEXT]]) ; CHECK-NEXT: br label [[FIN]] ; CHECK: fin: ; CHECK-NEXT: ret void @@ -35,31 +35,31 @@ entry: br i1 %flag, label %if, label %else if: - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.start.p0(i64 1, ptr %buff) - call void @llvm.lifetime.end.p0(i64 1, ptr %buff) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.start.p0(ptr %buff) + call void @llvm.lifetime.end.p0(ptr %buff) + call void @llvm.lifetime.end.p0(ptr %text) br label %bb2 bb2: - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.start.p0(i64 1, ptr %buff) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %buff) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.start.p0(ptr %buff) + call void @llvm.lifetime.end.p0(ptr %text) + call void @llvm.lifetime.end.p0(ptr %buff) br label %bb3 bb3: - call void @llvm.lifetime.start.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) call void @llvm.dbg.declare(metadata ptr %text, metadata !14, metadata !25), !dbg !26 - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.end.p0(ptr %text) br label %fin else: - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.start.p0(i64 1, ptr %buff) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.start.p0(ptr %buff) call void @foo(ptr %buff, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %buff) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.end.p0(ptr %buff) + call void @llvm.lifetime.end.p0(ptr %text) br label %fin fin: diff --git a/llvm/test/Transforms/InstCombine/lifetime-sanitizer.ll b/llvm/test/Transforms/InstCombine/lifetime-sanitizer.ll index e379b32b45734..fd45fe2dd27d7 100644 --- a/llvm/test/Transforms/InstCombine/lifetime-sanitizer.ll +++ b/llvm/test/Transforms/InstCombine/lifetime-sanitizer.ll @@ -1,7 +1,7 @@ ; RUN: opt < %s -passes=instcombine -S | FileCheck %s -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @foo(ptr nocapture) define void @asan() sanitize_address { @@ -9,8 +9,8 @@ entry: ; CHECK-LABEL: @asan( %text = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.end.p0(ptr %text) ; CHECK: call void @llvm.lifetime.start ; CHECK-NEXT: call void @llvm.lifetime.end @@ -24,8 +24,8 @@ entry: ; CHECK-LABEL: @hwasan( %text = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.end.p0(ptr %text) ; CHECK: call void @llvm.lifetime.start ; CHECK-NEXT: call void @llvm.lifetime.end @@ -39,8 +39,8 @@ entry: ; CHECK-LABEL: @msan( %text = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.end.p0(ptr %text) ; CHECK: call void @llvm.lifetime.start ; CHECK-NEXT: call void @llvm.lifetime.end @@ -54,8 +54,8 @@ entry: ; CHECK-LABEL: @no_asan( %text = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.end.p0(ptr %text) ; CHECK-NO: call void @llvm.lifetime call void @foo(ptr %text) ; Keep alloca alive diff --git a/llvm/test/Transforms/InstCombine/lifetime.ll b/llvm/test/Transforms/InstCombine/lifetime.ll index b94c9694d8f07..6313dba6c35ef 100644 --- a/llvm/test/Transforms/InstCombine/lifetime.ll +++ b/llvm/test/Transforms/InstCombine/lifetime.ll @@ -2,8 +2,8 @@ ; RUN: opt < %s -passes=instcombine -S | FileCheck %s declare void @llvm.dbg.declare(metadata, metadata, metadata) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @foo(ptr nocapture, ptr nocapture) define void @bar(i1 %flag) !dbg !4 { @@ -20,11 +20,11 @@ define void @bar(i1 %flag) !dbg !4 { ; CHECK-NEXT: #dbg_declare(ptr [[TEXT]], [[META16:![0-9]+]], !DIExpression(), [[META24:![0-9]+]]) ; CHECK-NEXT: br label [[FIN:%.*]] ; CHECK: else: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr nonnull [[TEXT]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr nonnull [[BUFF]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TEXT]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[BUFF]]) ; CHECK-NEXT: call void @foo(ptr nonnull [[BUFF]], ptr nonnull [[TEXT]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[BUFF]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[TEXT]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[BUFF]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TEXT]]) ; CHECK-NEXT: br label [[FIN]] ; CHECK: fin: ; CHECK-NEXT: ret void @@ -35,31 +35,31 @@ entry: br i1 %flag, label %if, label %else if: - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.start.p0(i64 1, ptr %buff) - call void @llvm.lifetime.end.p0(i64 1, ptr %buff) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.start.p0(ptr %buff) + call void @llvm.lifetime.end.p0(ptr %buff) + call void @llvm.lifetime.end.p0(ptr %text) br label %bb2 bb2: - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.start.p0(i64 1, ptr %buff) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %buff) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.start.p0(ptr %buff) + call void @llvm.lifetime.end.p0(ptr %text) + call void @llvm.lifetime.end.p0(ptr %buff) br label %bb3 bb3: - call void @llvm.lifetime.start.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) call void @llvm.dbg.declare(metadata ptr %text, metadata !14, metadata !25), !dbg !26 - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.end.p0(ptr %text) br label %fin else: - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.start.p0(i64 1, ptr %buff) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.start.p0(ptr %buff) call void @foo(ptr %buff, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %buff) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.end.p0(ptr %buff) + call void @llvm.lifetime.end.p0(ptr %text) br label %fin fin: diff --git a/llvm/test/Transforms/InstCombine/lower-dbg-declare.ll b/llvm/test/Transforms/InstCombine/lower-dbg-declare.ll index 0072153f7ca4c..7aa5eed2e88aa 100644 --- a/llvm/test/Transforms/InstCombine/lower-dbg-declare.ll +++ b/llvm/test/Transforms/InstCombine/lower-dbg-declare.ll @@ -26,7 +26,7 @@ entry: %retval = alloca i32, align 4 %d1 = alloca i32, align 4 store i32 0, ptr %retval, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %d1) #4, !dbg !17 + call void @llvm.lifetime.start.p0(ptr %d1) #4, !dbg !17 ; CHECK: #dbg_value(i32 42, [[METADATA_IDX1:![0-9]+]], !DIExpression(), ; CHECK-NEXT: store call void @llvm.dbg.declare(metadata ptr %d1, metadata !16, metadata !DIExpression()), !dbg !17 @@ -48,11 +48,11 @@ while.body: ; preds = %while.cond br label %while.cond, !dbg !22, !llvm.loop !24 while.end: ; preds = %while.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %d1) #4, !dbg !25 + call void @llvm.lifetime.end.p0(ptr %d1) #4, !dbg !25 ret i32 0, !dbg !26 } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @llvm.dbg.declare(metadata, metadata, metadata) @@ -64,7 +64,7 @@ define internal void @_ZL6escapeRi(ptr dereferenceable(4) %c) #3 !dbg !34 { ret void } -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 !llvm.dbg.cu = !{!2} !llvm.module.flags = !{!8, !9, !10} diff --git a/llvm/test/Transforms/InstCombine/malloc-free.ll b/llvm/test/Transforms/InstCombine/malloc-free.ll index d8a1c07a55429..5cff5d6dc10c2 100644 --- a/llvm/test/Transforms/InstCombine/malloc-free.ll +++ b/llvm/test/Transforms/InstCombine/malloc-free.ll @@ -97,8 +97,8 @@ define i1 @foo() { ret i1 %z } -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) declare i64 @llvm.objectsize.i64(ptr, i1) declare void @llvm.memcpy.p0.p0.i32(ptr nocapture, ptr nocapture, i32, i1) nounwind declare void @llvm.memmove.p0.p0.i32(ptr nocapture, ptr nocapture, i32, i1) nounwind diff --git a/llvm/test/Transforms/InstCombine/memcpy-from-global.ll b/llvm/test/Transforms/InstCombine/memcpy-from-global.ll index 9c9ba83425845..64091a90752bf 100644 --- a/llvm/test/Transforms/InstCombine/memcpy-from-global.ll +++ b/llvm/test/Transforms/InstCombine/memcpy-from-global.ll @@ -178,14 +178,14 @@ define void @test4() { ret void } -declare void @llvm.lifetime.start.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) define void @test5() { ; CHECK-LABEL: @test5( ; CHECK-NEXT: call void @baz(ptr nonnull byval(i8) @G) ; CHECK-NEXT: ret void ; %A = alloca %T - call void @llvm.lifetime.start.p0(i64 -1, ptr %A) + call void @llvm.lifetime.start.p0(ptr %A) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %A, ptr align 4 @G, i64 124, i1 false) call void @baz(ptr byval(i8) %A) ret void @@ -308,7 +308,7 @@ define float @test11(i64 %i) { entry: %a = alloca [4 x float], align 4 - call void @llvm.lifetime.start.p0(i64 16, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @llvm.memcpy.p0.p1.i64(ptr align 4 %a, ptr addrspace(1) align 4 @I, i64 16, i1 false) %g = getelementptr inbounds [4 x float], ptr %a, i64 0, i64 %i %r = load float, ptr %g, align 4 @@ -320,7 +320,7 @@ define float @test11_volatile(i64 %i) { ; CHECK-LABEL: @test11_volatile( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A:%.*]] = alloca [4 x float], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[A]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p1.i64(ptr align 4 [[A]], ptr addrspace(1) align 4 @I, i64 16, i1 true) ; CHECK-NEXT: [[G:%.*]] = getelementptr inbounds [4 x float], ptr [[A]], i64 0, i64 [[I:%.*]] ; CHECK-NEXT: [[R:%.*]] = load float, ptr [[G]], align 4 @@ -329,7 +329,7 @@ define float @test11_volatile(i64 %i) { entry: %a = alloca [4 x float], align 4 - call void @llvm.lifetime.start.p0(i64 16, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @llvm.memcpy.p0.p1.i64(ptr align 4 %a, ptr addrspace(1) align 4 @I, i64 16, i1 true) %g = getelementptr inbounds [4 x float], ptr %a, i64 0, i64 %i %r = load float, ptr %g, align 4 diff --git a/llvm/test/Transforms/InstCombine/sink_sideeffecting_instruction.ll b/llvm/test/Transforms/InstCombine/sink_sideeffecting_instruction.ll index ccb96012ae3cc..bd43daa4aed3b 100644 --- a/llvm/test/Transforms/InstCombine/sink_sideeffecting_instruction.ll +++ b/llvm/test/Transforms/InstCombine/sink_sideeffecting_instruction.ll @@ -49,12 +49,12 @@ define i32 @test() { ; CHECK-NEXT: bb: ; CHECK-NEXT: [[VAR:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[VAR1:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VAR]]) ; CHECK-NEXT: [[VAR3:%.*]] = call i32 @foo(ptr nonnull writeonly [[VAR]]) ; CHECK-NEXT: [[VAR4:%.*]] = icmp eq i32 [[VAR3]], 0 ; CHECK-NEXT: br i1 [[VAR4]], label [[BB5:%.*]], label [[BB14:%.*]] ; CHECK: bb5: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[VAR1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VAR1]]) ; CHECK-NEXT: [[VAR8:%.*]] = load i32, ptr [[VAR]], align 4 ; CHECK-NEXT: [[VAR9:%.*]] = icmp eq i32 [[VAR8]], 0 ; CHECK-NEXT: [[VAR7:%.*]] = call i32 @foo(ptr nonnull writeonly [[VAR1]]) @@ -66,23 +66,23 @@ define i32 @test() { ; CHECK-NEXT: br label [[BB12]] ; CHECK: bb12: ; CHECK-NEXT: [[VAR13:%.*]] = phi i32 [ [[VAR11]], [[BB10]] ], [ [[VAR7]], [[BB_CRIT_EDGE]] ] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[VAR1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VAR1]]) ; CHECK-NEXT: br label [[BB14]] ; CHECK: bb14: ; CHECK-NEXT: [[VAR15:%.*]] = phi i32 [ [[VAR13]], [[BB12]] ], [ 0, [[BB:%.*]] ] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VAR]]) ; CHECK-NEXT: ret i32 [[VAR15]] ; bb: %var = alloca i32, align 4 %var1 = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %var) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %var) #4 %var3 = call i32 @foo(ptr nonnull writeonly %var) %var4 = icmp eq i32 %var3, 0 br i1 %var4, label %bb5, label %bb14 bb5: ; preds = %bb - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %var1) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %var1) #4 %var8 = load i32, ptr %var, align 4 %var9 = icmp eq i32 %var8, 0 %var7 = call i32 @foo(ptr nonnull writeonly %var1) @@ -97,12 +97,12 @@ bb_crit_edge: bb12: ; preds = %bb10, %bb5 %var13 = phi i32 [ %var11, %bb10 ], [ %var7, %bb_crit_edge ] - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %var1) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %var1) #4 br label %bb14 bb14: ; preds = %bb12, %bb %var15 = phi i32 [ %var13, %bb12 ], [ 0, %bb ] - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %var) + call void @llvm.lifetime.end.p0(ptr nonnull %var) ret i32 %var15 } @@ -325,18 +325,18 @@ define i32 @sink_lifetime1(i1 %c) { ; CHECK-LABEL: @sink_lifetime1( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[VAR:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VAR]]) ; CHECK-NEXT: [[VAR3:%.*]] = call i32 @unknown(ptr nonnull [[VAR]]) #[[ATTR1]] ; CHECK-NEXT: br i1 [[C:%.*]], label [[EARLY_RETURN:%.*]], label [[USE_BLOCK:%.*]] ; CHECK: early_return: ; CHECK-NEXT: ret i32 0 ; CHECK: use_block: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VAR]]) ; CHECK-NEXT: ret i32 [[VAR3]] ; entry: %var = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %var) + call void @llvm.lifetime.start.p0(ptr %var) %var3 = call i32 @unknown(ptr %var) argmemonly nounwind willreturn br i1 %c, label %early_return, label %use_block @@ -344,7 +344,7 @@ early_return: ret i32 0 use_block: - call void @llvm.lifetime.end.p0(i64 4, ptr %var) + call void @llvm.lifetime.end.p0(ptr %var) ret i32 %var3 } @@ -352,25 +352,25 @@ define i32 @sink_lifetime2(i1 %c) { ; CHECK-LABEL: @sink_lifetime2( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[VAR:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VAR]]) ; CHECK-NEXT: [[VAR3:%.*]] = call i32 @unknown(ptr nonnull [[VAR]]) #[[ATTR1]] ; CHECK-NEXT: br i1 [[C:%.*]], label [[MERGE:%.*]], label [[USE_BLOCK:%.*]] ; CHECK: merge: ; CHECK-NEXT: [[RET:%.*]] = phi i32 [ 0, [[ENTRY:%.*]] ], [ [[VAR3]], [[USE_BLOCK]] ] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VAR]]) ; CHECK-NEXT: ret i32 [[RET]] ; CHECK: use_block: ; CHECK-NEXT: br label [[MERGE]] ; entry: %var = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %var) + call void @llvm.lifetime.start.p0(ptr %var) %var3 = call i32 @unknown(ptr %var) argmemonly nounwind willreturn br i1 %c, label %merge, label %use_block merge: %ret = phi i32 [0, %entry], [%var3, %use_block] - call void @llvm.lifetime.end.p0(i64 4, ptr %var) + call void @llvm.lifetime.end.p0(ptr %var) ret i32 %ret use_block: @@ -390,8 +390,8 @@ define i32 @sink_lifetime3(i1 %c) { ; entry: %var = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %var) - call void @llvm.lifetime.end.p0(i64 4, ptr %var) + call void @llvm.lifetime.start.p0(ptr %var) + call void @llvm.lifetime.end.p0(ptr %var) ; If unknown accesses %var, that's UB %var3 = call i32 @unknown(ptr %var) argmemonly nounwind willreturn br i1 %c, label %early_return, label %use_block @@ -407,9 +407,9 @@ define i32 @sink_lifetime4a(i1 %c) { ; CHECK-LABEL: @sink_lifetime4a( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[VAR:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VAR]]) ; CHECK-NEXT: [[VAR3:%.*]] = call i32 @unknown(ptr nonnull [[VAR]]) #[[ATTR1]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VAR]]) ; CHECK-NEXT: br i1 [[C:%.*]], label [[EARLY_RETURN:%.*]], label [[USE_BLOCK:%.*]] ; CHECK: early_return: ; CHECK-NEXT: ret i32 0 @@ -418,9 +418,9 @@ define i32 @sink_lifetime4a(i1 %c) { ; entry: %var = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %var) + call void @llvm.lifetime.start.p0(ptr %var) %var3 = call i32 @unknown(ptr %var) argmemonly nounwind willreturn - call void @llvm.lifetime.end.p0(i64 4, ptr %var) + call void @llvm.lifetime.end.p0(ptr %var) br i1 %c, label %early_return, label %use_block early_return: @@ -436,9 +436,9 @@ define i32 @sink_lifetime4b(i1 %c) { ; CHECK-LABEL: @sink_lifetime4b( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[VAR:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VAR]]) ; CHECK-NEXT: [[VAR3:%.*]] = call i32 @unknown(ptr nonnull writeonly [[VAR]]) #[[ATTR1]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[VAR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VAR]]) ; CHECK-NEXT: br i1 [[C:%.*]], label [[EARLY_RETURN:%.*]], label [[USE_BLOCK:%.*]] ; CHECK: early_return: ; CHECK-NEXT: ret i32 0 @@ -447,9 +447,9 @@ define i32 @sink_lifetime4b(i1 %c) { ; entry: %var = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %var) + call void @llvm.lifetime.start.p0(ptr %var) %var3 = call i32 @unknown(ptr writeonly %var) argmemonly nounwind willreturn - call void @llvm.lifetime.end.p0(i64 4, ptr %var) + call void @llvm.lifetime.end.p0(ptr %var) br i1 %c, label %early_return, label %use_block early_return: @@ -486,6 +486,6 @@ use_block: declare i32 @bar() -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Transforms/InstCombine/trivial-dse-calls.ll b/llvm/test/Transforms/InstCombine/trivial-dse-calls.ll index 128edffc1ffb0..758071abdbe76 100644 --- a/llvm/test/Transforms/InstCombine/trivial-dse-calls.ll +++ b/llvm/test/Transforms/InstCombine/trivial-dse-calls.ll @@ -1,8 +1,8 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py ; RUN: opt -passes=instcombine -S < %s | FileCheck %s -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @unknown() declare void @f(ptr) @@ -25,9 +25,9 @@ define void @test_lifetime() { ; CHECK-NEXT: ret void ; %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @f(ptr writeonly nocapture %a) argmemonly nounwind willreturn - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -40,11 +40,11 @@ define void @test_lifetime2() { ; CHECK-NEXT: ret void ; %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @unknown() call void @f(ptr writeonly nocapture %a) argmemonly nounwind willreturn call void @unknown() - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } diff --git a/llvm/test/Transforms/InstCombine/unreachable-alloca-lifetime-markers.ll b/llvm/test/Transforms/InstCombine/unreachable-alloca-lifetime-markers.ll index ab744c6213e4b..9c64bfb36303d 100644 --- a/llvm/test/Transforms/InstCombine/unreachable-alloca-lifetime-markers.ll +++ b/llvm/test/Transforms/InstCombine/unreachable-alloca-lifetime-markers.ll @@ -12,7 +12,7 @@ define void @pr150338(ptr %arg) { %a = alloca i32 store ptr %a, ptr %arg store i1 true, ptr poison - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -33,7 +33,7 @@ entry: bb1: %phi1 = phi ptr [ null, %entry ], [ %phi2, %bb2 ] - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) br label %bb2 bb2: @@ -45,7 +45,7 @@ define void @lifetime_poison() { ; CHECK-LABEL: define void @lifetime_poison() { ; CHECK-NEXT: ret void ; - call void @llvm.lifetime.start.p0(i64 4, ptr poison) - call void @llvm.lifetime.end.p0(i64 4, ptr poison) + call void @llvm.lifetime.start.p0(ptr poison) + call void @llvm.lifetime.end.p0(ptr poison) ret void } diff --git a/llvm/test/Transforms/InstCombine/vararg.ll b/llvm/test/Transforms/InstCombine/vararg.ll index eb24256cfa9bc..93d230d22d8c8 100644 --- a/llvm/test/Transforms/InstCombine/vararg.ll +++ b/llvm/test/Transforms/InstCombine/vararg.ll @@ -12,14 +12,14 @@ define void @func(ptr nocapture readnone %fmt, ...) { entry: %va0 = alloca %struct.__va_list, align 8 %va1 = alloca %struct.__va_list, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %va0) + call void @llvm.lifetime.start.p0(ptr %va0) call void @llvm.va_start(ptr %va0) - call void @llvm.lifetime.start.p0(i64 32, ptr %va1) + call void @llvm.lifetime.start.p0(ptr %va1) call void @llvm.va_copy(ptr %va1, ptr %va0) call void @llvm.va_end(ptr %va1) - call void @llvm.lifetime.end.p0(i64 32, ptr %va1) + call void @llvm.lifetime.end.p0(ptr %va1) call void @llvm.va_end(ptr %va0) - call void @llvm.lifetime.end.p0(i64 32, ptr %va0) + call void @llvm.lifetime.end.p0(ptr %va0) ret void } @@ -31,28 +31,28 @@ define void @func_destroy_copy_src(ptr nocapture readnone %fmt, ...) { ; CHECK-NEXT: [[ENTRY:.*:]] ; CHECK-NEXT: [[VA0:%.*]] = alloca [[STRUCT___VA_LIST:%.*]], align 8 ; CHECK-NEXT: [[VA1:%.*]] = alloca [[STRUCT___VA_LIST]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[VA0]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[VA1]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VA0]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[VA1]]) ; CHECK-NEXT: call void @llvm.va_start.p0(ptr nonnull [[VA0]]) ; CHECK-NEXT: call void @llvm.va_copy.p0(ptr nonnull [[VA1]], ptr nonnull [[VA0]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[VA0]]) ; CHECK-NEXT: call void @callee(ptr nonnull [[VA1]]) ; CHECK-NEXT: call void @llvm.va_end.p0(ptr [[VA1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[VA1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[VA0]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VA1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[VA0]]) ; CHECK-NEXT: ret void ; entry: %va0 = alloca %struct.__va_list, align 8 %va1 = alloca %struct.__va_list, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %va0) - call void @llvm.lifetime.start.p0(i64 32, ptr %va1) + call void @llvm.lifetime.start.p0(ptr %va0) + call void @llvm.lifetime.start.p0(ptr %va1) call void @llvm.va_start(ptr %va0) call void @llvm.va_copy(ptr %va1, ptr %va0) call void @llvm.va_end(ptr %va0) call void @callee(ptr %va1) call void @llvm.va_end(ptr %va1) - call void @llvm.lifetime.end.p0(i64 32, ptr %va1) - call void @llvm.lifetime.end.p0(i64 32, ptr %va0) + call void @llvm.lifetime.end.p0(ptr %va1) + call void @llvm.lifetime.end.p0(ptr %va0) ret void } diff --git a/llvm/test/Transforms/LICM/dropped-tbaa.ll b/llvm/test/Transforms/LICM/dropped-tbaa.ll index 11083b4e4f3fb..92839f1d19968 100644 --- a/llvm/test/Transforms/LICM/dropped-tbaa.ll +++ b/llvm/test/Transforms/LICM/dropped-tbaa.ll @@ -24,7 +24,7 @@ define void @foo(ptr %data, ptr %addend) #0 { ; CHECK-NEXT: [[CONV_I:%.*]] = sitofp i32 [[TMP2]] to double entry: %i = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.start.p0(ptr %i) #2 store i32 0, ptr %i, align 4, !tbaa !1 br i1 true, label %for.body.lr.ph, label %for.cond.cleanup @@ -35,7 +35,7 @@ for.cond.for.cond.cleanup_crit_edge: ; preds = %for.inc br label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond.for.cond.cleanup_crit_edge, %entry - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.end.p0(ptr %i) #2 br label %for.end for.body: ; preds = %for.body.lr.ph, %for.inc @@ -67,8 +67,8 @@ for.end: ; preds = %for.cond.cleanup ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #0 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 +declare void @llvm.lifetime.end.p0(ptr nocapture) #0 attributes #0 = { argmemonly nounwind } diff --git a/llvm/test/Transforms/LICM/hoisting-preheader-debugloc.ll b/llvm/test/Transforms/LICM/hoisting-preheader-debugloc.ll index 61f0eb19a9bd1..0aa56d2ce431e 100644 --- a/llvm/test/Transforms/LICM/hoisting-preheader-debugloc.ll +++ b/llvm/test/Transforms/LICM/hoisting-preheader-debugloc.ll @@ -17,7 +17,7 @@ declare i16 @e(i32) define i16 @g() !dbg !13 { entry: %l_284 = alloca [2 x [3 x [6 x i32]]], align 16 - call void @llvm.lifetime.start.p0(i64 144, ptr nonnull %l_284), !dbg !24 + call void @llvm.lifetime.start.p0(ptr nonnull %l_284), !dbg !24 call void @llvm.dbg.declare(metadata ptr %l_284, metadata !17, metadata !DIExpression()), !dbg !25 %0 = load i16, ptr @a, align 2, !dbg !26, !tbaa !29 %cmp11 = icmp sgt i16 %0, -1, !dbg !33 @@ -51,15 +51,15 @@ for.body.cleanup_crit_edge: ; preds = %for.body br label %cleanup, !dbg !38 cleanup: ; preds = %for.body.cleanup_crit_edge, %for.cond.cleanup_crit_edge, %entry - call void @llvm.lifetime.end.p0(i64 144, ptr nonnull %l_284), !dbg !51 + call void @llvm.lifetime.end.p0(ptr nonnull %l_284), !dbg !51 ret i16 1, !dbg !51 } ; Function Attrs: argmemonly nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: argmemonly nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind readnone speculatable willreturn declare void @llvm.dbg.value(metadata, metadata, metadata) #0 diff --git a/llvm/test/Transforms/LICM/loopsink-pr38462.ll b/llvm/test/Transforms/LICM/loopsink-pr38462.ll index 51eee1fbbde2b..8b2ff104cbb69 100644 --- a/llvm/test/Transforms/LICM/loopsink-pr38462.ll +++ b/llvm/test/Transforms/LICM/loopsink-pr38462.ll @@ -37,7 +37,7 @@ __except: catchret from %1 to label %__except3 __except3: - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %s) + call void @llvm.lifetime.start.p0(ptr nonnull %s) %call.i = call zeroext i1 @g(ptr nonnull %s) br i1 %call.i, label %if.then.i, label %exit @@ -46,7 +46,7 @@ if.then.i: br label %exit exit: - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %s) + call void @llvm.lifetime.end.p0(ptr nonnull %s) br label %__try.cont __try.cont: @@ -58,8 +58,8 @@ __try.cont: declare i32 @__C_specific_handler(...) declare i32 @f() declare zeroext i1 @g(ptr) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) !1 = !{!"function_entry_count", i64 1} diff --git a/llvm/test/Transforms/LoopStrengthReduce/X86/lifetime-use.ll b/llvm/test/Transforms/LoopStrengthReduce/X86/lifetime-use.ll index c7a0de22b200b..970643ac7bc7d 100644 --- a/llvm/test/Transforms/LoopStrengthReduce/X86/lifetime-use.ll +++ b/llvm/test/Transforms/LoopStrengthReduce/X86/lifetime-use.ll @@ -6,7 +6,7 @@ define void @test(ptr %p, i64 %idx) { ; CHECK-SAME: ptr [[P:%.*]], i64 [[IDX:%.*]]) { ; CHECK-NEXT: [[ENTRY:.*]]: ; CHECK-NEXT: [[ALLOCA:%.*]] = alloca [4 x [4 x i32]], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ALLOCA]]) ; CHECK-NEXT: [[TMP0:%.*]] = shl i64 [[IDX]], 6 ; CHECK-NEXT: [[TMP1:%.*]] = add nuw nsw i64 [[TMP0]], 48 ; CHECK-NEXT: [[SCEVGEP:%.*]] = getelementptr i8, ptr [[P]], i64 [[TMP1]] @@ -31,12 +31,12 @@ define void @test(ptr %p, i64 %idx) { ; CHECK-NEXT: [[EXITCOND_NOT:%.*]] = icmp eq i64 [[LSR_IV_NEXT]], 0 ; CHECK-NEXT: br i1 [[EXITCOND_NOT]], label %[[EXIT:.*]], label %[[LOOP]] ; CHECK: [[EXIT]]: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ALLOCA]]) ; CHECK-NEXT: ret void ; entry: %alloca = alloca [4 x [4 x i32]], align 16 - call void @llvm.lifetime.start.p0(i64 64, ptr %alloca) + call void @llvm.lifetime.start.p0(ptr %alloca) br label %loop loop: @@ -54,6 +54,6 @@ loop: br i1 %exitcond.not, label %exit, label %loop exit: - call void @llvm.lifetime.end.p0(i64 64, ptr %alloca) + call void @llvm.lifetime.end.p0(ptr %alloca) ret void } diff --git a/llvm/test/Transforms/LoopStrengthReduce/lsr-comp-time.ll b/llvm/test/Transforms/LoopStrengthReduce/lsr-comp-time.ll index 3ec4fea7b9671..f8c5e8244df4a 100644 --- a/llvm/test/Transforms/LoopStrengthReduce/lsr-comp-time.ll +++ b/llvm/test/Transforms/LoopStrengthReduce/lsr-comp-time.ll @@ -5,10 +5,10 @@ target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind readnone uwtable define dso_local i32 @foo(i32 %arg, i32 %arg1, i32 %arg2, i32 %arg3, i32 %arg4, i32 %arg5, i32 %arg6) local_unnamed_addr #3 { @@ -83,31 +83,31 @@ bb: %tmp16 = alloca [100 x [100 x i32]], align 16 %tmp17 = alloca [100 x [100 x i32]], align 16 %tmp18 = alloca [100 x [100 x i32]], align 16 - call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %tmp) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp, i8 0, i64 400, i1 false) - call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %tmp7) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp7) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp7, i8 0, i64 400, i1 false) - call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %tmp8) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp8) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp8, i8 0, i64 400, i1 false) - call void @llvm.lifetime.start.p0(i64 40000, ptr nonnull %tmp9) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp9) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp9, i8 0, i64 40000, i1 false) - call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %tmp10) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp10) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp10, i8 0, i64 400, i1 false) - call void @llvm.lifetime.start.p0(i64 40000, ptr nonnull %tmp11) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp11) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp11, i8 0, i64 40000, i1 false) - call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %tmp12) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp12) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp12, i8 0, i64 400, i1 false) - call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %tmp13) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp13) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp13, i8 0, i64 400, i1 false) - call void @llvm.lifetime.start.p0(i64 40000, ptr nonnull %tmp14) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp14) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp14, i8 0, i64 40000, i1 false) - call void @llvm.lifetime.start.p0(i64 400, ptr nonnull %tmp15) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp15) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp15, i8 0, i64 400, i1 false) - call void @llvm.lifetime.start.p0(i64 40000, ptr nonnull %tmp16) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp16) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp16, i8 0, i64 40000, i1 false) - call void @llvm.lifetime.start.p0(i64 40000, ptr nonnull %tmp17) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp17) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp17, i8 0, i64 40000, i1 false) - call void @llvm.lifetime.start.p0(i64 40000, ptr nonnull %tmp18) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %tmp18) #4 call void @llvm.memset.p0.i64(ptr nonnull align 16 %tmp18, i8 0, i64 40000, i1 false) %tmp32 = getelementptr inbounds [100 x i32], ptr %tmp8, i64 0, i64 3 br label %bb33 @@ -1300,19 +1300,19 @@ bb1051: ; preds = %bb1007 %tmp1063 = sub i32 %tmp1062, %tmp960 %tmp1064 = add i32 %tmp1063, %tmp1004 %tmp1065 = sub i32 %tmp1064, %tmp1048 - call void @llvm.lifetime.end.p0(i64 40000, ptr nonnull %tmp18) #4 - call void @llvm.lifetime.end.p0(i64 40000, ptr nonnull %tmp17) #4 - call void @llvm.lifetime.end.p0(i64 40000, ptr nonnull %tmp16) #4 - call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %tmp15) #4 - call void @llvm.lifetime.end.p0(i64 40000, ptr nonnull %tmp14) #4 - call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %tmp13) #4 - call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %tmp12) #4 - call void @llvm.lifetime.end.p0(i64 40000, ptr nonnull %tmp11) #4 - call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %tmp10) #4 - call void @llvm.lifetime.end.p0(i64 40000, ptr nonnull %tmp9) #4 - call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %tmp8) #4 - call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %tmp7) #4 - call void @llvm.lifetime.end.p0(i64 400, ptr nonnull %tmp) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp18) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp17) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp16) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp15) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp14) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp13) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp12) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp11) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp10) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp9) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp8) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp7) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %tmp) #4 ret i32 %tmp1065 } diff --git a/llvm/test/Transforms/LoopVectorize/ARM/mve-known-trip-count.ll b/llvm/test/Transforms/LoopVectorize/ARM/mve-known-trip-count.ll index f4102ff8c402b..fe3504bc4b679 100644 --- a/llvm/test/Transforms/LoopVectorize/ARM/mve-known-trip-count.ll +++ b/llvm/test/Transforms/LoopVectorize/ARM/mve-known-trip-count.ll @@ -239,8 +239,8 @@ for.body: ; preds = %entry, %for.body define dso_local i32 @predicated_test(i32 noundef %0, ptr %glob) #0 { %2 = alloca [101 x i32], align 4 %3 = alloca [21 x i32], align 4 - call void @llvm.lifetime.start.p0(i64 404, ptr nonnull %2) - call void @llvm.lifetime.start.p0(i64 84, ptr nonnull %3) + call void @llvm.lifetime.start.p0(ptr nonnull %2) + call void @llvm.lifetime.start.p0(ptr nonnull %3) %4 = icmp sgt i32 %0, 0 br i1 %4, label %5, label %159 @@ -433,8 +433,8 @@ define dso_local i32 @predicated_test(i32 noundef %0, ptr %glob) #0 { br label %159 159: ; preds = %158, %1 - call void @llvm.lifetime.end.p0(i64 84, ptr nonnull %3) - call void @llvm.lifetime.end.p0(i64 404, ptr nonnull %2) + call void @llvm.lifetime.end.p0(ptr nonnull %3) + call void @llvm.lifetime.end.p0(ptr nonnull %2) ret i32 0 } @@ -472,7 +472,7 @@ while.end: ; preds = %while.end.loopexit, } -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) attributes #0 = { "target-features"="+mve.fp" } diff --git a/llvm/test/Transforms/LoopVectorize/Hexagon/minimum-vf.ll b/llvm/test/Transforms/LoopVectorize/Hexagon/minimum-vf.ll index 1ac556a2fda39..26bab4dfeaf4d 100644 --- a/llvm/test/Transforms/LoopVectorize/Hexagon/minimum-vf.ll +++ b/llvm/test/Transforms/LoopVectorize/Hexagon/minimum-vf.ll @@ -11,14 +11,14 @@ target datalayout = "e-m:e-p:32:32:32-a:0-n16:32-i64:64:64-i32:32:32-i16:16:16-i @g0 = external dso_local local_unnamed_addr global ptr, align 4 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #0 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 +declare void @llvm.lifetime.end.p0(ptr nocapture) #0 ; Function Attrs: nounwind define hidden fastcc void @f0(ptr nocapture %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4, i8 zeroext %a5) unnamed_addr #1 { b0: %v0 = alloca [4 x [9 x i16]], align 8 - call void @llvm.lifetime.start.p0(i64 72, ptr nonnull %v0) #2 + call void @llvm.lifetime.start.p0(ptr nonnull %v0) #2 %v2 = add i32 %a1, -2 %v3 = add i32 %a3, -9 %v4 = icmp ugt i32 %v2, %v3 @@ -147,7 +147,7 @@ b1: ; preds = %b1, %b0 br i1 %v120, label %b2, label %b1 b2: ; preds = %b1, %b0 - call void @llvm.lifetime.end.p0(i64 72, ptr nonnull %v0) #2 + call void @llvm.lifetime.end.p0(ptr nonnull %v0) #2 ret void } diff --git a/llvm/test/Transforms/LoopVectorize/PowerPC/vectorize-only-for-real.ll b/llvm/test/Transforms/LoopVectorize/PowerPC/vectorize-only-for-real.ll index 1bacb57700df8..6b72f20d51b84 100644 --- a/llvm/test/Transforms/LoopVectorize/PowerPC/vectorize-only-for-real.ll +++ b/llvm/test/Transforms/LoopVectorize/PowerPC/vectorize-only-for-real.ll @@ -10,11 +10,11 @@ define zeroext i32 @test() #0 { entry: %a = alloca [1600 x i32], align 4 %c = alloca [1600 x i32], align 4 - call void @llvm.lifetime.start(i64 6400, ptr %a) #3 + call void @llvm.lifetime.start(ptr %a) #3 br label %for.body for.cond.cleanup: ; preds = %for.body - call void @llvm.lifetime.start(i64 6400, ptr %c) #3 + call void @llvm.lifetime.start(ptr %c) #3 %call = call signext i32 @bar(ptr %a, ptr %c) #3 br label %for.body6 @@ -28,8 +28,8 @@ for.body: ; preds = %for.body, %entry br i1 %exitcond27, label %for.cond.cleanup, label %for.body for.cond.cleanup5: ; preds = %for.body6 - call void @llvm.lifetime.end(i64 6400, ptr nonnull %c) #3 - call void @llvm.lifetime.end(i64 6400, ptr %a) #3 + call void @llvm.lifetime.end(ptr nonnull %c) #3 + call void @llvm.lifetime.end(ptr %a) #3 ret i32 %add for.body6: ; preds = %for.body6, %for.cond.cleanup @@ -44,10 +44,10 @@ for.body6: ; preds = %for.body6, %for.con } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start(ptr nocapture) #1 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end(ptr nocapture) #1 declare signext i32 @bar(ptr, ptr) #2 diff --git a/llvm/test/Transforms/LoopVectorize/SystemZ/mem-interleaving-costs-03.ll b/llvm/test/Transforms/LoopVectorize/SystemZ/mem-interleaving-costs-03.ll index 13c443c4d579f..b4eebcc050e29 100644 --- a/llvm/test/Transforms/LoopVectorize/SystemZ/mem-interleaving-costs-03.ll +++ b/llvm/test/Transforms/LoopVectorize/SystemZ/mem-interleaving-costs-03.ll @@ -12,7 +12,7 @@ define noundef i32 @fun(i32 %argc, ptr nocapture readnone %argv) { entry: %l_4774.i = alloca [4 x [2 x i128]], align 8 - call void @llvm.lifetime.start.p0(i64 128, ptr nonnull %l_4774.i) + call void @llvm.lifetime.start.p0(ptr nonnull %l_4774.i) br label %for.cond4.preheader.i for.cond4.preheader.i: ; preds = %for.cond4.preheader.i, %entry @@ -31,13 +31,13 @@ func_1.exit: ; preds = %for.cond4.preheader %cmp200.i = icmp ne i128 %0, 0 %conv202.i = zext i1 %cmp200.i to i64 %call203.i = tail call i64 @safe_sub_func_int64_t_s_s(i64 noundef %conv202.i, i64 noundef 9139899272418802852) - call void @llvm.lifetime.end.p0(i64 128, ptr nonnull %l_4774.i) + call void @llvm.lifetime.end.p0(ptr nonnull %l_4774.i) br label %for.cond for.cond: ; preds = %for.cond, %func_1.exit br label %for.cond } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare dso_local i64 @safe_sub_func_int64_t_s_s(i64, i64) diff --git a/llvm/test/Transforms/LoopVectorize/X86/pr35432.ll b/llvm/test/Transforms/LoopVectorize/X86/pr35432.ll index 639fb86d5ddb3..6fc7ed2efe852 100644 --- a/llvm/test/Transforms/LoopVectorize/X86/pr35432.ll +++ b/llvm/test/Transforms/LoopVectorize/X86/pr35432.ll @@ -13,9 +13,9 @@ define i32 @main(ptr %ptr) { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[S:%.*]] = alloca i16, align 2 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[I]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr nonnull [[S]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S]]) ; CHECK-NEXT: [[CALL:%.*]] = call i32 (ptr, ...) @goo(ptr nonnull [[I]]) ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I]], align 4 ; CHECK-NEXT: [[STOREMERGE6:%.*]] = trunc i32 [[TMP0]] to i16 @@ -111,16 +111,16 @@ define i32 @main(ptr %ptr) { ; CHECK-NEXT: br label [[FOR_END12]] ; CHECK: for.end12: ; CHECK-NEXT: [[CALL13:%.*]] = call i32 (ptr, ...) @foo(ptr nonnull [[S]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr nonnull [[S]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[S]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[I]]) ; CHECK-NEXT: ret i32 0 ; entry: %i = alloca i32, align 4 %s = alloca i16, align 2 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %i) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %i) #3 store i32 0, ptr %i, align 4 - call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %s) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %s) #3 %call = call i32 (ptr, ...) @goo(ptr nonnull %i) #3 %0 = load i32, ptr %i, align 4 %storemerge6 = trunc i32 %0 to i16 @@ -174,17 +174,17 @@ for.cond.for.end12_crit_edge: ; preds = %for.inc9 for.end12: ; preds = %for.cond.for.end12_crit_edge, %entry %call13 = call i32 (ptr, ...) @foo(ptr nonnull %s) #3 - call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %s) #3 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %i) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %s) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %i) #3 ret i32 0 } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i32 @goo(...) local_unnamed_addr #2 declare i32 @foo(...) local_unnamed_addr #2 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 diff --git a/llvm/test/Transforms/LoopVectorize/lifetime.ll b/llvm/test/Transforms/LoopVectorize/lifetime.ll index 3dd41b57d863b..61e8635774d35 100644 --- a/llvm/test/Transforms/LoopVectorize/lifetime.ll +++ b/llvm/test/Transforms/LoopVectorize/lifetime.ll @@ -12,23 +12,23 @@ target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f3 define void @test(ptr %d) { entry: %arr = alloca [1024 x i32], align 16 - call void @llvm.lifetime.start.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.start.p0(ptr %arr) #1 br label %for.body for.body: %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] - call void @llvm.lifetime.end.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.end.p0(ptr %arr) #1 %arrayidx = getelementptr inbounds i32, ptr %d, i64 %indvars.iv %0 = load i32, ptr %arrayidx, align 8 store i32 100, ptr %arrayidx, align 8 - call void @llvm.lifetime.start.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.start.p0(ptr %arr) #1 %indvars.iv.next = add i64 %indvars.iv, 1 %lftr.wideiv = trunc i64 %indvars.iv.next to i32 %exitcond = icmp ne i32 %lftr.wideiv, 128 br i1 %exitcond, label %for.body, label %for.end for.end: - call void @llvm.lifetime.end.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.end.p0(ptr %arr) #1 ret void } @@ -40,26 +40,26 @@ for.end: define void @testbitcast(ptr %d) { entry: %arr = alloca [1024 x i32], align 16 - call void @llvm.lifetime.start.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.start.p0(ptr %arr) #1 br label %for.body for.body: %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] - call void @llvm.lifetime.end.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.end.p0(ptr %arr) #1 %arrayidx = getelementptr inbounds i32, ptr %d, i64 %indvars.iv %0 = load i32, ptr %arrayidx, align 8 store i32 100, ptr %arrayidx, align 8 - call void @llvm.lifetime.start.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.start.p0(ptr %arr) #1 %indvars.iv.next = add i64 %indvars.iv, 1 %lftr.wideiv = trunc i64 %indvars.iv.next to i32 %exitcond = icmp ne i32 %lftr.wideiv, 128 br i1 %exitcond, label %for.body, label %for.end for.end: - call void @llvm.lifetime.end.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.end.p0(ptr %arr) #1 ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 diff --git a/llvm/test/Transforms/LoopVectorize/scalable-lifetime.ll b/llvm/test/Transforms/LoopVectorize/scalable-lifetime.ll index 7aac9d1927f76..9cbf6b77ea3e6 100644 --- a/llvm/test/Transforms/LoopVectorize/scalable-lifetime.ll +++ b/llvm/test/Transforms/LoopVectorize/scalable-lifetime.ll @@ -10,7 +10,7 @@ define void @test(ptr %d) { ; CHECK-SAME: (ptr [[D:%.*]]) { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[ARR:%.*]] = alloca [1024 x i32], align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4096, ptr [[ARR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ARR]]) ; CHECK-NEXT: [[TMP0:%.*]] = call i64 @llvm.vscale.i64() ; CHECK-NEXT: [[TMP1:%.*]] = mul nuw i64 [[TMP0]], 2 ; CHECK-NEXT: [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 128, [[TMP1]] @@ -25,10 +25,10 @@ define void @test(ptr %d) { ; CHECK-NEXT: br label [[VECTOR_BODY:%.*]] ; CHECK: vector.body: ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4096, ptr [[ARR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ARR]]) ; CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds i32, ptr [[D]], i64 [[INDEX]] ; CHECK-NEXT: store splat (i32 100), ptr [[TMP6]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4096, ptr [[ARR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ARR]]) ; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], [[TMP5]] ; CHECK-NEXT: [[TMP7:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]] ; CHECK-NEXT: br i1 [[TMP7]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP0:![0-9]+]] @@ -40,39 +40,39 @@ define void @test(ptr %d) { ; CHECK-NEXT: br label [[FOR_BODY:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[INDVARS_IV_NEXT:%.*]], [[FOR_BODY]] ] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4096, ptr [[ARR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ARR]]) ; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[D]], i64 [[INDVARS_IV]] ; CHECK-NEXT: [[TMP8:%.*]] = load i32, ptr [[ARRAYIDX]], align 8 ; CHECK-NEXT: store i32 100, ptr [[ARRAYIDX]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4096, ptr [[ARR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ARR]]) ; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add i64 [[INDVARS_IV]], 1 ; CHECK-NEXT: [[LFTR_WIDEIV:%.*]] = trunc i64 [[INDVARS_IV_NEXT]] to i32 ; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i32 [[LFTR_WIDEIV]], 128 ; CHECK-NEXT: br i1 [[EXITCOND]], label [[FOR_BODY]], label [[FOR_END]], !llvm.loop [[LOOP3:![0-9]+]] ; CHECK: for.end: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4096, ptr [[ARR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ARR]]) ; CHECK-NEXT: ret void ; entry: %arr = alloca [1024 x i32], align 16 - call void @llvm.lifetime.start.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.start.p0(ptr %arr) #1 br label %for.body for.body: %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] - call void @llvm.lifetime.end.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.end.p0(ptr %arr) #1 %arrayidx = getelementptr inbounds i32, ptr %d, i64 %indvars.iv %0 = load i32, ptr %arrayidx, align 8 store i32 100, ptr %arrayidx, align 8 - call void @llvm.lifetime.start.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.start.p0(ptr %arr) #1 %indvars.iv.next = add i64 %indvars.iv, 1 %lftr.wideiv = trunc i64 %indvars.iv.next to i32 %exitcond = icmp ne i32 %lftr.wideiv, 128 br i1 %exitcond, label %for.body, label %for.end, !llvm.loop !0 for.end: - call void @llvm.lifetime.end.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.end.p0(ptr %arr) #1 ret void } @@ -95,10 +95,10 @@ define void @testloopvariant(ptr %d) { ; CHECK-NEXT: br label [[VECTOR_BODY:%.*]] ; CHECK: vector.body: ; CHECK-NEXT: [[INDEX:%.*]] = phi i64 [ 0, [[VECTOR_PH]] ], [ [[INDEX_NEXT:%.*]], [[VECTOR_BODY]] ] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4096, ptr [[ARR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ARR]]) ; CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds i32, ptr [[D]], i64 [[INDEX]] ; CHECK-NEXT: store splat (i32 100), ptr [[TMP6]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4096, ptr [[ARR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ARR]]) ; CHECK-NEXT: [[INDEX_NEXT]] = add nuw i64 [[INDEX]], [[TMP5]] ; CHECK-NEXT: [[TMP7:%.*]] = icmp eq i64 [[INDEX_NEXT]], [[N_VEC]] ; CHECK-NEXT: br i1 [[TMP7]], label [[MIDDLE_BLOCK:%.*]], label [[VECTOR_BODY]], !llvm.loop [[LOOP4:![0-9]+]] @@ -111,11 +111,11 @@ define void @testloopvariant(ptr %d) { ; CHECK: for.body: ; CHECK-NEXT: [[INDVARS_IV:%.*]] = phi i64 [ [[BC_RESUME_VAL]], [[SCALAR_PH]] ], [ [[INDVARS_IV_NEXT:%.*]], [[FOR_BODY]] ] ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr [1024 x i32], ptr [[ARR]], i32 0, i64 [[INDVARS_IV]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4096, ptr [[ARR]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ARR]]) ; CHECK-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[D]], i64 [[INDVARS_IV]] ; CHECK-NEXT: [[TMP9:%.*]] = load i32, ptr [[ARRAYIDX]], align 8 ; CHECK-NEXT: store i32 100, ptr [[ARRAYIDX]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4096, ptr [[ARR]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ARR]]) ; CHECK-NEXT: [[INDVARS_IV_NEXT]] = add i64 [[INDVARS_IV]], 1 ; CHECK-NEXT: [[LFTR_WIDEIV:%.*]] = trunc i64 [[INDVARS_IV_NEXT]] to i32 ; CHECK-NEXT: [[EXITCOND:%.*]] = icmp ne i32 [[LFTR_WIDEIV]], 128 @@ -130,11 +130,11 @@ entry: for.body: %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ] %0 = getelementptr [1024 x i32], ptr %arr, i32 0, i64 %indvars.iv - call void @llvm.lifetime.end.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.end.p0(ptr %arr) #1 %arrayidx = getelementptr inbounds i32, ptr %d, i64 %indvars.iv %1 = load i32, ptr %arrayidx, align 8 store i32 100, ptr %arrayidx, align 8 - call void @llvm.lifetime.start.p0(i64 4096, ptr %arr) #1 + call void @llvm.lifetime.start.p0(ptr %arr) #1 %indvars.iv.next = add i64 %indvars.iv, 1 %lftr.wideiv = trunc i64 %indvars.iv.next to i32 %exitcond = icmp ne i32 %lftr.wideiv, 128 @@ -144,9 +144,9 @@ for.end: ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 !0 = distinct !{!0, !1} !1 = !{!"llvm.loop.vectorize.scalable.enable", i1 true} diff --git a/llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused-lifetime-ends.ll b/llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused-lifetime-ends.ll index 7cc8458b56dbc..612c96c8eacd6 100644 --- a/llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused-lifetime-ends.ll +++ b/llvm/test/Transforms/LowerMatrixIntrinsics/multiply-fused-lifetime-ends.ll @@ -73,7 +73,7 @@ define void @lifetime_for_first_arg_before_multiply(ptr noalias %B, ptr noalias ; CHECK-NEXT: store <2 x double> [[TMP13]], ptr [[TMP26]], align 8 ; CHECK-NEXT: [[VEC_GEP28:%.*]] = getelementptr double, ptr [[TMP26]], i64 2 ; CHECK-NEXT: store <2 x double> [[TMP25]], ptr [[VEC_GEP28]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; entry: @@ -81,7 +81,7 @@ entry: call void @init(ptr %A) %a = load <4 x double>, ptr %A, align 8 %b = load <4 x double>, ptr %B, align 8 - call void @llvm.lifetime.end(i64 -1, ptr %A) + call void @llvm.lifetime.end(ptr %A) %c = call <4 x double> @llvm.matrix.multiply(<4 x double> %a, <4 x double> %b, i32 2, i32 2, i32 2) store <4 x double> %c, ptr %C, align 8 ret void @@ -154,7 +154,7 @@ define void @lifetime_for_second_arg_before_multiply(ptr noalias %A, ptr noalias ; CHECK-NEXT: store <2 x double> [[TMP13]], ptr [[TMP26]], align 8 ; CHECK-NEXT: [[VEC_GEP28:%.*]] = getelementptr double, ptr [[TMP26]], i64 2 ; CHECK-NEXT: store <2 x double> [[TMP25]], ptr [[VEC_GEP28]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B]]) ; CHECK-NEXT: ret void ; entry: @@ -162,7 +162,7 @@ entry: call void @init(ptr %B) %a = load <4 x double>, ptr %A, align 8 %b = load <4 x double>, ptr %B, align 8 - call void @llvm.lifetime.end(i64 -1, ptr %B) + call void @llvm.lifetime.end(ptr %B) %c = call <4 x double> @llvm.matrix.multiply(<4 x double> %a, <4 x double> %b, i32 2, i32 2, i32 2) store <4 x double> %c, ptr %C, align 8 ret void @@ -236,7 +236,7 @@ define void @lifetime_for_first_arg_before_multiply_load_from_offset(ptr noalias ; CHECK-NEXT: store <2 x double> [[TMP13]], ptr [[TMP26]], align 8 ; CHECK-NEXT: [[VEC_GEP28:%.*]] = getelementptr double, ptr [[TMP26]], i64 2 ; CHECK-NEXT: store <2 x double> [[TMP25]], ptr [[VEC_GEP28]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; entry: @@ -245,7 +245,7 @@ entry: %gep.8 = getelementptr i8, ptr %A, i64 8 %a = load <4 x double>, ptr %gep.8, align 8 %b = load <4 x double>, ptr %B, align 8 - call void @llvm.lifetime.end(i64 -1, ptr %A) + call void @llvm.lifetime.end(ptr %A) %c = call <4 x double> @llvm.matrix.multiply(<4 x double> %a, <4 x double> %b, i32 2, i32 2, i32 2) store <4 x double> %c, ptr %C, align 8 ret void @@ -332,7 +332,7 @@ entry: br i1 %c.0, label %then, label %exit then: - call void @llvm.lifetime.end(i64 -1, ptr %A) + call void @llvm.lifetime.end(ptr %A) br label %exit exit: @@ -422,7 +422,7 @@ entry: br i1 %c.0, label %then, label %exit then: - call void @llvm.lifetime.end(i64 -1, ptr %B) + call void @llvm.lifetime.end(ptr %B) br label %exit exit: @@ -442,8 +442,8 @@ define void @multiple_unrelated_lifetimes(ptr noalias %C, i1 %c.0) { ; CHECK-NEXT: call void @init(ptr [[B]]) ; CHECK-NEXT: br i1 [[C:%.*]], label [[THEN:%.*]], label [[EXIT:%.*]] ; CHECK: then: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ALLOC_1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[ALLOC_2]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ALLOC_1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[ALLOC_2]]) ; CHECK-NEXT: br label [[EXIT]] ; CHECK: exit: ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr double, ptr [[A]], i64 0 @@ -522,10 +522,10 @@ entry: br i1 %c.0, label %then, label %exit then: - call void @llvm.lifetime.end(i64 -1, ptr %B) - call void @llvm.lifetime.end(i64 -1, ptr %alloc.1) - call void @llvm.lifetime.end(i64 -1, ptr %A) - call void @llvm.lifetime.end(i64 -1, ptr %alloc.2) + call void @llvm.lifetime.end(ptr %B) + call void @llvm.lifetime.end(ptr %alloc.1) + call void @llvm.lifetime.end(ptr %A) + call void @llvm.lifetime.end(ptr %alloc.2) br label %exit exit: @@ -607,8 +607,8 @@ define void @lifetimes_for_args_in_different_blocks(ptr noalias %C, i1 %c.0) { ; CHECK-NEXT: store <2 x double> [[TMP25]], ptr [[VEC_GEP28]], align 8 ; CHECK-NEXT: br label [[EXIT]] ; CHECK: exit: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B]]) ; CHECK-NEXT: ret void ; entry: @@ -626,8 +626,8 @@ then: br label %exit exit: - call void @llvm.lifetime.end(i64 -1, ptr %A) - call void @llvm.lifetime.end(i64 -1, ptr %B) + call void @llvm.lifetime.end(ptr %A) + call void @llvm.lifetime.end(ptr %B) ret void } @@ -640,8 +640,8 @@ define void @lifetimes_for_args_in_different_blocks2(ptr noalias %C, i1 %c.0) { ; CHECK-NEXT: call void @init(ptr [[B]]) ; CHECK-NEXT: br i1 [[C:%.*]], label [[THEN:%.*]], label [[EXIT:%.*]] ; CHECK: then: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[B]]) ; CHECK-NEXT: br label [[EXIT]] ; CHECK: exit: ; CHECK-NEXT: [[TMP0:%.*]] = getelementptr double, ptr [[A]], i64 0 @@ -716,8 +716,8 @@ entry: br i1 %c.0, label %then, label %exit then: - call void @llvm.lifetime.end(i64 -1, ptr %A) - call void @llvm.lifetime.end(i64 -1, ptr %B) + call void @llvm.lifetime.end(ptr %A) + call void @llvm.lifetime.end(ptr %B) br label %exit exit: @@ -809,7 +809,7 @@ entry: call void @init(ptr %A) call void @init(ptr %B) %a = load <4 x double>, ptr %A, align 8 - call void @llvm.lifetime.end(i64 -1, ptr %A) + call void @llvm.lifetime.end(ptr %A) br i1 %c.0, label %then, label %exit then: @@ -819,7 +819,7 @@ then: br label %exit exit: - call void @llvm.lifetime.end(i64 -1, ptr %B) + call void @llvm.lifetime.end(ptr %B) ret void } @@ -904,7 +904,7 @@ entry: call void @init(ptr %A) call void @init(ptr %B) %b = load <4 x double>, ptr %B, align 8 - call void @llvm.lifetime.end(i64 -1, ptr %B) + call void @llvm.lifetime.end(ptr %B) br i1 %c.0, label %then, label %exit then: @@ -914,11 +914,11 @@ then: br label %exit exit: - call void @llvm.lifetime.end(i64 -1, ptr %A) + call void @llvm.lifetime.end(ptr %A) ret void } declare void @init(ptr) -declare void @llvm.lifetime.end(i64, ptr) +declare void @llvm.lifetime.end(ptr) declare <4 x double> @llvm.matrix.multiply(<4 x double>, <4 x double>, i32, i32, i32) diff --git a/llvm/test/Transforms/Mem2Reg/alloca_addrspace.ll b/llvm/test/Transforms/Mem2Reg/alloca_addrspace.ll index 87ff922275ce3..f7e8427410ab8 100644 --- a/llvm/test/Transforms/Mem2Reg/alloca_addrspace.ll +++ b/llvm/test/Transforms/Mem2Reg/alloca_addrspace.ll @@ -10,6 +10,6 @@ define amdgpu_kernel void @addressspace_alloca() { ; CHECK-NEXT: ret void ; %alloca = alloca i8, align 8, addrspace(5) - call void @llvm.lifetime.start(i64 2, ptr addrspace(5) %alloca) + call void @llvm.lifetime.start(ptr addrspace(5) %alloca) ret void } diff --git a/llvm/test/Transforms/Mem2Reg/ignore-droppable.ll b/llvm/test/Transforms/Mem2Reg/ignore-droppable.ll index d4bc09731b940..a876319281b17 100644 --- a/llvm/test/Transforms/Mem2Reg/ignore-droppable.ll +++ b/llvm/test/Transforms/Mem2Reg/ignore-droppable.ll @@ -2,8 +2,8 @@ ; RUN: opt -passes=mem2reg -S -o - < %s | FileCheck %s declare void @llvm.assume(i1) -declare void @llvm.lifetime.start.p0(i64 %size, ptr nocapture %ptr) -declare void @llvm.lifetime.end.p0(i64 %size, ptr nocapture %ptr) +declare void @llvm.lifetime.start.p0(ptr nocapture %ptr) +declare void @llvm.lifetime.end.p0(ptr nocapture %ptr) define void @positive_assume_uses(ptr %arg) { ; CHECK-LABEL: @positive_assume_uses( @@ -54,10 +54,10 @@ define void @positive_gep_assume_uses() { ; %A = alloca {i8, i16} %B = getelementptr {i8, i16}, ptr %A, i32 0, i32 0 - call void @llvm.lifetime.start.p0(i64 2, ptr %A) + call void @llvm.lifetime.start.p0(ptr %A) call void @llvm.assume(i1 true) ["align"(ptr %B, i64 8), "align"(ptr %B, i64 16)] store {i8, i16} zeroinitializer, ptr %A - call void @llvm.lifetime.end.p0(i64 2, ptr %A) + call void @llvm.lifetime.end.p0(ptr %A) call void @llvm.assume(i1 true) ["nonnull"(ptr %B), "align"(ptr %B, i64 2)] ret void } @@ -70,10 +70,10 @@ define void @positive_mixed_assume_uses() { ; CHECK-NEXT: ret void ; %A = alloca i8 - call void @llvm.lifetime.start.p0(i64 2, ptr %A) + call void @llvm.lifetime.start.p0(ptr %A) call void @llvm.assume(i1 true) ["nonnull"(ptr %A), "align"(ptr %A, i64 8), "align"(ptr %A, i64 16)] store i8 1, ptr %A - call void @llvm.lifetime.end.p0(i64 2, ptr %A) + call void @llvm.lifetime.end.p0(ptr %A) call void @llvm.assume(i1 true) ["nonnull"(ptr %A), "align"(ptr %A, i64 2), "nonnull"(ptr %A)] call void @llvm.assume(i1 true) ["nonnull"(ptr %A), "align"(ptr %A, i64 2), "nonnull"(ptr %A)] ret void diff --git a/llvm/test/Transforms/Mem2Reg/ignore-lifetime.ll b/llvm/test/Transforms/Mem2Reg/ignore-lifetime.ll index bcc96937ec408..510fb2b8638e0 100644 --- a/llvm/test/Transforms/Mem2Reg/ignore-lifetime.ll +++ b/llvm/test/Transforms/Mem2Reg/ignore-lifetime.ll @@ -1,15 +1,15 @@ ; RUN: opt -passes=mem2reg -S -o - < %s | FileCheck %s -declare void @llvm.lifetime.start.p0(i64 %size, ptr nocapture %ptr) -declare void @llvm.lifetime.end.p0(i64 %size, ptr nocapture %ptr) +declare void @llvm.lifetime.start.p0(ptr nocapture %ptr) +declare void @llvm.lifetime.end.p0(ptr nocapture %ptr) define void @test1() { ; CHECK: test1 ; CHECK-NOT: alloca %A = alloca i32 - call void @llvm.lifetime.start.p0(i64 2, ptr %A) + call void @llvm.lifetime.start.p0(ptr %A) store i32 1, ptr %A - call void @llvm.lifetime.end.p0(i64 2, ptr %A) + call void @llvm.lifetime.end.p0(ptr %A) ret void } @@ -17,8 +17,8 @@ define void @test2() { ; CHECK: test2 ; CHECK-NOT: alloca %A = alloca {i8, i16} - call void @llvm.lifetime.start.p0(i64 2, ptr %A) + call void @llvm.lifetime.start.p0(ptr %A) store {i8, i16} zeroinitializer, ptr %A - call void @llvm.lifetime.end.p0(i64 2, ptr %A) + call void @llvm.lifetime.end.p0(ptr %A) ret void } diff --git a/llvm/test/Transforms/MemCpyOpt/callslot_badaa.ll b/llvm/test/Transforms/MemCpyOpt/callslot_badaa.ll index 601498e36a7a3..a0c0e9f5ba78a 100644 --- a/llvm/test/Transforms/MemCpyOpt/callslot_badaa.ll +++ b/llvm/test/Transforms/MemCpyOpt/callslot_badaa.ll @@ -5,7 +5,7 @@ declare void @use(ptr) ; Make sure callslot optimization merges alias.scope metadata correctly when it merges instructions. ; Merging here naively generates: ; call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %src, i64 1, i1 false), !alias.scope !3 -; call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %src), !noalias !0 +; call void @llvm.lifetime.end.p0(ptr nonnull %src), !noalias !0 ; ... ; !0 = !{!1} ; !1 = distinct !{!1, !2, !"callee1: %a"} @@ -20,18 +20,18 @@ define i8 @test(i8 %input) { %src = alloca i8 ; NOTE: we're matching the full line and looking for the lack of !alias.scope here ; CHECK: call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %src, i64 1, i1 false) - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %src), !noalias !3 + call void @llvm.lifetime.start.p0(ptr nonnull %src), !noalias !3 store i8 %input, ptr %src call void @llvm.memcpy.p0.p0.i64(ptr align 8 %tmp, ptr align 8 %src, i64 1, i1 false), !alias.scope !0 - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %src), !noalias !3 + call void @llvm.lifetime.end.p0(ptr nonnull %src), !noalias !3 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %dst, ptr align 8 %tmp, i64 1, i1 false), !alias.scope !3 %ret_value = load i8, ptr %dst call void @use(ptr %src) ret i8 %ret_value } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @llvm.memcpy.p0.p0.i64(ptr, ptr, i64, i1) !0 = !{!1} diff --git a/llvm/test/Transforms/MemCpyOpt/capturing-func.ll b/llvm/test/Transforms/MemCpyOpt/capturing-func.ll index 47c435809f92b..c08f60acd8f3a 100644 --- a/llvm/test/Transforms/MemCpyOpt/capturing-func.ll +++ b/llvm/test/Transforms/MemCpyOpt/capturing-func.ll @@ -5,8 +5,8 @@ target datalayout = "e" declare void @foo(ptr) declare void @llvm.memcpy.p0.p0.i32(ptr nocapture, ptr nocapture, i32, i1) nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; Check that the transformation isn't applied if the called function can ; capture the pointer argument (i.e. the nocapture attribute isn't present) @@ -51,18 +51,18 @@ define void @test_lifetime_end() { ; CHECK-LABEL: define {{[^@]+}}@test_lifetime_end() { ; CHECK-NEXT: [[PTR1:%.*]] = alloca i8, align 1 ; CHECK-NEXT: [[PTR2:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[PTR2]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PTR2]]) ; CHECK-NEXT: call void @foo(ptr [[PTR1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr [[PTR2]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTR2]]) ; CHECK-NEXT: call void @foo(ptr [[PTR1]]) ; CHECK-NEXT: ret void ; %ptr1 = alloca i8 %ptr2 = alloca i8 - call void @llvm.lifetime.start.p0(i64 1, ptr %ptr2) + call void @llvm.lifetime.start.p0(ptr %ptr2) call void @foo(ptr %ptr2) call void @llvm.memcpy.p0.p0.i32(ptr %ptr1, ptr %ptr2, i32 1, i1 false) - call void @llvm.lifetime.end.p0(i64 1, ptr %ptr2) + call void @llvm.lifetime.end.p0(ptr %ptr2) call void @foo(ptr %ptr1) ret void } diff --git a/llvm/test/Transforms/MemCpyOpt/lifetime-missing.ll b/llvm/test/Transforms/MemCpyOpt/lifetime-missing.ll index 0626f09702f7e..06d9434e8c5c8 100644 --- a/llvm/test/Transforms/MemCpyOpt/lifetime-missing.ll +++ b/llvm/test/Transforms/MemCpyOpt/lifetime-missing.ll @@ -7,7 +7,7 @@ target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16 target triple = "x86_64-grtev4-linux-gnu" ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) define void @test() { @@ -26,7 +26,7 @@ entry: %agg.tmp.sroa.14 = alloca [20 x i8], align 4 %agg.tmp.sroa.14.128.sroa_idx = getelementptr i8, ptr %agg.tmp.sroa.14, i64 4 call void @llvm.memset.p0.i64(ptr %agg.tmp.sroa.14.128.sroa_idx, i8 0, i64 1, i1 false) - call void @llvm.lifetime.start.p0(i64 20, ptr %agg.tmp3.sroa.35) + call void @llvm.lifetime.start.p0(ptr %agg.tmp3.sroa.35) call void @llvm.memcpy.p0.p0.i64(ptr %agg.tmp3.sroa.35, ptr %agg.tmp.sroa.14, i64 20, i1 false) %agg.tmp3.sroa.35.128.sroa_idx = getelementptr i8, ptr %agg.tmp3.sroa.35, i64 4 call void @llvm.memcpy.p0.p0.i64(ptr inttoptr (i64 4 to ptr), ptr %agg.tmp3.sroa.35.128.sroa_idx, i64 1, i1 false) diff --git a/llvm/test/Transforms/MemCpyOpt/lifetime.ll b/llvm/test/Transforms/MemCpyOpt/lifetime.ll index e9fc06b1e1da9..4eab12a4edda9 100644 --- a/llvm/test/Transforms/MemCpyOpt/lifetime.ll +++ b/llvm/test/Transforms/MemCpyOpt/lifetime.ll @@ -5,46 +5,46 @@ ; @llvm.lifetime.start and @llvm.memcpy. declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define void @call_slot(ptr nocapture dereferenceable(16) %arg1) { ; CHECK-LABEL: @call_slot( ; CHECK-NEXT: bb: ; CHECK-NEXT: [[TMP:%.*]] = alloca [8 x i8], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[TMP]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[TMP]]) ; CHECK-NEXT: [[TMP10:%.*]] = getelementptr inbounds i8, ptr [[TMP]], i64 7 ; CHECK-NEXT: store i8 0, ptr [[TMP10]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[TMP]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[TMP]]) ; CHECK-NEXT: ret void ; bb: %tmp = alloca [8 x i8], align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr %tmp) + call void @llvm.lifetime.start.p0(ptr %tmp) %tmp10 = getelementptr inbounds i8, ptr %tmp, i64 7 store i8 0, ptr %tmp10, align 1 call void @llvm.memcpy.p0.p0.i64(ptr align 8 %arg1, ptr align 8 %tmp, i64 16, i1 false) - call void @llvm.lifetime.end.p0(i64 16, ptr %tmp) + call void @llvm.lifetime.end.p0(ptr %tmp) ret void } define void @memcpy_memcpy_across_lifetime(ptr noalias %p1, ptr noalias %p2, ptr noalias %p3) { ; CHECK-LABEL: @memcpy_memcpy_across_lifetime( ; CHECK-NEXT: [[A:%.*]] = alloca [16 x i8], align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[A]], ptr [[P1:%.*]], i64 16, i1 false) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[P1]], ptr [[P2:%.*]], i64 16, i1 false) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[P2]], ptr [[A]], i64 16, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[P3:%.*]], ptr [[P2]], i64 16, i1 false) ; CHECK-NEXT: ret void ; %a = alloca [16 x i8] - call void @llvm.lifetime.start.p0(i64 16, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @llvm.memcpy.p0.p0.i64(ptr %a, ptr %p1, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr %p1, ptr %p2, i64 16, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr %p2, ptr %a, i64 16, i1 false) - call void @llvm.lifetime.end.p0(i64 16, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) call void @llvm.memcpy.p0.p0.i64(ptr %p3, ptr %p2, i64 16, i1 false) ret void } @@ -55,18 +55,18 @@ define i32 @call_slot_move_lifetime_start() { ; CHECK-LABEL: @call_slot_move_lifetime_start( ; CHECK-NEXT: [[TMP:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[DST:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DST]]) ; CHECK-NEXT: call void @call(ptr [[DST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DST]]) ; CHECK-NEXT: [[V:%.*]] = load i32, ptr [[DST]], align 4 ; CHECK-NEXT: ret i32 [[V]] ; %tmp = alloca i32 %dst = alloca i32 call void @call(ptr %tmp) - call void @llvm.lifetime.start.p0(i64 4, ptr %dst) + call void @llvm.lifetime.start.p0(ptr %dst) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dst, ptr align 4 %tmp, i64 4, i1 false) - call void @llvm.lifetime.end.p0(i64 4, ptr %dst) + call void @llvm.lifetime.end.p0(ptr %dst) %v = load i32, ptr %dst ret i32 %v } @@ -76,20 +76,20 @@ define i32 @call_slot_two_lifetime_starts() { ; CHECK-NEXT: [[TMP:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[DST:%.*]] = alloca i32, align 4 ; CHECK-NEXT: call void @call(ptr [[TMP]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DST]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DST]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DST]], ptr align 4 [[TMP]], i64 4, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DST]]) ; CHECK-NEXT: [[V:%.*]] = load i32, ptr [[DST]], align 4 ; CHECK-NEXT: ret i32 [[V]] ; %tmp = alloca i32 %dst = alloca i32 call void @call(ptr %tmp) - call void @llvm.lifetime.start.p0(i64 4, ptr %dst) - call void @llvm.lifetime.start.p0(i64 4, ptr %dst) + call void @llvm.lifetime.start.p0(ptr %dst) + call void @llvm.lifetime.start.p0(ptr %dst) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dst, ptr align 4 %tmp, i64 4, i1 false) - call void @llvm.lifetime.end.p0(i64 4, ptr %dst) + call void @llvm.lifetime.end.p0(ptr %dst) %v = load i32, ptr %dst ret i32 %v } @@ -100,9 +100,9 @@ define i32 @call_slot_clobber_before_lifetime_start() { ; CHECK-NEXT: [[DST:%.*]] = alloca i32, align 4 ; CHECK-NEXT: call void @call(ptr [[TMP]]) ; CHECK-NEXT: store i32 0, ptr [[DST]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[DST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[DST]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DST]], ptr align 4 [[TMP]], i64 4, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[DST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[DST]]) ; CHECK-NEXT: [[V:%.*]] = load i32, ptr [[DST]], align 4 ; CHECK-NEXT: ret i32 [[V]] ; @@ -110,9 +110,9 @@ define i32 @call_slot_clobber_before_lifetime_start() { %dst = alloca i32 call void @call(ptr %tmp) store i32 0, ptr %dst - call void @llvm.lifetime.start.p0(i64 4, ptr %dst) + call void @llvm.lifetime.start.p0(ptr %dst) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dst, ptr align 4 %tmp, i64 4, i1 false) - call void @llvm.lifetime.end.p0(i64 4, ptr %dst) + call void @llvm.lifetime.end.p0(ptr %dst) %v = load i32, ptr %dst ret i32 %v } diff --git a/llvm/test/Transforms/MemCpyOpt/memcpy-byval-forwarding-clobbers.ll b/llvm/test/Transforms/MemCpyOpt/memcpy-byval-forwarding-clobbers.ll index 383040c6c89e2..e1b32cdf5ab45 100644 --- a/llvm/test/Transforms/MemCpyOpt/memcpy-byval-forwarding-clobbers.ll +++ b/llvm/test/Transforms/MemCpyOpt/memcpy-byval-forwarding-clobbers.ll @@ -7,8 +7,8 @@ declare i1 @check(ptr readonly byval(i64) align 8) readonly argmemonly declare void @clobber(ptr) argmemonly -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) ; %a.2's lifetime ends before the call to @check. We must remove the call to @@ -25,11 +25,11 @@ define i1 @alloca_forwarding_lifetime_end_clobber() { entry: %a.1 = alloca i64, align 8 %a.2 = alloca i64, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %a.2) + call void @llvm.lifetime.start.p0(ptr %a.2) call void @init(ptr sret(i64) align 8 %a.2) store i8 0, ptr %a.2 call void @llvm.memcpy.p0.p0.i64(ptr %a.1, ptr %a.2, i64 8, i1 false) - call void @llvm.lifetime.end.p0(i64 8, ptr %a.2) + call void @llvm.lifetime.end.p0(ptr %a.2) ;call void @clobber(ptr %a.2) %call = call i1 @check(ptr byval(i64) align 8 %a.1) ret i1 %call @@ -42,7 +42,7 @@ define i1 @alloca_forwarding_call_clobber() { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A_1:%.*]] = alloca i64, align 8 ; CHECK-NEXT: [[A_2:%.*]] = alloca i64, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[A_2]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_2]]) ; CHECK-NEXT: call void @init(ptr sret(i64) align 8 [[A_2]]) ; CHECK-NEXT: store i8 0, ptr [[A_2]], align 1 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[A_1]], ptr [[A_2]], i64 8, i1 false) @@ -53,7 +53,7 @@ define i1 @alloca_forwarding_call_clobber() { entry: %a.1 = alloca i64, align 8 %a.2 = alloca i64, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %a.2) + call void @llvm.lifetime.start.p0(ptr %a.2) call void @init(ptr sret(i64) align 8 %a.2) store i8 0, ptr %a.2 call void @llvm.memcpy.p0.p0.i64(ptr %a.1, ptr %a.2, i64 8, i1 false) @@ -67,7 +67,7 @@ define i1 @alloca_forwarding_call_clobber_after() { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A_1:%.*]] = alloca i64, align 8 ; CHECK-NEXT: [[A_2:%.*]] = alloca i64, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[A_2]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A_2]]) ; CHECK-NEXT: call void @init(ptr sret(i64) align 8 [[A_2]]) ; CHECK-NEXT: store i8 0, ptr [[A_2]], align 1 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[A_1]], ptr [[A_2]], i64 8, i1 false) @@ -78,7 +78,7 @@ define i1 @alloca_forwarding_call_clobber_after() { entry: %a.1 = alloca i64, align 8 %a.2 = alloca i64, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %a.2) + call void @llvm.lifetime.start.p0(ptr %a.2) call void @init(ptr sret(i64) align 8 %a.2) store i8 0, ptr %a.2 call void @llvm.memcpy.p0.p0.i64(ptr %a.1, ptr %a.2, i64 8, i1 false) @@ -102,7 +102,7 @@ entry: %a.1 = alloca i64, align 8 %a.2 = alloca i64, align 8 %a.3 = alloca i64, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %a.2) + call void @llvm.lifetime.start.p0(ptr %a.2) call void @init(ptr sret(i64) align 8 %a.2) store i8 0, ptr %a.2 call void @llvm.memcpy.p0.p0.i64(ptr %a.1, ptr %a.2, i64 8, i1 false) diff --git a/llvm/test/Transforms/MemCpyOpt/memcpy-gep-modification.ll b/llvm/test/Transforms/MemCpyOpt/memcpy-gep-modification.ll index ba6faf3578c50..5e81c0d05b2c4 100644 --- a/llvm/test/Transforms/MemCpyOpt/memcpy-gep-modification.ll +++ b/llvm/test/Transforms/MemCpyOpt/memcpy-gep-modification.ll @@ -3,8 +3,8 @@ %struct.MaskedType = type { i8, i8 } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #0 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 +declare void @llvm.lifetime.end.p0(ptr nocapture) #0 declare void @MaskedFunction1(ptr, ptr addrspace(1)) declare void @MaskedFunction2(ptr, ptr) @@ -13,11 +13,11 @@ define i8 @test_gep_not_modified(ptr %in0, ptr %in1) { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[FUNCALLOC:%.*]] = alloca [[STRUCT_MASKEDTYPE:%.*]], align 4 ; CHECK-NEXT: [[PTRALLOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[PTRALLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PTRALLOC]]) ; CHECK-NEXT: [[ADDRSPACECAST:%.*]] = addrspacecast ptr [[PTRALLOC]] to ptr addrspace(1) ; CHECK-NEXT: call void @MaskedFunction1(ptr [[IN1:%.*]], ptr addrspace(1) [[ADDRSPACECAST]]) ; CHECK-NEXT: [[LOAD1:%.*]] = load i8, ptr [[PTRALLOC]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[PTRALLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTRALLOC]]) ; CHECK-NEXT: [[GETELEMPTR1:%.*]] = getelementptr inbounds [[STRUCT_MASKEDTYPE]], ptr [[FUNCALLOC]], i32 0, i32 1 ; CHECK-NEXT: store i8 [[LOAD1]], ptr [[GETELEMPTR1]], align 1 ; CHECK-NEXT: ret i8 0 @@ -25,11 +25,11 @@ define i8 @test_gep_not_modified(ptr %in0, ptr %in1) { entry: %funcAlloc = alloca %struct.MaskedType, align 4 %ptrAlloc = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 4, ptr %ptrAlloc) #0 + call void @llvm.lifetime.start.p0(ptr %ptrAlloc) #0 %addrspaceCast = addrspacecast ptr %ptrAlloc to ptr addrspace(1) call void @MaskedFunction1(ptr %in1, ptr addrspace(1) %addrspaceCast) %load1 = load i8, ptr %ptrAlloc, align 1 - call void @llvm.lifetime.end.p0(i64 4, ptr %ptrAlloc) #0 + call void @llvm.lifetime.end.p0(ptr %ptrAlloc) #0 %getElemPtr1 = getelementptr inbounds %struct.MaskedType, ptr %funcAlloc, i32 0, i32 1 store i8 %load1, ptr %getElemPtr1, align 1 ret i8 0 @@ -40,19 +40,19 @@ define i8 @test_gep_modified(ptr %in0, ptr %in1) { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[FUNCALLOC:%.*]] = alloca [[STRUCT_MASKEDTYPE:%.*]], align 4 ; CHECK-NEXT: [[PTRALLOC:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[PTRALLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[PTRALLOC]]) ; CHECK-NEXT: [[GETELEMPTR1:%.*]] = getelementptr inbounds [[STRUCT_MASKEDTYPE]], ptr [[FUNCALLOC]], i32 0, i32 1 ; CHECK-NEXT: call void @MaskedFunction2(ptr [[IN1:%.*]], ptr [[GETELEMPTR1]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[PTRALLOC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[PTRALLOC]]) ; CHECK-NEXT: ret i8 0 ; entry: %funcAlloc = alloca %struct.MaskedType, align 4 %ptrAlloc = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 4, ptr %ptrAlloc) #0 + call void @llvm.lifetime.start.p0(ptr %ptrAlloc) #0 call void @MaskedFunction2(ptr %in1, ptr %ptrAlloc) %load1 = load i8, ptr %ptrAlloc, align 1 - call void @llvm.lifetime.end.p0(i64 4, ptr %ptrAlloc) #0 + call void @llvm.lifetime.end.p0(ptr %ptrAlloc) #0 %getElemPtr1 = getelementptr inbounds %struct.MaskedType, ptr %funcAlloc, i32 0, i32 1 store i8 %load1, ptr %getElemPtr1, align 1 ret i8 0 diff --git a/llvm/test/Transforms/MemCpyOpt/memcpy-to-memset-with-lifetimes.ll b/llvm/test/Transforms/MemCpyOpt/memcpy-to-memset-with-lifetimes.ll index 1771fe6c31f9b..7a7f8e109cbd0 100644 --- a/llvm/test/Transforms/MemCpyOpt/memcpy-to-memset-with-lifetimes.ll +++ b/llvm/test/Transforms/MemCpyOpt/memcpy-to-memset-with-lifetimes.ll @@ -12,10 +12,10 @@ define void @foo(ptr noalias nocapture sret([8 x i64]) dereferenceable(64) %sret ; entry-block: %a = alloca [8 x i64], align 8 - call void @llvm.lifetime.start.p0(i64 64, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @llvm.memset.p0.i64(ptr align 8 %a, i8 0, i64 64, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %sret, ptr align 8 %a, i64 64, i1 false) - call void @llvm.lifetime.end.p0(i64 64, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -24,28 +24,28 @@ define void @bar(ptr noalias nocapture sret([8 x i64]) dereferenceable(64) %sret ; CHECK-LABEL: @bar( ; CHECK-NEXT: entry-block: ; CHECK-NEXT: [[A:%.*]] = alloca [8 x i64], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 64, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[A]]) ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) [[A]], i8 0, i64 64, i1 false) ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) [[SRET:%.*]], i8 0, i64 64, i1 false) ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(32) [[A]], i8 42, i64 32, i1 false) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 8 dereferenceable(64) [[OUT:%.*]], ptr noundef nonnull align 8 dereferenceable(64) [[A]], i64 64, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 64, ptr nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[A]]) ; CHECK-NEXT: ret void ; entry-block: %a = alloca [8 x i64], align 8 - call void @llvm.lifetime.start.p0(i64 64, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @llvm.memset.p0.i64(ptr align 8 %a, i8 0, i64 64, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %sret, ptr align 8 %a, i64 64, i1 false) call void @llvm.memset.p0.i64(ptr align 8 %a, i8 42, i64 32, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %out, ptr align 8 %a, i64 64, i1 false) - call void @llvm.lifetime.end.p0(i64 64, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) nounwind declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) nounwind diff --git a/llvm/test/Transforms/MemCpyOpt/memcpy-undef.ll b/llvm/test/Transforms/MemCpyOpt/memcpy-undef.ll index 84253dca16bae..6e28811460d55 100644 --- a/llvm/test/Transforms/MemCpyOpt/memcpy-undef.ll +++ b/llvm/test/Transforms/MemCpyOpt/memcpy-undef.ll @@ -29,11 +29,11 @@ define i32 @test1(ptr nocapture %foobie) nounwind noinline ssp uwtable { define void @test2(ptr sret(i8) noalias nocapture %out) nounwind noinline ssp uwtable { ; CHECK-LABEL: @test2( ; CHECK-NEXT: [[IN:%.*]] = alloca i64, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[IN]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[IN]]) ; CHECK-NEXT: ret void ; %in = alloca i64 - call void @llvm.lifetime.start.p0(i64 8, ptr %in) + call void @llvm.lifetime.start.p0(ptr %in) call void @llvm.memcpy.p0.p0.i64(ptr %out, ptr %in, i64 8, i1 false) ret void } @@ -42,12 +42,12 @@ define void @test2(ptr sret(i8) noalias nocapture %out) nounwind noinline ssp uw define void @test_lifetime_may_alias(ptr %src, ptr %dst) { ; CHECK-LABEL: @test_lifetime_may_alias( ; CHECK-NEXT: [[LIFETIME:%.*]] = alloca i64, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[LIFETIME]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[LIFETIME]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[DST:%.*]], ptr [[SRC:%.*]], i64 8, i1 false) ; CHECK-NEXT: ret void ; %lifetime = alloca i64 - call void @llvm.lifetime.start.p0(i64 8, ptr %lifetime) + call void @llvm.lifetime.start.p0(ptr %lifetime) call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %src, i64 8, i1 false) ret void } @@ -56,12 +56,12 @@ define void @test_lifetime_may_alias(ptr %src, ptr %dst) { define void @test_lifetime_partial_alias_1(ptr noalias %dst) { ; CHECK-LABEL: @test_lifetime_partial_alias_1( ; CHECK-NEXT: [[A:%.*]] = alloca [16 x i8], align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: [[GEP:%.*]] = getelementptr i8, ptr [[A]], i64 8 ; CHECK-NEXT: ret void ; %a = alloca [16 x i8] - call void @llvm.lifetime.start.p0(i64 16, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) %gep = getelementptr i8, ptr %a, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %gep, i64 8, i1 false) ret void @@ -71,12 +71,12 @@ define void @test_lifetime_partial_alias_1(ptr noalias %dst) { define void @test_lifetime_partial_alias_2(ptr noalias %dst) { ; CHECK-LABEL: @test_lifetime_partial_alias_2( ; CHECK-NEXT: [[A:%.*]] = alloca [16 x i8], align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: [[GEP:%.*]] = getelementptr i8, ptr [[A]], i64 8 ; CHECK-NEXT: ret void ; %a = alloca [16 x i8] - call void @llvm.lifetime.start.p0(i64 16, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) %gep = getelementptr i8, ptr %a, i64 8 call void @llvm.memcpy.p0.p0.i64(ptr %dst, ptr %gep, i64 16, i1 false) ret void @@ -84,4 +84,4 @@ define void @test_lifetime_partial_alias_2(ptr noalias %dst) { declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture, i64, i1) nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind diff --git a/llvm/test/Transforms/MemCpyOpt/memset-memcpy-oversized.ll b/llvm/test/Transforms/MemCpyOpt/memset-memcpy-oversized.ll index 343f95181a8e5..2575d58dcac72 100644 --- a/llvm/test/Transforms/MemCpyOpt/memset-memcpy-oversized.ll +++ b/llvm/test/Transforms/MemCpyOpt/memset-memcpy-oversized.ll @@ -23,17 +23,17 @@ define void @test_alloca(ptr %result) { define void @test_alloca_with_lifetimes(ptr %result) { ; CHECK-LABEL: @test_alloca_with_lifetimes( ; CHECK-NEXT: [[A:%.*]] = alloca [[T:%.*]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 8 [[A]], i8 0, i64 12, i1 false) ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr [[RESULT:%.*]], i8 0, i64 12, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %a = alloca %T, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) call void @llvm.memset.p0.i64(ptr align 8 %a, i8 0, i64 12, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr %result, ptr align 8 %a, i64 16, i1 false) - call void @llvm.lifetime.end.p0(i64 16, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -201,5 +201,5 @@ declare void @free(ptr) declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) declare void @llvm.memcpy.p0.p0.i64(ptr nocapture, ptr nocapture readonly, i64, i1) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Transforms/MemCpyOpt/pr29105.ll b/llvm/test/Transforms/MemCpyOpt/pr29105.ll index d47bddd4597fb..f4538b92e292c 100644 --- a/llvm/test/Transforms/MemCpyOpt/pr29105.ll +++ b/llvm/test/Transforms/MemCpyOpt/pr29105.ll @@ -7,34 +7,34 @@ define void @baz() unnamed_addr #0 { ; CHECK-LABEL: @baz( ; CHECK-NEXT: entry-block: ; CHECK-NEXT: [[TMP2:%.*]] = alloca [[FOO:%.*]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 16384, ptr nonnull [[TMP2]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP2]]) ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr noundef nonnull align 8 dereferenceable(16384) [[TMP2]], i8 0, i64 16384, i1 false) ; CHECK-NEXT: call void @bar(ptr noalias nonnull captures(none) dereferenceable(16384) [[TMP2]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 16384, ptr nonnull [[TMP2]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP2]]) ; CHECK-NEXT: ret void ; entry-block: %x.sroa.0 = alloca [2048 x i64], align 8 %tmp0 = alloca [2048 x i64], align 8 %tmp2 = alloca %Foo, align 8 - call void @llvm.lifetime.start.p0(i64 16384, ptr %x.sroa.0) - call void @llvm.lifetime.start.p0(i64 16384, ptr %tmp0) + call void @llvm.lifetime.start.p0(ptr %x.sroa.0) + call void @llvm.lifetime.start.p0(ptr %tmp0) call void @llvm.memset.p0.i64(ptr align 8 %tmp0, i8 0, i64 16384, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %x.sroa.0, ptr align 8 %tmp0, i64 16384, i1 false) - call void @llvm.lifetime.end.p0(i64 16384, ptr %tmp0) - call void @llvm.lifetime.start.p0(i64 16384, ptr %tmp2) + call void @llvm.lifetime.end.p0(ptr %tmp0) + call void @llvm.lifetime.start.p0(ptr %tmp2) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %tmp2, ptr align 8 %x.sroa.0, i64 16384, i1 false) call void @bar(ptr noalias nocapture nonnull dereferenceable(16384) %tmp2) - call void @llvm.lifetime.end.p0(i64 16384, ptr %tmp2) - call void @llvm.lifetime.end.p0(i64 16384, ptr %x.sroa.0) + call void @llvm.lifetime.end.p0(ptr %tmp2) + call void @llvm.lifetime.end.p0(ptr %x.sroa.0) ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) #1 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 declare void @bar(ptr noalias nocapture readonly dereferenceable(16384)) unnamed_addr #0 diff --git a/llvm/test/Transforms/MemCpyOpt/preserve-memssa.ll b/llvm/test/Transforms/MemCpyOpt/preserve-memssa.ll index ff36bf0315311..e1a6c3f00c05d 100644 --- a/llvm/test/Transforms/MemCpyOpt/preserve-memssa.ll +++ b/llvm/test/Transforms/MemCpyOpt/preserve-memssa.ll @@ -78,7 +78,7 @@ define void @test5(ptr %ptr) { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[EARLY_DATA:%.*]] = alloca [128 x i8], align 8 ; CHECK-NEXT: [[TMP:%.*]] = alloca [[T:%.*]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[EARLY_DATA]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[EARLY_DATA]]) ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[PTR:%.*]], align 8 ; CHECK-NEXT: call fastcc void @decompose(ptr [[TMP]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr [[EARLY_DATA]], ptr [[TMP]], i64 32, i1 false) @@ -87,7 +87,7 @@ define void @test5(ptr %ptr) { entry: %early_data = alloca [128 x i8], align 8 %tmp = alloca %t, align 8 - call void @llvm.lifetime.start.p0(i64 32, ptr %early_data) + call void @llvm.lifetime.start.p0(ptr %early_data) %0 = load i32, ptr %ptr, align 8 call fastcc void @decompose(ptr %tmp) call void @llvm.memcpy.p0.p0.i64(ptr %early_data, ptr %tmp, i64 32, i1 false) @@ -131,7 +131,7 @@ define void @test8(ptr noalias %src, ptr %dst) { declare void @clobber() ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #0 diff --git a/llvm/test/Transforms/MemCpyOpt/stack-move.ll b/llvm/test/Transforms/MemCpyOpt/stack-move.ll index 31e255b83eb9e..940e30ec46881 100644 --- a/llvm/test/Transforms/MemCpyOpt/stack-move.ll +++ b/llvm/test/Transforms/MemCpyOpt/stack-move.ll @@ -9,12 +9,12 @@ declare void @llvm.memcpy.p2.p1.i64(ptr addrspace(2) noalias nocapture writeonly declare void @llvm.memmove.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1 immarg) declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) -declare void @llvm.lifetime.start.p1(i64, ptr addrspace(1) nocapture) -declare void @llvm.lifetime.end.p1(i64, ptr addrspace(1) nocapture) -declare void @llvm.lifetime.start.p2(i64, ptr addrspace(2) nocapture) -declare void @llvm.lifetime.end.p2(i64, ptr addrspace(2) nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) +declare void @llvm.lifetime.start.p1(ptr addrspace(1) nocapture) +declare void @llvm.lifetime.end.p1(ptr addrspace(1) nocapture) +declare void @llvm.lifetime.start.p2(ptr addrspace(2) nocapture) +declare void @llvm.lifetime.end.p2(ptr addrspace(2) nocapture) declare i32 @use_nocapture(ptr nocapture) declare i32 @use_maycapture(ptr noundef) @@ -31,8 +31,8 @@ define void @basic_memcpy() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) @@ -40,8 +40,8 @@ define void @basic_memcpy() { %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -74,8 +74,8 @@ define void @basic_memmove() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) @@ -83,8 +83,8 @@ define void @basic_memmove() { %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -99,8 +99,8 @@ define void @load_store() { ; %src = alloca i32, align 4 %dest = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 4, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store i32 42, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) @@ -108,8 +108,8 @@ define void @load_store() { store i32 %src.val, ptr %dest %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 4, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 4, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -125,8 +125,8 @@ define void @load_store_scalable( %x) { ; %src = alloca %dest = alloca - call void @llvm.lifetime.start.p0(i64 -1, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 -1, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %x, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) @@ -135,8 +135,8 @@ define void @load_store_scalable( %x) { %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 -1, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 -1, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -151,16 +151,16 @@ define void @align_up() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 8 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -177,21 +177,21 @@ define void @remove_extra_lifetime_intrinsics() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %src) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %src) %3 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -230,8 +230,8 @@ define void @alias_no_mod() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) %dest.alias = getelementptr %struct.Foo, ptr %dest, i32 0, i32 0 store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) @@ -240,8 +240,8 @@ define void @alias_no_mod() { %src.alias = getelementptr %struct.Foo, ptr %src, i32 0, i32 0 %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -265,16 +265,16 @@ define void @remove_scoped_noalias() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src), !alias.scope !2 call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %src) %2 = call i32 @use_nocapture(ptr nocapture %dest), !noalias !2 - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -289,16 +289,16 @@ define void @remove_alloca_metadata() { ; %src = alloca %struct.Foo, align 4, !annotation !3 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src), !alias.scope !2 call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %2 = call i32 @use_nocapture(ptr nocapture %dest), !noalias !2 - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -314,16 +314,16 @@ define void @noalias_on_lifetime() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src), !alias.scope !2 call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src), !alias.scope !2 + call void @llvm.lifetime.end.p0(ptr nocapture %src), !alias.scope !2 %2 = call i32 @use_nocapture(ptr nocapture %dest), !noalias !2 - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest), !noalias !2 + call void @llvm.lifetime.end.p0(ptr nocapture %dest), !noalias !2 ret void } @@ -338,16 +338,16 @@ define void @src_ref_dest_ref_after_copy() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %1 = call i32 @use_readonly(ptr nocapture %src) %2 = call i32 @use_readonly(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -362,16 +362,16 @@ define void @src_mod_dest_mod_after_copy() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %1 = call i32 @use_writeonly(ptr nocapture %src) %2 = call i32 @use_writeonly(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -384,10 +384,10 @@ define void @avoid_memory_use_last_user_crash() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %src) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %src) %v = load i32, ptr %dest ret void } @@ -409,14 +409,14 @@ define void @terminator_lastuse() personality i32 0 { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) - call void @llvm.lifetime.end.p0(i64 12, ptr %src) + call void @llvm.lifetime.end.p0(ptr %src) %rv = invoke i32 @use_nocapture(ptr %dest) to label %suc unwind label %unw unw: @@ -441,8 +441,8 @@ define void @multi_bb_memcpy(i1 %b) { ; %src = alloca i32, align 4 %dest = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 4, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store i32 42, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) br label %bb0 @@ -453,8 +453,8 @@ bb0: bb1: %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 4, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 4, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -471,8 +471,8 @@ define void @multi_bb_load_store(i1 %b) { ; %src = alloca i32, align 4 %dest = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 4, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store i32 42, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) @@ -482,8 +482,8 @@ define void @multi_bb_load_store(i1 %b) { bb0: %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 4, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 4, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -494,8 +494,8 @@ define void @multi_bb_separated_load_store(i1 %b) { ; CHECK-SAME: (i1 [[B:%.*]]) { ; CHECK-NEXT: [[SRC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store i32 42, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: [[SRC_VAL:%.*]] = load i32, ptr [[SRC]], align 4 @@ -505,14 +505,14 @@ define void @multi_bb_separated_load_store(i1 %b) { ; CHECK-NEXT: br label [[BB1:%.*]] ; CHECK: bb1: ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca i32, align 4 %dest = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 4, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store i32 42, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) @@ -525,8 +525,8 @@ bb0: bb1: %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 4, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 4, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -548,8 +548,8 @@ define void @multi_bb_simple_br(i1 %b) { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr noundef nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) @@ -564,8 +564,8 @@ bb1: br label %bb2 bb2: - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -598,7 +598,7 @@ bb1: br label %bb2 bb2: - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %1 = call i32 @use_nocapture(ptr noundef nocapture %dest) @@ -620,7 +620,7 @@ define void @multi_bb_dom_test1(i1 %b) { ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 40, i32 50, i32 60 }, ptr [[SRC]], align 4 ; CHECK-NEXT: br label [[BB2]] ; CHECK: bb2: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[DEST]]) ; CHECK-NEXT: ret void @@ -641,7 +641,7 @@ bb1: br label %bb2 bb2: - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false); 1 %1 = call i32 @use_nocapture(ptr noundef nocapture %dest) @@ -671,7 +671,7 @@ define void @multi_bb_pdom_test0(i1 %b) { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false); 1 br i1 %b, label %bb0, label %bb1 @@ -686,7 +686,7 @@ bb1: bb2: %3 = call i32 @use_nocapture(ptr noundef nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void uselistorder ptr %dest, { 2, 3, 0, 1, 4, 5 } @@ -711,7 +711,7 @@ define void @multi_bb_pdom_test1(i1 %b) { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false); 1 br i1 %b, label %bb0, label %bb1 @@ -747,7 +747,7 @@ define void @multi_bb_pdom_test2(i1 %b) { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false); 1 %1 = call i32 @use_nocapture(ptr noundef nocapture %dest) @@ -784,8 +784,8 @@ entry: %nlt1 = icmp slt i32 %n, 1 %src = alloca %struct.Foo, align 8 %dest = alloca %struct.Foo, align 8 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 0, i32 1, i32 42 }, ptr %src br i1 %nlt1, label %loop_exit, label %loop_body @@ -816,8 +816,8 @@ define void @multi_bb_unreachable_modref(i1 %b0) { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr noundef nocapture %src) br i1 %b0, label %bb0, label %exit @@ -828,8 +828,8 @@ exit: bb0: call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -850,8 +850,8 @@ define void @multi_bb_non_dominated(i1 %b0, i1 %b1) { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr noundef nocapture %src) br i1 %b0, label %bb0, label %bb1 @@ -865,8 +865,8 @@ bb1: br label %bb2 bb2: - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -878,30 +878,30 @@ define void @memcpy_is_def() { ; CHECK-LABEL: define void @memcpy_is_def() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[DEST]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[SRC]], ptr align 4 [[DEST]], i64 12, i1 false) ; CHECK-NEXT: [[TMP3:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr noundef nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %2 = call i32 @use_nocapture(ptr noundef nocapture %dest) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %src, ptr align 4 %dest, i64 12, i1 false) %3 = call i32 @use_nocapture(ptr noundef nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -912,30 +912,30 @@ define void @memset_is_def() { ; CHECK-LABEL: define void @memset_is_def() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[DEST]]) ; CHECK-NEXT: call void @llvm.memset.p0.i64(ptr align 4 [[SRC]], i8 42, i64 12, i1 false) ; CHECK-NEXT: [[TMP3:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr noundef nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %2 = call i32 @use_nocapture(ptr noundef nocapture %dest) call void @llvm.memset.p0.i64(ptr align 4 %src, i8 42, i64 12, i1 false) %3 = call i32 @use_nocapture(ptr noundef nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -946,8 +946,8 @@ define void @store_is_def() { ; CHECK-LABEL: define void @store_is_def() { ; CHECK-NEXT: [[SRC:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store i32 42, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[SRC]]) ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[SRC]], align 4 @@ -955,14 +955,14 @@ define void @store_is_def() { ; CHECK-NEXT: [[TMP3:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[DEST]]) ; CHECK-NEXT: store i32 64, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP4:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca i32, align 4 %dest = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 4, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store i32 42, ptr %src %1 = call i32 @use_nocapture(ptr noundef nocapture %src) %2 = load i32, ptr %src @@ -970,8 +970,8 @@ define void @store_is_def() { %3 = call i32 @use_nocapture(ptr noundef nocapture %dest) store i32 64, ptr %src %4 = call i32 @use_nocapture(ptr noundef nocapture %src) - call void @llvm.lifetime.end.p0(i64 4, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 4, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -982,8 +982,8 @@ define void @multi_bb_dataflow(i1 %b) { ; CHECK-SAME: (i1 [[B:%.*]]) { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) @@ -995,14 +995,14 @@ define void @multi_bb_dataflow(i1 %b) { ; CHECK-NEXT: [[TMP3:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[DEST]]) ; CHECK-NEXT: br label [[BB2]] ; CHECK: bb2: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr noundef nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) @@ -1017,8 +1017,8 @@ bb1: br label %bb2 bb2: - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1031,26 +1031,26 @@ define void @incomplete_memcpy() { ; CHECK-LABEL: define void @incomplete_memcpy() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 11, i1 false) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr noundef nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 11, i1 false) %2 = call i32 @use_nocapture(ptr noundef nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1060,28 +1060,28 @@ define void @incomplete_store() { ; CHECK-LABEL: define void @incomplete_store() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[SRC]]) ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[SRC]], align 4 ; CHECK-NEXT: store i32 [[TMP2]], ptr [[DEST]], align 4 ; CHECK-NEXT: [[TMP3:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr noundef nocapture %src) %2 = load i32, ptr %src store i32 %2, ptr %dest %3 = call i32 @use_nocapture(ptr noundef nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1091,28 +1091,28 @@ define void @dynamically_sized_alloca(i64 %i) { ; CHECK-SAME: (i64 [[I:%.*]]) { ; CHECK-NEXT: [[SRC:%.*]] = alloca i8, i64 [[I]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca i8, i64 [[I]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO:%.*]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca i8, i64 %i, align 4 %dest = alloca i8, i64 %i, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 -1, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 -1, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 -1, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1122,28 +1122,28 @@ define void @inalloca() { ; CHECK-LABEL: define void @inalloca() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca inalloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca inalloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1153,28 +1153,28 @@ define void @dynamically_sized_memcpy(i64 %size) { ; CHECK-SAME: (i64 [[SIZE:%.*]]) { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 [[SIZE]], i1 false) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 %size, i1 false) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) ret void } @@ -1183,28 +1183,28 @@ define void @mismatched_alloca_size() { ; CHECK-LABEL: define void @mismatched_alloca_size() { ; CHECK-NEXT: [[SRC:%.*]] = alloca i8, i64 24, align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca i8, i64 12, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 24, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO:%.*]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 24, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca i8, i64 24, align 4 %dest = alloca i8, i64 12, align 4 - call void @llvm.lifetime.start.p0(i64 24, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 24, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1213,28 +1213,28 @@ define void @mismatched_alloca_addrspace() { ; CHECK-LABEL: define void @mismatched_alloca_addrspace() { ; CHECK-NEXT: [[SRC:%.*]] = alloca i8, i64 24, align 4, addrspace(1) ; CHECK-NEXT: [[DEST:%.*]] = alloca i8, i64 12, align 4, addrspace(2) -; CHECK-NEXT: call void @llvm.lifetime.start.p1(i64 24, ptr addrspace(1) captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p2(i64 12, ptr addrspace(2) captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p1(ptr addrspace(1) captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p2(ptr addrspace(2) captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO:%.*]] { i32 10, i32 20, i32 30 }, ptr addrspace(1) [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr addrspace(1) captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p2.p1.i64(ptr addrspace(2) align 4 [[DEST]], ptr addrspace(1) align 4 [[SRC]], i64 12, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p1(i64 24, ptr addrspace(1) captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p1(ptr addrspace(1) captures(none) [[SRC]]) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr addrspace(2) captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p2(i64 12, ptr addrspace(2) captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p2(ptr addrspace(2) captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca i8, i64 24, align 4, addrspace(1) %dest = alloca i8, i64 12, align 4, addrspace(2) - call void @llvm.lifetime.start.p1(i64 24, ptr addrspace(1) nocapture %src) - call void @llvm.lifetime.start.p2(i64 12, ptr addrspace(2) nocapture %dest) + call void @llvm.lifetime.start.p1(ptr addrspace(1) nocapture %src) + call void @llvm.lifetime.start.p2(ptr addrspace(2) nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr addrspace(1) %src %1 = call i32 @use_nocapture(ptr addrspace(1) nocapture %src) call void @llvm.memcpy.p2.p1.i64(ptr addrspace(2) align 4 %dest, ptr addrspace(1) align 4 %src, i64 12, i1 false) - call void @llvm.lifetime.end.p1(i64 24, ptr addrspace(1) nocapture %src) + call void @llvm.lifetime.end.p1(ptr addrspace(1) nocapture %src) %2 = call i32 @use_nocapture(ptr addrspace(2) nocapture %dest) - call void @llvm.lifetime.end.p2(i64 12, ptr addrspace(2) nocapture %dest) + call void @llvm.lifetime.end.p2(ptr addrspace(2) nocapture %dest) ret void } @@ -1243,28 +1243,28 @@ define void @volatile_memcpy() { ; CHECK-LABEL: define void @volatile_memcpy() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 true) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 true) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1273,28 +1273,28 @@ define void @dest_captured() { ; CHECK-LABEL: define void @dest_captured() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_maycapture(ptr [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %2 = call i32 @use_maycapture(ptr %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1303,28 +1303,28 @@ define void @src_captured() { ; CHECK-LABEL: define void @src_captured() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_maycapture(ptr [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_maycapture(ptr %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1334,30 +1334,30 @@ define void @mod_ref_before_copy() { ; CHECK-LABEL: define void @mod_ref_before_copy() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[R:%.*]] = call i32 @use_readonly(ptr captures(none) [[DEST]]) ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %r = call i32 @use_readonly(ptr nocapture %dest) %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %src) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1366,30 +1366,30 @@ define void @mod_dest_before_copy() { ; CHECK-LABEL: define void @mod_dest_before_copy() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: store i32 13, ptr [[DEST]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src store i32 13, ptr %dest %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %src) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1397,22 +1397,22 @@ define void @mod_src_before_store_after_load() { ; CHECK-LABEL: define void @mod_src_before_store_after_load() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: store i32 13, ptr [[DEST]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 13, i32 13, i32 13 }, ptr [[SRC]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src store i32 13, ptr %dest %1 = call i32 @use_nocapture(ptr nocapture %src) @@ -1421,9 +1421,9 @@ define void @mod_src_before_store_after_load() { store %struct.Foo { i32 13, i32 13, i32 13 }, ptr %src store %struct.Foo %src.val, ptr %dest - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %src) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1433,28 +1433,28 @@ define void @src_mod_dest_ref_after_copy() { ; CHECK-LABEL: define void @src_mod_dest_ref_after_copy() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 13, i32 13, i32 13 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) store %struct.Foo { i32 13, i32 13, i32 13 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1464,28 +1464,28 @@ define void @src_ref_dest_mod_after_copy() { ; CHECK-LABEL: define void @src_ref_dest_mod_after_copy() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 13, i32 13, i32 13 }, ptr [[DEST]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) store %struct.Foo { i32 13, i32 13, i32 13 }, ptr %dest %1 = call i32 @use_nocapture(ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1494,22 +1494,22 @@ define void @dest_alias_mod_before_copy() { ; CHECK-LABEL: define void @dest_alias_mod_before_copy() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[DEST_ALIAS:%.*]] = getelementptr inbounds [[STRUCT_FOO]], ptr [[DEST]], i64 0, i32 1 ; CHECK-NEXT: store i32 13, ptr [[DEST_ALIAS]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %dest.alias = getelementptr inbounds %struct.Foo, ptr %dest, i64 0, i32 1 store i32 13, ptr %dest.alias @@ -1518,8 +1518,8 @@ define void @dest_alias_mod_before_copy() { call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1528,22 +1528,22 @@ define void @alias_src_ref_dest_mod_after_copy() { ; CHECK-LABEL: define void @alias_src_ref_dest_mod_after_copy() { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) ; CHECK-NEXT: [[DEST_ALIAS:%.*]] = getelementptr inbounds [[STRUCT_FOO]], ptr [[DEST]], i64 0, i32 1 ; CHECK-NEXT: store i32 13, ptr [[DEST_ALIAS]], align 4 ; CHECK-NEXT: [[TMP2:%.*]] = call i32 @use_nocapture(ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) @@ -1552,8 +1552,8 @@ define void @alias_src_ref_dest_mod_after_copy() { %dest.alias = getelementptr inbounds %struct.Foo, ptr %dest, i64 0, i32 1 store i32 13, ptr %dest.alias %2 = call i32 @use_nocapture(ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1564,8 +1564,8 @@ define void @multi_bb_dataflow_conflict(i1 %b) { ; CHECK-SAME: (i1 [[B:%.*]]) { ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 4 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 10, i32 20, i32 30 }, ptr [[SRC]], align 4 ; CHECK-NEXT: [[TMP1:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[SRC]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 4 [[DEST]], ptr align 4 [[SRC]], i64 12, i1 false) @@ -1578,14 +1578,14 @@ define void @multi_bb_dataflow_conflict(i1 %b) { ; CHECK-NEXT: br label [[BB2]] ; CHECK: bb2: ; CHECK-NEXT: [[TMP4:%.*]] = call i32 @use_nocapture(ptr noundef captures(none) [[DEST]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: ret void ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr noundef nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) @@ -1601,8 +1601,8 @@ bb1: bb2: %4 = call i32 @use_nocapture(ptr noundef nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } @@ -1614,8 +1614,8 @@ define void @multi_bb_loop_dest_mod_before_copy(i32 %n) { ; CHECK-NEXT: [[NLT1:%.*]] = icmp slt i32 [[N]], 1 ; CHECK-NEXT: [[SRC:%.*]] = alloca [[STRUCT_FOO:%.*]], align 8 ; CHECK-NEXT: [[DEST:%.*]] = alloca [[STRUCT_FOO]], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[SRC]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 12, ptr captures(none) [[DEST]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[SRC]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr captures(none) [[DEST]]) ; CHECK-NEXT: store [[STRUCT_FOO]] { i32 0, i32 1, i32 42 }, ptr [[SRC]], align 4 ; CHECK-NEXT: br i1 [[NLT1]], label [[LOOP_EXIT:%.*]], label [[LOOP_BODY:%.*]] ; CHECK: loop_body: @@ -1632,8 +1632,8 @@ entry: %nlt1 = icmp slt i32 %n, 1 %src = alloca %struct.Foo, align 8 %dest = alloca %struct.Foo, align 8 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 0, i32 1, i32 42 }, ptr %src br i1 %nlt1, label %loop_exit, label %loop_body @@ -1660,17 +1660,17 @@ define void @partial_lifetime() { ; %src = alloca %struct.Foo, align 4 %dest = alloca %struct.Foo, align 4 - call void @llvm.lifetime.start.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.start.p0(i64 3, ptr nocapture %dest) + call void @llvm.lifetime.start.p0(ptr nocapture %src) + call void @llvm.lifetime.start.p0(ptr nocapture %dest) store %struct.Foo { i32 10, i32 20, i32 30 }, ptr %src %1 = call i32 @use_nocapture(ptr nocapture %src) call void @llvm.memcpy.p0.p0.i64(ptr align 4 %dest, ptr align 4 %src, i64 12, i1 false) - call void @llvm.lifetime.end.p0(i64 3, ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %src) %2 = call i32 @use_nocapture(ptr nocapture %dest) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %src) - call void @llvm.lifetime.end.p0(i64 12, ptr nocapture %dest) + call void @llvm.lifetime.end.p0(ptr nocapture %src) + call void @llvm.lifetime.end.p0(ptr nocapture %dest) ret void } diff --git a/llvm/test/Transforms/MergeICmps/X86/int64-and-ptr.ll b/llvm/test/Transforms/MergeICmps/X86/int64-and-ptr.ll index 179d6e6dcfdf5..e2f500753bbdc 100644 --- a/llvm/test/Transforms/MergeICmps/X86/int64-and-ptr.ll +++ b/llvm/test/Transforms/MergeICmps/X86/int64-and-ptr.ll @@ -35,10 +35,10 @@ if.end5: ; preds = %if.then, %entry ret i1 %rez.0 } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind } diff --git a/llvm/test/Transforms/MoveAutoInit/clobber.ll b/llvm/test/Transforms/MoveAutoInit/clobber.ll index 08ffb13ad4b99..f52034dce217d 100644 --- a/llvm/test/Transforms/MoveAutoInit/clobber.ll +++ b/llvm/test/Transforms/MoveAutoInit/clobber.ll @@ -10,9 +10,9 @@ define i32 @foo(i32 noundef %0, i32 noundef %1, i32 noundef %2) #0 { ; CHECK-NEXT: [[TMP4:%.*]] = alloca [100 x i8], align 16 ; CHECK-NEXT: [[TMP5:%.*]] = alloca [2 x i8], align 1 ; CHECK-NEXT: [[TMP6:%.*]] = getelementptr inbounds [100 x i8], ptr [[TMP4]], i64 0, i64 0 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 100, ptr nonnull [[TMP4]]) #[[ATTR3:[0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP4]]) #[[ATTR3:[0-9]+]] ; CHECK-NEXT: [[TMP7:%.*]] = getelementptr inbounds [2 x i8], ptr [[TMP5]], i64 0, i64 0 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 2, ptr nonnull [[TMP5]]) #[[ATTR3]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP5]]) #[[ATTR3]] ; CHECK-NEXT: [[TMP8:%.*]] = getelementptr inbounds [2 x i8], ptr [[TMP5]], i64 0, i64 1 ; CHECK-NEXT: [[TMP9:%.*]] = icmp eq i32 [[TMP1:%.*]], 0 ; CHECK-NEXT: br i1 [[TMP9]], label [[TMP15:%.*]], label [[TMP10:%.*]] @@ -38,19 +38,19 @@ define i32 @foo(i32 noundef %0, i32 noundef %1, i32 noundef %2) #0 { ; CHECK-NEXT: br label [[TMP22]] ; CHECK: 22: ; CHECK-NEXT: [[TMP23:%.*]] = phi i32 [ [[TMP14]], [[TMP10]] ], [ [[TMP21]], [[TMP17]] ], [ 0, [[TMP15]] ] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 2, ptr nonnull [[TMP5]]) #[[ATTR3]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 100, ptr nonnull [[TMP4]]) #[[ATTR3]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP5]]) #[[ATTR3]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP4]]) #[[ATTR3]] ; CHECK-NEXT: ret i32 [[TMP23]] ; %4 = alloca [100 x i8], align 16 %5 = alloca [2 x i8], align 1 %6 = getelementptr inbounds [100 x i8], ptr %4, i64 0, i64 0 - call void @llvm.lifetime.start.p0(i64 100, ptr nonnull %4) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %4) #3 ; This memset must move. call void @llvm.memset.p0.i64(ptr noundef nonnull align 16 dereferenceable(100) %6, i8 -86, i64 100, i1 false), !annotation !0 %7 = getelementptr inbounds [2 x i8], ptr %5, i64 0, i64 0 - call void @llvm.lifetime.start.p0(i64 2, ptr nonnull %5) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %5) #3 ; This store must move. store i8 -86, ptr %7, align 1, !annotation !0 %8 = getelementptr inbounds [2 x i8], ptr %5, i64 0, i64 1 @@ -81,16 +81,16 @@ define i32 @foo(i32 noundef %0, i32 noundef %1, i32 noundef %2) #0 { 22: %23 = phi i32 [ %14, %10 ], [ %21, %17 ], [ 0, %15 ] - call void @llvm.lifetime.end.p0(i64 2, ptr nonnull %5) #3 - call void @llvm.lifetime.end.p0(i64 100, ptr nonnull %4) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %5) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %4) #3 ret i32 %23 } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @llvm.memset.p0.i64(ptr nocapture writeonly, i8, i64, i1 immarg) #2 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { mustprogress nofree nosync nounwind readnone uwtable willreturn } attributes #1 = { argmemonly mustprogress nofree nosync nounwind willreturn } diff --git a/llvm/test/Transforms/NewGVN/coercion-different-ptr.ll b/llvm/test/Transforms/NewGVN/coercion-different-ptr.ll index dfd6d7d9f53a5..979aa69d46363 100644 --- a/llvm/test/Transforms/NewGVN/coercion-different-ptr.ll +++ b/llvm/test/Transforms/NewGVN/coercion-different-ptr.ll @@ -11,7 +11,7 @@ define void @foo(ptr %arg) { ; CHECK-SAME: ptr [[ARG:%.*]]) { ; CHECK-NEXT: [[BB:.*:]] ; CHECK-NEXT: [[ALLOCA:%.*]] = alloca i8, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[ALLOCA]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[ALLOCA]]) ; CHECK-NEXT: [[LOAD:%.*]] = load ptr, ptr [[ARG]], align 8 ; CHECK-NEXT: [[LOAD1:%.*]] = load ptr, ptr [[LOAD]], align 8 ; CHECK-NEXT: [[CALL:%.*]] = call ptr [[LOAD1]](ptr [[ALLOCA]]) @@ -19,14 +19,14 @@ define void @foo(ptr %arg) { ; bb: %alloca = alloca i8, align 16 - call void @llvm.lifetime.start.p0(i64 1, ptr %alloca) + call void @llvm.lifetime.start.p0(ptr %alloca) %load = load ptr, ptr %arg, align 8 %load1 = load ptr, ptr %load, align 8 %call = call ptr %load1(ptr %alloca) ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #0 +declare void @llvm.lifetime.start.p0(ptr captures(none)) #0 declare ptr @malloc(i64) diff --git a/llvm/test/Transforms/NewGVN/cond_br2-xfail.ll b/llvm/test/Transforms/NewGVN/cond_br2-xfail.ll index 017f608aaa63c..8b2d662e484fc 100644 --- a/llvm/test/Transforms/NewGVN/cond_br2-xfail.ll +++ b/llvm/test/Transforms/NewGVN/cond_br2-xfail.ll @@ -18,7 +18,7 @@ define void @_Z4testv() #0 personality ptr @__gxx_personality_v0 { entry: %sv = alloca %"class.llvm::SmallVector", align 16 - call void @llvm.lifetime.start.p0(i64 64, ptr %sv) #1 + call void @llvm.lifetime.start.p0(ptr %sv) #1 %FirstEl.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SmallVector", ptr %sv, i64 0, i32 0, i32 0, i32 0, i32 0, i32 3 store ptr %FirstEl.i.i.i.i.i.i, ptr %sv, align 16, !tbaa !4 %EndX.i.i.i.i.i.i = getelementptr inbounds %"class.llvm::SmallVector", ptr %sv, i64 0, i32 0, i32 0, i32 0, i32 0, i32 1 @@ -87,7 +87,7 @@ if.then.i.i.i20: ; preds = %invoke.cont3 br label %_ZN4llvm11SmallVectorIiLj8EED1Ev.exit21 _ZN4llvm11SmallVectorIiLj8EED1Ev.exit21: ; preds = %invoke.cont3, %if.then.i.i.i20 - call void @llvm.lifetime.end.p0(i64 64, ptr %sv) #1 + call void @llvm.lifetime.end.p0(ptr %sv) #1 ret void lpad: ; preds = %if.end.i14, %if.end.i, %invoke.cont2 @@ -106,14 +106,14 @@ eh.resume: ; preds = %if.then.i.i.i, %lpa } ; Function Attrs: nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i32 @__gxx_personality_v0(...) declare void @_Z1gRN4llvm11SmallVectorIiLj8EEE(ptr) #2 ; Function Attrs: nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 declare void @_ZN4llvm15SmallVectorBase8grow_podEmm(ptr, i64, i64) #2 diff --git a/llvm/test/Transforms/NewGVN/lifetime-simple.ll b/llvm/test/Transforms/NewGVN/lifetime-simple.ll index 0a7bd339bfabe..7fe66499dd811 100644 --- a/llvm/test/Transforms/NewGVN/lifetime-simple.ll +++ b/llvm/test/Transforms/NewGVN/lifetime-simple.ll @@ -9,21 +9,21 @@ define i8 @test() nounwind { ; CHECK-SAME: ) #[[ATTR0:[0-9]+]] { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[P:%.*]] = alloca [32 x i8], align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[P]]) ; CHECK-NEXT: store i8 1, ptr [[P]], align 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr [[P]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[P]]) ; CHECK-NEXT: [[TMP0:%.*]] = load i8, ptr [[P]], align 1 ; CHECK-NEXT: ret i8 [[TMP0]] ; entry: %P = alloca [32 x i8] - call void @llvm.lifetime.start.p0(i64 32, ptr %P) + call void @llvm.lifetime.start.p0(ptr %P) %0 = load i8, ptr %P store i8 1, ptr %P - call void @llvm.lifetime.end.p0(i64 32, ptr %P) + call void @llvm.lifetime.end.p0(ptr %P) %1 = load i8, ptr %P ret i8 %1 } -declare void @llvm.lifetime.start.p0(i64 %S, ptr nocapture %P) readonly -declare void @llvm.lifetime.end.p0(i64 %S, ptr nocapture %P) +declare void @llvm.lifetime.start.p0(ptr nocapture %P) readonly +declare void @llvm.lifetime.end.p0(ptr nocapture %P) diff --git a/llvm/test/Transforms/NewGVN/verify-memoryphi.ll b/llvm/test/Transforms/NewGVN/verify-memoryphi.ll index a19a2a6b7e4f3..15bb1cbe92db4 100644 --- a/llvm/test/Transforms/NewGVN/verify-memoryphi.ll +++ b/llvm/test/Transforms/NewGVN/verify-memoryphi.ll @@ -5,7 +5,7 @@ ; REQUIRES: asserts -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) define void @tinkywinky() { ; CHECK-LABEL: define void @tinkywinky() { @@ -20,11 +20,11 @@ define void @tinkywinky() { ; entry: %a = alloca i8 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) br i1 false, label %body, label %end body: - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) br label %end end: diff --git a/llvm/test/Transforms/NewGVN/vscale.ll b/llvm/test/Transforms/NewGVN/vscale.ll index 702117213f6eb..64e22e1dda6a3 100644 --- a/llvm/test/Transforms/NewGVN/vscale.ll +++ b/llvm/test/Transforms/NewGVN/vscale.ll @@ -579,7 +579,7 @@ define { , , , , , , }, align 16 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull [[REF_TMP]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[REF_TMP]]) ; CHECK-NEXT: [[A_ELT:%.*]] = extractvalue { , , , } [[A:%.*]], 0 ; CHECK-NEXT: store [[A_ELT]], ptr [[REF_TMP]], align 16 ; CHECK-NEXT: [[TMP0:%.*]] = call i64 @llvm.vscale.i64() @@ -603,12 +603,12 @@ define { , , , , , , } [[TMP9]], [[DOTUNPACK10]], 2 ; CHECK-NEXT: [[DOTUNPACK12:%.*]] = load , ptr [[REF_TMP_REPACK5]], align 16 ; CHECK-NEXT: [[TMP15:%.*]] = insertvalue { , , , } [[TMP12]], [[DOTUNPACK12]], 3 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull [[REF_TMP]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[REF_TMP]]) ; CHECK-NEXT: ret { , , , } [[TMP15]] ; entry: %ref.tmp = alloca { , , , }, align 16 - call void @llvm.lifetime.start.p0(i64 -1, ptr nonnull %ref.tmp) + call void @llvm.lifetime.start.p0(ptr nonnull %ref.tmp) %a.elt = extractvalue { , , , } %a, 0 store %a.elt, ptr %ref.tmp, align 16 %0 = call i64 @llvm.vscale.i64() @@ -643,7 +643,7 @@ entry: %.elt11 = getelementptr inbounds i8, ptr %ref.tmp, i64 %14 %.unpack12 = load , ptr %.elt11, align 16 %15 = insertvalue { , , , } %12, %.unpack12, 3 - call void @llvm.lifetime.end.p0(i64 -1, ptr nonnull %ref.tmp) + call void @llvm.lifetime.end.p0(ptr nonnull %ref.tmp) ret { , , , } %15 } diff --git a/llvm/test/Transforms/ObjCARC/inlined-autorelease-return-value.ll b/llvm/test/Transforms/ObjCARC/inlined-autorelease-return-value.ll index 180fd0a561716..694deb37873a0 100644 --- a/llvm/test/Transforms/ObjCARC/inlined-autorelease-return-value.ll +++ b/llvm/test/Transforms/ObjCARC/inlined-autorelease-return-value.ll @@ -7,8 +7,8 @@ declare ptr @llvm.objc.autoreleaseReturnValue(ptr) declare ptr @llvm.objc.retainAutoreleasedReturnValue(ptr) declare ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue(ptr) declare void @opaque() -declare void @llvm.lifetime.start(i64, ptr nocapture) -declare void @llvm.lifetime.end(i64, ptr nocapture) +declare void @llvm.lifetime.start(ptr nocapture) +declare void @llvm.lifetime.end(ptr nocapture) ; CHECK-LABEL: define ptr @elide_with_retainRV( ; CHECK-NEXT: entry: @@ -81,16 +81,16 @@ entry: ; CHECK-LABEL: define ptr @elide_with_retainRV_splitByLifetime( ; CHECK-NEXT: entry: ; CHECK-NEXT: %x = alloca ptr -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr %x) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr %x) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %x) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: ret ptr %x define ptr @elide_with_retainRV_splitByLifetime() nounwind { entry: ; Cleanup should skip over lifetime intrinsics. %x = alloca ptr - call void @llvm.lifetime.start(i64 8, ptr %x) + call void @llvm.lifetime.start(ptr %x) %b = call ptr @llvm.objc.autoreleaseReturnValue(ptr %x) nounwind - call void @llvm.lifetime.end(i64 8, ptr %x) + call void @llvm.lifetime.end(ptr %x) %d = call ptr @llvm.objc.retainAutoreleasedReturnValue(ptr %b) nounwind ret ptr %d } @@ -221,17 +221,17 @@ entry: ; CHECK-LABEL: define ptr @elide_with_claimRV_splitByLifetime( ; CHECK-NEXT: entry: ; CHECK-NEXT: %x = alloca ptr -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr %x) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr %x) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %x) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %x) ; CHECK-NEXT: tail call void @llvm.objc.release(ptr %x) ; CHECK-NEXT: ret ptr %x define ptr @elide_with_claimRV_splitByLifetime() nounwind { entry: ; Cleanup should skip over lifetime intrinsics. %x = alloca ptr - call void @llvm.lifetime.start(i64 8, ptr %x) + call void @llvm.lifetime.start(ptr %x) %b = call ptr @llvm.objc.autoreleaseReturnValue(ptr %x) nounwind - call void @llvm.lifetime.end(i64 8, ptr %x) + call void @llvm.lifetime.end(ptr %x) %d = call ptr @llvm.objc.unsafeClaimAutoreleasedReturnValue(ptr %b) nounwind ret ptr %d } diff --git a/llvm/test/Transforms/ObjCARC/post-inlining.ll b/llvm/test/Transforms/ObjCARC/post-inlining.ll index c15e0896ae0ab..b184bea55077a 100644 --- a/llvm/test/Transforms/ObjCARC/post-inlining.ll +++ b/llvm/test/Transforms/ObjCARC/post-inlining.ll @@ -65,22 +65,22 @@ entry: ; 2) Lifetime markers. -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) ; CHECK-LABEL: define ptr @testLifetime( ; CHECK: entry: ; CHECK-NEXT: %obj = alloca i8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr %obj) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr %obj) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr %obj) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr %obj) ; CHECK-NEXT: ret ptr %call.i ; CHECK-NEXT: } define ptr @testLifetime(ptr %call.i) { entry: %obj = alloca i8 - call void @llvm.lifetime.start.p0(i64 8, ptr %obj) + call void @llvm.lifetime.start.p0(ptr %obj) %0 = tail call ptr @llvm.objc.autoreleaseReturnValue(ptr %call.i) nounwind - call void @llvm.lifetime.end.p0(i64 8, ptr %obj) + call void @llvm.lifetime.end.p0(ptr %obj) %1 = tail call ptr @llvm.objc.retainAutoreleasedReturnValue(ptr %call.i) nounwind ret ptr %call.i } diff --git a/llvm/test/Transforms/ObjCARC/related-check.ll b/llvm/test/Transforms/ObjCARC/related-check.ll index 7c56b2df5a5a9..045c001af4016 100644 --- a/llvm/test/Transforms/ObjCARC/related-check.ll +++ b/llvm/test/Transforms/ObjCARC/related-check.ll @@ -52,9 +52,9 @@ for.cond.cleanup: ; preds = %for.cond.cleanup.lo for.body: ; preds = %for.body.lr.ph, %if.end19 %i.032 = phi i32 [ 1, %for.body.lr.ph ], [ %inc, %if.end19 ] - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %persistent) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %persistent) #4 store i32 0, ptr %persistent, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %personalized) #4 + call void @llvm.lifetime.start.p0(ptr nonnull %personalized) #4 store i32 0, ptr %personalized, align 4 %call = call zeroext i1 @lookupType(ptr noundef nonnull %persistent, ptr noundef nonnull %personalized) #8, !clang.arc.no_objc_arc_exceptions !15 br i1 %call, label %if.then, label %if.end19 @@ -110,18 +110,18 @@ if.end18: ; preds = %if.else, %if.then13 br label %if.end19 if.end19: ; preds = %if.end18, %for.body - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %personalized) #4 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %persistent) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %personalized) #4 + call void @llvm.lifetime.end.p0(ptr nonnull %persistent) #4 %inc = add nuw nsw i32 %i.032, 1 %exitcond.not = icmp eq i32 %inc, %argc br i1 %exitcond.not, label %for.cond.cleanup.loopexit, label %for.body } ; Function Attrs: argmemonly mustprogress nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly mustprogress nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 ; Function Attrs: inaccessiblememonly mustprogress nocallback nofree nosync nounwind willreturn declare void @llvm.objc.clang.arc.noop.use(...) #5 diff --git a/llvm/test/Transforms/OpenMP/custom_state_machines_remarks.ll b/llvm/test/Transforms/OpenMP/custom_state_machines_remarks.ll index ad41639511e99..60969ecb683bf 100644 --- a/llvm/test/Transforms/OpenMP/custom_state_machines_remarks.ll +++ b/llvm/test/Transforms/OpenMP/custom_state_machines_remarks.ll @@ -72,10 +72,10 @@ common.ret: ; preds = %entry, %user_code.e user_code.entry: ; preds = %entry %1 = call i32 @__kmpc_global_thread_num(ptr nonnull @3) #3 call void @unknown() #6, !dbg !20 - call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %captured_vars_addrs.i.i) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i.i) #3 %2 = call i32 @__kmpc_global_thread_num(ptr noundef nonnull @13) #3 call void @__kmpc_parallel_51(ptr noundef nonnull @13, i32 %2, i32 noundef 1, i32 noundef -1, i32 noundef -1, ptr noundef @__omp_outlined__2, ptr noundef @__omp_outlined__2_wrapper, ptr noundef nonnull %captured_vars_addrs.i.i, i64 noundef 0) #3, !dbg !23 - call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %captured_vars_addrs.i.i) #3, !dbg !26 + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i.i) #3, !dbg !26 call void @unknown() #6, !dbg !27 call void @__kmpc_target_deinit() #3, !dbg !28 br label %common.ret @@ -116,18 +116,18 @@ common.ret: ; preds = %entry, %user_code.e user_code.entry: ; preds = %entry %1 = call i32 @__kmpc_global_thread_num(ptr nonnull @9) #3 - call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i2.i) #3 %2 = call i32 @__kmpc_global_thread_num(ptr noundef nonnull @13) #3 call void @__kmpc_parallel_51(ptr noundef nonnull @13, i32 %2, i32 noundef 1, i32 noundef -1, i32 noundef -1, ptr noundef @__omp_outlined__2, ptr noundef @__omp_outlined__2_wrapper, ptr noundef nonnull %captured_vars_addrs.i2.i, i64 noundef 0) #3, !dbg !35 - call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !39 - call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !39 + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i2.i) #3 %3 = call i32 @__kmpc_global_thread_num(ptr noundef nonnull @13) #3 call void @__kmpc_parallel_51(ptr noundef nonnull @13, i32 %3, i32 noundef 1, i32 noundef -1, i32 noundef -1, ptr noundef @__omp_outlined__2, ptr noundef @__omp_outlined__2_wrapper, ptr noundef nonnull %captured_vars_addrs.i2.i, i64 noundef 0) #3, !dbg !40 - call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !42 - call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !42 + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i2.i) #3 %4 = call i32 @__kmpc_global_thread_num(ptr noundef nonnull @13) #3 call void @__kmpc_parallel_51(ptr noundef nonnull @13, i32 %4, i32 noundef 1, i32 noundef -1, i32 noundef -1, ptr noundef @__omp_outlined__2, ptr noundef @__omp_outlined__2_wrapper, ptr noundef nonnull %captured_vars_addrs.i2.i, i64 noundef 0) #3, !dbg !43 - call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !45 + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !45 call void @no_openmp() call void @no_parallelism() call void @__kmpc_target_deinit() #3, !dbg !46 @@ -155,10 +155,10 @@ declare void @__kmpc_get_shared_variables(ptr) local_unnamed_addr declare void @__kmpc_parallel_51(ptr, i32, i32, i32, i32, ptr, ptr, ptr, i64) local_unnamed_addr ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #5 +declare void @llvm.lifetime.start.p0(ptr nocapture) #5 ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #5 +declare void @llvm.lifetime.end.p0(ptr nocapture) #5 declare void @no_openmp() #7 declare void @no_parallelism() #8 diff --git a/llvm/test/Transforms/OpenMP/nested_parallelism.ll b/llvm/test/Transforms/OpenMP/nested_parallelism.ll index 412e5ea5211e4..5d9646537481d 100644 --- a/llvm/test/Transforms/OpenMP/nested_parallelism.ll +++ b/llvm/test/Transforms/OpenMP/nested_parallelism.ll @@ -52,7 +52,7 @@ define weak_odr protected ptx_kernel void @__omp_offloading_10302_bd7e0_main_l13 ; CHECK: common.ret: ; CHECK-NEXT: ret void ; CHECK: user_code.entry: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) ; CHECK-NEXT: [[TMP1:%.*]] = tail call i32 @__kmpc_global_thread_num(ptr nonnull @[[GLOB1]]) #[[ATTR2:[0-9]+]] ; CHECK-NEXT: [[TMP2:%.*]] = tail call i32 @__kmpc_get_hardware_thread_id_in_block() #[[ATTR2]] ; CHECK-NEXT: [[TMP3:%.*]] = icmp eq i32 [[TMP2]], 0 @@ -66,7 +66,7 @@ define weak_odr protected ptx_kernel void @__omp_offloading_10302_bd7e0_main_l13 ; CHECK-NEXT: [[TMP4:%.*]] = addrspacecast ptr [[CAPTURED_VARS_ADDRS_I]] to ptr addrspace(5) ; CHECK-NEXT: store ptr addrspacecast (ptr addrspace(3) @i_shared to ptr), ptr addrspace(5) [[TMP4]], align 8 ; CHECK-NEXT: call void @__kmpc_parallel_51(ptr nonnull @[[GLOB1]], i32 [[TMP1]], i32 1, i32 -1, i32 -1, ptr nonnull @__omp_outlined__, ptr nonnull @__omp_outlined___wrapper, ptr nonnull [[CAPTURED_VARS_ADDRS_I]], i64 1) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) ; CHECK-NEXT: call void @__kmpc_target_deinit() ; CHECK-NEXT: br label [[COMMON_RET]] ; @@ -80,7 +80,7 @@ common.ret: ; preds = %entry, %_Z3fooi.int ret void user_code.entry: ; preds = %entry - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %captured_vars_addrs.i) + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i) %1 = tail call i32 @__kmpc_global_thread_num(ptr nonnull @1) #6 %2 = tail call i32 @__kmpc_get_hardware_thread_id_in_block() #6 %3 = icmp eq i32 %2, 0 @@ -95,7 +95,7 @@ _Z3fooi.internalized.exit: ; preds = %user_code.entry, %r tail call void @__kmpc_barrier_simple_spmd(ptr nonnull @1, i32 %2) store ptr addrspacecast (ptr addrspace(3) @i_shared to ptr), ptr %captured_vars_addrs.i, align 8 call void @__kmpc_parallel_51(ptr nonnull @1, i32 %1, i32 1, i32 -1, i32 -1, ptr nonnull @__omp_outlined__, ptr nonnull @__omp_outlined___wrapper, ptr nonnull %captured_vars_addrs.i, i64 1) #6 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %captured_vars_addrs.i) + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i) call void @__kmpc_target_deinit() #6 br label %common.ret } @@ -139,13 +139,13 @@ define weak_odr protected ptx_kernel void @__omp_offloading_10302_bd7e0_main_l16 ; CHECK-NEXT: ret void ; CHECK: user_code.entry: ; CHECK-NEXT: [[I_ADDR_SROA_0_0_EXTRACT_TRUNC:%.*]] = trunc i64 [[I:%.*]] to i32 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) ; CHECK-NEXT: [[TMP1:%.*]] = tail call i32 @__kmpc_global_thread_num(ptr nonnull @[[GLOB1]]) #[[ATTR2]] ; CHECK-NEXT: store i32 [[I_ADDR_SROA_0_0_EXTRACT_TRUNC]], ptr addrspace(3) @i.i_shared, align 16 ; CHECK-NEXT: [[TMP2:%.*]] = addrspacecast ptr [[CAPTURED_VARS_ADDRS_I]] to ptr addrspace(5) ; CHECK-NEXT: store ptr addrspacecast (ptr addrspace(3) @i.i_shared to ptr), ptr addrspace(5) [[TMP2]], align 8 ; CHECK-NEXT: call void @__kmpc_parallel_51(ptr nonnull @[[GLOB1]], i32 [[TMP1]], i32 1, i32 -1, i32 -1, ptr nonnull @__omp_outlined__1, ptr nonnull @__omp_outlined__1_wrapper, ptr nonnull [[CAPTURED_VARS_ADDRS_I]], i64 1) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) ; CHECK-NEXT: call void @__kmpc_target_deinit() ; CHECK-NEXT: br label [[COMMON_RET]] ; @@ -160,12 +160,12 @@ common.ret: ; preds = %entry, %user_code.e user_code.entry: ; preds = %entry %i.addr.sroa.0.0.extract.trunc = trunc i64 %i to i32 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %captured_vars_addrs.i) + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i) %1 = tail call i32 @__kmpc_global_thread_num(ptr nonnull @1) #6 store i32 %i.addr.sroa.0.0.extract.trunc, ptr addrspacecast (ptr addrspace(3) @i.i_shared to ptr), align 16 store ptr addrspacecast (ptr addrspace(3) @i.i_shared to ptr), ptr %captured_vars_addrs.i, align 8 call void @__kmpc_parallel_51(ptr nonnull @1, i32 %1, i32 1, i32 -1, i32 -1, ptr nonnull @__omp_outlined__1, ptr nonnull @__omp_outlined__1_wrapper, ptr nonnull %captured_vars_addrs.i, i64 1) #6 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %captured_vars_addrs.i) + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i) call void @__kmpc_target_deinit() #6 br label %common.ret } @@ -201,7 +201,7 @@ define internal void @__omp_outlined__(ptr noalias nocapture readnone %.global_t ; CHECK-NEXT: entry: ; CHECK-NEXT: [[CAPTURED_VARS_ADDRS_I:%.*]] = alloca [1 x ptr], align 8 ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[I:%.*]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) ; CHECK-NEXT: [[TMP1:%.*]] = tail call i32 @__kmpc_global_thread_num(ptr nonnull @[[GLOB1]]) #[[ATTR2]] ; CHECK-NEXT: [[I_I:%.*]] = tail call align 16 dereferenceable_or_null(4) ptr @__kmpc_alloc_shared(i64 4) #[[ATTR2]] ; CHECK-NEXT: store i32 [[TMP0]], ptr [[I_I]], align 16 @@ -209,20 +209,20 @@ define internal void @__omp_outlined__(ptr noalias nocapture readnone %.global_t ; CHECK-NEXT: store ptr [[I_I]], ptr addrspace(5) [[TMP2]], align 8 ; CHECK-NEXT: call void @__kmpc_parallel_51(ptr nonnull @[[GLOB1]], i32 [[TMP1]], i32 1, i32 -1, i32 -1, ptr nonnull @__omp_outlined__1, ptr nonnull @__omp_outlined__1_wrapper, ptr nonnull [[CAPTURED_VARS_ADDRS_I]], i64 1) ; CHECK-NEXT: call void @__kmpc_free_shared(ptr [[I_I]], i64 4) #[[ATTR2]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[CAPTURED_VARS_ADDRS_I]]) ; CHECK-NEXT: ret void ; entry: %captured_vars_addrs.i = alloca [1 x ptr], align 8 %0 = load i32, ptr %i, align 4 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %captured_vars_addrs.i) + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i) %1 = tail call i32 @__kmpc_global_thread_num(ptr nonnull @1) #6 %i.i = tail call align 16 dereferenceable_or_null(4) ptr @__kmpc_alloc_shared(i64 4) #6 store i32 %0, ptr %i.i, align 16 store ptr %i.i, ptr %captured_vars_addrs.i, align 8 call void @__kmpc_parallel_51(ptr nonnull @1, i32 %1, i32 1, i32 -1, i32 -1, ptr nonnull @__omp_outlined__1, ptr nonnull @__omp_outlined__1_wrapper, ptr nonnull %captured_vars_addrs.i, i64 1) #6 call void @__kmpc_free_shared(ptr %i.i, i64 4) #6 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %captured_vars_addrs.i) + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i) ret void } @@ -236,7 +236,7 @@ define internal void @__omp_outlined___wrapper(i16 zeroext %0, i32 %1) #5 { ; CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr addrspace(5) [[TMP5]], align 8 ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[TMP2]], align 8 ; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr [[TMP3]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr nonnull [[CAPTURED_VARS_ADDRS_I_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[CAPTURED_VARS_ADDRS_I_I]]) ; CHECK-NEXT: [[TMP6:%.*]] = call i32 @__kmpc_global_thread_num(ptr nonnull @[[GLOB1]]) #[[ATTR2]] ; CHECK-NEXT: [[I_I_I:%.*]] = call align 16 dereferenceable_or_null(4) ptr @__kmpc_alloc_shared(i64 4) #[[ATTR2]] ; CHECK-NEXT: store i32 [[TMP4]], ptr [[I_I_I]], align 16 @@ -244,7 +244,7 @@ define internal void @__omp_outlined___wrapper(i16 zeroext %0, i32 %1) #5 { ; CHECK-NEXT: store ptr [[I_I_I]], ptr addrspace(5) [[TMP7]], align 8 ; CHECK-NEXT: call void @__kmpc_parallel_51(ptr nonnull @[[GLOB1]], i32 [[TMP6]], i32 1, i32 -1, i32 -1, ptr nonnull @__omp_outlined__1, ptr nonnull @__omp_outlined__1_wrapper, ptr nonnull [[CAPTURED_VARS_ADDRS_I_I]], i64 1) ; CHECK-NEXT: call void @__kmpc_free_shared(ptr [[I_I_I]], i64 4) #[[ATTR2]] -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr nonnull [[CAPTURED_VARS_ADDRS_I_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[CAPTURED_VARS_ADDRS_I_I]]) ; CHECK-NEXT: ret void ; entry: @@ -254,14 +254,14 @@ entry: %2 = load ptr, ptr %global_args, align 8 %3 = load ptr, ptr %2, align 8 %4 = load i32, ptr %3, align 4 - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %captured_vars_addrs.i.i) + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i.i) %5 = call i32 @__kmpc_global_thread_num(ptr nonnull @1) #6 %i.i.i = call align 16 dereferenceable_or_null(4) ptr @__kmpc_alloc_shared(i64 4) #6 store i32 %4, ptr %i.i.i, align 16 store ptr %i.i.i, ptr %captured_vars_addrs.i.i, align 8 call void @__kmpc_parallel_51(ptr nonnull @1, i32 %5, i32 1, i32 -1, i32 -1, ptr nonnull @__omp_outlined__1, ptr nonnull @__omp_outlined__1_wrapper, ptr nonnull %captured_vars_addrs.i.i, i64 1) #6 call void @__kmpc_free_shared(ptr %i.i.i, i64 4) #6 - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %captured_vars_addrs.i.i) + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i.i) ret void } @@ -316,9 +316,9 @@ declare i32 @__kmpc_get_hardware_thread_id_in_block() local_unnamed_addr declare void @__kmpc_barrier_simple_spmd(ptr, i32) local_unnamed_addr #10 -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #11 +declare void @llvm.lifetime.start.p0(ptr nocapture) #11 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #11 +declare void @llvm.lifetime.end.p0(ptr nocapture) #11 !omp_offload.info = !{!0, !1} diff --git a/llvm/test/Transforms/OpenMP/parallel_deletion.ll b/llvm/test/Transforms/OpenMP/parallel_deletion.ll index 3e16d96eb482b..67970c41f765e 100644 --- a/llvm/test/Transforms/OpenMP/parallel_deletion.ll +++ b/llvm/test/Transforms/OpenMP/parallel_deletion.ll @@ -282,46 +282,46 @@ define void @delete_parallel_2() { ; CHECK-LABEL: define {{[^@]+}}@delete_parallel_2() { ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull align 4 dereferenceable(4) [[A]]) #[[ATTR18:[0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull align 4 dereferenceable(4) [[A]]) #[[ATTR18:[0-9]+]] ; CHECK-NEXT: store i32 0, ptr [[A]], align 4 ; CHECK-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef nonnull @.omp_outlined..3, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[A]]) ; CHECK-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef nonnull @.omp_outlined..4, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[A]]) ; CHECK-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef nonnull @.omp_outlined..5, ptr nofree noundef nonnull align 4 captures(none) dereferenceable(4) [[A]]) ; CHECK-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef nonnull @.omp_outlined..6, ptr noundef nonnull align 4 captures(none) dereferenceable(4) [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[A]]) ; CHECK-NEXT: ret void ; ; CHECK1-LABEL: define {{[^@]+}}@delete_parallel_2() { ; CHECK1-NEXT: entry: ; CHECK1-NEXT: [[A:%.*]] = alloca i32, align 4 -; CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull align 4 dereferenceable(4) [[A]]) #[[ATTR0]] +; CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull align 4 dereferenceable(4) [[A]]) #[[ATTR0]] ; CHECK1-NEXT: store i32 0, ptr [[A]], align 4 ; CHECK1-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef @.omp_outlined..3, ptr nocapture nofree noundef nonnull align 4 dereferenceable(4) [[A]]) ; CHECK1-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef @.omp_outlined..4, ptr nocapture nofree noundef nonnull align 4 dereferenceable(4) [[A]]) ; CHECK1-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef @.omp_outlined..5, ptr nocapture nofree noundef nonnull align 4 dereferenceable(4) [[A]]) ; CHECK1-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef @.omp_outlined..6, ptr nocapture noundef nonnull align 4 dereferenceable(4) [[A]]) -; CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[A]]) +; CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[A]]) ; CHECK1-NEXT: ret void ; CHECK2-LABEL: define {{[^@]+}}@delete_parallel_2() { ; CHECK2-NEXT: entry: ; CHECK2-NEXT: [[A:%.*]] = alloca i32, align 4 -; CHECK2-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull align 4 dereferenceable(4) [[A]]) #[[ATTR0]] +; CHECK2-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull align 4 dereferenceable(4) [[A]]) #[[ATTR0]] ; CHECK2-NEXT: store i32 0, ptr [[A]], align 4 ; CHECK2-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef @.omp_outlined..3, ptr nocapture nofree noundef nonnull align 4 dereferenceable(4) [[A]]) ; CHECK2-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef @.omp_outlined..4, ptr nocapture nofree noundef nonnull align 4 dereferenceable(4) [[A]]) ; CHECK2-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef @.omp_outlined..5, ptr nocapture nofree noundef nonnull align 4 dereferenceable(4) [[A]]) ; CHECK2-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr noundef nonnull align 8 dereferenceable(24) @[[GLOB0]], i32 noundef 1, ptr noundef @.omp_outlined..6, ptr nocapture noundef nonnull align 4 dereferenceable(4) [[A]]) -; CHECK2-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[A]]) +; CHECK2-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[A]]) ; CHECK2-NEXT: ret void entry: %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) store i32 0, ptr %a, align 4 call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr nonnull @0, i32 1, ptr @.omp_outlined..3, ptr nonnull %a) call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr nonnull @0, i32 1, ptr @.omp_outlined..4, ptr nonnull %a) call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr nonnull @0, i32 1, ptr @.omp_outlined..5, ptr nonnull %a) call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr nonnull @0, i32 1, ptr @.omp_outlined..6, ptr nonnull %a) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) ret void } @@ -445,7 +445,7 @@ omp_if.end: ; preds = %entry, %omp_if.then ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare i32 @omp_get_thread_num() inaccessiblememonly nofree nosync nounwind readonly @@ -531,7 +531,7 @@ define internal void @.omp_outlined..6(ptr noalias %.global_tid., ptr noalias %. ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A1:%.*]] = alloca i32, align 4 ; CHECK-NEXT: [[DOTOMP_REDUCTION_RED_LIST:%.*]] = alloca [1 x ptr], align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull align 4 [[A1]]) #[[ATTR20:[0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull align 4 [[A1]]) #[[ATTR20:[0-9]+]] ; CHECK-NEXT: store i32 1, ptr [[A1]], align 4 ; CHECK-NEXT: store ptr [[A1]], ptr [[DOTOMP_REDUCTION_RED_LIST]], align 8 ; CHECK-NEXT: [[TMP2:%.*]] = load i32, ptr [[DOTGLOBAL_TID_]], align 4 @@ -552,7 +552,7 @@ define internal void @.omp_outlined..6(ptr noalias %.global_tid., ptr noalias %. ; CHECK-NEXT: [[TMP8:%.*]] = atomicrmw add ptr [[A]], i32 [[TMP7]] monotonic, align 4 ; CHECK-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]] ; CHECK: .omp.reduction.default: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[A1]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[A1]]) ; CHECK-NEXT: ret void ; ; CHECK1-LABEL: define {{[^@]+}}@.omp_outlined..6 @@ -560,7 +560,7 @@ define internal void @.omp_outlined..6(ptr noalias %.global_tid., ptr noalias %. ; CHECK1-NEXT: entry: ; CHECK1-NEXT: [[A1:%.*]] = alloca i32, align 4 ; CHECK1-NEXT: [[DOTOMP_REDUCTION_RED_LIST:%.*]] = alloca [1 x ptr], align 8 -; CHECK1-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull align 4 [[A1]]) #[[ATTR0]] +; CHECK1-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull align 4 [[A1]]) #[[ATTR0]] ; CHECK1-NEXT: store i32 1, ptr [[A1]], align 4 ; CHECK1-NEXT: store ptr [[A1]], ptr [[DOTOMP_REDUCTION_RED_LIST]], align 8 ; CHECK1-NEXT: [[TMP2:%.*]] = load i32, ptr [[DOTGLOBAL_TID_]], align 4 @@ -581,14 +581,14 @@ define internal void @.omp_outlined..6(ptr noalias %.global_tid., ptr noalias %. ; CHECK1-NEXT: [[TMP8:%.*]] = atomicrmw add ptr [[A]], i32 [[TMP7]] monotonic, align 4 ; CHECK1-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]] ; CHECK1: .omp.reduction.default: -; CHECK1-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[A1]]) +; CHECK1-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[A1]]) ; CHECK1-NEXT: ret void ; CHECK2-LABEL: define {{[^@]+}}@.omp_outlined..6 ; CHECK2-SAME: (ptr noalias nocapture nofree noundef nonnull readonly align 4 dereferenceable(4) [[DOTGLOBAL_TID_:%.*]], ptr noalias nocapture nofree readnone [[DOTBOUND_TID_:%.*]], ptr nocapture noundef nonnull align 4 dereferenceable(4) [[A:%.*]]) { ; CHECK2-NEXT: entry: ; CHECK2-NEXT: [[A1:%.*]] = alloca i32, align 4 ; CHECK2-NEXT: [[DOTOMP_REDUCTION_RED_LIST:%.*]] = alloca [1 x ptr], align 8 -; CHECK2-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull align 4 [[A1]]) #[[ATTR0]] +; CHECK2-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull align 4 [[A1]]) #[[ATTR0]] ; CHECK2-NEXT: store i32 1, ptr [[A1]], align 4 ; CHECK2-NEXT: store ptr [[A1]], ptr [[DOTOMP_REDUCTION_RED_LIST]], align 8 ; CHECK2-NEXT: [[TMP2:%.*]] = load i32, ptr [[DOTGLOBAL_TID_]], align 4 @@ -609,12 +609,12 @@ define internal void @.omp_outlined..6(ptr noalias %.global_tid., ptr noalias %. ; CHECK2-NEXT: [[TMP8:%.*]] = atomicrmw add ptr [[A]], i32 [[TMP7]] monotonic, align 4 ; CHECK2-NEXT: br label [[DOTOMP_REDUCTION_DEFAULT]] ; CHECK2: .omp.reduction.default: -; CHECK2-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[A1]]) +; CHECK2-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[A1]]) ; CHECK2-NEXT: ret void entry: %a1 = alloca i32, align 4 %.omp.reduction.red_list = alloca [1 x ptr], align 8 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %a1) + call void @llvm.lifetime.start.p0(ptr nonnull %a1) store i32 1, ptr %a1, align 4 store ptr %a1, ptr %.omp.reduction.red_list, align 8 %tmp2 = load i32, ptr %.global_tid., align 4 @@ -638,7 +638,7 @@ entry: br label %.omp.reduction.default .omp.reduction.default: ; preds = %.omp.reduction.case2, %.omp.reduction.case1, %entry - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %a1) + call void @llvm.lifetime.end.p0(ptr nonnull %a1) ret void } @@ -696,7 +696,7 @@ declare i32 @__kmpc_reduce_nowait(ptr, i32, i32, i64, ptr, ptr, ptr) declare void @__kmpc_end_reduce_nowait(ptr, i32, ptr) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare !callback !2 void @__kmpc_fork_call(ptr, i32, ptr, ...) diff --git a/llvm/test/Transforms/OpenMP/parallel_region_merging.ll b/llvm/test/Transforms/OpenMP/parallel_region_merging.ll index d587b9a9fdc54..83452e72b56b9 100644 --- a/llvm/test/Transforms/OpenMP/parallel_region_merging.ll +++ b/llvm/test/Transforms/OpenMP/parallel_region_merging.ll @@ -433,11 +433,11 @@ entry: %b = alloca i32, align 4 store i32 %a, ptr %a.addr, align 4 call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr nonnull @1, i32 1, ptr @.omp_outlined..14, ptr nonnull %a.addr) - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %b) + call void @llvm.lifetime.start.p0(ptr nonnull %b) %0 = ptrtoint ptr %b to i64 %1 = trunc i64 %0 to i32 store i32 %1, ptr %b, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr nonnull @1, i32 1, ptr @.omp_outlined..15, ptr nonnull %a.addr) ret void } @@ -449,9 +449,9 @@ entry: ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define internal void @.omp_outlined..15(ptr noalias nocapture readnone %.global_tid., ptr noalias nocapture readnone %.bound_tid., ptr nocapture nonnull readonly align 4 dereferenceable(4) %a) { entry: @@ -466,12 +466,12 @@ entry: %b = alloca i32, align 4 store i32 %a, ptr %a.addr, align 4 call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr nonnull @1, i32 1, ptr @.omp_outlined..16, ptr nonnull %a.addr) - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %b) + call void @llvm.lifetime.start.p0(ptr nonnull %b) %0 = load i32, ptr %a.addr, align 4 %add = add nsw i32 %0, 1 store i32 %add, ptr %b, align 4 call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr nonnull @1, i32 2, ptr @.omp_outlined..17, ptr nonnull %a.addr, ptr nonnull %b) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %b) + call void @llvm.lifetime.end.p0(ptr nonnull %b) ret void } @@ -1184,11 +1184,11 @@ entry: ; CHECK: omp_region.body: ; CHECK-NEXT: br label [[SEQ_PAR_MERGED:%.*]] ; CHECK: seq.par.merged: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[B]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = trunc i64 [[TMP4]] to i32 ; CHECK-NEXT: store i32 [[TMP5]], ptr [[B]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: br label [[OMP_PAR_MERGED_SPLIT:%.*]] ; CHECK: omp.par.merged.split: ; CHECK-NEXT: br label [[OMP_REGION_BODY_SPLIT:%.*]] @@ -1216,7 +1216,7 @@ entry: ; CHECK-NEXT: [[OMP_GLOBAL_THREAD_NUM2:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]]) ; CHECK-NEXT: br label [[OMP_PARALLEL:%.*]] ; CHECK: omp_parallel: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B]]) ; CHECK-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @[[GLOB1]], i32 2, ptr @merge_seq_par_use..omp_par, ptr [[A_ADDR]], ptr [[B]]) ; CHECK-NEXT: br label [[OMP_PAR_OUTLINED_EXIT:%.*]] ; CHECK: omp.par.outlined.exit: @@ -1224,7 +1224,7 @@ entry: ; CHECK: omp.par.exit.split: ; CHECK-NEXT: br label [[ENTRY_SPLIT_SPLIT:%.*]] ; CHECK: entry.split.split: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: ret void ; CHECK-LABEL: define {{[^@]+}}@merge_seq_par_use..omp_par ; CHECK-SAME: (ptr noalias [[TID_ADDR:%.*]], ptr noalias [[ZERO_ADDR:%.*]], ptr [[A_ADDR:%.*]], ptr [[B:%.*]]) #[[ATTR0]] { @@ -2155,11 +2155,11 @@ entry: ; CHECK: omp_region.body: ; CHECK-NEXT: br label [[SEQ_PAR_MERGED:%.*]] ; CHECK: seq.par.merged: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[B]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = trunc i64 [[TMP4]] to i32 ; CHECK-NEXT: store i32 [[TMP5]], ptr [[B]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: br label [[OMP_PAR_MERGED_SPLIT:%.*]] ; CHECK: omp.par.merged.split: ; CHECK-NEXT: br label [[OMP_REGION_BODY_SPLIT:%.*]] @@ -2187,7 +2187,7 @@ entry: ; CHECK-NEXT: [[OMP_GLOBAL_THREAD_NUM2:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]]) ; CHECK-NEXT: br label [[OMP_PARALLEL:%.*]] ; CHECK: omp_parallel: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B]]) ; CHECK-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @[[GLOB1]], i32 2, ptr @merge_seq_par_use..omp_par, ptr [[A_ADDR]], ptr [[B]]) ; CHECK-NEXT: br label [[OMP_PAR_OUTLINED_EXIT:%.*]] ; CHECK: omp.par.outlined.exit: @@ -2195,7 +2195,7 @@ entry: ; CHECK: omp.par.exit.split: ; CHECK-NEXT: br label [[ENTRY_SPLIT_SPLIT:%.*]] ; CHECK: entry.split.split: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: ret void ; CHECK-LABEL: define {{[^@]+}}@merge_seq_par_use..omp_par ; CHECK-SAME: (ptr noalias [[TID_ADDR:%.*]], ptr noalias [[ZERO_ADDR:%.*]], ptr [[A_ADDR:%.*]], ptr [[B:%.*]]) #[[ATTR0]] { @@ -3126,11 +3126,11 @@ entry: ; CHECK: omp_region.body: ; CHECK-NEXT: br label [[SEQ_PAR_MERGED:%.*]] ; CHECK: seq.par.merged: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[B]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = trunc i64 [[TMP4]] to i32 ; CHECK-NEXT: store i32 [[TMP5]], ptr [[B]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: br label [[OMP_PAR_MERGED_SPLIT:%.*]] ; CHECK: omp.par.merged.split: ; CHECK-NEXT: br label [[OMP_REGION_BODY_SPLIT:%.*]] @@ -3158,7 +3158,7 @@ entry: ; CHECK-NEXT: [[OMP_GLOBAL_THREAD_NUM2:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]]) ; CHECK-NEXT: br label [[OMP_PARALLEL:%.*]] ; CHECK: omp_parallel: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B]]) ; CHECK-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @[[GLOB1]], i32 2, ptr @merge_seq_par_use..omp_par, ptr [[A_ADDR]], ptr [[B]]) ; CHECK-NEXT: br label [[OMP_PAR_OUTLINED_EXIT:%.*]] ; CHECK: omp.par.outlined.exit: @@ -3166,7 +3166,7 @@ entry: ; CHECK: omp.par.exit.split: ; CHECK-NEXT: br label [[ENTRY_SPLIT_SPLIT:%.*]] ; CHECK: entry.split.split: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: ret void ; CHECK-LABEL: define {{[^@]+}}@merge_seq_par_use..omp_par ; CHECK-SAME: (ptr noalias [[TID_ADDR:%.*]], ptr noalias [[ZERO_ADDR:%.*]], ptr [[A_ADDR:%.*]], ptr [[B:%.*]]) #[[ATTR0]] { @@ -4097,11 +4097,11 @@ entry: ; CHECK: omp_region.body: ; CHECK-NEXT: br label [[SEQ_PAR_MERGED:%.*]] ; CHECK: seq.par.merged: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[B]] to i64 ; CHECK-NEXT: [[TMP5:%.*]] = trunc i64 [[TMP4]] to i32 ; CHECK-NEXT: store i32 [[TMP5]], ptr [[B]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: br label [[OMP_PAR_MERGED_SPLIT:%.*]] ; CHECK: omp.par.merged.split: ; CHECK-NEXT: br label [[OMP_REGION_BODY_SPLIT:%.*]] @@ -4129,7 +4129,7 @@ entry: ; CHECK-NEXT: [[OMP_GLOBAL_THREAD_NUM2:%.*]] = call i32 @__kmpc_global_thread_num(ptr @[[GLOB1]]) ; CHECK-NEXT: br label [[OMP_PARALLEL:%.*]] ; CHECK: omp_parallel: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[B]]) ; CHECK-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @[[GLOB1]], i32 2, ptr @merge_seq_par_use..omp_par, ptr [[A_ADDR]], ptr [[B]]) ; CHECK-NEXT: br label [[OMP_PAR_OUTLINED_EXIT:%.*]] ; CHECK: omp.par.outlined.exit: @@ -4137,7 +4137,7 @@ entry: ; CHECK: omp.par.exit.split: ; CHECK-NEXT: br label [[ENTRY_SPLIT_SPLIT:%.*]] ; CHECK: entry.split.split: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[B]]) ; CHECK-NEXT: ret void ; CHECK-LABEL: define {{[^@]+}}@merge_seq_par_use..omp_par ; CHECK-SAME: (ptr noalias [[TID_ADDR:%.*]], ptr noalias [[ZERO_ADDR:%.*]], ptr [[A_ADDR:%.*]], ptr [[B:%.*]]) #[[ATTR0]] { @@ -5148,11 +5148,11 @@ entry: ; CHECK2: omp_region.body: ; CHECK2-NEXT: br label [[SEQ_PAR_MERGED:%.*]] ; CHECK2: seq.par.merged: -; CHECK2-NEXT: call void @llvm.lifetime.start.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK2-NEXT: call void @llvm.lifetime.start.p0(ptr noundef nonnull [[B]]) ; CHECK2-NEXT: [[TMP4:%.*]] = ptrtoint ptr [[B]] to i64 ; CHECK2-NEXT: [[TMP5:%.*]] = trunc i64 [[TMP4]] to i32 ; CHECK2-NEXT: store i32 [[TMP5]], ptr [[B]], align 4 -; CHECK2-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK2-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[B]]) ; CHECK2-NEXT: br label [[OMP_PAR_MERGED_SPLIT:%.*]] ; CHECK2: omp.par.merged.split: ; CHECK2-NEXT: br label [[OMP_REGION_BODY_SPLIT:%.*]] @@ -5197,13 +5197,13 @@ entry: ; CHECK2-NEXT: store ptr [[A_ADDR]], ptr [[GEP_A_ADDR]], align 8 ; CHECK2-NEXT: [[GEP_B:%.*]] = getelementptr { ptr, ptr, ptr }, ptr [[STRUCTARG]], i32 0, i32 2 ; CHECK2-NEXT: store ptr [[B]], ptr [[GEP_B]], align 8 -; CHECK2-NEXT: call void @llvm.lifetime.start.p0(i64 -1, ptr [[B]]) +; CHECK2-NEXT: call void @llvm.lifetime.start.p0(ptr [[B]]) ; CHECK2-NEXT: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @[[GLOB2]], i32 1, ptr @merge_seq_par_use..omp_par, ptr [[STRUCTARG]]) ; CHECK2-NEXT: br label [[OMP_PAR_OUTLINED_EXIT:%.*]] ; CHECK2: omp.par.exit: ; CHECK2-NEXT: br label [[ENTRY_SPLIT_SPLIT:%.*]] ; CHECK2: entry.split.split: -; CHECK2-NEXT: call void @llvm.lifetime.end.p0(i64 noundef 4, ptr noundef nonnull [[B]]) +; CHECK2-NEXT: call void @llvm.lifetime.end.p0(ptr noundef nonnull [[B]]) ; CHECK2-NEXT: ret void ; ; diff --git a/llvm/test/Transforms/OpenMP/spmdization.ll b/llvm/test/Transforms/OpenMP/spmdization.ll index e91f1608f066f..0272c41d9d1fc 100644 --- a/llvm/test/Transforms/OpenMP/spmdization.ll +++ b/llvm/test/Transforms/OpenMP/spmdization.ll @@ -2922,7 +2922,7 @@ declare void @unknown() #7 declare void @unknowni32p(ptr) #7 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #8 +declare void @llvm.lifetime.start.p0(ptr captures(none)) #8 define weak i32 @__kmpc_target_init(ptr %0, ptr %1) { ; AMDGPU-LABEL: define {{[^@]+}}@__kmpc_target_init @@ -2958,7 +2958,7 @@ declare void @__kmpc_get_shared_variables(ptr) declare void @__kmpc_parallel_51(ptr, i32, i32, i32, i32, ptr, ptr, ptr, i64) #9 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #8 +declare void @llvm.lifetime.end.p0(ptr captures(none)) #8 ; Function Attrs: convergent declare void @spmd_amenable() #6 diff --git a/llvm/test/Transforms/OpenMP/spmdization_constant_prop.ll b/llvm/test/Transforms/OpenMP/spmdization_constant_prop.ll index 70c0d046dad4e..5a7d097142965 100644 --- a/llvm/test/Transforms/OpenMP/spmdization_constant_prop.ll +++ b/llvm/test/Transforms/OpenMP/spmdization_constant_prop.ll @@ -61,7 +61,7 @@ common.ret: ; preds = %user_code.entry, %e } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p5(i64 immarg, ptr addrspace(5) captures(none)) #1 +declare void @llvm.lifetime.start.p5(ptr addrspace(5) captures(none)) #1 ; Function Attrs: alwaysinline mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal void @__omp_outlined__(ptr noalias captures(none) %.global_tid., ptr noalias captures(none) %.bound_tid., ptr nonnull align 4 captures(none) %ng, ptr nonnull align 8 captures(none) %aa) #2 { @@ -72,7 +72,7 @@ entry: } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p5(i64 immarg, ptr addrspace(5) captures(none)) #1 +declare void @llvm.lifetime.end.p5(ptr addrspace(5) captures(none)) #1 ; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none) define internal void @__omp_outlined___wrapper(i16 zeroext %0, i32 noundef %1) #3 { diff --git a/llvm/test/Transforms/OpenMP/spmdization_indirect.ll b/llvm/test/Transforms/OpenMP/spmdization_indirect.ll index 3c3e1d78a00c1..d1e006a704441 100644 --- a/llvm/test/Transforms/OpenMP/spmdization_indirect.ll +++ b/llvm/test/Transforms/OpenMP/spmdization_indirect.ll @@ -1017,7 +1017,7 @@ declare void @unknown() #5 declare void @unknowni32p(ptr) #5 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #6 +declare void @llvm.lifetime.start.p0(ptr captures(none)) #6 define weak i32 @__kmpc_target_init(ptr %0, ptr %1) { ; AMDGPU-LABEL: define {{[^@]+}}@__kmpc_target_init @@ -1037,7 +1037,7 @@ declare void @__kmpc_get_shared_variables(ptr) declare void @__kmpc_parallel_51(ptr, i32, i32, i32, i32, ptr, ptr, ptr, i64) #7 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #6 +declare void @llvm.lifetime.end.p0(ptr captures(none)) #6 ; Function Attrs: convergent declare void @spmd_amenable() #4 diff --git a/llvm/test/Transforms/OpenMP/spmdization_remarks.ll b/llvm/test/Transforms/OpenMP/spmdization_remarks.ll index ef36937bc5734..f30e827694a34 100644 --- a/llvm/test/Transforms/OpenMP/spmdization_remarks.ll +++ b/llvm/test/Transforms/OpenMP/spmdization_remarks.ll @@ -75,10 +75,10 @@ common.ret: ; preds = %entry, %user_code.e user_code.entry: ; preds = %entry %1 = call i32 @__kmpc_global_thread_num(ptr nonnull @3) #3 call void @unknown() #6, !dbg !20 - call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %captured_vars_addrs.i.i) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i.i) #3 %2 = call i32 @__kmpc_global_thread_num(ptr noundef nonnull @13) #3 call void @__kmpc_parallel_51(ptr noundef nonnull @13, i32 %2, i32 noundef 1, i32 noundef -1, i32 noundef -1, ptr noundef @__omp_outlined__2, ptr noundef @__omp_outlined__2_wrapper, ptr noundef nonnull %captured_vars_addrs.i.i, i64 noundef 0) #3, !dbg !23 - call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %captured_vars_addrs.i.i) #3, !dbg !26 + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i.i) #3, !dbg !26 call void @unknown() #6, !dbg !27 call void @__kmpc_target_deinit() #3, !dbg !28 br label %common.ret @@ -119,18 +119,18 @@ common.ret: ; preds = %entry, %user_code.e user_code.entry: ; preds = %entry %1 = call i32 @__kmpc_global_thread_num(ptr nonnull @9) #3 - call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3 + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i2.i) #3 %2 = call i32 @__kmpc_global_thread_num(ptr noundef nonnull @13) #3 call void @__kmpc_parallel_51(ptr noundef nonnull @13, i32 %2, i32 noundef 1, i32 noundef -1, i32 noundef -1, ptr noundef @__omp_outlined__2, ptr noundef @__omp_outlined__2_wrapper, ptr noundef nonnull %captured_vars_addrs.i2.i, i64 noundef 0) #3, !dbg !35 - call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !39 - call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !39 + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i2.i) #3 %3 = call i32 @__kmpc_global_thread_num(ptr noundef nonnull @13) #3 call void @__kmpc_parallel_51(ptr noundef nonnull @13, i32 %3, i32 noundef 1, i32 noundef -1, i32 noundef -1, ptr noundef @__omp_outlined__2, ptr noundef @__omp_outlined__2_wrapper, ptr noundef nonnull %captured_vars_addrs.i2.i, i64 noundef 0) #3, !dbg !40 - call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !42 - call void @llvm.lifetime.start.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3 + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !42 + call void @llvm.lifetime.start.p0(ptr nonnull %captured_vars_addrs.i2.i) #3 %4 = call i32 @__kmpc_global_thread_num(ptr noundef nonnull @13) #3 call void @__kmpc_parallel_51(ptr noundef nonnull @13, i32 %4, i32 noundef 1, i32 noundef -1, i32 noundef -1, ptr noundef @__omp_outlined__2, ptr noundef @__omp_outlined__2_wrapper, ptr noundef nonnull %captured_vars_addrs.i2.i, i64 noundef 0) #3, !dbg !43 - call void @llvm.lifetime.end.p0(i64 0, ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !45 + call void @llvm.lifetime.end.p0(ptr nonnull %captured_vars_addrs.i2.i) #3, !dbg !45 call void @spmd_amenable() call void @__kmpc_target_deinit() #3, !dbg !46 br label %common.ret @@ -157,10 +157,10 @@ declare void @__kmpc_get_shared_variables(ptr) local_unnamed_addr declare void @__kmpc_parallel_51(ptr, i32, i32, i32, i32, ptr, ptr, ptr, i64) local_unnamed_addr ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #5 +declare void @llvm.lifetime.start.p0(ptr nocapture) #5 ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #5 +declare void @llvm.lifetime.end.p0(ptr nocapture) #5 declare void @spmd_amenable() #7 diff --git a/llvm/test/Transforms/PGOProfile/consecutive-zeros.ll b/llvm/test/Transforms/PGOProfile/consecutive-zeros.ll index a7337d04531a1..014f95fd8bec6 100644 --- a/llvm/test/Transforms/PGOProfile/consecutive-zeros.ll +++ b/llvm/test/Transforms/PGOProfile/consecutive-zeros.ll @@ -48,11 +48,11 @@ for.end6: ret void } -declare void @llvm.lifetime.start(i64, ptr nocapture) +declare void @llvm.lifetime.start(ptr nocapture) declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) declare i32 @memcmp(ptr, ptr, i64) declare i32 @bcmp(ptr, ptr, i64) -declare void @llvm.lifetime.end(i64, ptr nocapture) +declare void @llvm.lifetime.end(ptr nocapture) diff --git a/llvm/test/Transforms/PGOProfile/entry_alloca.ll b/llvm/test/Transforms/PGOProfile/entry_alloca.ll index 580f055921970..c791e1d9bb6ce 100644 --- a/llvm/test/Transforms/PGOProfile/entry_alloca.ll +++ b/llvm/test/Transforms/PGOProfile/entry_alloca.ll @@ -19,8 +19,8 @@ define dso_local double @foo() { %1 = alloca %struct.A, align 4 %2 = alloca %struct.B, align 8 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) - call void @llvm.lifetime.start.p0(i64 8, ptr nonnull %2) + call void @llvm.lifetime.start.p0(ptr nonnull %1) + call void @llvm.lifetime.start.p0(ptr nonnull %2) call void @bar(ptr noundef nonnull %1, ptr noundef nonnull %2) %3 = load i32, ptr %1, align 4 %4 = icmp sgt i32 %3, 0 @@ -48,8 +48,8 @@ define dso_local double @foo() { 21: %22 = phi double [ 0.000000e+00, %0 ], [ %18, %9 ] - call void @llvm.lifetime.end.p0(i64 8, ptr nonnull %2) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) + call void @llvm.lifetime.end.p0(ptr nonnull %2) + call void @llvm.lifetime.end.p0(ptr nonnull %1) ret double %22 } diff --git a/llvm/test/Transforms/PGOProfile/memop_size_annotation.ll b/llvm/test/Transforms/PGOProfile/memop_size_annotation.ll index 3ef185a28cc5f..9122454a1f50c 100644 --- a/llvm/test/Transforms/PGOProfile/memop_size_annotation.ll +++ b/llvm/test/Transforms/PGOProfile/memop_size_annotation.ll @@ -56,11 +56,11 @@ for.end6: ret void } -declare void @llvm.lifetime.start(i64, ptr nocapture) +declare void @llvm.lifetime.start(ptr nocapture) declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) declare i32 @memcmp(ptr, ptr, i64) declare i32 @bcmp(ptr, ptr, i64) -declare void @llvm.lifetime.end(i64, ptr nocapture) +declare void @llvm.lifetime.end(ptr nocapture) diff --git a/llvm/test/Transforms/PGOProfile/memop_size_opt.ll b/llvm/test/Transforms/PGOProfile/memop_size_opt.ll index c4f749be747db..f63989abe16a7 100644 --- a/llvm/test/Transforms/PGOProfile/memop_size_opt.ll +++ b/llvm/test/Transforms/PGOProfile/memop_size_opt.ll @@ -181,14 +181,14 @@ for.end6: !30 = !{!"VP", i32 1, i64 556, i64 0, i64 99, i64 2, i64 88, i64 3, i64 77, i64 9, i64 72, i64 4, i64 66, i64 5, i64 55, i64 6, i64 44, i64 7, i64 33, i64 8, i64 22} !31 = !{!"VP", i32 1, i64 556, i64 0, i64 99, i64 2, i64 88, i64 3, i64 77, i64 9, i64 72, i64 4, i64 66, i64 5, i64 55, i64 6, i64 44, i64 7, i64 33, i64 8, i64 22} -declare void @llvm.lifetime.start(i64, ptr nocapture) +declare void @llvm.lifetime.start(ptr nocapture) declare void @llvm.memcpy.p0.p0.i64(ptr nocapture writeonly, ptr nocapture readonly, i64, i1) declare i32 @memcmp(ptr, ptr, i64) declare i32 @bcmp(ptr, ptr, i64) -declare void @llvm.lifetime.end(i64, ptr nocapture) +declare void @llvm.lifetime.end(ptr nocapture) ; YAML: --- !Passed ; YAML-NEXT: Pass: pgo-memop-opt diff --git a/llvm/test/Transforms/PGOProfile/misexpect-branch-correct.ll b/llvm/test/Transforms/PGOProfile/misexpect-branch-correct.ll index f187d41028fc1..0a1efdade760f 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-branch-correct.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-branch-correct.ll @@ -23,10 +23,10 @@ define i32 @bar() #0 { entry: %rando = alloca i32, align 4 %x = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %rando) #4 + call void @llvm.lifetime.start.p0(ptr %rando) #4 %call = call i32 (...) @buzz() store i32 %call, ptr %rando, align 4, !tbaa !3 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) #4 + call void @llvm.lifetime.start.p0(ptr %x) #4 store i32 0, ptr %x, align 4, !tbaa !3 %0 = load i32, ptr %rando, align 4, !tbaa !3 %rem = srem i32 %0, 200000 @@ -52,13 +52,13 @@ if.else: ; preds = %entry if.end: ; preds = %if.else, %if.then %2 = load i32, ptr %x, align 4, !tbaa !3 - call void @llvm.lifetime.end.p0(i64 4, ptr %x) #4 - call void @llvm.lifetime.end.p0(i64 4, ptr %rando) #4 + call void @llvm.lifetime.end.p0(ptr %x) #4 + call void @llvm.lifetime.end.p0(ptr %rando) #4 ret i32 %2 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i32 @buzz(...) #2 @@ -70,7 +70,7 @@ declare i32 @baz(i32) #2 declare i32 @foo(i32) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-branch-overflow.ll b/llvm/test/Transforms/PGOProfile/misexpect-branch-overflow.ll index 146ad44b38918..68b233edda524 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-branch-overflow.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-branch-overflow.ll @@ -20,10 +20,10 @@ define i32 @bar() #0 !dbg !6 { entry: %rando = alloca i32, align 4 %x = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %rando) #4, !dbg !9 + call void @llvm.lifetime.start.p0(ptr %rando) #4, !dbg !9 %call = call i32 (...) @buzz(), !dbg !9 store i32 %call, ptr %rando, align 4, !dbg !9, !tbaa !10 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) #4, !dbg !14 + call void @llvm.lifetime.start.p0(ptr %x) #4, !dbg !14 store i32 0, ptr %x, align 4, !dbg !14, !tbaa !10 %0 = load i32, ptr %rando, align 4, !dbg !15, !tbaa !10 %rem = srem i32 %0, 200000, !dbg !15 @@ -49,13 +49,13 @@ if.else: ; preds = %entry if.end: ; preds = %if.else, %if.then %2 = load i32, ptr %x, align 4, !dbg !19, !tbaa !10 - call void @llvm.lifetime.end.p0(i64 4, ptr %x) #4, !dbg !20 - call void @llvm.lifetime.end.p0(i64 4, ptr %rando) #4, !dbg !20 + call void @llvm.lifetime.end.p0(ptr %x) #4, !dbg !20 + call void @llvm.lifetime.end.p0(ptr %rando) #4, !dbg !20 ret i32 %2, !dbg !19 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i32 @buzz(...) #2 @@ -67,7 +67,7 @@ declare i32 @baz(i32) #2 declare i32 @foo(i32) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-branch-stripped.ll b/llvm/test/Transforms/PGOProfile/misexpect-branch-stripped.ll index 18677b720f36b..2f188f5efd6fc 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-branch-stripped.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-branch-stripped.ll @@ -33,10 +33,10 @@ define i32 @bar() #0 { entry: %rando = alloca i32, align 4 %x = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %rando) #4 + call void @llvm.lifetime.start.p0(ptr %rando) #4 %call = call i32 (...) @buzz() store i32 %call, ptr %rando, align 4, !tbaa !3 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) #4 + call void @llvm.lifetime.start.p0(ptr %x) #4 store i32 0, ptr %x, align 4, !tbaa !3 %0 = load i32, ptr %rando, align 4, !tbaa !3 %rem = srem i32 %0, 200000 @@ -62,13 +62,13 @@ if.else: ; preds = %entry if.end: ; preds = %if.else, %if.then %2 = load i32, ptr %x, align 4, !tbaa !3 - call void @llvm.lifetime.end.p0(i64 4, ptr %x) #4 - call void @llvm.lifetime.end.p0(i64 4, ptr %rando) #4 + call void @llvm.lifetime.end.p0(ptr %x) #4 + call void @llvm.lifetime.end.p0(ptr %rando) #4 ret i32 %2 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i32 @buzz(...) #2 @@ -80,7 +80,7 @@ declare i32 @baz(i32) #2 declare i32 @foo(i32) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-branch-unpredictable.ll b/llvm/test/Transforms/PGOProfile/misexpect-branch-unpredictable.ll index 1e7e8c1ab418a..4add781d52071 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-branch-unpredictable.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-branch-unpredictable.ll @@ -21,10 +21,10 @@ define i32 @bar() #0 { entry: %rando = alloca i32, align 4 %x = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %rando) #3 + call void @llvm.lifetime.start.p0(ptr %rando) #3 %call = call i32 (...) @buzz() store i32 %call, ptr %rando, align 4, !tbaa !2 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) #3 + call void @llvm.lifetime.start.p0(ptr %x) #3 store i32 0, ptr %x, align 4, !tbaa !2 %0 = load i32, ptr %rando, align 4, !tbaa !2 %rem = srem i32 %0, 200000 @@ -49,13 +49,13 @@ if.else: ; preds = %entry if.end: ; preds = %if.else, %if.then %2 = load i32, ptr %x, align 4, !tbaa !2 - call void @llvm.lifetime.end.p0(i64 4, ptr %x) #3 - call void @llvm.lifetime.end.p0(i64 4, ptr %rando) #3 + call void @llvm.lifetime.end.p0(ptr %x) #3 + call void @llvm.lifetime.end.p0(ptr %rando) #3 ret i32 %2 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i32 @buzz(...) #2 @@ -64,7 +64,7 @@ declare i32 @baz(i32) #2 declare i32 @foo(i32) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-branch.ll b/llvm/test/Transforms/PGOProfile/misexpect-branch.ll index 10c37182d4c5c..5a7731bd2442d 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-branch.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-branch.ll @@ -37,10 +37,10 @@ define i32 @bar() #0 !dbg !6 { entry: %rando = alloca i32, align 4 %x = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %rando) #4, !dbg !9 + call void @llvm.lifetime.start.p0(ptr %rando) #4, !dbg !9 %call = call i32 (...) @buzz(), !dbg !9 store i32 %call, ptr %rando, align 4, !dbg !9, !tbaa !10 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) #4, !dbg !14 + call void @llvm.lifetime.start.p0(ptr %x) #4, !dbg !14 store i32 0, ptr %x, align 4, !dbg !14, !tbaa !10 %0 = load i32, ptr %rando, align 4, !dbg !15, !tbaa !10 %rem = srem i32 %0, 200000, !dbg !15 @@ -66,13 +66,13 @@ if.else: ; preds = %entry if.end: ; preds = %if.else, %if.then %2 = load i32, ptr %x, align 4, !dbg !19, !tbaa !10 - call void @llvm.lifetime.end.p0(i64 4, ptr %x) #4, !dbg !20 - call void @llvm.lifetime.end.p0(i64 4, ptr %rando) #4, !dbg !20 + call void @llvm.lifetime.end.p0(ptr %x) #4, !dbg !20 + call void @llvm.lifetime.end.p0(ptr %rando) #4, !dbg !20 ret i32 %2, !dbg !19 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i32 @buzz(...) #2 @@ -84,7 +84,7 @@ declare i32 @baz(i32) #2 declare i32 @foo(i32) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="none" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-features"="+cx8,+mmx,+sse,+sse2,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nounwind willreturn } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-switch-default.ll b/llvm/test/Transforms/PGOProfile/misexpect-switch-default.ll index 6e21c083b91aa..859ba7223a17b 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-switch-default.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-switch-default.ll @@ -40,7 +40,7 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local void @init_arry() #0 { entry: %i = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #6 + call void @llvm.lifetime.start.p0(ptr %i) #6 store i32 0, ptr %i, align 4, !tbaa !4 br label %for.cond @@ -65,12 +65,12 @@ for.inc: ; preds = %for.body br label %for.cond for.end: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #6 + call void @llvm.lifetime.end.p0(ptr %i) #6 ret void } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nounwind readnone speculatable willreturn declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 @@ -79,7 +79,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 declare dso_local i32 @rand() #3 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define dso_local i32 @main() #0 { @@ -90,9 +90,9 @@ entry: %condition = alloca i32, align 4 store i32 0, ptr %retval, align 4 call void @init_arry() - call void @llvm.lifetime.start.p0(i64 4, ptr %val) #6 + call void @llvm.lifetime.start.p0(ptr %val) #6 store i32 0, ptr %val, align 4, !tbaa !4 - call void @llvm.lifetime.start.p0(i64 4, ptr %j) #6 + call void @llvm.lifetime.start.p0(ptr %j) #6 store i32 0, ptr %j, align 4, !tbaa !4 br label %for.cond @@ -102,7 +102,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end for.body: ; preds = %for.cond - call void @llvm.lifetime.start.p0(i64 4, ptr %condition) #6 + call void @llvm.lifetime.start.p0(ptr %condition) #6 %call = call i32 @rand() #6 %rem = srem i32 %call, 5 store i32 %rem, ptr %condition, align 4, !tbaa !4 @@ -138,7 +138,7 @@ sw.default: ; preds = %for.body unreachable sw.epilog: ; preds = %sw.bb3, %sw.bb2, %sw.bb - call void @llvm.lifetime.end.p0(i64 4, ptr %condition) #6 + call void @llvm.lifetime.end.p0(ptr %condition) #6 br label %for.inc for.inc: ; preds = %sw.epilog @@ -148,8 +148,8 @@ for.inc: ; preds = %sw.epilog br label %for.cond for.end: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %j) #6 - call void @llvm.lifetime.end.p0(i64 4, ptr %val) #6 + call void @llvm.lifetime.end.p0(ptr %j) #6 + call void @llvm.lifetime.end.p0(ptr %val) #6 ret i32 0 } diff --git a/llvm/test/Transforms/PGOProfile/misexpect-switch.ll b/llvm/test/Transforms/PGOProfile/misexpect-switch.ll index ebecee178b820..242d5b8cc112e 100644 --- a/llvm/test/Transforms/PGOProfile/misexpect-switch.ll +++ b/llvm/test/Transforms/PGOProfile/misexpect-switch.ll @@ -43,7 +43,7 @@ target triple = "x86_64-unknown-linux-gnu" define dso_local void @init_arry() #0 !dbg !21 { entry: %i = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #6, !dbg !26 + call void @llvm.lifetime.start.p0(ptr %i) #6, !dbg !26 call void @llvm.dbg.declare(metadata ptr %i, metadata !25, metadata !DIExpression()), !dbg !27 store i32 0, ptr %i, align 4, !dbg !28, !tbaa !30 br label %for.cond, !dbg !34 @@ -69,12 +69,12 @@ for.inc: ; preds = %for.body br label %for.cond, !dbg !47, !llvm.loop !48 for.end: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #6, !dbg !50 + call void @llvm.lifetime.end.p0(ptr %i) #6, !dbg !50 ret void, !dbg !50 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nounwind readnone speculatable willreturn declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 @@ -83,7 +83,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 declare dso_local i32 @rand() #3 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define dso_local i32 @main() #0 !dbg !51 { @@ -94,10 +94,10 @@ entry: %condition = alloca i32, align 4 store i32 0, ptr %retval, align 4 call void @init_arry(), !dbg !62 - call void @llvm.lifetime.start.p0(i64 4, ptr %val) #6, !dbg !63 + call void @llvm.lifetime.start.p0(ptr %val) #6, !dbg !63 call void @llvm.dbg.declare(metadata ptr %val, metadata !55, metadata !DIExpression()), !dbg !64 store i32 0, ptr %val, align 4, !dbg !64, !tbaa !30 - call void @llvm.lifetime.start.p0(i64 4, ptr %j) #6, !dbg !65 + call void @llvm.lifetime.start.p0(ptr %j) #6, !dbg !65 call void @llvm.dbg.declare(metadata ptr %j, metadata !56, metadata !DIExpression()), !dbg !66 store i32 0, ptr %j, align 4, !dbg !67, !tbaa !30 br label %for.cond, !dbg !68 @@ -108,7 +108,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.end, !dbg !71 for.body: ; preds = %for.cond - call void @llvm.lifetime.start.p0(i64 4, ptr %condition) #6, !dbg !72 + call void @llvm.lifetime.start.p0(ptr %condition) #6, !dbg !72 call void @llvm.dbg.declare(metadata ptr %condition, metadata !57, metadata !DIExpression()), !dbg !73 %call = call i32 @rand() #6, !dbg !74 %rem = srem i32 %call, 5, !dbg !75 @@ -145,7 +145,7 @@ sw.default: ; preds = %for.body unreachable, !dbg !87 sw.epilog: ; preds = %sw.bb3, %sw.bb2, %sw.bb - call void @llvm.lifetime.end.p0(i64 4, ptr %condition) #6, !dbg !88 + call void @llvm.lifetime.end.p0(ptr %condition) #6, !dbg !88 br label %for.inc, !dbg !89 for.inc: ; preds = %sw.epilog @@ -155,8 +155,8 @@ for.inc: ; preds = %sw.epilog br label %for.cond, !dbg !91, !llvm.loop !92 for.end: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %j) #6, !dbg !94 - call void @llvm.lifetime.end.p0(i64 4, ptr %val) #6, !dbg !94 + call void @llvm.lifetime.end.p0(ptr %j) #6, !dbg !94 + call void @llvm.lifetime.end.p0(ptr %val) #6, !dbg !94 ret i32 0, !dbg !95 } diff --git a/llvm/test/Transforms/PartialInlining/switch_stmt.ll b/llvm/test/Transforms/PartialInlining/switch_stmt.ll index 3f43369b050a6..d99fbba4682f9 100644 --- a/llvm/test/Transforms/PartialInlining/switch_stmt.ll +++ b/llvm/test/Transforms/PartialInlining/switch_stmt.ll @@ -62,7 +62,7 @@ define dso_local signext i32 @caller(i32 signext %c) !prof !30 { ; CHECK-LABEL: @caller( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[RC_I:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[RC_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[RC_I]]) ; CHECK-NEXT: store i32 0, ptr [[RC_I]], align 4 ; CHECK-NEXT: switch i32 [[C:%.*]], label [[SW_DEFAULT_I:%.*]] [ ; CHECK-NEXT: i32 0, label [[CODEREPL_I:%.*]] @@ -83,7 +83,7 @@ define dso_local signext i32 @caller(i32 signext %c) !prof !30 { ; CHECK-NEXT: br label [[CALLEE_1_EXIT]] ; CHECK: callee.1.exit: ; CHECK-NEXT: [[TMP1:%.*]] = load i32, ptr [[RC_I]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[RC_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[RC_I]]) ; entry: %0 = call signext i32 @callee(i32 signext %c, i32 signext %c) diff --git a/llvm/test/Transforms/PhaseOrdering/AArch64/hoist-runtime-checks.ll b/llvm/test/Transforms/PhaseOrdering/AArch64/hoist-runtime-checks.ll index b4b12da3244b2..141503d344fe9 100644 --- a/llvm/test/Transforms/PhaseOrdering/AArch64/hoist-runtime-checks.ll +++ b/llvm/test/Transforms/PhaseOrdering/AArch64/hoist-runtime-checks.ll @@ -68,9 +68,9 @@ entry: store ptr %array, ptr %array.addr, align 8 store i32 %count, ptr %count.addr, align 4 store i32 %n, ptr %n.addr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %sum) #3 + call void @llvm.lifetime.start.p0(ptr %sum) #3 store i32 0, ptr %sum, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #3 + call void @llvm.lifetime.start.p0(ptr %i) #3 store i32 0, ptr %i, align 4 br label %for.cond @@ -81,7 +81,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #3 + call void @llvm.lifetime.end.p0(ptr %i) #3 br label %for.end for.body: ; preds = %for.cond @@ -113,7 +113,7 @@ for.inc: ; preds = %if.end for.end: ; preds = %for.cond.cleanup %9 = load i32, ptr %sum, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %sum) + call void @llvm.lifetime.end.p0(ptr %sum) ret i32 %9 } @@ -184,9 +184,9 @@ entry: %1 = getelementptr inbounds { ptr, i64 }, ptr %s, i32 0, i32 1 store i64 %s.coerce1, ptr %1, align 8 store i64 %n, ptr %n.addr, align 8 - call void @llvm.lifetime.start.p0(i64 4, ptr %ret) #7 + call void @llvm.lifetime.start.p0(ptr %ret) #7 store i32 0, ptr %ret, align 4 - call void @llvm.lifetime.start.p0(i64 8, ptr %i) #7 + call void @llvm.lifetime.start.p0(ptr %i) #7 store i64 0, ptr %i, align 8 br label %for.cond @@ -197,7 +197,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 8, ptr %i) #7 + call void @llvm.lifetime.end.p0(ptr %i) #7 br label %for.end for.body: ; preds = %for.cond @@ -217,7 +217,7 @@ for.inc: ; preds = %for.body for.end: ; preds = %for.cond.cleanup %8 = load i32, ptr %ret, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %ret) + call void @llvm.lifetime.end.p0(ptr %ret) ret i32 %8 } @@ -283,11 +283,11 @@ entry: ret i64 %0 } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @llvm.trap() -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ;. ; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]} ; CHECK: [[META1]] = !{!"llvm.loop.isvectorized", i32 1} diff --git a/llvm/test/Transforms/PhaseOrdering/AArch64/hoisting-sinking-required-for-vectorization.ll b/llvm/test/Transforms/PhaseOrdering/AArch64/hoisting-sinking-required-for-vectorization.ll index f583a616dd375..e74bf592e1525 100644 --- a/llvm/test/Transforms/PhaseOrdering/AArch64/hoisting-sinking-required-for-vectorization.ll +++ b/llvm/test/Transforms/PhaseOrdering/AArch64/hoisting-sinking-required-for-vectorization.ll @@ -89,7 +89,7 @@ entry: %i = alloca i32, align 4 store ptr %X, ptr %X.addr, align 8 store ptr %Y, ptr %Y.addr, align 8 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.start.p0(ptr %i) #2 store i32 0, ptr %i, align 4 br label %for.cond @@ -99,7 +99,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.end.p0(ptr %i) #2 br label %for.end for.body: ; preds = %for.cond @@ -237,6 +237,6 @@ exit: ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Transforms/PhaseOrdering/AArch64/matrix-extract-insert.ll b/llvm/test/Transforms/PhaseOrdering/AArch64/matrix-extract-insert.ll index 089511d5b2e57..967980689ad1b 100644 --- a/llvm/test/Transforms/PhaseOrdering/AArch64/matrix-extract-insert.ll +++ b/llvm/test/Transforms/PhaseOrdering/AArch64/matrix-extract-insert.ll @@ -408,7 +408,7 @@ entry: store i32 %i, ptr %i.addr, align 4 store ptr %A, ptr %A.addr, align 8 store ptr %B, ptr %B.addr, align 8 - call void @llvm.lifetime.start.p0(i64 4, ptr %j) #3 + call void @llvm.lifetime.start.p0(ptr %j) #3 store i32 0, ptr %j, align 4 br label %for.cond @@ -419,11 +419,11 @@ for.cond: ; preds = %for.inc12, %entry for.cond.cleanup: ; preds = %for.cond store i32 2, ptr %cleanup.dest.slot, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %j) #3 + call void @llvm.lifetime.end.p0(ptr %j) #3 br label %for.end14 for.body: ; preds = %for.cond - call void @llvm.lifetime.start.p0(i64 4, ptr %k) #3 + call void @llvm.lifetime.start.p0(ptr %k) #3 store i32 0, ptr %k, align 4 br label %for.cond1 @@ -435,7 +435,7 @@ for.cond1: ; preds = %for.inc, %for.body for.cond.cleanup3: ; preds = %for.cond1 store i32 5, ptr %cleanup.dest.slot, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %k) #3 + call void @llvm.lifetime.end.p0(ptr %k) #3 br label %for.end for.body4: ; preds = %for.cond1 @@ -501,13 +501,13 @@ for.end14: ; preds = %for.cond.cleanup } ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: inaccessiblememonly nofree nosync nounwind willreturn declare void @llvm.assume(i1 noundef) #2 ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind ssp uwtable mustprogress diff --git a/llvm/test/Transforms/PhaseOrdering/AArch64/predicated-reduction.ll b/llvm/test/Transforms/PhaseOrdering/AArch64/predicated-reduction.ll index c7098d2ce96ce..e8709a50524f8 100644 --- a/llvm/test/Transforms/PhaseOrdering/AArch64/predicated-reduction.ll +++ b/llvm/test/Transforms/PhaseOrdering/AArch64/predicated-reduction.ll @@ -108,13 +108,13 @@ entry: store ptr %samples, ptr %samples.addr, align 8 store double %Y, ptr %Y.addr, align 8 store double %Z, ptr %Z.addr, align 8 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2 - call void @llvm.lifetime.start.p0(i64 4, ptr %block) #2 - call void @llvm.lifetime.start.p0(i64 8, ptr %rngVal) #2 - call void @llvm.lifetime.start.p0(i64 8, ptr %callValue) #2 - call void @llvm.lifetime.start.p0(i64 8, ptr %v0) #2 + call void @llvm.lifetime.start.p0(ptr %i) #2 + call void @llvm.lifetime.start.p0(ptr %block) #2 + call void @llvm.lifetime.start.p0(ptr %rngVal) #2 + call void @llvm.lifetime.start.p0(ptr %callValue) #2 + call void @llvm.lifetime.start.p0(ptr %v0) #2 store double 0.000000e+00, ptr %v0, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %v1) #2 + call void @llvm.lifetime.start.p0(ptr %v1) #2 store double 0.000000e+00, ptr %v1, align 8 store i32 0, ptr %i, align 4 br label %for.cond @@ -169,12 +169,12 @@ for.end: ; preds = %for.cond %15 = load double, ptr %v0, align 8 %16 = load double, ptr %v1, align 8 %add5 = fadd fast double %15, %16 - call void @llvm.lifetime.end.p0(i64 8, ptr %v1) #2 - call void @llvm.lifetime.end.p0(i64 8, ptr %v0) #2 - call void @llvm.lifetime.end.p0(i64 8, ptr %callValue) #2 - call void @llvm.lifetime.end.p0(i64 8, ptr %rngVal) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %block) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.end.p0(ptr %v1) #2 + call void @llvm.lifetime.end.p0(ptr %v0) #2 + call void @llvm.lifetime.end.p0(ptr %callValue) #2 + call void @llvm.lifetime.end.p0(ptr %rngVal) #2 + call void @llvm.lifetime.end.p0(ptr %block) #2 + call void @llvm.lifetime.end.p0(ptr %i) #2 ret double %add5 } @@ -305,13 +305,13 @@ entry: store ptr %samples, ptr %samples.addr, align 8 store double %Y, ptr %Y.addr, align 8 store double %Z, ptr %Z.addr, align 8 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #4 - call void @llvm.lifetime.start.p0(i64 4, ptr %block) #4 - call void @llvm.lifetime.start.p0(i64 8, ptr %rngVal) #4 - call void @llvm.lifetime.start.p0(i64 8, ptr %callValue) #4 - call void @llvm.lifetime.start.p0(i64 8, ptr %v0) #4 + call void @llvm.lifetime.start.p0(ptr %i) #4 + call void @llvm.lifetime.start.p0(ptr %block) #4 + call void @llvm.lifetime.start.p0(ptr %rngVal) #4 + call void @llvm.lifetime.start.p0(ptr %callValue) #4 + call void @llvm.lifetime.start.p0(ptr %v0) #4 store double 0.000000e+00, ptr %v0, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %v1) #4 + call void @llvm.lifetime.start.p0(ptr %v1) #4 store double 0.000000e+00, ptr %v1, align 8 store i32 0, ptr %block, align 4 br label %for.cond @@ -389,19 +389,19 @@ for.end10: ; preds = %for.cond %21 = load double, ptr %v0, align 8 %22 = load double, ptr %v1, align 8 %add11 = fadd fast double %21, %22 - call void @llvm.lifetime.end.p0(i64 8, ptr %v1) #4 - call void @llvm.lifetime.end.p0(i64 8, ptr %v0) #4 - call void @llvm.lifetime.end.p0(i64 8, ptr %callValue) #4 - call void @llvm.lifetime.end.p0(i64 8, ptr %rngVal) #4 - call void @llvm.lifetime.end.p0(i64 4, ptr %block) #4 - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #4 + call void @llvm.lifetime.end.p0(ptr %v1) #4 + call void @llvm.lifetime.end.p0(ptr %v0) #4 + call void @llvm.lifetime.end.p0(ptr %callValue) #4 + call void @llvm.lifetime.end.p0(ptr %rngVal) #4 + call void @llvm.lifetime.end.p0(ptr %block) #4 + call void @llvm.lifetime.end.p0(ptr %i) #4 ret double %add11 } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @resample(i32 noundef, ptr noundef) declare double @llvm.exp2.f64(double) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ;. ; CHECK: [[LOOP0]] = distinct !{[[LOOP0]], [[META1:![0-9]+]], [[META2:![0-9]+]]} ; CHECK: [[META1]] = !{!"llvm.loop.isvectorized", i32 1} diff --git a/llvm/test/Transforms/PhaseOrdering/AArch64/quant_4x4.ll b/llvm/test/Transforms/PhaseOrdering/AArch64/quant_4x4.ll index d55559d632019..258ef63503bec 100644 --- a/llvm/test/Transforms/PhaseOrdering/AArch64/quant_4x4.ll +++ b/llvm/test/Transforms/PhaseOrdering/AArch64/quant_4x4.ll @@ -525,9 +525,9 @@ entry: store ptr %dct, ptr %dct.addr, align 8 store ptr %mf, ptr %mf.addr, align 8 store ptr %bias, ptr %bias.addr, align 8 - call void @llvm.lifetime.start.p0(i64 4, ptr %nz) #2 + call void @llvm.lifetime.start.p0(ptr %nz) #2 store i32 0, ptr %nz, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.start.p0(ptr %i) #2 store i32 0, ptr %i, align 4 br label %for.cond @@ -537,7 +537,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.end.p0(ptr %i) #2 br label %for.end for.body: ; preds = %for.cond @@ -636,13 +636,13 @@ for.end: ; preds = %for.cond.cleanup %lnot = xor i1 %tobool, true %lnot34 = xor i1 %lnot, true %lnot.ext = zext i1 %lnot34 to i32 - call void @llvm.lifetime.end.p0(i64 4, ptr %nz) #2 + call void @llvm.lifetime.end.p0(ptr %nz) #2 ret i32 %lnot.ext } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 diff --git a/llvm/test/Transforms/PhaseOrdering/AArch64/slpordering.ll b/llvm/test/Transforms/PhaseOrdering/AArch64/slpordering.ll index a2019836098e8..d19242fdd2e13 100644 --- a/llvm/test/Transforms/PhaseOrdering/AArch64/slpordering.ll +++ b/llvm/test/Transforms/PhaseOrdering/AArch64/slpordering.ll @@ -136,14 +136,14 @@ entry: store i32 %ip1, ptr %ip1.addr, align 4, !tbaa !8 store ptr %p2, ptr %p2.addr, align 8, !tbaa !4 store i32 %ip2, ptr %ip2.addr, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 64, ptr %emp) #2 - call void @llvm.lifetime.start.p0(i64 4, ptr %r0) #2 - call void @llvm.lifetime.start.p0(i64 4, ptr %r1) #2 - call void @llvm.lifetime.start.p0(i64 4, ptr %r2) #2 - call void @llvm.lifetime.start.p0(i64 4, ptr %r3) #2 - call void @llvm.lifetime.start.p0(i64 4, ptr %sum) #2 + call void @llvm.lifetime.start.p0(ptr %emp) #2 + call void @llvm.lifetime.start.p0(ptr %r0) #2 + call void @llvm.lifetime.start.p0(ptr %r1) #2 + call void @llvm.lifetime.start.p0(ptr %r2) #2 + call void @llvm.lifetime.start.p0(ptr %r3) #2 + call void @llvm.lifetime.start.p0(ptr %sum) #2 store i32 0, ptr %sum, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.start.p0(ptr %i) #2 store i32 0, ptr %i, align 4, !tbaa !8 br label %for.cond @@ -153,7 +153,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.end.p0(ptr %i) #2 br label %for.end for.body: ; preds = %for.cond @@ -241,22 +241,22 @@ for.body: ; preds = %for.cond %shl42 = shl i32 %sub41, 16 %rdd43 = add nsw i32 %sub36, %shl42 store i32 %rdd43, ptr %r3, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %e0) #2 + call void @llvm.lifetime.start.p0(ptr %e0) #2 %33 = load i32, ptr %r0, align 4, !tbaa !8 %34 = load i32, ptr %r1, align 4, !tbaa !8 %rdd44 = add i32 %33, %34 store i32 %rdd44, ptr %e0, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %e1) #2 + call void @llvm.lifetime.start.p0(ptr %e1) #2 %35 = load i32, ptr %r0, align 4, !tbaa !8 %36 = load i32, ptr %r1, align 4, !tbaa !8 %sub45 = sub i32 %35, %36 store i32 %sub45, ptr %e1, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %e2) #2 + call void @llvm.lifetime.start.p0(ptr %e2) #2 %37 = load i32, ptr %r2, align 4, !tbaa !8 %38 = load i32, ptr %r3, align 4, !tbaa !8 %rdd46 = add i32 %37, %38 store i32 %rdd46, ptr %e2, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %e3) #2 + call void @llvm.lifetime.start.p0(ptr %e3) #2 %39 = load i32, ptr %r2, align 4, !tbaa !8 %40 = load i32, ptr %r3, align 4, !tbaa !8 %sub47 = sub i32 %39, %40 @@ -293,10 +293,10 @@ for.body: ; preds = %for.cond %rrrayidx61 = getelementptr inbounds [4 x [4 x i32]], ptr %emp, i64 0, i64 %idxprom60 %rrrayidx62 = getelementptr inbounds [4 x i32], ptr %rrrayidx61, i64 0, i64 3 store i32 %sub59, ptr %rrrayidx62, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 4, ptr %e3) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %e2) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %e1) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %e0) #2 + call void @llvm.lifetime.end.p0(ptr %e3) #2 + call void @llvm.lifetime.end.p0(ptr %e2) #2 + call void @llvm.lifetime.end.p0(ptr %e1) #2 + call void @llvm.lifetime.end.p0(ptr %e0) #2 br label %for.inc for.inc: ; preds = %for.body @@ -316,7 +316,7 @@ for.inc: ; preds = %for.body br label %for.cond, !llvm.loop !11 for.end: ; preds = %for.cond.cleanup - call void @llvm.lifetime.start.p0(i64 4, ptr %i65) #2 + call void @llvm.lifetime.start.p0(ptr %i65) #2 store i32 0, ptr %i65, align 4, !tbaa !8 br label %for.cond66 @@ -326,11 +326,11 @@ for.cond66: ; preds = %for.inc114, %for.en br i1 %cmp67, label %for.body70, label %for.cond.cleanup69 for.cond.cleanup69: ; preds = %for.cond66 - call void @llvm.lifetime.end.p0(i64 4, ptr %i65) #2 + call void @llvm.lifetime.end.p0(ptr %i65) #2 br label %for.end116 for.body70: ; preds = %for.cond66 - call void @llvm.lifetime.start.p0(i64 4, ptr %e071) #2 + call void @llvm.lifetime.start.p0(ptr %e071) #2 %rrrayidx72 = getelementptr inbounds [4 x [4 x i32]], ptr %emp, i64 0, i64 0 %59 = load i32, ptr %i65, align 4, !tbaa !8 %idxprom73 = sext i32 %59 to i64 @@ -343,7 +343,7 @@ for.body70: ; preds = %for.cond66 %62 = load i32, ptr %rrrayidx77, align 4, !tbaa !8 %rdd78 = add i32 %60, %62 store i32 %rdd78, ptr %e071, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %e179) #2 + call void @llvm.lifetime.start.p0(ptr %e179) #2 %rrrayidx80 = getelementptr inbounds [4 x [4 x i32]], ptr %emp, i64 0, i64 0 %63 = load i32, ptr %i65, align 4, !tbaa !8 %idxprom81 = sext i32 %63 to i64 @@ -356,7 +356,7 @@ for.body70: ; preds = %for.cond66 %66 = load i32, ptr %rrrayidx85, align 4, !tbaa !8 %sub86 = sub i32 %64, %66 store i32 %sub86, ptr %e179, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %e287) #2 + call void @llvm.lifetime.start.p0(ptr %e287) #2 %rrrayidx88 = getelementptr inbounds [4 x [4 x i32]], ptr %emp, i64 0, i64 2 %67 = load i32, ptr %i65, align 4, !tbaa !8 %idxprom89 = sext i32 %67 to i64 @@ -369,7 +369,7 @@ for.body70: ; preds = %for.cond66 %70 = load i32, ptr %rrrayidx93, align 4, !tbaa !8 %rdd94 = add i32 %68, %70 store i32 %rdd94, ptr %e287, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %e395) #2 + call void @llvm.lifetime.start.p0(ptr %e395) #2 %rrrayidx96 = getelementptr inbounds [4 x [4 x i32]], ptr %emp, i64 0, i64 2 %71 = load i32, ptr %i65, align 4, !tbaa !8 %idxprom97 = sext i32 %71 to i64 @@ -398,10 +398,10 @@ for.body70: ; preds = %for.cond66 %82 = load i32, ptr %e395, align 4, !tbaa !8 %sub106 = sub nsw i32 %81, %82 store i32 %sub106, ptr %r3, align 4, !tbaa !8 - call void @llvm.lifetime.end.p0(i64 4, ptr %e395) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %e287) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %e179) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %e071) #2 + call void @llvm.lifetime.end.p0(ptr %e395) #2 + call void @llvm.lifetime.end.p0(ptr %e287) #2 + call void @llvm.lifetime.end.p0(ptr %e179) #2 + call void @llvm.lifetime.end.p0(ptr %e071) #2 %83 = load i32, ptr %r0, align 4, !tbaa !8 %call = call i32 @twoabs(i32 noundef %83) %84 = load i32, ptr %r1, align 4, !tbaa !8 @@ -432,20 +432,20 @@ for.end116: ; preds = %for.cond.cleanup69 %shr = lshr i32 %90, 16 %rdd119 = add i32 %conv118, %shr %shr120 = lshr i32 %rdd119, 1 - call void @llvm.lifetime.end.p0(i64 4, ptr %sum) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %r3) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %r2) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %r1) #2 - call void @llvm.lifetime.end.p0(i64 4, ptr %r0) #2 - call void @llvm.lifetime.end.p0(i64 64, ptr %emp) #2 + call void @llvm.lifetime.end.p0(ptr %sum) #2 + call void @llvm.lifetime.end.p0(ptr %r3) #2 + call void @llvm.lifetime.end.p0(ptr %r2) #2 + call void @llvm.lifetime.end.p0(ptr %r1) #2 + call void @llvm.lifetime.end.p0(ptr %r0) #2 + call void @llvm.lifetime.end.p0(ptr %emp) #2 ret i32 %shr120 } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define internal i32 @twoabs(i32 noundef %r) #0 { @@ -453,7 +453,7 @@ entry: %r.addr = alloca i32, align 4 %s = alloca i32, align 4 store i32 %r, ptr %r.addr, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %s) #2 + call void @llvm.lifetime.start.p0(ptr %s) #2 %0 = load i32, ptr %r.addr, align 4, !tbaa !8 %shr = lshr i32 %0, 15 %rnd = and i32 %shr, 65537 @@ -464,7 +464,7 @@ entry: %rdd = add i32 %1, %2 %3 = load i32, ptr %s, align 4, !tbaa !8 %xor = xor i32 %rdd, %3 - call void @llvm.lifetime.end.p0(i64 4, ptr %s) #2 + call void @llvm.lifetime.end.p0(ptr %s) #2 ret i32 %xor } diff --git a/llvm/test/Transforms/PhaseOrdering/AArch64/udotabd.ll b/llvm/test/Transforms/PhaseOrdering/AArch64/udotabd.ll index 3496520c232aa..0967736b6740a 100644 --- a/llvm/test/Transforms/PhaseOrdering/AArch64/udotabd.ll +++ b/llvm/test/Transforms/PhaseOrdering/AArch64/udotabd.ll @@ -379,9 +379,9 @@ entry: store i32 %s_p1, ptr %s_p1.addr, align 4, !tbaa !9 store ptr %p2, ptr %p2.addr, align 8, !tbaa !4 store i32 %s_p2, ptr %s_p2.addr, align 4, !tbaa !9 - call void @llvm.lifetime.start.p0(i64 4, ptr %i_sum) #3 + call void @llvm.lifetime.start.p0(ptr %i_sum) #3 store i32 0, ptr %i_sum, align 4, !tbaa !9 - call void @llvm.lifetime.start.p0(i64 4, ptr %y) #3 + call void @llvm.lifetime.start.p0(ptr %y) #3 store i32 0, ptr %y, align 4, !tbaa !9 br label %for.cond @@ -392,11 +392,11 @@ for.cond: ; preds = %for.inc10, %entry for.cond.cleanup: ; preds = %for.cond store i32 2, ptr %cleanup.dest.slot, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %y) #3 + call void @llvm.lifetime.end.p0(ptr %y) #3 br label %for.end12 for.body: ; preds = %for.cond - call void @llvm.lifetime.start.p0(i64 4, ptr %x) #3 + call void @llvm.lifetime.start.p0(ptr %x) #3 store i32 0, ptr %x, align 4, !tbaa !9 br label %for.cond1 @@ -407,7 +407,7 @@ for.cond1: ; preds = %for.inc, %for.body for.cond.cleanup3: ; preds = %for.cond1 store i32 5, ptr %cleanup.dest.slot, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %x) #3 + call void @llvm.lifetime.end.p0(ptr %x) #3 br label %for.end for.body4: ; preds = %for.cond1 @@ -458,18 +458,18 @@ for.inc10: ; preds = %for.end for.end12: ; preds = %for.cond.cleanup %16 = load i32, ptr %i_sum, align 4, !tbaa !9 store i32 1, ptr %cleanup.dest.slot, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %i_sum) #3 + call void @llvm.lifetime.end.p0(ptr %i_sum) #3 ret i32 %16 } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr) #1 +declare void @llvm.lifetime.start.p0(ptr) #1 ; Function Attrs: nocallback nofree nosync nounwind speculatable willreturn memory(none) declare i32 @llvm.abs.i32(i32, i1 immarg) #2 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr) #1 +declare void @llvm.lifetime.end.p0(ptr) #1 attributes #0 = { nounwind uwtable vscale_range(1,16) "frame-pointer"="non-leaf" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+bf16,+bti,+ccidx,+complxnum,+crc,+dit,+dotprod,+ete,+flagm,+fp-armv8,+fp16fml,+fullfp16,+i8mm,+jsconv,+lse,+mte,+neon,+pauth,+perfmon,+predres,+rand,+ras,+rcpc,+rdm,+sb,+spe,+ssbs,+sve,+sve-bitperm,+sve2,+trbe,+v8.1a,+v8.2a,+v8.3a,+v8.4a,+v8.5a,+v8a,+v9a,-fmv" } attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } diff --git a/llvm/test/Transforms/PhaseOrdering/ARM/arm_add_q7.ll b/llvm/test/Transforms/PhaseOrdering/ARM/arm_add_q7.ll index 76d9d14b7d14f..0023dea2149b5 100644 --- a/llvm/test/Transforms/PhaseOrdering/ARM/arm_add_q7.ll +++ b/llvm/test/Transforms/PhaseOrdering/ARM/arm_add_q7.ll @@ -43,7 +43,7 @@ entry: store ptr %pSrcB, ptr %pSrcB.addr, align 4 store ptr %pDst, ptr %pDst.addr, align 4 store i32 %blockSize, ptr %blockSize.addr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %blkCnt) + call void @llvm.lifetime.start.p0(ptr %blkCnt) %0 = load i32, ptr %blockSize.addr, align 4 store i32 %0, ptr %blkCnt, align 4 br label %while.cond @@ -78,7 +78,7 @@ while.body: ; preds = %while.cond br label %while.cond while.end: ; preds = %while.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %blkCnt) + call void @llvm.lifetime.end.p0(ptr %blkCnt) ret void } @@ -102,13 +102,13 @@ land.lhs.true: ; preds = %entry br i1 %cmp1, label %if.then, label %if.end10 if.then: ; preds = %land.lhs.true - call void @llvm.lifetime.start.p0(i64 4, ptr %max) + call void @llvm.lifetime.start.p0(ptr %max) %2 = load i32, ptr %sat.addr, align 4 %sub = sub i32 %2, 1 %shl = shl i32 1, %sub %sub2 = sub i32 %shl, 1 store i32 %sub2, ptr %max, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %min) + call void @llvm.lifetime.start.p0(ptr %min) %3 = load i32, ptr %max, align 4 %sub3 = sub nsw i32 -1, %3 store i32 %sub3, ptr %min, align 4 @@ -143,8 +143,8 @@ if.end8: ; preds = %if.end br label %cleanup cleanup: ; preds = %if.end8, %if.then7, %if.then5 - call void @llvm.lifetime.end.p0(i64 4, ptr %min) - call void @llvm.lifetime.end.p0(i64 4, ptr %max) + call void @llvm.lifetime.end.p0(ptr %min) + call void @llvm.lifetime.end.p0(ptr %max) %cleanup.dest = load i32, ptr %cleanup.dest.slot, align 4 switch i32 %cleanup.dest, label %unreachable [ i32 0, label %cleanup.cont @@ -167,8 +167,8 @@ unreachable: ; preds = %cleanup unreachable } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) attributes #0 = { nounwind "frame-pointer"="all" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m55" "target-features"="+armv8.1-m.main,+dsp,+fp-armv8d16,+fp-armv8d16sp,+fp16,+fp64,+fullfp16,+hwdiv,+lob,+mve,+mve.fp,+ras,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3d16,+vfp3d16sp,+vfp4d16,+vfp4d16sp,-aes,-bf16,-cdecp0,-cdecp1,-cdecp2,-cdecp3,-cdecp4,-cdecp5,-cdecp6,-cdecp7,-crc,-crypto,-d32,-dotprod,-fp-armv8,-fp-armv8sp,-fp16fml,-hwdiv-arm,-i8mm,-neon,-sb,-sha2,-vfp3,-vfp3sp,-vfp4,-vfp4sp" "unsafe-fp-math"="true" } attributes #1 = { alwaysinline nounwind "frame-pointer"="all" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m55" "target-features"="+armv8.1-m.main,+dsp,+fp-armv8d16,+fp-armv8d16sp,+fp16,+fp64,+fullfp16,+hwdiv,+lob,+mve,+mve.fp,+ras,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3d16,+vfp3d16sp,+vfp4d16,+vfp4d16sp,-aes,-bf16,-cdecp0,-cdecp1,-cdecp2,-cdecp3,-cdecp4,-cdecp5,-cdecp6,-cdecp7,-crc,-crypto,-d32,-dotprod,-fp-armv8,-fp-armv8sp,-fp16fml,-hwdiv-arm,-i8mm,-neon,-sb,-sha2,-vfp3,-vfp3sp,-vfp4,-vfp4sp" "unsafe-fp-math"="true" } diff --git a/llvm/test/Transforms/PhaseOrdering/ARM/arm_fill_q7.ll b/llvm/test/Transforms/PhaseOrdering/ARM/arm_fill_q7.ll index 2ab6f2bdca8d6..436f848a94366 100644 --- a/llvm/test/Transforms/PhaseOrdering/ARM/arm_fill_q7.ll +++ b/llvm/test/Transforms/PhaseOrdering/ARM/arm_fill_q7.ll @@ -59,8 +59,8 @@ entry: store i8 %value, ptr %value.addr, align 1, !tbaa !3 store ptr %pDst, ptr %pDst.addr, align 4, !tbaa !6 store i32 %blockSize, ptr %blockSize.addr, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %blkCnt) #3 - call void @llvm.lifetime.start.p0(i64 4, ptr %packedValue) #3 + call void @llvm.lifetime.start.p0(ptr %blkCnt) #3 + call void @llvm.lifetime.start.p0(ptr %packedValue) #3 %0 = load i8, ptr %value.addr, align 1, !tbaa !3 %conv = sext i8 %0 to i32 %shl = shl i32 %conv, 0 @@ -122,13 +122,13 @@ while.body16: ; preds = %while.cond13 br label %while.cond13, !llvm.loop !12 while.end18: ; preds = %while.cond13 - call void @llvm.lifetime.end.p0(i64 4, ptr %packedValue) #3 - call void @llvm.lifetime.end.p0(i64 4, ptr %blkCnt) #3 + call void @llvm.lifetime.end.p0(ptr %packedValue) #3 + call void @llvm.lifetime.end.p0(ptr %blkCnt) #3 ret void } ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: alwaysinline nounwind define internal void @write_q7x4_ia(ptr %pQ7, i32 %value) #2 { @@ -138,7 +138,7 @@ entry: %val = alloca i32, align 4 store ptr %pQ7, ptr %pQ7.addr, align 4, !tbaa !6 store i32 %value, ptr %value.addr, align 4, !tbaa !8 - call void @llvm.lifetime.start.p0(i64 4, ptr %val) #3 + call void @llvm.lifetime.start.p0(ptr %val) #3 %0 = load i32, ptr %value.addr, align 4, !tbaa !8 store i32 %0, ptr %val, align 4, !tbaa !8 %1 = load i32, ptr %val, align 4, !tbaa !8 @@ -175,12 +175,12 @@ entry: %14 = load ptr, ptr %13, align 4, !tbaa !6 %add.ptr = getelementptr inbounds i8, ptr %14, i32 4 store ptr %add.ptr, ptr %13, align 4, !tbaa !6 - call void @llvm.lifetime.end.p0(i64 4, ptr %val) #3 + call void @llvm.lifetime.end.p0(ptr %val) #3 ret void } ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m0plus" "target-features"="+armv6-m,+strict-align,+thumb-mode,-aes,-bf16,-cdecp0,-cdecp1,-cdecp2,-cdecp3,-cdecp4,-cdecp5,-cdecp6,-cdecp7,-crc,-crypto,-dotprod,-dsp,-fp16fml,-fullfp16,-hwdiv,-hwdiv-arm,-i8mm,-lob,-mve,-mve.fp,-ras,-sb,-sha2" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nofree nosync nounwind willreturn } diff --git a/llvm/test/Transforms/PhaseOrdering/ARM/arm_mean_q7.ll b/llvm/test/Transforms/PhaseOrdering/ARM/arm_mean_q7.ll index b932a69575cfe..6862d8b33faa1 100644 --- a/llvm/test/Transforms/PhaseOrdering/ARM/arm_mean_q7.ll +++ b/llvm/test/Transforms/PhaseOrdering/ARM/arm_mean_q7.ll @@ -60,9 +60,9 @@ entry: store ptr %pSrc, ptr %pSrc.addr, align 4 store i32 %blockSize, ptr %blockSize.addr, align 4 store ptr %pResult, ptr %pResult.addr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %blkCnt) #3 - call void @llvm.lifetime.start.p0(i64 16, ptr %vecSrc) #3 - call void @llvm.lifetime.start.p0(i64 4, ptr %sum) #3 + call void @llvm.lifetime.start.p0(ptr %blkCnt) #3 + call void @llvm.lifetime.start.p0(ptr %vecSrc) #3 + call void @llvm.lifetime.start.p0(ptr %sum) #3 store i32 0, ptr %sum, align 4 %0 = load i32, ptr %blockSize.addr, align 4 %shr = lshr i32 %0, 4 @@ -123,15 +123,15 @@ while.end5: ; preds = %while.cond1 %conv6 = trunc i32 %div to i8 %18 = load ptr, ptr %pResult.addr, align 4 store i8 %conv6, ptr %18, align 1 - call void @llvm.lifetime.end.p0(i64 4, ptr %sum) #3 - call void @llvm.lifetime.end.p0(i64 16, ptr %vecSrc) #3 - call void @llvm.lifetime.end.p0(i64 4, ptr %blkCnt) #3 + call void @llvm.lifetime.end.p0(ptr %sum) #3 + call void @llvm.lifetime.end.p0(ptr %vecSrc) #3 + call void @llvm.lifetime.end.p0(ptr %blkCnt) #3 ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare i32 @llvm.arm.mve.addv.v16i8(<16 x i8>, i32) #2 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind "approx-func-fp-math"="true" "frame-pointer"="all" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m55" "target-features"="+armv8.1-m.main,+dsp,+fp-armv8d16,+fp-armv8d16sp,+fp16,+fp64,+fullfp16,+hwdiv,+lob,+mve,+mve.fp,+ras,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3d16,+vfp3d16sp,+vfp4d16,+vfp4d16sp,-aes,-bf16,-cdecp0,-cdecp1,-cdecp2,-cdecp3,-cdecp4,-cdecp5,-cdecp6,-cdecp7,-crc,-crypto,-d32,-dotprod,-fp-armv8,-fp-armv8sp,-fp16fml,-hwdiv-arm,-i8mm,-neon,-pacbti,-sb,-sha2,-vfp3,-vfp3sp,-vfp4,-vfp4sp" "unsafe-fp-math"="true" } attributes #1 = { argmemonly nocallback nofree nosync nounwind willreturn } diff --git a/llvm/test/Transforms/PhaseOrdering/ARM/arm_mult_q15.ll b/llvm/test/Transforms/PhaseOrdering/ARM/arm_mult_q15.ll index 9d613b8fe456d..42fdafbf3bec5 100644 --- a/llvm/test/Transforms/PhaseOrdering/ARM/arm_mult_q15.ll +++ b/llvm/test/Transforms/PhaseOrdering/ARM/arm_mult_q15.ll @@ -88,7 +88,7 @@ entry: store ptr %pSrcB, ptr %pSrcB.addr, align 4 store ptr %pDst, ptr %pDst.addr, align 4 store i32 %blockSize, ptr %blockSize.addr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %blkCnt) #3 + call void @llvm.lifetime.start.p0(ptr %blkCnt) #3 %0 = load i32, ptr %blockSize.addr, align 4 store i32 %0, ptr %blkCnt, align 4 br label %while.cond @@ -123,11 +123,11 @@ while.body: ; preds = %while.cond br label %while.cond while.end: ; preds = %while.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %blkCnt) #3 + call void @llvm.lifetime.end.p0(ptr %blkCnt) #3 ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 define internal i32 @__SSAT(i32 %val, i32 %sat) #2 { entry: @@ -149,13 +149,13 @@ land.lhs.true: ; preds = %entry br i1 %cmp1, label %if.then, label %if.end10 if.then: ; preds = %land.lhs.true - call void @llvm.lifetime.start.p0(i64 4, ptr %max) #3 + call void @llvm.lifetime.start.p0(ptr %max) #3 %2 = load i32, ptr %sat.addr, align 4 %sub = sub i32 %2, 1 %shl = shl i32 1, %sub %sub2 = sub i32 %shl, 1 store i32 %sub2, ptr %max, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %min) #3 + call void @llvm.lifetime.start.p0(ptr %min) #3 %3 = load i32, ptr %max, align 4 %sub3 = sub nsw i32 -1, %3 store i32 %sub3, ptr %min, align 4 @@ -190,8 +190,8 @@ if.end8: ; preds = %if.end br label %cleanup cleanup: ; preds = %if.end8, %if.then7, %if.then5 - call void @llvm.lifetime.end.p0(i64 4, ptr %min) #3 - call void @llvm.lifetime.end.p0(i64 4, ptr %max) #3 + call void @llvm.lifetime.end.p0(ptr %min) #3 + call void @llvm.lifetime.end.p0(ptr %max) #3 %cleanup.dest = load i32, ptr %cleanup.dest.slot, align 4 switch i32 %cleanup.dest, label %unreachable [ i32 0, label %cleanup.cont @@ -214,7 +214,7 @@ unreachable: ; preds = %cleanup unreachable } -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind "frame-pointer"="all" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="cortex-m55" "target-features"="+armv8.1-m.main,+dsp,+fp-armv8d16,+fp-armv8d16sp,+fp16,+fp64,+fullfp16,+hwdiv,+lob,+mve,+mve.fp,+ras,+strict-align,+thumb-mode,+vfp2,+vfp2sp,+vfp3d16,+vfp3d16sp,+vfp4d16,+vfp4d16sp,-aes,-bf16,-cdecp0,-cdecp1,-cdecp2,-cdecp3,-cdecp4,-cdecp5,-cdecp6,-cdecp7,-crc,-crypto,-d32,-dotprod,-fp-armv8,-fp-armv8sp,-fp16fml,-hwdiv-arm,-i8mm,-neon,-sb,-sha2,-vfp3,-vfp3sp,-vfp4,-vfp4sp" "unsafe-fp-math"="true" } attributes #1 = { argmemonly nofree nosync nounwind willreturn } diff --git a/llvm/test/Transforms/PhaseOrdering/X86/SROA-after-final-loop-unrolling-2.ll b/llvm/test/Transforms/PhaseOrdering/X86/SROA-after-final-loop-unrolling-2.ll index 5178e9f1c8e42..7fe3f33430234 100644 --- a/llvm/test/Transforms/PhaseOrdering/X86/SROA-after-final-loop-unrolling-2.ll +++ b/llvm/test/Transforms/PhaseOrdering/X86/SROA-after-final-loop-unrolling-2.ll @@ -60,9 +60,9 @@ bb: %i5 = alloca ptr, align 8 store i32 %arg, ptr %i, align 4, !tbaa !5 store ptr %arg1, ptr %i2, align 8, !tbaa !9 - call void @llvm.lifetime.start.p0(i64 8, ptr %i3) #3 + call void @llvm.lifetime.start.p0(ptr %i3) #3 call void @llvm.memcpy.p0.p0.i64(ptr align 4 %i3, ptr align 4 @global, i64 8, i1 false) - call void @llvm.lifetime.start.p0(i64 4, ptr %i4) #3 + call void @llvm.lifetime.start.p0(ptr %i4) #3 store i32 0, ptr %i4, align 4, !tbaa !5 br label %bb6 @@ -75,11 +75,11 @@ bb6: ; preds = %bb22, %bb br i1 %i11, label %bb13, label %bb12 bb12: ; preds = %bb6 - call void @llvm.lifetime.end.p0(i64 4, ptr %i4) #3 + call void @llvm.lifetime.end.p0(ptr %i4) #3 br label %bb25 bb13: ; preds = %bb6 - call void @llvm.lifetime.start.p0(i64 8, ptr %i5) #3 + call void @llvm.lifetime.start.p0(ptr %i5) #3 %i14 = load i32, ptr %i4, align 4, !tbaa !5 %i15 = srem i32 %i14, 2 %i16 = sext i32 %i15 to i64 @@ -90,7 +90,7 @@ bb13: ; preds = %bb6 %i20 = load i32, ptr %i19, align 4, !tbaa !5 %i21 = mul nsw i32 %i20, %i18 store i32 %i21, ptr %i19, align 4, !tbaa !5 - call void @llvm.lifetime.end.p0(i64 8, ptr %i5) #3 + call void @llvm.lifetime.end.p0(ptr %i5) #3 br label %bb22 bb22: ; preds = %bb13 @@ -102,12 +102,12 @@ bb22: ; preds = %bb13 bb25: ; preds = %bb12 %i26 = load ptr, ptr %i2, align 8, !tbaa !9 call void @llvm.memcpy.p0.p0.i64(ptr align 4 %i26, ptr align 4 %i3, i64 8, i1 false), !tbaa.struct !13 - call void @llvm.lifetime.end.p0(i64 8, ptr %i3) #3 + call void @llvm.lifetime.end.p0(ptr %i3) #3 ret void } ; Function Attrs: argmemonly nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: argmemonly nocallback nofree nounwind willreturn declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 @@ -126,7 +126,7 @@ bb: } ; Function Attrs: argmemonly nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: mustprogress nounwind uwtable define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @widget(ptr noundef nonnull align 4 dereferenceable(8) %arg, i64 noundef %arg1) #0 comdat($_ZNSt14__array_traitsIiLm2EE6_S_refERA2_Kim) align 2 { diff --git a/llvm/test/Transforms/PhaseOrdering/X86/SROA-after-loop-unrolling.ll b/llvm/test/Transforms/PhaseOrdering/X86/SROA-after-loop-unrolling.ll index c6dc7b374b00f..51f2a364a2c72 100644 --- a/llvm/test/Transforms/PhaseOrdering/X86/SROA-after-loop-unrolling.ll +++ b/llvm/test/Transforms/PhaseOrdering/X86/SROA-after-loop-unrolling.ll @@ -50,14 +50,14 @@ entry: %__end15 = alloca ptr %elt11 = alloca ptr store i32 %cnt, ptr %cnt.addr - call void @llvm.lifetime.start.p0(i64 24, ptr %arr) - call void @llvm.lifetime.start.p0(i64 8, ptr %__range1) + call void @llvm.lifetime.start.p0(ptr %arr) + call void @llvm.lifetime.start.p0(ptr %__range1) store ptr %arr, ptr %__range1 - call void @llvm.lifetime.start.p0(i64 8, ptr %__begin1) + call void @llvm.lifetime.start.p0(ptr %__begin1) %0 = load ptr, ptr %__range1 %call = call ptr @_ZNSt5arrayIiLm6EE5beginEv(ptr %0) store ptr %call, ptr %__begin1 - call void @llvm.lifetime.start.p0(i64 8, ptr %__end1) + call void @llvm.lifetime.start.p0(ptr %__end1) %1 = load ptr, ptr %__range1 %call1 = call ptr @_ZNSt5arrayIiLm6EE3endEv(ptr %1) store ptr %call1, ptr %__end1 @@ -70,13 +70,13 @@ for.cond: br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: - call void @llvm.lifetime.end.p0(i64 8, ptr %__end1) - call void @llvm.lifetime.end.p0(i64 8, ptr %__begin1) - call void @llvm.lifetime.end.p0(i64 8, ptr %__range1) + call void @llvm.lifetime.end.p0(ptr %__end1) + call void @llvm.lifetime.end.p0(ptr %__begin1) + call void @llvm.lifetime.end.p0(ptr %__range1) br label %for.end for.body: - call void @llvm.lifetime.start.p0(i64 8, ptr %elt) + call void @llvm.lifetime.start.p0(ptr %elt) %4 = load ptr, ptr %__begin1 store ptr %4, ptr %elt %5 = load i32, ptr %cnt.addr @@ -84,7 +84,7 @@ for.body: store i32 %inc, ptr %cnt.addr %6 = load ptr, ptr %elt store i32 %inc, ptr %6 - call void @llvm.lifetime.end.p0(i64 8, ptr %elt) + call void @llvm.lifetime.end.p0(ptr %elt) br label %for.inc for.inc: @@ -94,13 +94,13 @@ for.inc: br label %for.cond for.end: - call void @llvm.lifetime.start.p0(i64 8, ptr %__range12) + call void @llvm.lifetime.start.p0(ptr %__range12) store ptr %arr, ptr %__range12 - call void @llvm.lifetime.start.p0(i64 8, ptr %__begin13) + call void @llvm.lifetime.start.p0(ptr %__begin13) %8 = load ptr, ptr %__range12 %call4 = call ptr @_ZNSt5arrayIiLm6EE5beginEv(ptr %8) store ptr %call4, ptr %__begin13 - call void @llvm.lifetime.start.p0(i64 8, ptr %__end15) + call void @llvm.lifetime.start.p0(ptr %__end15) %9 = load ptr, ptr %__range12 %call6 = call ptr @_ZNSt5arrayIiLm6EE3endEv(ptr %9) store ptr %call6, ptr %__end15 @@ -113,19 +113,19 @@ for.cond7: br i1 %cmp8, label %for.body10, label %for.cond.cleanup9 for.cond.cleanup9: - call void @llvm.lifetime.end.p0(i64 8, ptr %__end15) - call void @llvm.lifetime.end.p0(i64 8, ptr %__begin13) - call void @llvm.lifetime.end.p0(i64 8, ptr %__range12) + call void @llvm.lifetime.end.p0(ptr %__end15) + call void @llvm.lifetime.end.p0(ptr %__begin13) + call void @llvm.lifetime.end.p0(ptr %__range12) br label %for.end14 for.body10: - call void @llvm.lifetime.start.p0(i64 8, ptr %elt11) + call void @llvm.lifetime.start.p0(ptr %elt11) %12 = load ptr, ptr %__begin13 store ptr %12, ptr %elt11 %13 = load ptr, ptr %elt11 %14 = load i32, ptr %13 call void @_Z3usei(i32 %14) - call void @llvm.lifetime.end.p0(i64 8, ptr %elt11) + call void @llvm.lifetime.end.p0(ptr %elt11) br label %for.inc12 for.inc12: @@ -135,11 +135,11 @@ for.inc12: br label %for.cond7 for.end14: - call void @llvm.lifetime.end.p0(i64 24, ptr %arr) + call void @llvm.lifetime.end.p0(ptr %arr) ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) define linkonce_odr dso_local ptr @_ZNSt5arrayIiLm6EE5beginEv(ptr %this) { entry: @@ -160,7 +160,7 @@ entry: ret ptr %add.ptr } -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare dso_local void @_Z3usei(i32) diff --git a/llvm/test/Transforms/PhaseOrdering/X86/hoist-load-of-baseptr.ll b/llvm/test/Transforms/PhaseOrdering/X86/hoist-load-of-baseptr.ll index dfad53411aa55..00453e701ee51 100644 --- a/llvm/test/Transforms/PhaseOrdering/X86/hoist-load-of-baseptr.ll +++ b/llvm/test/Transforms/PhaseOrdering/X86/hoist-load-of-baseptr.ll @@ -143,7 +143,7 @@ entry: %j = alloca i64, align 8 store ptr %data, ptr %data.addr, align 8, !tbaa !3 store i64 %numElems, ptr %numElems.addr, align 8, !tbaa !7 - call void @llvm.lifetime.start.p0(i64 8, ptr %i) + call void @llvm.lifetime.start.p0(ptr %i) store i64 0, ptr %i, align 8, !tbaa !7 br label %for.cond @@ -154,11 +154,11 @@ for.cond: for.cond.cleanup: store i32 2, ptr %cleanup.dest.slot, align 4 - call void @llvm.lifetime.end.p0(i64 8, ptr %i) + call void @llvm.lifetime.end.p0(ptr %i) br label %for.end8 for.body: - call void @llvm.lifetime.start.p0(i64 8, ptr %j) + call void @llvm.lifetime.start.p0(ptr %j) store i64 0, ptr %j, align 8, !tbaa !7 br label %for.cond1 @@ -170,7 +170,7 @@ for.cond1: for.cond.cleanup3: store i32 5, ptr %cleanup.dest.slot, align 4 - call void @llvm.lifetime.end.p0(i64 8, ptr %j) + call void @llvm.lifetime.end.p0(ptr %j) br label %for.end for.body4: @@ -201,7 +201,7 @@ for.end8: ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) define linkonce_odr dso_local noundef nonnull align 4 dereferenceable(4) ptr @_ZNSt6vectorIiSaIiEEixEm(ptr noundef nonnull align 8 dereferenceable(24) %this, i64 noundef %__n) comdat align 2 { entry: @@ -217,7 +217,7 @@ entry: ret ptr %add.ptr } -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) !0 = !{i32 1, !"wchar_size", i32 4} !1 = !{i32 7, !"uwtable", i32 2} diff --git a/llvm/test/Transforms/PhaseOrdering/X86/loop-vectorizer-noalias.ll b/llvm/test/Transforms/PhaseOrdering/X86/loop-vectorizer-noalias.ll index 1a4af5ab3cb4b..3c54ed9bb37ba 100644 --- a/llvm/test/Transforms/PhaseOrdering/X86/loop-vectorizer-noalias.ll +++ b/llvm/test/Transforms/PhaseOrdering/X86/loop-vectorizer-noalias.ll @@ -63,10 +63,10 @@ for.end: ; preds = %for.cond.cleanup } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87"} ;. diff --git a/llvm/test/Transforms/PhaseOrdering/X86/pr61061.ll b/llvm/test/Transforms/PhaseOrdering/X86/pr61061.ll index 362708bacc20f..0c58705d7f757 100644 --- a/llvm/test/Transforms/PhaseOrdering/X86/pr61061.ll +++ b/llvm/test/Transforms/PhaseOrdering/X86/pr61061.ll @@ -13,7 +13,7 @@ define <2 x i64> @PR61061(<2 x i64> noundef %vect) { ; CHECK-NEXT: ret <2 x i64> [[TMP1]] ; %ptr = alloca <2 x i64>, align 16 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %ptr) + call void @llvm.lifetime.start.p0(ptr nonnull %ptr) %bc0 = bitcast <2 x i64> %vect to <16 x i8> %bc1 = bitcast <2 x i64> %vect to <16 x i8> %bc2 = bitcast <2 x i64> %vect to <16 x i8> @@ -62,8 +62,8 @@ define <2 x i64> @PR61061(<2 x i64> noundef %vect) { store i8 %elt2, ptr %ptr14, align 2 store i8 %elt3, ptr %ptr15, align 1 %base = load <2 x i64>, ptr %ptr, align 16 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %ptr) + call void @llvm.lifetime.end.p0(ptr nonnull %ptr) ret <2 x i64> %base } -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) diff --git a/llvm/test/Transforms/PhaseOrdering/X86/preserve-access-group.ll b/llvm/test/Transforms/PhaseOrdering/X86/preserve-access-group.ll index be7f4c2a941a0..cb378465e30ec 100644 --- a/llvm/test/Transforms/PhaseOrdering/X86/preserve-access-group.ll +++ b/llvm/test/Transforms/PhaseOrdering/X86/preserve-access-group.ll @@ -79,9 +79,9 @@ entry: store ptr %face_cell, ptr %face_cell.addr, align 8, !tbaa !10 store ptr %x, ptr %x.addr, align 8, !tbaa !10 store ptr %y, ptr %y.addr, align 8, !tbaa !10 - call void @llvm.lifetime.start.p0(i64 4, ptr %il) #3 - call void @llvm.lifetime.start.p0(i64 4, ptr %ir) #3 - call void @llvm.lifetime.start.p0(i64 4, ptr %iface) #3 + call void @llvm.lifetime.start.p0(ptr %il) #3 + call void @llvm.lifetime.start.p0(ptr %ir) #3 + call void @llvm.lifetime.start.p0(ptr %iface) #3 store i32 0, ptr %iface, align 4, !tbaa !6 br label %for.cond @@ -92,7 +92,7 @@ for.cond: br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: - call void @llvm.lifetime.end.p0(i64 4, ptr %iface) #3, !llvm.access.group !12 + call void @llvm.lifetime.end.p0(ptr %iface) #3, !llvm.access.group !12 br label %for.end for.body: @@ -134,12 +134,12 @@ for.inc: br label %for.cond, !llvm.loop !15 for.end: - call void @llvm.lifetime.end.p0(i64 4, ptr %ir) #3 - call void @llvm.lifetime.end.p0(i64 4, ptr %il) #3 + call void @llvm.lifetime.end.p0(ptr %ir) #3 + call void @llvm.lifetime.end.p0(ptr %il) #3 ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 define linkonce_odr noundef nonnull align 8 dereferenceable(8) ptr @max(ptr noundef nonnull align 8 dereferenceable(8) %__a, ptr noundef nonnull align 8 dereferenceable(8) %__b) #2 { entry: @@ -170,7 +170,7 @@ return: ret ptr %6 } -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { mustprogress "target-cpu" = "skylake-avx512" } attributes #1 = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } diff --git a/llvm/test/Transforms/PhaseOrdering/X86/vdiv-nounroll.ll b/llvm/test/Transforms/PhaseOrdering/X86/vdiv-nounroll.ll index f60bc26c5111c..69a46b26decb2 100644 --- a/llvm/test/Transforms/PhaseOrdering/X86/vdiv-nounroll.ll +++ b/llvm/test/Transforms/PhaseOrdering/X86/vdiv-nounroll.ll @@ -39,7 +39,7 @@ entry: %i = alloca i32, align 4 store ptr %a, ptr %a.addr, align 8, !tbaa !3 store float %b, ptr %b.addr, align 4, !tbaa !7 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.start.p0(ptr %i) #2 store i32 0, ptr %i, align 4, !tbaa !9 br label %for.cond @@ -49,7 +49,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2 + call void @llvm.lifetime.end.p0(ptr %i) #2 br label %for.end for.body: ; preds = %for.cond @@ -73,8 +73,8 @@ for.end: ; preds = %for.cond.cleanup ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind ssp uwtable "frame-pointer"="all" "min-legal-vector-width"="0" "no-infs-fp-math"="true" "no-nans-fp-math"="true" "no-signed-zeros-fp-math"="true" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "tune-cpu"="generic" "unsafe-fp-math"="true" } attributes #1 = { argmemonly nofree nosync nounwind willreturn } diff --git a/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll b/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll index 85f6fceb5bdbe..f6e8fcd5d1d8c 100644 --- a/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll +++ b/llvm/test/Transforms/PhaseOrdering/X86/vec-load-combine.ll @@ -75,7 +75,7 @@ entry: %ref.tmp7 = alloca %union.ElementWiseAccess, align 16 %ref.tmp12 = alloca %union.ElementWiseAccess, align 16 store ptr %V, ptr %V.addr, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr %ref.tmp) #4 + call void @llvm.lifetime.start.p0(ptr %ref.tmp) #4 %0 = load ptr, ptr %V.addr, align 8 %call = call { double, double } @castToElementWiseAccess_ByVal(ptr noundef nonnull align 16 dereferenceable(16) %0) %coerce.dive = getelementptr inbounds %union.ElementWiseAccess, ptr %ref.tmp, i32 0, i32 0 @@ -87,7 +87,7 @@ entry: store double %4, ptr %3, align 8 %call1 = call noundef float @ElementWiseAccess5getAt(ptr noundef nonnull align 16 dereferenceable(16) %ref.tmp, i32 noundef 0) %vecinit = insertelement <4 x float> undef, float %call1, i32 0 - call void @llvm.lifetime.start.p0(i64 16, ptr %ref.tmp2) #4 + call void @llvm.lifetime.start.p0(ptr %ref.tmp2) #4 %5 = load ptr, ptr %V.addr, align 8 %call3 = call { double, double } @castToElementWiseAccess_ByVal(ptr noundef nonnull align 16 dereferenceable(16) %5) %coerce.dive4 = getelementptr inbounds %union.ElementWiseAccess, ptr %ref.tmp2, i32 0, i32 0 @@ -99,7 +99,7 @@ entry: store double %9, ptr %8, align 8 %call5 = call noundef float @ElementWiseAccess5getAt(ptr noundef nonnull align 16 dereferenceable(16) %ref.tmp2, i32 noundef 1) %vecinit6 = insertelement <4 x float> %vecinit, float %call5, i32 1 - call void @llvm.lifetime.start.p0(i64 16, ptr %ref.tmp7) #4 + call void @llvm.lifetime.start.p0(ptr %ref.tmp7) #4 %10 = load ptr, ptr %V.addr, align 8 %call8 = call { double, double } @castToElementWiseAccess_ByVal(ptr noundef nonnull align 16 dereferenceable(16) %10) %coerce.dive9 = getelementptr inbounds %union.ElementWiseAccess, ptr %ref.tmp7, i32 0, i32 0 @@ -111,7 +111,7 @@ entry: store double %14, ptr %13, align 8 %call10 = call noundef float @ElementWiseAccess5getAt(ptr noundef nonnull align 16 dereferenceable(16) %ref.tmp7, i32 noundef 2) %vecinit11 = insertelement <4 x float> %vecinit6, float %call10, i32 2 - call void @llvm.lifetime.start.p0(i64 16, ptr %ref.tmp12) #4 + call void @llvm.lifetime.start.p0(ptr %ref.tmp12) #4 %15 = load ptr, ptr %V.addr, align 8 %call13 = call { double, double } @castToElementWiseAccess_ByVal(ptr noundef nonnull align 16 dereferenceable(16) %15) %coerce.dive14 = getelementptr inbounds %union.ElementWiseAccess, ptr %ref.tmp12, i32 0, i32 0 @@ -125,10 +125,10 @@ entry: %vecinit16 = insertelement <4 x float> %vecinit11, float %call15, i32 3 store <4 x float> %vecinit16, ptr %.compoundliteral, align 16 %20 = load <4 x float>, ptr %.compoundliteral, align 16 - call void @llvm.lifetime.end.p0(i64 16, ptr %ref.tmp12) #4 - call void @llvm.lifetime.end.p0(i64 16, ptr %ref.tmp7) #4 - call void @llvm.lifetime.end.p0(i64 16, ptr %ref.tmp2) #4 - call void @llvm.lifetime.end.p0(i64 16, ptr %ref.tmp) #4 + call void @llvm.lifetime.end.p0(ptr %ref.tmp12) #4 + call void @llvm.lifetime.end.p0(ptr %ref.tmp7) #4 + call void @llvm.lifetime.end.p0(ptr %ref.tmp2) #4 + call void @llvm.lifetime.end.p0(ptr %ref.tmp) #4 ret <4 x float> %20 } @@ -144,8 +144,8 @@ entry: ret { double, double } %1 } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #3 define internal noundef nonnull align 16 dereferenceable(16) ptr @castToElementWiseAccess_ByRef(ptr noundef nonnull align 16 dereferenceable(16) %0) #1 { diff --git a/llvm/test/Transforms/PhaseOrdering/assume-explosion.ll b/llvm/test/Transforms/PhaseOrdering/assume-explosion.ll index 4d0f039299e76..dd9ead4ffde39 100644 --- a/llvm/test/Transforms/PhaseOrdering/assume-explosion.ll +++ b/llvm/test/Transforms/PhaseOrdering/assume-explosion.ll @@ -130,8 +130,8 @@ for.end34: ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { nounwind ssp uwtable "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+cx8,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "tune-cpu"="generic" } attributes #1 = { argmemonly nofree nosync nounwind willreturn } diff --git a/llvm/test/Transforms/PhaseOrdering/dse-ephemeral-value-captures.ll b/llvm/test/Transforms/PhaseOrdering/dse-ephemeral-value-captures.ll index 1297dbe795834..9a6cad4945742 100644 --- a/llvm/test/Transforms/PhaseOrdering/dse-ephemeral-value-captures.ll +++ b/llvm/test/Transforms/PhaseOrdering/dse-ephemeral-value-captures.ll @@ -1,9 +1,9 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 2 ; RUN: opt -passes='function(dse),cgscc(inline),function(sroa,gvn,sccp)' -S %s | FileCheck %s -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @llvm.assume(i1 noundef) @@ -35,10 +35,10 @@ define i32 @test() { ; entry: %a = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %a) + call void @llvm.lifetime.start.p0(ptr nonnull %a) store i32 1, ptr %a, align 4 %res = call i1 @check_cond(ptr %a) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %a) + call void @llvm.lifetime.end.p0(ptr nonnull %a) call void @llvm.assume(i1 %res) ret i32 0 } diff --git a/llvm/test/Transforms/PhaseOrdering/gvn-replacement-vs-hoist.ll b/llvm/test/Transforms/PhaseOrdering/gvn-replacement-vs-hoist.ll index ae98fe602f3fc..c6d1cbd421436 100644 --- a/llvm/test/Transforms/PhaseOrdering/gvn-replacement-vs-hoist.ll +++ b/llvm/test/Transforms/PhaseOrdering/gvn-replacement-vs-hoist.ll @@ -35,7 +35,7 @@ entry: %i = alloca i32, align 4 store ptr %a, ptr %a.addr, align 8 store i32 %beam, ptr %beam.addr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) + call void @llvm.lifetime.start.p0(ptr %i) store i32 0, ptr %i, align 4 br label %for.cond @@ -45,7 +45,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) + call void @llvm.lifetime.end.p0(ptr %i) br label %for.end for.body: ; preds = %for.cond @@ -85,6 +85,6 @@ for.end: ; preds = %for.cond.cleanup ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Transforms/PhaseOrdering/instcombine-sroa-inttoptr.ll b/llvm/test/Transforms/PhaseOrdering/instcombine-sroa-inttoptr.ll index cc20233a5fefc..84cbad3cf7449 100644 --- a/llvm/test/Transforms/PhaseOrdering/instcombine-sroa-inttoptr.ll +++ b/llvm/test/Transforms/PhaseOrdering/instcombine-sroa-inttoptr.ll @@ -73,23 +73,23 @@ bb: %i = alloca %0, align 8 %i1 = alloca %0, align 8 %i2 = alloca %0, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr %i) + call void @llvm.lifetime.start.p0(ptr %i) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %i1, ptr align 8 %arg, i64 24, i1 false) call void @_Z3gen1S(ptr sret(%0) align 8 %i, ptr byval(%0) align 8 %i1) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %i2, ptr align 8 %i, i64 24, i1 false) call void @_Z7escape01S(ptr byval(%0) align 8 %i2) %i9 = load ptr, ptr %i, align 8 - call void @llvm.lifetime.end.p0(i64 24, ptr %i) + call void @llvm.lifetime.end.p0(ptr %i) ret ptr %i9 } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) declare dso_local void @_Z7escape01S(ptr byval(%0) align 8) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define dso_local ptr @_Z3bar1S(ptr byval(%0) align 8 %arg) { ; CHECK-LABEL: @_Z3bar1S( @@ -112,7 +112,7 @@ define dso_local ptr @_Z3bar1S(ptr byval(%0) align 8 %arg) { bb: %i = alloca %0, align 8 %i1 = alloca %0, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr %i) + call void @llvm.lifetime.start.p0(ptr %i) call void @llvm.memcpy.p0.p0.i64(ptr align 8 %i1, ptr align 8 %arg, i64 24, i1 false) call void @_Z3gen1S(ptr sret(%0) align 8 %i, ptr byval(%0) align 8 %i1) %i5 = call i32 @_Z4condv() @@ -133,7 +133,7 @@ bb10: bb13: %i15 = load ptr, ptr %i, align 8 - call void @llvm.lifetime.end.p0(i64 24, ptr %i) + call void @llvm.lifetime.end.p0(ptr %i) ret ptr %i15 } diff --git a/llvm/test/Transforms/PhaseOrdering/lifetime-sanitizer.ll b/llvm/test/Transforms/PhaseOrdering/lifetime-sanitizer.ll index 1239b18c07017..c5dbc42f4be0d 100644 --- a/llvm/test/Transforms/PhaseOrdering/lifetime-sanitizer.ll +++ b/llvm/test/Transforms/PhaseOrdering/lifetime-sanitizer.ll @@ -7,8 +7,8 @@ ; RUN: opt < %s -passes='default' -S | FileCheck %s --check-prefixes=CHECK,OPT ; RUN: opt < %s -passes="default" -S | FileCheck %s --check-prefixes=CHECK,OPT -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @foo(ptr nocapture) define void @asan() sanitize_address { @@ -16,8 +16,8 @@ entry: ; CHECK-LABEL: @asan( %text = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.end.p0(ptr %text) ; CHECK: call void @llvm.lifetime.start ; CHECK-NEXT: call void @llvm.lifetime.end @@ -31,8 +31,8 @@ entry: ; CHECK-LABEL: @hwasan( %text = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.end.p0(ptr %text) ; CHECK: call void @llvm.lifetime.start ; CHECK-NEXT: call void @llvm.lifetime.end @@ -46,8 +46,8 @@ entry: ; CHECK-LABEL: @msan( %text = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.end.p0(ptr %text) ; CHECK: call void @llvm.lifetime.start ; CHECK-NEXT: call void @llvm.lifetime.end @@ -61,8 +61,8 @@ entry: ; CHECK-LABEL: @no_asan( %text = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr %text) - call void @llvm.lifetime.end.p0(i64 1, ptr %text) + call void @llvm.lifetime.start.p0(ptr %text) + call void @llvm.lifetime.end.p0(ptr %text) ; OPT-NOT: call void @llvm.lifetime ; NOOPT: call void @llvm.lifetime.start ; NOOPT-NEXT: call void @llvm.lifetime.end diff --git a/llvm/test/Transforms/PhaseOrdering/loop-access-checks.ll b/llvm/test/Transforms/PhaseOrdering/loop-access-checks.ll index 45f18dd567396..ae0e59169d3e5 100644 --- a/llvm/test/Transforms/PhaseOrdering/loop-access-checks.ll +++ b/llvm/test/Transforms/PhaseOrdering/loop-access-checks.ll @@ -52,7 +52,7 @@ entry: %elems.coerce.fca.1.extract = extractvalue [2 x i64] %elems.coerce, 1 %elems.coerce.fca.1.gep = getelementptr inbounds [2 x i64], ptr %elems, i64 0, i64 1 store i64 %elems.coerce.fca.1.extract, ptr %elems.coerce.fca.1.gep, align 8 - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %__begin1) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %__begin1) #6 %0 = load ptr, ptr %elems, align 8 %__size_.i.i = getelementptr inbounds %"class.std::__1::span", ptr %elems, i64 0, i32 1 %1 = load i64, ptr %__size_.i.i, align 8 @@ -66,7 +66,7 @@ entry: br i1 %cmp.not.i.i.i.i, label %error, label %check.2 check.2: - call void @llvm.lifetime.start.p0(i64 24, ptr nonnull %__end1) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %__end1) #6 %l4 = load ptr, ptr %elems, align 8 %__size_.i.i4 = getelementptr inbounds %"class.std::__1::span", ptr %elems, i64 0, i32 1 %l5 = load i64, ptr %__size_.i.i4, align 8 @@ -90,8 +90,8 @@ for.cond: br i1 %cmp.i, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %__end1) - call void @llvm.lifetime.end.p0(i64 24, ptr nonnull %__begin1) + call void @llvm.lifetime.end.p0(ptr nonnull %__end1) + call void @llvm.lifetime.end.p0(ptr nonnull %__begin1) ret void for.body: ; preds = %for.cond @@ -115,11 +115,11 @@ for.latch: declare void @error() -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @use(ptr noundef nonnull align 4 dereferenceable(4)) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ; ------------------------------------------------------------------------- @@ -160,11 +160,11 @@ entry: %count = alloca i64, align 8 %i = alloca i64, align 8 store ptr %vec, ptr %vec.addr, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %count) + call void @llvm.lifetime.start.p0(ptr %count) %0 = load ptr, ptr %vec.addr, align 8 %call = call noundef i64 @alloc(ptr noundef nonnull align 8 dereferenceable(24) %0) store i64 %call, ptr %count, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %i) + call void @llvm.lifetime.start.p0(ptr %i) store i64 0, ptr %i, align 8 br label %for.cond @@ -175,7 +175,7 @@ for.cond: br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: - call void @llvm.lifetime.end.p0(i64 8, ptr %i) + call void @llvm.lifetime.end.p0(ptr %i) br label %for.end for.body: @@ -194,7 +194,7 @@ for.inc: br label %for.cond for.end: - call void @llvm.lifetime.end.p0(i64 8, ptr %count) #5 + call void @llvm.lifetime.end.p0(ptr %count) #5 ret void } @@ -299,11 +299,11 @@ entry: %count = alloca i64, align 8 %i = alloca i64, align 8 store ptr %vec, ptr %vec.addr, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %count) + call void @llvm.lifetime.start.p0(ptr %count) %0 = load ptr, ptr %vec.addr, align 8 %call = call noundef i64 @alloc(ptr noundef nonnull align 8 dereferenceable(24) %0) store i64 %call, ptr %count, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %i) + call void @llvm.lifetime.start.p0(ptr %i) store i64 0, ptr %i, align 8 br label %for.cond @@ -314,7 +314,7 @@ for.cond: br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: - call void @llvm.lifetime.end.p0(i64 8, ptr %i) + call void @llvm.lifetime.end.p0(ptr %i) br label %for.end for.body: @@ -333,7 +333,7 @@ for.inc: br label %for.cond for.end: - call void @llvm.lifetime.end.p0(i64 8, ptr %count) + call void @llvm.lifetime.end.p0(ptr %count) ret void } @@ -376,7 +376,7 @@ entry: %k = alloca i32, align 4 store ptr %arr, ptr %arr.addr, align 8 store i32 %len, ptr %len.addr, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #3 + call void @llvm.lifetime.start.p0(ptr %i) #3 store i32 1, ptr %i, align 4 br label %for.cond @@ -388,11 +388,11 @@ for.cond: ; preds = %for.inc5, %entry for.cond.cleanup: ; preds = %for.cond store i32 2, ptr %cleanup.dest.slot, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #3 + call void @llvm.lifetime.end.p0(ptr %i) #3 br label %for.end6 for.body: ; preds = %for.cond - call void @llvm.lifetime.start.p0(i64 4, ptr %k) #3 + call void @llvm.lifetime.start.p0(ptr %k) #3 %2 = load i32, ptr %i, align 4 store i32 %2, ptr %k, align 4 br label %for.cond1 @@ -404,7 +404,7 @@ for.cond1: ; preds = %for.inc, %for.body for.cond.cleanup3: ; preds = %for.cond1 store i32 5, ptr %cleanup.dest.slot, align 4 - call void @llvm.lifetime.end.p0(i64 4, ptr %k) #3 + call void @llvm.lifetime.end.p0(ptr %k) #3 br label %for.end for.body4: ; preds = %for.cond1 diff --git a/llvm/test/Transforms/PhaseOrdering/loop-rotation-vs-common-code-hoisting.ll b/llvm/test/Transforms/PhaseOrdering/loop-rotation-vs-common-code-hoisting.ll index c6b5e5f3ccae0..5ff57eae3a773 100644 --- a/llvm/test/Transforms/PhaseOrdering/loop-rotation-vs-common-code-hoisting.ll +++ b/llvm/test/Transforms/PhaseOrdering/loop-rotation-vs-common-code-hoisting.ll @@ -38,8 +38,8 @@ declare void @f0() declare void @f1() declare void @f2() -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define void @_Z4loopi(i32 %width) { ; HOIST-LABEL: @_Z4loopi( @@ -100,7 +100,7 @@ if.then: br label %return if.end: - call void @llvm.lifetime.start.p0(i64 4, ptr %i) + call void @llvm.lifetime.start.p0(ptr %i) store i32 0, ptr %i, align 4 br label %for.cond @@ -112,7 +112,7 @@ for.cond: br i1 %cmp1, label %for.body, label %for.cond.cleanup for.cond.cleanup: - call void @llvm.lifetime.end.p0(i64 4, ptr %i) + call void @llvm.lifetime.end.p0(ptr %i) br label %for.end for.body: diff --git a/llvm/test/Transforms/PhaseOrdering/vector-select.ll b/llvm/test/Transforms/PhaseOrdering/vector-select.ll index 1bdd135c4cb21..c228723ee958f 100644 --- a/llvm/test/Transforms/PhaseOrdering/vector-select.ll +++ b/llvm/test/Transforms/PhaseOrdering/vector-select.ll @@ -19,9 +19,9 @@ define <3 x float> @PR52631(<3 x float> %a, <3 x float> %b, <3 x i32> %c) { store <4 x float> %extractVec1, ptr %b.addr, align 16 %extractVec3 = shufflevector <3 x i32> %c, <3 x i32> poison, <4 x i32> store <4 x i32> %extractVec3, ptr %c.addr, align 16 - call void @llvm.lifetime.start.p0(i64 16, ptr %zero) #2 + call void @llvm.lifetime.start.p0(ptr %zero) #2 store <4 x i32> , ptr %zero, align 16 - call void @llvm.lifetime.start.p0(i64 16, ptr %mask) #2 + call void @llvm.lifetime.start.p0(ptr %mask) #2 %loadVec4 = load <4 x i32>, ptr %zero, align 16 %extractVec6 = shufflevector <4 x i32> %loadVec4, <4 x i32> poison, <3 x i32> %loadVec48 = load <4 x i32>, ptr %c.addr, align 16 @@ -30,7 +30,7 @@ define <3 x float> @PR52631(<3 x float> %a, <3 x float> %b, <3 x i32> %c) { %sext = sext <3 x i1> %cmp to <3 x i32> %extractVec10 = shufflevector <3 x i32> %sext, <3 x i32> poison, <4 x i32> store <4 x i32> %extractVec10, ptr %mask, align 16 - call void @llvm.lifetime.start.p0(i64 16, ptr %res) #2 + call void @llvm.lifetime.start.p0(ptr %res) #2 %loadVec413 = load <4 x i32>, ptr %mask, align 16 %extractVec14 = shufflevector <4 x i32> %loadVec413, <4 x i32> poison, <3 x i32> %loadVec416 = load <4 x float>, ptr %b.addr, align 16 @@ -51,9 +51,9 @@ define <3 x float> @PR52631(<3 x float> %a, <3 x float> %b, <3 x i32> %c) { %extractVec32 = shufflevector <4 x i32> %loadVec431, <4 x i32> poison, <3 x i32> %or = or <3 x i32> %and29, %extractVec32 %astype33 = bitcast <3 x i32> %or to <3 x float> - call void @llvm.lifetime.end.p0(i64 16, ptr %res) #2 - call void @llvm.lifetime.end.p0(i64 16, ptr %mask) #2 - call void @llvm.lifetime.end.p0(i64 16, ptr %zero) #2 + call void @llvm.lifetime.end.p0(ptr %res) #2 + call void @llvm.lifetime.end.p0(ptr %mask) #2 + call void @llvm.lifetime.end.p0(ptr %zero) #2 ret <3 x float> %astype33 } @@ -112,5 +112,5 @@ for.end: ret <4 x i32> %min.addr.0 } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 diff --git a/llvm/test/Transforms/SROA/alloca-address-space.ll b/llvm/test/Transforms/SROA/alloca-address-space.ll index 31305c8caf05a..941178f0d56a8 100644 --- a/llvm/test/Transforms/SROA/alloca-address-space.ll +++ b/llvm/test/Transforms/SROA/alloca-address-space.ll @@ -140,7 +140,7 @@ define void @addressspace_alloca_lifetime() { ; CHECK-NEXT: ret void ; %alloca = alloca i8, align 8, addrspace(2) - call void @llvm.lifetime.start(i64 2, ptr addrspace(2) %alloca) + call void @llvm.lifetime.start(ptr addrspace(2) %alloca) ret void } diff --git a/llvm/test/Transforms/SROA/basictest.ll b/llvm/test/Transforms/SROA/basictest.ll index 3034aaa53cb22..15803f7b5a25b 100644 --- a/llvm/test/Transforms/SROA/basictest.ll +++ b/llvm/test/Transforms/SROA/basictest.ll @@ -4,8 +4,8 @@ target datalayout = "e-p:64:64:64-p1:16:16:16-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n8:16:32:64" -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define i32 @test0() { ; CHECK-LABEL: @test0( @@ -18,21 +18,21 @@ entry: %a1 = alloca i32 %a2 = alloca float - call void @llvm.lifetime.start.p0(i64 4, ptr %a1) + call void @llvm.lifetime.start.p0(ptr %a1) store i32 0, ptr %a1 %v1 = load i32, ptr %a1 - call void @llvm.lifetime.end.p0(i64 4, ptr %a1) + call void @llvm.lifetime.end.p0(ptr %a1) - call void @llvm.lifetime.start.p0(i64 4, ptr %a2) + call void @llvm.lifetime.start.p0(ptr %a2) store float 0.0, ptr %a2 %v2 = load float , ptr %a2 %v2.int = bitcast float %v2 to i32 %sum1 = add i32 %v1, %v2.int - call void @llvm.lifetime.end.p0(i64 4, ptr %a2) + call void @llvm.lifetime.end.p0(ptr %a2) ret i32 %sum1 } @@ -1102,7 +1102,7 @@ define void @PR14059.1(ptr %d) { ; entry: %X.sroa.0.i = alloca double, align 8 - call void @llvm.lifetime.start.p0(i64 -1, ptr %X.sroa.0.i) + call void @llvm.lifetime.start.p0(ptr %X.sroa.0.i) ; Store to the low 32-bits... store i32 0, ptr %X.sroa.0.i, align 8 @@ -1126,7 +1126,7 @@ entry: %accum.real.i = load double, ptr %d, align 8 %add.r.i = fadd double %accum.real.i, %X.sroa.0.0.load1.i store double %add.r.i, ptr %d, align 8 - call void @llvm.lifetime.end.p0(i64 -1, ptr %X.sroa.0.i) + call void @llvm.lifetime.end.p0(ptr %X.sroa.0.i) ret void } @@ -1812,7 +1812,7 @@ define void @PR25873(ptr %outData) { ; entry: %tmpData = alloca %struct.STest, align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr %tmpData) + call void @llvm.lifetime.start.p0(ptr %tmpData) store float 1.230000e+02, ptr %tmpData, align 8 %y = getelementptr inbounds %struct.STest, ptr %tmpData, i64 0, i32 0, i32 1 store float 4.560000e+02, ptr %y, align 4 @@ -1820,7 +1820,7 @@ entry: %0 = load i64, ptr %tmpData, align 8 store i64 %0, ptr %m_posB, align 8 call void @llvm.memcpy.p0.p0.i64(ptr align 4 %outData, ptr align 4 %tmpData, i64 16, i1 false) - call void @llvm.lifetime.end.p0(i64 16, ptr %tmpData) + call void @llvm.lifetime.end.p0(ptr %tmpData) ret void } @@ -1833,8 +1833,8 @@ define void @PR27999() unnamed_addr { ; entry-block: %0 = alloca [2 x i64], align 8 - call void @llvm.lifetime.start.p0(i64 16, ptr %0) - call void @llvm.lifetime.end.p0(i64 8, ptr %0) + call void @llvm.lifetime.start.p0(ptr %0) + call void @llvm.lifetime.end.p0(ptr %0) ret void } @@ -1846,7 +1846,7 @@ define void @PR29139() { bb1: %e.7.sroa.6.i = alloca i32, align 1 %e.7.sroa.6.0.load81.i = load i32, ptr %e.7.sroa.6.i, align 1 - call void @llvm.lifetime.end.p0(i64 2, ptr %e.7.sroa.6.i) + call void @llvm.lifetime.end.p0(ptr %e.7.sroa.6.i) ret void } @@ -1898,8 +1898,8 @@ entry: ret void } -declare void @llvm.lifetime.start.isVoid.i64.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.isVoid.i64.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.isVoid.i64.p0(ptr nocapture) +declare void @llvm.lifetime.end.isVoid.i64.p0(ptr nocapture) @array = dso_local global [10 x float] zeroinitializer, align 4 define void @test29(i32 %num, i32 %tid) { @@ -1931,7 +1931,7 @@ define void @test29(i32 %num, i32 %tid) { ; entry: %ra = alloca [10 x float], align 4 - call void @llvm.lifetime.start.isVoid.i64.p0(i64 40, ptr nonnull %ra) + call void @llvm.lifetime.start.isVoid.i64.p0(ptr nonnull %ra) %cmp1 = icmp sgt i32 %num, 0 br i1 %cmp1, label %bb1, label %bb7 @@ -1963,7 +1963,7 @@ bb6: br label %bb7 bb7: - call void @llvm.lifetime.end.isVoid.i64.p0(i64 40, ptr nonnull %ra) + call void @llvm.lifetime.end.isVoid.i64.p0(ptr nonnull %ra) ret void } diff --git a/llvm/test/Transforms/SROA/dead-inst.ll b/llvm/test/Transforms/SROA/dead-inst.ll index 44ae82173bb84..bf477222ad682 100644 --- a/llvm/test/Transforms/SROA/dead-inst.ll +++ b/llvm/test/Transforms/SROA/dead-inst.ll @@ -47,7 +47,7 @@ define void @H(ptr noalias nocapture readnone, [2 x i64], ptr %ptr, i32 signext ; CHECK-NEXT: [[TMP21:%.*]] = phi i64 [ -1, [[TMP12]] ], [ [[TMP20]], [[TMP17]] ] ; CHECK-NEXT: [[TMP22:%.*]] = inttoptr i64 0 to ptr ; CHECK-NEXT: [[TMP23:%.*]] = sub nsw i64 [[TMP21]], [[TMP13]] -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 32, ptr nonnull [[TMP3]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TMP3]]) ; CHECK-NEXT: [[TMP24:%.*]] = icmp ult i64 [[TMP23]], 2 ; CHECK-NEXT: br i1 [[TMP24]], label [[G_EXIT:%.*]], label [[TMP25:%.*]] ; CHECK: 25: @@ -60,7 +60,7 @@ define void @H(ptr noalias nocapture readnone, [2 x i64], ptr %ptr, i32 signext ; CHECK-NEXT: call void @D(ptr nonnull sret([[CLASS_B]]) [[TMP3]], ptr nonnull dereferenceable(32) [[PTR2:%.*]]) ; CHECK-NEXT: br label [[G_EXIT]] ; CHECK: G.exit: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 32, ptr nonnull [[TMP3]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TMP3]]) ; CHECK-NEXT: br label [[FOO]] ; CHECK: foo: ; CHECK-NEXT: ret void @@ -105,7 +105,7 @@ a.exit: %22 = phi i64 [ -1, %12 ], [ %21, %18 ] %23 = load ptr, ptr %13, align 8 %24 = sub nsw i64 %22, %14 - call void @llvm.lifetime.start.p0(i64 32, ptr nonnull %3) + call void @llvm.lifetime.start.p0(ptr nonnull %3) %25 = icmp ult i64 %24, 2 br i1 %25, label %G.exit, label %26 @@ -122,7 +122,7 @@ a.exit: br label %G.exit G.exit: - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %3) + call void @llvm.lifetime.end.p0(ptr nonnull %3) br label %foo foo: @@ -133,10 +133,10 @@ foo: declare ptr @memchr(ptr, i32 signext, i64) local_unnamed_addr ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: ; CHECK-MODIFY-CFG: {{.*}} ; CHECK-PRESERVE-CFG: {{.*}} diff --git a/llvm/test/Transforms/SROA/ignore-droppable.ll b/llvm/test/Transforms/SROA/ignore-droppable.ll index 9c95dc07d04ca..ba581bb7049d8 100644 --- a/llvm/test/Transforms/SROA/ignore-droppable.ll +++ b/llvm/test/Transforms/SROA/ignore-droppable.ll @@ -3,8 +3,8 @@ ; RUN: opt < %s -passes='sroa' -S | FileCheck %s --check-prefixes=CHECK,CHECK-MODIFY-CFG declare void @llvm.assume(i1) -declare void @llvm.lifetime.start.p0(i64 %size, ptr nocapture %ptr) -declare void @llvm.lifetime.end.p0(i64 %size, ptr nocapture %ptr) +declare void @llvm.lifetime.start.p0(ptr nocapture %ptr) +declare void @llvm.lifetime.end.p0(ptr nocapture %ptr) define void @positive_assume_uses(ptr %arg) { ; CHECK-LABEL: @positive_assume_uses( @@ -55,10 +55,10 @@ define void @positive_gep_assume_uses() { ; %A = alloca {i8, i16} %B = getelementptr {i8, i16}, ptr %A, i32 0, i32 0 - call void @llvm.lifetime.start.p0(i64 2, ptr %A) + call void @llvm.lifetime.start.p0(ptr %A) call void @llvm.assume(i1 true) ["align"(ptr %B, i64 8), "align"(ptr %B, i64 16)] store {i8, i16} zeroinitializer, ptr %A - call void @llvm.lifetime.end.p0(i64 2, ptr %A) + call void @llvm.lifetime.end.p0(ptr %A) call void @llvm.assume(i1 true) ["nonnull"(ptr %B), "align"(ptr %B, i64 2)] ret void } @@ -71,10 +71,10 @@ define void @positive_mixed_assume_uses() { ; CHECK-NEXT: ret void ; %A = alloca i8 - call void @llvm.lifetime.start.p0(i64 2, ptr %A) + call void @llvm.lifetime.start.p0(ptr %A) call void @llvm.assume(i1 true) ["nonnull"(ptr %A), "align"(ptr %A, i64 8), "align"(ptr %A, i64 16)] store i8 1, ptr %A - call void @llvm.lifetime.end.p0(i64 2, ptr %A) + call void @llvm.lifetime.end.p0(ptr %A) call void @llvm.assume(i1 true) ["nonnull"(ptr %A), "align"(ptr %A, i64 2), "nonnull"(ptr %A)] call void @llvm.assume(i1 true) ["nonnull"(ptr %A), "align"(ptr %A, i64 2), "nonnull"(ptr %A)] ret void diff --git a/llvm/test/Transforms/SROA/lifetime-intrinsic.ll b/llvm/test/Transforms/SROA/lifetime-intrinsic.ll index b9e8873b53307..668903dd863a4 100644 --- a/llvm/test/Transforms/SROA/lifetime-intrinsic.ll +++ b/llvm/test/Transforms/SROA/lifetime-intrinsic.ll @@ -18,14 +18,14 @@ define i16 @with_lifetime(i32 %a, i32 %b) #0 { ; CHECK-NEXT: ret i16 [[RET]] ; %arr = alloca %i32x2, align 4 - call void @llvm.lifetime.start.p0(i64 8, ptr %arr) + call void @llvm.lifetime.start.p0(ptr %arr) %p1 = getelementptr inbounds %i32x2, ptr %arr, i64 0, i32 0, i32 1 store i32 %a, ptr %arr, align 4 store i32 %b, ptr %p1, align 4 %s0 = load i16, ptr %arr, align 4 %s2 = load i16, ptr %p1, align 4 %ret = add i16 %s0, %s2 - call void @llvm.lifetime.end.p0(i64 8, ptr %arr) + call void @llvm.lifetime.end.p0(ptr %arr) ret i16 %ret } @@ -50,9 +50,9 @@ define i16 @no_lifetime(i32 %a, i32 %b) #0 { ret i16 %ret } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 attributes #0 = { alwaysinline nounwind } attributes #1 = { argmemonly nounwind } diff --git a/llvm/test/Transforms/SROA/non-capturing-call-readonly.ll b/llvm/test/Transforms/SROA/non-capturing-call-readonly.ll index 13808b2aa8916..b86f41b8ff514 100644 --- a/llvm/test/Transforms/SROA/non-capturing-call-readonly.ll +++ b/llvm/test/Transforms/SROA/non-capturing-call-readonly.ll @@ -791,13 +791,13 @@ entry: ret i32 0 } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr) +declare void @llvm.lifetime.start.p0(ptr) define i64 @do_schedule_instrs_for_dce_after_fixups() { ; CHECK-LABEL: @do_schedule_instrs_for_dce_after_fixups( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[C:%.*]] = alloca i64, align 2 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr [[C]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[C]]) ; CHECK-NEXT: store i64 0, ptr [[C]], align 4 ; CHECK-NEXT: br label [[IF_END:%.*]] ; CHECK: if.end: @@ -807,7 +807,7 @@ define i64 @do_schedule_instrs_for_dce_after_fixups() { ; entry: %c = alloca i64, align 2 - call void @llvm.lifetime.start.p0(i64 1, ptr %c) + call void @llvm.lifetime.start.p0(ptr %c) store i64 0, ptr %c br label %if.end diff --git a/llvm/test/Transforms/SROA/pr26972.ll b/llvm/test/Transforms/SROA/pr26972.ll index a2872c70483f3..526db3cf5c567 100644 --- a/llvm/test/Transforms/SROA/pr26972.ll +++ b/llvm/test/Transforms/SROA/pr26972.ll @@ -12,11 +12,11 @@ define void @fn1() { ; CHECK-NEXT: ret void ; %a = alloca [1073741825 x i32], align 16 - call void @llvm.lifetime.end.p0(i64 4294967300, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: ; CHECK-MODIFY-CFG: {{.*}} ; CHECK-PRESERVE-CFG: {{.*}} diff --git a/llvm/test/Transforms/SROA/readonlynocapture.ll b/llvm/test/Transforms/SROA/readonlynocapture.ll index 5752fadd76d48..b6f7b1fd1685e 100644 --- a/llvm/test/Transforms/SROA/readonlynocapture.ll +++ b/llvm/test/Transforms/SROA/readonlynocapture.ll @@ -284,25 +284,25 @@ define void @incompletestruct(i1 %b, i1 %c) { ; CHECK-LABEL: @incompletestruct( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[LII:%.*]] = alloca [[STRUCT_LOADIMMEDIATEINFO:%.*]], align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[LII]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[LII]]) ; CHECK-NEXT: [[BF_CLEAR4:%.*]] = and i32 undef, -262144 ; CHECK-NEXT: [[BF_SET5:%.*]] = select i1 [[B:%.*]], i32 196608, i32 131072 ; CHECK-NEXT: [[BF_SET12:%.*]] = or disjoint i32 [[BF_SET5]], [[BF_CLEAR4]] ; CHECK-NEXT: store i32 [[BF_SET12]], ptr [[LII]], align 4 ; CHECK-NEXT: call void @callee(ptr [[LII]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[LII]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[LII]]) ; CHECK-NEXT: ret void ; entry: %LII = alloca %struct.LoadImmediateInfo, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %LII) + call void @llvm.lifetime.start.p0(ptr nonnull %LII) %bf.load = load i32, ptr %LII, align 4 %bf.clear4 = and i32 %bf.load, -262144 %bf.set5 = select i1 %b, i32 196608, i32 131072 %bf.set12 = or disjoint i32 %bf.set5, %bf.clear4 store i32 %bf.set12, ptr %LII, align 4 call void @callee(ptr %LII) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %LII) + call void @llvm.lifetime.end.p0(ptr nonnull %LII) ret void } @@ -312,13 +312,13 @@ define void @incompletestruct_bb(i1 %b, i1 %c) { ; CHECK-NEXT: [[LII:%.*]] = alloca [[STRUCT_LOADIMMEDIATEINFO:%.*]], align 4 ; CHECK-NEXT: br i1 [[C:%.*]], label [[IF_THEN:%.*]], label [[IF_END:%.*]] ; CHECK: if.then: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[LII]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[LII]]) ; CHECK-NEXT: [[BF_CLEAR4:%.*]] = and i32 undef, -262144 ; CHECK-NEXT: [[BF_SET5:%.*]] = select i1 [[B:%.*]], i32 196608, i32 131072 ; CHECK-NEXT: [[BF_SET12:%.*]] = or disjoint i32 [[BF_SET5]], [[BF_CLEAR4]] ; CHECK-NEXT: store i32 [[BF_SET12]], ptr [[LII]], align 4 ; CHECK-NEXT: call void @callee(ptr [[LII]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[LII]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[LII]]) ; CHECK-NEXT: br label [[IF_END]] ; CHECK: if.end: ; CHECK-NEXT: ret void @@ -328,14 +328,14 @@ entry: br i1 %c, label %if.then, label %if.end if.then: ; preds = %entry - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %LII) + call void @llvm.lifetime.start.p0(ptr nonnull %LII) %bf.load = load i32, ptr %LII, align 4 %bf.clear4 = and i32 %bf.load, -262144 %bf.set5 = select i1 %b, i32 196608, i32 131072 %bf.set12 = or disjoint i32 %bf.set5, %bf.clear4 store i32 %bf.set12, ptr %LII, align 4 call void @callee(ptr %LII) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %LII) + call void @llvm.lifetime.end.p0(ptr nonnull %LII) br label %if.end if.end: ; preds = %if.then, %entry @@ -459,35 +459,35 @@ define i32 @provenance_only_capture() { define i32 @simple_with_lifetimes() { ; CHECK-LABEL: @simple_with_lifetimes( ; CHECK-NEXT: [[A:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: store i32 0, ptr [[A]], align 4 ; CHECK-NEXT: call void @callee(ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret i32 0 ; %a = alloca i32 - call void @llvm.lifetime.start(i64 4, ptr %a) + call void @llvm.lifetime.start(ptr %a) store i32 0, ptr %a call void @callee(ptr %a) %l1 = load i32, ptr %a - call void @llvm.lifetime.end(i64 4, ptr %a) + call void @llvm.lifetime.end(ptr %a) ret i32 %l1 } define i32 @twoalloc_with_lifetimes() { ; CHECK-LABEL: @twoalloc_with_lifetimes( ; CHECK-NEXT: [[A:%.*]] = alloca { i32, i32 }, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) ; CHECK-NEXT: store i32 0, ptr [[A]], align 4 ; CHECK-NEXT: [[B:%.*]] = getelementptr i32, ptr [[A]], i32 1 ; CHECK-NEXT: store i32 1, ptr [[B]], align 4 ; CHECK-NEXT: call void @callee(ptr [[A]]) ; CHECK-NEXT: [[R:%.*]] = add i32 0, 1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret i32 [[R]] ; %a = alloca {i32, i32} - call void @llvm.lifetime.start(i64 8, ptr %a) + call void @llvm.lifetime.start(ptr %a) store i32 0, ptr %a %b = getelementptr i32, ptr %a, i32 1 store i32 1, ptr %b @@ -495,7 +495,7 @@ define i32 @twoalloc_with_lifetimes() { %l1 = load i32, ptr %a %l2 = load i32, ptr %b %r = add i32 %l1, %l2 - call void @llvm.lifetime.end(i64 8, ptr %a) + call void @llvm.lifetime.end(ptr %a) ret i32 %r } diff --git a/llvm/test/Transforms/SROA/select-load.ll b/llvm/test/Transforms/SROA/select-load.ll index 9de765071b535..359ecaa09111f 100644 --- a/llvm/test/Transforms/SROA/select-load.ll +++ b/llvm/test/Transforms/SROA/select-load.ll @@ -118,7 +118,7 @@ define i32 @interfering_lifetime(ptr %data, i64 %indvars.iv) { %min = alloca i32, align 4 %arrayidx = getelementptr inbounds i32, ptr %data, i64 %indvars.iv %i1 = load i32, ptr %arrayidx, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %min) + call void @llvm.lifetime.start.p0(ptr %min) store i32 0, ptr %min, align 4 %cmp.i.i = icmp slt i32 %i1, 0 %__b.__a.i.i = select i1 %cmp.i.i, ptr %min, ptr %arrayidx @@ -132,9 +132,9 @@ define i32 @clamp_load_to_constant_range(ptr %data, i64 %indvars.iv) { ; CHECK-PRESERVE-CFG-NEXT: [[MIN:%.*]] = alloca i32, align 4 ; CHECK-PRESERVE-CFG-NEXT: [[MAX:%.*]] = alloca i32, align 4 ; CHECK-PRESERVE-CFG-NEXT: [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[DATA:%.*]], i64 [[INDVARS_IV:%.*]] -; CHECK-PRESERVE-CFG-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[MIN]]) +; CHECK-PRESERVE-CFG-NEXT: call void @llvm.lifetime.start.p0(ptr [[MIN]]) ; CHECK-PRESERVE-CFG-NEXT: store i32 0, ptr [[MIN]], align 4 -; CHECK-PRESERVE-CFG-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[MAX]]) +; CHECK-PRESERVE-CFG-NEXT: call void @llvm.lifetime.start.p0(ptr [[MAX]]) ; CHECK-PRESERVE-CFG-NEXT: store i32 4095, ptr [[MAX]], align 4 ; CHECK-PRESERVE-CFG-NEXT: [[I1:%.*]] = load i32, ptr [[ARRAYIDX]], align 4 ; CHECK-PRESERVE-CFG-NEXT: [[CMP_I_I:%.*]] = icmp slt i32 [[I1]], 0 @@ -167,9 +167,9 @@ define i32 @clamp_load_to_constant_range(ptr %data, i64 %indvars.iv) { %min = alloca i32, align 4 %max = alloca i32, align 4 %arrayidx = getelementptr inbounds i32, ptr %data, i64 %indvars.iv - call void @llvm.lifetime.start.p0(i64 4, ptr %min) + call void @llvm.lifetime.start.p0(ptr %min) store i32 0, ptr %min, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %max) + call void @llvm.lifetime.start.p0(ptr %max) store i32 4095, ptr %max, align 4 %i1 = load i32, ptr %arrayidx, align 4 %cmp.i.i = icmp slt i32 %i1, 0 @@ -482,6 +482,6 @@ define void @load_of_select_with_noundef_nonnull(ptr %buffer, i1 %b) { ; Ensure that the branch metadata is reversed to match the reversals above. -declare void @llvm.lifetime.start.p0(i64, ptr ) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr ) +declare void @llvm.lifetime.end.p0(ptr) declare i32 @llvm.smax.i32(i32, i32) diff --git a/llvm/test/Transforms/SROA/vector-lifetime-intrinsic.ll b/llvm/test/Transforms/SROA/vector-lifetime-intrinsic.ll index 561315be53368..60228a4239eb1 100644 --- a/llvm/test/Transforms/SROA/vector-lifetime-intrinsic.ll +++ b/llvm/test/Transforms/SROA/vector-lifetime-intrinsic.ll @@ -5,10 +5,10 @@ target datalayout = "e-p:64:32-i64:32-v32:32-n32-S64" ; Function Attrs: nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #0 +declare void @llvm.lifetime.start.p0(ptr nocapture) #0 ; Function Attrs: nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #0 +declare void @llvm.lifetime.end.p0(ptr nocapture) #0 define void @wombat(<4 x float> %arg1) { ; CHECK-LABEL: @wombat( @@ -19,10 +19,10 @@ define void @wombat(<4 x float> %arg1) { ; bb: %tmp = alloca <4 x float>, align 16 - call void @llvm.lifetime.start.p0(i64 16, ptr %tmp) + call void @llvm.lifetime.start.p0(ptr %tmp) store <4 x float> %arg1, ptr %tmp, align 16 %tmp18 = load <3 x float>, ptr %tmp - call void @llvm.lifetime.end.p0(i64 16, ptr %tmp) + call void @llvm.lifetime.end.p0(ptr %tmp) call void @wombat3(<3 x float> %tmp18) ret void } diff --git a/llvm/test/Transforms/SROA/vector-promotion.ll b/llvm/test/Transforms/SROA/vector-promotion.ll index ffa758e1a85a3..682e8e3c433b5 100644 --- a/llvm/test/Transforms/SROA/vector-promotion.ll +++ b/llvm/test/Transforms/SROA/vector-promotion.ll @@ -1534,7 +1534,7 @@ bb.5: } declare void @llvm.memcpy.p0.p0.i64(ptr, ptr, i64, i1) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.end.p0(ptr) ;; NOTE: These prefixes are unused and the list is autogenerated. Do not add tests below this line: ; CHECK-MODIFY-CFG: {{.*}} ; CHECK-PRESERVE-CFG: {{.*}} diff --git a/llvm/test/Transforms/SafeStack/ARM/debug.ll b/llvm/test/Transforms/SafeStack/ARM/debug.ll index a8c534c9b72a3..207475a47a032 100644 --- a/llvm/test/Transforms/SafeStack/ARM/debug.ll +++ b/llvm/test/Transforms/SafeStack/ARM/debug.ll @@ -29,15 +29,15 @@ entry: define void @f() local_unnamed_addr #1 !dbg !27 { entry: %c = alloca [16 x i8], align 1 - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %c) #5, !dbg !35 + call void @llvm.lifetime.start.p0(ptr nonnull %c) #5, !dbg !35 call void @llvm.dbg.declare(metadata ptr %c, metadata !31, metadata !DIExpression()), !dbg !36 call void @Capture(ptr nonnull %c) #5, !dbg !37 - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %c) #5, !dbg !38 + call void @llvm.lifetime.end.p0(ptr nonnull %c) #5, !dbg !38 ret void, !dbg !38 } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: nounwind readnone speculatable declare void @llvm.dbg.declare(metadata, metadata, metadata) #3 @@ -45,7 +45,7 @@ declare void @llvm.dbg.declare(metadata, metadata, metadata) #3 declare void @Capture(ptr) local_unnamed_addr #4 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 attributes #0 = { norecurse nounwind readonly safestack "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+dsp,+neon,+vfp3,-thumb-mode" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { nounwind safestack "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="generic" "target-features"="+armv7-a,+dsp,+neon,+vfp3,-thumb-mode" "unsafe-fp-math"="false" "use-soft-float"="false" } diff --git a/llvm/test/Transforms/SafeStack/X86/call.ll b/llvm/test/Transforms/SafeStack/X86/call.ll index 9592b33b620ba..f14e6764680aa 100644 --- a/llvm/test/Transforms/SafeStack/X86/call.ll +++ b/llvm/test/Transforms/SafeStack/X86/call.ll @@ -152,8 +152,8 @@ define void @call_lifetime(ptr %p) { ; CHECK: ret void entry: %q = alloca [100 x i8], align 16 - call void @llvm.lifetime.start.p0(i64 100, ptr %q) - call void @llvm.lifetime.end.p0(i64 100, ptr %q) + call void @llvm.lifetime.start.p0(ptr %q) + call void @llvm.lifetime.end.p0(ptr %q) ret void } @@ -167,5 +167,5 @@ declare void @readnone0(ptr nocapture readnone, ptr nocapture) declare void @llvm.memset.p0.i64(ptr nocapture, i8, i64, i1) nounwind argmemonly -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind argmemonly -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind argmemonly +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind argmemonly +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind argmemonly diff --git a/llvm/test/Transforms/SafeStack/X86/coloring-ssp.ll b/llvm/test/Transforms/SafeStack/X86/coloring-ssp.ll index 8ff369ef063e3..5192e476ed2fc 100644 --- a/llvm/test/Transforms/SafeStack/X86/coloring-ssp.ll +++ b/llvm/test/Transforms/SafeStack/X86/coloring-ssp.ll @@ -14,19 +14,19 @@ entry: %x = alloca i64, align 8 %y = alloca i64, align 8 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -16 call void @capture64(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -16 call void @capture64(ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @capture64(ptr) diff --git a/llvm/test/Transforms/SafeStack/X86/coloring.ll b/llvm/test/Transforms/SafeStack/X86/coloring.ll index 22e1487bdcfce..288ae009581ff 100644 --- a/llvm/test/Transforms/SafeStack/X86/coloring.ll +++ b/llvm/test/Transforms/SafeStack/X86/coloring.ll @@ -11,30 +11,30 @@ entry: %x = alloca i32, align 4 %x1 = alloca i32, align 4 %x2 = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) ; CHECK: %[[A1:.*]] = getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture(ptr nonnull %[[A1]]) call void @capture(ptr nonnull %x) - call void @llvm.lifetime.end.p0(i64 4, ptr %x) - call void @llvm.lifetime.start.p0(i64 4, ptr %x1) + call void @llvm.lifetime.end.p0(ptr %x) + call void @llvm.lifetime.start.p0(ptr %x1) ; CHECK: %[[B1:.*]] = getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture(ptr nonnull %[[B1]]) call void @capture(ptr nonnull %x1) - call void @llvm.lifetime.end.p0(i64 4, ptr %x1) - call void @llvm.lifetime.start.p0(i64 4, ptr %x2) + call void @llvm.lifetime.end.p0(ptr %x1) + call void @llvm.lifetime.start.p0(ptr %x2) ; CHECK: %[[C1:.*]] = getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture(ptr nonnull %[[C1]]) call void @capture(ptr nonnull %x2) - call void @llvm.lifetime.end.p0(i64 4, ptr %x2) + call void @llvm.lifetime.end.p0(ptr %x2) ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @capture(ptr) diff --git a/llvm/test/Transforms/SafeStack/X86/coloring2.ll b/llvm/test/Transforms/SafeStack/X86/coloring2.ll index ae5f375972365..a4157cbcf3e13 100644 --- a/llvm/test/Transforms/SafeStack/X86/coloring2.ll +++ b/llvm/test/Transforms/SafeStack/X86/coloring2.ll @@ -14,21 +14,21 @@ entry: %y = alloca i32, align 4 %z = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %z) - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %z) + call void @llvm.lifetime.start.p0(ptr %x) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %x) + call void @llvm.lifetime.start.p0(ptr %y) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 call void @capture32(ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -8 call void @capture32(ptr %z) - call void @llvm.lifetime.end.p0(i64 -1, ptr %z) + call void @llvm.lifetime.end.p0(ptr %z) ret void } @@ -42,11 +42,11 @@ entry: %x = alloca i32, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -8 call void @capture32(ptr %y) @@ -65,21 +65,21 @@ entry: %y = alloca i32, align 4 %z = alloca i64, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %x) + call void @llvm.lifetime.start.p0(ptr %y) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -8 call void @capture32(ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) - call void @llvm.lifetime.start.p0(i64 -1, ptr %z) + call void @llvm.lifetime.end.p0(ptr %y) + call void @llvm.lifetime.start.p0(ptr %z) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -8 call void @capture64(ptr %z) - call void @llvm.lifetime.end.p0(i64 -1, ptr %z) + call void @llvm.lifetime.end.p0(ptr %z) ret void } @@ -95,9 +95,9 @@ entry: %z = alloca i64, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) - call void @llvm.lifetime.start.p0(i64 -1, ptr %z) + call void @llvm.lifetime.start.p0(ptr %x) + call void @llvm.lifetime.start.p0(ptr %y) + call void @llvm.lifetime.start.p0(ptr %z) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -16 call void @capture32(ptr %x) @@ -108,9 +108,9 @@ entry: ; CHECK: getelementptr i8, ptr %[[USP]], i32 -8 call void @capture64(ptr %z) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %z) + call void @llvm.lifetime.end.p0(ptr %x) + call void @llvm.lifetime.end.p0(ptr %y) + call void @llvm.lifetime.end.p0(ptr %z) ret void } @@ -147,8 +147,8 @@ entry: %z = alloca i64, align 8 %z1 = alloca i64, align 8 %z2 = alloca i64, align 8 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x1) - call void @llvm.lifetime.start.p0(i64 -1, ptr %x2) + call void @llvm.lifetime.start.p0(ptr %x1) + call void @llvm.lifetime.start.p0(ptr %x2) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -8 ; CHECK: call void @capture64( call void @capture64(ptr nonnull %x1) @@ -158,62 +158,62 @@ entry: br i1 %a, label %if.then, label %if.else4 if.then: ; preds = %entry - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -24 ; CHECK: call void @capture64( call void @capture64(ptr nonnull %y) br i1 %b, label %if.then3, label %if.else if.then3: ; preds = %if.then - call void @llvm.lifetime.start.p0(i64 -1, ptr %y1) + call void @llvm.lifetime.start.p0(ptr %y1) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -32 ; CHECK: call void @capture64( call void @capture64(ptr nonnull %y1) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y1) + call void @llvm.lifetime.end.p0(ptr %y1) br label %if.end if.else: ; preds = %if.then - call void @llvm.lifetime.start.p0(i64 -1, ptr %y2) + call void @llvm.lifetime.start.p0(ptr %y2) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -32 ; CHECK: call void @capture64( call void @capture64(ptr nonnull %y2) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y2) + call void @llvm.lifetime.end.p0(ptr %y2) br label %if.end if.end: ; preds = %if.else, %if.then3 - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) br label %if.end9 if.else4: ; preds = %entry - call void @llvm.lifetime.start.p0(i64 -1, ptr %z) + call void @llvm.lifetime.start.p0(ptr %z) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -24 ; CHECK: call void @capture64( call void @capture64(ptr nonnull %z) br i1 %b, label %if.then6, label %if.else7 if.then6: ; preds = %if.else4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %z1) + call void @llvm.lifetime.start.p0(ptr %z1) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -32 ; CHECK: call void @capture64( call void @capture64(ptr nonnull %z1) - call void @llvm.lifetime.end.p0(i64 -1, ptr %z1) + call void @llvm.lifetime.end.p0(ptr %z1) br label %if.end8 if.else7: ; preds = %if.else4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %z2) + call void @llvm.lifetime.start.p0(ptr %z2) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -32 ; CHECK: call void @capture64( call void @capture64(ptr nonnull %z2) - call void @llvm.lifetime.end.p0(i64 -1, ptr %z2) + call void @llvm.lifetime.end.p0(ptr %z2) br label %if.end8 if.end8: ; preds = %if.else7, %if.then6 - call void @llvm.lifetime.end.p0(i64 -1, ptr %z) + call void @llvm.lifetime.end.p0(ptr %z) br label %if.end9 if.end9: ; preds = %if.end8, %if.end - call void @llvm.lifetime.end.p0(i64 -1, ptr %x2) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x1) + call void @llvm.lifetime.end.p0(ptr %x2) + call void @llvm.lifetime.end.p0(ptr %x1) ret void } @@ -225,21 +225,21 @@ entry: ; CHECK-NEXT: getelementptr i8, ptr %[[USP]], i32 -16 %x = alloca i32, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture32( call void @capture32(ptr %x) br i1 %d, label %bb2, label %bb3 bb2: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -8 ; CHECK: call void @capture32( call void @capture32(ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %y) + call void @llvm.lifetime.end.p0(ptr %x) ret void bb3: - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) ret void } @@ -250,18 +250,18 @@ entry: ; CHECK-NEXT: getelementptr i8, ptr %[[USP]], i32 -16 %x = alloca i32, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture32( call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) br i1 %d, label %bb2, label %bb3 bb2: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture32( call void @capture32(ptr %y) - call void @llvm.lifetime.end.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) ret void bb3: ret void @@ -275,14 +275,14 @@ entry: ; CHECK-NEXT: getelementptr i8, ptr %[[USP]], i32 -16 %x = alloca i32, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture32( call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) br i1 %d, label %bb2, label %bb3 bb2: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture32( call void @capture32(ptr %y) @@ -299,14 +299,14 @@ entry: ; CHECK-NEXT: getelementptr i8, ptr %[[USP]], i32 -16 %x = alloca i32, align 4 %y = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %x) + call void @llvm.lifetime.start.p0(ptr %x) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture32( call void @capture32(ptr %x) br i1 %d, label %bb2, label %bb3 bb2: - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.end.p0(ptr %x) + call void @llvm.lifetime.start.p0(ptr %y) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture32( call void @capture32(ptr %y) @@ -326,10 +326,10 @@ entry: ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 ; CHECK: call void @capture32( call void @capture32(ptr %x) - call void @llvm.lifetime.end.p0(i64 -1, ptr %x) + call void @llvm.lifetime.end.p0(ptr %x) br i1 %d, label %bb2, label %bb3 bb2: - call void @llvm.lifetime.start.p0(i64 -1, ptr %y) + call void @llvm.lifetime.start.p0(ptr %y) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -8 ; CHECK: call void @capture32( call void @capture32(ptr %y) @@ -347,26 +347,26 @@ entry: %B.i2 = alloca [100 x i32], align 4 %A.i = alloca [100 x i32], align 4 %B.i = alloca [100 x i32], align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %A.i) - call void @llvm.lifetime.start.p0(i64 -1, ptr %B.i) + call void @llvm.lifetime.start.p0(ptr %A.i) + call void @llvm.lifetime.start.p0(ptr %B.i) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -400 ; CHECK: call void @capture100x32( call void @capture100x32(ptr %A.i) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -800 ; CHECK: call void @capture100x32( call void @capture100x32(ptr %B.i) - call void @llvm.lifetime.end.p0(i64 -1, ptr %A.i) - call void @llvm.lifetime.end.p0(i64 -1, ptr %B.i) - call void @llvm.lifetime.start.p0(i64 -1, ptr %A.i1) - call void @llvm.lifetime.start.p0(i64 -1, ptr %B.i2) + call void @llvm.lifetime.end.p0(ptr %A.i) + call void @llvm.lifetime.end.p0(ptr %B.i) + call void @llvm.lifetime.start.p0(ptr %A.i1) + call void @llvm.lifetime.start.p0(ptr %B.i2) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -400 ; CHECK: call void @capture100x32( call void @capture100x32(ptr %A.i1) ; CHECK: getelementptr i8, ptr %[[USP]], i32 -800 ; CHECK: call void @capture100x32( call void @capture100x32(ptr %B.i2) - call void @llvm.lifetime.end.p0(i64 -1, ptr %A.i1) - call void @llvm.lifetime.end.p0(i64 -1, ptr %B.i2) + call void @llvm.lifetime.end.p0(ptr %A.i1) + call void @llvm.lifetime.end.p0(ptr %B.i2) ret void } @@ -378,11 +378,11 @@ entry: %buf1 = alloca i8, i32 100000, align 16 %buf2 = alloca i8, i32 100000, align 16 - call void @llvm.lifetime.start.p0(i64 -1, ptr %buf1) - call void @llvm.lifetime.end.p0(i64 -1, ptr %buf1) + call void @llvm.lifetime.start.p0(ptr %buf1) + call void @llvm.lifetime.end.p0(ptr %buf1) - call void @llvm.lifetime.start.p0(i64 -1, ptr %buf1) - call void @llvm.lifetime.start.p0(i64 -1, ptr %buf2) + call void @llvm.lifetime.start.p0(ptr %buf1) + call void @llvm.lifetime.start.p0(ptr %buf2) call void @capture8(ptr %buf1) call void @capture8(ptr %buf2) ret void @@ -404,12 +404,12 @@ entry: %B.i2 = alloca [100 x i32], align 4 %A.i = alloca [100 x i32], align 4 %B.i = alloca [100 x i32], align 4 - call void @llvm.lifetime.start.p0(i64 -1, ptr %A.i) nounwind - call void @llvm.lifetime.start.p0(i64 -1, ptr %B.i) nounwind + call void @llvm.lifetime.start.p0(ptr %A.i) nounwind + call void @llvm.lifetime.start.p0(ptr %B.i) nounwind call void @capture100x32(ptr %A.i) call void @capture100x32(ptr %B.i) - call void @llvm.lifetime.end.p0(i64 -1, ptr %A.i) nounwind - call void @llvm.lifetime.end.p0(i64 -1, ptr %B.i) nounwind + call void @llvm.lifetime.end.p0(ptr %A.i) nounwind + call void @llvm.lifetime.end.p0(ptr %B.i) nounwind br label %block2 block2: @@ -429,13 +429,13 @@ entry: %a.i = alloca [4 x %struct.Klass], align 16 %b.i = alloca [4 x %struct.Klass], align 16 ; I am used outside the lifetime zone below: - call void @llvm.lifetime.start.p0(i64 -1, ptr %a.i) - call void @llvm.lifetime.start.p0(i64 -1, ptr %b.i) + call void @llvm.lifetime.start.p0(ptr %a.i) + call void @llvm.lifetime.start.p0(ptr %b.i) call void @capture8(ptr %a.i) call void @capture8(ptr %b.i) %z3 = load i32, ptr %a.i, align 16 - call void @llvm.lifetime.end.p0(i64 -1, ptr %a.i) - call void @llvm.lifetime.end.p0(i64 -1, ptr %b.i) + call void @llvm.lifetime.end.p0(ptr %a.i) + call void @llvm.lifetime.end.p0(ptr %b.i) ret i32 %z3 } @@ -445,12 +445,12 @@ entry: ; CHECK: %[[USP:.*]] = load ptr, ptr @__safestack_unsafe_stack_ptr ; CHECK-NEXT: getelementptr i8, ptr %[[USP]], i32 -16 %x = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) nounwind + call void @llvm.lifetime.start.p0(ptr %x) nounwind br label %l2 l2: call void @capture8(ptr %x) - call void @llvm.lifetime.end.p0(i64 4, ptr %x) nounwind + call void @llvm.lifetime.end.p0(ptr %x) nounwind br label %l2 } @@ -463,25 +463,25 @@ entry: ; CHECK-NEXT: getelementptr i8, ptr %[[USP]], i32 -16 %x = alloca i8, align 4 %y = alloca i8, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) nounwind + call void @llvm.lifetime.start.p0(ptr %x) nounwind br label %l2 l2: ; CHECK: getelementptr i8, ptr %[[USP]], i32 -8 - call void @llvm.lifetime.start.p0(i64 4, ptr %y) nounwind + call void @llvm.lifetime.start.p0(ptr %y) nounwind call void @capture8(ptr %y) - call void @llvm.lifetime.end.p0(i64 4, ptr %y) nounwind + call void @llvm.lifetime.end.p0(ptr %y) nounwind ; CHECK: getelementptr i8, ptr %[[USP]], i32 -4 - call void @llvm.lifetime.start.p0(i64 4, ptr %x) nounwind + call void @llvm.lifetime.start.p0(ptr %x) nounwind call void @capture8(ptr %x) br label %l2 } attributes #0 = { safestack } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @capture8(ptr) declare void @capture32(ptr) declare void @capture64(ptr) diff --git a/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll b/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll index 7a1fdc016ac12..e60522fb3e53b 100644 --- a/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll +++ b/llvm/test/Transforms/SafeStack/X86/debug-loc2.ll @@ -43,12 +43,12 @@ entry: } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 declare void @capture(ptr) #2 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind readnone declare void @llvm.dbg.value(metadata, metadata, metadata) #3 diff --git a/llvm/test/Transforms/SafeStack/X86/layout-frag.ll b/llvm/test/Transforms/SafeStack/X86/layout-frag.ll index b858fd6131537..8a5362b5bef7b 100644 --- a/llvm/test/Transforms/SafeStack/X86/layout-frag.ll +++ b/llvm/test/Transforms/SafeStack/X86/layout-frag.ll @@ -13,16 +13,16 @@ entry: %x2 = alloca i64, align 8 - call void @llvm.lifetime.start.p0(i64 8, ptr %x0) + call void @llvm.lifetime.start.p0(ptr %x0) call void @capture64(ptr %x0) - call void @llvm.lifetime.end.p0(i64 8, ptr %x0) + call void @llvm.lifetime.end.p0(ptr %x0) - call void @llvm.lifetime.start.p0(i64 1, ptr %x1) - call void @llvm.lifetime.start.p0(i64 8, ptr %x2) + call void @llvm.lifetime.start.p0(ptr %x1) + call void @llvm.lifetime.start.p0(ptr %x2) call void @capture8(ptr %x1) call void @capture64(ptr %x2) - call void @llvm.lifetime.end.p0(i64 1, ptr %x1) - call void @llvm.lifetime.end.p0(i64 8, ptr %x2) + call void @llvm.lifetime.end.p0(ptr %x1) + call void @llvm.lifetime.end.p0(ptr %x2) ; Test that i64 allocas share space. ; CHECK: getelementptr i8, ptr %unsafe_stack_ptr, i32 -8 @@ -32,7 +32,7 @@ entry: ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare void @capture8(ptr) declare void @capture64(ptr) diff --git a/llvm/test/Transforms/SafeStack/X86/no-crash-on-lifetime.ll b/llvm/test/Transforms/SafeStack/X86/no-crash-on-lifetime.ll index 76c638ebbd211..c01ca2f97e13d 100644 --- a/llvm/test/Transforms/SafeStack/X86/no-crash-on-lifetime.ll +++ b/llvm/test/Transforms/SafeStack/X86/no-crash-on-lifetime.ll @@ -9,9 +9,9 @@ define dso_local void @_ZN1s1tE1F(ptr byval(%class.F) %g) local_unnamed_addr saf entry: %ref.tmp.i.i.i = alloca i64, align 1 call void undef(ptr %g) - call void @llvm.lifetime.start.p0(i64 3, ptr %ref.tmp.i.i.i) + call void @llvm.lifetime.start.p0(ptr %ref.tmp.i.i.i) ret void } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 diff --git a/llvm/test/Transforms/SampleProfile/csspgo-import-list-callee-samples.ll b/llvm/test/Transforms/SampleProfile/csspgo-import-list-callee-samples.ll index ba66548406f4c..3ae0aea6e7573 100644 --- a/llvm/test/Transforms/SampleProfile/csspgo-import-list-callee-samples.ll +++ b/llvm/test/Transforms/SampleProfile/csspgo-import-list-callee-samples.ll @@ -61,10 +61,10 @@ entry: } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.start.p0(ptr nocapture) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.end.p0(ptr nocapture) #3 ; Function Attrs: nounwind uwtable define dso_local i32 @main() #0 !dbg !28 { diff --git a/llvm/test/Transforms/SampleProfile/entry_counts_cold.ll b/llvm/test/Transforms/SampleProfile/entry_counts_cold.ll index 5fe80dbf6445a..c7617c1de9bd8 100644 --- a/llvm/test/Transforms/SampleProfile/entry_counts_cold.ll +++ b/llvm/test/Transforms/SampleProfile/entry_counts_cold.ll @@ -43,7 +43,7 @@ entry: %a = alloca i32, align 4 store ptr %p, ptr %p.addr, align 8, !tbaa !15 call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !33, metadata !DIExpression()), !dbg !35 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) #4, !dbg !36 + call void @llvm.lifetime.start.p0(ptr %a) #4, !dbg !36 call void @llvm.dbg.declare(metadata ptr %a, metadata !34, metadata !DIExpression()), !dbg !37 %0 = load ptr, ptr %p.addr, align 8, !dbg !38, !tbaa !15 %arrayidx = getelementptr inbounds i32, ptr %0, i64 3, !dbg !38 @@ -58,7 +58,7 @@ entry: store i32 %call, ptr %a, align 4, !dbg !43, !tbaa !25 %5 = load i32, ptr %a, align 4, !dbg !44, !tbaa !25 %add2 = add nsw i32 %5, 1, !dbg !45 - call void @llvm.lifetime.end.p0(i64 4, ptr %a) #4, !dbg !46 + call void @llvm.lifetime.end.p0(ptr %a) #4, !dbg !46 ret i32 %add2, !dbg !47 } @@ -86,10 +86,10 @@ entry: } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 declare void @baz(...) #3 diff --git a/llvm/test/Transforms/SampleProfile/entry_counts_missing_dbginfo.ll b/llvm/test/Transforms/SampleProfile/entry_counts_missing_dbginfo.ll index b8e106418343a..0e629216d4fca 100644 --- a/llvm/test/Transforms/SampleProfile/entry_counts_missing_dbginfo.ll +++ b/llvm/test/Transforms/SampleProfile/entry_counts_missing_dbginfo.ll @@ -53,7 +53,7 @@ entry: %a = alloca i32, align 4 store ptr %p, ptr %p.addr, align 8, !tbaa !15 call void @llvm.dbg.declare(metadata ptr %p.addr, metadata !33, metadata !DIExpression()), !dbg !35 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) #4, !dbg !36 + call void @llvm.lifetime.start.p0(ptr %a) #4, !dbg !36 call void @llvm.dbg.declare(metadata ptr %a, metadata !34, metadata !DIExpression()), !dbg !37 %0 = load ptr, ptr %p.addr, align 8, !dbg !38, !tbaa !15 %arrayidx = getelementptr inbounds i32, ptr %0, i64 3, !dbg !38 @@ -68,7 +68,7 @@ entry: store i32 %call, ptr %a, align 4, !dbg !43, !tbaa !25 %5 = load i32, ptr %a, align 4, !dbg !44, !tbaa !25 %add2 = add nsw i32 %5, 1, !dbg !45 - call void @llvm.lifetime.end.p0(i64 4, ptr %a) #4, !dbg !46 + call void @llvm.lifetime.end.p0(ptr %a) #4, !dbg !46 ret i32 %add2, !dbg !47 } @@ -96,10 +96,10 @@ entry: } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 declare void @baz(...) #3 diff --git a/llvm/test/Transforms/SampleProfile/non-probe-stale-profile-matching.ll b/llvm/test/Transforms/SampleProfile/non-probe-stale-profile-matching.ll index 3ca94a4563675..2b091a1e3fda9 100644 --- a/llvm/test/Transforms/SampleProfile/non-probe-stale-profile-matching.ll +++ b/llvm/test/Transforms/SampleProfile/non-probe-stale-profile-matching.ll @@ -151,10 +151,10 @@ for.end: ; preds = %cleanup, %if.then } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.start.p0(ptr nocapture) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.end.p0(ptr nocapture) #3 attributes #0 = { noinline nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "use-sample-profile" } attributes #1 = { alwaysinline nounwind uwtable "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+cmov,+cx8,+fxsr,+mmx,+sse,+sse2,+x87" "tune-cpu"="generic" "use-sample-profile" } diff --git a/llvm/test/Transforms/SampleProfile/profile-mismatch.ll b/llvm/test/Transforms/SampleProfile/profile-mismatch.ll index 42bc1b81f6705..0a1b8960bf97a 100644 --- a/llvm/test/Transforms/SampleProfile/profile-mismatch.ll +++ b/llvm/test/Transforms/SampleProfile/profile-mismatch.ll @@ -43,13 +43,13 @@ define dso_local i32 @foo(i32 noundef %x) #0 !dbg !12 { entry: %y = alloca i32, align 4 call void @llvm.dbg.value(metadata i32 %x, metadata !16, metadata !DIExpression()), !dbg !18 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %y), !dbg !19 + call void @llvm.lifetime.start.p0(ptr nonnull %y), !dbg !19 call void @llvm.dbg.declare(metadata ptr %y, metadata !17, metadata !DIExpression()), !dbg !20 %add = add nsw i32 %x, 1, !dbg !21 store volatile i32 %add, ptr %y, align 4, !dbg !20, !tbaa !22 %y.0. = load volatile i32, ptr %y, align 4, !dbg !26, !tbaa !22 %add1 = add nsw i32 %y.0., 1, !dbg !27 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %y), !dbg !28 + call void @llvm.lifetime.end.p0(ptr nonnull %y), !dbg !28 ret i32 %add1, !dbg !29 } @@ -57,10 +57,10 @@ entry: declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 ; Function Attrs: argmemonly mustprogress nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly mustprogress nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 ; Function Attrs: noinline nounwind uwtable define dso_local i32 @bar(i32 noundef %x) #3 !dbg !30 { diff --git a/llvm/test/Transforms/SampleProfile/pseudo-probe-discriminator.ll b/llvm/test/Transforms/SampleProfile/pseudo-probe-discriminator.ll index 6d4429b37a52b..26ae1988ed748 100644 --- a/llvm/test/Transforms/SampleProfile/pseudo-probe-discriminator.ll +++ b/llvm/test/Transforms/SampleProfile/pseudo-probe-discriminator.ll @@ -31,8 +31,8 @@ bb3: } declare void @_Z3barv() #1 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind argmemonly -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind argmemonly +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind argmemonly +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind argmemonly attributes #0 = { uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="all" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" } diff --git a/llvm/test/Transforms/SampleProfile/pseudo-probe-icp-factor.ll b/llvm/test/Transforms/SampleProfile/pseudo-probe-icp-factor.ll index b662efab9b2f2..383289edd6947 100644 --- a/llvm/test/Transforms/SampleProfile/pseudo-probe-icp-factor.ll +++ b/llvm/test/Transforms/SampleProfile/pseudo-probe-icp-factor.ll @@ -60,12 +60,12 @@ bb: %i3 = alloca i32, align 4 store i32 0, ptr %i, align 4 call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 1, i32 0, i64 -1), !dbg !62 - call void @llvm.lifetime.start.p0(i64 8, ptr %i1), !dbg !62 + call void @llvm.lifetime.start.p0(ptr %i1), !dbg !62 call void @llvm.dbg.declare(metadata ptr %i1, metadata !57, metadata !DIExpression()), !dbg !63 - call void @llvm.lifetime.start.p0(i64 4, ptr %i2), !dbg !64 + call void @llvm.lifetime.start.p0(ptr %i2), !dbg !64 call void @llvm.dbg.declare(metadata ptr %i2, metadata !59, metadata !DIExpression()), !dbg !65 store i32 0, ptr %i2, align 4, !dbg !65, !tbaa !19 - call void @llvm.lifetime.start.p0(i64 4, ptr %i3), !dbg !66 + call void @llvm.lifetime.start.p0(ptr %i3), !dbg !66 call void @llvm.dbg.declare(metadata ptr %i3, metadata !60, metadata !DIExpression()), !dbg !67 store i32 0, ptr %i3, align 4, !dbg !67, !tbaa !19 br label %bb7, !dbg !66 @@ -78,7 +78,7 @@ bb7: ; preds = %bb25, %bb bb10: ; preds = %bb7 call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 3, i32 0, i64 -1), !dbg !72 - call void @llvm.lifetime.end.p0(i64 4, ptr %i3), !dbg !72 + call void @llvm.lifetime.end.p0(ptr %i3), !dbg !72 br label %bb28 bb12: ; preds = %bb7 @@ -119,16 +119,16 @@ bb28: ; preds = %bb10 call void @llvm.pseudoprobe(i64 -2624081020897602054, i64 9, i32 0, i64 -1), !dbg !92 %i29 = load i32, ptr %i2, align 4, !dbg !92, !tbaa !19 %i30 = call i32 (ptr, ...) @printf(ptr @.str, i32 %i29), !dbg !93 - call void @llvm.lifetime.end.p0(i64 4, ptr %i2), !dbg !95 - call void @llvm.lifetime.end.p0(i64 8, ptr %i1), !dbg !95 + call void @llvm.lifetime.end.p0(ptr %i2), !dbg !95 + call void @llvm.lifetime.end.p0(ptr %i1), !dbg !95 ret i32 0, !dbg !96 } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 declare dso_local i32 @printf(ptr, ...) diff --git a/llvm/test/Transforms/SampleProfile/pseudo-probe-profile-mismatch.ll b/llvm/test/Transforms/SampleProfile/pseudo-probe-profile-mismatch.ll index 22317e60cd081..e1d717c63e9ed 100644 --- a/llvm/test/Transforms/SampleProfile/pseudo-probe-profile-mismatch.ll +++ b/llvm/test/Transforms/SampleProfile/pseudo-probe-profile-mismatch.ll @@ -70,14 +70,14 @@ define dso_local i32 @foo(i32 noundef %x) #0 !dbg !16 { entry: %y = alloca i32, align 4 call void @llvm.dbg.value(metadata i32 %x, metadata !20, metadata !DIExpression()), !dbg !22 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %y), !dbg !23 + call void @llvm.lifetime.start.p0(ptr nonnull %y), !dbg !23 call void @llvm.dbg.declare(metadata ptr %y, metadata !21, metadata !DIExpression()), !dbg !24 call void @llvm.pseudoprobe(i64 6699318081062747564, i64 1, i32 0, i64 -1), !dbg !25 %add = add nsw i32 %x, 1, !dbg !26 store volatile i32 %add, ptr %y, align 4, !dbg !24, !tbaa !27 %y.0. = load volatile i32, ptr %y, align 4, !dbg !31, !tbaa !27 %add1 = add nsw i32 %y.0., 1, !dbg !32 - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %y), !dbg !33 + call void @llvm.lifetime.end.p0(ptr nonnull %y), !dbg !33 ret i32 %add1, !dbg !34 } @@ -85,10 +85,10 @@ entry: declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 ; Function Attrs: argmemonly mustprogress nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly mustprogress nocallback nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 ; Function Attrs: noinline nounwind uwtable define dso_local i32 @bar(i32 noundef %x) #3 !dbg !35 { diff --git a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-matching-LCS.ll b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-matching-LCS.ll index cdd365b6fb673..c0976dea3c580 100644 --- a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-matching-LCS.ll +++ b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-matching-LCS.ll @@ -119,10 +119,10 @@ if.end: ; preds = %if.else, %if.then } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.start.p0(ptr nocapture) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.end.p0(ptr nocapture) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.pseudoprobe(i64, i64, i32, i64) #4 diff --git a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-matching.ll b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-matching.ll index 20be0c2fec7f2..0c38d9cad4520 100644 --- a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-matching.ll +++ b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-matching.ll @@ -217,10 +217,10 @@ for.end: ; preds = %cleanup, %if.then } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #4 +declare void @llvm.lifetime.start.p0(ptr nocapture) #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #4 +declare void @llvm.lifetime.end.p0(ptr nocapture) #4 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare void @llvm.dbg.assign(metadata, metadata, metadata, metadata, metadata, metadata) #1 diff --git a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-name-similarity.ll b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-name-similarity.ll index 4e435f4586465..dbf3dda46ee28 100644 --- a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-name-similarity.ll +++ b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-name-similarity.ll @@ -57,10 +57,10 @@ for.body: ; preds = %for.cond } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) #2 +declare void @llvm.lifetime.start.p0(ptr captures(none)) #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) #2 +declare void @llvm.lifetime.end.p0(ptr captures(none)) #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.pseudoprobe(i64, i64, i32, i64) #3 diff --git a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-renaming-recursive.ll b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-renaming-recursive.ll index d9db804b56364..e246d260c60e0 100644 --- a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-renaming-recursive.ll +++ b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-renaming-recursive.ll @@ -70,13 +70,13 @@ for.body: ; preds = %for.cond } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind speculatable willreturn memory(none) declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.pseudoprobe(i64, i64, i32, i64) #3 diff --git a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-renaming.ll b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-renaming.ll index 6bf09ced6aad1..d1c5a9d9bc2a3 100644 --- a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-renaming.ll +++ b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-renaming.ll @@ -175,10 +175,10 @@ for.body: ; preds = %for.cond } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.start.p0(ptr nocapture) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #3 +declare void @llvm.lifetime.end.p0(ptr nocapture) #3 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.pseudoprobe(i64, i64, i32, i64) #4 diff --git a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-toplev-func.ll b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-toplev-func.ll index c839364f23553..2ed187227e186 100644 --- a/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-toplev-func.ll +++ b/llvm/test/Transforms/SampleProfile/pseudo-probe-stale-profile-toplev-func.ll @@ -85,10 +85,10 @@ for.body: ; preds = %for.cond } ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 ; Function Attrs: mustprogress nocallback nofree nosync nounwind willreturn memory(inaccessiblemem: readwrite) declare void @llvm.pseudoprobe(i64, i64, i32, i64) #3 diff --git a/llvm/test/Transforms/SampleProfile/remarks.ll b/llvm/test/Transforms/SampleProfile/remarks.ll index 9c0143ae65ca7..3cb91b717c6ef 100644 --- a/llvm/test/Transforms/SampleProfile/remarks.ll +++ b/llvm/test/Transforms/SampleProfile/remarks.ll @@ -121,10 +121,10 @@ define i64 @_Z3foov() #0 !dbg !4 { entry: %sum = alloca i64, align 8 %i = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 8, ptr %sum) #4, !dbg !19 + call void @llvm.lifetime.start.p0(ptr %sum) #4, !dbg !19 call void @llvm.dbg.declare(metadata ptr %sum, metadata !9, metadata !20), !dbg !21 store i64 0, ptr %sum, align 8, !dbg !21, !tbaa !22 - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #4, !dbg !26 + call void @llvm.lifetime.start.p0(ptr %i) #4, !dbg !26 call void @llvm.dbg.declare(metadata ptr %i, metadata !10, metadata !20), !dbg !27 store i32 0, ptr %i, align 4, !dbg !27, !tbaa !28 br label %for.cond, !dbg !26 @@ -135,7 +135,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !35 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #4, !dbg !36 + call void @llvm.lifetime.end.p0(ptr %i) #4, !dbg !36 br label %for.end for.body: ; preds = %for.cond @@ -173,12 +173,12 @@ for.inc: ; preds = %if.end for.end: ; preds = %for.cond.cleanup %7 = load i64, ptr %sum, align 8, !dbg !53, !tbaa !22 - call void @llvm.lifetime.end.p0(i64 8, ptr %sum) #4, !dbg !54 + call void @llvm.lifetime.end.p0(ptr %sum) #4, !dbg !54 ret i64 %7, !dbg !55 } ; Function Attrs: nounwind argmemonly -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nounwind readnone declare void @llvm.dbg.declare(metadata, metadata, metadata) #2 @@ -189,7 +189,7 @@ define i32 @rand() #3 !dbg !59 { } ; Function Attrs: nounwind argmemonly -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define i32 @main() #0 !dbg !13 { diff --git a/llvm/test/Transforms/SimplifyCFG/X86/critedge-assume.ll b/llvm/test/Transforms/SimplifyCFG/X86/critedge-assume.ll index 58ca8df8ff6d6..99e908e01bf8d 100644 --- a/llvm/test/Transforms/SimplifyCFG/X86/critedge-assume.ll +++ b/llvm/test/Transforms/SimplifyCFG/X86/critedge-assume.ll @@ -56,7 +56,7 @@ while.end: ret void } -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare i32 @_ZNK1F5beginEv(ptr) @@ -68,7 +68,7 @@ declare noalias nonnull ptr @_Znwm(i64) declare void @_ZN1B6appendEv(ptr) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare i1 @llvm.type.test(ptr, metadata) diff --git a/llvm/test/Transforms/SimplifyCFG/X86/empty-cleanuppad.ll b/llvm/test/Transforms/SimplifyCFG/X86/empty-cleanuppad.ll index 162a3ab4ee003..1499eecbebca1 100644 --- a/llvm/test/Transforms/SimplifyCFG/X86/empty-cleanuppad.ll +++ b/llvm/test/Transforms/SimplifyCFG/X86/empty-cleanuppad.ll @@ -437,7 +437,7 @@ define i32 @f9() personality ptr @__CxxFrameHandler3 { ; CHECK-LABEL: @f9( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[S:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr nonnull [[S]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[S]]) ; CHECK-NEXT: invoke void @"\01??1S2@@QEAA@XZ"(ptr [[S]]) ; CHECK-NEXT: to label [[TRY_CONT:%.*]] unwind label [[CATCH_DISPATCH:%.*]] ; CHECK: catch.dispatch: @@ -450,13 +450,13 @@ define i32 @f9() personality ptr @__CxxFrameHandler3 { ; entry: %s = alloca i8, align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %s) + call void @llvm.lifetime.start.p0(ptr nonnull %s) invoke void @"\01??1S2@@QEAA@XZ"(ptr %s) to label %try.cont unwind label %ehcleanup ehcleanup: %cleanup.pad = cleanuppad within none [] - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %s) + call void @llvm.lifetime.end.p0(ptr nonnull %s) cleanupret from %cleanup.pad unwind label %catch.dispatch catch.dispatch: @@ -534,7 +534,7 @@ invoke.cont2: ; preds = %invoke.cont ehcleanup: ; preds = %invoke.cont, %entry %0 = cleanuppad within none [] - call void @llvm.lifetime.end.p0(i64 16, ptr nonnull %x) + call void @llvm.lifetime.end.p0(ptr nonnull %x) cleanupret from %0 unwind label %catch.dispatch catch.dispatch: ; preds = %ehcleanup, %invoke.cont @@ -556,8 +556,8 @@ declare void @use_x(i32 %x) declare i32 @__CxxFrameHandler3(...) -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) ;. ; CHECK: attributes #[[ATTR0:[0-9]+]] = { nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) } ;. diff --git a/llvm/test/Transforms/SimplifyCFG/X86/invalidate-dom.ll b/llvm/test/Transforms/SimplifyCFG/X86/invalidate-dom.ll index a937d9c65017a..ce58e9365db20 100644 --- a/llvm/test/Transforms/SimplifyCFG/X86/invalidate-dom.ll +++ b/llvm/test/Transforms/SimplifyCFG/X86/invalidate-dom.ll @@ -79,10 +79,10 @@ for.body: ; preds = %for.cond declare i32 @c(...) #0 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 attributes #0 = { "use-soft-float"="false" } attributes #1 = { "target-cpu"="x86-64" } diff --git a/llvm/test/Transforms/SimplifyCFG/X86/sink-common-code.ll b/llvm/test/Transforms/SimplifyCFG/X86/sink-common-code.ll index 62351d766e749..6129e3b957e17 100644 --- a/llvm/test/Transforms/SimplifyCFG/X86/sink-common-code.ll +++ b/llvm/test/Transforms/SimplifyCFG/X86/sink-common-code.ll @@ -1338,10 +1338,10 @@ define i32 @test_not_sink_lifetime_marker(i1 zeroext %flag, i32 %x) { ; CHECK-NEXT: [[Z:%.*]] = alloca i32, align 4 ; CHECK-NEXT: br i1 [[FLAG:%.*]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]] ; CHECK: if.then: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[Y]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[Y]]) ; CHECK-NEXT: br label [[IF_END:%.*]] ; CHECK: if.else: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[Z]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[Z]]) ; CHECK-NEXT: br label [[IF_END]] ; CHECK: if.end: ; CHECK-NEXT: ret i32 1 @@ -1352,11 +1352,11 @@ entry: br i1 %flag, label %if.then, label %if.else if.then: - call void @llvm.lifetime.end.p0(i64 4, ptr %y) + call void @llvm.lifetime.end.p0(ptr %y) br label %if.end if.else: - call void @llvm.lifetime.end.p0(i64 4, ptr %z) + call void @llvm.lifetime.end.p0(ptr %z) br label %if.end if.end: @@ -1468,8 +1468,8 @@ declare void @direct_callee() declare void @direct_callee2() declare void @direct_callee3() -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define void @creating_too_many_phis(i1 %cond, i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32 %g, i32 %h) { ; CHECK-LABEL: @creating_too_many_phis( diff --git a/llvm/test/Transforms/SimplifyCFG/common-code-hoisting.ll b/llvm/test/Transforms/SimplifyCFG/common-code-hoisting.ll index a4303995d2633..307501db02b87 100644 --- a/llvm/test/Transforms/SimplifyCFG/common-code-hoisting.ll +++ b/llvm/test/Transforms/SimplifyCFG/common-code-hoisting.ll @@ -39,8 +39,8 @@ declare void @f0() declare void @f1() declare void @f2() -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) define void @_Z4loopi(i1 %cmp) { ; HOIST-LABEL: @_Z4loopi( diff --git a/llvm/test/Transforms/SimplifyCFG/invoke_unwind_lifetime.ll b/llvm/test/Transforms/SimplifyCFG/invoke_unwind_lifetime.ll index ea14b170a51e8..40e9a4984e312 100644 --- a/llvm/test/Transforms/SimplifyCFG/invoke_unwind_lifetime.ll +++ b/llvm/test/Transforms/SimplifyCFG/invoke_unwind_lifetime.ll @@ -1,8 +1,8 @@ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --check-globals ; RUN: opt < %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | FileCheck %s -declare void @llvm.lifetime.start.p0(i64, ptr) -declare void @llvm.lifetime.end.p0(i64, ptr) +declare void @llvm.lifetime.start.p0(ptr) +declare void @llvm.lifetime.end.p0(ptr) declare void @escape(ptr) @@ -15,16 +15,16 @@ define void @caller(i1 %c) personality ptr @__gxx_personality_v0 { ; CHECK-LABEL: @caller( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[I0:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[I0]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[I0]]) ; CHECK-NEXT: call void @escape(ptr [[I0]]) ; CHECK-NEXT: [[I2:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[I2]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[I2]]) ; CHECK-NEXT: call void @escape(ptr [[I2]]) ; CHECK-NEXT: [[I4:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[I4]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[I4]]) ; CHECK-NEXT: call void @escape(ptr [[I4]]) ; CHECK-NEXT: [[I6:%.*]] = alloca i32, align 4 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[I6]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[I6]]) ; CHECK-NEXT: call void @escape(ptr [[I6]]) ; CHECK-NEXT: br i1 [[C:%.*]], label [[V0:%.*]], label [[V1:%.*]] ; CHECK: v0: @@ -36,19 +36,19 @@ define void @caller(i1 %c) personality ptr @__gxx_personality_v0 { ; entry: %i0 = alloca i32 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %i0) + call void @llvm.lifetime.start.p0(ptr nonnull %i0) call void @escape(ptr %i0) %i2 = alloca i32 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %i2) + call void @llvm.lifetime.start.p0(ptr nonnull %i2) call void @escape(ptr %i2) %i4 = alloca i32 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %i4) + call void @llvm.lifetime.start.p0(ptr nonnull %i4) call void @escape(ptr %i4) %i6 = alloca i32 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %i6) + call void @llvm.lifetime.start.p0(ptr nonnull %i6) call void @escape(ptr %i6) br i1 %c, label %v0, label %v1 @@ -66,14 +66,14 @@ invoke.cont: lpad.v0: %i8 = landingpad { ptr, i32 } cleanup - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %i0) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %i4) + call void @llvm.lifetime.end.p0(ptr nonnull %i0) + call void @llvm.lifetime.end.p0(ptr nonnull %i4) br label %end lpad.v1: %i9 = landingpad { ptr, i32 } cleanup - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %i2) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %i6) + call void @llvm.lifetime.end.p0(ptr nonnull %i2) + call void @llvm.lifetime.end.p0(ptr nonnull %i6) br label %end end: diff --git a/llvm/test/Transforms/SimplifyCFG/lifetime-landingpad.ll b/llvm/test/Transforms/SimplifyCFG/lifetime-landingpad.ll index 0174eb149581c..88395a0600101 100644 --- a/llvm/test/Transforms/SimplifyCFG/lifetime-landingpad.ll +++ b/llvm/test/Transforms/SimplifyCFG/lifetime-landingpad.ll @@ -5,32 +5,32 @@ define void @foo() personality ptr @__gxx_personality_v0 { ; CHECK-LABEL: @foo( ; CHECK-NEXT: entry: ; CHECK-NEXT: [[A:%.*]] = alloca i8, align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr nonnull [[A]]) #[[ATTR1:[0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[A]]) #[[ATTR1:[0-9]+]] ; CHECK-NEXT: call void @bar() -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[A]]) #[[ATTR1]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[A]]) #[[ATTR1]] ; CHECK-NEXT: ret void ; entry: %a = alloca i8 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %a) nounwind + call void @llvm.lifetime.start.p0(ptr nonnull %a) nounwind invoke void @bar() to label %invoke.cont unwind label %lpad invoke.cont: - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %a) nounwind + call void @llvm.lifetime.end.p0(ptr nonnull %a) nounwind ret void lpad: %b = landingpad { ptr, i32 } cleanup - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %a) nounwind + call void @llvm.lifetime.end.p0(ptr nonnull %a) nounwind resume { ptr, i32 } %b } declare void @bar() -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind declare i32 @__gxx_personality_v0(...) ;. diff --git a/llvm/test/Transforms/SimplifyCFG/lifetime.ll b/llvm/test/Transforms/SimplifyCFG/lifetime.ll index d6bba2c3c2e9a..fac0b616e44f2 100644 --- a/llvm/test/Transforms/SimplifyCFG/lifetime.ll +++ b/llvm/test/Transforms/SimplifyCFG/lifetime.ll @@ -10,11 +10,11 @@ define void @foo(i1 %x) { entry: %a = alloca i8 - call void @llvm.lifetime.start.p0(i64 -1, ptr %a) nounwind + call void @llvm.lifetime.start.p0(ptr %a) nounwind br i1 %x, label %bb0, label %bb1 bb0: - call void @llvm.lifetime.end.p0(i64 -1, ptr %a) nounwind + call void @llvm.lifetime.end.p0(ptr %a) nounwind br label %bb1 bb1: @@ -24,6 +24,6 @@ bb1: declare void @f() -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.start.p0(ptr nocapture) nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) nounwind +declare void @llvm.lifetime.end.p0(ptr nocapture) nounwind diff --git a/llvm/test/Transforms/SimplifyCFG/pr50060-constantfold-loopid.ll b/llvm/test/Transforms/SimplifyCFG/pr50060-constantfold-loopid.ll index 55f1c014c476e..19e1c73cfcba2 100644 --- a/llvm/test/Transforms/SimplifyCFG/pr50060-constantfold-loopid.ll +++ b/llvm/test/Transforms/SimplifyCFG/pr50060-constantfold-loopid.ll @@ -22,7 +22,7 @@ define dso_local void @_Z6test01v() addrspace(1) #0 { ; CHECK: do.body: ; CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr @C, align 4, !tbaa [[TBAA2:![0-9]+]] ; CHECK-NEXT: [[INC:%.*]] = add nsw i32 [[TMP0]], 1 -; CHECK-NEXT: call addrspace(1) void @llvm.lifetime.start.p0(i64 4, ptr [[J]]) #[[ATTR2:[0-9]+]] +; CHECK-NEXT: call addrspace(1) void @llvm.lifetime.start.p0(ptr [[J]]) #[[ATTR2:[0-9]+]] ; CHECK-NEXT: store i32 0, ptr [[J]], align 4, !tbaa [[TBAA2]] ; CHECK-NEXT: br label [[FOR_COND:%.*]] ; CHECK: for.cond: @@ -30,11 +30,11 @@ define dso_local void @_Z6test01v() addrspace(1) #0 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP1]], 3 ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call addrspace(1) void @llvm.lifetime.end.p0(i64 4, ptr [[J]]) #[[ATTR2]] +; CHECK-NEXT: call addrspace(1) void @llvm.lifetime.end.p0(ptr [[J]]) #[[ATTR2]] ; CHECK-NEXT: br label [[DO_BODY]], !llvm.loop [[LOOP6:![0-9]+]] ; CHECK: for.body: ; CHECK-NEXT: store i32 undef, ptr [[I]], align 4 -; CHECK-NEXT: call addrspace(1) void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2]] +; CHECK-NEXT: call addrspace(1) void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2]] ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !tbaa [[TBAA2]] ; CHECK-NEXT: br label [[FOR_COND1:%.*]] ; CHECK: for.cond1: @@ -43,7 +43,7 @@ define dso_local void @_Z6test01v() addrspace(1) #0 { ; CHECK-NEXT: [[CMP2:%.*]] = icmp slt i32 [[TMP2]], [[TMP3]] ; CHECK-NEXT: br i1 [[CMP2]], label [[FOR_BODY4:%.*]], label [[FOR_COND_CLEANUP3:%.*]] ; CHECK: for.cond.cleanup3: -; CHECK-NEXT: call addrspace(1) void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]] +; CHECK-NEXT: call addrspace(1) void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]] ; CHECK-NEXT: [[TMP4:%.*]] = load i32, ptr [[J]], align 4, !tbaa [[TBAA2]] ; CHECK-NEXT: [[INC7:%.*]] = add nsw i32 [[TMP4]], 1 ; CHECK-NEXT: store i32 [[INC7]], ptr [[J]], align 4, !tbaa [[TBAA2]] @@ -64,7 +64,7 @@ entry: do.body: ; preds = %do.cond, %entry %0 = load i32, ptr @C, align 4, !tbaa !2 %inc = add nsw i32 %0, 1 - call addrspace(1) void @llvm.lifetime.start.p0(i64 4, ptr %j) #2 + call addrspace(1) void @llvm.lifetime.start.p0(ptr %j) #2 store i32 0, ptr %j, align 4, !tbaa !2 br label %for.cond @@ -74,12 +74,12 @@ for.cond: ; preds = %for.inc6, %do.body br i1 %cmp, label %for.body, label %for.cond.cleanup for.cond.cleanup: ; preds = %for.cond - call addrspace(1) void @llvm.lifetime.end.p0(i64 4, ptr %j) #2 + call addrspace(1) void @llvm.lifetime.end.p0(ptr %j) #2 br label %for.end8 for.body: ; preds = %for.cond store i32 undef, ptr %i, align 4 - call addrspace(1) void @llvm.lifetime.start.p0(i64 4, ptr %i) #2 + call addrspace(1) void @llvm.lifetime.start.p0(ptr %i) #2 store i32 0, ptr %i, align 4, !tbaa !2 br label %for.cond1 @@ -90,7 +90,7 @@ for.cond1: ; preds = %for.inc, %for.body br i1 %cmp2, label %for.body4, label %for.cond.cleanup3 for.cond.cleanup3: ; preds = %for.cond1 - call addrspace(1) void @llvm.lifetime.end.p0(i64 4, ptr %i) #2 + call addrspace(1) void @llvm.lifetime.end.p0(ptr %i) #2 br label %for.end for.body4: ; preds = %for.cond1 @@ -124,10 +124,10 @@ do.end: ; preds = %do.cond } ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) addrspace(1) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) addrspace(1) #1 ; Function Attrs: argmemonly nofree nosync nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) addrspace(1) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) addrspace(1) #1 attributes #0 = { nounwind "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="true" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } attributes #1 = { argmemonly nofree nosync nounwind willreturn } diff --git a/llvm/test/Transforms/SimplifyCFG/sink-and-convert-switch.ll b/llvm/test/Transforms/SimplifyCFG/sink-and-convert-switch.ll index 87d64932ef093..0014b91dc95bc 100644 --- a/llvm/test/Transforms/SimplifyCFG/sink-and-convert-switch.ll +++ b/llvm/test/Transforms/SimplifyCFG/sink-and-convert-switch.ll @@ -8,16 +8,16 @@ define void @pr104567(i8 %x, ptr %f) { ; CHECK-SAME: i8 [[X:%.*]], ptr [[F:%.*]]) { ; CHECK-NEXT: [[START:.*:]] ; CHECK-NEXT: [[Y:%.*]] = alloca [1 x i8], align 1 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 1, ptr nonnull [[Y]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[Y]]) ; CHECK-NEXT: [[SWITCH_OFFSET:%.*]] = add nsw i8 [[X]], 4 ; CHECK-NEXT: store i8 [[SWITCH_OFFSET]], ptr [[Y]], align 1 ; CHECK-NEXT: call void [[F]](ptr [[Y]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 1, ptr nonnull [[Y]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[Y]]) ; CHECK-NEXT: ret void ; start: %y = alloca [1 x i8], align 1 - call void @llvm.lifetime.start.p0(i64 1, ptr nonnull %y) + call void @llvm.lifetime.start.p0(ptr nonnull %y) switch i8 %x, label %default.unreachable [ i8 0, label %bb4 i8 1, label %bb3 @@ -41,7 +41,7 @@ bb2: bb5: call void %f(ptr %y) - call void @llvm.lifetime.end.p0(i64 1, ptr nonnull %y) + call void @llvm.lifetime.end.p0(ptr nonnull %y) ret void } diff --git a/llvm/test/Transforms/SimplifyCFG/tail-merge-noreturn.ll b/llvm/test/Transforms/SimplifyCFG/tail-merge-noreturn.ll index 10e4870d504e3..77ce7300e6752 100644 --- a/llvm/test/Transforms/SimplifyCFG/tail-merge-noreturn.ll +++ b/llvm/test/Transforms/SimplifyCFG/tail-merge-noreturn.ll @@ -315,8 +315,8 @@ cont3: ; from sharing stack slots for x and y. declare void @escape_i32_ptr(ptr) -declare void @llvm.lifetime.start(i64, ptr nocapture) -declare void @llvm.lifetime.end(i64, ptr nocapture) +declare void @llvm.lifetime.start(ptr nocapture) +declare void @llvm.lifetime.end(ptr nocapture) define void @dont_merge_lifetimes(i32 %c1, i32 %c2) { ; CHECK-LABEL: @dont_merge_lifetimes( @@ -328,7 +328,7 @@ define void @dont_merge_lifetimes(i32 %c1, i32 %c2) { ; CHECK-NEXT: i32 42, label [[IF_THEN3:%.*]] ; CHECK-NEXT: ] ; CHECK: if.then: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[X]]) ; CHECK-NEXT: store i32 0, ptr [[X]], align 4 ; CHECK-NEXT: [[TOBOOL:%.*]] = icmp eq i32 [[C2:%.*]], 0 ; CHECK-NEXT: br i1 [[TOBOOL]], label [[IF_END:%.*]], label [[IF_THEN1:%.*]] @@ -336,11 +336,11 @@ define void @dont_merge_lifetimes(i32 %c1, i32 %c2) { ; CHECK-NEXT: call void @escape_i32_ptr(ptr nonnull [[X]]) ; CHECK-NEXT: br label [[IF_END]] ; CHECK: if.end: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[X]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[X]]) ; CHECK-NEXT: call void @abort() ; CHECK-NEXT: unreachable ; CHECK: if.then3: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[Y]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[Y]]) ; CHECK-NEXT: store i32 0, ptr [[Y]], align 4 ; CHECK-NEXT: [[TOBOOL5:%.*]] = icmp eq i32 [[C2]], 0 ; CHECK-NEXT: br i1 [[TOBOOL5]], label [[IF_END7:%.*]], label [[IF_THEN6:%.*]] @@ -348,7 +348,7 @@ define void @dont_merge_lifetimes(i32 %c1, i32 %c2) { ; CHECK-NEXT: call void @escape_i32_ptr(ptr nonnull [[Y]]) ; CHECK-NEXT: br label [[IF_END7]] ; CHECK: if.end7: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[Y]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[Y]]) ; CHECK-NEXT: call void @abort() ; CHECK-NEXT: unreachable ; CHECK: if.end9: @@ -363,7 +363,7 @@ entry: ] if.then: ; preds = %entry - call void @llvm.lifetime.start(i64 4, ptr nonnull %x) + call void @llvm.lifetime.start(ptr nonnull %x) store i32 0, ptr %x, align 4 %tobool = icmp eq i32 %c2, 0 br i1 %tobool, label %if.end, label %if.then1 @@ -373,12 +373,12 @@ if.then1: ; preds = %if.then br label %if.end if.end: ; preds = %if.then1, %if.then - call void @llvm.lifetime.end(i64 4, ptr nonnull %x) + call void @llvm.lifetime.end(ptr nonnull %x) call void @abort() unreachable if.then3: ; preds = %entry - call void @llvm.lifetime.start(i64 4, ptr nonnull %y) + call void @llvm.lifetime.start(ptr nonnull %y) store i32 0, ptr %y, align 4 %tobool5 = icmp eq i32 %c2, 0 br i1 %tobool5, label %if.end7, label %if.then6 @@ -388,7 +388,7 @@ if.then6: ; preds = %if.then3 br label %if.end7 if.end7: ; preds = %if.then6, %if.then3 - call void @llvm.lifetime.end(i64 4, ptr nonnull %y) + call void @llvm.lifetime.end(ptr nonnull %y) call void @abort() unreachable diff --git a/llvm/test/Transforms/TailCallElim/tre-byval-parameter-2.ll b/llvm/test/Transforms/TailCallElim/tre-byval-parameter-2.ll index 325db79ebbd7e..fa771ad01f3c3 100644 --- a/llvm/test/Transforms/TailCallElim/tre-byval-parameter-2.ll +++ b/llvm/test/Transforms/TailCallElim/tre-byval-parameter-2.ll @@ -44,17 +44,17 @@ define dso_local void @_Z7dostuff1AS_i(ptr nocapture byval(%struct.A) align 8 %a ; CHECK-NEXT: [[ARRAYIDX4:%.*]] = getelementptr inbounds [[STRUCT_A]], ptr [[B]], i64 0, i32 0, i64 5 ; CHECK-NEXT: [[TMP1:%.*]] = load i64, ptr [[ARRAYIDX4]], align 8 ; CHECK-NEXT: [[CALL:%.*]] = tail call i32 (ptr, ...) @printf(ptr nonnull dereferenceable(1) @.str, i64 [[INC]], i64 [[TMP1]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 80, ptr nonnull [[AGG_TMP]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[AGG_TMP]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(80) [[AGG_TMP]], ptr nonnull align 8 dereferenceable(80) [[B]], i64 80, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 80, ptr nonnull [[AGG_TMP5]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[AGG_TMP5]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(80) [[AGG_TMP5]], ptr nonnull align 8 dereferenceable(80) [[A]], i64 80, i1 false) ; CHECK-NEXT: [[ADD]] = add nsw i32 [[I_TR]], 1 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[AGG_TMP1]], ptr align 8 [[AGG_TMP]], i64 80, i1 false) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[AGG_TMP52]], ptr align 8 [[AGG_TMP5]], i64 80, i1 false) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[A]], ptr align 8 [[AGG_TMP1]], i64 80, i1 false) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[B]], ptr align 8 [[AGG_TMP52]], i64 80, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 80, ptr nonnull [[AGG_TMP]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 80, ptr nonnull [[AGG_TMP5]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[AGG_TMP]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[AGG_TMP5]]) ; CHECK-NEXT: br label [[TAILRECURSE]] ; CHECK: return: ; CHECK-NEXT: ret void @@ -74,14 +74,14 @@ if.end: ; preds = %entry %1 = load i64, ptr %arrayidx4, align 8 %call = call i32 (ptr, ...) @printf(ptr nonnull dereferenceable(1) @.str , i64 %inc, i64 %1) - call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %agg.tmp) + call void @llvm.lifetime.start.p0(ptr nonnull %agg.tmp) call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(80) %agg.tmp, ptr nonnull align 8 dereferenceable(80) %b, i64 80, i1 false) - call void @llvm.lifetime.start.p0(i64 80, ptr nonnull %agg.tmp5) + call void @llvm.lifetime.start.p0(ptr nonnull %agg.tmp5) call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(80) %agg.tmp5, ptr nonnull align 8 dereferenceable(80) %a, i64 80, i1 false) %add = add nsw i32 %i, 1 call void @_Z7dostuff1AS_i(ptr nonnull byval(%struct.A) align 8 %agg.tmp, ptr nonnull byval(%struct.A) align 8 %agg.tmp5, i32 %add) - call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %agg.tmp) - call void @llvm.lifetime.end.p0(i64 80, ptr nonnull %agg.tmp5) + call void @llvm.lifetime.end.p0(ptr nonnull %agg.tmp) + call void @llvm.lifetime.end.p0(ptr nonnull %agg.tmp5) br label %return return: ; preds = %entry, %if.end @@ -95,10 +95,10 @@ declare dso_local noundef i32 @printf(ptr nocapture noundef readonly, ...) local declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 ; Function Attrs: noinline norecurse nounwind optnone uwtable define dso_local i32 @main() local_unnamed_addr #3 { diff --git a/llvm/test/Transforms/TailCallElim/tre-byval-parameter.ll b/llvm/test/Transforms/TailCallElim/tre-byval-parameter.ll index 256fb04b3ba1d..dedd0811bea51 100644 --- a/llvm/test/Transforms/TailCallElim/tre-byval-parameter.ll +++ b/llvm/test/Transforms/TailCallElim/tre-byval-parameter.ll @@ -44,14 +44,14 @@ define dso_local i32 @_Z3fooi1S(i32 %count, ptr nocapture readonly byval(%struct ; CHECK: if.end: ; CHECK-NEXT: [[ADD]] = add nsw i32 [[COUNT_TR]], 1 ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(20) [[AGG_TMP1]], ptr nonnull align 8 dereferenceable(20) [[P1]], i64 20, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr nonnull [[AGG_TMP14]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 20, ptr nonnull [[AGG_TMP_I]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[AGG_TMP14]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[AGG_TMP_I]]) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(20) [[AGG_TMP14]], ptr nonnull align 8 dereferenceable(20) [[AGG_TMP1]], i64 20, i1 false) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(20) [[AGG_TMP_I]], ptr nonnull align 8 dereferenceable(20) [[AGG_TMP14]], i64 20, i1 false) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[AGG_TMP_I1]], ptr align 8 [[AGG_TMP_I]], i64 20, i1 false) ; CHECK-NEXT: call void @llvm.memcpy.p0.p0.i64(ptr align 8 [[P1]], ptr align 8 [[AGG_TMP_I1]], i64 20, i1 false) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr nonnull [[AGG_TMP14]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 20, ptr nonnull [[AGG_TMP_I]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[AGG_TMP14]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[AGG_TMP_I]]) ; CHECK-NEXT: br label [[TAILRECURSE]] ; CHECK: return: ; CHECK-NEXT: ret i32 [[CALL]] @@ -72,13 +72,13 @@ if.then: ; preds = %entry if.end: ; preds = %entry %add = add nsw i32 %count, 1 call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(20) %agg.tmp1, ptr nonnull align 8 dereferenceable(20) %p1, i64 20, i1 false) - call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %agg.tmp14) - call void @llvm.lifetime.start.p0(i64 20, ptr nonnull %agg.tmp.i) + call void @llvm.lifetime.start.p0(ptr nonnull %agg.tmp14) + call void @llvm.lifetime.start.p0(ptr nonnull %agg.tmp.i) call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(20) %agg.tmp14, ptr nonnull align 8 dereferenceable(20) %agg.tmp1, i64 20, i1 false) call void @llvm.memcpy.p0.p0.i64(ptr nonnull align 8 dereferenceable(20) %agg.tmp.i, ptr nonnull align 8 dereferenceable(20) %agg.tmp14, i64 20, i1 false) %call.i = call i32 @_Z3fooi1S(i32 %add, ptr nonnull byval(%struct.S) align 8 %agg.tmp.i) - call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %agg.tmp14) - call void @llvm.lifetime.end.p0(i64 20, ptr nonnull %agg.tmp.i) + call void @llvm.lifetime.end.p0(ptr nonnull %agg.tmp14) + call void @llvm.lifetime.end.p0(ptr nonnull %agg.tmp.i) br label %return return: ; preds = %if.end, %if.then @@ -89,10 +89,10 @@ return: ; preds = %if.end, %if.then declare dso_local i32 @_Z3zoo1S(ptr byval(%struct.S) align 8) local_unnamed_addr #1 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 ; Function Attrs: argmemonly nounwind willreturn declare void @llvm.memcpy.p0.p0.i64(ptr noalias nocapture writeonly, ptr noalias nocapture readonly, i64, i1 immarg) #2 diff --git a/llvm/test/Transforms/TailCallElim/tre-multiple-exits.ll b/llvm/test/Transforms/TailCallElim/tre-multiple-exits.ll index 293deca00f7fa..b77ae9c9c7495 100644 --- a/llvm/test/Transforms/TailCallElim/tre-multiple-exits.ll +++ b/llvm/test/Transforms/TailCallElim/tre-multiple-exits.ll @@ -49,11 +49,11 @@ define dso_local void @_Z19test_multiple_exitsi(i32 %param) local_unnamed_addr # ; CHECK-NEXT: [[TMP0:%.*]] = icmp ult i32 [[PARAM_TR]], 10 ; CHECK-NEXT: br i1 [[TMP0]], label [[IF_THEN:%.*]], label [[IF_ELSE:%.*]] ; CHECK: if.then: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[TEMP]]) #1 +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TEMP]]) #1 ; CHECK-NEXT: call void @_Z11capture_argPi(ptr nonnull [[TEMP]]) ; CHECK-NEXT: [[ADD:%.*]] = add nuw nsw i32 [[PARAM_TR]], 1 ; CHECK-NEXT: call void @_Z19test_multiple_exitsi(i32 [[ADD]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[TEMP]]) #1 +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TEMP]]) #1 ; CHECK-NEXT: br label [[IF_END14:%.*]] ; CHECK: if.else: ; CHECK-NEXT: [[PARAM_OFF:%.*]] = add i32 [[PARAM_TR]], -10 @@ -80,11 +80,11 @@ entry: br i1 %0, label %if.then, label %if.else if.then: ; preds = %entry - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %temp) #2 + call void @llvm.lifetime.start.p0(ptr nonnull %temp) #2 call void @_Z11capture_argPi(ptr nonnull %temp) %add = add nuw nsw i32 %param, 1 call void @_Z19test_multiple_exitsi(i32 %add) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %temp) #2 + call void @llvm.lifetime.end.p0(ptr nonnull %temp) #2 br label %if.end14 if.else: ; preds = %entry @@ -113,10 +113,10 @@ if.end14: ; preds = %if.then5, %if.then1 } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 attributes #0 = { nofree noinline norecurse nounwind uwtable } attributes #1 = { nounwind uwtable } diff --git a/llvm/test/Transforms/TailCallElim/tre-noncapturing-alloca-calls.ll b/llvm/test/Transforms/TailCallElim/tre-noncapturing-alloca-calls.ll index c9ac9a5d480f2..2f1adedbf7b77 100644 --- a/llvm/test/Transforms/TailCallElim/tre-noncapturing-alloca-calls.ll +++ b/llvm/test/Transforms/TailCallElim/tre-noncapturing-alloca-calls.ll @@ -34,11 +34,11 @@ define dso_local void @_Z4testi(i32 %recurseCount) local_unnamed_addr #1 { ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i32 [[RECURSECOUNT_TR]], 0 ; CHECK-NEXT: br i1 [[CMP]], label [[RETURN:%.*]], label [[IF_END]] ; CHECK: if.end: -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr nonnull [[TEMP]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr nonnull [[TEMP]]) ; CHECK-NEXT: store i32 10, ptr [[TEMP]], align 4 ; CHECK-NEXT: call void @_Z15globalIncrementPKi(ptr nonnull [[TEMP]]) ; CHECK-NEXT: [[SUB]] = add nsw i32 [[RECURSECOUNT_TR]], -1 -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr nonnull [[TEMP]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr nonnull [[TEMP]]) ; CHECK-NEXT: br label [[TAILRECURSE]] ; CHECK: return: ; CHECK-NEXT: ret void @@ -49,12 +49,12 @@ entry: br i1 %cmp, label %return, label %if.end if.end: ; preds = %entry - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %temp) #6 + call void @llvm.lifetime.start.p0(ptr nonnull %temp) #6 store i32 10, ptr %temp, align 4 call void @_Z15globalIncrementPKi(ptr nonnull %temp) %sub = add nsw i32 %recurseCount, -1 call void @_Z4testi(i32 %sub) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %temp) #6 + call void @llvm.lifetime.end.p0(ptr nonnull %temp) #6 br label %return return: ; preds = %entry, %if.end @@ -62,10 +62,10 @@ return: ; preds = %entry, %if.end } ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.start.p0(ptr nocapture) #2 ; Function Attrs: argmemonly nounwind willreturn -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #2 +declare void @llvm.lifetime.end.p0(ptr nocapture) #2 attributes #0 = { nofree noinline norecurse nounwind uwtable } attributes #1 = { nounwind uwtable } diff --git a/llvm/test/Transforms/Util/PredicateInfo/pr33456.ll b/llvm/test/Transforms/Util/PredicateInfo/pr33456.ll index 14bfbb12f5ada..36eaf6e66578d 100644 --- a/llvm/test/Transforms/Util/PredicateInfo/pr33456.ll +++ b/llvm/test/Transforms/Util/PredicateInfo/pr33456.ll @@ -61,8 +61,8 @@ define i32 @main() { } ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) ; Function Attrs: argmemonly nounwind -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) diff --git a/llvm/test/Transforms/Util/dbg-call-bitcast.ll b/llvm/test/Transforms/Util/dbg-call-bitcast.ll index d8d80ab0f457a..f0c579cbd80ca 100644 --- a/llvm/test/Transforms/Util/dbg-call-bitcast.ll +++ b/llvm/test/Transforms/Util/dbg-call-bitcast.ll @@ -2,7 +2,7 @@ define dso_local void @_Z1fv() { %1 = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) + call void @llvm.lifetime.start.p0(ptr nonnull %1) call void @llvm.dbg.declare(metadata ptr %1, metadata !16, metadata !DIExpression()), !dbg !19 ; CHECK: %[[A:.*]] = alloca i32, align 4 ; CHECK: #dbg_value(ptr %[[A]], {{.*}}, !DIExpression(DW_OP_deref) @@ -11,13 +11,13 @@ define dso_local void @_Z1fv() { ; CHECK-NOT: #dbg_value ; CHECK: call void @_Z1gPv call void @_Z1gPv(ptr nonnull %1) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) + call void @llvm.lifetime.end.p0(ptr nonnull %1) ret void, !dbg !21 } define dso_local void @_Z2fv() { %1 = alloca i32, align 4 - call void @llvm.lifetime.start.p0(i64 4, ptr nonnull %1) + call void @llvm.lifetime.start.p0(ptr nonnull %1) call void @llvm.dbg.declare(metadata ptr %1, metadata !16, metadata !DIExpression()), !dbg !19 ; CHECK: %[[A:.*]] = alloca i32, align 4 ; CHECK: #dbg_value(ptr %[[A]], {{.*}}, !DIExpression(DW_OP_deref) @@ -29,14 +29,14 @@ block2: ; CHECK: #dbg_value(ptr %[[A]], {{.*}}, !DIExpression(DW_OP_deref) ; CHECK: call void @_Z1gPv call void @_Z1gPv(ptr nonnull %1) - call void @llvm.lifetime.end.p0(i64 4, ptr nonnull %1) + call void @llvm.lifetime.end.p0(ptr nonnull %1) ret void, !dbg !21 } -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) declare void @llvm.dbg.declare(metadata, metadata, metadata) declare dso_local void @_Z1gPv(ptr) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) !llvm.dbg.cu = !{!0} !llvm.module.flags = !{!8, !9, !10} diff --git a/llvm/test/Verifier/intrinsic-immarg.ll b/llvm/test/Verifier/intrinsic-immarg.ll index c1bb9323b8701..d5aef3dcbbfe0 100644 --- a/llvm/test/Verifier/intrinsic-immarg.ll +++ b/llvm/test/Verifier/intrinsic-immarg.ll @@ -163,26 +163,6 @@ define void @test_scatter_8i32(<8 x i32> %a1, <8 x ptr> %ptr, <8 x i1> %mask, i3 ret void } -declare void @llvm.lifetime.start.p0(i64, ptr) -define void @test_lifetime_start(i64 %arg0) { - ; CHECK: immarg operand has non-immediate parameter - ; CHECK-NEXT: i64 %arg0 - ; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 %arg0, ptr %ptr) - %ptr = alloca i64 - call void @llvm.lifetime.start.p0(i64 %arg0, ptr %ptr) - ret void -} - -declare void @llvm.lifetime.end.p0(i64, ptr) -define void @test_lifetime_end(i64 %arg0) { - ; CHECK: immarg operand has non-immediate parameter - ; CHECK-NEXT: i64 %arg0 - ; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 %arg0, ptr %ptr) - %ptr = alloca i64 - call void @llvm.lifetime.end.p0(i64 %arg0, ptr %ptr) - ret void -} - declare ptr @llvm.invariant.start.p0(i64, ptr) define void @test_invariant_start(i64 %arg0, ptr %ptr) { ; CHECK: immarg operand has non-immediate parameter diff --git a/llvm/test/Verifier/opaque-ptr.ll b/llvm/test/Verifier/opaque-ptr.ll index 10e43a45e5740..3ac90448228be 100644 --- a/llvm/test/Verifier/opaque-ptr.ll +++ b/llvm/test/Verifier/opaque-ptr.ll @@ -40,13 +40,13 @@ define void @atomicrmw(ptr %a, i32 %i) { define void @opaque_mangle() { ; CHECK-LABEL: @opaque_mangle( ; CHECK-NEXT: [[A:%.*]] = alloca i64, align 8 -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 8, ptr [[A]]) -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 8, ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[A]]) +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[A]]) ; CHECK-NEXT: ret void ; %a = alloca i64 - call void @llvm.lifetime.start.p0(i64 8, ptr %a) - call void @llvm.lifetime.end.p0(i64 8, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -65,10 +65,8 @@ define void @intrinsic_calls(ptr %a) { ret void } -; CHECK: @llvm.lifetime.start.p0 -; CHECK: @llvm.lifetime.end.p0 -declare void @llvm.lifetime.start.p0(i64, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare <2 x i32> @llvm.masked.load.v2i32.p0(ptr, i32, <2 x i1>, <2 x i32>) declare void @llvm.masked.store.v2i32.p0(<2 x i32>, ptr, i32, <2 x i1>) diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll index 96ff2d7ea5fed..ef601189855b4 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll @@ -14,7 +14,7 @@ entry: #dbg_assign(i1 undef, !13, !DIExpression(), !16, ptr %A.addr, !DIExpression(), !17) store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !13, !DIExpression(), !17) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !22 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !22 #dbg_declare(ptr %i, !14, !DIExpression(), !23) store i32 0, ptr %i, align 4, !dbg !23, !tbaa !24 br label %for.cond, !dbg !22 @@ -27,7 +27,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !31, !prof !32 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !33 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !33 br label %for.end for.body: ; preds = %for.cond @@ -49,10 +49,10 @@ for.end: ; preds = %for.cond.cleanup } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define dso_local void @bar(ptr %A) #0 !dbg !41 { @@ -61,7 +61,7 @@ entry: %i = alloca i32, align 4 store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !43, !DIExpression(), !46) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !47 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !47 #dbg_declare(ptr %i, !44, !DIExpression(), !48) store i32 0, ptr %i, align 4, !dbg !48, !tbaa !24 br label %for.cond, !dbg !47 @@ -74,7 +74,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !54 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !55 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !55 br label %for.end for.body: ; preds = %for.cond diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.expected index 65048305a2277..4bae52e7b3815 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.expected +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.expected @@ -16,7 +16,7 @@ define dso_local void @foo(ptr %A) #0 !dbg !7 { ; CHECK-NEXT: #dbg_assign(i1 undef, [[META13:![0-9]+]], !DIExpression(), [[DIASSIGNID16]], ptr [[A_ADDR]], !DIExpression(), [[META17:![0-9]+]]) ; CHECK-NEXT: store ptr [[A:%.*]], ptr [[A_ADDR]], align 8, !tbaa [[TBAA18:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[A_ADDR]], [[META13]], !DIExpression(), [[META17]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2:[0-9]+]], !dbg [[DBG22:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2:[0-9]+]], !dbg [[DBG22:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[I]], [[META14:![0-9]+]], !DIExpression(), [[META23:![0-9]+]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !dbg [[META23]], !tbaa [[TBAA24:![0-9]+]] ; CHECK-NEXT: br label [[FOR_COND:%.*]], !dbg [[DBG22]] @@ -27,7 +27,7 @@ define dso_local void @foo(ptr %A) #0 !dbg !7 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP0]], [[TMP2]], !dbg [[DBG30:![0-9]+]] ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]], !dbg [[DBG31:![0-9]+]], !prof [[PROF32:![0-9]+]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG33:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG33:![0-9]+]] ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A_ADDR]], align 8, !dbg [[DBG34:![0-9]+]], !tbaa [[TBAA18]] @@ -50,7 +50,7 @@ entry: #dbg_assign(i1 undef, !13, !DIExpression(), !16, ptr %A.addr, !DIExpression(), !17) store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !13, !DIExpression(), !17) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !22 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !22 #dbg_declare(ptr %i, !14, !DIExpression(), !23) store i32 0, ptr %i, align 4, !dbg !23, !tbaa !24 br label %for.cond, !dbg !22 @@ -63,7 +63,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !31, !prof !32 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !33 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !33 br label %for.end for.body: ; preds = %for.cond @@ -85,10 +85,10 @@ for.end: ; preds = %for.cond.cleanup } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define dso_local void @bar(ptr %A) #0 !dbg !41 { @@ -98,7 +98,7 @@ define dso_local void @bar(ptr %A) #0 !dbg !41 { ; CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 ; CHECK-NEXT: store ptr [[A:%.*]], ptr [[A_ADDR]], align 8, !tbaa [[TBAA18]] ; CHECK-NEXT: #dbg_declare(ptr [[A_ADDR]], [[META43:![0-9]+]], !DIExpression(), [[META46:![0-9]+]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG47:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG47:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[I]], [[META44:![0-9]+]], !DIExpression(), [[META48:![0-9]+]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !dbg [[META48]], !tbaa [[TBAA24]] ; CHECK-NEXT: br label [[FOR_COND:%.*]], !dbg [[DBG47]] @@ -109,7 +109,7 @@ define dso_local void @bar(ptr %A) #0 !dbg !41 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP0]], [[TMP2]], !dbg [[DBG53:![0-9]+]] ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]], !dbg [[DBG54:![0-9]+]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG55:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG55:![0-9]+]] ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A_ADDR]], align 8, !dbg [[DBG56:![0-9]+]], !tbaa [[TBAA18]] @@ -131,7 +131,7 @@ entry: %i = alloca i32, align 4 store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !43, !DIExpression(), !46) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !47 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !47 #dbg_declare(ptr %i, !44, !DIExpression(), !48) store i32 0, ptr %i, align 4, !dbg !48, !tbaa !24 br label %for.cond, !dbg !47 @@ -144,7 +144,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !54 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !55 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !55 br label %for.end for.body: ; preds = %for.cond diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.expected index 7c1ea5e716b99..12c6e4eee0147 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.expected +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.expected @@ -17,7 +17,7 @@ define dso_local void @foo(ptr %A) #0 !dbg !7 { ; CHECK-NEXT: #dbg_assign(i1 undef, [[META13:![0-9]+]], !DIExpression(), [[DIASSIGNID16]], ptr [[A_ADDR]], !DIExpression(), [[META17:![0-9]+]]) ; CHECK-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8, !tbaa [[TBAA18:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[A_ADDR]], [[META13]], !DIExpression(), [[META17]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2:[0-9]+]], !dbg [[DBG22:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2:[0-9]+]], !dbg [[DBG22:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[I]], [[META14:![0-9]+]], !DIExpression(), [[META23:![0-9]+]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !dbg [[META23]], !tbaa [[TBAA24:![0-9]+]] ; CHECK-NEXT: br label [[FOR_COND:%.*]], !dbg [[DBG22]] @@ -28,7 +28,7 @@ define dso_local void @foo(ptr %A) #0 !dbg !7 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP0]], [[TMP2]], !dbg [[DBG30:![0-9]+]] ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]], !dbg [[DBG31:![0-9]+]], !prof [[PROF32:![0-9]+]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG33:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG33:![0-9]+]] ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A_ADDR]], align 8, !dbg [[DBG34:![0-9]+]], !tbaa [[TBAA18]] @@ -51,7 +51,7 @@ entry: #dbg_assign(i1 undef, !13, !DIExpression(), !16, ptr %A.addr, !DIExpression(), !17) store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !13, !DIExpression(), !17) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !22 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !22 #dbg_declare(ptr %i, !14, !DIExpression(), !23) store i32 0, ptr %i, align 4, !dbg !23, !tbaa !24 br label %for.cond, !dbg !22 @@ -64,7 +64,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !31, !prof !32 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !33 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !33 br label %for.end for.body: ; preds = %for.cond @@ -86,10 +86,10 @@ for.end: ; preds = %for.cond.cleanup } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define dso_local void @bar(ptr %A) #0 !dbg !41 { @@ -100,7 +100,7 @@ define dso_local void @bar(ptr %A) #0 !dbg !41 { ; CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 ; CHECK-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8, !tbaa [[TBAA18]] ; CHECK-NEXT: #dbg_declare(ptr [[A_ADDR]], [[META43:![0-9]+]], !DIExpression(), [[META46:![0-9]+]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG47:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG47:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[I]], [[META44:![0-9]+]], !DIExpression(), [[META48:![0-9]+]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !dbg [[META48]], !tbaa [[TBAA24]] ; CHECK-NEXT: br label [[FOR_COND:%.*]], !dbg [[DBG47]] @@ -111,7 +111,7 @@ define dso_local void @bar(ptr %A) #0 !dbg !41 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP0]], [[TMP2]], !dbg [[DBG53:![0-9]+]] ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]], !dbg [[DBG54:![0-9]+]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG55:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG55:![0-9]+]] ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A_ADDR]], align 8, !dbg [[DBG56:![0-9]+]], !tbaa [[TBAA18]] @@ -133,7 +133,7 @@ entry: %i = alloca i32, align 4 store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !43, !DIExpression(), !46) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !47 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !47 #dbg_declare(ptr %i, !44, !DIExpression(), !48) store i32 0, ptr %i, align 4, !dbg !48, !tbaa !24 br label %for.cond, !dbg !47 @@ -146,7 +146,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !54 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !55 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !55 br label %for.end for.body: ; preds = %for.cond diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.globals.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.globals.expected index 94af952353a3c..d67a303236369 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.globals.expected +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.globals.expected @@ -17,7 +17,7 @@ define dso_local void @foo(ptr %A) #0 !dbg !7 { ; CHECK-NEXT: #dbg_assign(i1 undef, [[META13:![0-9]+]], !DIExpression(), [[DIASSIGNID16]], ptr [[A_ADDR]], !DIExpression(), [[META17:![0-9]+]]) ; CHECK-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8, !tbaa [[TBAA18:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[A_ADDR]], [[META13]], !DIExpression(), [[META17]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2:[0-9]+]], !dbg [[DBG22:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2:[0-9]+]], !dbg [[DBG22:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[I]], [[META14:![0-9]+]], !DIExpression(), [[META23:![0-9]+]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !dbg [[META23]], !tbaa [[TBAA24:![0-9]+]] ; CHECK-NEXT: br label [[FOR_COND:%.*]], !dbg [[DBG22]] @@ -28,7 +28,7 @@ define dso_local void @foo(ptr %A) #0 !dbg !7 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP0]], [[TMP2]], !dbg [[DBG30:![0-9]+]] ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]], !dbg [[DBG31:![0-9]+]], !prof [[PROF32:![0-9]+]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG33:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG33:![0-9]+]] ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A_ADDR]], align 8, !dbg [[DBG34:![0-9]+]], !tbaa [[TBAA18]] @@ -51,7 +51,7 @@ entry: #dbg_assign(i1 undef, !13, !DIExpression(), !16, ptr %A.addr, !DIExpression(), !17) store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !13, !DIExpression(), !17) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !22 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !22 #dbg_declare(ptr %i, !14, !DIExpression(), !23) store i32 0, ptr %i, align 4, !dbg !23, !tbaa !24 br label %for.cond, !dbg !22 @@ -64,7 +64,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !31, !prof !32 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !33 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !33 br label %for.end for.body: ; preds = %for.cond @@ -86,10 +86,10 @@ for.end: ; preds = %for.cond.cleanup } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define dso_local void @bar(ptr %A) #0 !dbg !41 { @@ -100,7 +100,7 @@ define dso_local void @bar(ptr %A) #0 !dbg !41 { ; CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 ; CHECK-NEXT: store ptr [[A]], ptr [[A_ADDR]], align 8, !tbaa [[TBAA18]] ; CHECK-NEXT: #dbg_declare(ptr [[A_ADDR]], [[META43:![0-9]+]], !DIExpression(), [[META46:![0-9]+]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG47:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG47:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[I]], [[META44:![0-9]+]], !DIExpression(), [[META48:![0-9]+]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !dbg [[META48]], !tbaa [[TBAA24]] ; CHECK-NEXT: br label [[FOR_COND:%.*]], !dbg [[DBG47]] @@ -111,7 +111,7 @@ define dso_local void @bar(ptr %A) #0 !dbg !41 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP0]], [[TMP2]], !dbg [[DBG53:![0-9]+]] ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]], !dbg [[DBG54:![0-9]+]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG55:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG55:![0-9]+]] ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A_ADDR]], align 8, !dbg [[DBG56:![0-9]+]], !tbaa [[TBAA18]] @@ -133,7 +133,7 @@ entry: %i = alloca i32, align 4 store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !43, !DIExpression(), !46) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !47 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !47 #dbg_declare(ptr %i, !44, !DIExpression(), !48) store i32 0, ptr %i, align 4, !dbg !48, !tbaa !24 br label %for.cond, !dbg !47 @@ -146,7 +146,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !54 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !55 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !55 br label %for.end for.body: ; preds = %for.cond diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.noglobals.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.noglobals.expected index 65048305a2277..4bae52e7b3815 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.noglobals.expected +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.noglobals.expected @@ -16,7 +16,7 @@ define dso_local void @foo(ptr %A) #0 !dbg !7 { ; CHECK-NEXT: #dbg_assign(i1 undef, [[META13:![0-9]+]], !DIExpression(), [[DIASSIGNID16]], ptr [[A_ADDR]], !DIExpression(), [[META17:![0-9]+]]) ; CHECK-NEXT: store ptr [[A:%.*]], ptr [[A_ADDR]], align 8, !tbaa [[TBAA18:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[A_ADDR]], [[META13]], !DIExpression(), [[META17]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2:[0-9]+]], !dbg [[DBG22:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2:[0-9]+]], !dbg [[DBG22:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[I]], [[META14:![0-9]+]], !DIExpression(), [[META23:![0-9]+]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !dbg [[META23]], !tbaa [[TBAA24:![0-9]+]] ; CHECK-NEXT: br label [[FOR_COND:%.*]], !dbg [[DBG22]] @@ -27,7 +27,7 @@ define dso_local void @foo(ptr %A) #0 !dbg !7 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP0]], [[TMP2]], !dbg [[DBG30:![0-9]+]] ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]], !dbg [[DBG31:![0-9]+]], !prof [[PROF32:![0-9]+]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG33:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG33:![0-9]+]] ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A_ADDR]], align 8, !dbg [[DBG34:![0-9]+]], !tbaa [[TBAA18]] @@ -50,7 +50,7 @@ entry: #dbg_assign(i1 undef, !13, !DIExpression(), !16, ptr %A.addr, !DIExpression(), !17) store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !13, !DIExpression(), !17) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !22 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !22 #dbg_declare(ptr %i, !14, !DIExpression(), !23) store i32 0, ptr %i, align 4, !dbg !23, !tbaa !24 br label %for.cond, !dbg !22 @@ -63,7 +63,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !31, !prof !32 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !33 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !33 br label %for.end for.body: ; preds = %for.cond @@ -85,10 +85,10 @@ for.end: ; preds = %for.cond.cleanup } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define dso_local void @bar(ptr %A) #0 !dbg !41 { @@ -98,7 +98,7 @@ define dso_local void @bar(ptr %A) #0 !dbg !41 { ; CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 ; CHECK-NEXT: store ptr [[A:%.*]], ptr [[A_ADDR]], align 8, !tbaa [[TBAA18]] ; CHECK-NEXT: #dbg_declare(ptr [[A_ADDR]], [[META43:![0-9]+]], !DIExpression(), [[META46:![0-9]+]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG47:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG47:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[I]], [[META44:![0-9]+]], !DIExpression(), [[META48:![0-9]+]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !dbg [[META48]], !tbaa [[TBAA24]] ; CHECK-NEXT: br label [[FOR_COND:%.*]], !dbg [[DBG47]] @@ -109,7 +109,7 @@ define dso_local void @bar(ptr %A) #0 !dbg !41 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP0]], [[TMP2]], !dbg [[DBG53:![0-9]+]] ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]], !dbg [[DBG54:![0-9]+]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG55:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG55:![0-9]+]] ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A_ADDR]], align 8, !dbg [[DBG56:![0-9]+]], !tbaa [[TBAA18]] @@ -131,7 +131,7 @@ entry: %i = alloca i32, align 4 store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !43, !DIExpression(), !46) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !47 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !47 #dbg_declare(ptr %i, !44, !DIExpression(), !48) store i32 0, ptr %i, align 4, !dbg !48, !tbaa !24 br label %for.cond, !dbg !47 @@ -144,7 +144,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !54 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !55 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !55 br label %for.end for.body: ; preds = %for.cond diff --git a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.transitiveglobals.expected b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.transitiveglobals.expected index a656c4aefa0e1..fb3a76f305e6a 100644 --- a/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.transitiveglobals.expected +++ b/llvm/test/tools/UpdateTestChecks/update_test_checks/Inputs/various_ir_values_dbgrecords.ll.funcsig.transitiveglobals.expected @@ -16,7 +16,7 @@ define dso_local void @foo(ptr %A) #0 !dbg !7 { ; CHECK-NEXT: #dbg_assign(i1 undef, [[META13:![0-9]+]], !DIExpression(), [[DIASSIGNID16]], ptr [[A_ADDR]], !DIExpression(), [[META17:![0-9]+]]) ; CHECK-NEXT: store ptr [[A:%.*]], ptr [[A_ADDR]], align 8, !tbaa [[TBAA18:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[A_ADDR]], [[META13]], !DIExpression(), [[META17]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2:[0-9]+]], !dbg [[DBG22:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2:[0-9]+]], !dbg [[DBG22:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[I]], [[META14:![0-9]+]], !DIExpression(), [[META23:![0-9]+]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !dbg [[META23]], !tbaa [[TBAA24:![0-9]+]] ; CHECK-NEXT: br label [[FOR_COND:%.*]], !dbg [[DBG22]] @@ -27,7 +27,7 @@ define dso_local void @foo(ptr %A) #0 !dbg !7 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP0]], [[TMP2]], !dbg [[DBG30:![0-9]+]] ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]], !dbg [[DBG31:![0-9]+]], !prof [[PROF32:![0-9]+]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG33:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG33:![0-9]+]] ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A_ADDR]], align 8, !dbg [[DBG34:![0-9]+]], !tbaa [[TBAA18]] @@ -50,7 +50,7 @@ entry: #dbg_assign(i1 undef, !13, !DIExpression(), !16, ptr %A.addr, !DIExpression(), !17) store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !13, !DIExpression(), !17) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !22 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !22 #dbg_declare(ptr %i, !14, !DIExpression(), !23) store i32 0, ptr %i, align 4, !dbg !23, !tbaa !24 br label %for.cond, !dbg !22 @@ -63,7 +63,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !31, !prof !32 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !33 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !33 br label %for.end for.body: ; preds = %for.cond @@ -85,10 +85,10 @@ for.end: ; preds = %for.cond.cleanup } ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.start.p0(ptr nocapture) #1 ; Function Attrs: nocallback nofree nosync nounwind willreturn memory(argmem: readwrite) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) #1 +declare void @llvm.lifetime.end.p0(ptr nocapture) #1 ; Function Attrs: nounwind uwtable define dso_local void @bar(ptr %A) #0 !dbg !41 { @@ -98,7 +98,7 @@ define dso_local void @bar(ptr %A) #0 !dbg !41 { ; CHECK-NEXT: [[I:%.*]] = alloca i32, align 4 ; CHECK-NEXT: store ptr [[A:%.*]], ptr [[A_ADDR]], align 8, !tbaa [[TBAA18]] ; CHECK-NEXT: #dbg_declare(ptr [[A_ADDR]], [[META43:![0-9]+]], !DIExpression(), [[META46:![0-9]+]]) -; CHECK-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG47:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.start.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG47:![0-9]+]] ; CHECK-NEXT: #dbg_declare(ptr [[I]], [[META44:![0-9]+]], !DIExpression(), [[META48:![0-9]+]]) ; CHECK-NEXT: store i32 0, ptr [[I]], align 4, !dbg [[META48]], !tbaa [[TBAA24]] ; CHECK-NEXT: br label [[FOR_COND:%.*]], !dbg [[DBG47]] @@ -109,7 +109,7 @@ define dso_local void @bar(ptr %A) #0 !dbg !41 { ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[TMP0]], [[TMP2]], !dbg [[DBG53:![0-9]+]] ; CHECK-NEXT: br i1 [[CMP]], label [[FOR_BODY:%.*]], label [[FOR_COND_CLEANUP:%.*]], !dbg [[DBG54:![0-9]+]] ; CHECK: for.cond.cleanup: -; CHECK-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr [[I]]) #[[ATTR2]], !dbg [[DBG55:![0-9]+]] +; CHECK-NEXT: call void @llvm.lifetime.end.p0(ptr [[I]]) #[[ATTR2]], !dbg [[DBG55:![0-9]+]] ; CHECK-NEXT: br label [[FOR_END:%.*]] ; CHECK: for.body: ; CHECK-NEXT: [[TMP3:%.*]] = load ptr, ptr [[A_ADDR]], align 8, !dbg [[DBG56:![0-9]+]], !tbaa [[TBAA18]] @@ -131,7 +131,7 @@ entry: %i = alloca i32, align 4 store ptr %A, ptr %A.addr, align 8, !tbaa !18 #dbg_declare(ptr %A.addr, !43, !DIExpression(), !46) - call void @llvm.lifetime.start.p0(i64 4, ptr %i) #2, !dbg !47 + call void @llvm.lifetime.start.p0(ptr %i) #2, !dbg !47 #dbg_declare(ptr %i, !44, !DIExpression(), !48) store i32 0, ptr %i, align 4, !dbg !48, !tbaa !24 br label %for.cond, !dbg !47 @@ -144,7 +144,7 @@ for.cond: ; preds = %for.inc, %entry br i1 %cmp, label %for.body, label %for.cond.cleanup, !dbg !54 for.cond.cleanup: ; preds = %for.cond - call void @llvm.lifetime.end.p0(i64 4, ptr %i) #2, !dbg !55 + call void @llvm.lifetime.end.p0(ptr %i) #2, !dbg !55 br label %for.end for.body: ; preds = %for.cond diff --git a/llvm/test/tools/llvm-reduce/operands-to-args-lifetimes.ll b/llvm/test/tools/llvm-reduce/operands-to-args-lifetimes.ll index d9ed9dff02b6e..5db1989968455 100644 --- a/llvm/test/tools/llvm-reduce/operands-to-args-lifetimes.ll +++ b/llvm/test/tools/llvm-reduce/operands-to-args-lifetimes.ll @@ -4,15 +4,15 @@ ; INTERESTING: store ; REDUCED: define void @test(ptr %a) { ; REDUCED-NEXT: %a1 = alloca i32 -; REDUCED-NEXT: call void @llvm.lifetime.start.p0(i64 4, ptr %a1) +; REDUCED-NEXT: call void @llvm.lifetime.start.p0(ptr %a1) ; REDUCED-NEXT: store i32 0, ptr %a ; REDUCED-NEXT: store i32 1, ptr %a -; REDUCED-NEXT: call void @llvm.lifetime.end.p0(i64 4, ptr %a1) +; REDUCED-NEXT: call void @llvm.lifetime.end.p0(ptr %a1) define void @test() { %a = alloca i32 - call void @llvm.lifetime.start.p0(i64 4, ptr %a) + call void @llvm.lifetime.start.p0(ptr %a) store i32 0, ptr %a store i32 1, ptr %a - call void @llvm.lifetime.end.p0(i64 4, ptr %a) + call void @llvm.lifetime.end.p0(ptr %a) ret void } diff --git a/llvm/test/tools/llvm-reduce/reduce-operands-alloca.ll b/llvm/test/tools/llvm-reduce/reduce-operands-alloca.ll index b68f7182feaa2..75b152fadd09e 100644 --- a/llvm/test/tools/llvm-reduce/reduce-operands-alloca.ll +++ b/llvm/test/tools/llvm-reduce/reduce-operands-alloca.ll @@ -69,13 +69,13 @@ define void @alloca_constexpr_elt() { } ; CHECK-LABEL: @alloca_lifetimes( -; ZERO: call void @llvm.lifetime.start.p0(i64 4, ptr %alloca) -; ONE: call void @llvm.lifetime.start.p0(i64 4, ptr %alloca) -; POISON: call void @llvm.lifetime.start.p0(i64 4, ptr %alloca) +; ZERO: call void @llvm.lifetime.start.p0(ptr %alloca) +; ONE: call void @llvm.lifetime.start.p0(ptr %alloca) +; POISON: call void @llvm.lifetime.start.p0(ptr %alloca) define void @alloca_lifetimes() { %alloca = alloca i32 - call void @llvm.lifetime.start.p0(i64 4, ptr %alloca) + call void @llvm.lifetime.start.p0(ptr %alloca) store i32 0, ptr %alloca - call void @llvm.lifetime.end.p0(i64 4, ptr %alloca) + call void @llvm.lifetime.end.p0(ptr %alloca) ret void } diff --git a/llvm/unittests/Analysis/MemorySSATest.cpp b/llvm/unittests/Analysis/MemorySSATest.cpp index 1a9296f042578..fceefbcec1ef1 100644 --- a/llvm/unittests/Analysis/MemorySSATest.cpp +++ b/llvm/unittests/Analysis/MemorySSATest.cpp @@ -1092,8 +1092,8 @@ TEST_F(MemorySSATest, LifetimeMarkersAreClobbers) { // %baz = getelementptr i8, ptr %foo, i64 2 // store i8 0, ptr %foo // store i8 0, ptr %bar - // call void @llvm.lifetime.end.p0(i64 3, ptr %foo) - // call void @llvm.lifetime.start.p0(i64 3, ptr %foo) + // call void @llvm.lifetime.end.p0(ptr %foo) + // call void @llvm.lifetime.start.p0(ptr %foo) // store i8 0, ptr %foo // store i8 0, ptr %bar // call void @llvm.memset.p0i8(ptr %baz, i8 0, i64 1) diff --git a/llvm/unittests/IR/IRBuilderTest.cpp b/llvm/unittests/IR/IRBuilderTest.cpp index 4f2ede3321080..773c32e7d9b43 100644 --- a/llvm/unittests/IR/IRBuilderTest.cpp +++ b/llvm/unittests/IR/IRBuilderTest.cpp @@ -466,15 +466,11 @@ TEST_F(IRBuilderTest, Lifetime) { CallInst *Start1 = Builder.CreateLifetimeStart(Var1); CallInst *Start2 = Builder.CreateLifetimeStart(Var2); - CallInst *Start3 = Builder.CreateLifetimeStart(Var3, Builder.getInt64(100)); + CallInst *Start3 = Builder.CreateLifetimeStart(Var3); - EXPECT_EQ(Start1->getArgOperand(0), Builder.getInt64(-1)); - EXPECT_EQ(Start2->getArgOperand(0), Builder.getInt64(-1)); - EXPECT_EQ(Start3->getArgOperand(0), Builder.getInt64(100)); - - EXPECT_EQ(Start1->getArgOperand(1), Var1); - EXPECT_EQ(Start2->getArgOperand(1)->stripPointerCasts(), Var2); - EXPECT_EQ(Start3->getArgOperand(1), Var3); + EXPECT_EQ(Start1->getArgOperand(0), Var1); + EXPECT_EQ(Start2->getArgOperand(0), Var2); + EXPECT_EQ(Start3->getArgOperand(0), Var3); Value *End1 = Builder.CreateLifetimeEnd(Var1); Builder.CreateLifetimeEnd(Var2); diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td index d38298fcb2a38..76b08e664ee76 100644 --- a/mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td +++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMIntrinsicOps.td @@ -348,15 +348,11 @@ def LLVM_PtrMaskOp // Memory marker intrinsics. // -/// Base operation for lifetime markers. The LLVM intrinsics require the size -/// operand to be an immediate. In MLIR it is encoded as an attribute. -class LLVM_LifetimeBaseOp : LLVM_ZeroResultIntrOp], - /*requiresAccessGroup=*/0, /*requiresAliasAnalysis=*/0, - /*requiresArgAndResultAttrs=*/0, /*requiresOpBundles=*/0, - /*immArgPositions=*/[0], /*immArgAttrNames=*/["size"]> { - let arguments = (ins I64Attr:$size, LLVM_AnyPointer:$ptr); - let assemblyFormat = "$size `,` $ptr attr-dict `:` qualified(type($ptr))"; +/// Base operation for lifetime markers. +class LLVM_LifetimeBaseOp : LLVM_ZeroResultIntrOp]> { + let arguments = (ins LLVM_AnyPointer:$ptr); + let assemblyFormat = "$ptr attr-dict `:` qualified(type($ptr))"; } def LLVM_LifetimeStartOp : LLVM_LifetimeBaseOp<"lifetime.start">; diff --git a/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp b/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp index b951df8af3550..18f85b6f15bd4 100644 --- a/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp +++ b/mlir/lib/Dialect/LLVMIR/Transforms/InlinerInterfaceImpl.cpp @@ -129,7 +129,6 @@ handleInlinedAllocas(Operation *call, OpBuilder::InsertionGuard insertionGuard(builder); builder.setInsertionPoint(allocaOp); LLVM::LifetimeStartOp::create(builder, allocaOp.getLoc(), - arraySize.getValue().getLimitedValue(), allocaOp.getResult()); } allocaOp->moveAfter(newConstant); @@ -147,7 +146,6 @@ handleInlinedAllocas(Operation *call, for (auto &[allocaOp, arraySize, shouldInsertLifetime] : allocasToMove) { if (shouldInsertLifetime) LLVM::LifetimeEndOp::create(builder, allocaOp.getLoc(), - arraySize.getValue().getLimitedValue(), allocaOp.getResult()); } } diff --git a/mlir/test/Dialect/LLVMIR/call-intrin.mlir b/mlir/test/Dialect/LLVMIR/call-intrin.mlir index b8d845d7ebfe0..bf11e07dc1b6e 100644 --- a/mlir/test/Dialect/LLVMIR/call-intrin.mlir +++ b/mlir/test/Dialect/LLVMIR/call-intrin.mlir @@ -27,14 +27,13 @@ llvm.func @round_overloaded() -> f32 { // CHECK: define void @lifetime_start() { // CHECK: %1 = alloca float, i8 1, align 4 -// CHECK: call void @llvm.lifetime.start.p0(i64 4, ptr %1) +// CHECK: call void @llvm.lifetime.start.p0(ptr %1) // CHECK: ret void // CHECK: } llvm.func @lifetime_start() { - %0 = llvm.mlir.constant(4 : i64) : i64 - %1 = llvm.mlir.constant(1 : i8) : i8 - %2 = llvm.alloca %1 x f32 : (i8) -> !llvm.ptr - llvm.call_intrinsic "llvm.lifetime.start"(%0, %2) {} : (i64, !llvm.ptr) -> () + %0 = llvm.mlir.constant(1 : i8) : i8 + %1 = llvm.alloca %0 x f32 : (i8) -> !llvm.ptr + llvm.call_intrinsic "llvm.lifetime.start"(%1) {} : (!llvm.ptr) -> () llvm.return } diff --git a/mlir/test/Dialect/LLVMIR/inlining.mlir b/mlir/test/Dialect/LLVMIR/inlining.mlir index 551e0c97912d0..8e292f4c300d3 100644 --- a/mlir/test/Dialect/LLVMIR/inlining.mlir +++ b/mlir/test/Dialect/LLVMIR/inlining.mlir @@ -299,7 +299,7 @@ llvm.func @test_inline(%cond0 : i1, %cond1 : i1, %funcArg : f32) -> f32 { ^bb1: // Make sure the lifetime begin intrinsic has been inserted where the call // used to be, even though the alloca has been moved to the entry block. - // CHECK-NEXT: llvm.intr.lifetime.start 4, %[[PTR]] + // CHECK-NEXT: llvm.intr.lifetime.start %[[PTR]] %0 = llvm.call @static_alloca(%cond1) : (i1) -> f32 // CHECK: llvm.cond_br %{{.+}}, ^[[BB2:.+]], ^[[BB3:.+]] llvm.br ^bb3(%0: f32) @@ -307,9 +307,9 @@ llvm.func @test_inline(%cond0 : i1, %cond1 : i1, %funcArg : f32) -> f32 { // return sites of the callee. // CHECK: ^[[BB2]]: // CHECK-NEXT: llvm.load - // CHECK-NEXT: llvm.intr.lifetime.end 4, %[[PTR]] + // CHECK-NEXT: llvm.intr.lifetime.end %[[PTR]] // CHECK: ^[[BB3]]: - // CHECK-NEXT: llvm.intr.lifetime.end 4, %[[PTR]] + // CHECK-NEXT: llvm.intr.lifetime.end %[[PTR]] ^bb2: llvm.br ^bb3(%funcArg: f32) ^bb3(%blockArg: f32): @@ -334,9 +334,9 @@ llvm.func @test_inline(%cond0 : i1) { // CHECK: "test.one_region_op"() ({ "test.one_region_op"() ({ %0 = llvm.call @static_alloca() : () -> f32 - // CHECK-NEXT: llvm.intr.lifetime.start 4, %[[ALLOCA]] + // CHECK-NEXT: llvm.intr.lifetime.start %[[ALLOCA]] // CHECK-NEXT: %[[RES:.+]] = llvm.load %[[ALLOCA]] - // CHECK-NEXT: llvm.intr.lifetime.end 4, %[[ALLOCA]] + // CHECK-NEXT: llvm.intr.lifetime.end %[[ALLOCA]] // CHECK-NEXT: test.region_yield %[[RES]] test.region_yield %0 : f32 }) : () -> () @@ -368,9 +368,9 @@ llvm.func @test_inline(%cond0 : i1) { llvm.func @alloca_with_lifetime(%cond: i1) -> f32 { %0 = llvm.mlir.constant(4 : i32) : i32 %1 = llvm.alloca %0 x f32 : (i32) -> !llvm.ptr - llvm.intr.lifetime.start 4, %1 : !llvm.ptr + llvm.intr.lifetime.start %1 : !llvm.ptr %2 = llvm.load %1 : !llvm.ptr -> f32 - llvm.intr.lifetime.end 4, %1 : !llvm.ptr + llvm.intr.lifetime.end %1 : !llvm.ptr %3 = llvm.fadd %2, %2 : f32 llvm.return %3 : f32 } @@ -385,9 +385,9 @@ llvm.func @test_inline(%cond0 : i1, %cond1 : i1, %funcArg : f32) -> f32 { ^bb1: // Make sure the original lifetime intrinsic has been preserved, rather than // inserting a new one with a larger scope. - // CHECK: llvm.intr.lifetime.start 4, %[[PTR]] + // CHECK: llvm.intr.lifetime.start %[[PTR]] // CHECK-NEXT: llvm.load %[[PTR]] - // CHECK-NEXT: llvm.intr.lifetime.end 4, %[[PTR]] + // CHECK-NEXT: llvm.intr.lifetime.end %[[PTR]] // CHECK: llvm.fadd // CHECK-NOT: llvm.intr.lifetime.end %0 = llvm.call @alloca_with_lifetime(%cond1) : (i1) -> f32 diff --git a/mlir/test/Dialect/LLVMIR/mem2reg.mlir b/mlir/test/Dialect/LLVMIR/mem2reg.mlir index 56634cff87aa9..716a5860a0c07 100644 --- a/mlir/test/Dialect/LLVMIR/mem2reg.mlir +++ b/mlir/test/Dialect/LLVMIR/mem2reg.mlir @@ -304,10 +304,9 @@ llvm.func @g() // CHECK-NOT: = llvm.alloca llvm.func amdgpu_kernelcc @addrspace_discard() { %0 = llvm.mlir.constant(1 : i32) : i32 - %1 = llvm.mlir.constant(2 : i64) : i64 - %2 = llvm.alloca %0 x i8 {alignment = 8 : i64} : (i32) -> !llvm.ptr<5> - %3 = llvm.addrspacecast %2 : !llvm.ptr<5> to !llvm.ptr - llvm.intr.lifetime.start 2, %3 : !llvm.ptr + %1 = llvm.alloca %0 x i8 {alignment = 8 : i64} : (i32) -> !llvm.ptr<5> + %2 = llvm.addrspacecast %1 : !llvm.ptr<5> to !llvm.ptr + llvm.intr.lifetime.start %2 : !llvm.ptr llvm.return } @@ -406,9 +405,9 @@ llvm.func @unreachable_jumps_to_merge_point(%arg0: i1) -> i32 { llvm.func @ignore_lifetime() { %0 = llvm.mlir.constant(1 : i32) : i32 %1 = llvm.alloca %0 x i32 {alignment = 4 : i64} : (i32) -> !llvm.ptr - llvm.intr.lifetime.start 2, %1 : !llvm.ptr + llvm.intr.lifetime.start %1 : !llvm.ptr llvm.store %0, %1 {alignment = 4 : i64} : i32, !llvm.ptr - llvm.intr.lifetime.end 2, %1 : !llvm.ptr + llvm.intr.lifetime.end %1 : !llvm.ptr llvm.return } @@ -437,9 +436,9 @@ llvm.func @ignore_discardable_tree() { %5 = llvm.insertvalue %1, %4[1] : !llvm.struct<(i8, i16)> %6 = llvm.alloca %0 x !llvm.struct<(i8, i16)> {alignment = 8 : i64} : (i32) -> !llvm.ptr %7 = llvm.getelementptr %6[0, 0] : (!llvm.ptr) -> !llvm.ptr, !llvm.struct<(i8, i16)> - llvm.intr.lifetime.start 2, %7 : !llvm.ptr + llvm.intr.lifetime.start %7 : !llvm.ptr llvm.store %5, %6 {alignment = 2 : i64} : !llvm.struct<(i8, i16)>, !llvm.ptr - llvm.intr.lifetime.end 2, %7 : !llvm.ptr + llvm.intr.lifetime.end %7 : !llvm.ptr llvm.return } @@ -517,8 +516,8 @@ llvm.func @discardable_use_tree() { %2 = llvm.alloca %0 x i8 {alignment = 8 : i64} : (i32) -> !llvm.ptr %3 = llvm.bitcast %2 : !llvm.ptr to !llvm.ptr %4 = llvm.bitcast %3 : !llvm.ptr to !llvm.ptr - llvm.intr.lifetime.start 2, %3 : !llvm.ptr - llvm.intr.lifetime.start 2, %4 : !llvm.ptr + llvm.intr.lifetime.start %3 : !llvm.ptr + llvm.intr.lifetime.start %4 : !llvm.ptr %5 = llvm.intr.invariant.start 2, %3 : !llvm.ptr llvm.intr.invariant.end %5, 2, %3 : !llvm.ptr llvm.return @@ -534,8 +533,8 @@ llvm.func @non_discardable_use_tree() { %2 = llvm.alloca %0 x i8 {alignment = 8 : i64} : (i32) -> !llvm.ptr %3 = llvm.bitcast %2 : !llvm.ptr to !llvm.ptr %4 = llvm.bitcast %3 : !llvm.ptr to !llvm.ptr - llvm.intr.lifetime.start 2, %3 : !llvm.ptr - llvm.intr.lifetime.start 2, %4 : !llvm.ptr + llvm.intr.lifetime.start %3 : !llvm.ptr + llvm.intr.lifetime.start %4 : !llvm.ptr llvm.call @use(%4) : (!llvm.ptr) -> i1 llvm.return } @@ -551,8 +550,8 @@ llvm.func @trivial_get_element_ptr() { %2 = llvm.alloca %0 x i8 {alignment = 8 : i64} : (i32) -> !llvm.ptr %3 = llvm.bitcast %2 : !llvm.ptr to !llvm.ptr %4 = llvm.getelementptr %3[0] : (!llvm.ptr) -> !llvm.ptr, i8 - llvm.intr.lifetime.start 2, %3 : !llvm.ptr - llvm.intr.lifetime.start 2, %4 : !llvm.ptr + llvm.intr.lifetime.start %3 : !llvm.ptr + llvm.intr.lifetime.start %4 : !llvm.ptr llvm.return } @@ -565,8 +564,8 @@ llvm.func @nontrivial_get_element_ptr() { // CHECK: = llvm.alloca %2 = llvm.alloca %0 x i8 {alignment = 8 : i64} : (i32) -> !llvm.ptr %4 = llvm.getelementptr %2[1] : (!llvm.ptr) -> !llvm.ptr, i8 - llvm.intr.lifetime.start 2, %2 : !llvm.ptr - llvm.intr.lifetime.start 2, %4 : !llvm.ptr + llvm.intr.lifetime.start %2 : !llvm.ptr + llvm.intr.lifetime.start %4 : !llvm.ptr llvm.return } @@ -580,8 +579,8 @@ llvm.func @dynamic_get_element_ptr() { %2 = llvm.alloca %0 x i8 {alignment = 8 : i64} : (i32) -> !llvm.ptr %3 = llvm.bitcast %2 : !llvm.ptr to !llvm.ptr %4 = llvm.getelementptr %3[%0] : (!llvm.ptr, i32) -> !llvm.ptr, i8 - llvm.intr.lifetime.start 2, %3 : !llvm.ptr - llvm.intr.lifetime.start 2, %4 : !llvm.ptr + llvm.intr.lifetime.start %3 : !llvm.ptr + llvm.intr.lifetime.start %4 : !llvm.ptr llvm.return } diff --git a/mlir/test/Dialect/LLVMIR/roundtrip.mlir b/mlir/test/Dialect/LLVMIR/roundtrip.mlir index a0273fb1e1bf4..73447978341dc 100644 --- a/mlir/test/Dialect/LLVMIR/roundtrip.mlir +++ b/mlir/test/Dialect/LLVMIR/roundtrip.mlir @@ -685,10 +685,10 @@ func.func @fastmathFlags(%arg0: f32, %arg1: f32, %arg2: i32, %arg3: vector<2 x f // CHECK-LABEL: @lifetime // CHECK-SAME: %[[P:.*]]: !llvm.ptr llvm.func @lifetime(%p: !llvm.ptr) { - // CHECK: llvm.intr.lifetime.start 16, %[[P]] - llvm.intr.lifetime.start 16, %p : !llvm.ptr - // CHECK: llvm.intr.lifetime.end 16, %[[P]] - llvm.intr.lifetime.end 16, %p : !llvm.ptr + // CHECK: llvm.intr.lifetime.start %[[P]] + llvm.intr.lifetime.start %p : !llvm.ptr + // CHECK: llvm.intr.lifetime.end %[[P]] + llvm.intr.lifetime.end %p : !llvm.ptr llvm.return } diff --git a/mlir/test/Dialect/LLVMIR/sroa.mlir b/mlir/test/Dialect/LLVMIR/sroa.mlir index fe1531d988a4f..1674bbd8c796f 100644 --- a/mlir/test/Dialect/LLVMIR/sroa.mlir +++ b/mlir/test/Dialect/LLVMIR/sroa.mlir @@ -177,7 +177,7 @@ llvm.func @direct_promotable_use_is_fine() -> i32 { // CHECK: %[[RES:.*]] = llvm.load %[[ALLOCA]] %3 = llvm.load %2 : !llvm.ptr -> i32 // This is a direct use of the slot but it can be removed because it implements PromotableOpInterface. - llvm.intr.lifetime.start 2, %1 : !llvm.ptr + llvm.intr.lifetime.start %1 : !llvm.ptr // CHECK: llvm.return %[[RES]] : i32 llvm.return %3 : i32 } diff --git a/mlir/test/Target/LLVMIR/Import/intrinsic-prefer-unregistered.ll b/mlir/test/Target/LLVMIR/Import/intrinsic-prefer-unregistered.ll index 797a75cceb3de..18c93191e3ae0 100644 --- a/mlir/test/Target/LLVMIR/Import/intrinsic-prefer-unregistered.ll +++ b/mlir/test/Target/LLVMIR/Import/intrinsic-prefer-unregistered.ll @@ -3,9 +3,9 @@ ; CHECK-LABEL: llvm.func @lifetime define void @lifetime() { %a = alloca [16 x i8] - ; CHECK: llvm.call_intrinsic "llvm.lifetime.start.p0"({{.*}}, %[[ptr:.*]]) : (i64, !llvm.ptr {llvm.nonnull}) -> () - call void @llvm.lifetime.start.p0(i64 16, ptr nonnull %a) - ; CHECK: llvm.call_intrinsic "llvm.lifetime.end.p0"({{.*}}, %[[ptr]]) : (i64, !llvm.ptr {llvm.nonnull}) -> () - call void @llvm.lifetime.end.p0(i64 32, ptr nonnull %a) + ; CHECK: llvm.call_intrinsic "llvm.lifetime.start.p0"(%[[ptr:.*]]) : (!llvm.ptr {llvm.nonnull}) -> () + call void @llvm.lifetime.start.p0(ptr nonnull %a) + ; CHECK: llvm.call_intrinsic "llvm.lifetime.end.p0"(%[[ptr]]) : (!llvm.ptr {llvm.nonnull}) -> () + call void @llvm.lifetime.end.p0(ptr nonnull %a) ret void } diff --git a/mlir/test/Target/LLVMIR/Import/intrinsic.ll b/mlir/test/Target/LLVMIR/Import/intrinsic.ll index a419d75be24a6..9f882ad6f22e8 100644 --- a/mlir/test/Target/LLVMIR/Import/intrinsic.ll +++ b/mlir/test/Target/LLVMIR/Import/intrinsic.ll @@ -876,10 +876,10 @@ define void @stack_restore(ptr %0, ptr addrspace(1) %1) { ; CHECK-LABEL: llvm.func @lifetime define void @lifetime() { %a = alloca [16 x i8] - ; CHECK: llvm.intr.lifetime.start 16, %{{.*}} : !llvm.ptr - call void @llvm.lifetime.start.p0(i64 16, ptr %a) - ; CHECK: llvm.intr.lifetime.end 32, %{{.*}} : !llvm.ptr - call void @llvm.lifetime.end.p0(i64 32, ptr %a) + ; CHECK: llvm.intr.lifetime.start %{{.*}} : !llvm.ptr + call void @llvm.lifetime.start.p0(ptr %a) + ; CHECK: llvm.intr.lifetime.end %{{.*}} : !llvm.ptr + call void @llvm.lifetime.end.p0(ptr %a) ret void } @@ -1353,8 +1353,8 @@ declare <8 x i64> @llvm.vp.fptoui.v8i64.v8f64(<8 x double>, <8 x i1>, i32) declare <8 x i64> @llvm.vp.fptosi.v8i64.v8f64(<8 x double>, <8 x i1>, i32) declare <8 x i64> @llvm.vp.ptrtoint.v8i64.v8p0(<8 x ptr>, <8 x i1>, i32) declare <8 x ptr> @llvm.vp.inttoptr.v8p0.v8i64(<8 x i64>, <8 x i1>, i32) -declare void @llvm.lifetime.start.p0(i64 immarg, ptr nocapture) -declare void @llvm.lifetime.end.p0(i64 immarg, ptr nocapture) +declare void @llvm.lifetime.start.p0(ptr nocapture) +declare void @llvm.lifetime.end.p0(ptr nocapture) declare ptr @llvm.invariant.start.p0(i64 immarg, ptr nocapture) declare void @llvm.invariant.end.p0(ptr, i64 immarg, ptr nocapture) declare ptr @llvm.launder.invariant.group.p0(ptr nocapture) diff --git a/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir b/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir index eb3510ca7317d..2b420ed246fb2 100644 --- a/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir +++ b/mlir/test/Target/LLVMIR/llvmir-intrinsics.mlir @@ -1104,9 +1104,9 @@ llvm.func @lifetime() { %c = llvm.mlir.constant(16 : i64) : i64 %a = llvm.alloca %c x i8 : (i64) -> !llvm.ptr // CHECK: call void @llvm.lifetime.start - llvm.intr.lifetime.start 16, %a : !llvm.ptr + llvm.intr.lifetime.start %a : !llvm.ptr // CHECK: call void @llvm.lifetime.end - llvm.intr.lifetime.end 16, %a : !llvm.ptr + llvm.intr.lifetime.end %a : !llvm.ptr llvm.return } @@ -1418,8 +1418,8 @@ llvm.func @experimental_constrained_fpext(%s: f32, %v: vector<4xf32>) { // CHECK-DAG: declare <2 x i32> @llvm.vector.extract.v2i32.v8i32(<8 x i32>, i64 immarg) // CHECK-DAG: declare { <2 x double>, <2 x double> } @llvm.vector.deinterleave2.v4f64(<4 x double>) // CHECK-DAG: declare { , } @llvm.vector.deinterleave2.nxv8i32() -// CHECK-DAG: declare void @llvm.lifetime.start.p0(i64 immarg, ptr captures(none)) -// CHECK-DAG: declare void @llvm.lifetime.end.p0(i64 immarg, ptr captures(none)) +// CHECK-DAG: declare void @llvm.lifetime.start.p0(ptr captures(none)) +// CHECK-DAG: declare void @llvm.lifetime.end.p0(ptr captures(none)) // CHECK-DAG: declare ptr @llvm.invariant.start.p0(i64 immarg, ptr captures(none)) // CHECK-DAG: declare void @llvm.invariant.end.p0(ptr, i64 immarg, ptr captures(none))