diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2012-04-28 09:07:58 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2012-04-28 09:07:58 +0000 |
commit | 046e8691ff467541ef7c32c9fc6bf41b1dcbd03a (patch) | |
tree | 39916c4e0f64ee594212a264c07bdc361aad134b | |
parent | d200187bd27f9ad68699693a6e57f9ee3ff260fa (diff) |
Use the C++11 definition of PODness for __is_pod in C++11 mode.
Keep the old definition for C++98 so we don't break tr1::is_pod.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@155754 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Sema/SemaExprCXX.cpp | 3 | ||||
-rw-r--r-- | test/SemaCXX/type-traits.cpp | 16 |
2 files changed, 10 insertions, 9 deletions
diff --git a/lib/Sema/SemaExprCXX.cpp b/lib/Sema/SemaExprCXX.cpp index 7d345073d7..7c8cabadb2 100644 --- a/lib/Sema/SemaExprCXX.cpp +++ b/lib/Sema/SemaExprCXX.cpp @@ -3010,7 +3010,8 @@ static bool EvaluateUnaryTypeTrait(Sema &Self, UnaryTypeTrait UTT, case UTT_IsStandardLayout: return T->isStandardLayoutType(); case UTT_IsPOD: - return T.isPODType(Self.Context); + return Self.LangOpts.CPlusPlus0x ? T.isCXX11PODType(Self.Context) + : T.isPODType(Self.Context); case UTT_IsLiteral: return T->isLiteralType(); case UTT_IsEmpty: diff --git a/test/SemaCXX/type-traits.cpp b/test/SemaCXX/type-traits.cpp index f53939ac17..594d7dd03b 100644 --- a/test/SemaCXX/type-traits.cpp +++ b/test/SemaCXX/type-traits.cpp @@ -131,25 +131,25 @@ void is_pod() { int arr[T(__is_pod(HasAnonymousUnion))]; } { int arr[T(__is_pod(Vector))]; } { int arr[T(__is_pod(VectorExt))]; } + { int arr[T(__is_pod(Derives))]; } + { int arr[T(__is_pod(DerivesAr))]; } + { int arr[T(__is_pod(DerivesArNB))]; } + { int arr[T(__is_pod(DerivesEmpty))]; } + { int arr[T(__is_pod(HasPriv))]; } + { int arr[T(__is_pod(HasProt))]; } + { int arr[T(__is_pod(DerivesHasPriv))]; } + { int arr[T(__is_pod(DerivesHasProt))]; } - { int arr[F(__is_pod(Derives))]; } - { int arr[F(__is_pod(DerivesAr))]; } - { int arr[F(__is_pod(DerivesArNB))]; } - { int arr[F(__is_pod(DerivesEmpty))]; } { int arr[F(__is_pod(HasCons))]; } { int arr[F(__is_pod(HasCopyAssign))]; } { int arr[F(__is_pod(HasMoveAssign))]; } { int arr[F(__is_pod(HasDest))]; } - { int arr[F(__is_pod(HasPriv))]; } - { int arr[F(__is_pod(HasProt))]; } { int arr[F(__is_pod(HasRef))]; } { int arr[F(__is_pod(HasVirt))]; } { int arr[F(__is_pod(DerivesHasCons))]; } { int arr[F(__is_pod(DerivesHasCopyAssign))]; } { int arr[F(__is_pod(DerivesHasMoveAssign))]; } { int arr[F(__is_pod(DerivesHasDest))]; } - { int arr[F(__is_pod(DerivesHasPriv))]; } - { int arr[F(__is_pod(DerivesHasProt))]; } { int arr[F(__is_pod(DerivesHasRef))]; } { int arr[F(__is_pod(DerivesHasVirt))]; } { int arr[F(__is_pod(NonPOD))]; } |