summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2006-01-23 07:42:30 +0000
committerReid Spencer <rspencer@reidspencer.com>2006-01-23 07:42:30 +0000
commit281dcd6ace26c8fa6aac06b9240b833cc0c1af32 (patch)
treefc087c067cccbce8c1458650fc6ca4ff522bee46
parent95c05bf1b47d0b91bddb4aac509c4b1b62a89dca (diff)
downloadbcm5719-llvm-281dcd6ace26c8fa6aac06b9240b833cc0c1af32.tar.gz
bcm5719-llvm-281dcd6ace26c8fa6aac06b9240b833cc0c1af32.zip
For PR411:
No functionality changes, just improve the code by a) providing better function names, b) eliminating a call to get_suffix and c) tightening up a function elimination test to reduce further checking. llvm-svn: 25540
-rw-r--r--llvm/lib/VMCore/AutoUpgrade.cpp13
1 files changed, 6 insertions, 7 deletions
diff --git a/llvm/lib/VMCore/AutoUpgrade.cpp b/llvm/lib/VMCore/AutoUpgrade.cpp
index 4f0f620c845..b68b8b70fef 100644
--- a/llvm/lib/VMCore/AutoUpgrade.cpp
+++ b/llvm/lib/VMCore/AutoUpgrade.cpp
@@ -36,7 +36,7 @@ static inline const char* get_suffix(const Type* Ty) {
return 0;
}
-static inline const Type* get_type(Function* F) {
+static inline const Type* getTypeFromFunctionName(Function* F) {
// If there's no function, we can't get the argument type.
if (!F)
return 0;
@@ -45,7 +45,7 @@ static inline const Type* get_type(Function* F) {
const std::string& Name = F->getName();
// Quickly eliminate it, if it's not a candidate.
- if (Name.length() <= 5 || Name[0] != 'l' || Name[1] != 'l' || Name[2] !=
+ if (Name.length() <= 8 || Name[0] != 'l' || Name[1] != 'l' || Name[2] !=
'v' || Name[3] != 'm' || Name[4] != '.')
return 0;
@@ -109,10 +109,9 @@ bool llvm::IsUpgradeableIntrinsicName(const std::string& Name) {
// the argument types.
Function* llvm::UpgradeIntrinsicFunction(Function* F) {
// See if its one of the name's we're interested in.
- if (const Type* Ty = get_type(F)) {
- const char* suffix = get_suffix(Ty);
- if (Ty->isSigned())
- suffix = get_suffix(Ty->getUnsignedVersion());
+ if (const Type* Ty = getTypeFromFunctionName(F)) {
+ const char* suffix =
+ get_suffix((Ty->isSigned() ? Ty->getUnsignedVersion() : Ty));
assert(suffix && "Intrinsic parameter type not recognized");
const std::string& Name = F->getName();
std::string new_name = Name + suffix;
@@ -143,7 +142,7 @@ Function* llvm::UpgradeIntrinsicFunction(Function* F) {
Instruction* llvm::UpgradeIntrinsicCall(CallInst *CI) {
Function *F = CI->getCalledFunction();
- if (const Type* Ty = get_type(F)) {
+ if (const Type* Ty = getTypeFromFunctionName(F)) {
Function* newF = UpgradeIntrinsicFunction(F);
std::vector<Value*> Oprnds;
for (User::op_iterator OI = CI->op_begin(), OE = CI->op_end();
OpenPOWER on IntegriCloud