Index: src/IceInstMIPS32.h |
diff --git a/src/IceInstMIPS32.h b/src/IceInstMIPS32.h |
index 3037167ade4a9960735fca7ea58c4845b59f8182..25b48b5057e865bfd4eb2808f10706426c438eae 100644 |
--- a/src/IceInstMIPS32.h |
+++ b/src/IceInstMIPS32.h |
@@ -514,6 +514,17 @@ private: |
Variable *DestHi = nullptr; |
}; |
+// Declare partial template specializations of emit() methods that already have |
+// default implementations. Without this, there is the possibility of ODR |
+// violations and link errors. |
+ |
+template <> void InstMIPS32Mflo::emit(const Cfg *Func) const; |
+template <> void InstMIPS32Mfhi::emit(const Cfg *Func) const; |
+template <> void InstMIPS32Mtlo::emit(const Cfg *Func) const; |
+template <> void InstMIPS32Mthi::emit(const Cfg *Func) const; |
+template <> void InstMIPS32Mult::emit(const Cfg *Func) const; |
+template <> void InstMIPS32Multu::emit(const Cfg *Func) const; |
+ |
} // end of namespace MIPS32 |
} // end of namespace Ice |