1. 13 Jun, 2019 6 commits
    • PR tree-optimization/89713 - Assume loop with an exit is finite · c29c92c7
      gcc/ChangeLog:
      
              * doc/invoke.texi (-ffinite-loops): Document new option.
              * common.opt (-ffinite-loops): New option.
              * tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Mark
              IFN_GOACC_LOOP calls as necessary.
              * tree-ssa-loop-niter.c (finite_loop_p): Assume loop with an exit
              is finite.
              * omp-offload.c (oacc_xform_loop): Skip lowering if return value of
              IFN_GOACC_LOOP call is not used.
              * opts.c (default_options_table): Enable -ffinite-loops at -O2+.
      
      gcc/testsuite/ChangeLog:
      
              * g++.dg/tree-ssa/empty-loop.C: New test.
              * gcc.dg/tree-ssa/dce-2.c: New test.
              * gcc.dg/const-1.c: Add -fno-finite-loops option.
              * gcc.dg/graphite/graphite.exp: Likewise.
              * gcc.dg/loop-unswitch-1.c: Likewise.
              * gcc.dg/predict-9.c: Likewise.
              * gcc.dg/pure-2.c: Likewise.
              * gcc.dg/tree-ssa/20040211-1.c: Likewise.
              * gcc.dg/tree-ssa/loop-10.c: Likewise.
              * gcc.dg/tree-ssa/split-path-6.c: Likewise.
              * gcc.dg/tree-ssa/ssa-thread-12.c: Likewise.
      
      libgomp/ChangeLog:
      
              * testsuite/libgomp.oacc-c-c++-common/pr84955-1.c: New test.
      
      From-SVN: r272234
      Feng Xue committed
    • re PR target/88838 ([SVE] Use 32-bit WHILELO in LP64 mode) · 9b884225
      
      gcc/ChangeLog:
      
      2019-06-13  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
      
      	PR target/88838
      	* tree-vect-loop-manip.c (vect_set_loop_masks_directly): If the
      	compare_type is not with Pmode size, we will create an IV with
      	Pmode size with truncated use (i.e. converted to the correct type).
      	* tree-vect-loop.c (vect_verify_full_masking): Find IV type.
      	(vect_iv_limit_for_full_masking): New. Factored out of
      	vect_set_loop_condition_masked.
      	* tree-vectorizer.h (LOOP_VINFO_MASK_IV_TYPE): New.
      	(vect_iv_limit_for_full_masking): Declare.
      
      gcc/testsuite/ChangeLog:
      
      2019-06-13  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
      
      	PR target/88838
      	* gcc.target/aarch64/pr88838.c: New test.
      	* gcc.target/aarch64/sve/while_1.c: Adjust.
      
      From-SVN: r272233
      Kugan Vivekanandarajah committed
    • re PR target/88834 ([SVE] Poor addressing mode choices for LD2 and ST2) · fa9863e7
      
      gcc/ChangeLog:
      
      2019-06-13  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
      
      	PR target/88834
      	* tree-ssa-loop-ivopts.c (get_mem_type_for_internal_fn): Handle
      	IFN_MASK_LOAD_LANES and IFN_MASK_STORE_LANES.
      	(get_alias_ptr_type_for_ptr_address): Likewise.
      	(add_iv_candidate_for_use): Add scaled index candidate if useful.
      	* tree-ssa-address.c (preferred_mem_scale_factor): New.
      	* config/aarch64/aarch64.c (aarch64_classify_address): Relax
      	allow_reg_index_p.
      
      gcc/testsuite/ChangeLog:
      
      2019-06-13  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
      
      	PR target/88834
      	* gcc.target/aarch64/pr88834.c: New test.
      	* gcc.target/aarch64/sve/struct_vect_1.c: Adjust.
      	* gcc.target/aarch64/sve/struct_vect_14.c: Likewise.
      	* gcc.target/aarch64/sve/struct_vect_15.c: Likewise.
      	* gcc.target/aarch64/sve/struct_vect_16.c: Likewise.
      	* gcc.target/aarch64/sve/struct_vect_17.c: Likewise.
      	* gcc.target/aarch64/sve/struct_vect_7.c: Likewise.
      
      From-SVN: r272232
      Kugan Vivekanandarajah committed
    • iterators.md (ADDSUB): Fix typo in comment. · dd550c99
      
      gcc/ChangeLog:
      
      2019-06-13  Kugan Vivekanandarajah  <kugan.vivekanandarajah@linaro.org>
      
      	* config/aarch64/iterators.md (ADDSUB): Fix typo in comment.
      
      From-SVN: r272231
      Kugan Vivekanandarajah committed
    • re PR c++/87410 (internal compiler error: in fold_convert_loc, at fold-const.c:2530) · edde16fc
      	PR c++/87410
      	* g++.dg/cpp1y/pr87410.C: New test.
      
      From-SVN: r272230
      Marek Polacek committed
    • Daily bump. · 12e0d27a
      From-SVN: r272228
      GCC Administrator committed
  2. 12 Jun, 2019 34 commits
    • PR c++/66999 - 'this' captured by reference. · 22f6d174
      	* parser.c (cp_parser_lambda_introducer): Reject `&this'.  Use
      	cp_lexer_nth_token_is instead of cp_lexer_peek_nth_token.
      
      	* g++.dg/cpp0x/lambda/lambda-this21.C: New test.
      
      From-SVN: r272223
      Marek Polacek committed
    • io.c (check_format): Use G_(...) instead of _(...) for error values... · 0d0137a3
      	* io.c (check_format): Use G_(...) instead of _(...) for error values,
      	append " in format string at %L" to all strings but unexpected_element,
      	use error as gfc_error formating string instead of
      	"%s in format string at %L".  Formatting fixes.
      
      From-SVN: r272222
      Jakub Jelinek committed
    • PR c++/90825 - endless recursion when evaluating sizeof. · 99e764a2
      	PR c++/90832 - endless recursion when evaluating sizeof.
      	* constexpr.c (cxx_eval_constant_expression): Don't recurse on the
      	result of fold_sizeof_expr if is returns a SIZEOF_EXPR.
      	* typeck.c (cxx_sizeof_expr): Only return a SIZEOF_EXPR if the operand
      	is instantiation-dependent.
      
      	* g++.dg/cpp0x/constexpr-sizeof2.C: New test.
      	* g++.dg/cpp0x/constexpr-sizeof3.C: New test.
      
      From-SVN: r272221
      Marek Polacek committed
    • gfortran.h (gfc_free_dt_list): Remove prototype. · d52a6e0a
      2019-06-12  Steven G. Kargl  <kargl@gcc.gnu.org>
       
      	* gfortran.h (gfc_free_dt_list): Remove prototype.
      
      From-SVN: r272220
      Steven G. Kargl committed
    • Tweak tests to avoid fallout from MEM_REF changes on targets that don't enable... · c22898f1
      Tweak tests to avoid fallout from MEM_REF changes on targets that don't
      enable store merging but achieve the same effect by other means (DSE).
      
      gcc/testsuite?ChangeLog:
      
      	PR middle-end/90676
      	* gcc.dg/tree-ssa/pr30375.c: Adjust and simplify expected test
      	output some more.
      	* gcc.dg/tree-ssa/slsr-27.c: Ditto.
      	* gcc.dg/tree-ssa/slsr-28.c: Ditto.
      	* gcc.dg/tree-ssa/slsr-29.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-dse-24.c: Ditto.
      
      From-SVN: r272218
      Martin Sebor committed
    • PR c++/90736 - bogus error with alignof. · 72b091f7
      	* constexpr.c (adjust_temp_type): Use cv_unqualified type.
      
      	* g++.dg/cpp0x/alignof5.C: New test.
      
      From-SVN: r272217
      Marek Polacek committed
    • Fix incorrect __cpp_lib_parallel_algorithm macro definitions · 95b3d0fd
      	* include/std/algorithm (__cpp_lib_parallel_algorithm): Fix value.
      	* include/std/memory (__cpp_lib_parallel_algorithm): Likewise.
      	* include/std/numeric (__cpp_lib_parallel_algorithm): Likewise.
      	* testsuite/25_algorithms/pstl/feature_test.cc: New test.
      
      From-SVN: r272216
      Jonathan Wakely committed
    • Add myself to MAINTAINERS · 1ab4217d
      2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* MAINTAINERS (Write After Approval): Add myself.
      
      From-SVN: r272215
      Dimitar Dimitrov committed
    • testsuite: Mark testsuite that PRU has different · b9114a84
      gcc/testsuite/ChangeLog:
      
      2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>
      
              * gcc.dg/builtin-apply2.c: Skip for PRU.
              * gcc.dg/torture/stackalign/builtin-apply-2.c: Ditto.
      
      From-SVN: r272212
      Dimitar Dimitrov committed
    • testsuite: Mark that PRU uses all function pointer bits · 13a5e90f
      gcc/testsuite/ChangeLog:
      
      2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* g++.old-deja/g++.abi/ptrmem.C: Add PRU to list.
      
      From-SVN: r272211
      Dimitar Dimitrov committed
    • testsuite: Mark that PRU has one-cycle jumps · 047b36a3
      gcc/testsuite/ChangeLog:
      
      2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* gcc.dg/tree-ssa/20040204-1.c: XFAIL on pru.
      	* gcc.dg/tree-ssa/reassoc-33.c: Ditto.
      	* gcc.dg/tree-ssa/reassoc-34.c: Ditto.
      	* gcc.dg/tree-ssa/reassoc-35.c: Ditto.
      	* gcc.dg/tree-ssa/reassoc-36.c: Ditto.
      
      From-SVN: r272210
      Dimitar Dimitrov committed
    • testsuite: Define PRU stack usage · c0ad8f59
      gcc/testsuite/ChangeLog:
      
      2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* gcc.dg/stack-usage-1.c: Define PRU stack usage.
      
      From-SVN: r272209
      Dimitar Dimitrov committed
    • testsuite: Remove PRU from test cases requiring hosted environment · 6dfa4ad4
      gcc/testsuite/ChangeLog:
      
      2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* gcc.c-torture/execute/20101011-1.c: Define DO_TEST to 0 for PRU.
      	* gcc.dg/20020312-2.c: No PIC register for PRU.
      
      From-SVN: r272208
      Dimitar Dimitrov committed
    • testsuite: Add check for unsupported TI ABI PRU features to testsuite · b48e2217
      gcc/testsuite/ChangeLog:
      
      2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* lib/gcc-dg.exp: Filter unsupported features in PRU's TI ABI mode.
      	* lib/target-utils.exp: Ditto.
      	* lib/target-supports.exp (check_effective_target_function_pointers,
      	check_effective_target_large_return_values): New.
      
      From-SVN: r272207
      Dimitar Dimitrov committed
    • testsuite: Add check for overflowed IMEM region to testsuite · 31f1fa4e
      gcc/testsuite/ChangeLog:
      
      2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* lib/gcc-dg.exp: Bail on region overflow for tiny targets.
      	* lib/target-utils.exp: Ditto.
      	* lib/target-supports.exp: Declare PRU target as tiny.
      
      From-SVN: r272206
      Dimitar Dimitrov committed
    • testsuite: Add PRU tests · 506bd02c
      gcc/testsuite/ChangeLog:
      
      2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* gcc.target/pru/abi-arg-struct.c: New test.
      	* gcc.target/pru/ashiftrt.c: New test.
      	* gcc.target/pru/builtins-1.c: New test.
      	* gcc.target/pru/builtins-error.c: New test.
      	* gcc.target/pru/clearbit.c: New test.
      	* gcc.target/pru/loop-asm.c: New test.
      	* gcc.target/pru/loop-dowhile.c: New test.
      	* gcc.target/pru/loop-hi-1.c: New test.
      	* gcc.target/pru/loop-hi-2.c: New test.
      	* gcc.target/pru/loop-qi-1.c: New test.
      	* gcc.target/pru/loop-qi-2.c: New test.
      	* gcc.target/pru/loop-short-1.c: New test.
      	* gcc.target/pru/loop-short-2.c: New test.
      	* gcc.target/pru/loop-si-1.c: New test.
      	* gcc.target/pru/loop-si-2.c: New test.
      	* gcc.target/pru/loop-u8_pcrel_overflow.c: New test.
      	* gcc.target/pru/loop-ubyte-1.c: New test.
      	* gcc.target/pru/loop-ubyte-2.c: New test.
      	* gcc.target/pru/lra-framepointer-fragmentation-1.c: New test.
      	* gcc.target/pru/lra-framepointer-fragmentation-2.c: New test.
      	* gcc.target/pru/mabi-ti-1.c: New test.
      	* gcc.target/pru/mabi-ti-2.c: New test.
      	* gcc.target/pru/mabi-ti-3.c: New test.
      	* gcc.target/pru/mabi-ti-4.c: New test.
      	* gcc.target/pru/mabi-ti-5.c: New test.
      	* gcc.target/pru/mabi-ti-6.c: New test.
      	* gcc.target/pru/mabi-ti-7.c: New test.
      	* gcc.target/pru/pr64366.c: New test.
      	* gcc.target/pru/pragma-ctable_entry.c: New test.
      	* gcc.target/pru/pru.exp: New file.
      	* gcc.target/pru/qbbc-1.c: New test.
      	* gcc.target/pru/qbbc-2.c: New test.
      	* gcc.target/pru/qbbc-3.c: New test.
      	* gcc.target/pru/qbbs-1.c: New test.
      	* gcc.target/pru/qbbs-2.c: New test.
      	* gcc.target/pru/setbit.c: New test.
      	* gcc.target/pru/zero_extend-and-hisi.c: New test.
      	* gcc.target/pru/zero_extend-and-qihi.c: New test.
      	* gcc.target/pru/zero_extend-and-qisi.c: New test.
      	* gcc.target/pru/zero_extend-hisi.c: New test.
      	* gcc.target/pru/zero_extend-qihi.c: New test.
      	* gcc.target/pru/zero_extend-qisi.c: New test.
      	* lib/target-supports.exp: Add PRU to feature filters.
      
      From-SVN: r272205
      Dimitar Dimitrov committed
    • Initial TI PRU libgcc port · ae7deb4b
      libgcc/ChangeLog:
      
      2019-06-12  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* config.host: Add PRU target.
      	* config/pru/asri.c: New file.
      	* config/pru/eqd.c: New file.
      	* config/pru/eqf.c: New file.
      	* config/pru/ged.c: New file.
      	* config/pru/gef.c: New file.
      	* config/pru/gtd.c: New file.
      	* config/pru/gtf.c: New file.
      	* config/pru/led.c: New file.
      	* config/pru/lef.c: New file.
      	* config/pru/lib2bitcountHI.c: New file.
      	* config/pru/lib2divHI.c: New file.
      	* config/pru/lib2divQI.c: New file.
      	* config/pru/lib2divSI.c: New file.
      	* config/pru/libgcc-eabi.ver: New file.
      	* config/pru/ltd.c: New file.
      	* config/pru/ltf.c: New file.
      	* config/pru/mpyll.S: New file.
      	* config/pru/pru-abi.h: New file.
      	* config/pru/pru-asm.h: New file.
      	* config/pru/pru-divmod.h: New file.
      	* config/pru/sfp-machine.h: New file.
      	* config/pru/t-pru: New file.
      
      From-SVN: r272204
      Dimitar Dimitrov committed
    • Fix ChangeLog dates for last commit · 3e209f57
      From-SVN: r272203
      Dimitar Dimitrov committed
    • Initial TI PRU GCC port · 8d2af3a2
      ChangeLog:
      
      2019-06-19  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* configure: Regenerate.
      	* configure.ac: Add PRU target.
      
      gcc/ChangeLog:
      
      2019-06-19  Dimitar Dimitrov  <dimitar@dinux.eu>
      
      	* common/config/pru/pru-common.c: New file.
      	* config.gcc: Add PRU target.
      	* config/pru/alu-zext.md: New file.
      	* config/pru/constraints.md: New file.
      	* config/pru/predicates.md: New file.
      	* config/pru/pru-opts.h: New file.
      	* config/pru/pru-passes.c: New file.
      	* config/pru/pru-pragma.c: New file.
      	* config/pru/pru-protos.h: New file.
      	* config/pru/pru.c: New file.
      	* config/pru/pru.h: New file.
      	* config/pru/pru.md: New file.
      	* config/pru/pru.opt: New file.
      	* config/pru/t-pru: New file.
      	* doc/extend.texi: Document PRU pragmas.
      	* doc/invoke.texi: Document PRU-specific options.
      	* doc/md.texi: Document PRU asm constraints.
      
      From-SVN: r272202
      Dimitar Dimitrov committed
    • re PR fortran/90002 (ICE: free_expr0(): Bad expr type) · 974b8e61
      2019-06-12  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/90002
      	* array.c (gfc_free_array_spec): When freeing an array-spec, avoid
      	an ICE for assumed-shape coarrays 
      
      2019-06-12  Steven G. Kargl  <kargl@gcc.gnu.org>
      
      	PR fortran/90002
      	* gfortran.dg/pr90002.f90: New test.
      
      From-SVN: r272201
      Steven G. Kargl committed
    • Update last ChangeLog entry. · e97bf6bb
      From-SVN: r272200
      Martin Sebor committed
    • PR middle-end/90676 - default GIMPLE dumps lack information · 313b30ef
      gcc/ChangeLog:
      
      	PR middle-end/90676
      	* tree-pretty-print.c (dump_mem_ref): New function.  Include
      	MEM_REF type in output when different size than operand.
      	(dump_generic_node): Move code to dump_mem_ref and call it.
      
      gcc/testsuite/ChangeLog:
      
      	PR middle-end/90676
      	* gcc.dg/tree-ssa/dump-6.c: New test.
      	* g++.dg/tree-ssa/pr19807.C: Adjust expected output.
      	* g++.dg/tree-ssa/ssa-dse-1.C: Same.
      	* gcc.dg/store_merging_5.c: Same.
      	* gcc.dg/tree-prof/stringop-2.c: Same.
      	* gcc.dg/tree-ssa/pr30375.c: Same.
      	* gcc.dg/tree-ssa/slsr-27.c: Same.
      	* gcc.dg/tree-ssa/slsr-28.c: Same.
      	* gcc.dg/tree-ssa/slsr-29.c: Same.
      	* gcc.dg/tree-ssa/ssa-dse-24.c: Same.
      
      From-SVN: r272199
      Martin Sebor committed
    • PR tree-optimization/90662 - strlen of a string in a vla plus offset not folded · 7802a8ec
      gcc/ChangeLog:
      
      	PR tree-optimization/90662
      	* tree-ssa-strlen.c (get_stridx): Handle simple VLAs and pointers
      	to arrays.
      
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/90662
      	* gcc.dg/strlenopt-62.c: New test.
      	* gcc.dg/strlenopt-63.c: New test.
      	* gcc.dg/strlenopt-64.c: New test.
      
      From-SVN: r272197
      Martin Sebor committed
    • [nvptx] Assert fork has at most one join in nvptx_find_par · 4b557bcc
      With the test-case of PR90009 we run into a SIGSEGV in nvptx_neuter_pars,
      because par->join_insn and par->join_block are NULL.
      
      Detect this problem earlier, by adding an assert in nvptx_find_par that
      asserts that a fork cannot be paired with more than one join.
      
      Build and tested on x86_64 with nvptx accelerator enabled.
      
      2019-06-12  Tom de Vries  <tdevries@suse.de>
      
      	PR tree-optimization/90009
      	* config/nvptx/nvptx.c (nvptx_find_par): Assert fork has at most join.
      
      From-SVN: r272189
      Tom de Vries committed
    • Improve static_assert messages for std::variant · 801b2266
      Also fix a warning with -Wunused-parameter -Wsystem-headers.
      
      	* include/std/variant (get<T>, get<N>, get_if<N>, get_if<T>)
      	(variant::emplace): Change static_assert messages from "should be"
      	to "must be".
      	(hash<monostate>::operator()): Remove name of unused parameter.
      
      From-SVN: r272188
      Jonathan Wakely committed
    • Simplify std::scoped_lock destructor · ce657a74
      	* include/std/mutex (scoped_lock::~scoped_lock()): Use fold
      	expression.
      
      From-SVN: r272187
      Jonathan Wakely committed
    • Replace std::to_string for integers with optimized version · cd0b94e6
      The std::to_chars functions from C++17 can be used to implement
      std::to_string with much better performance than calling snprintf. Only
      the __detail::__to_chars_len and __detail::__to_chars_10 functions are
      needed for to_string, because it always outputs base 10 representations.
      
      The return type of __detail::__to_chars_10 should not be declared before
      C++17, so the function body is extracted into a new function that can be
      reused by to_string and __detail::__to_chars_10.
      
      The existing tests for to_chars rely on to_string to check for correct
      answers. Now that they use the same code that doesn't actually ensure
      correctness, so add new tests for std::to_string that compare against
      printf output.
      
      	* include/Makefile.am: Add new <bits/charconv.h> header.
      	* include/Makefile.in: Regenerate.
      	* include/bits/basic_string.h (to_string(int), to_string(unsigned))
      	(to_string(long), to_string(unsigned long), to_string(long long))
      	(to_string(unsigned long long)): Rewrite to use __to_chars_10_impl.
      	* include/bits/charconv.h: New header.
      	(__detail::__to_chars_len): Move here from <charconv>.
      	(__detail::__to_chars_10_impl): New function extracted from
      	__detail::__to_chars_10.
      	* include/std/charconv (__cpp_lib_to_chars): Add, but comment out.
      	(__to_chars_unsigned_type): New class template that reuses
      	__make_unsigned_selector_base::__select to pick a type.
      	(__unsigned_least_t): Redefine as __to_chars_unsigned_type<T>::type.
      	(__detail::__to_chars_len): Move to new header.
      	(__detail::__to_chars_10): Add inline specifier. Move code doing the
      	output to __detail::__to_chars_10_impl and call that.
      	* include/std/version (__cpp_lib_to_chars): Add, but comment out.
      	* testsuite/21_strings/basic_string/numeric_conversions/char/
      	to_string.cc: Fix reference in comment. Remove unused variable.
      	* testsuite/21_strings/basic_string/numeric_conversions/char/
      	to_string_int.cc: New test.
      
      From-SVN: r272186
      Jonathan Wakely committed
    • Disable hash-table sanitization for mem stats maps. · ff7b3aa5
      2019-06-12  Martin Liska  <mliska@suse.cz>
      
      	* ggc-common.c (ggc_prune_overhead_list): Do not sanitize
      	the created map.
      	* hash-map.h: Add sanitize_eq_and_hash into ::hash_map.
      	* mem-stats.h (mem_alloc_description::mem_alloc_description):
      	Do not sanitize created maps.
      
      From-SVN: r272183
      Martin Liska committed
    • re PR target/90811 ([nvptx] ptxas error on OpenMP offloaded code) · 26d7a5e6
      	PR target/90811
      	* cfgexpand.c (align_local_variable): Add really_expand argument,
      	don't SET_DECL_ALIGN if it is false.
      	(add_stack_var): Add really_expand argument, pass it through to
      	align_local_variable.
      	(expand_one_stack_var_1): Pass true as really_expand to
      	align_local_variable.
      	(expand_one_ssa_partition): Pass true as really_expand to
      	add_stack_var.
      	(expand_one_var): Pass really_expand through to add_stack_var.
      
      From-SVN: r272181
      Jakub Jelinek committed
    • [arm] Implement usadv16qi and ssadv16qi standard names · 84ae7213
      
      This patch implements the usadv16qi and ssadv16qi standard names for arm.
      
      The V16QImode variant is important as it is the most commonly used pattern:
      reducing vectors of bytes into an int.
      The midend expects the optab to compute the absolute differences of operands 1
      and 2 and reduce them while widening along the way up to SImode. So the inputs
      are V16QImode and the output is V4SImode.
      
      I've based my solution on Aarch64 usadv16qi and ssadv16qi standard names
      current implementation (r260437). This solution emits below sequence of
      instructions:
      
              VABDL.u8        tmp, op1, op2   # op1, op2 lowpart
              VABAL.u8        tmp, op1, op2   # op1, op2 highpart
              VPADAL.u16      op3, tmp
      
      So, for the code:
      
      $ arm-none-linux-gnueabihf-gcc -S -O3 -march=armv8-a+simd -mfpu=auto -mfloat-abi=hard usadv16qi.c -dp
      
      #define N 1024
      unsigned char pix1[N];
      unsigned char pix2[N];
      
      int
      foo (void)
      {
        int i_sum = 0;
        int i;
        for (i = 0; i < N; i++)
          i_sum += __builtin_abs (pix1[i] - pix2[i]);
        return i_sum;
      }
      
      we now generate on arm:
      foo:
              movw    r3, #:lower16:pix2      @ 57    [c=4 l=4]  *arm_movsi_vfp/3
              movt    r3, #:upper16:pix2      @ 58    [c=4 l=4]  *arm_movt/0
              vmov.i32        q9, #0  @ v4si  @ 3     [c=4 l=4]  *neon_movv4si/2
              movw    r2, #:lower16:pix1      @ 59    [c=4 l=4]  *arm_movsi_vfp/3
              movt    r2, #:upper16:pix1      @ 60    [c=4 l=4]  *arm_movt/0
              add     r1, r3, #1024   @ 8     [c=4 l=4]  *arm_addsi3/4
      .L2:
              vld1.8  {q11}, [r3]!    @ 11    [c=8 l=4]  *movmisalignv16qi_neon_load
              vld1.8  {q10}, [r2]!    @ 10    [c=8 l=4]  *movmisalignv16qi_neon_load
              cmp     r1, r3  @ 21    [c=4 l=4]  *arm_cmpsi_insn/2
              vabdl.u8        q8, d20, d22    @ 12    [c=8 l=4]  neon_vabdluv8qi
              vabal.u8        q8, d21, d23    @ 15    [c=88 l=4]  neon_vabaluv8qi
              vpadal.u16      q9, q8  @ 16    [c=8 l=4]  neon_vpadaluv8hi
              bne     .L2             @ 22    [c=16 l=4]  arm_cond_branch
              vadd.i32        d18, d18, d19   @ 24    [c=120 l=4]  quad_halves_plusv4si
              vpadd.i32       d18, d18, d18   @ 25    [c=8 l=4]  neon_vpadd_internalv2si
              vmov.32 r0, d18[0]      @ 30    [c=12 l=4]  vec_extractv2sisi/1
      
      instead of:
      foo:
              @ args = 0, pretend = 0, frame = 0
              @ frame_needed = 0, uses_anonymous_args = 0
              @ link register save eliminated.
              movw    r3, #:lower16:pix1
              movt    r3, #:upper16:pix1
              vmov.i32        q9, #0  @ v4si
              movw    r2, #:lower16:pix2
              movt    r2, #:upper16:pix2
              add     r1, r3, #1024
      .L2:
              vld1.8  {q8}, [r3]!
              vld1.8  {q11}, [r2]!
              vmovl.u8 q10, d16
              cmp     r1, r3
              vmovl.u8 q8, d17
              vmovl.u8 q12, d22
              vmovl.u8 q11, d23
              vsub.i16        q10, q10, q12
              vsub.i16        q8, q8, q11
              vabs.s16        q10, q10
              vabs.s16        q8, q8
              vaddw.s16       q9, q9, d20
              vaddw.s16       q9, q9, d21
              vaddw.s16       q9, q9, d16
              vaddw.s16       q9, q9, d17
              bne     .L2
              vadd.i32        d18, d18, d19
              vpadd.i32       d18, d18, d18
              vmov.32 r0, d18[0]
      
      2019-06-12  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com>
      
              * config/arm/iterators.md (VABAL): New int iterator.
              * config/arm/neon.md (<sup>sadv16qi): New define_expand.
              * config/arm/unspecs.md ("unspec"): Define UNSPEC_VABAL_S, UNSPEC_VABAL_U
              values.
      
              * gcc.target/arm/ssadv16qi.c: New test.
              * gcc.target/arm/usadv16qi.c: Likewise.
      
      From-SVN: r272180
      Przemyslaw Wirkus committed
    • Remove wrong assert about single value profiler. · d134323b
      2019-06-12  Martin Liska  <mliska@suse.cz>
      
      	* value-prof.c (stream_out_histogram_value): Only first value
      	can't be negative.
      
      From-SVN: r272179
      Martin Liska committed
    • re PR c/90760 (ICE on attributes section and alias in set_section, at symtab.c:1573) · f3139680
      	PR c/90760
      	* symtab.c (symtab_node::set_section): Allow being called on aliases
      	as long as they aren't analyzed yet.
      
      	* gcc.dg/pr90760.c: New test.
      
      From-SVN: r272178
      Jakub Jelinek committed
    • Daily bump. · bfde1e21
      From-SVN: r272177
      GCC Administrator committed