diff options
author | John McCall <rjmccall@apple.com> | 2009-12-09 09:09:27 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2009-12-09 09:09:27 +0000 |
commit | 5677499fbffe3441543f2e0c2f7e4016270560a5 (patch) | |
tree | a2f87a1b1b6eb37c6fbf50caba31774a94c123a2 /clang/lib/Frontend/PCHReaderDecl.cpp | |
parent | 1d153328be1c52cf8d595bbd24ca829c2f8334d2 (diff) | |
download | bcm5719-llvm-5677499fbffe3441543f2e0c2f7e4016270560a5.tar.gz bcm5719-llvm-5677499fbffe3441543f2e0c2f7e4016270560a5.zip |
First pass at implementing C++ enum semantics: calculate (and store) an
"integer promotion" type associated with an enum decl, and use this type to
determine which type to promote to. This type obeys C++ [conv.prom]p2 and
is therefore generally signed unless the range of the enumerators forces
it to be unsigned.
Kills off a lot of false positives from -Wsign-compare in C++, addressing
rdar://7455616
llvm-svn: 90965
Diffstat (limited to 'clang/lib/Frontend/PCHReaderDecl.cpp')
-rw-r--r-- | clang/lib/Frontend/PCHReaderDecl.cpp | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/clang/lib/Frontend/PCHReaderDecl.cpp b/clang/lib/Frontend/PCHReaderDecl.cpp index 40d48c53aff..01e1a4191a9 100644 --- a/clang/lib/Frontend/PCHReaderDecl.cpp +++ b/clang/lib/Frontend/PCHReaderDecl.cpp @@ -126,6 +126,7 @@ void PCHDeclReader::VisitTagDecl(TagDecl *TD) { void PCHDeclReader::VisitEnumDecl(EnumDecl *ED) { VisitTagDecl(ED); ED->setIntegerType(Reader.GetType(Record[Idx++])); + ED->setPromotionType(Reader.GetType(Record[Idx++])); // FIXME: C++ InstantiatedFrom } |