forked from OSchip/llvm-project
Large mechanical patch.
s/ParamAttr/Attribute/g s/PAList/AttrList/g s/FnAttributeWithIndex/AttributeWithIndex/g s/FnAttr/Attribute/g This sets the stage - to implement function notes as function attributes and - to distinguish between function attributes and return value attributes. llvm-svn: 56623
This commit is contained in:
parent
4c758ea3e0
commit
322300d1c2
|
@ -508,17 +508,17 @@ bool CodeGenModule::ReturnTypeUsesSret(QualType RetTy) {
|
|||
return getABIReturnInfo(RetTy, getContext()).isStructRet();
|
||||
}
|
||||
|
||||
void CodeGenModule::ConstructParamAttrList(const Decl *TargetDecl,
|
||||
void CodeGenModule::ConstructAttributeList(const Decl *TargetDecl,
|
||||
ArgTypeIterator begin,
|
||||
ArgTypeIterator end,
|
||||
ParamAttrListType &PAL) {
|
||||
AttributeListType &PAL) {
|
||||
unsigned FuncAttrs = 0;
|
||||
|
||||
if (TargetDecl) {
|
||||
if (TargetDecl->getAttr<NoThrowAttr>())
|
||||
FuncAttrs |= llvm::ParamAttr::NoUnwind;
|
||||
FuncAttrs |= llvm::Attribute::NoUnwind;
|
||||
if (TargetDecl->getAttr<NoReturnAttr>())
|
||||
FuncAttrs |= llvm::ParamAttr::NoReturn;
|
||||
FuncAttrs |= llvm::Attribute::NoReturn;
|
||||
}
|
||||
|
||||
QualType RetTy = *begin;
|
||||
|
@ -528,17 +528,17 @@ void CodeGenModule::ConstructParamAttrList(const Decl *TargetDecl,
|
|||
case ABIArgInfo::Default:
|
||||
if (RetTy->isPromotableIntegerType()) {
|
||||
if (RetTy->isSignedIntegerType()) {
|
||||
FuncAttrs |= llvm::ParamAttr::SExt;
|
||||
FuncAttrs |= llvm::Attribute::SExt;
|
||||
} else if (RetTy->isUnsignedIntegerType()) {
|
||||
FuncAttrs |= llvm::ParamAttr::ZExt;
|
||||
FuncAttrs |= llvm::Attribute::ZExt;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case ABIArgInfo::StructRet:
|
||||
PAL.push_back(llvm::FnAttributeWithIndex::get(Index,
|
||||
llvm::ParamAttr::StructRet|
|
||||
llvm::ParamAttr::NoAlias));
|
||||
PAL.push_back(llvm::AttributeWithIndex::get(Index,
|
||||
llvm::Attribute::StructRet|
|
||||
llvm::Attribute::NoAlias));
|
||||
++Index;
|
||||
break;
|
||||
|
||||
|
@ -551,10 +551,10 @@ void CodeGenModule::ConstructParamAttrList(const Decl *TargetDecl,
|
|||
}
|
||||
|
||||
if (FuncAttrs)
|
||||
PAL.push_back(llvm::FnAttributeWithIndex::get(0, FuncAttrs));
|
||||
PAL.push_back(llvm::AttributeWithIndex::get(0, FuncAttrs));
|
||||
for (++begin; begin != end; ++begin) {
|
||||
QualType ParamType = *begin;
|
||||
unsigned ParamAttrs = 0;
|
||||
unsigned Attributes = 0;
|
||||
ABIArgInfo AI = getABIArgumentInfo(ParamType, getContext());
|
||||
|
||||
switch (AI.getKind()) {
|
||||
|
@ -563,16 +563,16 @@ void CodeGenModule::ConstructParamAttrList(const Decl *TargetDecl,
|
|||
assert(0 && "Invalid ABI kind for non-return argument");
|
||||
|
||||
case ABIArgInfo::ByVal:
|
||||
ParamAttrs |= llvm::ParamAttr::ByVal;
|
||||
Attributes |= llvm::Attribute::ByVal;
|
||||
assert(AI.getByValAlignment() == 0 && "FIXME: alignment unhandled");
|
||||
break;
|
||||
|
||||
case ABIArgInfo::Default:
|
||||
if (ParamType->isPromotableIntegerType()) {
|
||||
if (ParamType->isSignedIntegerType()) {
|
||||
ParamAttrs |= llvm::ParamAttr::SExt;
|
||||
Attributes |= llvm::Attribute::SExt;
|
||||
} else if (ParamType->isUnsignedIntegerType()) {
|
||||
ParamAttrs |= llvm::ParamAttr::ZExt;
|
||||
Attributes |= llvm::Attribute::ZExt;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
@ -588,8 +588,8 @@ void CodeGenModule::ConstructParamAttrList(const Decl *TargetDecl,
|
|||
}
|
||||
}
|
||||
|
||||
if (ParamAttrs)
|
||||
PAL.push_back(llvm::FnAttributeWithIndex::get(Index, ParamAttrs));
|
||||
if (Attributes)
|
||||
PAL.push_back(llvm::AttributeWithIndex::get(Index, Attributes));
|
||||
++Index;
|
||||
}
|
||||
}
|
||||
|
@ -749,12 +749,12 @@ RValue CodeGenFunction::EmitCall(llvm::Value *Callee,
|
|||
CGCallInfo CallInfo(RetTy, CallArgs);
|
||||
|
||||
// FIXME: Provide TargetDecl so nounwind, noreturn, etc, etc get set.
|
||||
CodeGen::ParamAttrListType ParamAttrList;
|
||||
CGM.ConstructParamAttrList(0,
|
||||
CodeGen::AttributeListType AttributeList;
|
||||
CGM.ConstructAttributeList(0,
|
||||
CallInfo.argtypes_begin(), CallInfo.argtypes_end(),
|
||||
ParamAttrList);
|
||||
CI->setParamAttrs(llvm::PAListPtr::get(ParamAttrList.begin(),
|
||||
ParamAttrList.size()));
|
||||
AttributeList);
|
||||
CI->setAttributes(llvm::AttrListPtr::get(AttributeList.begin(),
|
||||
AttributeList.size()));
|
||||
|
||||
if (const llvm::Function *F = dyn_cast<llvm::Function>(Callee))
|
||||
CI->setCallingConv(F->getCallingConv());
|
||||
|
|
|
@ -21,7 +21,7 @@
|
|||
|
||||
namespace llvm {
|
||||
class Function;
|
||||
struct FnAttributeWithIndex;
|
||||
struct AttributeWithIndex;
|
||||
class Value;
|
||||
|
||||
template<typename T, unsigned> class SmallVector;
|
||||
|
@ -35,7 +35,7 @@ namespace clang {
|
|||
class VarDecl;
|
||||
|
||||
namespace CodeGen {
|
||||
typedef llvm::SmallVector<llvm::FnAttributeWithIndex, 8> ParamAttrListType;
|
||||
typedef llvm::SmallVector<llvm::AttributeWithIndex, 8> AttributeListType;
|
||||
|
||||
/// CallArgList - Type for representing both the value and type of
|
||||
/// arguments in a call.
|
||||
|
|
|
@ -212,15 +212,15 @@ static void SetGlobalValueAttributes(const Decl *D,
|
|||
}
|
||||
}
|
||||
|
||||
void CodeGenModule::SetFunctionParamAttrs(const Decl *D,
|
||||
void CodeGenModule::SetFunctionAttributes(const Decl *D,
|
||||
const CGFunctionInfo &Info,
|
||||
llvm::Function *F) {
|
||||
ParamAttrListType ParamAttrList;
|
||||
ConstructParamAttrList(D, Info.argtypes_begin(), Info.argtypes_end(),
|
||||
ParamAttrList);
|
||||
AttributeListType AttributeList;
|
||||
ConstructAttributeList(D, Info.argtypes_begin(), Info.argtypes_end(),
|
||||
AttributeList);
|
||||
|
||||
F->setParamAttrs(llvm::PAListPtr::get(ParamAttrList.begin(),
|
||||
ParamAttrList.size()));
|
||||
F->setAttributes(llvm::AttrListPtr::get(AttributeList.begin(),
|
||||
AttributeList.size()));
|
||||
|
||||
// Set the appropriate calling convention for the Function.
|
||||
if (D->getAttr<FastCallAttr>())
|
||||
|
@ -240,19 +240,19 @@ void CodeGenModule::SetFunctionAttributesForDefinition(const Decl *D,
|
|||
}
|
||||
|
||||
if (!Features.Exceptions)
|
||||
F->addParamAttr(0, llvm::ParamAttr::NoUnwind);
|
||||
F->addAttribute(0, llvm::Attribute::NoUnwind);
|
||||
}
|
||||
|
||||
void CodeGenModule::SetMethodAttributes(const ObjCMethodDecl *MD,
|
||||
llvm::Function *F) {
|
||||
SetFunctionParamAttrs(MD, CGFunctionInfo(MD, Context), F);
|
||||
SetFunctionAttributes(MD, CGFunctionInfo(MD, Context), F);
|
||||
|
||||
SetFunctionAttributesForDefinition(MD, F);
|
||||
}
|
||||
|
||||
void CodeGenModule::SetFunctionAttributes(const FunctionDecl *FD,
|
||||
llvm::Function *F) {
|
||||
SetFunctionParamAttrs(FD, CGFunctionInfo(FD), F);
|
||||
SetFunctionAttributes(FD, CGFunctionInfo(FD), F);
|
||||
|
||||
SetGlobalValueAttributes(FD, FD->getStorageClass() == FunctionDecl::Static,
|
||||
FD->isInline(), F, false);
|
||||
|
|
|
@ -217,7 +217,7 @@ public:
|
|||
void SetMethodAttributes(const ObjCMethodDecl *MD,
|
||||
llvm::Function *F);
|
||||
|
||||
void SetFunctionParamAttrs(const Decl *D,
|
||||
void SetFunctionAttributes(const Decl *D,
|
||||
const CGFunctionInfo &Info,
|
||||
llvm::Function *F);
|
||||
|
||||
|
@ -225,10 +225,10 @@ public:
|
|||
/// when used as a return type.
|
||||
bool ReturnTypeUsesSret(QualType RetTy);
|
||||
|
||||
void ConstructParamAttrList(const Decl *TargetDecl,
|
||||
void ConstructAttributeList(const Decl *TargetDecl,
|
||||
const ArgTypeIterator begin,
|
||||
const ArgTypeIterator end,
|
||||
ParamAttrListType &PAL);
|
||||
AttributeListType &PAL);
|
||||
|
||||
private:
|
||||
/// SetFunctionAttributesForDefinition - Set function attributes
|
||||
|
|
Loading…
Reference in New Issue