1. 04 Jul, 2017 14 commits
  2. 03 Jul, 2017 26 commits
    • t-vxworks7: New file. · ca12f1ca
      2017-06-27  Olivier Hainque  <hainque@adacore.com>
      
      	* config/t-vxworks7: New file.
      
      New file mistakenly omitted from previous commit referencing it.
      
      From-SVN: r249938
      Olivier Hainque committed
    • re PR c++/65775 (Late-specified return type bypasses return type checks… · 17c18221
      re PR c++/65775 (Late-specified return type bypasses return type checks (qualified, function, array))
      
      /cp
      2017-07-03  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/65775
      	* decl.c (grokdeclarator): Move checks on function return type after
      	the splice_late_return_type call; if declspecs->locations[ds_type_spec]
      	is UNKNOWN_LOCATION fall back to input_location.
      
      /testsuite
      2017-07-03  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	PR c++/65775
      	* g++.dg/cpp0x/trailing14.C: New.
      
      From-SVN: r249935
      Paolo Carlini committed
    • re PR fortran/79866 (diagnostics: typo in "Variable %s at %L of type EVENT_TYPE") · 370d975d
      2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
       
      	PR fortran/79866
      	* resolve.c (resolve_symbol): Fix typo.
      
      	PR testsuite/79866
      	* gfortran.dg/coarray_event_2.f08: New test.
      
      From-SVN: r249934
      Dominique d'Humieres committed
    • re PR fortran/79843 (diagnostics: missing word in fortran/symbol.c, conflict_std) · 73977c47
      2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
      
      	PR fortran/79843
      	* symbol.c (check_conflict): Add missing "conflicts".
      
      	PR testsuite/79843
      	* gfortran.dg/namelist_3.f90: Adjust the dg-error string.
      	* gfortran.dg/pointer_intent_2.f90: Likewise.
      
      From-SVN: r249933
      Dominique d'Humieres committed
    • C++: fix "RT_INTERATION" typo · 4ab42f46
      gcc/cp/ChangeLog:
      	* parser.c (enum required_token): Fix spelling of
      	RT_INTERATION to RT_ITERATION.
      	(cp_parser_iteration_statement): Likewise.
      	(cp_parser_required_error): Likewise.
      
      From-SVN: r249931
      David Malcolm committed
    • re PR bootstrap/81033 (there are cases where ld64 is not able to determine… · 7001cb1f
      re PR bootstrap/81033 (there are cases where ld64 is not able to determine correct atom boundaries from the output GCC currently produces)
      
      2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
      
      	PR target/81033
      	* config/darwin.c (darwin_function_switched_text_sections):
      	Fix spaces.
      
      From-SVN: r249930
      Dominique d'Humieres committed
    • * tree-vect-loop-manip.c (vect_do_peeling): Fix scaling up. · 10ea2672
      From-SVN: r249929
      Jan Hubicka committed
    • [arm] Add -mbe8 and -mbe32 to options summary. · 5c2ef4e8
      * doc/invoke.texi (ARM Options): Add -mbe8 and -mbe32 to option summary.
      
      From-SVN: r249928
      Richard Earnshaw committed
    • Avoid minimum - 1 confusion in vectoriser · 80be3333
      The variables that claimed to be the "minimum number of iterations" for
      which vectorisation was profitable were actually the maximum number of
      iterations for which vectorisation wasn't profitable.  The loop threshold
      was too.
      
      This patch makes the values be what the variable names suggest.
      
      2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-vect-loop.c (vect_analyze_loop_2): Treat min_scalar_loop_bound,
      	min_profitable_iters, and th as inclusive lower bounds.
      	Fix LOOP_VINFO_PEELING_FOR_GAPS condition.
      	(vect_estimate_min_profitable_iters): Return inclusive lower bounds
      	for min_profitable_iters and min_profitable_estimate.
      	(vect_transform_loop): Treat th as an inclusive lower bound.
      	* tree-vect-loop-manip.c (vect_loop_versioning): Likewise.
      
      From-SVN: r249927
      Richard Sandiford committed
    • re PR bootstrap/81033 (there are cases where ld64 is not able to determine… · be587708
      re PR bootstrap/81033 (there are cases where ld64 is not able to determine correct atom boundaries from the output GCC currently produces)
      
      2017-07-03  Dominique d'Humieres  <dominiq@lps.ens.fr>
      
      	PR target/81033
      	* config/darwin.c (darwin_function_switched_text_sections):
      	Replace DECL_NAME with DECL_ASSEMBLER_NAME, split assemble_name_raw
      	in two pieces, and suppress the use of buf.
      
      From-SVN: r249926
      Dominique d'Humieres committed
    • * hash-table.h (hash_table_mod1): Fix indentation. · 57c49199
      From-SVN: r249925
      Nathan Sidwell committed
    • re PR rtl-optimization/81290 (ICE in update_br_prob_note) · 2f70a979
      
      	PR middle-end/81290
      	* predict.c (force_edge_cold): Be more careful about propagation
      	backward.
      	* profile-count.h (profile_probability::guessed,
      	profile_probability::fdo, profile_count::guessed, profile_count::fdo):
      	New.
      	* tree-ssa-threadupdate.c (recompute_probabilities): Result is guessed.
      
      	* gcc.c-torture/compile/pr81290.c: New.
      
      From-SVN: r249924
      Jan Hubicka committed
    • Andrew pointed out that I did not document the new architecture extension flag I… · d31415ba
      Andrew pointed out that I did not document the new architecture extension flag I added for the RcPc extension.
      
      Andrew pointed out that I did not document the new architecture extension
      flag I added for the RcPc extension. This was intentional, as enabling the
      rcpc extension does not change GCC code generation, and is just
      an assembler flag. But for completeness, here is documentation for the
      new option.
      
      gcc/
      
      2017-07-03  James Greenhalgh  <james.greenhalgh@arm.com>
      
      	* doc/invoke.texi (rcpc architecture extension): Document it.
      
      From-SVN: r249923
      James Greenhalgh committed
    • configure.ac: Set srcdir when sourcing config-lang.in fragments. · d4360477
      	* configure.ac: Set srcdir when sourcing config-lang.in fragments.
      	* configure: Rebuilt.
      
      	gcc/objcp/
      	* config-lang.in: Source cp/config-lang.in, sort objc++ gtfiles list.
      
      From-SVN: r249922
      Nathan Sidwell committed
    • Readd myself as c6x maintainer. · 9dc9ae74
      From-SVN: r249920
      Bernd Schmidt committed
    • re PR tree-optimization/60510 (SLP blocks loop vectorization (with reduction)) · 6b5e165b
      2017-07-03  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/60510
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): Pass in
      	the scalar reduction PHI and use it.
      	(vectorizable_reduction): Properly guard the single_defuse_cycle
      	path for non-SLP reduction chains where we cannot use it.
      	Rework reduc_def/index and vector type deduction.  Rework
      	vector operand gathering during reduction op code-gen.
      	* tree-vect-slp.c (vect_analyze_slp): For failed SLP reduction
      	chains dissolve the chain and leave it to non-SLP reduction
      	handling.
      
      	* gfortran.dg/vect/pr60510.f: New testcase.
      
      From-SVN: r249919
      Richard Biener committed
    • Fix secure_getenv.h include in plugin-hsa.c · 9607b014
      2017-07-03  Tom de Vries  <tom@codesourcery.com>
      
      	* plugin/plugin-hsa.c: Fix secure_getenv.h include.
      
      From-SVN: r249918
      Tom de Vries committed
    • Add a helper for getting the overall alignment of a DR · 25f68d90
      This combines the information from previous patches to give a guaranteed
      alignment for the DR as a whole.  This should be a bit safer than using
      base_element_aligned, since that only really took the base into account
      (not the init or offset).
      
      2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-data-ref.h (dr_alignment): Declare.
      	* tree-data-ref.c (dr_alignment): New function.
      	* tree-vectorizer.h (dataref_aux): Remove base_element_aligned.
      	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Don't
      	set it.
      	* tree-vect-stmts.c (vectorizable_store): Use dr_alignment.
      
      From-SVN: r249917
      Richard Sandiford committed
    • Add DR_BASE_ALIGNMENT and DR_BASE_MISALIGNMENT · bb642979
      This patch records the base alignment and misalignment in
      innermost_loop_behavior, to avoid the second-guessing that was
      previously done in vect_compute_data_ref_alignment.  It also makes
      vect_analyze_data_refs use dr_analyze_innermost, instead of having an
      almost-copy of the same code.
      
      I wasn't sure whether the alignments should be measured in bits
      (for consistency with most other interfaces) or in bytes (for consistency
      with DR_ALIGNED_TO, now DR_OFFSET_ALIGNMENT, and with *_ptr_info_alignment).
      I went for bytes because:
      
      - I think in practice most consumers are going to want bytes.
        E.g. using bytes avoids having to mix TYPE_ALIGN and TYPE_ALIGN_UNIT
        in vect_compute_data_ref_alignment.
      
      - It means that any bit-level paranoia is dealt with when building
        the innermost_loop_behavior and doesn't get pushed down to consumers.
      
      2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-data-ref.h (innermost_loop_behavior): Add base_alignment
      	and base_misalignment fields.
      	(DR_BASE_ALIGNMENT, DR_BASE_MISALIGNMENT): New macros.
      	* tree-data-ref.c: Include builtins.h.
      	(dr_analyze_innermost): Set up the new innmost_loop_behavior fields.
      	* tree-vectorizer.h (STMT_VINFO_DR_BASE_ALIGNMENT): New macro.
      	(STMT_VINFO_DR_BASE_MISALIGNMENT): Likewise.
      	* tree-vect-data-refs.c: Include tree-cfg.h.
      	(vect_compute_data_ref_alignment): Use the new innermost_loop_behavior
      	fields instead of calculating an alignment here.
      	(vect_analyze_data_refs): Use dr_analyze_innermost.  Dump the new
      	innermost_loop_behavior fields.
      
      From-SVN: r249916
      Richard Sandiford committed
    • Add DR_STEP_ALIGNMENT · 832b4117
      A later patch adds base alignment information to innermost_loop_behavior.
      After that, the only remaining piece of alignment information that wasn't
      immediately obvious was the step alignment.  Adding that allows a minor
      simplification to vect_compute_data_ref_alignment, and also potentially
      improves the handling of variable strides for outer loop vectorisation.
      A later patch will also use it to give the alignment of the DR as a whole.
      
      2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-data-ref.h (innermost_loop_behavior): Add a step_alignment
      	field.
      	(DR_STEP_ALIGNMENT): New macro.
      	* tree-vectorizer.h (STMT_VINFO_DR_STEP_ALIGNMENT): Likewise.
      	* tree-data-ref.c (dr_analyze_innermost): Initalize step_alignment.
      	(create_data_ref): Print it.
      	* tree-vect-stmts.c (vectorizable_load): Use the step alignment
      	to tell whether the step preserves vector (mis)alignment.
      	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
      	Move the check for an integer step and generalise to all INTEGER_CST.
      	(vect_analyze_data_refs): Set DR_STEP_ALIGNMENT when setting DR_STEP.
      	Print the outer step alignment.
      
      From-SVN: r249915
      Richard Sandiford committed
    • Rename DR_ALIGNED_TO to DR_OFFSET_ALIGNMENT · e054a185
      This patch renames DR_ALIGNED_TO to DR_OFFSET_ALIGNMENT, to avoid
      confusion with the upcoming DR_BASE_ALIGNMENT.  Nothing needed the
      value as a tree, and the value is clipped to BIGGEST_ALIGNMENT
      (maybe it should be MAX_OFILE_ALIGNMENT?) so we might as well use
      an unsigned int instead.
      
      2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-data-ref.h (innermost_loop_behavior): Replace aligned_to
      	with offset_alignment.
      	(DR_ALIGNED_TO): Delete.
      	(DR_OFFSET_ALIGNMENT): New macro.
      	* tree-vectorizer.h (STMT_VINFO_DR_ALIGNED_TO): Delete.
      	(STMT_VINFO_DR_OFFSET_ALIGNMENT): New macro.
      	* tree-data-ref.c (dr_analyze_innermost): Update after above changes.
      	(create_data_ref): Likewise.
      	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Likewise.
      	(vect_analyze_data_refs): Likewise.
      	* tree-if-conv.c (if_convertible_loop_p_1): Use memset before
      	creating dummy innermost behavior.
      
      From-SVN: r249914
      Richard Sandiford committed
    • Make dr_analyze_innermost operate on innermost_loop_behavior · abbe3756
      This means that callers to dr_analyze_innermost don't need a full
      data_reference and don't need to fill in any fields beforehand.
      
      2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-data-ref.h (dr_analyze_innermost): Replace the dr argument
      	with a "innermost_loop_behavior *" and refeence tree.
      	* tree-data-ref.c (dr_analyze_innermost): Likewise.
      	(create_data_ref): Update call accordingly.
      	* tree-predcom.c (find_looparound_phi): Likewise.
      
      From-SVN: r249913
      Richard Sandiford committed
    • Require ifunc support in gcc.target/i386/mvc6.c · d8ac7e28
      	* gcc.target/i386/mvc6.c: Require ifunc support.
      
      From-SVN: r249912
      Rainer Orth committed
    • Use innermost_loop_behavior for outer loop vectorisation · 3f5e8a76
      This patch replaces the individual stmt_vinfo dr_* fields with
      an innermost_loop_behavior, so that the changes in later patches
      get picked up automatically.  It also adds a helper function for
      getting the behavior of a data reference wrt the vectorised loop.
      
      2017-07-03  Richard Sandiford  <richard.sandiford@linaro.org>
      
      gcc/
      	* tree-vectorizer.h (_stmt_vec_info): Replace individual dr_*
      	fields with dr_wrt_vec_loop.
      	(STMT_VINFO_DR_BASE_ADDRESS, STMT_VINFO_DR_INIT, STMT_VINFO_DR_OFFSET)
      	(STMT_VINFO_DR_STEP, STMT_VINFO_DR_ALIGNED_TO): Update accordingly.
      	(STMT_VINFO_DR_WRT_VEC_LOOP): New macro.
      	(vect_dr_behavior): New function.
      	(vect_create_addr_base_for_vector_ref): Remove loop parameter.
      	* tree-vect-data-refs.c (vect_compute_data_ref_alignment): Use
      	vect_dr_behavior.  Use a step_preserves_misalignment_p boolean to
      	track whether the step preserves the misalignment.
      	(vect_create_addr_base_for_vector_ref): Remove loop parameter.
      	Use vect_dr_behavior.
      	(vect_setup_realignment): Update call accordingly.
      	(vect_create_data_ref_ptr): Likewise.  Use vect_dr_behavior.
      	* tree-vect-loop-manip.c (vect_gen_prolog_loop_niters): Update
      	call to vect_create_addr_base_for_vector_ref.
      	(vect_create_cond_for_align_checks): Likewise.
      	* tree-vect-patterns.c (vect_recog_bool_pattern): Copy
      	STMT_VINFO_DR_WRT_VEC_LOOP as a block.
      	(vect_recog_mask_conversion_pattern): Likewise.
      	* tree-vect-stmts.c (compare_step_with_zero): Use vect_dr_behavior.
      	(new_stmt_vec_info): Remove redundant zeroing.
      
      From-SVN: r249911
      Richard Sandiford committed
    • [arm] Clean up generation of BE8 format images. · 63d03dce
      The existing code in arm/bpabi.h was quite fragile and relied on matching
      specific CPU and/or architecture names.  The introduction of the option
      format for -mcpu and -march broke that in a way that would be non-trivial
      to fix by updating the list.  The hook in that file was always a pain
      as it required every new CPU being added to be add an update here as well
      (easy to miss).
      
      I've fixed that problem once and for all by adding a new callback into
      the driver to select the correct BE8 behaviour.  This uses features in
      the ISA capabilities list to select whether or not to use BE8 format
      during linking.
      
      I also noticed that if the user happened to pass both -mbig-endian and
      -mlittle-endian on the command line then the linker spec rules would
      get somewhat confused and potentially do the wrong thing.  I've fixed that
      by marking these options as opposites in the option descriptions.  The
      driver will now automatically suppress overridden options leading to the
      correct desired behavior.
      
      Whilst fixing this I noticed a couple of anomolus cases in the
      existing BE8 support: we were not generating BE8 format for ARMv6 or
      ARMv7-R targets.  While the ARMv6 status was probably deliberate at
      the time, this is probably not a good idea in the long term as the
      alternative, BE32, has been deprecated by ARM.  After discussion with
      a couple of colleagues I've decided to change this, but to then add an
      option to restore the existing behaviour at the user's option.  So
      this patch introduces two new options (opposites) -mbe8 and -mbe32.
      
      This is a quiet behavior change, so I'll add a comment to the release
      notes shortly.
      
      	* common/config/arm/arm-common.c (arm_be8_option): New function.
      	* config/arm/arm-isa.h (isa_feature): Add new feature bit isa_bit_be8.
      	(ISA_ARMv6): Add isa_bit_be8.
      	* config/arm/arm.h (arm_be8_option): Add prototype.
      	(BE8_SPEC_FUNCTION): New define.
      	(EXTRA_SPEC_FUNCTIONS): Add BE8_SPEC_FUNCTION.
      	* config/arm/arm.opt (mbig-endian): Mark as Negative of mlittle-endian.
      	(mlittle-endian): Similarly.
      	(mbe8, mbe32): New options.
      	* config/arm/bpabi.h (BE8_LINK_SPEC): Call arm_be8_option.
      	* doc/invoke.texi (ARM Options): Document -mbe8 and -mbe32.
      
      From-SVN: r249909
      Richard Earnshaw committed
    • * tree-cfg.c (gimple_find_sub_bbs): Fix profile updating. · e1a921dd
      From-SVN: r249908
      Jan Hubicka committed