diff options
author | Douglas Gregor <dgregor@apple.com> | 2011-09-08 23:29:05 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2011-09-08 23:29:05 +0000 |
commit | 3168dcf134222d9921d19e926f36784b94355948 (patch) | |
tree | 4bfd9965dab04483b61d4737d711add1ef220cc5 | |
parent | 22164ed9438b01018022ff27639ed97763f8dec5 (diff) | |
download | bcm5719-llvm-3168dcf134222d9921d19e926f36784b94355948.tar.gz bcm5719-llvm-3168dcf134222d9921d19e926f36784b94355948.zip |
The integer type of an enumeration type isn't always canonical
llvm-svn: 139334
-rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 2 | ||||
-rw-r--r-- | clang/test/SemaObjC/enum-fixed-type.m | 5 |
2 files changed, 6 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index aec90bd9cee..b1a87a83dce 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -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()); diff --git a/clang/test/SemaObjC/enum-fixed-type.m b/clang/test/SemaObjC/enum-fixed-type.m index 0ec8db476c5..530ee0fe999 100644 --- a/clang/test/SemaObjC/enum-fixed-type.m +++ b/clang/test/SemaObjC/enum-fixed-type.m @@ -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; +} |