From b1b35797986f0befce50315b8868534718c4702f Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Thu, 19 Jul 2018 20:32:45 +0000 Subject: [PATCH] Work around bug in mingw-w64 GCC 8.1.0 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 | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/include/llvm/IR/GlobalValue.h b/include/llvm/IR/GlobalValue.h index 3e42bd60a6d..9d9f4f65a6b 100644 --- a/include/llvm/IR/GlobalValue.h +++ b/include/llvm/IR/GlobalValue.h @@ -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). /// -- 2.11.0