[Bug middle-end/67034] [6 Regression] FAIL: gcc.c-torture/compile/pr39928-1.c

aoliva at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Aug 14 18:52:00 GMT 2015


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67034

--- Comment #5 from Alexandre Oliva <aoliva at gcc dot gnu.org> ---
Author: aoliva
Date: Fri Aug 14 18:51:50 2015
New Revision: 226901

URL: https://gcc.gnu.org/viewcvs?rev=226901&root=gcc&view=rev
Log:
[PR64164] Drop copyrename, use coalescible partition as base when optimizing.

for  gcc/ChangeLog

        PR rtl-optimization/64164
        PR bootstrap/66978
        PR middle-end/66983
        PR rtl-optimization/67000
        PR middle-end/67034
        PR middle-end/67035
        * Makefile.in (OBJS): Drop tree-ssa-copyrename.o.
        * tree-ssa-copyrename.c: Removed.
        * opts.c (default_options_table): Drop -ftree-copyrename.  Add
        -ftree-coalesce-vars.
        * passes.def: Drop all occurrences of pass_rename_ssa_copies.
        * common.opt (ftree-copyrename): Ignore.
        (ftree-coalesce-inlined-vars): Likewise.
        * doc/invoke.texi: Remove the ignored options above.
        * gimple-expr.h (gimple_can_coalesce_p): Move declaration
        * tree-ssa-coalesce.h: ... here.
        * tree-ssa-uncprop.c: Include tree-ssa-coalesce.h and other
        headers required by it.
        * gimple-expr.c (gimple_can_coalesce_p): Allow coalescing
        across variables when flag_tree_coalesce_vars.  Check register
        use and promoted modes to allow coalescing.  Do not coalesce
        maybe-byref parms with SSA_NAMEs of other variables, or
        anonymous SSA_NAMEs.  Moved to tree-ssa-coalesce.c.
        * tree-ssa-live.c (struct tree_int_map_hasher): Move along
        with its member functions to tree-ssa-coalesce.c.
        (var_map_base_init): Likewise.  Renamed to
        compute_samebase_partition_bases.
        (partition_view_normal): Drop want_bases parameter.
        (partition_view_bitmap): Likewise.
        * tree-ssa-live.h: Adjust declarations.
        * tree-ssa-coalesce.c: Include explow.h and cfgexpand.h.
        (build_ssa_conflict_graph): Process PARM_ and RESULT_DECLs's
        default defs at the entry point.
        (dump_part_var_map): New.
        (compute_optimized_partition_bases): New, called by...
        (coalesce_ssa_name): ... when flag_tree_coalesce_vars, instead
        of compute_samebase_partition_bases.  Adjust.
        * alias.c (nonoverlapping_memrefs_p): Disregard gimple-regs.
        * cfgexpand.c (leader_merge, parm_maybe_byref_p): New.
        (ssa_default_def_partition): New.
        (get_rtl_for_parm_ssa_default_def): New.
        (align_local_variable, add_stack_var): Support anonymous SSA
        names.
        (defer_stack_allocation): Likewise.  Declare earlier.
        (set_rtl): Merge exprs and attrs, even for MEMs and non-SSA
        vars.  Update DECL_RTL for PARM_DECLs and RESULT_DECLs too.
        Do no record deferred-allocation marker in
        SA.partition_to_pseudo.
        (expand_stack_vars): Adjust check for the marker in it.
        (expand_one_stack_var_at): Handle anonymous SSA_NAMEs.  Drop
        redundant MEM attr setting.
        (expand_one_stack_var_1): Handle anonymous SSA_NAMEs.  Renamed
        from...
        (expand_one_stack_var): ... this.  New wrapper to check and
        skip already expanded SSA partitions.
        (record_alignment_for_reg_var): New, factored out of...
        (expand_one_var): ... this.
        (expand_one_ssa_partition): New.
        (adjust_one_expanded_partition_var): New.
        (expand_one_register_var): Check and skip already expanded SSA
        partitions.
        (expand_used_vars): Don't create DECLs for anonymous SSA
        names.  Expand all SSA partitions, then adjust all SSA names.
        (pass::execute): Replace the loops that set
        SA.partition_to_pseudo from partition leaders and cleared
        DECL_RTL for multi-location variables, and that which used to
        rename vars and set attrs, with one that clears DECL_RTL and
        checks that PARMs and RESULTs default_defs match DECL_RTL.
        * cfgexpand.h (get_rtl_for_parm_ssa_default_def): Declare.
        * emit-rtl.c: Include stor-layout.h.
        (set_reg_attrs_for_parm): Handle NULL decl.
        (set_reg_attrs_for_decl_rtl): Take mode from expression if
        it's not a DECL.
        * stmt.c (emit_case_decision_tree): Pass it the SSA_NAME
        rather than its possibly-NULL DECL.
        * explow.c (promote_ssa_mode): New.
        * explow.h (promote_ssa_mode): Declare.
        * expr.c (expand_expr_real_1): Handle anonymous SSA_NAMEs.
        (read_complex_part): Export.
        * expr.h (read_complex_part): Declare.
        * cfgexpand.h (parm_maybe_byref_p): Declare.
        * function.c: Include cfgexpand.h.
        (use_register_for_decl): Handle SSA_NAMEs, anonymous or not.
        (use_register_for_parm_decl): Wrapper for the above to
        special-case the result_ptr.
        (rtl_for_parm): Ditto for get_rtl_for_parm_ssa_default_def.
        (split_complex_args): Take assign_parm_data_all argument.
        Pass it to rtl_for_parm.  Set up rtl and context for split
        args.  Reset complex parm before fetching its default decl
        rtl.
        (assign_parms_unsplit_complex): Use the default-def complex
        parm rtl if it matches the components.
        (assign_parms_augmented_arg_list): Adjust.
        (maybe_reset_rtl_for_parm): Reset DECL_RTL of parms with
        multiple locations.  Recognize split complex args.
        (assign_parm_adjust_stack_rtl): Add all and parm arguments,
        for rtl_for_parm.  For SSA-assigned parms, zero stack_parm.
        (assign_parm_setup_block): Prefer SSA-assigned location, and
        fill in its address if the memory location of a maybe-byref
        parm was not assigned by cfgexpand.
        (assign_parm_setup_reg): Likewise.  Adjust its mode as
        needed.  Use entry_parm for equiv if stack_parm is NULL.  Make
        sure passed_pointer parms don't need conversion.  Copy address
        or value as needed.
        (assign_parm_setup_stack): Prefer SSA-assigned location.
        (assign_parms): Maybe reset DECL_RTL of params.  Adjust stack
        rtl before testing for pointer bounds.  Special-case result_ptr.
        (expand_function_start): Maybe reset DECL_RTL of result.
        Prefer SSA-assigned location for result and static chain.
        Factor out DECL_RESULT and SET_DECL_RTL.  Convert static chain
        to Pmode if needed, from H.J. Lu  <hongjiu.lu@intel.com>.
        * tree-outof-ssa.c (insert_value_copy_on_edge): Handle
        anonymous SSA names.  Use promote_ssa_mode.
        (get_temp_reg): Likewise.
        (remove_ssa_form): Adjust.
        * stor-layout.c (layout_decl): Don't set mem attributes of
        non-MEMs.
        * var-tracking.c (dataflow_set_clear_at_call): Take call_insn
        and get its reg_usage for reg invalidation.
        (compute_bb_dataflow): Pass it insn.
        (emit_notes_in_bb): Likewise.

for  gcc/testsuite/ChangeLog

        * gcc.dg/guality/pr54200.c: Add -fno-tree-coalesce-vars.
        * gcc.dg/ssp-1.c: Make counter a register.
        * gcc.dg/ssp-2.c: Likewise.
        * gcc.dg/torture/parm-coalesce.c: New.

Added:
    trunk/gcc/testsuite/gcc.dg/torture/parm-coalesce.c
Removed:
    trunk/gcc/tree-ssa-copyrename.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/Makefile.in
    trunk/gcc/alias.c
    trunk/gcc/cfgexpand.c
    trunk/gcc/cfgexpand.h
    trunk/gcc/common.opt
    trunk/gcc/doc/invoke.texi
    trunk/gcc/emit-rtl.c
    trunk/gcc/explow.c
    trunk/gcc/explow.h
    trunk/gcc/expr.c
    trunk/gcc/expr.h
    trunk/gcc/function.c
    trunk/gcc/gimple-expr.c
    trunk/gcc/gimple-expr.h
    trunk/gcc/opts.c
    trunk/gcc/passes.def
    trunk/gcc/stmt.c
    trunk/gcc/stor-layout.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/guality/pr54200.c
    trunk/gcc/testsuite/gcc.dg/ssp-1.c
    trunk/gcc/testsuite/gcc.dg/ssp-2.c
    trunk/gcc/tree-outof-ssa.c
    trunk/gcc/tree-ssa-coalesce.c
    trunk/gcc/tree-ssa-coalesce.h
    trunk/gcc/tree-ssa-live.c
    trunk/gcc/tree-ssa-live.h
    trunk/gcc/tree-ssa-uncprop.c
    trunk/gcc/var-tracking.c



More information about the Gcc-bugs mailing list