On OpenBSD we use a consistent set of typedefs across platforms for
the types specified by the C standard.  In some cases these deviate
from what the processor-specific ABI says.  The diff below fixes the
ones relevant for arm, pretty much by following NetBSD.

ok?

Oh, and how do we handle upstreaming these kind of diffs?


Index: gnu/llvm/tools/clang/lib/Basic/Targets.cpp
===================================================================
RCS file: /cvs/src/gnu/llvm/tools/clang/lib/Basic/Targets.cpp,v
retrieving revision 1.1.1.1
diff -u -p -r1.1.1.1 Targets.cpp
--- gnu/llvm/tools/clang/lib/Basic/Targets.cpp  3 Sep 2016 22:46:57 -0000       
1.1.1.1
+++ gnu/llvm/tools/clang/lib/Basic/Targets.cpp  16 Sep 2016 18:58:59 -0000
@@ -4275,8 +4275,10 @@ class ARMTargetInfo : public TargetInfo 
     DoubleAlign = LongLongAlign = LongDoubleAlign = SuitableAlign = 64;
     const llvm::Triple &T = getTriple();
 
-    // size_t is unsigned long on MachO-derived environments, NetBSD and 
Bitrig.
+    // size_t is unsigned long on MachO-derived environments, NetBSD,
+    // OpenBSD and Bitrig.
     if (T.isOSBinFormatMachO() || T.getOS() == llvm::Triple::NetBSD ||
+        T.getOS() == llvm::Triple::OpenBSD ||
         T.getOS() == llvm::Triple::Bitrig)
       SizeType = UnsignedLong;
     else
@@ -4284,6 +4286,7 @@ class ARMTargetInfo : public TargetInfo 
 
     switch (T.getOS()) {
     case llvm::Triple::NetBSD:
+    case llvm::Triple::OpenBSD:
       WCharType = SignedInt;
       break;
     case llvm::Triple::Win32:
@@ -4475,6 +4478,7 @@ public:
 
     switch (getTriple().getOS()) {
     case llvm::Triple::NetBSD:
+    case llvm::Triple::OpenBSD:
       PtrDiffType = SignedLong;
       break;
     default:

Reply via email to