Updated to latest LLVM trunk, function notes have been removed and merged with parameter attributes, which have been renamed to just attributes. Nothing seems to have broke!

This commit is contained in:
Tomas Lindquist Olsen 2008-10-01 23:17:14 +02:00
parent e7ad7296d0
commit bce9368514
12 changed files with 119 additions and 134 deletions

View file

@ -758,10 +758,10 @@ static LLValue* DtoArrayEqCmp_impl(Loc& loc, const char* func, DValue* l, DValue
CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end(), "tmp");
// set param attrs
llvm::PAListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
call->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::Attribute::ByVal);
call->setAttributes(palist);
return call->get();
}
@ -1072,7 +1072,7 @@ void DtoArrayBoundsCheck(Loc& loc, DValue* arr, DValue* index, bool isslice)
gIR->scope() = IRScope(failbb, okbb);
std::vector<LLValue*> args;
llvm::PAListPtr palist;
llvm::AttrListPtr palist;
// file param
// FIXME: every array bounds check creates a global for the filename !!!
@ -1090,7 +1090,7 @@ void DtoArrayBoundsCheck(Loc& loc, DValue* arr, DValue* index, bool isslice)
DtoStore(c->getOperand(1), ptr);
args.push_back(alloc);
palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
palist = palist.addAttr(1, llvm::Attribute::ByVal);
// line param
c = DtoConstUint(loc.linnum);
@ -1099,7 +1099,7 @@ void DtoArrayBoundsCheck(Loc& loc, DValue* arr, DValue* index, bool isslice)
// call
llvm::Function* errorfn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_array_bounds");
CallOrInvoke* call = gIR->CreateCallOrInvoke(errorfn, args.begin(), args.end());
call->setParamAttrs(palist);
call->setAttributes(palist);
// the function does not return
gIR->ir->CreateUnreachable();

View file

@ -9,7 +9,7 @@
#include <llvm/BasicBlock.h>
#include <llvm/Instructions.h>
#include <llvm/InlineAsm.h>
#include <llvm/ParameterAttributes.h>
#include <llvm/Attributes.h>
#include <llvm/Support/MathExtras.h>
#include <llvm/Pass.h>
#include <llvm/PassManager.h>

View file

@ -132,7 +132,7 @@ const llvm::FunctionType* DtoFunctionType(Type* type, const LLType* thistype, co
Logger::println("struct param");
paramvec.push_back(getPtrToType(at));
if (!refOrOut)
arg->llvmAttrs |= llvm::ParamAttr::ByVal;
arg->llvmAttrs |= llvm::Attribute::ByVal;
}
else if (isaArray(at)) {
// static array are passed by reference
@ -341,10 +341,10 @@ static void set_param_attrs(TypeFunction* f, llvm::Function* func, FuncDeclarati
llidx += 2;
int funcNumArgs = func->getArgumentList().size();
std::vector<llvm::ParamAttrsWithIndex> attrs;
std::vector<llvm::AttributeWithIndex> attrs;
int k = 0;
llvm::ParamAttrsWithIndex PAWI;
llvm::AttributeWithIndex PAWI;
// set return value attrs if any
if (f->retAttrs)
@ -358,7 +358,7 @@ static void set_param_attrs(TypeFunction* f, llvm::Function* func, FuncDeclarati
if (f->retInPtr)
{
PAWI.Index = 1;
PAWI.Attrs = llvm::ParamAttr::StructRet;
PAWI.Attrs = llvm::Attribute::StructRet;
attrs.push_back(PAWI);
}
@ -366,7 +366,7 @@ static void set_param_attrs(TypeFunction* f, llvm::Function* func, FuncDeclarati
if (fdecl->isMain() && Argument::dim(f->parameters) == 0)
{
PAWI.Index = llidx;
PAWI.Attrs = llvm::ParamAttr::ByVal;
PAWI.Attrs = llvm::Attribute::ByVal;
attrs.push_back(PAWI);
llidx++;
}
@ -384,8 +384,8 @@ static void set_param_attrs(TypeFunction* f, llvm::Function* func, FuncDeclarati
attrs.push_back(PAWI);
}
llvm::PAListPtr palist = llvm::PAListPtr::get(attrs.begin(), attrs.end());
func->setParamAttrs(palist);
llvm::AttrListPtr palist = llvm::AttrListPtr::get(attrs.begin(), attrs.end());
func->setAttributes(palist);
}
//////////////////////////////////////////////////////////////////////////////////////////

View file

@ -88,7 +88,7 @@ struct IRAsmBlock
// adjusting these common properties these structs are made
struct CallOrInvoke
{
virtual void setParamAttrs(const llvm::PAListPtr& Attrs) = 0;
virtual void setAttributes(const llvm::AttrListPtr& Attrs) = 0;
virtual void setCallingConv(unsigned CC) = 0;
virtual llvm::Instruction* get() = 0;
};
@ -98,8 +98,8 @@ struct CallOrInvoke_Call : public CallOrInvoke
llvm::CallInst* inst;
CallOrInvoke_Call(llvm::CallInst* call) : inst(call) {}
virtual void setParamAttrs(const llvm::PAListPtr& Attrs)
{ inst->setParamAttrs(Attrs); }
virtual void setAttributes(const llvm::AttrListPtr& Attrs)
{ inst->setAttributes(Attrs); }
virtual void setCallingConv(unsigned CC)
{ inst->setCallingConv(CC); }
virtual llvm::Instruction* get()
@ -111,8 +111,8 @@ struct CallOrInvoke_Invoke : public CallOrInvoke
llvm::InvokeInst* inst;
CallOrInvoke_Invoke(llvm::InvokeInst* invoke) : inst(invoke) {}
virtual void setParamAttrs(const llvm::PAListPtr& Attrs)
{ inst->setParamAttrs(Attrs); }
virtual void setAttributes(const llvm::AttrListPtr& Attrs)
{ inst->setAttributes(Attrs); }
virtual void setCallingConv(unsigned CC)
{ inst->setCallingConv(CC); }
virtual llvm::Instruction* get()

View file

@ -10,7 +10,7 @@
#include "llvm/Function.h"
#include "llvm/Module.h"
#include "llvm/Value.h"
#include "llvm/ParameterAttributes.h"
#include "llvm/Attributes.h"
#include "llvm/Target/TargetData.h"

View file

@ -117,7 +117,7 @@ void DtoAssert(Loc* loc, DValue* msg)
llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, fname);
// param attrs
llvm::PAListPtr palist;
llvm::AttrListPtr palist;
int idx = 1;
// FIXME: every assert creates a global for the filename !!!
@ -141,7 +141,7 @@ void DtoAssert(Loc* loc, DValue* msg)
{
args.push_back(msg->getRVal());
}
palist = palist.addAttr(idx++, llvm::ParamAttr::ByVal);
palist = palist.addAttr(idx++, llvm::Attribute::ByVal);
}
// file param
@ -157,7 +157,7 @@ void DtoAssert(Loc* loc, DValue* msg)
DtoStore(c->getOperand(1), ptr);
args.push_back(alloc);
palist = palist.addAttr(idx++, llvm::ParamAttr::ByVal);
palist = palist.addAttr(idx++, llvm::Attribute::ByVal);
// line param
@ -166,7 +166,7 @@ void DtoAssert(Loc* loc, DValue* msg)
// call
CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end());
call->setParamAttrs(palist);
call->setAttributes(palist);
// after assert is always unreachable
gIR->ir->CreateUnreachable();

View file

@ -133,7 +133,7 @@ LLValue* DtoCallableValue(DValue* fn);
const LLFunctionType* DtoExtractFunctionType(const LLType* type);
///
void DtoBuildDVarArgList(std::vector<LLValue*>& args, llvm::PAListPtr& palist, TypeFunction* tf, Expressions* arguments, size_t argidx);
void DtoBuildDVarArgList(std::vector<LLValue*>& args, llvm::AttrListPtr& palist, TypeFunction* tf, Expressions* arguments, size_t argidx);
///
DValue* DtoCallFunction(Loc& loc, Type* resulttype, DValue* fnval, Expressions* arguments);

View file

@ -69,7 +69,7 @@ llvm::Function* LLVM_D_GetRuntimeFunction(llvm::Module* target, const char* name
const llvm::FunctionType* fnty = fn->getFunctionType();
llvm::Function* resfn = llvm::cast<llvm::Function>(target->getOrInsertFunction(name, fnty));
resfn->setParamAttrs(fn->getParamAttrs());
resfn->setAttributes(fn->getAttributes());
return resfn;
}
@ -201,11 +201,11 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(stringTy);
types.push_back(intTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M)->setAttributes(palist);
}
// void _d_assert_msg( char[] msg, char[] file, uint line )
@ -216,10 +216,10 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(stringTy);
types.push_back(intTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
}
/////////////////////////////////////////////////////////////////////////////////////
@ -383,11 +383,11 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(TY); \
types.push_back(rt_dg1()); \
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
llvm::PAListPtr palist; \
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \
llvm::AttrListPtr palist; \
palist = palist.addAttr(1, llvm::Attribute::ByVal); \
palist = palist.addAttr(2, llvm::Attribute::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
}
STR_APPLY1(stringTy, "_aApplycw1", "_aApplycd1")
STR_APPLY1(wstringTy, "_aApplywc1", "_aApplywd1")
@ -403,11 +403,11 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(TY); \
types.push_back(rt_dg2()); \
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
llvm::PAListPtr palist; \
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \
llvm::AttrListPtr palist; \
palist = palist.addAttr(1, llvm::Attribute::ByVal); \
palist = palist.addAttr(2, llvm::Attribute::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
}
STR_APPLY2(stringTy, "_aApplycw2", "_aApplycd2")
STR_APPLY2(wstringTy, "_aApplywc2", "_aApplywd2")
@ -422,11 +422,11 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(TY); \
types.push_back(rt_dg1()); \
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
llvm::PAListPtr palist; \
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \
llvm::AttrListPtr palist; \
palist = palist.addAttr(1, llvm::Attribute::ByVal); \
palist = palist.addAttr(2, llvm::Attribute::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
}
STR_APPLY_R1(stringTy, "_aApplyRcw1", "_aApplyRcd1")
STR_APPLY_R1(wstringTy, "_aApplyRwc1", "_aApplyRwd1")
@ -441,11 +441,11 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(TY); \
types.push_back(rt_dg2()); \
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
llvm::PAListPtr palist; \
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \
llvm::AttrListPtr palist; \
palist = palist.addAttr(1, llvm::Attribute::ByVal); \
palist = palist.addAttr(2, llvm::Attribute::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
}
STR_APPLY_R2(stringTy, "_aApplyRcw2", "_aApplyRcd2")
STR_APPLY_R2(wstringTy, "_aApplyRwc2", "_aApplyRwd2")
@ -533,10 +533,10 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(stringTy);
types.push_back(stringTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
}
// wchar[] _adReverseWchar(wchar[] a)
@ -548,10 +548,10 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(wstringTy);
types.push_back(wstringTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
}
// Array _adReverse(Array a, size_t szelem)
@ -562,9 +562,9 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(rt_array(byteTy));
types.push_back(sizeTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
}
// Array _adDupT(TypeInfo ti, Array a)
@ -575,9 +575,9 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(typeInfoTy);
types.push_back(rt_array(byteTy));
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(3, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(3, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
}
// int _adEq(Array a1, Array a2, TypeInfo ti)
@ -590,11 +590,11 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(rt_array(byteTy));
types.push_back(typeInfoTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
}
// int _adCmpChar(Array a1, Array a2)
@ -604,10 +604,10 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(rt_array(byteTy));
types.push_back(rt_array(byteTy));
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
}
// Array _adSort(Array a, TypeInfo ti)
@ -618,9 +618,9 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(rt_array(byteTy));
types.push_back(typeInfoTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
}
/////////////////////////////////////////////////////////////////////////////////////
@ -723,9 +723,9 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(sizeTy);
types.push_back(rt_dg1());
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(3, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(3, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
}
// int _aaApply2(AA aa, size_t keysize, dg2_t dg)
@ -736,9 +736,9 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(sizeTy);
types.push_back(rt_dg1());
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(3, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(3, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
}
/////////////////////////////////////////////////////////////////////////////////////
@ -813,10 +813,10 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(rt_array(rt_array2(byteTy)));
types.push_back(stringTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
}
// int _d_switch_ustring(wchar[][] table, wchar[] ca)
@ -826,10 +826,10 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(rt_array(rt_array2(shortTy)));
types.push_back(wstringTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
}
// int _d_switch_dstring(dchar[][] table, dchar[] ca)
@ -839,10 +839,10 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(rt_array(rt_array2(intTy)));
types.push_back(dstringTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
}
/////////////////////////////////////////////////////////////////////////////////////

View file

@ -705,10 +705,10 @@ static LLValue* call_string_switch_runtime(llvm::GlobalVariable* table, Expressi
CallOrInvoke* call = gIR->CreateCallOrInvoke2(fn, table, llval, "tmp");
llvm::PAListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal);
call->setParamAttrs(palist);
llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::Attribute::ByVal);
call->setAttributes(palist);
return call->get();
}
@ -1255,7 +1255,7 @@ void SwitchErrorStatement::toIR(IRState* p)
llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_switch_error");
// param attrs
llvm::PAListPtr palist;
llvm::AttrListPtr palist;
int idx = 1;
std::vector<LLValue*> args;
@ -1276,7 +1276,7 @@ void SwitchErrorStatement::toIR(IRState* p)
DtoStore(c->getOperand(1), ptr);
args.push_back(alloc);
palist = palist.addAttr(idx++, llvm::ParamAttr::ByVal);
palist = palist.addAttr(idx++, llvm::Attribute::ByVal);
// line param
c = DtoConstUint(loc.linnum);
@ -1284,7 +1284,7 @@ void SwitchErrorStatement::toIR(IRState* p)
// call
CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end());
call->setParamAttrs(palist);
call->setAttributes(palist);
gIR->ir->CreateUnreachable();
}

View file

@ -104,7 +104,7 @@ const LLFunctionType* DtoExtractFunctionType(const LLType* type)
//////////////////////////////////////////////////////////////////////////////////////////
void DtoBuildDVarArgList(std::vector<LLValue*>& args, llvm::PAListPtr& palist, TypeFunction* tf, Expressions* arguments, size_t argidx)
void DtoBuildDVarArgList(std::vector<LLValue*>& args, llvm::AttrListPtr& palist, TypeFunction* tf, Expressions* arguments, size_t argidx)
{
Logger::println("doing d-style variadic arguments");
@ -235,7 +235,7 @@ DValue* DtoCallFunction(Loc& loc, Type* resulttype, DValue* fnval, Expressions*
LLFunctionType::param_iterator argiter = argbegin;
// parameter attributes
llvm::PAListPtr palist;
llvm::AttrListPtr palist;
// return attrs
if (tf->retAttrs)
@ -250,7 +250,7 @@ DValue* DtoCallFunction(Loc& loc, Type* resulttype, DValue* fnval, Expressions*
LLValue* retvar = DtoAlloca(argiter->get()->getContainedType(0), ".rettmp");
++argiter;
args.push_back(retvar);
palist = palist.addAttr(1, llvm::ParamAttr::StructRet);
palist = palist.addAttr(1, llvm::Attribute::StructRet);
}
// then comes a context argument...
@ -364,26 +364,13 @@ DValue* DtoCallFunction(Loc& loc, Type* resulttype, DValue* fnval, Expressions*
{
LLFunction* llfunc = llvm::dyn_cast<LLFunction>(dfnval->val);
if (llfunc && llfunc->isIntrinsic())
palist = llvm::Intrinsic::getParamAttrs((llvm::Intrinsic::ID)llfunc->getIntrinsicID());
palist = llvm::Intrinsic::getAttributes((llvm::Intrinsic::ID)llfunc->getIntrinsicID());
else
call->setCallingConv(callconv);
}
else
call->setCallingConv(callconv);
call->setParamAttrs(palist);
call->setAttributes(palist);
return new DImValue(resulttype, retllval);
}

View file

@ -44,14 +44,14 @@ unsigned DtoShouldExtend(Type* type)
{
case Tint8:
case Tint16:
return llvm::ParamAttr::SExt;
return llvm::Attribute::SExt;
case Tuns8:
case Tuns16:
return llvm::ParamAttr::ZExt;
return llvm::Attribute::ZExt;
}
}
return llvm::ParamAttr::None;
return llvm::Attribute::None;
}
const LLType* DtoType(Type* t)

View file

@ -66,14 +66,12 @@ void IrFunction::popLabelScope()
void IrFunction::setNeverInline()
{
llvm::FunctionNotes cur = func->getNotes();
assert(!(cur & llvm::FN_NOTE_AlwaysInline) && "function can't be never- and always-inline at the same time");
func->setNotes(cur | llvm::FN_NOTE_NoInline);
assert(!func->hasFnAttr(llvm::Attribute::AlwaysInline) && "function can't be never- and always-inline at the same time");
func->addFnAttr(llvm::Attribute::NoInline);
}
void IrFunction::setAlwaysInline()
{
llvm::FunctionNotes cur = func->getNotes();
assert(!(cur & llvm::FN_NOTE_NoInline) && "function can't be never- and always-inline at the same time");
func->setNotes(cur | llvm::FN_NOTE_AlwaysInline);
assert(!func->hasFnAttr(llvm::Attribute::NoInline) && "function can't be never- and always-inline at the same time");
func->addFnAttr(llvm::Attribute::AlwaysInline);
}