public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
From: "aoliva at gcc dot gnu.org" <gcc-bugzilla@gcc.gnu.org>
To: gcc-bugs@gcc.gnu.org
Subject: [Bug rtl-optimization/64164] [4.9/5/6 Regression] one more stack slot used due to one less inlining level
Date: Fri, 14 Aug 2015 18:52:00 -0000	[thread overview]
Message-ID: <bug-64164-4-BZgj0U8bum@http.gcc.gnu.org/bugzilla/> (raw)
In-Reply-To: <bug-64164-4@http.gcc.gnu.org/bugzilla/>

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

--- Comment #50 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


  parent reply	other threads:[~2015-08-14 18:52 UTC|newest]

Thread overview: 67+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-03  9:33 [Bug ipa/64164] New: [4.9/5 " patrick.marlier at gmail dot com
2014-12-03  9:44 ` [Bug middle-end/64164] " pinskia at gcc dot gnu.org
2014-12-03  9:45 ` pinskia at gcc dot gnu.org
2014-12-03 10:03 ` [Bug rtl-optimization/64164] " rguenth at gcc dot gnu.org
2014-12-03 10:06 ` rguenth at gcc dot gnu.org
2014-12-11 11:46 ` rguenth at gcc dot gnu.org
2014-12-17 11:38 ` patrick.marlier at gmail dot com
2015-03-17 18:19 ` law at redhat dot com
2015-03-17 19:55 ` amacleod at redhat dot com
2015-03-17 22:15 ` aoliva at gcc dot gnu.org
2015-03-17 22:18 ` aoliva at gcc dot gnu.org
2015-03-17 22:19 ` aoliva at gcc dot gnu.org
2015-03-17 23:01 ` aoliva at gcc dot gnu.org
2015-03-18  0:20 ` aoliva at gcc dot gnu.org
2015-03-18  5:48 ` law at redhat dot com
2015-03-18  9:02 ` rguenth at gcc dot gnu.org
2015-03-18  9:03 ` rguenth at gcc dot gnu.org
2015-03-18  9:19 ` rguenth at gcc dot gnu.org
2015-03-18 10:05 ` aoliva at gcc dot gnu.org
2015-03-18 10:16 ` rguenther at suse dot de
2015-03-18 10:18 ` aoliva at gcc dot gnu.org
2015-03-19  5:17 ` aoliva at gcc dot gnu.org
2015-03-20  8:07 ` law at redhat dot com
2015-03-20 10:03 ` rguenther at suse dot de
2015-03-20 20:44 ` law at redhat dot com
2015-03-27 18:26 ` aoliva at gcc dot gnu.org
2015-03-29 20:58 ` aoliva at gcc dot gnu.org
2015-03-30 23:06 ` patrick.marlier at gmail dot com
2015-03-30 23:09 ` law at redhat dot com
2015-03-30 23:34 ` law at redhat dot com
2015-03-31 12:21 ` [Bug rtl-optimization/64164] [4.9/5/6 " rguenth at gcc dot gnu.org
2015-03-31 12:21 ` [Bug rtl-optimization/64164] [4.9/5 " rguenth at gcc dot gnu.org
2015-03-31 12:56 ` [Bug rtl-optimization/64164] [4.9/5/6 " jakub at gcc dot gnu.org
2015-04-01  7:51 ` rguenth at gcc dot gnu.org
2015-06-09  5:06 ` aoliva at gcc dot gnu.org
2015-06-09  5:34 ` [Bug rtl-optimization/64164] [4.9/5 " aoliva at gcc dot gnu.org
2015-06-09  9:10 ` ebotcazou at gcc dot gnu.org
2015-06-09 16:35 ` dje at gcc dot gnu.org
2015-06-10  0:15 ` [Bug rtl-optimization/64164] [4.9/5/6 " aoliva at gcc dot gnu.org
2015-06-10 13:16 ` clyon at gcc dot gnu.org
2015-06-10 14:43 ` dje at gcc dot gnu.org
2015-06-10 14:45 ` dje at gcc dot gnu.org
2015-07-23 15:35 ` aoliva at gcc dot gnu.org
2015-07-24 10:37 ` schwab@linux-m68k.org
2015-07-24 10:51 ` schwab@linux-m68k.org
2015-07-24 16:57 ` sje at gcc dot gnu.org
2015-07-27  9:07 ` ro at gcc dot gnu.org
2015-07-30 18:20 ` aoliva at gcc dot gnu.org
2015-08-02 21:11 ` gary at intrepid dot com
2015-08-14 18:52 ` aoliva at gcc dot gnu.org [this message]
2015-08-15  2:24 ` aoliva at gcc dot gnu.org
2015-08-15  2:25 ` aoliva at gcc dot gnu.org
2015-08-15  2:25 ` aoliva at gcc dot gnu.org
2015-08-15  2:26 ` aoliva at gcc dot gnu.org
2015-08-15  2:26 ` aoliva at gcc dot gnu.org
2015-08-15  2:27 ` aoliva at gcc dot gnu.org
2015-08-19 17:01 ` aoliva at gcc dot gnu.org
2015-08-21 20:04 ` aoliva at gcc dot gnu.org
2015-08-21 20:05 ` aoliva at gcc dot gnu.org
2015-09-23 21:13 ` aoliva at gcc dot gnu.org
2015-09-27  9:03 ` aoliva at gcc dot gnu.org
2015-09-27 12:13 ` trippels at gcc dot gnu.org
2015-09-28  1:15 ` aoliva at gcc dot gnu.org
2015-09-28  1:16 ` aoliva at gcc dot gnu.org
2015-09-28  1:16 ` aoliva at gcc dot gnu.org
2015-10-09 12:21 ` aoliva at gcc dot gnu.org
2015-10-09 12:22 ` aoliva at gcc dot gnu.org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-64164-4-BZgj0U8bum@http.gcc.gnu.org/bugzilla/ \
    --to=gcc-bugzilla@gcc.gnu.org \
    --cc=gcc-bugs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).