mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-05-14 09:38:40 +00:00
Have 'addFnAttr' take the attribute enum value. Then have it build the attribute object and add it appropriately. No functionality change.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@165595 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ebf3a37c0a
commit
f5e6d70f8c
@ -176,9 +176,11 @@ public:
|
|||||||
|
|
||||||
/// addFnAttr - Add function attributes to this function.
|
/// addFnAttr - Add function attributes to this function.
|
||||||
///
|
///
|
||||||
void addFnAttr(Attributes N) {
|
void addFnAttr(Attributes::AttrVal N) {
|
||||||
// Function Attributes are stored at ~0 index
|
// Function Attributes are stored at ~0 index
|
||||||
addAttribute(~0U, N);
|
Attributes::Builder B;
|
||||||
|
B.addAttribute(N);
|
||||||
|
addAttribute(~0U, Attributes::get(B));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// removeFnAttr - Remove function attributes from this function.
|
/// removeFnAttr - Remove function attributes from this function.
|
||||||
@ -221,9 +223,8 @@ public:
|
|||||||
bool doesNotAccessMemory() const {
|
bool doesNotAccessMemory() const {
|
||||||
return getFnAttributes().hasAttribute(Attributes::ReadNone);
|
return getFnAttributes().hasAttribute(Attributes::ReadNone);
|
||||||
}
|
}
|
||||||
void setDoesNotAccessMemory(bool DoesNotAccessMemory = true) {
|
void setDoesNotAccessMemory() {
|
||||||
if (DoesNotAccessMemory) addFnAttr(Attribute::ReadNone);
|
addFnAttr(Attributes::ReadNone);
|
||||||
else removeFnAttr(Attribute::ReadNone);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Determine if the function does not access or only reads memory.
|
/// @brief Determine if the function does not access or only reads memory.
|
||||||
@ -231,27 +232,24 @@ public:
|
|||||||
return doesNotAccessMemory() ||
|
return doesNotAccessMemory() ||
|
||||||
getFnAttributes().hasAttribute(Attributes::ReadOnly);
|
getFnAttributes().hasAttribute(Attributes::ReadOnly);
|
||||||
}
|
}
|
||||||
void setOnlyReadsMemory(bool OnlyReadsMemory = true) {
|
void setOnlyReadsMemory() {
|
||||||
if (OnlyReadsMemory) addFnAttr(Attribute::ReadOnly);
|
addFnAttr(Attributes::ReadOnly);
|
||||||
else removeFnAttr(Attribute::ReadOnly | Attribute::ReadNone);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Determine if the function cannot return.
|
/// @brief Determine if the function cannot return.
|
||||||
bool doesNotReturn() const {
|
bool doesNotReturn() const {
|
||||||
return getFnAttributes().hasAttribute(Attributes::NoReturn);
|
return getFnAttributes().hasAttribute(Attributes::NoReturn);
|
||||||
}
|
}
|
||||||
void setDoesNotReturn(bool DoesNotReturn = true) {
|
void setDoesNotReturn() {
|
||||||
if (DoesNotReturn) addFnAttr(Attribute::NoReturn);
|
addFnAttr(Attributes::NoReturn);
|
||||||
else removeFnAttr(Attribute::NoReturn);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief Determine if the function cannot unwind.
|
/// @brief Determine if the function cannot unwind.
|
||||||
bool doesNotThrow() const {
|
bool doesNotThrow() const {
|
||||||
return getFnAttributes().hasAttribute(Attributes::NoUnwind);
|
return getFnAttributes().hasAttribute(Attributes::NoUnwind);
|
||||||
}
|
}
|
||||||
void setDoesNotThrow(bool DoesNotThrow = true) {
|
void setDoesNotThrow() {
|
||||||
if (DoesNotThrow) addFnAttr(Attribute::NoUnwind);
|
addFnAttr(Attributes::NoUnwind);
|
||||||
else removeFnAttr(Attribute::NoUnwind);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief True if the ABI mandates (or the user requested) that this
|
/// @brief True if the ABI mandates (or the user requested) that this
|
||||||
@ -259,11 +257,8 @@ public:
|
|||||||
bool hasUWTable() const {
|
bool hasUWTable() const {
|
||||||
return getFnAttributes().hasAttribute(Attributes::UWTable);
|
return getFnAttributes().hasAttribute(Attributes::UWTable);
|
||||||
}
|
}
|
||||||
void setHasUWTable(bool HasUWTable = true) {
|
void setHasUWTable() {
|
||||||
if (HasUWTable)
|
addFnAttr(Attributes::UWTable);
|
||||||
addFnAttr(Attribute::UWTable);
|
|
||||||
else
|
|
||||||
removeFnAttr(Attribute::UWTable);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// @brief True if this function needs an unwind table.
|
/// @brief True if this function needs an unwind table.
|
||||||
|
@ -94,10 +94,10 @@ static bool InlineCallIfPossible(CallSite CS, InlineFunctionInfo &IFI,
|
|||||||
// If the inlined function had a higher stack protection level than the
|
// If the inlined function had a higher stack protection level than the
|
||||||
// calling function, then bump up the caller's stack protection level.
|
// calling function, then bump up the caller's stack protection level.
|
||||||
if (Callee->getFnAttributes().hasAttribute(Attributes::StackProtectReq))
|
if (Callee->getFnAttributes().hasAttribute(Attributes::StackProtectReq))
|
||||||
Caller->addFnAttr(Attribute::StackProtectReq);
|
Caller->addFnAttr(Attributes::StackProtectReq);
|
||||||
else if (Callee->getFnAttributes().hasAttribute(Attributes::StackProtect) &&
|
else if (Callee->getFnAttributes().hasAttribute(Attributes::StackProtect) &&
|
||||||
!Caller->getFnAttributes().hasAttribute(Attributes::StackProtectReq))
|
!Caller->getFnAttributes().hasAttribute(Attributes::StackProtectReq))
|
||||||
Caller->addFnAttr(Attribute::StackProtect);
|
Caller->addFnAttr(Attributes::StackProtect);
|
||||||
|
|
||||||
// Look at all of the allocas that we inlined through this call site. If we
|
// Look at all of the allocas that we inlined through this call site. If we
|
||||||
// have already inlined other allocas through other calls into this function,
|
// have already inlined other allocas through other calls into this function,
|
||||||
|
@ -682,9 +682,7 @@ void GCOVProfiler::insertCounterWriteout(
|
|||||||
"__llvm_gcov_init", M);
|
"__llvm_gcov_init", M);
|
||||||
F->setUnnamedAddr(true);
|
F->setUnnamedAddr(true);
|
||||||
F->setLinkage(GlobalValue::InternalLinkage);
|
F->setLinkage(GlobalValue::InternalLinkage);
|
||||||
Attributes::Builder B;
|
F->addFnAttr(Attributes::NoInline);
|
||||||
B.addAttribute(Attributes::NoInline);
|
|
||||||
F->addFnAttr(Attributes::get(B));
|
|
||||||
|
|
||||||
BB = BasicBlock::Create(*Ctx, "entry", F);
|
BB = BasicBlock::Create(*Ctx, "entry", F);
|
||||||
Builder.SetInsertPoint(BB);
|
Builder.SetInsertPoint(BB);
|
||||||
@ -703,9 +701,7 @@ void GCOVProfiler::insertIndirectCounterIncrement() {
|
|||||||
cast<Function>(GCOVProfiler::getIncrementIndirectCounterFunc());
|
cast<Function>(GCOVProfiler::getIncrementIndirectCounterFunc());
|
||||||
Fn->setUnnamedAddr(true);
|
Fn->setUnnamedAddr(true);
|
||||||
Fn->setLinkage(GlobalValue::InternalLinkage);
|
Fn->setLinkage(GlobalValue::InternalLinkage);
|
||||||
Attributes::Builder B;
|
Fn->addFnAttr(Attributes::NoInline);
|
||||||
B.addAttribute(Attributes::NoInline);
|
|
||||||
Fn->addFnAttr(Attributes::get(B));
|
|
||||||
|
|
||||||
Type *Int32Ty = Type::getInt32Ty(*Ctx);
|
Type *Int32Ty = Type::getInt32Ty(*Ctx);
|
||||||
Type *Int64Ty = Type::getInt64Ty(*Ctx);
|
Type *Int64Ty = Type::getInt64Ty(*Ctx);
|
||||||
|
@ -346,7 +346,7 @@ Function *CodeExtractor::constructFunction(const ValueSet &inputs,
|
|||||||
header->getName(), M);
|
header->getName(), M);
|
||||||
// If the old function is no-throw, so is the new one.
|
// If the old function is no-throw, so is the new one.
|
||||||
if (oldFunction->doesNotThrow())
|
if (oldFunction->doesNotThrow())
|
||||||
newFunction->setDoesNotThrow(true);
|
newFunction->setDoesNotThrow();
|
||||||
|
|
||||||
newFunction->getBasicBlockList().push_back(newRootNode);
|
newFunction->getBasicBlockList().push_back(newRootNode);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user