diff options
| author | Reid Kleckner <rnk@google.com> | 2016-12-29 01:14:41 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2016-12-29 01:14:41 +0000 |
| commit | 32f171fec4bd3ef10bb76ebe3e804c78bbe3aa8b (patch) | |
| tree | 3f7ea16ecc5fd1fadc8934463d668a6ad9b68147 | |
| parent | 6658cc9ead672908c2cbc286feda38ac462369f4 (diff) | |
| download | bcm5719-llvm-32f171fec4bd3ef10bb76ebe3e804c78bbe3aa8b.tar.gz bcm5719-llvm-32f171fec4bd3ef10bb76ebe3e804c78bbe3aa8b.zip | |
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.
llvm-svn: 290700
| -rw-r--r-- | llvm/include/llvm/IR/GlobalValue.h | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/include/llvm/IR/GlobalValue.h b/llvm/include/llvm/IR/GlobalValue.h index 403d1a7a61a..c6398aaa484 100644 --- a/llvm/include/llvm/IR/GlobalValue.h +++ b/llvm/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; |

