1. 02 May, 2016 13 commits
    • Symbol summary: refactor usage of gcc_checking_asserts · 0ec955c2
      	* symbol-summary.h (function_summary::function_summary):
      	Remove checking assert for all cgraph nodes.
      	(function_summary::get): Check summary_uid.
      	(symtab_insertion): Check summary_uid.
      
      From-SVN: r235712
      Martin Liska committed
    • Minor reformatting. · 3702225c
      From-SVN: r235711
      Arnaud Charlet committed
    • [multiple changes] · f96fd197
      2016-05-02  Arnaud Charlet  <charlet@adacore.com>
      
      	* exp_ch5.adb, layout.adb, gnatcmd.adb exp_attr.adb, make.adb,
      	bindgen.adb, debug.adb, exp_pakd.adb, freeze.adb, sem_util.adb,
      	gnatlink.adb, switch-m.adb, exp_ch4.adb, repinfo.adb, adabkend.adb,
      	osint.adb: Remove dead code.
      
      2016-05-02  Yannick Moy  <moy@adacore.com>
      
      	* a-tigeli.adb (Get_Line): Fix bound for test to
      	decide when to compensate for character 0 added by call to fgets.
      
      From-SVN: r235710
      Arnaud Charlet committed
    • [multiple changes] · 3ba1a9eb
      2016-05-02  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch4.adb (Analyze_Allocator): If the expression does not
      	have a subtype indication and the type is an unconstrained tagged
      	type with defaulted discriminants, create an explicit constraint
      	for it during analysis to prevent out-of-order freezing actions
      	on generated classwide types.
      
      2016-05-02  Javier Miranda  <miranda@adacore.com>
      
      	* exp_ch5.adb (Expand_N_Assignment_Statement):
      	In the runtime check that ensures that the tags of source an
      	target match, add missing displacement of the pointer to the
      	objects if they cover interface types.
      
      2016-05-02  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_attr.adb (Analyze_Attribute, case 'Old): Do not use
      	base type for attribute when type is discrete: transformation
      	is not needed for such types, and leads to spurious errors if
      	the context is a case construct.
      
      From-SVN: r235709
      Arnaud Charlet committed
    • [ARC] Add new ARCv2 instructions. · fc1c2d04
      gcc/
      2016-05-02  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc-protos.h (compact_memory_operand_p): Declare.
      	* config/arc/arc.c (arc_output_commutative_cond_exec): Consider
      	bmaskn instruction.
      	(arc_dwarf_register_span): Remove enum keyword.
      	(compact_memory_operand_p): New function.
      	* config/arc/arc.h (reg_class): Add code density register classes.
      	(REG_CLASS_NAMES): Likewise.
      	(REG_CLASS_CONTENTS): Likewise.
      	* config/arc/arc.md (*movqi_insn): Add code density instructions.
      	(*movhi_insn, *movsi_insn, *movsf_insn): Likewise.
      	(*extendhisi2_i, andsi3_i, cmpsi_cc_insn_mixed): Likewise.
      	(*cmpsi_cc_c_insn, *movsi_ne): Likewise.
      	* config/arc/constraints.md (C2p, Uts, Cm1, Cm3, Ucd): New
      	constraints.
      	(h, Rcd, Rsd, Rzd): New register constraints.
      	(T): Use compact_memory_operand_p function.
      	* config/arc/predicates.md (compact_load_memory_operand): Remove.
      
      From-SVN: r235707
      Claudiu Zissulescu committed
    • decl.c (grokdeclarator): Properly insert a DECL_EXPR for anonymous VLAs. · 02673c66
      2016-05-02  Richard Biener  <rguenther@suse.de>
      
      	cp/
      	* decl.c (grokdeclarator): Properly insert a DECL_EXPR for
      	anonymous VLAs.
      
      From-SVN: r235706
      Richard Biener committed
    • trans-array.c (gfc_trans_create_temp_array): Properly create a DECL_EXPR for the… · c83e6ebf
      trans-array.c (gfc_trans_create_temp_array): Properly create a DECL_EXPR for the anonymous VLA array type.
      
      2016-05-02  Richard Biener  <rguenther@suse.de>
      
      	fortran/
      	* trans-array.c (gfc_trans_create_temp_array): Properly
      	create a DECL_EXPR for the anonymous VLA array type.
      
      From-SVN: r235705
      Richard Biener committed
    • sh.md (*negnegt, *movtt): Remove. · 7555e8b2
      gcc/
      	* config/sh/sh.md (*negnegt, *movtt): Remove.
      
      From-SVN: r235704
      Oleg Endo committed
    • decl.c (elaborate_reference_1): Do not bother about operand #2 for COMPONENT_REF. · 552cc590
      	* gcc-interface/decl.c (elaborate_reference_1): Do not bother about
      	operand #2 for COMPONENT_REF.
      	* gcc-interface/utils2.c (gnat_save_expr): Likewise.
      	(gnat_protect_expr): Likewise.
      	(gnat_stabilize_reference_1): Likewise.
      	(gnat_rewrite_reference): Do not bother about operand #3 for ARRAY_REF.
      	(get_inner_constant_reference): Likewise.
      	(gnat_invariant_expr): Likewise.
      	* gcc-interface/trans.c (fold_constant_decl_in_expr): Likewise.
      
      From-SVN: r235701
      Eric Botcazou committed
    • Fix ICE in dump_pred_graph · 6b9933b9
      2016-05-02  Marek Polacek  <polacek@redhat.com>
      	    Tom de Vries  <tom@codesourcery.com>
      
      	PR tree-optimization/70700
      	* tree-ssa-structalias.c (dump_pred_graph): Fix getting varinfo for ids
      	bigger than FIRST_REF_NODE.
      
      	* gcc.dg/pr70700.c: New test.
      
      Co-Authored-By: Tom de Vries <tom@codesourcery.com>
      
      From-SVN: r235700
      Marek Polacek committed
    • trans.c (Range_to_gnu): New static function. · 3eaec285
      	* gcc-interface/trans.c (Range_to_gnu): New static function.
      	(Raise_Error_to_gnu) <N_In>: Call it to translate the range.
      	(gnat_to_gnu) <N_In>: Likewise.
      
      From-SVN: r235699
      Eric Botcazou committed
    • re PR target/52898 (SH Target: Inefficient DImode comparisons) · 40d848c7
      gcc/
      	PR target/52898
      	* config/sh/sh.c (sh_option_override): Remove TARGET_CBRANCHDI4,
      	TARGET_CMPEQDI_T.
      	(prepare_cbranch_operands): Don't use scratch register.  Assume that
      	function is used when pseudos can be created.
      	(expand_cbranchdi4): Likewise.  Remove unused TARGET_CMPEQDI_T paths.
      	* config/sh/sh.md (cbranchsi4): Allow only when pseudos can be created.
      	(cbranchdi4, cbranchdi4_i): Simplify to single cbranchdi4
      	define_expand.  Allow it only when pseudos can be created.
      	* config/sh/sh.opt (mcbranchdi, mcmpeqdi): Delete.
      
      From-SVN: r235698
      Oleg Endo committed
    • Daily bump. · 126fa2bb
      From-SVN: r235697
      GCC Administrator committed
  2. 01 May, 2016 8 commits
    • constraints.md (BC): Only allow -1 operands. · 90f82260
      	* config/i386/constraints.md (BC): Only allow -1 operands.
      	* config/i386/sse.md (mov<mode>_internal): Add (v,C) alternative.
      	Add "enabled" attribute.  Update XI mode attribute calculation.
      	* config/i386/i386.md (*movxi_internal_avx512f): Add (v,C) alternative.
      	(*movoi_internal_avx): Update XI mode attribute calculation.
      	(*movti_internal): Ditto.
      
      testsuite/ChangeLog:
      
      	* gcc.target/i386/avx256-unaligned-load-1.c: Update scan strings.
      	* gcc.target/i386/avx256-unaligned-store-1.c: Ditto.
      	* gcc.target/i386/avx256-unaligned-store-2.c: Ditto.
      	* gcc.target/i386/avx256-unaligned-store-3.c: Ditto.
      	* gcc.target/i386/avx256-unaligned-store-4.c: Ditto.
      
      From-SVN: r235693
      Uros Bizjak committed
    • re PR bootstrap/70704 (AIX bootstrap comparison failure) · c100769b
      	PR bootstrap/70704
      	* configure.ac (--enable-stage1-checking): Add missing
      	--enable-checking=.
      	* configure: Regenerated.
      
      From-SVN: r235692
      Jakub Jelinek committed
    • sh.md (push, [...]): Remove constraints. · ea15a06f
      gcc/
      	* config/sh/sh.md (push, pop, ic_invalidate_line, cstoresi4, cstoredi4,
      	cstoresf4, cstoredf4, fix_truncsfsi2): Remove constraints.
      
      From-SVN: r235691
      Oleg Endo committed
    • rs6000.c (altivec_expand_lv_builtin): Do not use switch statement on instruction code. · 72a109f7
      	* config/rs6000/rs6000.c (altivec_expand_lv_builtin): Do not use switch
      	statement on instruction code.  Remove trailing spaces.
      	(altivec_expand_stv_builtin): Likewise.
      
      From-SVN: r235690
      Eric Botcazou committed
    • sh.h (TARGET_SH4): Remove and use default implementation. · d5dd0a62
      gcc/
      	* config/sh/sh.h (TARGET_SH4): Remove and use default implementation.
      	(TARGET_FPU_DOUBLE): Simplify.
      	(BASE_ARG_REG, DOUBLE_TYPE_SIZE, OPTIMIZE_MODE_SWITCHING): Replace
      	'TARGET_SH4 || TARGET_SH2A_DOUBLE' conditions with 'TARGET_FPU_DOUBLE'.
      	* config/sh/sh.c: Replace 'TARGET_SH4 || TARGET_SH2A_DOUBLE' conditions
      	with 'TARGET_FPU_DOUBLE'.
      	* config/sh/sh.md: Likewise.
      
      From-SVN: r235689
      Oleg Endo committed
    • linux.h (SH_DIV_STRATEGY_DEFAULT, [...]): Remove. · 21b60758
      gcc/
      	* config/sh/linux.h (SH_DIV_STRATEGY_DEFAULT,
      	SH_DIV_STR_FOR_SIZE): Remove.
      	* config/sh/netbsd-elf.h (SH_DIV_STRATEGY_DEFAULT,
      	SH_DIV_STR_FOR_SIZE): Remove.
      
      From-SVN: r235688
      Yoshinori Sato committed
    • predicates.md (any_register_operand, [...]): Delete. · 5a2fc4d7
      gcc/
      	* config/sh/predicates.md (any_register_operand, zero_extend_operand,
      	logical_reg_operand): Delete.
      	(arith_operand, arith_reg_dest, arith_or_int_operand, cmpsi_operand,
      	arith_reg_or_0_operand, arith_reg_or_0_or_1_operand, logical_operand,
      	logical_and_operand, movsrc_no_disp_mem_operand): Rewrite using
      	match_operand and match_test.
      	(sh_const_vec, sh_1el_vec): Remove redundant checks.  Declare local
      	variables on their first use.  Return bool values.
      	* config/sh/sh.h (LOAD_EXTEND_OP): Update comment.
      	* config/sh/sh.md (andsi3, iorsi3): Use arith_reg_dest for result and
      	arith_reg_operand for input operand.  Remove empty constraints.
      	(xorsi3): Delete.
      	(*xorsi3_compact): Rename to xorsi3.
      	(zero_extend<mode>si2): Use arith_reg_operand for input operand.
      	(*zero_extend<mode>si2_disp_mem): Update comment.
      	(mov_nop): Delete.
      
      From-SVN: r235687
      Oleg Endo committed
    • Daily bump. · c4ef2cba
      From-SVN: r235686
      GCC Administrator committed
  3. 30 Apr, 2016 17 commits
    • * zh_CN.po: Update. · f3fe9c75
      From-SVN: r235681
      Joseph Myers committed
    • * sv.po: Update. · c48d70fe
      From-SVN: r235679
      Joseph Myers committed
    • Make-lang.in (ACATSCMD): New variable. · f73036c1
      ada/
      	* gcc-interface/Make-lang.in (ACATSCMD): New variable.
      	(check-acats): Use it.
      	(check_acats_targets): Likewise.
      testsuite/
      	* ada/acats/run_acats: Rename into...
      	* ada/acats/run_acats.sh: ...this.  Only export BASE variable.
      	* ada/acats/run_all.sh: Remove redundant test.
      	(target_run): Move around.
      	(target_gnatchop): Use newly built executable.
      	(target_gnatmake): Likewise.
      	Check that the compilation of impbit succeeds.
      
      From-SVN: r235678
      Eric Botcazou committed
    • config.guess: Revert r235676. · ace08cb8
      /
      	* config.guess: Revert r235676.
      	* config.sub: Revert r235676.
      
      libjava/
      	* classpath/config.guess: Revert r235676.
      	* classpath/config.sub: Revert r235676.
      
      From-SVN: r235677
      Oleg Endo committed
    • config.guess: Remove SH5 support. · bc6d9014
      /
      	* config.guess:  Remove SH5 support.
      	* config.sub: Likewise.
      	* configure: Likewise.
      	* configure.ac: Likewise.
      
      config/
      	* picflag.m4:  Remove SH5 support.
      
      gcc/
      	* config/sh/t-sh: Remove SH5 support.
      	* config.gcc: Likewise.
      	* configure: Likewise.
      
      contrib/
      	* compare-all-tests: Remove SH5 support.
      	* config-list.mk: Likewise.
      
      libada/
      	* configure: Remove SH5 support.
      
      libgcc/
      	* config.host: Remove SH5 support.
      	* configure: Likewise.
      
      libiberty/
      	* configure: Remove SH5 support.
      
      libjava/
      	* classpath/config.guess: Remove SH5 support.
      	* classpath/config.sub: Likewise.
      
      From-SVN: r235676
      Oleg Endo committed
    • Handle -fcilkplus in Mac OS X LINK_COMMAND_SPEC · c41de70a
      	* config/darwin.h (LINK_COMMAND_SPEC_A): Handle -fcilkplus.
      
      From-SVN: r235675
      Rainer Orth committed
    • sh.c (register_sh_passes, [...]): Remove TARGET_SH1 checks. · f1bebab6
      gcc/
      	* config/sh/sh.c (register_sh_passes, sh_option_override,
      	sh_print_operand, prepare_move_operands,
      	sh_can_follow_jump): Remove TARGET_SH1 checks.
      	* config/sh/sh.h (TARGET_VARARGS_PRETEND_ARGS, VALID_REGISTER_P,
      	PROMOTE_MODE): Likewise.
      	* config/sh/sh.md (adddi3, addsi3, subdi3, subsi3, andsi3,
      	movdi): Likewise.
      
      From-SVN: r235674
      Oleg Endo committed
    • thunk3.C: Remove SH5 checks. · 85e051a3
      testsuite/
      	* g++.old-deja/g++.jason/thunk3.C: Remove SH5 checks.
      	* gcc.dg/20021029-1.c: Likewise.
      	* gcc.target/sh/attr-isr-trap_exit.c: Likewise.
      	* gcc.target/sh/attr-isr-trapa.c: Likewise.
      	* gcc.target/sh/cmpstr.c: Likewise.
      	* gcc.target/sh/cmpstrn.c: Likewise.
      	* gcc.target/sh/memset.c: Likewise.
      	* gcc.target/sh/pr21255-2-mb.c: Likewise.
      	* gcc.target/sh/pr21255-2-ml.c: Likewise.
      	* gcc.target/sh/pr39423-1.c: Likewise.
      	* gcc.target/sh/pr49468-di.c: Likewise.
      	* gcc.target/sh/pr49468-si.c: Likewise.
      	* gcc.target/sh/pr49880-1.c: Likewise.
      	* gcc.target/sh/pr49880-2.c: Likewise.
      	* gcc.target/sh/pr49880-3.c: Likewise.
      	* gcc.target/sh/pr50751-1.c: Likewise.
      	* gcc.target/sh/pr50751-4.c: Likewise.
      	* gcc.target/sh/pr50751-7.c: Likewise.
      	* gcc.target/sh/pr51244-1.c: Likewise.
      	* gcc.target/sh/pr51244-10.c: Likewise.
      	* gcc.target/sh/pr51244-11.c: Likewise.
      	* gcc.target/sh/pr51244-12.c: Likewise.
      	* gcc.target/sh/pr51244-13.c: Likewise.
      	* gcc.target/sh/pr51244-14.c: Likewise.
      	* gcc.target/sh/pr51244-17.c: Likewise.
      	* gcc.target/sh/pr51244-18.c: Likewise.
      	* gcc.target/sh/pr51244-19.c: Likewise.
      	* gcc.target/sh/pr51244-4.c: Likewise.
      	* gcc.target/sh/pr51244-5.c: Likewise.
      	* gcc.target/sh/pr51244-7.c: Likewise.
      	* gcc.target/sh/pr51244-8.c: Likewise.
      	* gcc.target/sh/pr51244-9.c: Likewise.
      	* gcc.target/sh/pr51697.c: Likewise.
      	* gcc.target/sh/pr52483-1.c: Likewise.
      	* gcc.target/sh/pr52483-2.c: Likewise.
      	* gcc.target/sh/pr52483-3.c: Likewise.
      	* gcc.target/sh/pr52483-5.c: Likewise.
      	* gcc.target/sh/pr52933-1.c: Likewise.
      	* gcc.target/sh/pr52933-2.c: Likewise.
      	* gcc.target/sh/pr52933-3.c: Likewise.
      	* gcc.target/sh/pr53568-1.c: Likewise.
      	* gcc.target/sh/pr53976-1.c: Likewise.
      	* gcc.target/sh/pr53988-1.c: Likewise.
      	* gcc.target/sh/pr53988.c: Likewise.
      	* gcc.target/sh/pr54089-1.c: Likewise.
      	* gcc.target/sh/pr54089-6.c: Likewise.
      	* gcc.target/sh/pr54089-7.c: Likewise.
      	* gcc.target/sh/pr54089-8.c: Likewise.
      	* gcc.target/sh/pr54089-9.c: Likewise.
      	* gcc.target/sh/pr54236-1.c: Likewise.
      	* gcc.target/sh/pr54236-2.c: Likewise.
      	* gcc.target/sh/pr54236-3.c: Likewise.
      	* gcc.target/sh/pr54236-4.c: Likewise.
      	* gcc.target/sh/pr54386.c: Likewise.
      	* gcc.target/sh/pr54602-1.c: Likewise.
      	* gcc.target/sh/pr54685.c: Likewise.
      	* gcc.target/sh/pr54760-1.c: Likewise.
      	* gcc.target/sh/pr54760-2.c: Likewise.
      	* gcc.target/sh/pr54760-3.c: Likewise.
      	* gcc.target/sh/pr54760-4.c: Likewise.
      	* gcc.target/sh/pr54760-5.c: Likewise.
      	* gcc.target/sh/pr54760-6.c: Likewise.
      	* gcc.target/sh/pr55146.c: Likewise.
      	* gcc.target/sh/pr55160.c: Likewise.
      	* gcc.target/sh/pr59278.c: Likewise.
      	* gcc.target/sh/pr59401-1.c: Likewise.
      	* gcc.target/sh/pr59533-1.c: Likewise.
      	* gcc.target/sh/pr63260.c: Likewise.
      	* gcc.target/sh/pragma-isr-trap-exit.c: Likewise.
      	* gcc.target/sh/pragma-isr-trapa.c: Likewise.
      	* gcc.target/sh/strlen.c: Likewise.
      	* gcc.target/sh/torture/pr30807.c: Likewise.
      	* gcc.target/sh/torture/pr34777.c: Likewise.
      	* gcc.target/sh/torture/pr64652.c: Likewise.
      	* gcc.target/sh/torture/pr65505.c: Likewise.
      	* gcc.target/sh/torture/pragma-isr.c: Likewise.
      	* gcc.target/sh/torture/pragma-isr2.c: Likewise.
      
      From-SVN: r235673
      Oleg Endo committed
    • [RS6000] Allow saving of fixed regs. · cc5f7354
      As I noted a long time ago in the comment on fixed_reg_p, the real
      problem with saving fixed/global regs is that exception frame
      unwinding might restore them.  So don't emit eh_frame info for any
      such reg, and the unwinder won't restore them.
      
      Also, tidy rs6000_savres_strategy.  Delaying some checks means we
      won't iterate over regs quite so often.
      
      	* config/rs6000/rs6000.c (rs6000_savres_strategy): Force inline
      	restoring when fixed_reg_p, but allow out-of-line or stmw save.
      	Check for user regs later to avoid unnecessary looping over regs.
      	Merge user reg check with non-saved reg check.  Don't force
      	inline VR restore when static chain used.
      	(rs6000_frame_related): Omit eh_frame info for user regs when
      	saving.
      	(fixed_regs_p): Delete.
      
      From-SVN: r235672
      Alan Modra committed
    • [RS6000] Split SAVRES_STRATEGY · 8cd5d1f4
      No functional change here.  A single bit becomes two bits, which
      always have the same value at the moment.
      
      	* config/rs6000/rs6000.c (SAVRES_MULTIPLE): Replace with..
      	(SAVE_STRATEGY, REST_STRATEGY): ..this.  Renumber and sort enum.
      	Update all uses.
      
      From-SVN: r235671
      Alan Modra committed
    • [RS6000] PR69645, -ffixed-reg ignored · 223de6da
      Treat -ffixed-reg as we do for global asm regs.
      
      	PR target/69645
      	* config/rs6000/rs6000.c (fixed_reg_p): New function.
      	(fixed_regs_p): Rename from global_regs_p.  Call fixed_reg_p.
      	Update all uses.
      
      From-SVN: r235670
      Alan Modra committed
    • [RS6000] Simplify setting of fixed_regs[RS6000_PIC_OFFSET_TABLE_REGNUM] · fd1c95f7
      This makes the conditions look the same as other places that deal with
      RS6000_PIC_OFFSET_TABLE_REGNUM, eg. first_reg_to_save.  No functional
      changes.
      
      	* config/rs6000/rs6000.c (rs6000_conditional_register_usage):
      	Remove redundant PIC_OFFSET_TABLE_REGNUM test.  Replace with
      	flag_pic test for Darwin.
      
      From-SVN: r235669
      Alan Modra committed
    • Daily bump. · de3259f2
      From-SVN: r235668
      GCC Administrator committed
    • Goodbye REG_FREQ_CALLS_CROSSED and REG_N_THROWING_CALLS_CROSSED · 725842d0
      	* regs.h (struct reg_info_t): Delete freq_calls_crossed and
      	throw_calls_crossed.
      	(REG_FREQ_CALLS_CROSSED): Delete.
      	(REG_N_THROWING_CALLS_CROSSED): Delete.
      	* regstat.c (regstat_bb_compute_ri): Don't calculate
      	REG_FREQ_CALLS_CROSSED and REG_N_THROWING_CALLS_CROSSED.
      	(dump_reg_info): Don't print call cross frequency.
      	* ira.c (combine_and_move_insns): Don't set REG_FREQ_CALLS_CROSSED
      	and REG_N_THROWING_CALLS_CROSSED.
      
      From-SVN: r235664
      Alan Modra committed
    • Goodbye REG_LIVE_LENGTH · 91dabbb2
      	* regs.h (struct reg_info_t): Delete live_length.
      	(REG_LIVE_LENGTH): Delete macro.
      	* regstat.c (regstat_bb_compute_ri): Delete artificial_uses,
      	local_live, local_processed and local_live_last_luid params.
      	Replace bb_index param with bb.  Don't set REG_LIVE_LENGTH.
      	Formatting fixes.
      	(regstat_compute_ri): Adjust for above.  Don't set
      	REG_LIVE_LENGTH.
      	(dump_reg_info): Don't print live length.
      	* ira.c (update_equiv_regs): Replace test of REG_LIVE_LENGTH
      	with test of setjmp_crosses.  Don't set REG_LIVE_LENGTH.
      	Localize loop_depth var.
      
      From-SVN: r235663
      Alan Modra committed
    • re PR c++/66644 (Rejects C++11 in-class anonymous union members initialization) · 411e5c67
      /cp
      2016-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/66644
      	* class.c (check_field_decl): Remove final int* parameter, change
      	the return type to bool; fix logic in order not to reject multiple
      	initialized fields in anonymous struct.
      	(check_field_decls): Adjust call.
      
      /testsuite
      2016-04-29  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/66644
      	* g++.dg/cpp0x/nsdmi-anon-struct1.C: New.
      
      From-SVN: r235662
      Paolo Carlini committed
    • ira.c validate_equiv_mem · 63ce14e0
      This function is used to validate REG_EQUIV notes generated by ira,
      and to validate potential insn combines performed by ira.  The two
      conditions are not exactly the same, with reload being more
      restrictive.  Separate them so more combines/moves can occur.
      
      For example, this sequence from cfgexpand.c:expand_gimple_cond
      	callq  _Z18update_bb_for_insnP15basic_block_def
      	mov    0x10(%rbx),%rdi
      	mov    0x0(%rip),%rbp        # x_rtl+0x34
      	callq  _Z9safe_as_aIP8rtx_insn7rtx_defET_PT0_
      	mov    %r13,%rdx
      	mov    %rbp,%rsi
      	mov    %rax,%rdi
      	callq  _Z18create_basic_blockP7rtx_defS0_P15basic_block_def
      
      becomes
      	callq  _Z18update_bb_for_insnP15basic_block_def
      	mov    0x10(%rbx),%rdi
      	callq  _Z9safe_as_aIP8rtx_insn7rtx_defET_PT0_
      	mov    0x0(%rip),%rsi        # x_rtl+0x34
      	mov    %r13,%rdx
      	mov    %rax,%rdi
      	callq  _Z18create_basic_blockP7rtx_defS0_P15basic_block_def
      
      	* ira.c (enum valid_equiv): New.
      	(validate_equiv_mem): Return enum.
      	(update_equiv_mem): Create replacement in more cases.
      	(add_store_equivs): Update validate_equiv_mem call.
      
      From-SVN: r235661
      Alan Modra committed
  4. 29 Apr, 2016 2 commits
    • ira.c use DF infrastructure for combine_and_move_insns · b00544fa
      This patch actually improves generated code, because REG_DEAD notes
      used by the old insn scan are not always present.  On x86_64, see
      gcc/wide-int-print.o:print_hex for an example of a function that is
      smaller and uses one less callee saved reg.
      
      	* ira.c (combine_and_move_insns): Rather than scanning insns,
      	use DF infrastucture to find use and def insns.
      
      From-SVN: r235660
      Alan Modra committed
    • ira.c combine_and_move_insns, and ordering of functions · 10e04446
      Notes added by add_store_equivs are not used directly or indirectly by
      combine_and_move_insns.  add_store_equivs can therefore run later
      without affecting the output of combine_and_move_insns, and thus
      add_store_equivs need not take into account potentially moved insns.
      Since not all potentially combined/moved insns are in fact combined or
      moved, this may allow add_store_equivs to add more REG_EQUIV notes.
      
      grow_reg_equivs isn't needed until the reload reg_equivs array is
      changed.
      
      	ira.c (combine_and_move_insns): Move invariant conditions..
      	(ira.c): ..to here.  Call combine_and_move_insns before
      	add_store_equivs.  Call grow_reg_equivs later.  Allocate
      	req_equiv later using max_reg_num() rather than global max_regno.
      	(contains_replace_regs): Delete.
      	(add_store_equivs): Remove contains_replace_regs test.
      
      From-SVN: r235659
      Alan Modra committed