[llvm-c] Avoid deprecated APIs in tests
Avoid the use of deprecated (opaque pointer incompatible) APIs in C API tests, in preparation for header deprecation. Add a LLVMGetGEPSourceElementType() to cover a bit of functionality that is necessary for the echo test. This change is split out from https://reviews.llvm.org/D114936.
This commit is contained in:
parent
ca2f53897a
commit
573a9bc4ad
|
@ -3506,6 +3506,11 @@ LLVMBool LLVMIsInBounds(LLVMValueRef GEP);
|
|||
*/
|
||||
void LLVMSetIsInBounds(LLVMValueRef GEP, LLVMBool InBounds);
|
||||
|
||||
/**
|
||||
* Get the source element type of the given GEP instruction.
|
||||
*/
|
||||
LLVMTypeRef LLVMGetGEPSourceElementType(LLVMValueRef GEP);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
|
|
@ -3014,6 +3014,10 @@ void LLVMSetIsInBounds(LLVMValueRef GEP, LLVMBool InBounds) {
|
|||
return unwrap<GetElementPtrInst>(GEP)->setIsInBounds(InBounds);
|
||||
}
|
||||
|
||||
LLVMTypeRef LLVMGetGEPSourceElementType(LLVMValueRef GEP) {
|
||||
return wrap(unwrap<GetElementPtrInst>(GEP)->getSourceElementType());
|
||||
}
|
||||
|
||||
/*--.. Operations on phi nodes .............................................--*/
|
||||
|
||||
void LLVMAddIncoming(LLVMValueRef PhiNode, LLVMValueRef *IncomingValues,
|
||||
|
|
|
@ -74,8 +74,9 @@ static LLVMValueRef build_from_tokens(char **tokens, int ntokens,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
off = LLVMBuildGEP(builder, param, &stack[depth - 1], 1, "");
|
||||
stack[depth - 1] = LLVMBuildLoad(builder, off, "");
|
||||
LLVMTypeRef ty = LLVMInt64Type();
|
||||
off = LLVMBuildGEP2(builder, ty, param, &stack[depth - 1], 1, "");
|
||||
stack[depth - 1] = LLVMBuildLoad2(builder, ty, off, "");
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -524,11 +524,12 @@ struct FunCloner {
|
|||
int ArgCount = LLVMGetNumArgOperands(Src);
|
||||
for (int i = 0; i < ArgCount; i++)
|
||||
Args.push_back(CloneValue(LLVMGetOperand(Src, i)));
|
||||
LLVMTypeRef FnTy = CloneType(LLVMGetCalledFunctionType(Src));
|
||||
LLVMValueRef Fn = CloneValue(LLVMGetCalledValue(Src));
|
||||
LLVMBasicBlockRef Then = DeclareBB(LLVMGetNormalDest(Src));
|
||||
LLVMBasicBlockRef Unwind = DeclareBB(LLVMGetUnwindDest(Src));
|
||||
Dst = LLVMBuildInvoke(Builder, Fn, Args.data(), ArgCount,
|
||||
Then, Unwind, Name);
|
||||
Dst = LLVMBuildInvoke2(Builder, FnTy, Fn, Args.data(), ArgCount,
|
||||
Then, Unwind, Name);
|
||||
CloneAttrs(Src, Dst);
|
||||
break;
|
||||
}
|
||||
|
@ -621,7 +622,7 @@ struct FunCloner {
|
|||
}
|
||||
case LLVMLoad: {
|
||||
LLVMValueRef Ptr = CloneValue(LLVMGetOperand(Src, 0));
|
||||
Dst = LLVMBuildLoad(Builder, Ptr, Name);
|
||||
Dst = LLVMBuildLoad2(Builder, CloneType(Src), Ptr, Name);
|
||||
LLVMSetAlignment(Dst, LLVMGetAlignment(Src));
|
||||
LLVMSetOrdering(Dst, LLVMGetOrdering(Src));
|
||||
LLVMSetVolatile(Dst, LLVMGetVolatile(Src));
|
||||
|
@ -637,15 +638,17 @@ struct FunCloner {
|
|||
break;
|
||||
}
|
||||
case LLVMGetElementPtr: {
|
||||
LLVMTypeRef ElemTy = CloneType(LLVMGetGEPSourceElementType(Src));
|
||||
LLVMValueRef Ptr = CloneValue(LLVMGetOperand(Src, 0));
|
||||
SmallVector<LLVMValueRef, 8> Idx;
|
||||
int NumIdx = LLVMGetNumIndices(Src);
|
||||
for (int i = 1; i <= NumIdx; i++)
|
||||
Idx.push_back(CloneValue(LLVMGetOperand(Src, i)));
|
||||
if (LLVMIsInBounds(Src))
|
||||
Dst = LLVMBuildInBoundsGEP(Builder, Ptr, Idx.data(), NumIdx, Name);
|
||||
Dst = LLVMBuildInBoundsGEP2(Builder, ElemTy, Ptr, Idx.data(), NumIdx,
|
||||
Name);
|
||||
else
|
||||
Dst = LLVMBuildGEP(Builder, Ptr, Idx.data(), NumIdx, Name);
|
||||
Dst = LLVMBuildGEP2(Builder, ElemTy, Ptr, Idx.data(), NumIdx, Name);
|
||||
break;
|
||||
}
|
||||
case LLVMAtomicRMW: {
|
||||
|
@ -709,8 +712,9 @@ struct FunCloner {
|
|||
int ArgCount = LLVMGetNumArgOperands(Src);
|
||||
for (int i = 0; i < ArgCount; i++)
|
||||
Args.push_back(CloneValue(LLVMGetOperand(Src, i)));
|
||||
LLVMTypeRef FnTy = CloneType(LLVMGetCalledFunctionType(Src));
|
||||
LLVMValueRef Fn = CloneValue(LLVMGetCalledValue(Src));
|
||||
Dst = LLVMBuildCall(Builder, Fn, Args.data(), ArgCount, Name);
|
||||
Dst = LLVMBuildCall2(Builder, FnTy, Fn, Args.data(), ArgCount, Name);
|
||||
LLVMSetTailCall(Dst, LLVMIsTailCall(Src));
|
||||
CloneAttrs(Src, Dst);
|
||||
break;
|
||||
|
|
Loading…
Reference in New Issue