LLVMValueRef LLVMDIBuilderInsertValueAtEnd(LLVMDIBuilderRef Dref, LLVMValueRef Val, uint64_t Offset, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMBasicBlockRef Block) { DIBuilder *D = unwrap(Dref); Instruction *Instr = D->insertDbgValueIntrinsic( unwrap(Val), Offset, unwrapDI<DIVariable>(VarInfo), unwrapDI<DIExpression>(Expr), unwrap(Block)); return wrap(Instr); }
LLVMValueRef LLVMDIBuilderInsertValueAtEnd(LLVMDIBuilderRef Dref, LLVMValueRef Val, uint64_t Offset, LLVMMetadataRef VarInfo, LLVMMetadataRef Expr, LLVMBasicBlockRef Block) { // Fail immediately here until the llgo folks update their bindings. The // called function is going to assert out anyway. llvm_unreachable("DIBuilder API change requires a DebugLoc"); DIBuilder *D = unwrap(Dref); Instruction *Instr = D->insertDbgValueIntrinsic( unwrap(Val), Offset, unwrap<DILocalVariable>(VarInfo), unwrap<DIExpression>(Expr), /* DebugLoc */ nullptr, unwrap(Block)); return wrap(Instr); }
LLVMValueRef LLVMDIBuilderInsertValueAtEnd( LLVMDIBuilderRef D, LLVMValueRef Val, uint64_t Offset, LLVMValueRef VarInfo, LLVMBasicBlockRef Block) { DIBuilder *db = unwrap(D); Instruction *Instr = db->insertDbgValueIntrinsic( unwrap(Val), Offset, unwrapDI<DIVariable>(VarInfo), unwrap(Block)); return wrap(Instr); }
int BuildDbgValue( ClientData clientData, Tcl_Interp *interp, int objc, Tcl_Obj *const objv[]) { if (objc != 6) { Tcl_WrongNumArgs(interp, 1, objv, "dibuilder builder value location variableInfo"); return TCL_ERROR; } DIBuilder *builder; if (GetDIBuilderFromObj(interp, objv[1], builder) != TCL_OK) return TCL_ERROR; IRBuilder<> *b; if (GetBuilderFromObj(interp, objv[2], b) != TCL_OK) return TCL_ERROR; Value *val; if (GetValueFromObj(interp, objv[3], val) != TCL_OK) return TCL_ERROR; DILocation *location; if (GetMetadataFromObj(interp, objv[4], "location", location) != TCL_OK) return TCL_ERROR; DILocalVariable *varInfo; if (GetMetadataFromObj(interp, objv[5], "variable", varInfo) != TCL_OK) return TCL_ERROR; auto expr = builder->createExpression(); // Dummy auto inst = builder->insertDbgValueIntrinsic(val, 0, varInfo, expr, location, b->GetInsertBlock()); Tcl_SetObjResult(interp, NewValueObj(inst)); return TCL_OK; }