[llvm] 43d1c7a - [Hexagon] Fix build: move template specialization into namespace scope

Krzysztof Parzyszek via llvm-commits llvm-commits at lists.llvm.org
Wed Dec 9 15:40:42 PST 2020


Author: Krzysztof Parzyszek
Date: 2020-12-09T17:40:15-06:00
New Revision: 43d1c7a56453f200ea1f91783b0af9837d48afe7

URL: https://github.com/llvm/llvm-project/commit/43d1c7a56453f200ea1f91783b0af9837d48afe7
DIFF: https://github.com/llvm/llvm-project/commit/43d1c7a56453f200ea1f91783b0af9837d48afe7.diff

LOG: [Hexagon] Fix build: move template specialization into namespace scope

Added: 
    

Modified: 
    llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp b/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp
index 3ca3e9e5dc39..d930824c0194 100644
--- a/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp
+++ b/llvm/lib/Target/Hexagon/HexagonVectorCombine.cpp
@@ -212,19 +212,6 @@ class AlignVectors {
     const_iterator end() const { return Blocks.end(); }
   };
 
-  template <typename T> static T *getIfUnordered(T *MaybeT) {
-    return MaybeT && MaybeT->isUnordered() ? MaybeT : nullptr;
-  }
-  template <typename T> static T *isCandidate(Instruction *In) {
-    return dyn_cast<T>(In);
-  }
-  template <> LoadInst *isCandidate<LoadInst>(Instruction *In) {
-    return getIfUnordered(dyn_cast<LoadInst>(In));
-  }
-  template <> StoreInst *isCandidate<StoreInst>(Instruction *In) {
-    return getIfUnordered(dyn_cast<StoreInst>(In));
-  }
-
   Align getAlignFromValue(const Value *V) const;
   Optional<MemoryLocation> getLocation(const Instruction &In) const;
   Optional<AddrInfo> getAddrInfo(Instruction &In) const;
@@ -294,6 +281,19 @@ raw_ostream &operator<<(raw_ostream &OS, const AlignVectors::ByteSpan &BS) {
 
 namespace {
 
+template <typename T> T *getIfUnordered(T *MaybeT) {
+  return MaybeT && MaybeT->isUnordered() ? MaybeT : nullptr;
+}
+template <typename T> T *isCandidate(Instruction *In) {
+  return dyn_cast<T>(In);
+}
+template <> LoadInst *isCandidate<LoadInst>(Instruction *In) {
+  return getIfUnordered(dyn_cast<LoadInst>(In));
+}
+template <> StoreInst *isCandidate<StoreInst>(Instruction *In) {
+  return getIfUnordered(dyn_cast<StoreInst>(In));
+}
+
 template <typename Pred, typename... Ts>
 void erase_if(std::map<Ts...> &map, Pred p) {
   for (auto i = map.begin(), e = map.end(); i != e;) {


        


More information about the llvm-commits mailing list