mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-23 22:23:00 +00:00
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. This requires corresponding changes in llvm-gcc and clang. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56622 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1627,23 +1627,23 @@ static void ChangeCalleesToFastCall(Function *F) {
|
||||
}
|
||||
}
|
||||
|
||||
static PAListPtr StripNest(const PAListPtr &Attrs) {
|
||||
static AttrListPtr StripNest(const AttrListPtr &Attrs) {
|
||||
for (unsigned i = 0, e = Attrs.getNumSlots(); i != e; ++i) {
|
||||
if ((Attrs.getSlot(i).Attrs & ParamAttr::Nest) == 0)
|
||||
if ((Attrs.getSlot(i).Attrs & Attribute::Nest) == 0)
|
||||
continue;
|
||||
|
||||
// There can be only one.
|
||||
return Attrs.removeAttr(Attrs.getSlot(i).Index, ParamAttr::Nest);
|
||||
return Attrs.removeAttr(Attrs.getSlot(i).Index, Attribute::Nest);
|
||||
}
|
||||
|
||||
return Attrs;
|
||||
}
|
||||
|
||||
static void RemoveNestAttribute(Function *F) {
|
||||
F->setParamAttrs(StripNest(F->getParamAttrs()));
|
||||
F->setAttributes(StripNest(F->getAttributes()));
|
||||
for (Value::use_iterator UI = F->use_begin(), E = F->use_end(); UI != E;++UI){
|
||||
CallSite User(cast<Instruction>(*UI));
|
||||
User.setParamAttrs(StripNest(User.getParamAttrs()));
|
||||
User.setAttributes(StripNest(User.getAttributes()));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1670,7 +1670,7 @@ bool GlobalOpt::OptimizeFunctions(Module &M) {
|
||||
Changed = true;
|
||||
}
|
||||
|
||||
if (F->getParamAttrs().hasAttrSomewhere(ParamAttr::Nest) &&
|
||||
if (F->getAttributes().hasAttrSomewhere(Attribute::Nest) &&
|
||||
OnlyCalledDirectly(F)) {
|
||||
// The function is not used by a trampoline intrinsic, so it is safe
|
||||
// to remove the 'nest' attribute.
|
||||
|
||||
Reference in New Issue
Block a user