diff options
author | Jeff Cohen <jeffc@jolt-lang.org> | 2006-01-26 20:41:32 +0000 |
---|---|---|
committer | Jeff Cohen <jeffc@jolt-lang.org> | 2006-01-26 20:41:32 +0000 |
commit | 9471c8a93b117d8ac01c4ef1cb9faa583e03dec0 (patch) | |
tree | 4cebe10aa3a8220b4bf6d1c4ff31487463bcdeb0 | |
parent | 4ccb070f158b0f331c68de800c6bab8c31c2ecb6 (diff) |
Improve compatibility with VC2005, patch by Morten Ofstad!
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25661 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/LiveInterval.h | 3 | ||||
-rw-r--r-- | include/llvm/Target/SubtargetFeature.h | 8 | ||||
-rw-r--r-- | lib/Target/SubtargetFeature.cpp | 5 | ||||
-rw-r--r-- | lib/Target/X86/X86FloatingPoint.cpp | 7 | ||||
-rw-r--r-- | lib/Transforms/Scalar/CorrelatedExprs.cpp | 6 |
5 files changed, 21 insertions, 8 deletions
diff --git a/include/llvm/CodeGen/LiveInterval.h b/include/llvm/CodeGen/LiveInterval.h index 4606781efd..f4f2b47366 100644 --- a/include/llvm/CodeGen/LiveInterval.h +++ b/include/llvm/CodeGen/LiveInterval.h @@ -64,6 +64,9 @@ namespace llvm { return V < LR.start; } + inline bool operator<(const LiveRange &LR, unsigned V) { + return LR.start < V; + } /// LiveInterval - This class represents some number of live ranges for a /// register or value. This class also contains a bit of register allocator diff --git a/include/llvm/Target/SubtargetFeature.h b/include/llvm/Target/SubtargetFeature.h index aab8688588..a9f7a71921 100644 --- a/include/llvm/Target/SubtargetFeature.h +++ b/include/llvm/Target/SubtargetFeature.h @@ -36,8 +36,8 @@ struct SubtargetFeatureKV { uint32_t Value; // K-V integer value // Compare routine for std binary search - bool operator<(const std::string &S) const { - return strcmp(Key, S.c_str()) < 0; + bool operator<(const SubtargetFeatureKV &S) const { + return strcmp(Key, S.Key) < 0; } }; @@ -51,8 +51,8 @@ struct SubtargetInfoKV { void *Value; // K-V pointer value // Compare routine for std binary search - bool operator<(const std::string &S) const { - return strcmp(Key, S.c_str()) < 0; + bool operator<(const SubtargetInfoKV &S) const { + return strcmp(Key, S.Key) < 0; } }; diff --git a/lib/Target/SubtargetFeature.cpp b/lib/Target/SubtargetFeature.cpp index c9ddaf74b8..7856ddb66a 100644 --- a/lib/Target/SubtargetFeature.cpp +++ b/lib/Target/SubtargetFeature.cpp @@ -112,10 +112,13 @@ void SubtargetFeatures::AddFeature(const std::string &String, /// Find KV in array using binary search. template<typename T> const T *Find(const std::string &S, const T *A, size_t L) { + // Make the lower bound element we're looking for + T KV; + KV.Key = S.c_str(); // Determine the end of the array const T *Hi = A + L; // Binary search the array - const T *F = std::lower_bound(A, Hi, S); + const T *F = std::lower_bound(A, Hi, KV); // If not found then return NULL if (F == Hi || std::string(F->Key) != S) return NULL; // Return the found array item diff --git a/lib/Target/X86/X86FloatingPoint.cpp b/lib/Target/X86/X86FloatingPoint.cpp index 73144cb28f..af5bb7db33 100644 --- a/lib/Target/X86/X86FloatingPoint.cpp +++ b/lib/Target/X86/X86FloatingPoint.cpp @@ -281,7 +281,12 @@ namespace { unsigned from; unsigned to; bool operator<(const TableEntry &TE) const { return from < TE.from; } - bool operator<(unsigned V) const { return from < V; } + friend bool operator<(const TableEntry &TE, unsigned V) { + return TE.from < V; + } + friend bool operator<(unsigned V, const TableEntry &TE) { + return V < TE.from; + } }; } diff --git a/lib/Transforms/Scalar/CorrelatedExprs.cpp b/lib/Transforms/Scalar/CorrelatedExprs.cpp index d00614b5d3..3da7e6e2df 100644 --- a/lib/Transforms/Scalar/CorrelatedExprs.cpp +++ b/lib/Transforms/Scalar/CorrelatedExprs.cpp @@ -135,7 +135,8 @@ namespace { Relation &getRelation(Value *V) { // Binary search for V's entry... std::vector<Relation>::iterator I = - std::lower_bound(Relationships.begin(), Relationships.end(), V); + std::lower_bound(Relationships.begin(), Relationships.end(), + Relation(V)); // If we found the entry, return it... if (I != Relationships.end() && I->getValue() == V) @@ -148,7 +149,8 @@ namespace { const Relation *requestRelation(Value *V) const { // Binary search for V's entry... std::vector<Relation>::const_iterator I = - std::lower_bound(Relationships.begin(), Relationships.end(), V); + std::lower_bound(Relationships.begin(), Relationships.end(), + Relation(V)); if (I != Relationships.end() && I->getValue() == V) return &*I; return 0; |