Fixed VC++ bitfield to unsigned/signed sign propagation issue.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42252 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Hartmut Kaiser 2007-09-23 23:39:51 +00:00
Родитель 987b15db39
Коммит a8ae51f79d
1 изменённых файлов: 2 добавлений и 5 удалений

Просмотреть файл

@ -213,7 +213,7 @@ private:
/// TypeClass bitfield - Enum that specifies what subclass this belongs to.
/// Note that this should stay at the end of the ivars for Type so that
/// subclasses can pack their bitfields into the same word.
TypeClass TC : 4;
unsigned TC : 4;
protected:
// silence VC++ warning C4355: 'this' : used in base member initializer list
Type *this_() { return this; }
@ -222,10 +222,7 @@ protected:
virtual ~Type();
friend class ASTContext;
public:
// Masking the 4 bits from the bitfield above is necessary, since at least
// VC++ fills the unused bits of the word the bitfield is stored in with
// '1' resulting in invalid values returned from this function otherwise.
TypeClass getTypeClass() const { return static_cast<TypeClass>(TC & 0xf); }
TypeClass getTypeClass() const { return static_cast<TypeClass>(TC); }
bool isCanonical() const { return CanonicalType.getTypePtr() == this; }