------- 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  <[EMAIL PROTECTED]>

        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  <[EMAIL PROTECTED]>

        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  <[EMAIL PROTECTED]>

        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  <[EMAIL PROTECTED]>

        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

Reply via email to