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);
}
Example #2
0
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);
}
Example #4
0
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;
}