[Bug middle-end/30391] [4.3 regression] ICE at -O1 with conditional expressions and GIMPLE_MODIFY_STMT

sayle at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Fri Feb 16 03:38:00 GMT 2007



------- Comment #10 from sayle at gcc dot gnu dot org  2007-02-16 03:38 -------
Subject: Bug 30391

Author: sayle
Date: Fri Feb 16 03:38:22 2007
New Revision: 122030

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=122030
Log:

        PR middle-end/30391
        * tree.c (expr_align): Handle MODIFY_EXPR.  GIMPLE_MODIFY_STMT
        should be unreachable.
        (build2_stat): Allow construction of MODIFY_EXPR at any time.
        For the time being redirect GIMPLE_MODIFY_STMT to the new
        (renamed) build_gimple_modify_stmt_stat.
        (build2_gimple_stat): Rename to...
        (build_gimple_modify_stmt_stat): Now longer take a CODE argument.
        Always build a GIMPLE_MODIFY_STMT node.
        * tree.h (build2_gimple, build2_gimple_stat): Delete.
        (build_gimple_modify_stmt, build_gimple_modify_stmt_stat): New
        declarations.

        * tree-cfg.c (factor_computed_gotos, tree_merge_blocks,
        gimplify_val): Use build_gimple_modify_stmt instead of build2_gimple.
        * tree-complex.c (set_component_ssa_name, expand_complex_move,
        expand_complex_div_wide): Likewise.
        * tree-ssa-dom.c (record_equivalences_from_stmt): Likewise.
        * tree-ssa-loop-im.c (schedule_sm): Likewise.
        * tree-ssa-loop-ivopts.c (rewrite_use_nonlinear_expr): Likewise.
        * tree-ssa-loop-manip.c (create_iv): Likewise.
        * tree-ssa-phiopt.c (conditional_replacement, minmax_replacement,
        abs_replacement): Likewise.
        * tree-ssa-pre.c (create_expression_by_pieces, poolify_modify_stmt,
        realify_fake_stores): Likewise.

        * builtins.c (std_expand_builtin_va_start): Build a MODIFY_EXPR
        node rather than a GIMPLE_MODIFY_STMT node.
        (std_gimpify_va_arg_expr, expand_builtin_va_copy,
        fold_builtin_memset, fold_builtin_memory_op, do_mpfr_sincos):
        Likewise.
        (integer_valued_real_p): Handle MODIFY_EXPR, not GIMPLE_MODIFY_STMT.
        * expr.c (expand_expr_real_1): Handle both MODIFY_EXPR and
        GIMPLE_MODIFY_STMT.

        * gfortran.dg/pr30391-1.f90: New test case.


Added:
    trunk/gcc/testsuite/gfortran.dg/pr30391-1.f90
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/builtins.c
    trunk/gcc/expr.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/tree-cfg.c
    trunk/gcc/tree-complex.c
    trunk/gcc/tree-ssa-dom.c
    trunk/gcc/tree-ssa-loop-im.c
    trunk/gcc/tree-ssa-loop-ivopts.c
    trunk/gcc/tree-ssa-loop-manip.c
    trunk/gcc/tree-ssa-phiopt.c
    trunk/gcc/tree-ssa-pre.c
    trunk/gcc/tree.c
    trunk/gcc/tree.h


-- 


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



More information about the Gcc-bugs mailing list