@@ -47,6 +47,10 @@ using namespace llvm;
4747
4848DEFINE_SIMPLE_CONVERSION_FUNCTIONS (OperandBundleDef, LLVMOperandBundleRef)
4949
50+ inline BasicBlock **unwrap(LLVMBasicBlockRef *BBs) {
51+ return reinterpret_cast <BasicBlock **>(BBs);
52+ }
53+
5054#define DEBUG_TYPE " ir"
5155
5256void llvm::initializeCore (PassRegistry &Registry) {
@@ -3031,6 +3035,18 @@ void LLVMSetUnwindDest(LLVMValueRef Invoke, LLVMBasicBlockRef B) {
30313035 unwrap<InvokeInst>(Invoke)->setUnwindDest (unwrap (B));
30323036}
30333037
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+
30343050/* --.. Operations on terminators ...........................................--*/
30353051
30363052unsigned LLVMGetNumSuccessors (LLVMValueRef Term) {
@@ -3258,6 +3274,25 @@ LLVMValueRef LLVMBuildIndirectBr(LLVMBuilderRef B, LLVMValueRef Addr,
32583274 return wrap (unwrap (B)->CreateIndirectBr (unwrap (Addr), NumDests));
32593275}
32603276
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+
32613296LLVMValueRef LLVMBuildInvoke2 (LLVMBuilderRef B, LLVMTypeRef Ty, LLVMValueRef Fn,
32623297 LLVMValueRef *Args, unsigned NumArgs,
32633298 LLVMBasicBlockRef Then, LLVMBasicBlockRef Catch,
0 commit comments