From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 30114 invoked by alias); 30 Mar 2007 19:46:30 -0000 Received: (qmail 29968 invoked by alias); 30 Mar 2007 19:46:18 -0000 Date: Fri, 30 Mar 2007 19:46:00 -0000 Message-ID: <20070330194618.29967.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug c++/26099] support for type traits is not available In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "paolo at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2007-03/txt/msg02792.txt.bz2 ------- Comment #9 from paolo at gcc dot gnu dot org 2007-03-30 20:46 ------- Subject: Bug 26099 Author: paolo Date: Fri Mar 30 20:45:57 2007 New Revision: 123366 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=123366 Log: gcc/ 2007-03-30 Paolo Carlini PR c++/26099 * c-common.h (enum rid): Add RID_HAS_NOTHROW_ASSIGN, RID_HAS_NOTHROW_CONSTRUCTOR, RID_HAS_NOTHROW_COPY, RID_HAS_TRIVIAL_ASSIGN, RID_HAS_TRIVIAL_CONSTRUCTOR, RID_HAS_TRIVIAL_COPY, RID_HAS_TRIVIAL_DESTRUCTOR, RID_HAS_VIRTUAL_DESTRUCTOR, RID_IS_ABSTRACT, RID_IS_BASE_OF, RID_IS_CONVERTIBLE_TO, RID_IS_CLASS, RID_IS_EMPTY, RID_IS_ENUM, RID_IS_POD, RID_IS_POLYMORPHIC, RID_IS_UNION, as C++ extensions. * doc/extend.texi (Extensions to the C++ Language): Add Type Traits. gcc/cp/ 2007-03-30 Paolo Carlini PR c++/26099 * cp-tree.h (enum cp_trait_kind, struct tree_trait_expr, TRAIT_EXPR_TYPE1, TRAIT_EXPR_TYPE2, TRAIT_EXPR_KIND): Add. (enum cp_tree_node_structure_enum, union lang_tree_node): Update. (CLASS_TYPE_NON_UNION_P): Add. (struct lang_type_class): Add has_complex_dflt. (TYPE_HAS_COMPLEX_DFLT, TYPE_HAS_TRIVIAL_DFLT): Add. (locate_copy, locate_ctor, locate_dtor, finish_trait_expr): Declare. * cp-tree.def: Add TRAIT_EXPR. * cp-objcp-common.c (cp_tree_size): Add TRAIT_EXPR case. * lex.c (struct resword): Add __has_nothrow_assign, __has_nothrow_constructor, __has_nothrow_copy, __has_trivial_assign, __has_trivial_constructor, __has_trivial_copy, __has_trivial_destructor, __has_virtual_destructor, __is_abstract, __is_base_of, __is_class, __is_convertible_to, __is_empty, __is_enum, __is_pod, __is_polymorphic, __is_union. * parser.c (cp_parser_primary_expression): Deal with the new RIDs. (cp_parser_trait_expr): New. * semantics.c (finish_trait_expr, trait_expr_value classtype_has_nothrow_copy_or_assign_p): New. * method.c (locate_copy, locate_ctor, locate_dtor): Do not define as static. * decl.c (cp_tree_node_structure): Add TRAIT_EXPR. * class.c (check_bases, check_field_decl, check_bases_and_members): Deal with TYPE_HAS_COMPLEX_DFLT (t) too. * pt.c (uses_template_parms, tsubst_copy_and_build, value_dependent_expression_p, type_dependent_expression_p): Deal with TRAIT_EXPR. * tree.c (cp_walk_subtrees): Deal with TRAIT_EXPR. gcc/testsuite/ 2007-03-30 Paolo Carlini PR c++/26099 * g++.dg/ext/is_base_of.C: New. * g++.dg/ext/has_virtual_destructor.C: New. * g++.dg/ext/is_polymorphic.C: New. * g++.dg/ext/is_base_of_diagnostic.C: New. * g++.dg/ext/is_enum.C: New. * g++.dg/ext/has_nothrow_assign.C: New. * g++.dg/ext/has_nothrow_constructor.C: New. * g++.dg/ext/is_empty.C: New. * g++.dg/ext/has_trivial_copy.C: New. * g++.dg/ext/has_trivial_assign.C: New. * g++.dg/ext/is_abstract.C: New. * g++.dg/ext/is_pod.C: New. * g++.dg/ext/has_nothrow_copy.C: New. * g++.dg/ext/is_class.C: New. * g++.dg/ext/has_trivial_constructor.C: New. * g++.dg/ext/is_union.C: New. * g++.dg/ext/has_trivial_destructor.C: New. * g++.dg/tree-ssa/pr22444.C: Adjust, avoid __is_pod. * g++.dg/template/crash43.C: Likewise. libstdc++-v3/ 2007-03-30 Paolo Carlini PR c++/26099 * include/bits/cpp_type_traits.h (struct __is_pod, struct __is_empty): Remove. * include/bits/valarray_array.h: Adjust. * include/bits/allocator.h: Likewise. * include/bits/stl_tree.h: Likewise. Added: trunk/gcc/testsuite/g++.dg/ext/has_nothrow_assign.C trunk/gcc/testsuite/g++.dg/ext/has_nothrow_constructor.C trunk/gcc/testsuite/g++.dg/ext/has_nothrow_copy.C trunk/gcc/testsuite/g++.dg/ext/has_trivial_assign.C trunk/gcc/testsuite/g++.dg/ext/has_trivial_constructor.C trunk/gcc/testsuite/g++.dg/ext/has_trivial_copy.C trunk/gcc/testsuite/g++.dg/ext/has_trivial_destructor.C trunk/gcc/testsuite/g++.dg/ext/has_virtual_destructor.C trunk/gcc/testsuite/g++.dg/ext/is_abstract.C trunk/gcc/testsuite/g++.dg/ext/is_base_of.C trunk/gcc/testsuite/g++.dg/ext/is_base_of_diagnostic.C trunk/gcc/testsuite/g++.dg/ext/is_class.C trunk/gcc/testsuite/g++.dg/ext/is_empty.C trunk/gcc/testsuite/g++.dg/ext/is_enum.C trunk/gcc/testsuite/g++.dg/ext/is_pod.C trunk/gcc/testsuite/g++.dg/ext/is_polymorphic.C trunk/gcc/testsuite/g++.dg/ext/is_union.C Modified: trunk/gcc/ChangeLog trunk/gcc/c-common.h trunk/gcc/cp/ChangeLog trunk/gcc/cp/class.c trunk/gcc/cp/cp-objcp-common.c trunk/gcc/cp/cp-tree.def trunk/gcc/cp/cp-tree.h trunk/gcc/cp/decl.c trunk/gcc/cp/lex.c trunk/gcc/cp/method.c trunk/gcc/cp/parser.c trunk/gcc/cp/pt.c trunk/gcc/cp/semantics.c trunk/gcc/cp/tree.c trunk/gcc/doc/extend.texi trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/g++.dg/template/crash43.C trunk/gcc/testsuite/g++.dg/tree-ssa/pr22444.C trunk/libstdc++-v3/ChangeLog trunk/libstdc++-v3/include/bits/allocator.h trunk/libstdc++-v3/include/bits/cpp_type_traits.h trunk/libstdc++-v3/include/bits/stl_tree.h trunk/libstdc++-v3/include/bits/valarray_array.h -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26099