diff --git a/llvm/docs/ReleaseNotes.rst b/llvm/docs/ReleaseNotes.rst --- a/llvm/docs/ReleaseNotes.rst +++ b/llvm/docs/ReleaseNotes.rst @@ -190,6 +190,22 @@ * ``LLVMConstFNeg`` + +* The following deprecated functions have been removed, because they are + incompatible with opaque pointers. Use the new functions accepting a separate + function/element type instead. + + * ``LLVMBuildLoad`` -> ``LLVMBuildLoad2`` + * ``LLVMBuildCall`` -> ``LLVMBuildCall2`` + * ``LLVMBuildInvoke`` -> ``LLVMBuildInvoke2`` + * ``LLVMBuildGEP`` -> ``LLVMBuildGEP2`` + * ``LLVMBuildInBoundsGEP`` -> ``LLVMBuildInBoundsGEP2`` + * ``LLVMBuildStructGEP`` -> ``LLVMBuildStructGEP2`` + * ``LLVMBuildPtrDiff`` -> ``LLVMBuildPtrDiff2`` + * ``LLVMConstGEP`` -> ``LLVMConstGEP2`` + * ``LLVMConstInBoundsGEP`` -> ``LLVMConstInBoundsGEP2`` + * ``LLVMAddAlias`` -> ``LLVMAddAlias2`` + Changes to the Go bindings -------------------------- diff --git a/llvm/include/llvm-c/Core.h b/llvm/include/llvm-c/Core.h --- a/llvm/include/llvm-c/Core.h +++ b/llvm/include/llvm-c/Core.h @@ -2182,18 +2182,8 @@ LLVMValueRef LLVMConstShl(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); LLVMValueRef LLVMConstLShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); LLVMValueRef LLVMConstAShr(LLVMValueRef LHSConstant, LLVMValueRef RHSConstant); -LLVM_ATTRIBUTE_C_DEPRECATED( - LLVMValueRef LLVMConstGEP(LLVMValueRef ConstantVal, - LLVMValueRef *ConstantIndices, - unsigned NumIndices), - "Use LLVMConstGEP2 instead to support opaque pointers"); LLVMValueRef LLVMConstGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal, LLVMValueRef *ConstantIndices, unsigned NumIndices); -LLVM_ATTRIBUTE_C_DEPRECATED( - LLVMValueRef LLVMConstInBoundsGEP(LLVMValueRef ConstantVal, - LLVMValueRef *ConstantIndices, - unsigned NumIndices), - "Use LLVMConstInBoundsGEP2 instead to support opaque pointers"); LLVMValueRef LLVMConstInBoundsGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal, LLVMValueRef *ConstantIndices, unsigned NumIndices); @@ -2409,11 +2399,6 @@ * @{ */ -LLVM_ATTRIBUTE_C_DEPRECATED( - LLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, - LLVMValueRef Aliasee, const char *Name), - "Use LLVMAddAlias2 instead to support opaque pointers"); - /** * Add a GlobalAlias with the given value type, address space and aliasee. * @@ -3723,12 +3708,6 @@ LLVMBasicBlockRef Else, unsigned NumCases); LLVMValueRef LLVMBuildIndirectBr(LLVMBuilderRef B, LLVMValueRef Addr, unsigned NumDests); -LLVM_ATTRIBUTE_C_DEPRECATED( - LLVMValueRef LLVMBuildInvoke(LLVMBuilderRef, LLVMValueRef Fn, - LLVMValueRef *Args, unsigned NumArgs, - LLVMBasicBlockRef Then, - LLVMBasicBlockRef Catch, const char *Name), - "Use LLVMBuildInvoke2 instead to support opaque pointers"); LLVMValueRef LLVMBuildInvoke2(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Fn, LLVMValueRef *Args, unsigned NumArgs, LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, @@ -3922,27 +3901,9 @@ LLVMValueRef LLVMBuildArrayAlloca(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef Val, const char *Name); LLVMValueRef LLVMBuildFree(LLVMBuilderRef, LLVMValueRef PointerVal); -LLVM_ATTRIBUTE_C_DEPRECATED( - LLVMValueRef LLVMBuildLoad(LLVMBuilderRef, LLVMValueRef PointerVal, - const char *Name), - "Use LLVMBuildLoad2 instead to support opaque pointers"); LLVMValueRef LLVMBuildLoad2(LLVMBuilderRef, LLVMTypeRef Ty, LLVMValueRef PointerVal, const char *Name); LLVMValueRef LLVMBuildStore(LLVMBuilderRef, LLVMValueRef Val, LLVMValueRef Ptr); -LLVM_ATTRIBUTE_C_DEPRECATED( - LLVMValueRef LLVMBuildGEP(LLVMBuilderRef B, LLVMValueRef Pointer, - LLVMValueRef *Indices, unsigned NumIndices, - const char *Name), - "Use LLVMBuildGEP2 instead to support opaque pointers"); -LLVM_ATTRIBUTE_C_DEPRECATED( - LLVMValueRef LLVMBuildInBoundsGEP(LLVMBuilderRef B, LLVMValueRef Pointer, - LLVMValueRef *Indices, - unsigned NumIndices, const char *Name), - "Use LLVMBuildInBoundsGEP2 instead to support opaque pointers"); -LLVM_ATTRIBUTE_C_DEPRECATED( - LLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer, - unsigned Idx, const char *Name), - "Use LLVMBuildStructGEP2 instead to support opaque pointers"); LLVMValueRef LLVMBuildGEP2(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Pointer, LLVMValueRef *Indices, unsigned NumIndices, const char *Name); @@ -4025,11 +3986,6 @@ /* Miscellaneous instructions */ LLVMValueRef LLVMBuildPhi(LLVMBuilderRef, LLVMTypeRef Ty, const char *Name); -LLVM_ATTRIBUTE_C_DEPRECATED( - LLVMValueRef LLVMBuildCall(LLVMBuilderRef, LLVMValueRef Fn, - LLVMValueRef *Args, unsigned NumArgs, - const char *Name), - "Use LLVMBuildCall2 instead to support opaque pointers"); LLVMValueRef LLVMBuildCall2(LLVMBuilderRef, LLVMTypeRef, LLVMValueRef Fn, LLVMValueRef *Args, unsigned NumArgs, const char *Name); @@ -4058,10 +4014,6 @@ const char *Name); LLVMValueRef LLVMBuildIsNotNull(LLVMBuilderRef, LLVMValueRef Val, const char *Name); -LLVM_ATTRIBUTE_C_DEPRECATED( - LLVMValueRef LLVMBuildPtrDiff(LLVMBuilderRef, LLVMValueRef LHS, - LLVMValueRef RHS, const char *Name), - "Use LLVMBuildPtrDiff2 instead to support opaque pointers"); LLVMValueRef LLVMBuildPtrDiff2(LLVMBuilderRef, LLVMTypeRef ElemTy, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name); diff --git a/llvm/lib/IR/Core.cpp b/llvm/lib/IR/Core.cpp --- a/llvm/lib/IR/Core.cpp +++ b/llvm/lib/IR/Core.cpp @@ -1636,15 +1636,6 @@ unwrap(RHSConstant))); } -LLVMValueRef LLVMConstGEP(LLVMValueRef ConstantVal, - LLVMValueRef *ConstantIndices, unsigned NumIndices) { - ArrayRef IdxList(unwrap(ConstantIndices, NumIndices), - NumIndices); - Constant *Val = unwrap(ConstantVal); - Type *Ty = Val->getType()->getScalarType()->getNonOpaquePointerElementType(); - return wrap(ConstantExpr::getGetElementPtr(Ty, Val, IdxList)); -} - LLVMValueRef LLVMConstGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal, LLVMValueRef *ConstantIndices, unsigned NumIndices) { ArrayRef IdxList(unwrap(ConstantIndices, NumIndices), @@ -1653,16 +1644,6 @@ return wrap(ConstantExpr::getGetElementPtr(unwrap(Ty), Val, IdxList)); } -LLVMValueRef LLVMConstInBoundsGEP(LLVMValueRef ConstantVal, - LLVMValueRef *ConstantIndices, - unsigned NumIndices) { - ArrayRef IdxList(unwrap(ConstantIndices, NumIndices), - NumIndices); - Constant *Val = unwrap(ConstantVal); - Type *Ty = Val->getType()->getScalarType()->getNonOpaquePointerElementType(); - return wrap(ConstantExpr::getInBoundsGetElementPtr(Ty, Val, IdxList)); -} - LLVMValueRef LLVMConstInBoundsGEP2(LLVMTypeRef Ty, LLVMValueRef ConstantVal, LLVMValueRef *ConstantIndices, unsigned NumIndices) { @@ -2209,15 +2190,6 @@ /*--.. Operations on aliases ......................................--*/ -LLVMValueRef LLVMAddAlias(LLVMModuleRef M, LLVMTypeRef Ty, LLVMValueRef Aliasee, - const char *Name) { - auto *PTy = unwrap(Ty); - return wrap(GlobalAlias::create(PTy->getNonOpaquePointerElementType(), - PTy->getAddressSpace(), - GlobalValue::ExternalLinkage, Name, - unwrap(Aliasee), unwrap(M))); -} - LLVMValueRef LLVMAddAlias2(LLVMModuleRef M, LLVMTypeRef ValueTy, unsigned AddrSpace, LLVMValueRef Aliasee, const char *Name) { @@ -3147,19 +3119,6 @@ return wrap(unwrap(B)->CreateIndirectBr(unwrap(Addr), NumDests)); } -LLVMValueRef LLVMBuildInvoke(LLVMBuilderRef B, LLVMValueRef Fn, - LLVMValueRef *Args, unsigned NumArgs, - LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, - const char *Name) { - Value *V = unwrap(Fn); - FunctionType *FnT = - cast(V->getType()->getNonOpaquePointerElementType()); - - return wrap( - unwrap(B)->CreateInvoke(FnT, unwrap(Fn), unwrap(Then), unwrap(Catch), - makeArrayRef(unwrap(Args), NumArgs), Name)); -} - LLVMValueRef LLVMBuildInvoke2(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Fn, LLVMValueRef *Args, unsigned NumArgs, LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch, @@ -3519,15 +3478,6 @@ CallInst::CreateFree(unwrap(PointerVal), unwrap(B)->GetInsertBlock()))); } -LLVMValueRef LLVMBuildLoad(LLVMBuilderRef B, LLVMValueRef PointerVal, - const char *Name) { - Value *V = unwrap(PointerVal); - PointerType *Ty = cast(V->getType()); - - return wrap( - unwrap(B)->CreateLoad(Ty->getNonOpaquePointerElementType(), V, Name)); -} - LLVMValueRef LLVMBuildLoad2(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef PointerVal, const char *Name) { return wrap(unwrap(B)->CreateLoad(unwrap(Ty), unwrap(PointerVal), Name)); @@ -3626,15 +3576,6 @@ Name)); } -LLVMValueRef LLVMBuildGEP(LLVMBuilderRef B, LLVMValueRef Pointer, - LLVMValueRef *Indices, unsigned NumIndices, - const char *Name) { - ArrayRef IdxList(unwrap(Indices), NumIndices); - Value *Val = unwrap(Pointer); - Type *Ty = Val->getType()->getScalarType()->getNonOpaquePointerElementType(); - return wrap(unwrap(B)->CreateGEP(Ty, Val, IdxList, Name)); -} - LLVMValueRef LLVMBuildGEP2(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Pointer, LLVMValueRef *Indices, unsigned NumIndices, const char *Name) { @@ -3642,15 +3583,6 @@ return wrap(unwrap(B)->CreateGEP(unwrap(Ty), unwrap(Pointer), IdxList, Name)); } -LLVMValueRef LLVMBuildInBoundsGEP(LLVMBuilderRef B, LLVMValueRef Pointer, - LLVMValueRef *Indices, unsigned NumIndices, - const char *Name) { - ArrayRef IdxList(unwrap(Indices), NumIndices); - Value *Val = unwrap(Pointer); - Type *Ty = Val->getType()->getScalarType()->getNonOpaquePointerElementType(); - return wrap(unwrap(B)->CreateInBoundsGEP(Ty, Val, IdxList, Name)); -} - LLVMValueRef LLVMBuildInBoundsGEP2(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Pointer, LLVMValueRef *Indices, unsigned NumIndices, const char *Name) { @@ -3659,13 +3591,6 @@ unwrap(B)->CreateInBoundsGEP(unwrap(Ty), unwrap(Pointer), IdxList, Name)); } -LLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer, - unsigned Idx, const char *Name) { - Value *Val = unwrap(Pointer); - Type *Ty = Val->getType()->getScalarType()->getNonOpaquePointerElementType(); - return wrap(unwrap(B)->CreateStructGEP(Ty, Val, Idx, Name)); -} - LLVMValueRef LLVMBuildStructGEP2(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Pointer, unsigned Idx, const char *Name) { @@ -3884,17 +3809,6 @@ return wrap(unwrap(B)->CreatePHI(unwrap(Ty), 0, Name)); } -LLVMValueRef LLVMBuildCall(LLVMBuilderRef B, LLVMValueRef Fn, - LLVMValueRef *Args, unsigned NumArgs, - const char *Name) { - Value *V = unwrap(Fn); - FunctionType *FnT = - cast(V->getType()->getNonOpaquePointerElementType()); - - return wrap(unwrap(B)->CreateCall(FnT, unwrap(Fn), - makeArrayRef(unwrap(Args), NumArgs), Name)); -} - LLVMValueRef LLVMBuildCall2(LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Fn, LLVMValueRef *Args, unsigned NumArgs, const char *Name) { @@ -3962,13 +3876,6 @@ return wrap(unwrap(B)->CreateIsNotNull(unwrap(Val), Name)); } -LLVMValueRef LLVMBuildPtrDiff(LLVMBuilderRef B, LLVMValueRef LHS, - LLVMValueRef RHS, const char *Name) { - Value *L = unwrap(LHS); - Type *ElemTy = L->getType()->getNonOpaquePointerElementType(); - return wrap(unwrap(B)->CreatePtrDiff(ElemTy, L, unwrap(RHS), Name)); -} - LLVMValueRef LLVMBuildPtrDiff2(LLVMBuilderRef B, LLVMTypeRef ElemTy, LLVMValueRef LHS, LLVMValueRef RHS, const char *Name) {