@@ -47,6 +47,10 @@ using namespace llvm;
47
47
48
48
DEFINE_SIMPLE_CONVERSION_FUNCTIONS (OperandBundleDef, LLVMOperandBundleRef)
49
49
50
+ inline BasicBlock **unwrap(LLVMBasicBlockRef *BBs) {
51
+ return reinterpret_cast <BasicBlock **>(BBs);
52
+ }
53
+
50
54
#define DEBUG_TYPE " ir"
51
55
52
56
void llvm::initializeCore (PassRegistry &Registry) {
@@ -3031,6 +3035,18 @@ void LLVMSetUnwindDest(LLVMValueRef Invoke, LLVMBasicBlockRef B) {
3031
3035
unwrap<InvokeInst>(Invoke)->setUnwindDest (unwrap (B));
3032
3036
}
3033
3037
3038
+ LLVMBasicBlockRef LLVMGetCallBrDefaultDest (LLVMValueRef CallBr) {
3039
+ return wrap (unwrap<CallBrInst>(CallBr)->getDefaultDest ());
3040
+ }
3041
+
3042
+ unsigned LLVMGetCallBrNumIndirectDests (LLVMValueRef CallBr) {
3043
+ return unwrap<CallBrInst>(CallBr)->getNumIndirectDests ();
3044
+ }
3045
+
3046
+ LLVMBasicBlockRef LLVMGetCallBrIndirectDest (LLVMValueRef CallBr, unsigned Idx) {
3047
+ return wrap (unwrap<CallBrInst>(CallBr)->getIndirectDest (Idx));
3048
+ }
3049
+
3034
3050
/* --.. Operations on terminators ...........................................--*/
3035
3051
3036
3052
unsigned LLVMGetNumSuccessors (LLVMValueRef Term) {
@@ -3258,6 +3274,25 @@ LLVMValueRef LLVMBuildIndirectBr(LLVMBuilderRef B, LLVMValueRef Addr,
3258
3274
return wrap (unwrap (B)->CreateIndirectBr (unwrap (Addr), NumDests));
3259
3275
}
3260
3276
3277
+ LLVMValueRef LLVMBuildCallBr (LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Fn,
3278
+ LLVMBasicBlockRef DefaultDest,
3279
+ LLVMBasicBlockRef *IndirectDests,
3280
+ unsigned NumIndirectDests, LLVMValueRef *Args,
3281
+ unsigned NumArgs, LLVMOperandBundleRef *Bundles,
3282
+ unsigned NumBundles, const char *Name) {
3283
+
3284
+ SmallVector<OperandBundleDef, 8 > OBs;
3285
+ for (auto *Bundle : ArrayRef (Bundles, NumBundles)) {
3286
+ OperandBundleDef *OB = unwrap (Bundle);
3287
+ OBs.push_back (*OB);
3288
+ }
3289
+
3290
+ return wrap (unwrap (B)->CreateCallBr (
3291
+ unwrap<FunctionType>(Ty), unwrap (Fn), unwrap (DefaultDest),
3292
+ ArrayRef (unwrap (IndirectDests), NumIndirectDests),
3293
+ ArrayRef<Value *>(unwrap (Args), NumArgs), OBs, Name));
3294
+ }
3295
+
3261
3296
LLVMValueRef LLVMBuildInvoke2 (LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Fn,
3262
3297
LLVMValueRef *Args, unsigned NumArgs,
3263
3298
LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch,
0 commit comments