mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-08 20:06:03 +03:00
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:
parent
e7ad7296d0
commit
bce9368514
12 changed files with 119 additions and 134 deletions
|
@ -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();
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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"
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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);
|
||||
|
|
148
gen/runtime.cpp
148
gen/runtime.cpp
|
@ -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);
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////////////
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue