OSDN Git Service

Work around bug in mingw-w64 GCC 8.1.0
authorReid Kleckner <rnk@google.com>
Thu, 19 Jul 2018 20:32:45 +0000 (20:32 +0000)
committerReid Kleckner <rnk@google.com>
Thu, 19 Jul 2018 20:32:45 +0000 (20:32 +0000)
This particular version of GCC seems to break bitfields when a method
appears between two bitfield members.

Personally, I think it's nice to keep bitfields close together so that
it's easy to check how things are packed, so I moved the method after
SubClassData.

Fixes PR38168.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@337495 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/IR/GlobalValue.h

index 3e42bd6..9d9f4f6 100644 (file)
@@ -110,18 +110,12 @@ protected:
   unsigned IsDSOLocal : 1;
 
 private:
-  friend class Constant;
-
-  void maybeSetDsoLocal() {
-    if (hasLocalLinkage() ||
-        (!hasDefaultVisibility() && !hasExternalWeakLinkage()))
-      setDSOLocal(true);
-  }
-
   // Give subclasses access to what otherwise would be wasted padding.
   // (17 + 4 + 2 + 2 + 2 + 3 + 1 + 1) == 32.
   unsigned SubClassData : GlobalValueSubClassDataBits;
 
+  friend class Constant;
+
   void destroyConstantImpl();
   Value *handleOperandChangeImpl(Value *From, Value *To);
 
@@ -149,6 +143,12 @@ private:
     llvm_unreachable("Fully covered switch above!");
   }
 
+  void maybeSetDsoLocal() {
+    if (hasLocalLinkage() ||
+        (!hasDefaultVisibility() && !hasExternalWeakLinkage()))
+      setDSOLocal(true);
+  }
+
 protected:
   /// The intrinsic ID for this subclass (which must be a Function).
   ///