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.

llvm-svn: 337495
This commit is contained in:
Reid Kleckner 2018-07-19 20:32:45 +00:00
parent a446bf556d
commit 3f6e321579

View 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).
///