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

View file

@ -9,7 +9,7 @@
#include <llvm/BasicBlock.h> #include <llvm/BasicBlock.h>
#include <llvm/Instructions.h> #include <llvm/Instructions.h>
#include <llvm/InlineAsm.h> #include <llvm/InlineAsm.h>
#include <llvm/ParameterAttributes.h> #include <llvm/Attributes.h>
#include <llvm/Support/MathExtras.h> #include <llvm/Support/MathExtras.h>
#include <llvm/Pass.h> #include <llvm/Pass.h>
#include <llvm/PassManager.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"); Logger::println("struct param");
paramvec.push_back(getPtrToType(at)); paramvec.push_back(getPtrToType(at));
if (!refOrOut) if (!refOrOut)
arg->llvmAttrs |= llvm::ParamAttr::ByVal; arg->llvmAttrs |= llvm::Attribute::ByVal;
} }
else if (isaArray(at)) { else if (isaArray(at)) {
// static array are passed by reference // static array are passed by reference
@ -341,10 +341,10 @@ static void set_param_attrs(TypeFunction* f, llvm::Function* func, FuncDeclarati
llidx += 2; llidx += 2;
int funcNumArgs = func->getArgumentList().size(); int funcNumArgs = func->getArgumentList().size();
std::vector<llvm::ParamAttrsWithIndex> attrs; std::vector<llvm::AttributeWithIndex> attrs;
int k = 0; int k = 0;
llvm::ParamAttrsWithIndex PAWI; llvm::AttributeWithIndex PAWI;
// set return value attrs if any // set return value attrs if any
if (f->retAttrs) if (f->retAttrs)
@ -358,7 +358,7 @@ static void set_param_attrs(TypeFunction* f, llvm::Function* func, FuncDeclarati
if (f->retInPtr) if (f->retInPtr)
{ {
PAWI.Index = 1; PAWI.Index = 1;
PAWI.Attrs = llvm::ParamAttr::StructRet; PAWI.Attrs = llvm::Attribute::StructRet;
attrs.push_back(PAWI); 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) if (fdecl->isMain() && Argument::dim(f->parameters) == 0)
{ {
PAWI.Index = llidx; PAWI.Index = llidx;
PAWI.Attrs = llvm::ParamAttr::ByVal; PAWI.Attrs = llvm::Attribute::ByVal;
attrs.push_back(PAWI); attrs.push_back(PAWI);
llidx++; llidx++;
} }
@ -384,8 +384,8 @@ static void set_param_attrs(TypeFunction* f, llvm::Function* func, FuncDeclarati
attrs.push_back(PAWI); attrs.push_back(PAWI);
} }
llvm::PAListPtr palist = llvm::PAListPtr::get(attrs.begin(), attrs.end()); llvm::AttrListPtr palist = llvm::AttrListPtr::get(attrs.begin(), attrs.end());
func->setParamAttrs(palist); func->setAttributes(palist);
} }
////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////

View file

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

View file

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

View file

@ -133,7 +133,7 @@ LLValue* DtoCallableValue(DValue* fn);
const LLFunctionType* DtoExtractFunctionType(const LLType* type); 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); 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(); const llvm::FunctionType* fnty = fn->getFunctionType();
llvm::Function* resfn = llvm::cast<llvm::Function>(target->getOrInsertFunction(name, fnty)); llvm::Function* resfn = llvm::cast<llvm::Function>(target->getOrInsertFunction(name, fnty));
resfn->setParamAttrs(fn->getParamAttrs()); resfn->setAttributes(fn->getAttributes());
return resfn; return resfn;
} }
@ -201,11 +201,11 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(stringTy); types.push_back(stringTy);
types.push_back(intTy); types.push_back(intTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); palist = palist.addAttr(1, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname3, M)->setAttributes(palist);
} }
// void _d_assert_msg( char[] msg, char[] file, uint line ) // 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(stringTy);
types.push_back(intTy); types.push_back(intTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(voidPtrTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 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(TY); \
types.push_back(rt_dg1()); \ types.push_back(rt_dg1()); \
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \ const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
llvm::PAListPtr palist; \ llvm::AttrListPtr palist; \
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \ palist = palist.addAttr(1, llvm::Attribute::ByVal); \
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \ palist = palist.addAttr(2, llvm::Attribute::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \ llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \ llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
} }
STR_APPLY1(stringTy, "_aApplycw1", "_aApplycd1") STR_APPLY1(stringTy, "_aApplycw1", "_aApplycd1")
STR_APPLY1(wstringTy, "_aApplywc1", "_aApplywd1") STR_APPLY1(wstringTy, "_aApplywc1", "_aApplywd1")
@ -403,11 +403,11 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(TY); \ types.push_back(TY); \
types.push_back(rt_dg2()); \ types.push_back(rt_dg2()); \
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \ const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
llvm::PAListPtr palist; \ llvm::AttrListPtr palist; \
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \ palist = palist.addAttr(1, llvm::Attribute::ByVal); \
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \ palist = palist.addAttr(2, llvm::Attribute::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \ llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \ llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
} }
STR_APPLY2(stringTy, "_aApplycw2", "_aApplycd2") STR_APPLY2(stringTy, "_aApplycw2", "_aApplycd2")
STR_APPLY2(wstringTy, "_aApplywc2", "_aApplywd2") STR_APPLY2(wstringTy, "_aApplywc2", "_aApplywd2")
@ -422,11 +422,11 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(TY); \ types.push_back(TY); \
types.push_back(rt_dg1()); \ types.push_back(rt_dg1()); \
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \ const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
llvm::PAListPtr palist; \ llvm::AttrListPtr palist; \
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \ palist = palist.addAttr(1, llvm::Attribute::ByVal); \
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \ palist = palist.addAttr(2, llvm::Attribute::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \ llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \ llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
} }
STR_APPLY_R1(stringTy, "_aApplyRcw1", "_aApplyRcd1") STR_APPLY_R1(stringTy, "_aApplyRcw1", "_aApplyRcd1")
STR_APPLY_R1(wstringTy, "_aApplyRwc1", "_aApplyRwd1") STR_APPLY_R1(wstringTy, "_aApplyRwc1", "_aApplyRwd1")
@ -441,11 +441,11 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(TY); \ types.push_back(TY); \
types.push_back(rt_dg2()); \ types.push_back(rt_dg2()); \
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \ const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); \
llvm::PAListPtr palist; \ llvm::AttrListPtr palist; \
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); \ palist = palist.addAttr(1, llvm::Attribute::ByVal); \
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); \ palist = palist.addAttr(2, llvm::Attribute::ByVal); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); \ llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist); \
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); \ llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist); \
} }
STR_APPLY_R2(stringTy, "_aApplyRcw2", "_aApplyRcd2") STR_APPLY_R2(stringTy, "_aApplyRcw2", "_aApplyRcd2")
STR_APPLY_R2(wstringTy, "_aApplyRwc2", "_aApplyRwd2") STR_APPLY_R2(wstringTy, "_aApplyRwc2", "_aApplyRwd2")
@ -533,10 +533,10 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(stringTy); types.push_back(stringTy);
types.push_back(stringTy); types.push_back(stringTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
} }
// wchar[] _adReverseWchar(wchar[] a) // wchar[] _adReverseWchar(wchar[] a)
@ -548,10 +548,10 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(wstringTy); types.push_back(wstringTy);
types.push_back(wstringTy); types.push_back(wstringTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
} }
// Array _adReverse(Array a, size_t szelem) // 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(rt_array(byteTy));
types.push_back(sizeTy); types.push_back(sizeTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
} }
// Array _adDupT(TypeInfo ti, Array a) // Array _adDupT(TypeInfo ti, Array a)
@ -575,9 +575,9 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(typeInfoTy); types.push_back(typeInfoTy);
types.push_back(rt_array(byteTy)); types.push_back(rt_array(byteTy));
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(3, llvm::ParamAttr::ByVal); palist = palist.addAttr(3, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
} }
// int _adEq(Array a1, Array a2, TypeInfo ti) // 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(rt_array(byteTy));
types.push_back(typeInfoTy); types.push_back(typeInfoTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname2, M)->setAttributes(palist);
} }
// int _adCmpChar(Array a1, Array a2) // 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));
types.push_back(rt_array(byteTy)); types.push_back(rt_array(byteTy));
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
} }
// Array _adSort(Array a, TypeInfo ti) // Array _adSort(Array a, TypeInfo ti)
@ -618,9 +618,9 @@ static void LLVM_D_BuildRuntimeModule()
types.push_back(rt_array(byteTy)); types.push_back(rt_array(byteTy));
types.push_back(typeInfoTy); types.push_back(typeInfoTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(voidTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 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(sizeTy);
types.push_back(rt_dg1()); types.push_back(rt_dg1());
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(3, llvm::ParamAttr::ByVal); palist = palist.addAttr(3, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
} }
// int _aaApply2(AA aa, size_t keysize, dg2_t dg) // 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(sizeTy);
types.push_back(rt_dg1()); types.push_back(rt_dg1());
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(3, llvm::ParamAttr::ByVal); palist = palist.addAttr(3, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 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(rt_array(rt_array2(byteTy)));
types.push_back(stringTy); types.push_back(stringTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
} }
// int _d_switch_ustring(wchar[][] table, wchar[] ca) // 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(rt_array(rt_array2(shortTy)));
types.push_back(wstringTy); types.push_back(wstringTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setAttributes(palist);
} }
// int _d_switch_dstring(dchar[][] table, dchar[] ca) // 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(rt_array(rt_array2(intTy)));
types.push_back(dstringTy); types.push_back(dstringTy);
const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false); const llvm::FunctionType* fty = llvm::FunctionType::get(intTy, types, false);
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
llvm::Function::Create(fty, llvm::GlobalValue::ExternalLinkage, fname, M)->setParamAttrs(palist); 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"); CallOrInvoke* call = gIR->CreateCallOrInvoke2(fn, table, llval, "tmp");
llvm::PAListPtr palist; llvm::AttrListPtr palist;
palist = palist.addAttr(1, llvm::ParamAttr::ByVal); palist = palist.addAttr(1, llvm::Attribute::ByVal);
palist = palist.addAttr(2, llvm::ParamAttr::ByVal); palist = palist.addAttr(2, llvm::Attribute::ByVal);
call->setParamAttrs(palist); call->setAttributes(palist);
return call->get(); return call->get();
} }
@ -1255,7 +1255,7 @@ void SwitchErrorStatement::toIR(IRState* p)
llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_switch_error"); llvm::Function* fn = LLVM_D_GetRuntimeFunction(gIR->module, "_d_switch_error");
// param attrs // param attrs
llvm::PAListPtr palist; llvm::AttrListPtr palist;
int idx = 1; int idx = 1;
std::vector<LLValue*> args; std::vector<LLValue*> args;
@ -1276,7 +1276,7 @@ void SwitchErrorStatement::toIR(IRState* p)
DtoStore(c->getOperand(1), ptr); DtoStore(c->getOperand(1), ptr);
args.push_back(alloc); args.push_back(alloc);
palist = palist.addAttr(idx++, llvm::ParamAttr::ByVal); palist = palist.addAttr(idx++, llvm::Attribute::ByVal);
// line param // line param
c = DtoConstUint(loc.linnum); c = DtoConstUint(loc.linnum);
@ -1284,7 +1284,7 @@ void SwitchErrorStatement::toIR(IRState* p)
// call // call
CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end()); CallOrInvoke* call = gIR->CreateCallOrInvoke(fn, args.begin(), args.end());
call->setParamAttrs(palist); call->setAttributes(palist);
gIR->ir->CreateUnreachable(); 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"); 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; LLFunctionType::param_iterator argiter = argbegin;
// parameter attributes // parameter attributes
llvm::PAListPtr palist; llvm::AttrListPtr palist;
// return attrs // return attrs
if (tf->retAttrs) if (tf->retAttrs)
@ -250,7 +250,7 @@ DValue* DtoCallFunction(Loc& loc, Type* resulttype, DValue* fnval, Expressions*
LLValue* retvar = DtoAlloca(argiter->get()->getContainedType(0), ".rettmp"); LLValue* retvar = DtoAlloca(argiter->get()->getContainedType(0), ".rettmp");
++argiter; ++argiter;
args.push_back(retvar); args.push_back(retvar);
palist = palist.addAttr(1, llvm::ParamAttr::StructRet); palist = palist.addAttr(1, llvm::Attribute::StructRet);
} }
// then comes a context argument... // 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); LLFunction* llfunc = llvm::dyn_cast<LLFunction>(dfnval->val);
if (llfunc && llfunc->isIntrinsic()) if (llfunc && llfunc->isIntrinsic())
palist = llvm::Intrinsic::getParamAttrs((llvm::Intrinsic::ID)llfunc->getIntrinsicID()); palist = llvm::Intrinsic::getAttributes((llvm::Intrinsic::ID)llfunc->getIntrinsicID());
else else
call->setCallingConv(callconv); call->setCallingConv(callconv);
} }
else else
call->setCallingConv(callconv); call->setCallingConv(callconv);
call->setParamAttrs(palist); call->setAttributes(palist);
return new DImValue(resulttype, retllval); return new DImValue(resulttype, retllval);
} }

View file

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

View file

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