$OpenBSD: patch-tools_clang_lib_Basic_Targets_Mips_h,v 1.3 2020/09/03 20:54:01 rsadowski Exp $

- Implement the 'h' register constraint on mips64. This lets clang build
  pieces of software that use the constraint if the compiler claims
  to be compatible with GCC 4.2.1.
  Note that the constraint was removed in GCC 4.4. The reason was that
  'h' could generate code whose result is unpredictable. The underlying
  reason is that the HI and LO registers are special, and the optimizer
  has to be careful when choosing the order of HI/LO accesses. It looks
  that LLVM has the needed logic.

Index: tools/clang/lib/Basic/Targets/Mips.h
--- tools/clang/lib/Basic/Targets/Mips.h.orig
+++ tools/clang/lib/Basic/Targets/Mips.h
@@ -239,6 +239,7 @@ class LLVM_LIBRARY_VISIBILITY MipsTargetInfo : public 
     case 'y': // Equivalent to "r", backward compatibility only.
     case 'f': // floating-point registers.
     case 'c': // $25 for indirect jumps
+    case 'h': // hi register
     case 'l': // lo register
     case 'x': // hilo register pair
       Info.setAllowsRegister();
