1. 08 Oct, 2019 13 commits
    • Change the library search path when using --with-advance-toolchain · 17ce4f48
      From: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
      
      Remove all -L directories from LINK_OS_EXTRA_SPEC32 and
      LINK_OS_EXTRA_SPEC64 so that user directories specified at
      build time have higher preference over the advance toolchain libraries.
      
      Set MD_STARTFILE_PREFIX to $prefix/lib/ and MD_STARTFILE_PREFIX_1 to
      $at/lib/ so that a compiler library has preference over the Advance
      Toolchain libraries.
      
      
      	* config.gcc: Move -L usage from LINK_OS_EXTRA_SPEC32 and
      	LINK_OS_EXTRA_SPEC64 to MD_STARTFILE_PREFIX and
      	MD_STARTFILE_PREFIX_1 when using --with-advance-toolchain.
      
      From-SVN: r276702
      Tulio Magno Quites Machado Filho committed
    • tree-vectorizer.h (_stmt_vec_info::v_reduc_type): Remove. · 69f8c1ae
      2019-10-08  Richard Biener  <rguenther@suse.de>
      
      	* tree-vectorizer.h (_stmt_vec_info::v_reduc_type): Remove.
      	(_stmt_vec_info::is_reduc_info): Add.
      	(STMT_VINFO_VEC_REDUCTION_TYPE): Remove.
      	(vectorizable_condition): Remove.
      	(vectorizable_shift): Likewise.
      	(vectorizable_reduction): Adjust.
      	(info_for_reduction): New.
      	* tree-vect-loop.c (vect_force_simple_reduction): Fold into...
      	(vect_analyze_scalar_cycles_1): ... here.
      	(vect_analyze_loop_operations): Adjust.
      	(needs_fold_left_reduction_p): Simplify for single caller.
      	(vect_is_simple_reduction): Likewise.  Remove stmt restriction
      	for nested cycles not part of double reductions.
      	(vect_model_reduction_cost): Pass in the reduction type.
      	(info_for_reduction): New function.
      	(vect_create_epilog_for_reduction): Use it, access reduction
      	meta off the stmt info it returns.  Use STMT_VINFO_REDUC_TYPE
      	instead of STMT_VINFO_VEC_REDUCTION_TYPE.
      	(vectorize_fold_left_reduction): Remove pointless assert.
      	(vectorizable_reduction): Analyze the full reduction when
      	visiting the outermost PHI.  Simplify.  Use STMT_VINFO_REDUC_TYPE
      	instead of STMT_VINFO_VEC_REDUCTION_TYPE.  Direct reduction
      	stmt code-generation to vectorizable_* in most cases.  Verify
      	code-generation only for cases handled by
      	vect_transform_reductuon.
      	(vect_transform_reduction): Use info_for_reduction to get at
      	reduction meta.  Simplify.
      	(vect_transform_cycle_phi): Likewise.
      	(vectorizable_live_operation): Likewise.
      	* tree-vect-patterns.c (vect_reassociating_reduction_p): Look
      	at the PHI node for STMT_VINFO_REDUC_TYPE.
      	* tree-vect-slp.c (vect_schedule_slp_instance): Remove no
      	longer necessary code.
      	* tree-vect-stmts.c (vectorizable_shift): Make static again.
      	(vectorizable_condition): Likewise.  Get at reduction related
      	info via info_for_reduction.
      	(vect_analyze_stmt): Adjust.
      	(vect_transform_stmt): Likewise.
      	* tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
      	STMT_VINFO_REDUC_TYPE instead of STMT_VINFO_VEC_REDUCTION_TYPE.
      
      	* gcc.dg/vect/pr65947-1.c: Adjust.
      	* gcc.dg/vect/pr65947-13.c: Likewise.
      	* gcc.dg/vect/pr65947-14.c: Likewise.
      	* gcc.dg/vect/pr65947-4.c: Likewise.
      	* gcc.dg/vect/pr80631-1.c: Likewise.
      	* gcc.dg/vect/pr80631-2.c: Likewise.
      
      From-SVN: r276700
      Richard Biener committed
    • Fortran - fix OpenMP 'target simd' · 65b67cf3
      	gcc/fortran/
      	* parse.c (parse_executable): Add missing ST_OMP_TARGET_SIMD.
      
      	libgomp/
      	* testsuite/libgomp.fortran/target-simd.f90: New.
      
      From-SVN: r276698
      Tobias Burnus committed
    • Add makefile target to update HTML files in source tree · 07f37a7f
      Also remove the creation of the html/ext sub-directory, which has been
      unused since revision r245258.
      
      	* doc/Makefile.am (doc-html-docbook-regenerate): New target.
      	(${docbook_outdir}/html): Do not create unused 'html/ext' directory.
      	* doc/Makefile.in: Regenerate.
      	* doc/xml/manual/documentation_hacking.xml: Document new target.
      	* doc/html/*: Regenerate.
      
      From-SVN: r276695
      Jonathan Wakely committed
    • Fortran - Improve OpenMP/OpenACC diagnostic · 8beaf167
      	gcc/fortran/
      	* match.h (gfc_match_omp_eos_error): Renamed from gfc_match_omp_eos.
      	* openmp.c (gfc_match_omp_eos): Make static.
      	(gfc_match_omp_eos_error): New.
      	* parse.c (matchs, matchdo, matchds): Do as done for 'matcho' -
              if error occurred after OpenMP/OpenACC directive matched, do not
      	try other directives.
      	(decode_oacc_directive, decode_omp_directive): Call new function
      	instead.
      
      	testsuite/
      	* gfortran.dg/goacc/continuation-free-form.f95: Update dg-error.
      
      From-SVN: r276694
      Tobias Burnus committed
    • Restore URL for Austern article on allocators · db4fd465
      This reverts "Remove broken URL from libstdc++ manual" by restoring the
      link, but using an archived copy from the Wayback Machine.
      
      	* doc/xml/manual/allocator.xml: Use archived copy of CUJ article.
      	* doc/html/*: Regenerate.
      
      From-SVN: r276693
      Jonathan Wakely committed
    • Remove Cell Broadband Engine SPU targets · df77d703
      Follow-up to trunk 275343:
      
      	* MAINTAINERS: Add back Trevor Smigiel; move into Write After
      	Approval section.
      
      From-SVN: r276692
      Thomas Schwinge committed
    • Extend 'libgfortran/runtime/minimal.c' per r274599 "PR fortran/68401 Improve… · ca72b780
      Extend 'libgfortran/runtime/minimal.c' per r274599 "PR fortran/68401 Improve allocation error message"
      
      	libgfortran/
      	PR fortran/68401
      	* runtime/minimal.c (os_error_at): New function.
      
      From-SVN: r276691
      Thomas Schwinge committed
    • Revise 'libgfortran/runtime/minimal.c' to better conform to the original sources · 41bc80c3
      	libgfortran/
      	* runtime/minimal.c: Revise.
      
      From-SVN: r276690
      Thomas Schwinge committed
    • Remove '>>>' merge marker from changelog · 5cfa327d
      From-SVN: r276689
      Tobias Burnus committed
    • [AArch64] Limit simd-abi-9.c function body test to LP64 · 81398293
      On ILP32 targets, there's an extra UXTW instruction to extend
      the incoming pointer before the load.  It doesn't seem worth
      complicating the test for that, since all we're checking is
      that an optimisation takes place, and that optimisation isn't
      related to pointer size.
      
      2019-10-08  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/testsuite/
      	* gcc.target/aarch64/torture/simd-abi-9.c: Require LP64 for
      	the function body test.
      
      From-SVN: r276688
      Richard Sandiford committed
    • Make C2X imply -fno-fp-int-builtin-inexact. · fbb2a6dc
      Since TS 18661-1 has been integrated into C2X, this patch makes C2X
      imply -fno-fp-int-builtin-inexact.
      
      Bootstrapped with no regressions on x86_64-pc-linux-gnu.
      
      gcc:
      	* doc/invoke.texi (-ffp-int-builtin-inexact): Document
      	-fno-fp-int-builtin-inexact default for C2X.
      
      gcc/c-family:
      	* c-opts.c (c_common_post_options): Set
      	-fno-fp-int-builtin-inexact for C2X.
      
      gcc/testsuite:
      	* gcc.dg/torture/builtin-fp-int-inexact-c2x.c: New test.
      
      From-SVN: r276686
      Joseph Myers committed
    • Daily bump. · b11df898
      From-SVN: r276685
      GCC Administrator committed
  2. 07 Oct, 2019 25 commits
    • re PR tree-optimization/91532 ([SVE] Redundant predicated store in gcc.target/aarch64/fmla_2.c) · b238b34e
      2019-10-07  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      	    Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91532
      	* tree-if-conv.c: Include tree-ssa-dse.h.
      	(ifcvt_local_dce): Change param from bb to loop,
      	and call dse_classify_store.
      	(tree_if_conversion): Pass loop instead of loop->header as arg
      	to ifcvt_local_dce.
      	* tree-ssa-dse.c: Include tree-ssa-dse.h.
      	(delete_dead_or_redundant_assignment): Remove static qualifier from
      	declaration, and add prototype in tree-ssa-dse.h.
      	(dse_store_status): Move to tree-ssa-dse.h.
      	(dse_classify_store): Remove static qualifier and add new tree param
      	stop_at_vuse, and add prototype in tree-ssa-dse.h.
      	* tree-ssa-dse.h: New header.
      
      Co-Authored-By: Richard Biener <rguenther@suse.de>
      
      From-SVN: r276681
      Prathamesh Kulkarni committed
    • Revert: 2019-10-07 Jozef Lawrynowicz <jozef.l@mittosystems.com> · cac52161
      	* config/msp430/msp430.md: Revert: Group zero_extend* insns together.
      
      From-SVN: r276680
      Jozef Lawrynowicz committed
    • msp430.md: Group zero_extend* insns together. · 795fe3d2
      2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config/msp430/msp430.md: Group zero_extend* insns together.
      
      From-SVN: r276679
      Jozef Lawrynowicz committed
    • [Darwin, machopic 1/n] Consider visibility in indirections. · b393e5ed
      For weak, hidden vars the indirection should just be as normal, that
      is that the indirections for such symbols should appear in the non-lazy
      symbol pointers table, not in the .data section.
      
      gcc/ChangeLog:
      
      2019-10-07  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/darwin.c (machopic_output_indirection): Don't put
      	hidden symbol indirections into the .data section, use the
      	non-lazy symbol pointers section as normal.
      	(darwin_encode_section_info): Record if a symbol is hidden.
      	* config/darwin.h (MACHO_SYMBOL_FLAG_HIDDEN_VIS): New.
      	(MACHO_SYMBOL_HIDDEN_VIS_P): New.
      
      From-SVN: r276675
      Iain Sandoe committed
    • [Darwin, machopic 0/n] Initial tidy of Mach-O symbol handling. · 2161a445
      We want to improve the detection and caching of symbol-properties
      so that (a) we can make the compiler's output match the platform
      norms (b) we can improve efficiency by checking flags instead of
      inspecting strings. (c) The fix for PR71767 was a largish hammer
      and we want to reduce the number of symbols that are made linker-
      visible.
      
      This first patch is largely typographical changes with no functional
      difference intended:
      
      - Tries to ensure that there's no overlap between the symbols used in
      the Mach-O case and those declared in the i386 or rs6000 port trees.
      
       - Some improvement to comments.
      
      - Makes the naming of the symbol flags consistent with other uses.
       
       - Provides a predicate macro for each use.
       
      gcc/ChangeLog:
      
      2019-10-07  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/darwin.c (machopic_symbol_defined_p): Use symbol flag
      	predicates instead of accessing bits directly.
      	(machopic_indirect_call_target): Likewise.
      	(machopic_output_indirection): Likewise.
      	(darwin_encode_section_info): Improve description.  Use renamed
      	symbol flags.  Use predicate macros for variables and functions.
      	* config/darwin.h:
      	Rename MACHO_SYMBOL_VARIABLE to MACHO_SYMBOL_FLAG_VARIABLE.
      	Rename MACHO_SYMBOL_DEFINED to MACHO_SYMBOL_FLAG_DEFINED.
      	Rename MACHO_SYMBOL_STATIC to MACHO_SYMBOL_FLAG_STATIC.
      	(MACHO_SYMBOL_VARIABLE_P): New.
      	(MACHO_SYMBOL_DEFINED_P):New.
      	(MACHO_SYMBOL_STATIC_P): New.
      	* config/i386/darwin.h (MACHO_SYMBOL_FLAG_VARIABLE): Delete.
      	(SYMBOL_FLAG_SUBT_DEP): New.
      	* config/rs6000/darwin.h (SYMBOL_FLAG_SUBT_DEP): New.
      
      From-SVN: r276674
      Iain Sandoe committed
    • msp430.c (msp430_file_end): s/msp_/msp430_/ · 8a896995
      2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config/msp430/msp430.c (msp430_file_end): s/msp_/msp430_/
      	(msp430_expand_epilogue): Likewise.
      	* config/msp430/predicates.md: Likewise.
      	* config/msp430/msp430.md: Likewise.
      	Replace blocks of 8 spaces with tabs.
      
      From-SVN: r276671
      Jozef Lawrynowicz committed
    • msp430-protos.h (msp430_split_addsi): New prototype. · 53f45082
      2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config/msp430/msp430-protos.h (msp430_split_addsi): New prototype.
      	* config/msp430/msp430.c (msp430_split_addsi): New.
      	* config/msp430/msp430.md: Call msp430_split_addsi () instead of using
      	a block of C code for splitting addsi.
      
      From-SVN: r276670
      Jozef Lawrynowicz committed
    • i386-expand.c (ix86_expand_floorceildf_32, [...]): Reorder functions. · 36d387f2
      	* config/i386/i386-expand.c (ix86_expand_floorceildf_32,
      	ix86_expand_rounddf_32): Reorder functions.
      	* config/i386/i386-protos.h: Update..
      
      From-SVN: r276668
      Uros Bizjak committed
    • MSP430: Don't generate 430X insns when handling data in the lower memory region · 8682b1a5
      gcc/ChangeLog:
      
      2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* config.in: Regenerate.
      	* config/msp430/constraints.md: Fix docstring for "Ys" constraint.
      	Add new "Yx" constraint.
      	* config/msp430/driver-msp430.c (msp430_propagate_region_opt): New spec
      	function.
      	* config/msp430/msp430-protos.h (msp430_op_not_in_high_mem): New
      	prototype.
      	* config/msp430/msp430.c (msp430_option_override): Allow the lower
      	code/data region to be selected in the small memory model.
      	(msp430_section_attr): Don't warn if the "section" and "lower"
      	attributes are used together.
      	(msp430_handle_generic_attribute): Likewise.
      	(msp430_var_in_low_mem): New function.
      	(TARGET_ENCODE_SECTION_INFO): Define.
      	(msp430_encode_section_info): New function.
      	(gen_prefix): Return early in the small memory model.
      	Require TARGET_USE_LOWER_REGION_PREFIX to be set before adding the
      	".lower" prefix if -m{code,data}-region=lower have been passed.
      	(msp430_output_aligned_decl_common): Emit common symbols when
      	-mdata-region=lower is passed unless TARGET_USE_LOWER_REGION_PREFIX is
      	set. 
      	(TARGET_ASM_FILE_END): Define.
      	(msp430_file_end): New function.
      	(msp430_do_not_relax_short_jumps): Allow relaxation when
      	function will be in the lower region.
      	(msp430_op_not_in_high_mem): New function.
      	(msp430_print_operand): Check "msp430_op_not_in_high_mem" for
      	the 'X' operand selector. 
      	Clarify comment for 'x' operand selector.
      	* config/msp430/msp430.h (LINK_SPEC): Propagate
      	-m{code,data}-region to the linker via spec function
      	msp430_propagate_region_opt.
      	(msp430_propagate_region_opt): New prototype.
      	(EXTRA_SPEC_FUNCTIONS): Add msp430_propagate_region_opt.
      	(SYMBOL_FLAG_LOW_MEM): Define.
      	* config/msp430/msp430.md (addsipsi3): Add missing "%X" operand
      	selector.
      	(zero_extendqihi2): Fix operand number used by "%X" selector.
      	(zero_extendqisi2): Likewise.
      	(zero_extendhisi2): Likewise.
      	(movqi): Use "Yx" constraint in place of "%X" operand selector.
      	(movhi): Likewise.
      	(addqi3): Likewise.
      	(addhi3): Likewise.
      	(addsi3): Likewise.
      	(addhi3_cy): Likewise.
      	(addchi4_cy): Likewise.
      	(subqi3): Likewise.
      	(subhi3): Likewise.
      	(subsi3): Likewise.
      	(bic<mode>3): Likewise.
      	(and<mode>3): Likewise.
      	(ior<mode>3): Likewise.
      	(xor<mode>3): Likewise.
      	(slli_1): Add missing "%X" operand selector.
      	(slll_1): Likewise.
      	(slll_2): Likewise.
      	(srai_1): Likewise.
      	(sral_1): Likewise.
      	(sral_2): Likewise.
      	(srli_1): Likewise.
      	(srll_1): Likewise.
      	(cbranchqi4_real): Use "Yx" constraint in place of "%X" operand
      	selector.
      	(cbranchhi4_real): Likewise.
      	(cbranchqi4_reversed): Likewise.
      	(cbranchhi4_reversed): Likewise.
      	(*bitbranch<mode>4): Likewise.
      	(*bitbranch<mode>4_z): Remove unnecessary "%x" operand selector.
      	* config/msp430/msp430.opt (mcode-region=): Set default to
      	MSP430_REGION_LOWER. Improve docstring.
      	(mdata-region=): Likewise.
      	(muse-lower-region-prefix): New option.
      	* config/msp430/t-msp430 (MULTILIB_OPTIONS): Add
      	mdata-region=none multilib. 
      	(MULTILIB_MATCHES): Set mdata-region={upper,either} to match
      	mdata-region=none multilib. 
      	MULTILIB_EXCEPTIONS: Remove.
      	MULTILIB_REQUIRED: Define.
      	* configure: Regenerate.
      	* configure.ac: Define HAVE_AS_GNU_ATTRIBUTE and
      	HAVE_AS_MSPABI_ATTRIBUTE if GAS version >= 2.33.50.
      	* doc/extend.texi: Clarify comment for {upper,lower,either}
      	function attributes.
      	Add separate description for "lower" variable attribute.
      
      gcc/testsuite/ChangeLog:
      
      2019-10-07  Jozef Lawrynowicz  <jozef.l@mittosystems.com>
      
      	* gcc.target/msp430/430x-insns.c: New test.
      	* gcc.target/msp430/data-attributes-2.c: Remove dg-warning
      	directives for conflicts between the "section" and "lower" attributes.
      	* gcc.target/msp430/msp430.exp
      	(check_effective_target_msp430_region_not_lower): New.
      	(check_effective_target_msp430_region_lower): New.
      	* gcc.target/msp430/object-attributes-430.c: New test.
      	* gcc.target/msp430/object-attributes-default.c: New test.
      	* gcc.target/msp430/object-attributes-mlarge-any-region.c: New test.
      	* gcc.target/msp430/object-attributes-mlarge.c: New test.
      
      From-SVN: r276665
      Jozef Lawrynowicz committed
    • call.c (resolve_args): Use cp_expr_loc_or_input_loc in one place. · 132235c3
      /cp
      2019-10-07  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* call.c (resolve_args): Use cp_expr_loc_or_input_loc in one place.
      	* decl.c (grokdeclarator): Use id_loc in one place.
      	* decl2.c (build_anon_union_vars): Use DECL_SOURCE_LOCATION.
      	* parser.c (cp_parser_delete_expression): Fix the location of the
      	returned expression.
      	(cp_parser_throw_expression): Likewise.
      	* pt.c (determine_specialization): Use DECL_SOURCE_LOCATION.
      
      /testsuite
      2019-10-07  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/diagnostic/not-a-function-template-1.C: New.
      	* g++.dg/template/crash107.C: Adjust expected location.
      	* g++.dg/template/dependent-expr1.C: Check locations.
      	* g++.dg/template/error17.C: Check location.
      
      From-SVN: r276661
      Paolo Carlini committed
    • Introduce can_vcond_compare_p function · dcd2ca63
      z13 supports only non-signaling vector comparisons.  This means we
      cannot vectorize LT, LE, GT, GE and LTGT when compiling for z13.
      However, we cannot express this restriction today: the code only checks
      whether vcond$a$b optab exists, but this does not say anything about the
      operation.
      
      Introduce a function that checks whether back-end supports vector
      comparisons with individual rtx codes by matching vcond expander's third
      argument with a fake comparison with the corresponding rtx code.
      
      gcc/ChangeLog:
      
      2019-10-07  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/77918
      	* optabs-tree.c (vcond_icode_p): New function.
      	(vcond_eq_icode_p): Likewise.
      	(expand_vec_cond_expr_p): Use vcond_icode_p and
      	vcond_eq_icode_p.
      	* optabs.c (can_vcond_compare_p): New function.
      	* optabs.h (can_vcond_compare_p): Likewise.
      
      From-SVN: r276660
      Ilya Leoshkevich committed
    • Allow COND_EXPR and VEC_COND_EXPR condtions to trap · 70e2a30a
      Right now gimplifier does not allow VEC_COND_EXPR's condition to trap
      and introduces a temporary if this could happen, for example, generating
      
        _5 = _4 > { 2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0 };
        _6 = VEC_COND_EXPR <_5, { -1, -1, -1, -1 }, { 0, 0, 0, 0 }>;
      
      from GENERIC
      
        VEC_COND_EXPR < (*b > { 2.0e+0, 2.0e+0, 2.0e+0, 2.0e+0 }) ,
                        { -1, -1, -1, -1 } ,
      		  { 0, 0, 0, 0 } >
      
      This is not necessary and makes the resulting GIMPLE harder to analyze.
      Change the gimplifier so as to allow COND_EXPR and VEC_COND_EXPR
      conditions to trap.
      
      This patch takes special care to avoid introducing trapping comparisons
      in GIMPLE_COND.  They are not allowed, because they would require 3
      outgoing edges (then, else and EH), which is awkward to say the least.
      Therefore, computations of such conditions should live in their own basic
      blocks.
      
      gcc/ChangeLog:
      
      2019-10-07  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR target/77918
      	* gimple-expr.c (gimple_cond_get_ops_from_tree): Assert that the
      	caller passes a non-trapping condition.
      	(is_gimple_condexpr): Allow trapping conditions.
      	(is_gimple_condexpr_1): New helper function.
      	(is_gimple_condexpr_for_cond): New function, acts like old
      	is_gimple_condexpr.
      	* gimple-expr.h (is_gimple_condexpr_for_cond): New function.
      	* gimple.c (gimple_could_trap_p_1): Handle COND_EXPR and
      	VEC_COND_EXPR. Fix an issue with statements like i = (fp < 1.).
      	* gimplify.c (gimplify_cond_expr): Use
      	is_gimple_condexpr_for_cond.
      	(gimplify_expr): Allow is_gimple_condexpr_for_cond.
      	* tree-eh.c (operation_could_trap_p): Assert on COND_EXPR and
      	VEC_COND_EXPR.
      	(tree_could_trap_p): Handle COND_EXPR and VEC_COND_EXPR.
      	* tree-ssa-forwprop.c (forward_propagate_into_gimple_cond): Use
      	is_gimple_condexpr_for_cond, remove pointless tmp check
      	(forward_propagate_into_cond): Remove pointless tmp check.
      
      From-SVN: r276659
      Ilya Leoshkevich committed
    • Make gsi_next_nonvirtual_phi do what one expects · 880dcdae
      gcc/
      
              * gimple-iterator.h (gsi_next_nonvirtual_phi): Change the semantics to
              match that of other gsi_next_* functions.  Adjust the comment.
              (gsi_start_nonvirtual_phis): New function.
              * ipa-icf.c (sem_function::compare_phi_node): Update uses of
              gsi_next_nonvirtual_phi accordingly.  (No functional change.)
      
      From-SVN: r276658
      Vladislav Ivanishin committed
    • [doc] -Wuninitialized doesn't do -Wclobbered's job · ca95ce80
              * gcc/doc/invoke.texi (-Wuninitialized): Don't mention the clobbered by
              setjmp situation here.  Fix a verb's ending: "the exact variables or
              elements for which there are warnings depends" -> "... depend".
      
      From-SVN: r276657
      Vladislav Ivanishin committed
    • * ipa-prop.c (ipa_vr::nonzero_p): Add TYPE_UNSIGNED check. · 19849d15
      From-SVN: r276655
      Aldy Hernandez committed
    • Use value_range_base::num_pairs instead of vrp_val_is* to check if a range · 3faf75d4
      has one sub-range.
      
      From-SVN: r276653
      Aldy Hernandez committed
    • [IRA] Handle fully-tied destinations in a similar way to earlyclobbers · 9b036587
      IRA's make_early_clobber_and_input_conflicts checks for cases in
      which an output operand is likely to be an earlyclobber and an input
      operand is unlikely to be tieable with it.  If so, the allocno for
      the output conflicts with the allocno for the input.  This seems
      to work well.
      
      However, a similar situation arises if an output operand is likely
      to be tied to one of a set of input operands X and if another input
      operand has a different value from all of the operands in X.
      E.g. if we have:
      
        0: "=r, r"
        1: "0, r"
        2: "r, 0"
        3: "r, r"
      
      operand 0 will always be tied to operand 1 or operand 2, so if operand 3
      is different from them both, operand 0 acts like an earlyclobber as far
      as operand 3 (only) is concerned.  The same is true for operand 2 in:
      
        0: "=r"
        1: "0"
        2: "r"
      
      In the second example, we'd normally have a copy between operand 1 and
      operand 0 if operand 1 dies in the instruction, and so there's rarely
      a problem.  But if operand 1 doesn't die in the instruction, operand 0
      still acts as an earlyclobber for operand 2 (if different from operand 1),
      since in that case LRA must copy operand 1 to operand 0 before the
      instruction.
      
      As the existing comment says:
      
          Avoid introducing unnecessary conflicts by checking classes of the
          constraints and pseudos because otherwise significant code
          degradation is possible for some targets.
      
      I think that's doubly true here.  E.g. it's perfectly reasonable to have
      constraints like:
      
        0: "=r, r"
        1: "0, r"
        2: "r, r"
      
      on targets like s390 that have shorter instructions for tied operands,
      but that don't want the size difference to influence RA too much.
      We shouldn't treat operand 0 as earlyclobber wrt operand 2 in that case.
      
      This patch therefore treats a normal tied non-earlyclobber output as
      being effectively earlyclobber wrt to an input if it is so for *all*
      preferred alternatives.
      
      2019-10-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* ira-lives.c (check_and_make_def_conflict): Handle cases in which
      	DEF is not a true earlyclobber but is tied to a specific input
      	operand, and so is effectively earlyclobber wrt inputs that have
      	different values.
      	(make_early_clobber_and_input_conflicts): Pass this case to the above.
      
      From-SVN: r276650
      Richard Sandiford committed
    • Use CONSTEXPR in machmode.h · ad00d6c1
      This patch adds CONSTEXPR to constructors and operators in machmode.h,
      excluding the controversial constexpr-resistant "() {}" constructors,
      which would become "= default" if we required C++11.
      
      Some of the other routines could potentially be constexpr too,
      but that can be done on an as-needed basis.
      
      2019-10-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* machmode.h (opt_mode): Mark constructors with CONSTEXPR.
      	(pod_mode): Mark operators likewise.
      	(scalar_int_mode): Mark non-default constructors and
      	operators with CONSTEXPR.
      	(scalar_float_mode, scalar_mode, complex_mode): Likewise.
      	(fixed_size_mode): Likewise.
      
      From-SVN: r276649
      Richard Sandiford committed
    • [i386] Make the vzeroupper pattern describe its effects (PR91994) · 69811448
      The problem in this PR was that vzeroupper has an effect on register
      contents, but those effects weren't modelled in the rtl pattern,
      which was just an unspec_volatile.
      
      This patch fixes that by running a subpass after vzeroupper insertion
      to add SETs and CLOBBERs as appropriate.  See the comments in the patch
      for more details.
      
      2019-10-07  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR target/91994
      	* config/i386/sse.md (avx_vzeroupper): Turn into a define_expand
      	and wrap the unspec_volatile in a parallel.
      	(*avx_vzeroupper): New define_insn.  Use a match_parallel around
      	the unspec_volatile.
      	* config/i386/predicates.md (vzeroupper_pattern): Expect the
      	unspec_volatile to be wrapped in a parallel.
      	* config/i386/i386-features.c (ix86_add_reg_usage_to_vzeroupper)
      	(ix86_add_reg_usage_to_vzerouppers): New functions.
      	(rest_of_handle_insert_vzeroupper): Use them to add register
      	usage information to the vzeroupper instructions.
      
      gcc/testsuite/
      	PR target/91994
      	* gcc.target/i386/pr91994.c: New test.
      
      From-SVN: r276648
      Richard Sandiford committed
    • re PR tree-optimization/91975 (worse code for small array copy using pointer… · 806bdf4e
      re PR tree-optimization/91975 (worse code for small array copy using pointer arithmetic than array indexing)
      
      2019-10-07  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/91975
      	* tree-ssa-loop-ivcanon.c (constant_after_peeling): Consistently
      	handle invariants.
      
      	* g++.dg/tree-ssa/ivopts-3.C: Adjust.
      	* gcc.dg/vect/vect-profile-1.c: Disable cunrolli.
      	* gcc.dg/vect/vect-double-reduc-6.c: Disable unrolling of
      	the innermost loop.
      	* gcc.dg/vect/vect-93.c: Likewise.
      	* gcc.dg/vect/vect-105.c: Likewise.
      	* gcc.dg/vect/pr79920.c: Likewise.
      	* gcc.dg/vect/no-vfa-vect-102.c: Likewise.
      	* gcc.dg/vect/no-vfa-vect-101.c: Likewise.
      	* gcc.dg/vect/pr83202-1.c: Operate on a larger array.
      	* gfortran.dg/vect/vect-8.f90: Likewise.
      	* gcc.dg/tree-ssa/cunroll-2.c: Scan early unrolling dump instead
      	of late one.
      
      From-SVN: r276645
      Richard Biener committed
    • Daily bump. · 3e1f7c33
      From-SVN: r276644
      GCC Administrator committed
  3. 06 Oct, 2019 2 commits
    • Add std::copy_n istreambuf_iterator specialization · 5daedc02
      	Commit this missing part which had been rejected.
      
      From-SVN: r276640
      François Dumont committed
    • Fix EXECUTE_IF_SET_IN_HARD_REG_SET use · 1c826400
      As Maxim pointed out, r276309 broke -O3 bootstrap for aarch64-linux-gnu.
      It turns out that EXECUTE_IF_SET_IN_HARD_REG_SET isn't safe to use for
      temporary objects because their lifetimes don't extend to the end of
      the loop.  This patch therefore uses an explicit temporary instead.
      
      Other patches in the series already used this style (but for
      full_reg_and_partial_clobbers rather than full_reg_clobbers),
      so AFAICT this is the only place that needs fixing.
      
      2019-10-06  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* var-tracking.c (dataflow_set_clear_at_call): Hoist temporary
      	function result outside of EXECUTE_IF_SET_IN_HARD_REG_SET.
      
      From-SVN: r276639
      Richard Sandiford committed