summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-nm/llvm-nm.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2015-07-13 22:01:02 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2015-07-13 22:01:02 +0000
commit45592c64f3104f7a912c82264af027fa5cdb059b (patch)
treeed615ac2b2b0daae633d2182f069e71ea67c9114 /llvm/tools/llvm-nm/llvm-nm.cpp
parent1a550c0a87ae995b23627eafcbfa6a09b5dd489a (diff)
downloadbcm5719-llvm-45592c64f3104f7a912c82264af027fa5cdb059b.tar.gz
bcm5719-llvm-45592c64f3104f7a912c82264af027fa5cdb059b.zip
Use std::make_tuple to reduce code duplication.
Thanks to David Blaikie for the suggestion. llvm-svn: 242074
Diffstat (limited to 'llvm/tools/llvm-nm/llvm-nm.cpp')
-rw-r--r--llvm/tools/llvm-nm/llvm-nm.cpp35
1 files changed, 8 insertions, 27 deletions
diff --git a/llvm/tools/llvm-nm/llvm-nm.cpp b/llvm/tools/llvm-nm/llvm-nm.cpp
index 80f166da399..e7ee3124ed7 100644
--- a/llvm/tools/llvm-nm/llvm-nm.cpp
+++ b/llvm/tools/llvm-nm/llvm-nm.cpp
@@ -185,39 +185,20 @@ struct NMSymbol {
}
static bool compareSymbolAddress(const NMSymbol &A, const NMSymbol &B) {
- bool AUndefined = A.Sym.getFlags() & SymbolRef::SF_Undefined;
- bool BUndefined = B.Sym.getFlags() & SymbolRef::SF_Undefined;
- if (AUndefined && !BUndefined)
- return true;
- if (!AUndefined && BUndefined)
- return false;
- if (A.Address < B.Address)
- return true;
- if (A.Address == B.Address && A.Name < B.Name)
- return true;
- if (A.Address == B.Address && A.Name == B.Name && A.Size < B.Size)
- return true;
- return false;
+ bool ADefined = !(A.Sym.getFlags() & SymbolRef::SF_Undefined);
+ bool BDefined = !(B.Sym.getFlags() & SymbolRef::SF_Undefined);
+ return std::make_tuple(ADefined, A.Address, A.Name, A.Size) <
+ std::make_tuple(BDefined, B.Address, B.Name, B.Size);
}
static bool compareSymbolSize(const NMSymbol &A, const NMSymbol &B) {
- if (A.Size < B.Size)
- return true;
- if (A.Size == B.Size && A.Name < B.Name)
- return true;
- if (A.Size == B.Size && A.Name == B.Name && A.Address < B.Address)
- return true;
- return false;
+ return std::make_tuple(A.Size, A.Name, A.Address) <
+ std::make_tuple(B.Size, B.Name, B.Address);
}
static bool compareSymbolName(const NMSymbol &A, const NMSymbol &B) {
- if (A.Name < B.Name)
- return true;
- if (A.Name == B.Name && A.Size < B.Size)
- return true;
- if (A.Name == B.Name && A.Size == B.Size && A.Address < B.Address)
- return true;
- return false;
+ return std::make_tuple(A.Name, A.Size, A.Address) <
+ std::make_tuple(B.Name, B.Size, B.Address);
}
static char isSymbolList64Bit(SymbolicFile &Obj) {
OpenPOWER on IntegriCloud