aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2019-06-13re PR fortran/89344 (uncaught programmer error: polymorphic variable is ↵Steven G. Kargl4-2/+35
INTENT(IN) but assigned to without error) 2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/89344 * expr.c (gfc_check_vardef_context): Check for INTENT(IN) variable in SELECT TYPE construct. 2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/89344 * gfortran.dg/pr89344.f90: New test. From-SVN: r272255
2019-06-13re PR fortran/88810 (gcc/fortran/dependency.c:2200: possible cut'n'paste ↵Steven G. Kargl2-26/+36
error ?) 2019-06-13 Steven G. Kargl <kargl@gcc.gnu.org> PR fortran/88810 * dependency.c (gfc_dep_resolver): Re-arrange code to make the logic a bit more transparent. Fix 2 nearby formatting issues. From-SVN: r272254
2019-06-13Darwin, testsuite - Adjust two tests that fail on newer OS versions.Iain Sandoe3-2/+7
Newer OS versions (10.14+) do not provide some of the CRTs that are used for older ones (e.g. 10.5), and thus link tests that specify targeting such a revision fail. We retain the testing of the correct defined OS version number but switch to compile-only testing for these two tests. 2019-06-13 Iain Sandoe <iain@sandoe.co.uk> * gcc.dg/darwin-minversion-1.c: Use compile rather than link/run. * gcc.dg/darwin-minversion-2.c: Likewise. From-SVN: r272251
2019-06-13re PR target/90871 (g++.dg/ext/altivec-15.C fails after r272236)Paolo Carlini2-1/+6
2019-06-13 Paolo Carlini <paolo.carlini@oracle.com> PR target/90871 * g++.dg/ext/altivec-15.C: Add dg-error directive. From-SVN: r272250
2019-06-13testsuite - Require alias support for pr90760.Iain Sandoe2-0/+5
This test fails on Darwin because it requires alias support, so add the relevant dg-requires. 2019-06-13 Iain Sandoe <iain@sandoe.co.uk> * gcc.dg/pr90760.c: Require alias support. From-SVN: r272248
2019-06-13re PR tree-optimization/90869 (Non-disambiguated memory accesses)Jan Hubicka4-5/+52
PR tree-optimize/90869 * tree-ssa-alias.c (indirect_ref_may_alias_decl_p): Watch for view converts in MEM_REF referencing decl rather than view converts from decl type to MEM_REF type. * g++.dg/tree-ssa/alias-access-path-1.C: New testcase. From-SVN: r272247
2019-06-13re PR tree-optimization/90856 (ICE: verify_gimple failed (error: ↵Richard Biener4-0/+27
incompatible types in 'PHI' argument 1)) 2019-06-13 Richard Biener <rguenther@suse.de> PR tree-optimization/90856 * tree-sra.c (build_ref_for_model): Only use build_reconstructed_reference when address-spaces are the same. * gcc.target/i386/pr90856.c: New testcase. From-SVN: r272244
2019-06-13nvptx.c (nvptx_sese_number, [...]): Don't wrap ei variable name in the ↵Jakub Jelinek2-8/+13
declaration in ()s. * config/nvptx/nvptx.c (nvptx_sese_number, nvptx_sese_pseudo): Don't wrap ei variable name in the declaration in ()s. (nvptx_single): Actually use mode_label variable. Formatting fix. From-SVN: r272243
2019-06-13ssa-dse-1.C: Don't match exact number of chars of = {} store.Jakub Jelinek3-3/+10
* g++.dg/tree-ssa/ssa-dse-1.C: Don't match exact number of chars of = {} store. * g++.dg/tree-ssa/pr31146.C: Change -fdump-tree-forwprop to -fdump-tree-forwprop1 in dg-options. Expect <int[5]> in MEM. From-SVN: r272240
2019-06-13tree-vectorizer.h (vect_loop_vectorized_call): Declare.Richard Biener7-80/+188
2019-06-13 Richard Biener <rguenther@suse.de> * tree-vectorizer.h (vect_loop_vectorized_call): Declare. * tree-vectorizer.c (vect_loop_vectorized_call): Export and also return the condition stmt. * tree-vect-loop-manip.c (vect_loop_versioning): Compute outermost loop we can version and version that, reusing the loop version created by if-conversion instead of versioning again. * gcc.dg/vect/vect-version-1.c: New testcase. * gcc.dg/vect/vect-version-2.c: Likewise. From-SVN: r272239
2019-06-13Revamp value_range::may_contain_p.Aldy Hernandez5-35/+43
From-SVN: r272238
2019-06-13[ARC] Add documentation naked, ilink and firqClaudiu Zissulescu2-1/+17
gcc/ xxxx-xx-xx Claudiu Zissulescu <claziss@synopsys.com> * doc/extend.texi (ARC Function Attributes): Update info. From-SVN: r272237
2019-06-13decl.c (grokdeclarator): Use id_loc in five additional places in the last ↵Paolo Carlini19-49/+105
part of the function. /cp 2019-06-13 Paolo Carlini <paolo.carlini@oracle.com> * decl.c (grokdeclarator): Use id_loc in five additional places in the last part of the function. /testsuite 2019-06-13 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/diagnostic/variably-modified-type-1.C: New. * g++.dg/cpp0x/alias-decl-1.C: Test the location too. * g++.dg/other/pr84792-1.C: Likewise. * g++.dg/other/pr84792-2.C: Likewise. * g++.dg/parse/error24.C: Likewise. * g++.dg/parse/error32.C: Likewise. * g++.dg/parse/error33.C: Likewise. * g++.dg/parse/saved1.C: Likewise. * g++.dg/template/operator6.C: Likewise. * g++.dg/template/pr61745.C: Likewise. * g++.dg/template/typedef41.C: Likewise. * g++.old-deja/g++.jason/crash10.C: Likewise. /cp 2019-06-13 Paolo Carlini <paolo.carlini@oracle.com> * decl.c (grokdeclarator): Move further up the declaration of id_loc, use it immediately, update its value after the loop over declarator, use it again in the final part of function; improve locations of error messages about multiple data types and conflicting specifiers. /testsuite 2019-06-13 Paolo Carlini <paolo.carlini@oracle.com> * g++.dg/diagnostic/conflicting-specifiers-1.C: New. * g++.dg/diagnostic/two-or-more-data-types-1.C: Likewise. * g++.dg/parse/error10.C: Adjust location. * g++.dg/parse/pragma2.C: Likewise. From-SVN: r272236
2019-06-13re PR c++/90801 (A recurring hang)Richard Biener2-8/+21
2019-06-13 Richard Biener <rguenther@suse.de> PR c++/90801 * typeck2.c (split_nonconstant_init_1): Properly count num_split_elts, optimize single constructor elt removal. From-SVN: r272235
2019-06-13PR tree-optimization/89713 - Assume loop with an exit is finiteFeng Xue19-10/+165
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
2019-06-13re PR target/88838 ([SVE] Use 32-bit WHILELO in LP64 mode)Kugan Vivekanandarajah7-44/+138
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
2019-06-13re PR target/88834 ([SVE] Poor addressing mode choices for LD2 and ST2)Kugan Vivekanandarajah13-25/+118
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
2019-06-13iterators.md (ADDSUB): Fix typo in comment.Kugan Vivekanandarajah2-1/+5
gcc/ChangeLog: 2019-06-13 Kugan Vivekanandarajah <kugan.vivekanandarajah@linaro.org> * config/aarch64/iterators.md (ADDSUB): Fix typo in comment. From-SVN: r272231
2019-06-13re PR c++/87410 (internal compiler error: in fold_convert_loc, at ↵Marek Polacek2-0/+24
fold-const.c:2530) PR c++/87410 * g++.dg/cpp1y/pr87410.C: New test. From-SVN: r272230
2019-06-13Daily bump.GCC Administrator1-1/+1
From-SVN: r272228
2019-06-12PR c++/66999 - 'this' captured by reference.Marek Polacek4-2/+31
* 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
2019-06-13io.c (check_format): Use G_(...) instead of _(...) for error values...Jakub Jelinek2-26/+42
* 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
2019-06-12PR c++/90825 - endless recursion when evaluating sizeof.Marek Polacek6-4/+64
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
2019-06-12gfortran.h (gfc_free_dt_list): Remove prototype.Steven G. Kargl2-2/+4
2019-06-12 Steven G. Kargl <kargl@gcc.gnu.org> * gfortran.h (gfc_free_dt_list): Remove prototype. From-SVN: r272220
2019-06-12Tweak tests to avoid fallout from MEM_REF changes on targets that don't ↵Martin Sebor6-11/+16
enable... 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
2019-06-12PR c++/90736 - bogus error with alignof.Marek Polacek4-1/+19
* constexpr.c (adjust_temp_type): Use cv_unqualified type. * g++.dg/cpp0x/alignof5.C: New test. From-SVN: r272217
2019-06-12testsuite: Mark testsuite that PRU has differentDimitar Dimitrov3-2/+7
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
2019-06-12testsuite: Mark that PRU uses all function pointer bitsDimitar Dimitrov2-1/+5
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
2019-06-12testsuite: Mark that PRU has one-cycle jumpsDimitar Dimitrov6-5/+13
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
2019-06-12testsuite: Define PRU stack usageDimitar Dimitrov2-0/+6
gcc/testsuite/ChangeLog: 2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu> * gcc.dg/stack-usage-1.c: Define PRU stack usage. From-SVN: r272209
2019-06-12testsuite: Remove PRU from test cases requiring hosted environmentDimitar Dimitrov3-0/+10
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
2019-06-12testsuite: Add check for unsupported TI ABI PRU features to testsuiteDimitar Dimitrov4-0/+52
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
2019-06-12testsuite: Add check for overflowed IMEM region to testsuiteDimitar Dimitrov3-0/+15
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
2019-06-12testsuite: Add PRU testsDimitar Dimitrov44-1/+1351
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
2019-06-12Fix ChangeLog dates for last commitDimitar Dimitrov1-1/+1
From-SVN: r272203
2019-06-12Initial TI PRU GCC portDimitar Dimitrov18-0/+5879
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
2019-06-12re PR fortran/90002 (ICE: free_expr0(): Bad expr type)Steven G. Kargl4-3/+32
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
2019-06-12Update last ChangeLog entry.Martin Sebor1-4/+5
From-SVN: r272200
2019-06-12PR middle-end/90676 - default GIMPLE dumps lack informationMartin Sebor13-115/+205
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
2019-06-12PR tree-optimization/90662 - strlen of a string in a vla plus offset not foldedMartin Sebor6-17/+602
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
2019-06-12[nvptx] Assert fork has at most one join in nvptx_find_parTom de Vries2-0/+6
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
2019-06-12Disable hash-table sanitization for mem stats maps.Martin Liska4-7/+18
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
2019-06-12Remove value_range_constant_singleton in favor of value_range::singleton_p.Aldy Hernandez5-22/+18
From-SVN: r272182
2019-06-12re PR target/90811 ([nvptx] ptxas error on OpenMP offloaded code)Jakub Jelinek2-7/+25
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
2019-06-12[arm] Implement usadv16qi and ssadv16qi standard namesPrzemyslaw Wirkus7-0/+101
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
2019-06-12Remove wrong assert about single value profiler.Martin Liska2-1/+6
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
2019-06-12re PR c/90760 (ICE on attributes section and alias in set_section, at ↵Jakub Jelinek4-1/+20
symtab.c:1573) 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
2019-06-12Daily bump.GCC Administrator1-1/+1
From-SVN: r272177
2019-06-11mips.c (mips_final_postscan_insn): Modify call to ↵Faraz Shahbazker5-6/+71
`mips_set_text_contents_type' to indicate whether a non-debug... * config/mips/mips.c (mips_final_postscan_insn): Modify call to `mips_set_text_contents_type' to indicate whether a non-debug insn follows. * gcc.target/mips/data-sym-pool.c: Update expected output. * gcc.target/mips/data-sym-multi-pool.c: New test. From-SVN: r272169
2019-06-11Darwin, testsuite - Fix PR 65364 (uninit-19.c).Iain Sandoe2-2/+8
This test currently fails on Darwin, because the port inlines fn2 for both PIC (and non-pic for m32). Fixed by adjusting the target condition. 2019-06-11 Iain Sandoe <iain@sandoe.co.uk> PR testsuite/65364 * gcc.dg/uninit-19.c (fn1): Adjust target condition for Darwin. (fn2): Likewise. From-SVN: r272167