From 37829085bc0b41fccdcbef295b408a77f838093b Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Thu, 29 Dec 2016 01:14:41 +0000 Subject: [PATCH] Fix mingw build by moving the static const data member before the bitfields Apparently GCC targeting Windows breaks bitfields on static data members: struct Foo { unsigned X : 16; static const int M = 42; unsigned Y : 16; }; static_assert(sizeof(Foo) == 4, "asdf"); // fails Who knew. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@290700 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/IR/GlobalValue.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/include/llvm/IR/GlobalValue.h b/include/llvm/IR/GlobalValue.h index 403d1a7a61a..c6398aaa484 100644 --- a/include/llvm/IR/GlobalValue.h +++ b/include/llvm/IR/GlobalValue.h @@ -85,6 +85,9 @@ protected: } Type *ValueType; + + static const unsigned GlobalValueSubClassDataBits = 18; + // All bitfields use unsigned as the underlying type so that MSVC will pack // them. unsigned Linkage : 4; // The linkage of this global @@ -100,8 +103,6 @@ protected: /// Function::intrinsicID() returns Intrinsic::not_intrinsic. unsigned HasLLVMReservedName : 1; - static const unsigned GlobalValueSubClassDataBits = 18; - private: friend class Constant; -- 2.49.0