From: Saleem Abdulrasool Date: Wed, 21 Jan 2015 19:39:10 +0000 (+0000) Subject: Fix isTriviallyCopyableType for arrays X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=97a01f016107e5037b03486bbae743c9639fe369;p=platform%2Fupstream%2Fllvm.git Fix isTriviallyCopyableType for arrays Fix isTriviallyCopyableType for arrays. An array of type T is trivially copyable if T is trivially copyable. Patch by Agustín Bergé! llvm-svn: 226696 --- diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index 5a39ca0..cfa7389 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -1089,7 +1089,7 @@ bool QualType::isTrivialType(ASTContext &Context) const { bool QualType::isTriviallyCopyableType(ASTContext &Context) const { if ((*this)->isArrayType()) - return Context.getBaseElementType(*this).isTrivialType(Context); + return Context.getBaseElementType(*this).isTriviallyCopyableType(Context); if (Context.getLangOpts().ObjCAutoRefCount) { switch (getObjCLifetime()) { diff --git a/clang/test/SemaCXX/type-traits.cpp b/clang/test/SemaCXX/type-traits.cpp index 4833c14..2265c28 100644 --- a/clang/test/SemaCXX/type-traits.cpp +++ b/clang/test/SemaCXX/type-traits.cpp @@ -1857,6 +1857,9 @@ void trivial_checks() { int arr[T(__is_trivially_copyable(HasNonPOD))]; } { int arr[T(__is_trivially_copyable(DerivesHasCons))]; } { int arr[T(__is_trivially_copyable(DerivesHasRef))]; } + { int arr[T(__is_trivially_copyable(NonTrivialDefault))]; } + { int arr[T(__is_trivially_copyable(NonTrivialDefault[]))]; } + { int arr[T(__is_trivially_copyable(NonTrivialDefault[3]))]; } { int arr[F(__is_trivially_copyable(HasCopyAssign))]; } { int arr[F(__is_trivially_copyable(HasMoveAssign))]; }