1. 03 Jul, 2018 7 commits
    • [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 8 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
    • Daily bump. · 19792aa0
      From-SVN: r262282
      GCC Administrator committed
  4. 30 Jun, 2018 2 commits
    • RISC-V: Add patterns to convert AND mask to two shifts. · 666fdc46
      	gcc/
      	* config/riscv/predicates.md (p2m1_shift_operand): New.
      	(high_mask_shift_operand): New.
      	* config/riscv/riscv.md (lshrsi3_zero_extend_3+1): New combiner
      	pattern using p2m1_shift_operand.
      	(lshsi3_zero_extend_3+2): New combiner pattern using
      	high_mask_shift_operand.
      
      	gcc/testsuite/
      	* gcc.target/riscv/shift-shift-1.c: New.
      	* gcc.target/riscv/shift-shift-2.c: New.
      	* gcc.target/riscv/shift-shift-3.c: New.
      
      From-SVN: r262278
      Jim Wilson committed
    • [13/n] PR85694: Try to avoid vectorising casts of invariants · 3330053e
      vect_recog_rotate_pattern had code to prevent operations
      on invariants being vectorised unnecessarily:
      
        if (dt == vect_external_def
            && TREE_CODE (oprnd1) == SSA_NAME
            && is_a <loop_vec_info> (vinfo))
          {
            struct loop *loop = as_a <loop_vec_info> (vinfo)->loop;
            ext_def = loop_preheader_edge (loop);
            if (!SSA_NAME_IS_DEFAULT_DEF (oprnd1))
              {
                basic_block bb = gimple_bb (SSA_NAME_DEF_STMT (oprnd1));
                if (bb == NULL
                    || !dominated_by_p (CDI_DOMINATORS, ext_def->dest, bb))
                  ext_def = NULL;
              }
          }
        [..]
            if (ext_def)
              {
                basic_block new_bb
                  = gsi_insert_on_edge_immediate (ext_def, def_stmt);
                gcc_assert (!new_bb);
              }
      
      This patch reuses the same idea for casts of invariants created
      during widening optimisations.
      
      One hitch was that vect_loop_versioning asserted that the vector loop
      preheader was still empty, although the cfg transformation it's doing
      should be correct either way.
      
      2018-06-30  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* tree-vect-patterns.c (vect_get_external_def_edge): New function,
      	split out from...
      	(vect_recog_rotate_pattern): ...here.
      	(vect_convert_input): Try to insert casts of invariants in the
      	preheader.
      	* tree-vect-loop-manip.c (vect_loop_versioning): Don't require the
      	preheader to be empty.
      
      gcc/testsuite/
      	* gcc.dg/vect/vect-widen-mult-extern-1.c: New test.
      
      From-SVN: r262277
      Richard Sandiford committed