[PATCH] D31513: [Sema] Add __is_aggregate type-trait and implement LWG 2015

2017-03-30 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF created this revision. LWG 2911 adds `std::is_aggregate` to the library, which requires a new builtin trait. This patch implements `__is_aggregate`. Additionally this patch implements LWG 2015

[PATCH] D31513: [Sema] Add __is_aggregate type-trait and implement LWG 2015

2017-03-30 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF updated this revision to Diff 93555. EricWF added a comment. - Move test to correct file. https://reviews.llvm.org/D31513 Files: include/clang/Basic/TokenKinds.def include/clang/Basic/TypeTraits.h lib/Parse/ParseDeclCXX.cpp lib/Parse/ParseExpr.cpp lib/Sema/SemaExprCXX.cpp tes

[PATCH] D31513: [Sema] Add __is_aggregate type-trait and implement LWG 2015

2017-03-31 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF updated this revision to Diff 93709. EricWF added a comment. - Update the doc to reflect that GCC has implemented this trait (and to assume MS will as well). - Rewrite the tests using static_assert over god-awful old style array asserts. https://reviews.llvm.org/D31513 Files: docs/Lan

[PATCH] D31513: [Sema] Add __is_aggregate type-trait and implement LWG 2015

2017-03-31 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF updated this revision to Diff 93715. EricWF added a comment. - Correctly report array types as aggregates. (Woops!) - Also report vector types as aggregates. This behavior mirrors GCC. - report _Complex int and _Complex float as aggregates as well. Currently GCC does not have this behavi

[PATCH] D31513: [Sema] Add __is_aggregate type-trait and implement LWG 2015

2017-04-03 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: docs/LanguageExtensions.rst:996 * ``__is_abstract`` (GNU, Microsoft) +* ``__is_aggregate`` (GNU, Microsoft) * ``__is_base_of`` (GNU, Microsoft) Has Microsoft already implemented this? If not, do we want to wait f

[PATCH] D31513: [Sema] Add __is_aggregate type-trait and implement LWG 2015

2017-04-03 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF added a subscriber: STL_MSFT. EricWF added inline comments. Comment at: docs/LanguageExtensions.rst:996 * ``__is_abstract`` (GNU, Microsoft) +* ``__is_aggregate`` (GNU, Microsoft) * ``__is_base_of`` (GNU, Microsoft) aaron.ballman wrote: > Has Microsoft a

[PATCH] D31513: [Sema] Add __is_aggregate type-trait and implement LWG 2015

2017-04-03 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: docs/LanguageExtensions.rst:996 * ``__is_abstract`` (GNU, Microsoft) +* ``__is_aggregate`` (GNU, Microsoft) * ``__is_base_of`` (GNU, Microsoft) EricWF wrote: > aaron.ballman wrote: > > Has Microsoft already imple

[PATCH] D31513: [Sema] Add __is_aggregate type-trait and implement LWG 2015

2017-04-03 Thread Stephan T. Lavavej via Phabricator via cfe-commits
STL_MSFT added inline comments. Comment at: docs/LanguageExtensions.rst:996 * ``__is_abstract`` (GNU, Microsoft) +* ``__is_aggregate`` (GNU, Microsoft) * ``__is_base_of`` (GNU, Microsoft) aaron.ballman wrote: > EricWF wrote: > > aaron.ballman wrote: > > > Has M

[PATCH] D31513: [Sema] Add __is_aggregate type-trait and implement LWG 2015

2017-04-03 Thread Eric Fiselier via Phabricator via cfe-commits
EricWF added inline comments. Comment at: lib/Sema/SemaExprCXX.cpp:4089 +// See LWG 2015 +QualType ElTy = S.Context.getBaseElementType(ArgTy); if (ElTy->isVoidType()) aaron.ballman wrote: > If I understand properly, this change is required by LWG 201

[PATCH] D31513: [Sema] Add __is_aggregate type-trait and implement LWG 2015

2017-04-03 Thread Aaron Ballman via Phabricator via cfe-commits
aaron.ballman added inline comments. Comment at: docs/LanguageExtensions.rst:996 * ``__is_abstract`` (GNU, Microsoft) +* ``__is_aggregate`` (GNU, Microsoft) * ``__is_base_of`` (GNU, Microsoft) STL_MSFT wrote: > aaron.ballman wrote: > > EricWF wrote: > > > aaron