- 13 Jun, 2019 6 commits
-
-
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 -
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 -
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 -
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 -
PR c++/87410 * g++.dg/cpp1y/pr87410.C: New test. From-SVN: r272230
Marek Polacek committed -
From-SVN: r272228
GCC Administrator committed
-
- 12 Jun, 2019 34 commits
-
-
* 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, 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++/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 -
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 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 -
* constexpr.c (adjust_temp_type): Use cv_unqualified type. * g++.dg/cpp0x/alignof5.C: New test. From-SVN: r272217
Marek Polacek committed -
* 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 -
2019-06-12 Dimitar Dimitrov <dimitar@dinux.eu> * MAINTAINERS (Write After Approval): Add myself. From-SVN: r272215
Dimitar Dimitrov committed -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
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 -
From-SVN: r272203
Dimitar Dimitrov committed -
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 -
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 -
From-SVN: r272200
Martin Sebor committed -
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 -
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 -
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 -
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 -
* include/std/mutex (scoped_lock::~scoped_lock()): Use fold expression. From-SVN: r272187
Jonathan Wakely committed -
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 -
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 -
From-SVN: r272182
Aldy Hernandez committed -
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 -
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 -
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 -
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 -
From-SVN: r272177
GCC Administrator committed
-