This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug libstdc++/29286] [4.0/4.1/4.2/4.3 Regression] placement new does not change the dynamic type as it should



------- Comment #177 from ian at gcc dot gnu dot org  2007-06-12 17:47 -------
Subject: Bug 29286

Author: ian
Date: Tue Jun 12 17:47:37 2007
New Revision: 125653

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=125653
Log:
./:
        PR libstdc++/29286
        * tree.def: Add CHANGE_DYNAMIC_TYPE_EXPR.
        * tree.h (CHANGE_DYNAMIC_TYPE_NEW_TYPE): Define.
        (CHANGE_DYNAMIC_TYPE_LOCATION): Define.
        (DECL_NO_TBAA_P): Define.
        (struct tree_decl_common): Add no_tbaa_flag field.
        * tree-ssa-structalias.c (struct variable_info): Add
        no_tbaa_pruning field.
        (new_var_info): Initialize no_tbaa_pruning field.
        (unify_nodes): Copy no_tbaa_pruning field.
        (find_func_aliases): Handle CHANGE_DYNAMIC_TYPE_EXPR.
        (dump_solution_for_var): Print no_tbaa_pruning flag.
        (set_uids_in_ptset): Add no_tbaa_pruning parameter.  Change all
        callers.
        (compute_tbaa_pruning): New static function.
        (compute_points_to_sets): Remove CHANGE_DYNAMIC_TYPE_EXPR nodes.
        Call compute_tbaa_pruning.
        * tree-ssa-alias.c (may_alias_p): Test no_tbaa_flag for pointers.
        * gimplify.c (gimplify_expr): Handle CHANGE_DYNAMIC_TYPE_EXPR.
        * gimple-low.c (lower_stmt): Likewise.
        * tree-gimple.c (is_gimple_stmt): Likewise.
        * tree-ssa-operands.c (get_expr_operands): Likewise.
        * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Likewise.
        * tree-inline.c (estimate_num_insns_1): Likewise.
        (copy_result_decl_to_var): Likewise.
        * expr.c (expand_expr_real_1): Likewise.
        * tree-pretty-print.c (dump_generic_node): Likewise.
        * tree-inline.c (copy_decl_to_var): Copy DECL_NO_TBAA_P flag.
        * omp-low.c (omp_copy_decl_2): Likewise.
        * print-tree.c (print_node): Print DECL_NO_TBAA_P flag.
        * doc/c-tree.texi (Expression trees): Document
        CHANGE_DYNAMIC_TYPE_EXPR.
cp/:
        PR libstdc++/29286
        * init.c (avoid_placement_new_aliasing): New static function.
        (build_new_1): Call it.
testsuite/:
        PR libstdc++/29286
        * g++.dg/init/new16.C: New test.
        * g++.dg/init/new17.C: New test.
        * g++.dg/init/new18.C: New test.
        * g++.dg/init/new19.C: New test.

Added:
    trunk/gcc/testsuite/g++.dg/init/new16.C
    trunk/gcc/testsuite/g++.dg/init/new17.C
    trunk/gcc/testsuite/g++.dg/init/new18.C
    trunk/gcc/testsuite/g++.dg/init/new19.C
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/cp/ChangeLog
    trunk/gcc/cp/init.c
    trunk/gcc/doc/c-tree.texi
    trunk/gcc/expr.c
    trunk/gcc/gimple-low.c
    trunk/gcc/gimplify.c
    trunk/gcc/omp-low.c
    trunk/gcc/print-tree.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-gimple.c
    trunk/gcc/tree-inline.c
    trunk/gcc/tree-pretty-print.c
    trunk/gcc/tree-ssa-alias.c
    trunk/gcc/tree-ssa-dce.c
    trunk/gcc/tree-ssa-operands.c
    trunk/gcc/tree-ssa-structalias.c
    trunk/gcc/tree.def
    trunk/gcc/tree.h


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29286


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]