unwrap<GlobalVariable>(GlobalVar)->eraseFromParent();
}
-int LLVMHasInitializer(LLVMValueRef GlobalVar) {
- return unwrap<GlobalVariable>(GlobalVar)->hasInitializer();
-}
-
LLVMValueRef LLVMGetInitializer(LLVMValueRef GlobalVar) {
return wrap(unwrap<GlobalVariable>(GlobalVar)->getInitializer());
}
return unwrap<Function>(Fn)->setCallingConv(CC);
}
-const char *LLVMGetCollector(LLVMValueRef Fn) {
+const char *LLVMGetGC(LLVMValueRef Fn) {
Function *F = unwrap<Function>(Fn);
- return F->hasCollector()? F->getCollector() : 0;
+ return F->hasGC()? F->getGC() : 0;
}
-void LLVMSetCollector(LLVMValueRef Fn, const char *Coll) {
+void LLVMSetGC(LLVMValueRef Fn, const char *GC) {
Function *F = unwrap<Function>(Fn);
- if (Coll)
- F->setCollector(Coll);
+ if (GC)
+ F->setGC(GC);
else
- F->clearCollector();
+ F->clearGC();
}
/*--.. Operations on parameters ............................................--*/
return wrap(--I);
}
-void LLVMAddParamAttr(LLVMValueRef Arg, LLVMParamAttr PA) {
+void LLVMAddAttribute(LLVMValueRef Arg, LLVMAttribute PA) {
unwrap<Argument>(Arg)->addAttr(PA);
}
-void LLVMRemoveParamAttr(LLVMValueRef Arg, LLVMParamAttr PA) {
+void LLVMRemoveAttribute(LLVMValueRef Arg, LLVMAttribute PA) {
unwrap<Argument>(Arg)->removeAttr(PA);
}
void LLVMSetParamAlignment(LLVMValueRef Arg, unsigned align) {
unwrap<Argument>(Arg)->addAttr(
- ParamAttr::constructAlignmentFromInt(align));
+ Attribute::constructAlignmentFromInt(align));
}
/*--.. Operations on basic blocks ..........................................--*/
assert(0 && "LLVMSetInstructionCallConv applies only to call and invoke!");
}
-void LLVMAddInstrParamAttr(LLVMValueRef Instr, unsigned index,
- LLVMParamAttr PA) {
+void LLVMAddInstrAttribute(LLVMValueRef Instr, unsigned index,
+ LLVMAttribute PA) {
CallSite Call = CallSite(unwrap<Instruction>(Instr));
- Call.setParamAttrs(
- Call.getParamAttrs().addAttr(index, PA));
+ Call.setAttributes(
+ Call.getAttributes().addAttr(index, PA));
}
-void LLVMRemoveInstrParamAttr(LLVMValueRef Instr, unsigned index,
- LLVMParamAttr PA) {
+void LLVMRemoveInstrAttribute(LLVMValueRef Instr, unsigned index,
+ LLVMAttribute PA) {
CallSite Call = CallSite(unwrap<Instruction>(Instr));
- Call.setParamAttrs(
- Call.getParamAttrs().removeAttr(index, PA));
+ Call.setAttributes(
+ Call.getAttributes().removeAttr(index, PA));
}
void LLVMSetInstrParamAlignment(LLVMValueRef Instr, unsigned index,
unsigned align) {
CallSite Call = CallSite(unwrap<Instruction>(Instr));
- Call.setParamAttrs(
- Call.getParamAttrs().addAttr(index,
- ParamAttr::constructAlignmentFromInt(align)));
+ Call.setAttributes(
+ Call.getAttributes().addAttr(index,
+ Attribute::constructAlignmentFromInt(align)));
+}
+
+/*--.. Operations on call instructions (only) ..............................--*/
+
+int LLVMIsTailCall(LLVMValueRef Call) {
+ return unwrap<CallInst>(Call)->isTailCall();
+}
+
+void LLVMSetTailCall(LLVMValueRef Call, int isTailCall) {
+ unwrap<CallInst>(Call)->setTailCall(isTailCall);
}
/*--.. Operations on phi nodes .............................................--*/
/*===-- Instruction builders ----------------------------------------------===*/
LLVMBuilderRef LLVMCreateBuilder(void) {
- return wrap(new IRBuilder());
+ return wrap(new IRBuilder<>());
}
void LLVMPositionBuilder(LLVMBuilderRef Builder, LLVMBasicBlockRef Block,