gcc

~vcs-imports/gcc/+git/gcc:aoliva/pr64164

Last commit made on 2015-09-27
Get this branch:
git clone -b aoliva/pr64164 https://git.launchpad.net/~vcs-imports/gcc/+git/gcc

Branch merges

Branch information

Name:
aoliva/pr64164
Repository:
lp:~vcs-imports/gcc/+git/gcc

Recent commits

b2df3bb... by aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>

revert to assign_parms assignments using default defs

Revert the fragile and complicated changes to assign_parms designed to
enable it to use RTL assigments chosen by cfgexpand, and instead have
cfgexpand use the RTL assignments by assign_parms, keying them off of
the default defs that are now necessarily introduced for each parm and
result. The possible lack of a default def was already a problem, and
the fallbacks in place were not enough, as shown by PR67312. We now
have checking asserts in set_rtl that verify that we're assigning to
each var a piece of RTL that matches the expectations set forth by
use_register_for_decl.

for gcc/ChangeLog

 PR rtl-optimization/64164
 PR tree-optimization/67312
 PR middle-end/67340
 PR middle-end/67490
 PR bootstrap/67597
 * cfgexpand.c (parm_in_stack_slot_p): Remove.
 (ssa_default_def_partition): Remove.
 (get_rtl_for_parm_ssa_default_def): Remove.
 (set_rtl): Check that RTL assignments match expectations.
 Loop on SUBREGs, CONCATs and PARALLELs subexprs. Set only the
 default def location for params and results. Record SSA names
 or types in REG and MEM attrs, respectively.
 (set_parm_rtl): New.
 (expand_one_ssa_partition): Drop logic that assigned MEMs with
 unassigned addresses.
 (adjust_one_expanded_partition_var): Don't accept NULL RTL on
 deferred stack alloc vars.
 (expand_used_vars): Skip partitions holding parm default defs.
 Move adjust_one_expanded_partition_var loop...
 (pass_expand::execute): ... here. Drop redundant assert.
 Adjust comments before the final loop over all ssa names.
 Require assigned rtl of parms and results to match exactly.
 Reset its attributes to match them, not any other variables in
 the same partition.
 (expand_debug_expr): Use entry value for PARM's default defs
 only iff they have zero nondebug uses.
 * cfgexpand.h (parm_in_stack_slot_p): Remove.
 (get_rtl_for_parm_ssa_default_def): Remove.
 (set_parm_rtl): Declare.
 * doc/invoke.texi: Improve wording.
 * explow.c (promote_decl_mode): Fix promote_function_mode for
 result decls not by reference.
 (promote_ssa_mode): Disregard BLKmode from promote_decl, and
 bypass TYPE_MODE to get the actual vector mode.
 * function.c: Include tree-dfa.h. Revert 2015-08-14's and
 2015-08-19's changes as follows. Drop include of
 basic-block.h and df.h.
 (rtl_for_parm): Remove.
 (maybe_reset_rtl_for_parm): Remove.
 (parm_in_unassigned_mem_p): Remove.
 (use_register_for_decl): Add logic for RESULT_DECLs matching
 assign_parms' behavior.
 (split_complex_args): Revert.
 (assign_parms_augmented_arg_list): Revert. Add comment
 referencing the logic above.
 (assign_parm_adjust_stack_rtl): Revert.
 (assign_parm_setup_block): Revert. Use set_parm_rtl instead
 of SET_DECL_RTL. Set up a REG if the parm demands so.
 (assign_parm_setup_reg): Revert. Consolidated SET_DECL_RTL
 calls into a single set_parm_rtl. Set up a temporary RTL
 temporarily for expand_assignment.
 (assign_parm_setup_stack): Revert. Use set_parm_rtl.
 (assign_parms_unsplit_complex): Revert. Use set_parm_rtl.
 (assign_bounds): Revert.
 (assign_parms): Revert. Use set_parm_rtl.
 (allocate_struct_function): Relayout result and parms of
 non-abstruct functions.
 (expand_function_start): Revert. Use set_parm_rtl. If the
 result is not a hard reg, create a pseudo from the promoted
 mode of the default def. Promote static chain mode.
 * tree-outof-ssa.c (remove_ssa_form): Drop unused
 partition_has_default_def. Set up
 partitions_for_parm_default_defs.
 (finish_out_of_ssa): Remove partition_has_default_def.
 Release partitions_for_parm_default_defs.
 * tree-outof-ssa.h (struct ssaexpand): Remove
 partition_has_default_def. Add
 partitions_for_parm_default_defs.
 * tree-ssa-coalesce.c: Include tree-dfa.h, tm_p.h and
 stor-layout.h.
 (build_ssa_conflict_graph): Fix conflict-detection of default
 defs of even unused default defs of params and results.
 (for_all_parms): New.
 (create_default_def): New.
 (register_default_def): New.
 (coalesce_with_default): New.
 (create_outofssa_var_map): Create default defs for all parms
 and results, and register their partitions. Add GIMPLE_RETURN
 operands as coalesce candidates with results. Add default
 defs of each parm or result as coalesce candidates with its
 other defs. Mark each result def, and each default def of
 parms, as used_in_copy.
 (gimple_can_coalesce_p): Call it. Call use_register_for_decl
 with the ssa names, even anonymous ones. Drop
 parm_in_stack_slot_p calls. Require same signedness and
 alignment.
 (coalesce_ssa_name): Add coalesce candidates for all defs of
 each parm and result, even unused ones.
 (parm_default_def_partition_arg): New type.
 (set_parm_default_def_partition): New.
 (get_parm_default_def_partitions): New.
 * tree-ssa-coalesce.h (get_parm_default_def_partitions): New.
 * tree-ssa-live.c (partition_view_init): Regard unused defs of
 parms and results as used.
 (verify_live_on_entry): Don't error out just because they're
 not live.

for gcc/testsuite/ChangeLog

 PR rtl-optimization/64164
 PR tree-optimization/67312
 * gcc.dg/pr67312.c: New. From Zdenek Sojka.
 * gcc.target/i386/stackalign/return-4.c: Add -O.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228175 138bc75d-0d04-0410-961f-82ee72b054a4

2a008c8... by dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>

        * g++.dg/debug/dwarf2/pr44641.C: Add one to expected line numbers.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228174 138bc75d-0d04-0410-961f-82ee72b054a4

3d6aab7... by gccadmin <gccadmin@138bc75d-0d04-0410-961f-82ee72b054a4>

Daily bump.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228173 138bc75d-0d04-0410-961f-82ee72b054a4

89bf82d... by mikael <mikael@138bc75d-0d04-0410-961f-82ee72b054a4>

Fix missing deep copy when assigning a DT constructor to an array

This adds the missing deep copy when assiging a constructor of a derived
type with allocatable components to an array.

The check for consantness is removed so that the deep_copy argument passed
to gfc_trans_scalar_assign is set to true.

 PR fortran/67721
gcc/fortran/
 * trans-expr.c (gfc_trans_assignment_1): Remove the non-constantness
 condition guarding deep copy.
gcc/testsuite/
 * gfortran.dg/alloc_comp_deep_copy_3.f03: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228170 138bc75d-0d04-0410-961f-82ee72b054a4

ffb0343... by pault <pault@138bc75d-0d04-0410-961f-82ee72b054a4>

2013-09-26 Paul Thomas <email address hidden>

 PR fortran/67567
 * resolve.c (resolve_fl_procedure): For module procedures, take
 the parent module name and the submodule name from the name of
 the namespace.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228169 138bc75d-0d04-0410-961f-82ee72b054a4

99d74ab... by dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>

        * gcc.dg/pr64935-1.c: XFAIL on AIX.
        * gcc.dg/pr64935-2.c: XFAIL on AIX.
        * gcc.dg/debug/dwarf2/dwarf2-macro2.c: XFAIL Start new file on AIX.
        * gcc.dg/debug/dwarf2/dwarf2-macro2.c: XFAIL At line number on AIX.
        * gcc.dg/debug/dwarf2/global-used-types.c: XFAIL ascii on AIX.
        * gcc.dg/debug/dwarf2/noreturn-function-keyword.c: XFAIL
        DW_AT_noreturn on AIX.
        * gcc.dg/debug/dwarf2/noreturn-function-attribute.c: XFAIL
        DW_AT_noreturn on AIX.
        * gcc.dg/debug/dwarf2/lang-c89.c: XFAIL DW_AT_language on AIX.
        * gcc.dg/debug/dwarf2/stacked-qualified-types-3.c: XFAIL DW_TAG on AIX.
        * g++.dg/debug/dwarf2/deleted-member-function.C: XFAIL
        DW_AT_GNU_deleted on AIX.
        * g++.dg/debug/dwarf2/noreturn-function.C: XFAIL DW_AT_noreturn on AIX.
        * g++.dg/debug/dwarf2/template-params-6.C: XFAIL ascii on AIX.
        * g++.dg/debug/dwarf2/dwarf4-nested.C: XFAIL ascii on AIX.
        * g++.dg/debug/dwarf2/pubnames-2.C: Skip on AIX.
        * g++.dg/debug/dwarf2/pr44641.C: Skip on AIX.
        * g++.dg/debug/dwarf2/pr46527.C: XFAIL on AIX.
        * g++.dg/debug/dwarf2/imported-decl-2.C: XFAIL ascii on AIX.
        * g++.dg/debug/dwarf2/namespace-1.C: XFAIL ascii on AIX.
        * g++.dg/debug/dwarf2/global-used-types-1.C: XFAIL ascii on AIX.
        * g++.dg/debug/dwarf2/lambda1.C: XFAIL ascii on AIX.
        * g++.dg/debug/dwarf2/pubnames-3.C: Skip on AIX.
        * g++.dg/debug/dwarf2/pr61433.C: XFAIL on AIX.
        * g++.dg/debug/dwarf2/nested-4.C: XFAIL on AIX.
        * g++.dg/debug/dwarf2/template-func-params-6.C: XFAIL ascii on AIX.
        * g++.dg/debug/dwarf2/lineno-simple1.C: XFAIL on AIX.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228168 138bc75d-0d04-0410-961f-82ee72b054a4

67429b3... by dje <dje@138bc75d-0d04-0410-961f-82ee72b054a4>

        * dwarf2out.c (XCOFF_DEBUGGING_INFO): Default 0 definition.
        (HAVE_XCOFF_DWARF_EXTRAS): Default to 0 definition.
        (output_fde): Don't output length for debug_frame on AIX.
        (output_call_frame_info): Don't output length for debug_frame on AIX.
        (have_macinfo): Force to False for XCOFF_DEBUGGING_INFO and not
        HAVE_XCOFF_DWARF_EXTRAS.
        (add_AT_loc_list): Return early if XCOFF_DEBUGGING_INFO and not
        HAVE_XCOFF_DWARF_EXTRAS.
        (output_compilation_unit_header): Don't output length on AIX.
        (output_pubnames): Don't output length on AIX.
        (output_aranges): Delete argument. Compute length locally. Don't
        output length on AIX.
        (output_line_info): Don't output length on AIX.
        (dwarf2out_finish): Don't compute aranges_length.
        * dwarf2asm.c (XCOFF_DEBUGGING_INFO): Default 0 definition.
        (dw2_asm_output_nstring): Emit .byte not .ascii on AIX.
        * config/rs6000/rs6000.c (rs6000_output_dwarf_dtprel): Emit correct
        symbol decoration for AIX.
        (rs6000_xcoff_debug_unwind_info): New.
        (rs6000_xcoff_asm_named_section): Emit .dwsect pseudo-op
        for SECTION_DEBUG.
        (rs6000_xcoff_declare_function_name): Emit different
        .function pseudo-op when DWARF2_DEBUG. Don't call
        xcoffout_declare_function for DWARF2_DEBUG.
        * config/rs6000/xcoff.h (TARGET_DEBUG_UNWIND_INFO):
        Redefine.
        * config/rs6000/aix71.h: New.
        * configure.ac (gcc_cv_as_aix_dwloc): Check AIX as for DWARF
        locations support.
        * configure: Regenerate.
        * config.gcc (powerpc-ibm-aix[789]+): New stanza for AIX 7.1+ with
        DWARF support.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228167 138bc75d-0d04-0410-961f-82ee72b054a4

63d6cdd... by law <law@138bc75d-0d04-0410-961f-82ee72b054a4>

 [PATCH] Fix undefined behaviour in arc port

 * config/arc/arc.c (arc_output_addsi): Fix left shift undefined
 behaviour.
 * config/arc/constraints.md (Cca, C2a): Fix left shift undefined
 behaviour.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228166 138bc75d-0d04-0410-961f-82ee72b054a4

6953561... by law <law@138bc75d-0d04-0410-961f-82ee72b054a4>

    [PATCH] Fix undefined behaviour in SH port
 * config/sh/sh.h (CONST_OK_FOR_J16): Fix left shift undefined
 behaviour

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228165 138bc75d-0d04-0410-961f-82ee72b054a4

f86cb0d... by law <law@138bc75d-0d04-0410-961f-82ee72b054a4>

[PATCH] Fix undefined behaviour in mips port
 * config/mips/mips.c (mips_compute_frame_info): Fix left shift
 undefined behaviour.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@228164 138bc75d-0d04-0410-961f-82ee72b054a4