Subzero: Fix ODR errors in the g++ build.

See failed build at https://build.chromium.org/p/tryserver.nacl/builders/nacl-toolchain-win7-pnacl-x86_64/builds/3441 .

BUG= none
TBR=jpp@chromium.org

Review URL: https://codereview.chromium.org/1732233002 .
diff --git a/src/IceInstMIPS32.h b/src/IceInstMIPS32.h
index 3037167..25b48b5 100644
--- a/src/IceInstMIPS32.h
+++ b/src/IceInstMIPS32.h
@@ -514,6 +514,17 @@
   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