1. 03 Jul, 2018 10 commits
    • Clean up interface to vector pattern recognisers · ba9728b0
      The PR85694 series removed the only cases in which a pattern recogniser
      could attach patterns to more than one statement.  I think it would be
      better to avoid adding any new instances of that, since it interferes
      with the normal matching order.
      
      This patch therefore switches the interface back to passing a single
      statement instead of a vector.  It also gets rid of the clearing of
      STMT_VINFO_RELATED_STMT on failure, since no recognisers use it now.
      
      2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-patterns.c (vect_recog_dot_prod_pattern):
      	(vect_recog_sad_pattern, vect_recog_widen_op_pattern)
      	(vect_recog_widen_mult_pattern, vect_recog_pow_pattern):
      	(vect_recog_widen_sum_pattern, vect_recog_over_widening_pattern)
      	(vect_recog_average_pattern, vect_recog_cast_forwprop_pattern)
      	(vect_recog_widen_shift_pattern, vect_recog_rotate_pattern)
      	(vect_recog_vector_vector_shift_pattern, vect_synth_mult_by_constant)
      	(vect_recog_mult_pattern, vect_recog_divmod_pattern)
      	(vect_recog_mixed_size_cond_pattern, vect_recog_bool_pattern)
      	(vect_recog_mask_conversion_pattern): Replace vec<gimple *>
      	parameter with a single stmt_vec_info.
      	(vect_recog_func_ptr): Likewise.
      	(vect_recog_gather_scatter_pattern): Likewise, folding in...
      	(vect_try_gather_scatter_pattern): ...this.
      	(vect_pattern_recog_1): Remove stmts_to_replace and just pass
      	the stmt_vec_info of the statement to be matched.  Don't clear
      	STMT_VINFO_RELATED_STMT.
      	(vect_pattern_recog): Update call accordingly.
      
      From-SVN: r262336
      Richard Sandiford committed
    • [16/n] PR85694: Add detection of averaging operations · 0267732b
      This patch adds detection of average instructions:
      
             a = (((wide) b + (wide) c) >> 1);
         --> a = (wide) .AVG_FLOOR (b, c);
      
             a = (((wide) b + (wide) c + 1) >> 1);
         --> a = (wide) .AVG_CEIL (b, c);
      
      in cases where users of "a" need only the low half of the result,
      making the cast to (wide) redundant.  The heavy lifting was done by
      earlier patches.
      
      This showed up another problem in vectorizable_call: if the call is a
      pattern definition statement rather than the main pattern statement,
      the type of vectorised call might be different from the type of the
      original statement.
      
      2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR tree-optimization/85694
      	* doc/md.texi (avgM3_floor, uavgM3_floor, avgM3_ceil)
      	(uavgM3_ceil): Document new optabs.
      	* doc/sourcebuild.texi (vect_avg_qi): Document new target selector.
      	* internal-fn.def (IFN_AVG_FLOOR, IFN_AVG_CEIL): New internal
      	functions.
      	* optabs.def (savg_floor_optab, uavg_floor_optab, savg_ceil_optab)
      	(savg_ceil_optab): New optabs.
      	* tree-vect-patterns.c (vect_recog_average_pattern): New function.
      	(vect_vect_recog_func_ptrs): Add it.
      	* tree-vect-stmts.c (vectorizable_call): Get the type of the zero
      	constant directly from the associated lhs.
      
      gcc/testsuite/
      	PR tree-optimization/85694
      	* lib/target-supports.exp (check_effective_target_vect_avg_qi): New
      	proc.
      	* gcc.dg/vect/vect-avg-1.c: New test.
      	* gcc.dg/vect/vect-avg-2.c: Likewise.
      	* gcc.dg/vect/vect-avg-3.c: Likewise.
      	* gcc.dg/vect/vect-avg-4.c: Likewise.
      	* gcc.dg/vect/vect-avg-5.c: Likewise.
      	* gcc.dg/vect/vect-avg-6.c: Likewise.
      	* gcc.dg/vect/vect-avg-7.c: Likewise.
      	* gcc.dg/vect/vect-avg-8.c: Likewise.
      	* gcc.dg/vect/vect-avg-9.c: Likewise.
      	* gcc.dg/vect/vect-avg-10.c: Likewise.
      	* gcc.dg/vect/vect-avg-11.c: Likewise.
      	* gcc.dg/vect/vect-avg-12.c: Likewise.
      	* gcc.dg/vect/vect-avg-13.c: Likewise.
      	* gcc.dg/vect/vect-avg-14.c: Likewise.
      
      From-SVN: r262335
      Richard Sandiford committed
    • [15/n] PR85694: Try to split existing casts in widened patterns · 4ef79c96
      The main over-widening patch can introduce quite a few extra casts,
      and in many cases those casts simply "tap into" an intermediate
      point in an existing extension.  E.g. if we have:
      
          unsigned char a;
          int ax = (int) a;
      
      and a later operation using ax is shortened to "unsigned short",
      we would need:
      
          unsigned short ax' = (unsigned short) a;
      
      The a->ax extension requires one set of unpacks to get to unsigned
      short and another set of unpacks to get to int.  The first set are
      then duplicated for ax'.  If both ax and ax' are needed, the a->ax'
      extension would end up counting twice during cost calculations.
      
      This patch rewrites the original:
      
          int ax = (int) a;
      
      into a pattern:
      
          unsigned short ax' = (unsigned short) a;
          int ax = (int) ax';
      
      so that each extension only counts once.
      
      2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-patterns.c (vect_split_statement): New function.
      	(vect_convert_input): Use it to try to split an existing cast.
      
      gcc/testsuite/
      	* gcc.dg/vect/vect-over-widen-5.c: Test that the extensions
      	get split into two for use by the over-widening pattern.
      	* gcc.dg/vect/vect-over-widen-6.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-7.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-8.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-9.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-10.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-11.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-12.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-13.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-14.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-15.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-16.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-22.c: New test.
      
      From-SVN: r262334
      Richard Sandiford committed
    • [14/n] PR85694: Rework overwidening detection · 370c2ebe
      This patch is the main part of PR85694.  The aim is to recognise at least:
      
        signed char *a, *b, *c;
        ...
        for (int i = 0; i < 2048; i++)
          c[i] = (a[i] + b[i]) >> 1;
      
      as an over-widening pattern, since the addition and shift can be done
      on shorts rather than ints.  However, it ended up being a lot more
      general than that.
      
      The current over-widening pattern detection is limited to a few simple
      cases: logical ops with immediate second operands, and shifts by a
      constant.  These cases are enough for common pixel-format conversion
      and can be detected in a peephole way.
      
      The loop above requires two generalisations of the current code: support
      for addition as well as logical ops, and support for non-constant second
      operands.  These are harder to detect in the same peephole way, so the
      patch tries to take a more global approach.
      
      The idea is to get information about the minimum operation width
      in two ways:
      
      (1) by using the range information attached to the SSA_NAMEs
          (effectively a forward walk, since the range info is
          context-independent).
      
      (2) by back-propagating the number of output bits required by
          users of the result.
      
      As explained in the comments, there's a balance to be struck between
      narrowing an individual operation and fitting in with the surrounding
      code.  The approach is pretty conservative: if we could narrow an
      operation to N bits without changing its semantics, it's OK to do that if:
      
      - no operations later in the chain require more than N bits; or
      
      - all internally-defined inputs are extended from N bits or fewer,
        and at least one of them is single-use.
      
      See the comments for the rationale.
      
      I didn't bother adding STMT_VINFO_* wrappers for the new fields
      since the code seemed more readable without.
      
      2018-06-20  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* poly-int.h (print_hex): New function.
      	* dumpfile.h (dump_dec, dump_hex): Declare.
      	* dumpfile.c (dump_dec, dump_hex): New poly_wide_int functions.
      	* tree-vectorizer.h (_stmt_vec_info): Add min_output_precision,
      	min_input_precision, operation_precision and operation_sign.
      	* tree-vect-patterns.c (vect_get_range_info): New function.
      	(vect_same_loop_or_bb_p, vect_single_imm_use)
      	(vect_operation_fits_smaller_type): Delete.
      	(vect_look_through_possible_promotion): Add an optional
      	single_use_p parameter.
      	(vect_recog_over_widening_pattern): Rewrite to use new
      	stmt_vec_info infomration.  Handle one operation at a time.
      	(vect_recog_cast_forwprop_pattern, vect_narrowable_type_p)
      	(vect_truncatable_operation_p, vect_set_operation_type)
      	(vect_set_min_input_precision): New functions.
      	(vect_determine_min_output_precision_1): Likewise.
      	(vect_determine_min_output_precision): Likewise.
      	(vect_determine_precisions_from_range): Likewise.
      	(vect_determine_precisions_from_users): Likewise.
      	(vect_determine_stmt_precisions, vect_determine_precisions): Likewise.
      	(vect_vect_recog_func_ptrs): Put over_widening first.
      	Add cast_forwprop.
      	(vect_pattern_recog): Call vect_determine_precisions.
      
      gcc/testsuite/
      	* gcc.dg/vect/vect-widen-mult-u8-u32.c: Check specifically for a
      	widen_mult pattern.
      	* gcc.dg/vect/vect-over-widen-1.c: Update the scan tests for new
      	over-widening messages.
      	* gcc.dg/vect/vect-over-widen-1-big-array.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-2.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-2-big-array.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-3.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-3-big-array.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-4.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-4-big-array.c: Likewise.
      	* gcc.dg/vect/bb-slp-over-widen-1.c: New test.
      	* gcc.dg/vect/bb-slp-over-widen-2.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-5.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-6.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-7.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-8.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-9.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-10.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-11.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-12.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-13.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-14.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-15.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-16.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-17.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-18.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-19.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-20.c: Likewise.
      	* gcc.dg/vect/vect-over-widen-21.c: Likewise.
      
      From-SVN: r262333
      Richard Sandiford committed
    • Avoid matching the same pattern statement twice · 3239dde9
      r262275 allowed pattern matching on pattern statements.  Testing for
      SVE on more benchmarks showed a case where this interacted badly
      with 14/n.
      
      The new over-widening detection could narrow a COND_EXPR A to another
      COND_EXPR B, which mixed_size_cond could then match.  This was working
      as expected.  However, we left B (now dead) in the pattern definition
      sequence with a non-null PATTERN_DEF_SEQ.  mask_conversion also
      matched B, and unlike most recognisers, didn't clear PATTERN_DEF_SEQ
      before adding statements to it.  This meant that the statements
      created by mixed_size_cond appeared in two supposedy separate
      sequences, causing much confusion.
      
      This patch removes pattern statements that are replaced by further
      pattern statements.  As a belt-and-braces fix, it also nullifies
      PATTERN_DEF_SEQ on failure, in the same way Richard B. did recently
      for RELATED_STMT.
      
      I have patches to clean up the PATTERN_DEF_SEQ handling, but they
      only apply after the complete PR85694 sequence, whereas this needs
      to go in before 14/n.
      
      2018-07-03  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-patterns.c (vect_mark_pattern_stmts): Remove pattern
      	statements that have been replaced by further pattern statements.
      	(vect_pattern_recog_1): Clear STMT_VINFO_PATTERN_DEF_SEQ on failure.
      
      gcc/testsuite/
      	* gcc.dg/vect/vect-mixed-size-cond-1.c: New test.
      
      From-SVN: r262332
      Richard Sandiford committed
    • tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping, always set *dt. · 30f502ed
      2018-07-03  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-stmts.c (vect_is_simple_use): Consolidate dumping,
      	always set *dt.  Dump vectype in vectype overload.
      	* dumpfile.h (dump_gimple_expr): New function.
      	(dump_gimple_expr_loc): Likewise.
      	* dumpfile.c (dump_gimple_expr): New function.
      	(dump_gimple_expr_loc): Likewise.
      
      From-SVN: r262330
      Richard Biener committed
    • h8300.md (movqi_h8300, [...]): Consolidate the H8/300, H8/300H and H8/S variants… · cbdb1229
      h8300.md (movqi_h8300, [...]): Consolidate the H8/300, H8/300H and H8/S variants into a single pattern.
      
      	* config/h8300/h8300.md (movqi_h8300, movqi_h8300hs): Consolidate
      	the H8/300, H8/300H and H8/S variants into a single pattern.
      	(movhi_h8300, movqi_h8300hs): Similarly.
      	(pushqi_h8300hs, pushhi_h8300hs): Consolidate into a single pattern.
      	(QHI mode iterator): New.
      
      From-SVN: r262329
      Jeff Law committed
    • * config/h8300/h8300.md: Remove trailing whitespace. · fabd753f
      From-SVN: r262328
      Jeff Law committed
    • RISC-V: Fix interrupt support for -g. · eb153f07
      	gcc/
      	* config/riscv/riscv.c (riscv_expand_epilogue): Use emit_jump_insn
      	instead of emit_insn for interrupt returns.
      	* config/riscv/riscv.md (riscv_met): Add (return) to rtl.
      	(riscv_sret, riscv_uret): Likewise.
      
      	gcc/testsuite/
      	* gcc.target/riscv/interrupt-debug.c: New.
      
      From-SVN: r262327
      Jim Wilson committed
    • Daily bump. · ccf266db
      From-SVN: r262326
      GCC Administrator committed
  2. 02 Jul, 2018 23 commits
    • P0758R1 Implicit conversion traits · 8df27fcb
      Extend __is_convertible_helper to also detect whether the conversion is
      non-throwing, for std::is_nothrow_convertible in C++2a,
      
      	* include/std/type_traits [__cplusplus > 201703]
      	(__is_convertible_helper::__is_nothrow_type): Define new member.
      	(__is_convertible_helper<_From, _To, false>::__test_aux1): Add
      	noexcept.
      	(__is_convertible_helper<_From, _To, false>::__test_nothrow)
      	(__is_convertible_helper<_From, _To, false>::__is_nothrow_type): Add
      	new members.
      	(is_nothrow_convertible, is_nothrow_convertible_v): Define for C++2a.
      	* testsuite/20_util/is_nothrow_convertible/value.cc: New.
      	* testsuite/20_util/is_nothrow_convertible/requirements/
      	explicit_instantiation.cc: New.
      	* testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc:
      	New.
      
      From-SVN: r262322
      Jonathan Wakely committed
    • parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range in error… · a5eae716
      parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range in error message about __thread and thread_local...
      
      /cp
      2018-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* parser.c (set_and_check_decl_spec_loc): Use rich_location::add_range
      	in error message about __thread and thread_local at the same time.
      
      /testsuite
      2018-07-02  Paolo Carlini  <paolo.carlini@oracle.com>
      
      	* g++.dg/diagnostic/thread-thread_local.C: New.
      
      From-SVN: r262321
      Paolo Carlini committed
    • P0887R1 The identity metafunction · ee896276
      	* include/std/type_traits (type_identity, type_identity_t): Define
              for C++2a.
      	* testsuite/20_util/type_identity/requirements/alias_decl.cc: New.
      	* testsuite/20_util/type_identity/requirements/
      	explicit_instantiation.cc:New.
      	* testsuite/20_util/type_identity/requirements/typedefs.cc: New.
      
      From-SVN: r262319
      Jonathan Wakely committed
    • Optimize std::sub_match comparisons using string_view-like type · e112d53a
      Avoid creation of unnecessary basic_string objects by using a simplified
      string_view type and performing comparisons on that type instead. A
      temporary basic_string object is still used when the sub_match's
      iterators are not contiguous, in order to get an object that the
      __string_view can reference.
      
      	* include/bits/regex.h (sub_match::operator string_type): Call str().
      	(sub_match::compare): Use _M_str() instead of str().
      	(sub_match::_M_compare): New public function.
      	(sub_match::__string_view): New helper type.
      	(sub_match::_M_str): New overloaded functions to avoid creating a
      	string_type object when not needed.
      	(operator==, operator!=, operator<, operator>, operator<=, operator>=):
      	Use sub_match::_M_compare instead of creating string_type objects.
      	Fix Doxygen comments.
      	* include/bits/regex_compiler.h (__has_contiguous_iter): Remove.
      	(__is_contiguous_normal_iter): Rename to __is_contiguous_iter and
      	simplify.
      	(__enable_if_contiguous_iter, __disable_if_contiguous_iter): Use
      	__enable_if_t.
      	* include/std/type_traits (__enable_if_t): Define for C++11.
      	* testsuite/28_regex/sub_match/compare.cc: New.
      	* testsuite/util/testsuite_iterators.h (remove_cv): Add transformation
      	trait.
      	(input_iterator_wrapper): Use remove_cv for value_type argument of
      	std::iterator base class.
      
      From-SVN: r262318
      Jonathan Wakely committed
    • selftest: introduce class auto_fix_quotes · dbf96d49
      This patch moves a workaround for locale differences from a
      selftest in pretty-print.c to selftest.h/c to make it reusable; I need
      this for a selftest in a followup patch.
      
      gcc/ChangeLog:
      	* pretty-print.c (selftest::test_pp_format): Move save and restore
      	of quotes to class auto_fix_quotes, and add an instance.
      	* selftest.c: Include "intl.h".
      	(selftest::auto_fix_quotes::auto_fix_quotes): New ctor.
      	(selftest::auto_fix_quotes::~auto_fix_quotes): New dtor.
      	* selftest.h (selftest::auto_fix_quotes): New class.
      
      From-SVN: r262317
      David Malcolm committed
    • re PR go/86331 (the gccgo's "go" tool looks like failing to invoke any sub go command) · 7edd4c18
      	PR go/86331
          os: check return value as well as error from waitid
          
          https://gcc.gnu.org/PR86331 indicates that if a signal handler runs it
          is possible for syscall.Syscall6 to return a non-zero errno value even
          if no error occurs. That is a problem in general, but this fix will
          let us work around the general problem for the specific case of
          calling waitid.
          
          Reviewed-on: https://go-review.googlesource.com/121595
      
      From-SVN: r262313
      Ian Lance Taylor committed
    • aarch64: Add movprfx patterns alternatives · a08acce8
          * config/aarch64/aarch64-protos.h, config/aarch64/aarch64.c
          (aarch64_sve_prepare_conditional_op): Remove.
          * config/aarch64/aarch64-sve.md (cond_<SVE_INT_BINARY><SVE_I>):
          Allow aarch64_simd_reg_or_zero as select operand; remove
          the aarch64_sve_prepare_conditional_op call.
          (cond_<SVE_INT_BINARY_SD><SVE_SDI>): Likewise.
          (cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
          (*cond_<SVE_INT_BINARY><SVE_I>_z): New pattern.
          (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_z): New pattern.
          (*cond_<SVE_COND_FP_BINARY><SVE_F>_z): New pattern.
          (*cond_<SVE_INT_BINARY><SVE_I>_any): New pattern.
          (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_any): New pattern.
          (*cond_<SVE_COND_FP_BINARY><SVE_F>_any): New pattern
          and a splitters to match all of the *_any patterns.
          * config/aarch64/predicates.md (aarch64_sve_any_binary_operator): New.
      
          * config/aarch64/iterators.md (SVE_INT_BINARY_REV): Remove.
          (SVE_COND_FP_BINARY_REV): Remove.
          (sve_int_op_rev, sve_fp_op_rev): New.
          * config/aarch64/aarch64-sve.md (*cond_<SVE_INT_BINARY><SVE_I>_0): New.
          (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_0): New.
          (*cond_<SVE_COND_FP_BINARY><SVE_F>_0): New.
          (*cond_<SVE_INT_BINARY><SVE_I>_2): Rename, add movprfx alternative.
          (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_2): Similarly.
          (*cond_<SVE_COND_FP_BINARY><SVE_F>_2): Similarly.
          (*cond_<SVE_INT_BINARY><SVE_I>_3): Similarly; use sve_int_op_rev.
          (*cond_<SVE_INT_BINARY_SD><SVE_SDI>_3): Similarly.
          (*cond_<SVE_COND_FP_BINARY><SVE_F>_3): Similarly; use sve_fp_op_rev.
      
          * config/aarch64/aarch64-sve.md (cond_<SVE_COND_FP_BINARY><SVE_F>):
          Remove match_dup 1 from the inner unspec.
          (*cond_<SVE_COND_FP_BINARY><SVE_F>): Likewise.
      
          * config/aarch64/aarch64.md (movprfx): New attr.
          (length): Default movprfx to 8.
          * config/aarch64/aarch64-sve.md (*mul<SVE_I>3): Add movprfx alt.
          (*madd<SVE_I>, *msub<SVE_I): Likewise.
          (*<su>mul<SVE_I>3_highpart): Likewise.
          (*<SVE_INT_BINARY_SD><SVE_SDI>3): Likewise.
          (*v<ASHIFT><SVE_I>3): Likewise.
          (*<su><MAXMIN><SVE_I>3): Likewise.
          (*<su><MAXMIN><SVE_F>3): Likewise.
          (*fma<SVE_F>4, *fnma<SVE_F>4): Likewise.
          (*fms<SVE_F>4, *fnms<SVE_F>4): Likewise.
          (*div<SVE_F>4): Likewise.
      
      From-SVN: r262312
      Richard Henderson committed
    • Fix GCOV scan pattern (PR testsuite/86366). · 1234faf4
      2018-07-02  Martin Liska  <mliska@suse.cz>
      
              PR testsuite/86366
      	* gcc.dg/profile-dir-1.c: Fix scanned pattern.
      	* gcc.dg/profile-dir-2.c: Likewise.
      	* gcc.dg/profile-dir-3.c: Likewise.
      
      From-SVN: r262311
      Martin Liska committed
    • [ARM][testsuite] Fix arm-soft-strd-even.c · 6b632b5e
      2018-07-02  Christophe Lyon  <christophe.lyon@linaro.org>
      
      	* gcc.target/arm/arm-soft-strd-even.c: Skip if -mfloat-abi is
      	overriden.
      
      From-SVN: r262309
      Christophe Lyon committed
    • Fix typo in vect_recog_widen_shift_pattern · d379ac22
      Noticed by Christophe on arm-none-linux-gnueabihf.
      
      2018-07-02  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-patterns.c (vect_recog_widen_shift_pattern): Fix typo
      	in dump string.
      
      From-SVN: r262308
      Richard Sandiford committed
    • re PR tree-optimization/86363 (wrong code with __builtin_memset() at -O1) · 92590cd3
      2018-07-02  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/86363
      	* tree-ssa-sccvn.c (vn_reference_lookup_3): Check the
      	memset argument refers to a non-variable address.
      
      	* gcc.dg/torture/pr86363.c: New testcase.
      
      From-SVN: r262307
      Richard Biener committed
    • Abstract a lot of the {PLUS,MINUS}_EXPR code in · 94ee1558
      extract_range_from_binary_expr_1 into separate functions.
      
      From-SVN: r262306
      Aldy Hernandez committed
    • tree-vrp.c (extract_range_from_unary_expr): Abstract ABS_EXPR code... · d9957cf9
      	* tree-vrp.c (extract_range_from_unary_expr): Abstract ABS_EXPR
      	code...
      	(extract_range_from_abs_expr): ...here.
      
      From-SVN: r262305
      Aldy Hernandez committed
    • Add new tests for --completion option. · 108e1a85
      2018-07-02  Martin Liska  <mliska@suse.cz>
      
      	* gcc.dg/completion-1.c: New test.
      	* gcc.dg/completion-2.c: New test.
      	* gcc.dg/completion-3.c: New test.
      
      From-SVN: r262304
      Martin Liska committed
    • i386.c (ix86_finalize_stack_frame_flags): Do not overrule… · ee24c8e1
      i386.c (ix86_finalize_stack_frame_flags): Do not overrule -fno-omit-frame-pointer when not optimizing.
      
      	* config/i386/i386.c (ix86_finalize_stack_frame_flags): Do not overrule
      	-fno-omit-frame-pointer when not optimizing.
      
      From-SVN: r262302
      Eric Botcazou committed
    • re PR lto/86321 (ICE: in splice_child_die, at dwarf2out.c:5693 for several… · 5d4e9f7b
      re PR lto/86321 (ICE:  in splice_child_die, at dwarf2out.c:5693 for several Fortran tests with -g -flto)
      
      2018-07-02  Richard Biener  <rguenther@suse.de>
      
      	PR lto/86321
      	* trans-types.c (gfc_get_array_type_bounds): Unshare TYPE_FIELDs
      	for the distinct type copy.
      
      From-SVN: r262301
      Richard Biener committed
    • re PR fortran/45305 (Array-valued calles to elementals are not simplified) · e057d3e5
      2018-07-02  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/45305
      	* expr.c : Add a prototype for scalarize_intrinsic_call.
      	(gfc_simplify_expr): Use scalarize_intrinsic_call for elemental
      	intrinsic function calls.
      	(scalarize_intrinsic_call): Add 'init_flag' argument. Check if
      	the expression or any of the actual argument expressions are
      	NULL. Before calling gfc_check_init_expr, check 'init_flag'.
      	Only simplify the scalarized expressions if there are no errors
      	on the stack.
      	(gfc_check_init_expr): Set 'init_flag' true in the call to
      	scalarize_intrinsic_call.
      
      2018-07-02  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/45305
      	* gfortran.dg/scalarize_parameter_array_2.f90: New test.
      
      From-SVN: r262300
      Paul Thomas committed
    • re PR fortran/45305 (Array-valued calles to elementals are not simplified) · 87c789f1
      2018-07-02  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/45305
      	* expr.c : Add a prototype for scalarize_intrinsic_call.
      	(gfc_simplify_expr): Use scalarize_intrinsic_call for elemental
      	intrinsic function calls.
      	(scalarize_intrinsic_call): Add 'init_flag' argument. Check if
      	the expression or any of the actual argument expressions are
      	NULL. Before calling gfc_check_init_expr, check 'init_flag'.
      	Only simplify the scalarized expressions if there are no errors
      	on the stack.
      	(gfc_check_init_expr): Set 'init_flag' true in the call to
      	scalarize_intrinsic_call.
      
      2018-07-02  Paul Thomas  <pault@gcc.gnu.org>
      
      	PR fortran/45305
      	* gfortran.dg/scalarize_parameter_array_2.f90: New test.
      
      From-SVN: r262299
      Paul Thomas committed
    • Revert 2 ::get to ::get_create for IPA summaries (PR ipa/86279). · 61c74e84
      2018-07-02  Martin Liska  <mliska@suse.cz>
      
              PR ipa/86279
      	* ipa-pure-const.c (malloc_candidate_p): Revert usage of ::get.
      	(propagate_nothrow): Likewise.
      2018-07-02  Martin Liska  <mliska@suse.cz>
      
              PR ipa/86279
      	* gcc.dg/ipa/pr86279.c: New test.
      
      From-SVN: r262298
      Martin Liska committed
    • Revert one ipa_call_summaries::get to get_create (PR ipa/86323). · b412559e
      2018-07-02  Martin Liska  <mliska@suse.cz>
      
              PR ipa/86323
      	* ipa-inline.c (early_inliner): Revert wrongly added ::get call.
      2018-07-02  Martin Liska  <mliska@suse.cz>
      
              PR ipa/86323
      	* g++.dg/ipa/pr86323.C: New test.
      
      From-SVN: r262297
      Martin Liska committed
    • Bump libgnat to 9. · 24e82719
      2018-07-02  Martin Liska  <mliska@suse.cz>
      
      	* gnatvsn.ads: Bump Library_Version to 9.
      
      From-SVN: r262296
      Martin Liska committed
    • Reinstate dump_generic_expr_loc · d7259673
      gcc/ChangeLog:
      	* dumpfile.c (dump_generic_expr_loc): Undo removal of this
      	function in r262149, changing "loc" param from source_location to
      	const dump_location_t &.
      	* dumpfile.h (dump_generic_expr_loc): Undo removal of this
      	declaration, as above.
      
      From-SVN: r262295
      David Malcolm committed
    • Daily bump. · 4d78796d
      From-SVN: r262294
      GCC Administrator committed
  3. 01 Jul, 2018 7 commits
    • Revert "[testsuite/guality] Prevent optimization of local in vla-1.c" · 2d0bc0af
      2018-07-01  Tom de Vries  <tdevries@suse.de>
      
      	revert:
      	2018-07-01  Tom de Vries  <tdevries@suse.de>
      
      	* gcc.dg/guality/prevent-optimization.h (VOLATILE): Define.
      	* gcc.dg/guality/vla-1.c (f1): Mark local vla a as VOLATILE.
      
      From-SVN: r262290
      Tom de Vries committed
    • Add -mgnu-asm; change -mdec-asm to generate DEC assembler · 4aef57c9
              compatible output.
      
      	* common/config/pdp11/pdp11-common.c (pdp11_handle_option): Handle
      	-munit-asm, -mgnu-asm, -mdec-asm.
      	* config/pdp11/pdp11-protos.h (pdp11_gen_int_label): New.
      	(pdp11_output_labelref): New.
      	(pdp11_output_def): New.
      	(pdp11_output_addr_vec_elt): New.
      	* config/pdp11/pdp11.c: Use tab between opcode and operands.  Use
      	%# and %@ format codes.
      	(pdp11_option_override): New.
      	(TARGET_ASM_FILE_START_FILE_DIRECTIVE): Define.
      	(pdp11_output_ident): New.
      	(pdp11_asm_named_section): New.
      	(pdp11_asm_init_sections): New.
      	(pdp11_file_start): New.
      	(pdp11_file_end): New.
      	(output_ascii): Use .ascii/.asciz for -mdec-asm.
      	(pdp11_asm_print_operand): Update %# and %$ for -mdec-asm.  Add
      	%o, like %c but octal.
      	(pdp11_option_override): New.
      	* config/pdp11/pdp11.h (TEXT_SECTION_ASM_OP): Update for
      	-mdec-asm.
      	(DATA_SECTION_ASM_OP): Ditto.
      	(READONLY_DATA_SECTION_ASM_OP): New.
      	(IS_ASM_LOGICAL_LINE_SEPARATOR): New.
      	(ASM_GENERATE_INTERNAL_LABEL): Use new function.
      	(ASM_OUTPUT_LABELREF): Ditto.
      	(ASM_OUTPUT_DEF): Ditto.
      	(ASM_OUTPUT_EXTERNAL): New.
      	(ASM_OUTPUT_SOURCE_FILENAME): New.
      	(ASM_OUTPUT_ADDR_VEC_ELT): Use new function.
      	(ASM_OUTPUT_SKIP): Update for -mdec-asm.
      	* config/pdp11/pdp11.md: Use tab between opcode and operands.  Use
      	%# and %@ format codes.
      	* config/pdp11/pdp11.opt (mgnu-asm): New.
      	(mdec-asm): Conflicts with -mgnu-asm and -munix-asm.
      	(munix-asm): Conflicts with -mdec-asm and -mgnu-asm.
      	* doc/invoke.txt (PDP-11 Options): Add -mgnu-asm.
      
      From-SVN: r262289
      Paul Koning committed
    • [testsuite/guality] Use @main as bp loc instead of line nrs in const-volatile.c · 518ab2a0
      2018-07-01  Tom de Vries  <tdevries@suse.de>
      
      	* lib/gcc-gdb-test.exp (gdb-test): Handle '@' prefix in line number
      	argument.
      	* gcc.dg/guality/const-volatile.c: Replace gdb-test line nrs 50 and 58
      	with @main.
      
      From-SVN: r262288
      Tom de Vries committed
    • [testsuite/guality] Prevent optimization of local in vla-1.c · 81d3b8f7
      2018-07-01  Tom de Vries  <tdevries@suse.de>
      
      	* gcc.dg/guality/prevent-optimization.h (VOLATILE): Define.
      	* gcc.dg/guality/vla-1.c (f1): Mark local vla a as VOLATILE.
      
      From-SVN: r262287
      Tom de Vries committed
    • [testsuite/guality] Use relative line numbers in vla-1.c · c2e75518
      2018-07-01  Tom de Vries  <tdevries@suse.de>
      
      	* lib/gcc-dg.exp (get-absolute-line): Handle '.'.
      	* gcc.dg/guality/vla-1.c: Use relative line numbers.
      
      From-SVN: r262286
      Tom de Vries committed
    • [testsuite] Fix get-absolute-line error handling · 2d43b862
      2018-07-01  Tom de Vries  <tdevries@suse.de>
      
      	* gcc.dg-selftests/dg-final.exp (verify_call_1): Factor out of ...
      	(verify_call): ... here.  Move to toplevel.
      	(verify_call_np, dg_final_directive_check_utils): New proc.
      	(toplevel): Call dg_final_directive_check_utils.
      	* lib/gcc-dg.exp (get-absolute-line): Fix typo in variable reference.
      
      From-SVN: r262284
      Tom de Vries committed