1. 29 Oct, 2019 8 commits
    • Remove misleading sorting function in ggc memory report. · c5281d50
      2019-10-29  Martin Liska  <mliska@suse.cz>
      
      	* cgraphunit.c (symbol_table::compile): Remove argument
      	for dump_memory_report.
      	* ggc-common.c (dump_ggc_loc_statistics): Likewise.
      	(compare_final): Remove in order to make report
      	better readable.
      	* ggc.h (dump_ggc_loc_statistics):  Remove argument.
      	* mem-stats.h (mem_alloc_description::get_list):
      	Do not pass cmp.
      	(mem_alloc_description::dump): Likewise here.
      	* toplev.c (dump_memory_report): Remove final
      	argument.
      	(finalize): Likewise.
      	* toplev.h (dump_memory_report): Remove argument.
      2019-10-29  Martin Liska  <mliska@suse.cz>
      
      	* lto.c (do_whole_program_analysis): Remove argument.
      
      From-SVN: r277557
      Martin Liska committed
    • [AArch64] Handle scalars in cmp and shift immediate queries · 6bc67182
      The SVE ACLE has convenience functions that take scalar arguments
      instead of vectors.  This patch makes it easier to implement the shift
      and compare functions by making the associated immediate queries work
      for scalar immediates as well as vector duplicates of them.
      
      The "const" codes in the predicates were a holdover from an early
      version of the SVE port in which we used (const ...) wrappers for
      variable-length vector constants.  I'll remove other instances
      of them in a separate patch.
      
      2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* config/aarch64/aarch64.c (aarch64_sve_cmp_immediate_p)
      	(aarch64_simd_shift_imm_p): Accept scalars as well as vectors.
      	* config/aarch64/predicates.md (aarch64_sve_cmp_vsc_immediate)
      	(aarch64_sve_cmp_vsd_immediate): Accept "const_int", but don't
      	accept "const".
      
      From-SVN: r277556
      Richard Sandiford committed
    • Add a simulate_enum_decl langhook · ac2cfa6c
      Similarly to the simulate_builtin_function_decl patch, this one
      adds a hook for simulating an enum declaration in the source
      language.  Again, the main SVE ACLE patch has tests for various
      error conditions.
      
      2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* coretypes.h (string_int_pair): New typedef.
      	* langhooks-def.h (LANG_HOOKS_SIMULATE_ENUM_DECL): Define.
      	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Include it.
      	* langhooks.h (lang_hooks_for_types::simulate_enum_decl): New hook.
      
      gcc/c/
      	* c-tree.h (c_simulate_enum_decl): Declare.
      	* c-decl.c (c_simulate_enum_decl): New function.
      	* c-objc-common.h (LANG_HOOKS_SIMULATE_ENUM_DECL): Define to the above.
      
      gcc/cp/
      	* cp-objcp-common.h (cxx_simulate_enum_decl): Declare.
      	(LANG_HOOKS_SIMULATE_ENUM_DECL): Define to the above.
      	* decl.c (cxx_simulate_enum_decl): New function.
      
      From-SVN: r277555
      Richard Sandiford committed
    • Add a simulate_builin_function_decl langhook · 74078538
      Although it's possible to define the SVE intrinsics in a normal header
      file, it's much more convenient to define them directly in the compiler.
      This also speeds up compilation and gives better error messages.
      
      The idea is therefore for arm_sve.h (the main intrinsics header file)
      to have the pragma:
      
          #pragma GCC aarch64 "arm_sve.h"
      
      telling GCC to define (almost) everything arm_sve.h needs to define.
      The target then needs a way of injecting new built-in function
      declarations during compilation.
      
      The main hook for defining built-in functions is add_builtin_function.
      This is designed for use at start-up, and so has various features that
      are correct in that context but not for the pragma above:
      
        (1) the location is always BUILTINS_LOCATION, whereas for arm_sve.h
            it ought to be the location of the pragma.
      
        (2) the function is only immediately visible if it's in the implementation
            namespace, whereas the pragma is deliberately injecting functions
            into the general namespace.
      
        (3) there's no attempt to emulate a normal function declaration in
            C or C++, whereas functions declared by the pragma should be
            checked in the same way as an open-coded declaration would be.
            E.g. we should get an error if there was a previous incompatible
            declaration.
      
        (4) in C++, the function is treated as extern "C" and so can't be
            overloaded, whereas SVE intrinsics do use function overloading.
      
      This patch therefore adds a hook that targets can use to inject
      the equivalent of a source-level function declaration, but bound
      to a BUILT_IN_MD function.
      
      The main SVE intrinsic patch has tests to make sure that we report an
      error for conflicting definitions that appear either before or after
      including arm_sve.h.
      
      2019-10-29  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	* langhooks.h (lang_hooks::simulate_builtin_function_decl): New hook.
      	(simulate_builtin_function_decl): Declare.
      	* langhooks-def.h (LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL): Define.
      	(LANG_HOOKS_INITIALIZER): Include it.
      	* langhooks.c (add_builtin_function_common): Rename to...
      	(build_builtin_function): ...this.  Add a location parameter and use
      	it instead of BUILTINS_LOCATION.  Remove the hook parameter and return
      	the decl instead.
      	(add_builtin_function): Update accordingly, passing the returned
      	decl to the lang hook.
      	(add_builtin_function_ext_scope): Likewise
      	(simulate_builtin_function_decl): New function.
      
      gcc/c/
      	* c-tree.h (c_simulate_builtin_function_decl): Declare.
      	* c-decl.c (c_simulate_builtin_function_decl): New function.
      	* c-objc-common.h (LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL): Define
      	to the above.
      
      gcc/cp/
      	* cp-tree.h (cxx_simulate_builtin_function_decl): Declare.
      	* decl.c (cxx_simulate_builtin_function_decl): New function.
      	* cp-objcp-common.h (LANG_HOOKS_SIMULATE_BUILTIN_FUNCTION_DECL): Define
      	to the above.
      
      From-SVN: r277554
      Richard Sandiford committed
    • re PR tree-optimization/92241 (ice in vect_mark_pattern_st mts, at tree-vect-patterns.c:5175) · 89196648
      2019-10-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92241
      	* gcc.dg/torture/pr92241-2.c: New testcase.
      
      From-SVN: r277553
      Richard Biener committed
    • install.texi (--enable-offload-targets): Fix up a typo in the example, use… · a2e862d4
      install.texi (--enable-offload-targets): Fix up a typo in the example, use actual names of supported offload targets.
      
      	* doc/install.texi (--enable-offload-targets): Fix up a typo in the
      	example, use actual names of supported offload targets.
      
      From-SVN: r277552
      Jakub Jelinek committed
    • re PR target/92258 (ICE: output_operand: invalid %-code) · dbb57419
      	PR target/92258
      	* config/i386/sse.md (iptr): Revert 2019-10-27 change.
      
      	* gcc.target/i386/pr92258.c: New test.
      
      From-SVN: r277551
      Jakub Jelinek committed
    • Daily bump. · f6a3672a
      From-SVN: r277550
      GCC Administrator committed
  2. 28 Oct, 2019 24 commits
    • tree-ssa-strlen.c (get_addr_stridx): Add argument and use it. · efe646c4
      
      gcc/ChangeLog:
      
      	* tree-ssa-strlen.c (get_addr_stridx): Add argument and use it.
      	(handle_store): Pass argument to get_addr_stridx.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/strlenopt-89.c: New test.
      	* gcc.dg/strlenopt-90.c: New test.
      	* gcc.dg/Wstringop-overflow-20.c: New test.
      
      From-SVN: r277546
      Martin Sebor committed
    • PR tree-optimization/92226 - live nul char store to array eliminated · 02c4de76
      gcc/testsuite/ChangeLog:
      
      	PR tree-optimization/92226
      	* gcc.dg/strlenopt-88.c: New test.
      
      gcc/ChangeLog:
      
      	PR tree-optimization/92226
      	* tree-ssa-strlen.c (compare_nonzero_chars): Return -1 also when
      	the offset is in the open range outlined by SI's length.
      
      From-SVN: r277545
      Martin Sebor committed
    • PR c/66970 - Add __has_builtin() macro · ad1539d5
      gcc/ChangeLog:
      
      	PR c/66970
      	* doc/cpp.texi (__has_builtin): Document.
      	* doc/extend.texi (__builtin_frob_return_addr): Correct spelling.
      
      gcc/c/ChangeLog:
      
      	PR c/66970
      	* c-decl.c (names_builtin_p): Define a new function.
      
      gcc/c-family/ChangeLog:
      
      	PR c/66970
      	* c-common.c (c_common_nodes_and_builtins): Call c_define_builtins
      	even when only preprocessing.
      	* c-common.h (names_builtin_p): Declare new function.
      	* c-lex.c (init_c_lex): Set has_builtin.
      	(c_common_has_builtin): Define a new function.
      	* c-ppoutput.c (init_pp_output): Set has_builtin.
      
      gcc/cp/ChangeLog:
      
      	PR c/66970
      	* cp-objcp-common.c (names_builtin_p): Define new function.
      
      gcc/testsuite/ChangeLog:
      
      	PR c/66970
      	* c-c++-common/cpp/has-builtin-2.c: New test.
      	* c-c++-common/cpp/has-builtin-3.c: New test.
      	* c-c++-common/cpp/has-builtin.c: New test.
      
      From-SVN: r277544
      Martin Sebor committed
    • re PR target/82981 (unnecessary __multi3 call for mips64r6 linux kernel) · 48b2123f
      	PR target/82981
              * config/mips/mips.md (<u>mulditi3): Generate patterns for high
              doubleword and low doubleword result of multiplication on
              MIPS64R6.
      
              * gcc.target/mips/mips64r6-ti-mult.c: New test.
      
      From-SVN: r277537
      Mihailo Stojanovic committed
    • cp-demangle.c (d_print_mod): Add a space before printing `complex` and… · 420fb10c
      cp-demangle.c (d_print_mod): Add a space before printing `complex` and `imaginary`, as opposed to after.
      
      	* cp-demangle.c (d_print_mod): Add a space before printing `complex`
      	and `imaginary`, as opposed to after.
      	* testsuite/demangle-expected: Adjust test.
      
      From-SVN: r277535
      Miguel Saldivar committed
    • mips.c (DIRECT_BUILTIN_PURE): New macro. · ea9d5cc8
              * config/mips/mips.c (DIRECT_BUILTIN_PURE): New macro. Add a
              pure qualifier to the built-in.
              (MSA_BUILTIN_PURE): New macro. Add a pure qualifier to the MSA
              built-ins.
              (struct mips_builtin_description): Add is_pure flag.
              (mips_init_builtins): Mark built-in as pure if the flag in the
              corresponding mips_builtin_description struct is set.
      
              * gcc.target/mips/mips-builtins-pure.c: New test.
      
      From-SVN: r277534
      Mihailo Stojanovic committed
    • mips-msa.md (msa_insert_<msaftm_f>): Add an alternative which covers the… · 18e2ca55
      mips-msa.md (msa_insert_<msaftm_f>): Add an alternative which covers the floating-point input value.
      
              * config/mips/mips-msa.md (msa_insert_<msaftm_f>): Add an
              alternative which covers the floating-point input value. Also
              forbid the split of insert.d pattern for floating-point values.
      
              * gcc.target/mips/msa-insert-split.c: New test.
      
      From-SVN: r277533
      Mihailo Stojanovic committed
    • gcc/riscv: Add a mechanism to remove some calls to _riscv_save_0 · e18a6d14
      When using the -msave-restore flag we end up with calls to
      _riscv_save_0 and _riscv_restore_0.  These functions adjust the stack
      and save or restore the return address.  Due to grouping multiple
      save/restore stub functions together the save/restore 0 calls actually
      save s0, s1, s2, and the return address, but only the return address
      actually matters.  Leaf functions don't call the save/restore stubs,
      so whenever we do see a call to the save/restore stubs, the store of
      the return address is required.
      
      If we look in gcc/config/riscv/riscv.c at the function
      riscv_expand_prologue and riscv_expand_epilogue we can see that it
      would be reasonably easy to adjust these functions to avoid the calls
      to the save/restore stubs for those cases where we are about to call
      _riscv_save_0 and _riscv_restore_0, however, the actual code size
      saving this would give is debatable, with linker relaxation, the calls
      to save/restore are often just 4-bytes, and can sometimes even be
      2-bytes, while leaving the stack adjust and return address save inline
      is always going to be 4-bytes.
      
      The interesting case is when we call _riscv_save_0 and
      _riscv_restore_0, and also have a frame that would (without
      save/restore) have resulted in a tail call.  In this case if we could
      remove the save/restore calls, and restore the tail call then we would
      get a real size saving.
      
      The problem is that the choice of generating a tail call or not is
      done during the gimple expand pass, at which point we don't know how
      many registers we need to save (or restore).
      
      The solution presented in this patch offers a partial solution to this
      problem.  By using the TARGET_MACHINE_DEPENDENT_REORG pass to
      implement a very limited pattern matching we identify functions that
      call _riscv_save_0 and _riscv_restore_0, and which could be converted
      to make use of a tail call.  These functions are then converted to the
      non save/restore tail call form.
      
      This should result in a code size reduction when compiling with -Os
      and with the -msave-restore flag.
      
      gcc/ChangeLog:
      
              * config.gcc: Add riscv-sr.o to extra_objs for riscv.
              * config/riscv/riscv-sr.c: New file.
              * config/riscv/riscv.c (riscv_reorg): New function.
              (TARGET_MACHINE_DEPENDENT_REORG): Define.
              * config/riscv/riscv.h (SIBCALL_REG_P): Define.
              (riscv_remove_unneeded_save_restore_calls): Declare.
              * config/riscv/t-riscv (riscv-sr.o): New build rule.
      
      gcc/testsuite/ChangeLog:
      
              * gcc.target/riscv/save-restore-2.c: New file.
              * gcc.target/riscv/save-restore-3.c: New file.
              * gcc.target/riscv/save-restore-4.c: New file.
              * gcc.target/riscv/save-restore-5.c: New file.
              * gcc.target/riscv/save-restore-6.c: New file.
              * gcc.target/riscv/save-restore-7.c: New file.
              * gcc.target/riscv/save-restore-8.c: New file.
      
      From-SVN: r277527
      Andrew Burgess committed
    • re PR tree-optimization/92163 (ICE: Segmentation fault (in bitmap_set_bit)) · 4b0ab0d9
      2019-10-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR tree-optimization/92163
      	* tree-ssa-dse.c (delete_dead_or_redundant_assignment): New param
      	need_eh_cleanup with default value NULL. Gate on need_eh_cleanup
      	before calling bitmap_set_bit.
      	(dse_optimize_redundant_stores): Pass global need_eh_cleanup to
      	delete_dead_or_redundant_assignment.
      	(dse_dom_walker::dse_optimize_stmt): Likewise.
      	* tree-ssa-dse.h (delete_dead_or_redundant_assignment): Adjust prototype.
      
      testsuite/
      	* gcc.dg/tree-ssa/pr92163.c: New test.
      
      From-SVN: r277525
      Prathamesh Kulkarni committed
    • re PR middle-end/91272 ([SVE] Use fully-masked loops for CLASTB reductions) · fa03d576
      2019-10-28  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR middle-end/91272
      	* tree-vect-stmts.c (vectorizable_condition): Support
      	EXTRACT_LAST_REDUCTION with fully-masked loops.
      
      testsuite/
      	* gcc.target/aarch64/sve/clastb_1.c: Add dg-scan.
      	* gcc.target/aarch64/sve/clastb_2.c: Likewise.
      	* gcc.target/aarch64/sve/clastb_3.c: Likewise.
      	* gcc.target/aarch64/sve/clastb_4.c: Likewise.
      	* gcc.target/aarch64/sve/clastb_5.c: Likewise.
      	* gcc.target/aarch64/sve/clastb_6.c: Likewise.
      	* gcc.target/aarch64/sve/clastb_7.c: Likewise.
      	* gcc.target/aarch64/sve/clastb_8.c: Likewise.
      
      From-SVN: r277524
      Prathamesh Kulkarni committed
    • re PR tree-optimization/92252 (ICE: Segmentation fault (in vect_stmt_to_vectorize)) · 96d9d162
      2019-10-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92252
      	* tree-vect-slp.c (vect_get_and_check_slp_defs): Adjust
      	STMT_VINFO_REDUC_IDX when swapping operands.
      
      	* gcc.dg/torture/pr92252.c: New testcase.
      
      From-SVN: r277517
      Richard Biener committed
    • re PR tree-optimization/92241 (ice in vect_mark_pattern_st mts, at tree-vect-patterns.c:5175) · 97c6bea8
      2019-10-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/92241
      	* tree-vect-loop.c (vect_fixup_scalar_cycles_with_patterns): When
      	we failed to update the reduction index do not use the pattern
      	stmts for the reduction chain.
      	(vectorizable_reduction): When the reduction chain is corrupt,
      	fail.
      	* tree-vect-patterns.c (vect_mark_pattern_stmts): Stop when we
      	fail to update the reduction chain.
      
      	* gcc.dg/torture/pr92241.c: New testcase.
      
      From-SVN: r277516
      Richard Biener committed
    • [C++ PATCH] simplify deferred parsing lexer · 14c835a0
      https://gcc.gnu.org/ml/gcc-patches/2019-10/msg01962.html
      
      We use an eof_token global variable as a sentinel on a deferred parse
      (such as in-class function definitions, or default args). This
      complicates retrieving the next token in certain places.
      
      As such deferred parses always nest properly and completely before
      resuming the outer lexer, we can simply morph the token after the
      deferred buffer into a CPP_EOF token and restore it afterwards. I
      finally got around to implementing it with this patch.
      
      One complication is that we have to change the discriminator for when
      the token's value is a tree. We can't look at the token's type because
      it might have been overwritten. I add a bool flag to the token
      (there's several spare bits), and use that. This does simplify the
      discriminator because we just check a single bit, rather than a set of
      token types.
      
      	* parser.h (struct cp_token): Drop {ENUM,BOOL}_BITFIELD C-ism.
      	Add tree_check_p flag, use as nested union discriminator.
      	(struct cp_lexer): Add saved_type & saved_keyword fields.
      	* parser.c (eof_token): Delete.
      	(cp_lexer_new_main): Always init last_token to last token of
      	buffer.
      	(cp_lexer_new_from_tokens): Overlay EOF token at end of range.
      	(cp_lexer_destroy): Restore token under the EOF.
      	(cp_lexer_previous_token_position): No check for eof_token here.
      	(cp_lexer_get_preprocessor_token): Clear tree_check_p.
      	(cp_lexer_peek_nth_token): Check CPP_EOF not eof_token.
      	(cp_lexer_consume_token): Assert not CPP_EOF, no check for
      	eof_token.
      	(cp_lexer_purge_token): Likewise.
      	(cp_lexer_purge_tokens_after): No check for EOF token.
      	(cp_parser_nested_name_specifier, cp_parser_decltype)
      	(cp_parser_template_id): Set tree_check_p.
      
      From-SVN: r277514
      Nathan Sidwell committed
    • tree-vect-loop.c (vect_create_epilog_for_reduction): Use STMT_VINFO_REDUC_IDX from the actual stmt. · e0c4f7fb
      2019-10-28  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use
      	STMT_VINFO_REDUC_IDX from the actual stmt.
      	(vect_transform_reduction): Likewise.
      	(vectorizable_reduction): Compute the reduction chain length,
      	do not recompute the reduction operand index.  Remove no longer
      	necessary restriction for condition reduction chains.
      
      From-SVN: r277513
      Richard Biener committed
    • re PR c/92249 (ICE in c_parser_gimple_compound_statement w/ GIMPLE testcases) · cb73e4e7
      2019-10-28  Richard Biener  <rguenther@suse.de>
      
      	PR c/92249
      	* gimple-parser.c (c_parser_parse_gimple_body): Make
      	current_bb the entry block initially to easier recover
      	from errors.
      	(c_parser_gimple_compound_statement): Adjust.
      
      From-SVN: r277512
      Richard Biener committed
    • re PR target/92225 (ice in gen_smaxv2di3, at config/i386/sse.md:12225) · bd7a559a
      	PR target/92225
      	* config/i386/sse.md (REDUC_SSE_SMINMAX_MODE): Use TARGET_SSE4_2
      	condition for V2DImode.
      
      testsuite/ChangeLog:
      
      	PR target/92225
      	* gcc.target/i386/pr92225.c: New test.
      
      From-SVN: r277510
      Uros Bizjak committed
    • sse.md (sse_cvtss2si<rex64namesuffix>_2): Remove %k operand modifier. · 6f86b8da
      	* config/i386/sse.md (sse_cvtss2si<rex64namesuffix>_2):
      	Remove %k operand modifier.
      	(*vec_extractv2df_1_sse): Remove %q operand modifier.
      
      From-SVN: r277509
      Uros Bizjak committed
    • Fix unroll-and-jam.c on 32bit · 5869faff
      where LIM interacts with foo10.  On 64bit LIM doesn't do the problematic
      change for whatever reason, but it seems better to disable LIM
      alltogether, which requires a minor change in the testcase.
      
      From-SVN: r277508
      Michael Matz committed
    • Move jump threading before reload · 216779db
      r266734 has introduced a new instance of jump threading pass in order to
      take advantage of opportunities that combine opens up.  It was perceived
      back then that it was beneficial to delay it after reload, since that
      might produce even more such opportunities.
      
      Unfortunately jump threading interferes with hot/cold partitioning.  In
      the code from PR92007, it converts the following
      
        +-------------------------- 2/HOT ------------------------+
        |                                                         |
        v                                                         v
      3/HOT --> 5/HOT --> 8/HOT --> 11/COLD --> 6/HOT --EH--> 16/HOT
                  |                               ^
                  |                               |
                  +-------------------------------+
      
      into the following:
      
        +---------------------- 2/HOT ------------------+
        |                                               |
        v                                               v
      3/HOT --> 8/HOT --> 11/COLD --> 6/COLD --EH--> 16/HOT
      
      This makes hot bb 6 dominated by cold bb 11, and because of this
      fixup_partitions makes bb 6 cold as well, which in turn makes EH edge
      6->16 a crossing one.  Not only can't we have crossing EH edges, we are
      also not allowed to introduce new crossing edges after reload in
      general, since it might require extra registers on some targets.
      
      Therefore, move the jump threading pass between combine and hot/cold
      partitioning.  Building SPEC 2006 and SPEC 2017 with the old and the new
      code indicates that:
      
      * When doing jump threading right after reload, 3889 edges are threaded.
      * When doing jump threading right after combine, 3918 edges are
        threaded.
      
      This means this change will not introduce performance regressions.
      
      gcc/ChangeLog:
      
      2019-10-28  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR rtl-optimization/92007
      	* cfgcleanup.c (thread_jump): Add an assertion that we don't
      	call it after reload if hot/cold partitioning has been done.
      	(class pass_postreload_jump): Rename to
      	pass_jump_after_combine.
      	(make_pass_postreload_jump): Rename to
      	make_pass_jump_after_combine.
      	* passes.def(pass_postreload_jump): Move before reload, rename
      	to pass_jump_after_combine.
      	* tree-pass.h (make_pass_postreload_jump): Rename to
      	make_pass_jump_after_combine.
      
      gcc/testsuite/ChangeLog:
      
      2019-10-28  Ilya Leoshkevich  <iii@linux.ibm.com>
      
      	PR rtl-optimization/92007
      	* g++.dg/opt/pr92007.C: New test (from Arseny Solokha).
      
      From-SVN: r277507
      Ilya Leoshkevich committed
    • re PR ipa/92242 (LTO ICE in ipa_get_cs_argument_count ipa-prop.h:598) · 5a0236f8
      
      	PR ipa/92242
      	* ipa-fnsummary.c (ipa_merge_fn_summary_after_inlining): Check
      	for missing EDGE_REF
      	* ipa-prop.c (update_jump_functions_after_inlining): Likewise.
      
      From-SVN: r277504
      Jan Hubicka committed
    • Fortran] OpenACC – libgomp/testsuite – use 'stop' and 'dg-do run' · ffbdd78a
              * testsuite/libgomp.oacc-fortran/abort-1.f90: Add 'dg-do run'.
              * testsuite/libgomp.oacc-fortran/abort-2.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/acc_on_device-1-1.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/acc_on_device-1-2.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/acc_on_device-1-3.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/lib-1.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/common-block-1.f90:
              Use 'stop' not abort().
              * testsuite/libgomp.oacc-fortran/common-block-2.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/common-block-3.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/data-1.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/data-2.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/data-5.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/dummy-array.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/gemm-2.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/gemm.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/host_data-2.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/host_data-3.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/host_data-4.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-collapse-3.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-collapse-4.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-independent.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-loop-1.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-map-1.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-parallel-loop-data-enter-exit.f95:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-1.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-2.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-3.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-loop-gang-6.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-vector-1.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-vector-2.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-worker-1.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-worker-2.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-worker-3.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-worker-4.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-worker-5.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-worker-6.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-private-vars-worker-7.f90:
              Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-reduction-1.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/lib-12.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/lib-13.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/lib-14.f90: Ditto.
              * testsuite/libgomp.oacc-fortran/kernels-acc-loop-reduction-2.f90:
              Likewise and also add 'dg-do run'.
              * testsuite/libgomp.oacc-fortran/kernels-acc-loop-reduction.f90:
              Ditto.
      
      From-SVN: r277503
      Tobias Burnus committed
    • Fortran] PR91863 - fix call to bind(C) with array descriptor · 1c027944
              PR fortran/91863
              * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Don't free data
              memory as that's done on the Fortran side.
              (gfc_conv_procedure_call): Handle void* pointers from
              gfc_conv_gfc_desc_to_cfi_desc.
      
              PR fortran/91863
              * gfortran.dg/bind-c-intent-out.f90: New.
      
      From-SVN: r277502
      Tobias Burnus committed
    • rs6000: Enable limited unrolling at -O2 · 6d099a76
      In PR88760, there are a few disscussion about improve or tune unroller for
      targets. And we would agree to enable unroller for small loops at O2 first.
      And we could see performance improvement(~10%) for below code:
      ```
        subroutine foo (i, i1, block)
          integer :: i, i1
          integer :: block(9, 9, 9)
          block(i:9,1,i1) = block(i:9,1,i1) - 10
        end subroutine foo
      
      ```
      This kind of code occurs a few times in exchange2 benchmark.
      
      Similar C code:
      ```
        for (i = 0; i < n; i++)
          arr[i] = arr[i] - 10;
      ```
      
      On powerpcle, for O2 , enable -funroll-loops and limit
      PARAM_MAX_UNROLL_TIMES=2 and PARAM_MAX_UNROLLED_INSNS=20, we can see >2%
      overall improvement for SPEC2017.
      
      This patch is only for rs6000 in which we see visible performance improvement.
      
      gcc/
      2019-10-25  Jiufu Guo  <guojiufu@linux.ibm.com>	    
      
      	PR tree-optimization/88760
      	* config/rs6000/rs6000-common.c (rs6000_option_optimization_table):
      	Enable -funroll-loops for -O2 and above.
      	* config/rs6000/rs6000.c (rs6000_option_override_internal): Set
      	PARAM_MAX_UNROLL_TIMES to 2 and PARAM_MAX_UNROLLED_INSNS to 20, and
      	do not turn on web and rngreg implicitly, if the unroller is not
      	explicitly enabled.
      	
      gcc.testsuite/
      2019-10-25  Jiufu Guo  <guojiufu@linux.ibm.com>
      
      	PR tree-optimization/88760
      	* gcc.target/powerpc/small-loop-unroll.c: New test.
      	* c-c++-common/tsan/thread_leak2.c: Update test.
      	* gcc.dg/pr59643.c: Update test.
      	* gcc.target/powerpc/loop_align.c: Update test.
      	* gcc.target/powerpc/ppc-fma-1.c: Update test.
      	* gcc.target/powerpc/ppc-fma-2.c: Update test.
      	* gcc.target/powerpc/ppc-fma-3.c: Update test.
      	* gcc.target/powerpc/ppc-fma-4.c: Update test.
      	* gcc.target/powerpc/pr78604.c: Update test.
      
      From-SVN: r277501
      Jiufu Guo committed
    • Daily bump. · cf20d00c
      From-SVN: r277499
      GCC Administrator committed
  3. 27 Oct, 2019 8 commits