The integer type of an enumeration type isn't always canonical

llvm-svn: 139334
This commit is contained in:
Douglas Gregor 2011-09-08 23:29:05 +00:00
parent 22164ed943
commit 3168dcf134
2 changed files with 6 additions and 1 deletions

View File

@ -2597,7 +2597,7 @@ struct IntRange {
if (const ComplexType *CT = dyn_cast<ComplexType>(T))
T = CT->getElementType().getTypePtr();
if (const EnumType *ET = dyn_cast<EnumType>(T))
T = ET->getDecl()->getIntegerType().getTypePtr();
T = C.getCanonicalType(ET->getDecl()->getIntegerType()).getTypePtr();
const BuiltinType *BT = cast<BuiltinType>(T);
assert(BT->isInteger());

View File

@ -20,3 +20,8 @@ struct X {
enum Other : Integer field3 : 4;
enum : Integer { Blah, Blarg } field4 : 4;
};
void test() {
long value = 2;
Enumeration e = value;
}