The integer type of an enumeration type isn't always canonical
llvm-svn: 139334
This commit is contained in:
parent
22164ed943
commit
3168dcf134
|
@ -2597,7 +2597,7 @@ struct IntRange {
|
||||||
if (const ComplexType *CT = dyn_cast<ComplexType>(T))
|
if (const ComplexType *CT = dyn_cast<ComplexType>(T))
|
||||||
T = CT->getElementType().getTypePtr();
|
T = CT->getElementType().getTypePtr();
|
||||||
if (const EnumType *ET = dyn_cast<EnumType>(T))
|
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);
|
const BuiltinType *BT = cast<BuiltinType>(T);
|
||||||
assert(BT->isInteger());
|
assert(BT->isInteger());
|
||||||
|
|
|
@ -20,3 +20,8 @@ struct X {
|
||||||
enum Other : Integer field3 : 4;
|
enum Other : Integer field3 : 4;
|
||||||
enum : Integer { Blah, Blarg } field4 : 4;
|
enum : Integer { Blah, Blarg } field4 : 4;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void test() {
|
||||||
|
long value = 2;
|
||||||
|
Enumeration e = value;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue