Commit Graph

163267 Commits

Author SHA1 Message Date
Janus Weil
bf9197df81 re PR fortran/57160 (short-circuit IF only with -ffrontend-optimize)
2018-08-10  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/57160
	* invoke.texi (frontend-optimize): Mention short-circuiting.
	* options.c (gfc_post_options): Disable -ffrontend-optimize with -Og.
	* resolve.c (resolve_operator): Warn about short-circuiting only with
	-ffrontend-optimize.
	* trans-expr.c (gfc_conv_expr_op): Use short-circuiting operators only
	with -ffrontend-optimize. Without that flag, make sure that both
	operands are evaluated.

2018-08-10  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/57160
	* gfortran.dg/actual_pointer_function_1.f90: Fix invalid test case.
	* gfortran.dg/inline_matmul_23.f90: Add option "-ffrontend-optimize".
	* gfortran.dg/short_circuiting_2.f90: New test case.
	* gfortran.dg/short_circuiting_3.f90: New test case.

From-SVN: r263471
2018-08-10 16:08:53 +02:00
Martin Liska
8b9a5b5e0e Remove not needed __builtin_expect due to malloc predictor.
2018-08-10  Martin Liska  <mliska@suse.cz>

	* libsupc++/new_op.cc (new): Remove __builtin_expect as malloc
        predictor can handle that.
	* libsupc++/new_opa.cc: Likewise.
	* libsupc++/new_opnt.cc (new): Likewise.

From-SVN: r263470
2018-08-10 11:40:40 +00:00
Martin Liska
aa40590559 Fix wrongly removed line.
2018-08-10  Martin Liska  <mliska@suse.cz>

	* MAINTAINERS: Revert change in previous commit and
        join lines.

From-SVN: r263469
2018-08-10 11:38:12 +00:00
Martin Liska
04e2b41d41 Fix extra line in MAINTAINERS.
2018-08-10  Martin Liska  <mliska@suse.cz>

	* MAINTAINERS: Remove extra line.

From-SVN: r263468
2018-08-10 10:36:12 +00:00
Alexander Monakov
f80d6a178e i386: do not use SImode mul-highpart on 64-bit (PR 82418)
PR target/82418
	* config/i386/i386.md (<s>mul<mode>3_highpart): Use DWIH mode iterator
	instead of SWI48.

testsuite/
	* gcc.target/i386/pr82418.c: New test.

From-SVN: r263467
2018-08-10 13:13:37 +03:00
Martin Liska
1e9168b279 Introduce __builtin_expect_with_probability (PR target/83610).
2018-08-10  Martin Liska  <mliska@suse.cz>

        PR target/83610
	* builtin-types.def (BT_FN_LONG_LONG_LONG_DOUBLE): Add new
        function type.
	* builtins.c (expand_builtin_expect_with_probability):
        New function.
	(expand_builtin_expect_with_probability): New function.
	(build_builtin_expect_predicate): Add new argumnet probability
        for BUILT_IN_EXPECT_WITH_PROBABILITY.
	(fold_builtin_expect):
	(fold_builtin_2):
	(fold_builtin_3):
	* builtins.def (BUILT_IN_EXPECT_WITH_PROBABILITY):
	* builtins.h (fold_builtin_expect): Set new argument.
	* doc/extend.texi: Document __builtin_expect_with_probability.
	* doc/invoke.texi: Likewise.
	* gimple-fold.c (gimple_fold_call): Pass new argument.
	* ipa-fnsummary.c (find_foldable_builtin_expect): Handle
        also BUILT_IN_EXPECT_WITH_PROBABILITY.
	* predict.c (get_predictor_value): New function.
	(expr_expected_value): Add new argument probability. Assume
        that predictor and probability are always non-null.
	(expr_expected_value_1): Likewise.  For __builtin_expect and
        __builtin_expect_with_probability set probability.  Handle
        combination in binary expressions.
	(tree_predict_by_opcode): Simplify code by simply calling
        get_predictor_value.
	(pass_strip_predict_hints::execute): Add handling of
        BUILT_IN_EXPECT_WITH_PROBABILITY.
	* predict.def (PRED_BUILTIN_EXPECT_WITH_PROBABILITY): Add
        new predictor.
	* tree.h (DECL_BUILT_IN_P): New function.
2018-08-10  Martin Liska  <mliska@suse.cz>

        PR target/83610
	* gcc.dg/predict-17.c: New test.
	* gcc.dg/predict-18.c: New test.
	* gcc.dg/predict-19.c: New test.

From-SVN: r263466
2018-08-10 09:43:06 +00:00
Martin Liska
7a096965f6 Strip only selected predictors after early tree passes (PR tree-optimization/85799).
2018-08-10  Martin Liska  <mliska@suse.cz>

        PR tree-optimization/85799
	* passes.def: Add argument for pass_strip_predict_hints.
	* predict.c (class pass_strip_predict_hints): Add new argument
        early_p.
	(strip_predictor_early): New function.
	(pass_strip_predict_hints::execute): Call the function to
        strip predictors.
	(strip_predict_hints): New function.
	* predict.def: Fix comment.
2018-08-10  Martin Liska  <mliska@suse.cz>

        PR tree-optimization/85799
	* gcc.dg/pr85799.c: New test.

From-SVN: r263465
2018-08-10 09:31:51 +00:00
Thomas Preud'homme
d568f0b6db Clarify source of tm.texi to copy for GFDL grant
When tm.texi.in is updated in the source tree, the following message
gets displayed:

Verify that you have permission to grant a GFDL license for all
new text in tm.texi, then copy it to <gcc src dir>/gcc/doc/tm.texi.

Having been myself and some colleagues confused several time by that
message as to what tm.texi to copy, I think it would be clearer to
indicate the absolute path for the source as well. This patch achieves
that.

2018-08-10  Thomas Preud'homme  <thomas.preudhomme@linaro.org>

    gcc/
    * Makefile.in: Clarify which tm.texi to copy over to assert the
    right to grant a GFDL license for all.

From-SVN: r263464
2018-08-10 08:48:34 +00:00
Sebastian Huber
ee6ad3e788 libstdc++-v3: Have aligned_alloc() on Newlib
While building for Newlib, some configure checks must be hard coded.
The aligned_alloc() is supported since 2015 in Newlib.

libstdc++-v3/

	PR target/85904
	* configure.ac: Define HAVE_ALIGNED_ALLOC if building for
	Newlib.
	* configure: Regenerate.

From-SVN: r263461
2018-08-10 06:27:35 +00:00
GCC Administrator
f047d28abb Daily bump.
From-SVN: r263460
2018-08-10 00:16:29 +00:00
Jonathan Wakely
1fc9d0b0e4 Define aliases for containers using polymorphic_allocator
These aliases are placed in the top-level header, e.g. <vector> not
<bits/stl_vector.h>. This ensures that they refer to whichever of
std::vector or __debug::vector or __profile::vector is in use when the
header is included.

	* include/std/deque (std::pmr::deque): Declare alias.
	* include/std/forward_list (std::pmr::forward_list): Likewise.
	* include/std/list (std::pmr::list): Likewise.
	* include/std/map (std::pmr::map, std::pmr::multimap): Likewise.
	* include/std/regex (std::pmr::match_results, std::pmr::cmatch)
	(std::pmr::smatch, std::pmr::wcmatch, std::pmr::wsmatch): Likewise.
	* include/std/set (std::pmr::set, std::pmr::multiset): Likewise.
	* include/std/string (std::pmr::basic_string, std::pmr::string)
	(std::pmr::u16string, std::pmr::u32string, std::pmr::wstring):
	Likewise.
	* include/std/unordered_map (std::pmr::unordered_map)
	(std::pmr::unordered_multimap): Likewise.
	* include/std/unordered_set (std::pmr::unordered_set)
	(std::pmr::unordered_multiset): Likewise.
	* include/std/vector (std::pmr::vector): Likewise.
	* testsuite/21_strings/basic_string/types/pmr_typedefs.cc: New test.
	* testsuite/23_containers/deque/types/pmr_typedefs.cc: New test.
	* testsuite/23_containers/forward_list/pmr_typedefs.cc: New test.
	* testsuite/23_containers/list/pmr_typedefs.cc: New test.
	* testsuite/23_containers/map/pmr_typedefs.cc: New test.
	* testsuite/23_containers/multimap/pmr_typedefs.cc: New test.
	* testsuite/23_containers/multiset/pmr_typedefs.cc: New test.
	* testsuite/23_containers/set/pmr_typedefs.cc: New test.
	* testsuite/23_containers/unordered_map/pmr_typedefs.cc: New test.
	* testsuite/23_containers/unordered_multimap/pmr_typedefs.cc: New
	test.
	* testsuite/23_containers/unordered_multiset/pmr_typedefs.cc: New
	test.
	* testsuite/23_containers/unordered_set/pmr_typedefs.cc: New test.
	* testsuite/23_containers/vector/pmr_typedefs.cc: New test.
	* testsuite/28_regex/match_results/pmr_typedefs.cc: New test.

From-SVN: r263456
2018-08-10 00:25:53 +01:00
Jeff Law
093f71dbec m68k.c (m68k_adjust_decorated_operand): Remove unused variable.
* config/m68k/m68k.c (m68k_adjust_decorated_operand): Remove
	unused variable.

From-SVN: r263455
2018-08-09 11:18:43 -06:00
Jeff Law
568f6ad572 re PR middle-end/86897 (gcc.dg/uninit-suppress_2.c FAILs)
PR middle-end/86897
	* gcc.dg/uninit-suppress_2.c: Disable DOM.

From-SVN: r263454
2018-08-09 11:11:45 -06:00
Richard Earnshaw
cdaa7e324a Add missing PR to Nios fix for CVE-2017-5753
I nearly missed this patch for my accumulated back-porting list since
it didn't have the PR number in it.

Just adding it so that I can track things properly.  The original
commit landed as r263301.

From-SVN: r263453
2018-08-09 16:53:48 +00:00
Andreas Schwab
6b10fc37f7 m68k-protos.h (m68k_final_prescan_insn): Remove prototype.
* config/m68k/m68k-protos.h (m68k_final_prescan_insn): Remove
prototype.

From-SVN: r263452
2018-08-09 16:25:12 +00:00
Richard Sandiford
b8d5e148f6 Allow inner-loop reductions with variable-length vectors
While working on PR 86871, I noticed we were being overly restrictive
when handling variable-length vectors.  For:

  for (i : ...)
    {
      res = ...;
      for (j : ...)
        res op= ...;
      a[i] = res;
    }

we don't need a reduction operation (although we do for double
reductions like:

  res = ...;
  for (i : ...)
    for (j : ...)
      res op= ...;
  a[i] = res;

which must still be rejected).

2018-08-08  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-loop.c (vectorizable_reduction): Allow inner-loop
	reductions for variable-length vectors.

gcc/testsuite/
	* gcc.target/aarch64/sve/reduc_8.c: New test.

From-SVN: r263451
2018-08-09 16:03:25 +00:00
David Malcolm
56b61d7fc4 diagnostics: add line numbers to source (PR other/84889)
This patch adds a left margin to the lines of source (and annotations)
printed by diagnostic_show_locus, so that e.g. rather than:

test.c: In function 'test':
test.c:12:15: error: 'struct foo' has no member named 'm_bar'; did you mean 'bar'?
   return ptr->m_bar;
               ^~~~~
               bar

we print:

test.c: In function 'test':
test.c:12:15: error: 'struct foo' has no member named 'm_bar'; did you mean 'bar'?
12 |   return ptr->m_bar;
   |               ^~~~~
   |               bar

Similarly, for a multiline case (in C++ this time), this:

bad-binary-ops.C: In function 'int test_2()':
bad-binary-ops.C:26:4: error: no match for 'operator+' (operand types are 's' and 't')
   return (some_function ()
           ~~~~~~~~~~~~~~~~
    + some_other_function ());
    ^~~~~~~~~~~~~~~~~~~~~~~~

becomes:

bad-binary-ops.C: In function 'int test_2()':
bad-binary-ops.C:26:4: error: no match for 'operator+' (operand types are 's' and 't')
25 |   return (some_function ()
   |           ~~~~~~~~~~~~~~~~
26 |    + some_other_function ());
   |    ^~~~~~~~~~~~~~~~~~~~~~~~

I believe this slightly improves the readability of the output, in that it:
- distinguishes between the user's source code vs the annotation lines
  that we're adding (the underlinings and fix-it hints here)
- shows the line numbers in another place (potentially helpful for
  multiline diagnostics, where the user can see the line numbers directly,
  rather than have to figure them out relative to the caret: in the 2nd
  example, note how the diagnostic is reported at line 26, but the first
  line printed is actually line 25)

I'm not sure that this is the precise format we want to go with [1], but
I think it's an improvement over the status quo, and we're in stage 1
of gcc 9, so there's plenty of time to shake out issues.

I've turned it on by default; it can be disabled via
-fno-diagnostics-show-line-numbers (it's also turned off in the testsuite, to
avoid breaking numerous existing test cases).

[1] Some possible variants:
  - maybe just "LL|" rather than "LL | "
  - maybe ':' rather than '|'
  - maybe we should have some leading indentation, to better split up
    the diagnostics visually via the left-hand column
  - etc

gcc/ChangeLog:
	PR other/84889
	* common.opt (fdiagnostics-show-line-numbers): New option.
	* diagnostic-show-locus.c (class layout): Add fields
	"m_show_line_numbers_p" and "m_linenum_width";
	(num_digits): New function.
	(test_num_digits): New function.
	(layout::layout): Initialize new fields.  Update m_x_offset
	logic to handle any left margin.
	(layout::print_source_line): Print line number when requested.
	(layout::start_annotation_line): New member function.
	(layout::print_annotation_line): Call it.
	(layout::print_leading_fixits): Likewise.
	(layout::print_trailing_fixits): Likewise.  Update calls to
	move_to_column for new parameter.
	(layout::get_x_bound_for_row): Add "add_left_margin" param and use
	it to potentially call start_annotation_line.
	(layout::show_ruler): Call start_annotation_line.
	(selftest::test_line_numbers_multiline_range): New selftest.
	(selftest::diagnostic_show_locus_c_tests): Call test_num_digits
	and selftest::test_line_numbers_multiline_range.
	* diagnostic.c (diagnostic_initialize): Initialize
	show_line_numbers_p.
	* diagnostic.h (struct diagnostic_context): Add field
	"show_line_numbers_p".
	* doc/invoke.texi (Diagnostic Message Formatting Options): Add
	-fno-diagnostics-show-line-numbers.
	* dwarf2out.c (gen_producer_string): Add
	OPT_fdiagnostics_show_line_numbers to the ignored options.
	* lto-wrapper.c (merge_and_complain): Likewise to the "pick
	one setting" options.
	(append_compiler_options): Likewise to the dropped options.
	(append_diag_options): Likewise to the passed-on options.
	* opts.c (common_handle_option): Handle the new option.
	* toplev.c (general_init): Set up global_dc->show_line_numbers_p.

gcc/testsuite/ChangeLog:
	PR other/84889
	* gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers.c: New
	test.
	* gcc.dg/plugin/diagnostic-test-show-locus-color-line-numbers.c:
	New test.
	* gcc.dg/plugin/plugin.exp (plugin_test_list): Add the new tests.
	* lib/prune.exp: Add -fno-diagnostics-show-line-numbers to
	TEST_ALWAYS_FLAGS.

From-SVN: r263450
2018-08-09 15:32:13 +00:00
Kelvin Nilsen
f4b905f010 extend.texi (PowerPC AltiVec Built-in Functions Available on ISA 2.07): Correct spelling of bcdsub to be __builtin_bcdsub.
gcc/ChangeLog:

2018-08-09  Kelvin Nilsen  <kelvin@gcc.gnu.org>

	* doc/extend.texi (PowerPC AltiVec Built-in Functions Available on
	ISA 2.07): Correct spelling of bcdsub to be __builtin_bcdsub.  Add
	third argument of type "const signed char" to descriptions of
	__builtin_bcdadd, __builtin_bcdadd_lt, __builtin_bcdadd_eq,
	__builtin_bcdadd_gt, __builtin_bcdadd_ov, __builtin_bcdsub,
	__builtin_bcdsub_lt, __builtin_bcdsub_eq, __builtin_bcdsub_gt,
	__builtin_bcdsub_ov functions.

From-SVN: r263449
2018-08-09 15:01:55 +00:00
Richard Sandiford
3dec9a89d4 Restore flow_bb_inside_loop_p tests (PR 86858)
The series to remove vinfo_for_stmt also removed tests of
flow_bb_inside_loop_p if the call was simply testing whether the
statement was in the vectorisation region.  I'd tried to keep calls
that were testing whether the statement was in a particular loop
(inner or outer), but messed up in vect_is_simple_reduction and
removed calls that were actually needed.  This patch restores them.

I double-checked the other removed calls and I think these are
the only ones affected.

2018-08-08  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR tree-optimization/86858
	* tree-vect-loop.c (vect_is_simple_reduction): Restore
	flow_bb_inside_loop_p calls.

gcc/testsuite/
	PR tree-optimization/86858
	* gcc.dg/vect/pr86858.c: New test.

From-SVN: r263448
2018-08-09 14:45:02 +00:00
Richard Sandiford
4beb66421f Fix invalid assumption in vect_transform_stmt (PR 86871)
The handling of outer-loop uses of inner-loop definitions assumed
that anything that wasn't a PHI would be a gassign.  It's also
possible for it to be a gcall.

2018-08-08  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR tree-optimization/86871
	* tree-vect-stmts.c (vect_transform_stmt): Use gimple_get_lhs
	instead of gimple_assign_lhs.

gcc/testsuite/
	PR tree-optimization/86871
	* gcc.dg/vect/pr86871.c: New test.

From-SVN: r263447
2018-08-09 14:37:24 +00:00
Richard Earnshaw
16621f0de3 aarch64 - PR target/86887 Fix missing register constraints in carryin patterns
Some of the carryin insn patterns are missing a register constraint.
That means that the register allocator can pick practically anything
to hold that value, including memory locations, or registers of the
wrong class.

	PR target/86887
	* config/aarch64/aarch64.md (add<mode>3_carryinC_zero): Add missing
	register constraint to operand 0.
	(add<mode>3_carryinC): Likewise.
	(add<mode>3_carryinV_zero, add<mode>3_carryinV): Likewise.

From-SVN: r263446
2018-08-09 13:39:17 +00:00
Paolo Carlini
40c27f7d97 p784.C: Add -fpermissive.
2018-08-09  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.old-deja/g++.mike/p784.C: Add -fpermissive.

From-SVN: r263445
2018-08-09 11:49:26 +00:00
Martin Liska
35cf9fd028 Remove extra line in common.opt (PR c/86895).
2018-08-09  Martin Liska  <mliska@suse.cz>

        PR c/86895
	* common.opt: Remove extra line.

From-SVN: r263444
2018-08-09 10:37:02 +00:00
Andreas Krebbel
be03e78511 S/390: Fix target attribute tests
These broke after removing G5 and G6 CPUs from the processor
enumeration.

gcc/testsuite/ChangeLog:

2018-08-09  Andreas Krebbel  <krebbel@linux.ibm.com>

	* gcc.target/s390/target-attribute/tattr-arch-tune-1.c: Decrement
	arch and tune numbers by 2.
	* gcc.target/s390/target-attribute/tattr-arch-tune-2.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-1.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-10.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-11.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-12.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-13.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-14.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-15.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-16.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-17.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-18.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-19.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-2.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-20.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-21.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-22.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-23.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-24.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-25.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-26.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-27.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-28.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-29.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-3.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-30.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-31.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-32.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-4.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-5.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-6.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-7.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-8.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m31-9.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-1.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-10.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-11.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-12.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-13.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-14.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-15.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-16.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-17.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-18.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-19.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-2.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-20.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-21.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-22.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-23.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-24.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-25.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-26.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-27.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-28.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-29.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-3.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-30.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-31.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-32.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-33.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-4.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-5.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-6.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-7.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-8.c: Likewise.
	* gcc.target/s390/target-attribute/tattr-m64-9.c: Likewise.

From-SVN: r263443
2018-08-09 08:47:39 +00:00
Martin Liska
874ffe9e20 Fix typos in params.def.
2018-08-09  Martin Liska  <mliska@suse.cz>

	* params.def (PARAM_ALIGN_LOOP_ITERATIONS): Remove double dots
        at the end of a line, make first letter capital and end up
        a sentence with a dot.
	(PARAM_LOOP_INTERCHANGE_STRIDE_RATIO): Likewise.
	(PARAM_LOOP_BLOCK_TILE_SIZE): Likewise.
	(PARAM_GRAPHITE_MAX_NB_SCOP_PARAMS): Likewise.
	(PARAM_GRAPHITE_MAX_ARRAYS_PER_SCOP): Likewise.
	(PARAM_MAX_ISL_OPERATIONS): Likewise.
	(PARAM_GRAPHITE_ALLOW_CODEGEN_ERRORS): Likewise.
	(PARAM_PROFILE_FUNC_INTERNAL_ID): Likewise.
	(PARAM_INDIR_CALL_TOPN_PROFILE): Likewise.
	(PARAM_SLP_MAX_INSNS_IN_BB): Likewise.
	(PARAM_IPA_CP_EVAL_THRESHOLD): Likewise.
	(PARAM_IPA_CP_RECURSION_PENALTY): Likewise.
	(PARAM_IPA_CP_SINGLE_CALL_PENALTY): Likewise.
	(PARAM_IPA_CP_LOOP_HINT_BONUS): Likewise.
	(PARAM_IPA_CP_ARRAY_INDEX_HINT_BONUS): Likewise.
	(PARAM_TREE_REASSOC_WIDTH): Likewise.
	(PARAM_HSA_GEN_DEBUG_STORES): Likewise.
	(PARAM_MAX_SPECULATIVE_DEVIRT_MAYDEFS): Likewise.
	(PARAM_MAX_VRP_SWITCH_ASSERTIONS): Likewise.

From-SVN: r263442
2018-08-09 08:08:44 +00:00
Andreas Krebbel
0b06c9a6da S/390: Fix PR84332 ICE with stack clash protection
Our implementation of the stack probe requires the probe interval to
be used as displacement in an address operand.  The maximum probe
interval currently is 64k.  This would exceed short displacements.
Trim that value down to 4k if that happens.  This might result in too
many probes being generated only on the oldest supported machine level
z900.

gcc/ChangeLog:

2018-08-09  Andreas Krebbel  <krebbel@linux.ibm.com>

	PR target/84332
	* config/s390/s390.c (s390_option_override_internal): Reduce the
	stack-clash-protection-probe-interval param if it would be too big
	for z900.

gcc/testsuite/ChangeLog:

2018-08-09  Andreas Krebbel  <krebbel@linux.ibm.com>

	PR target/84332
	* gcc.target/s390/pr84332.c: New testcase.

From-SVN: r263441
2018-08-09 07:06:23 +00:00
GCC Administrator
a0de11f47f Daily bump.
From-SVN: r263439
2018-08-09 00:16:31 +00:00
François Dumont
29a9c26c55 2018-08-08 François Dumont <fdumont@gcc.gnu.org>
* include/bits/stl_algo.h
	(__rotate(_Ite, _Ite, _Ite, forward_iterator_tag))
	(__rotate(_Ite, _Ite, _Ite, bidirectional_iterator_tag))
	(__rotate(_Ite, _Ite, _Ite, random_access_iterator_tag)): Move code duplication...
	(rotate(_Ite, _Ite, _Ite)): ...here.
	(__stable_partition_adaptive(_FIt, _FIt, _Pred, _Dist, _Pointer, _Dist)):
	Simplify rotate call.
	(__rotate_adaptive(_BIt1, _BIt1, _BIt1, _Dist, _Dist, _Bit2, _Dist)):
	Likewise.
	(__merge_without_buffer(_BIt, _BIt, _BIt, _Dist, _Dist, _Comp)):
	Likewise.

From-SVN: r263433
2018-08-08 20:28:21 +00:00
Andreas Schwab
ede9446c26 m68k: handle more cases of TLS symbols with offset
PR target/46179
* config/m68k/m68k.h (FINAL_PRESCAN_INSN): Don't define.
* config/m68k/m68k.c (handle_move_double): Don't call
m68k_final_prescan_insn.
(m68k_adjust_decorated_operand): Renamed from
m68k_final_prescan_insn, remove first and third operand and
simplify.
(print_operand): Call it.
(print_operand_address): Call it.

PR target/46179
* gcc.target/m68k/tls-dimode.c: New file.

From-SVN: r263432
2018-08-08 20:01:26 +00:00
Nathan Sidwell
f10a91352f [PATCH] line-map include-from representation
https://gcc.gnu.org/ml/gcc-patches/2018-08/msg00554.html
	Make linemap::included_from a location
	libcpp/
	* include/line-map.h (struct line_map_ordinary): Replace
	included_from map index with included_at source_location.
	(ORDINARY_MAP_INCLUDER_FILE_INDEX): Delete.
	(LAST_SOURCE_LINE_LOCATION): Delete.
	(LAST_SOURCE_LINE, LAST_SOURCE_COLUMN): Delete.
	(linemap_included_from): New.
	(linemap_included_from_linemap): Declare.
	(MAIN_FILE_P): Adjust.
	* line-map.c (linemap_included_from_linemap): New.
	(lonemap_check_files_exited): Use linemap_included_at.
	(linemap_add): Adjust inclusion setting.
	(linemap_dump, linemap_dump_location): Adjust.
	* directives.c (do_linemarker): Use linemap_included_at.
	gcc/
	* diagnostic.c (diagnostic_report_current_module): Use
	linemap_included_from & linemap_included_from_linemap.
	gcc/c-family/
	* c-common.c (try_to_locate_new_include_inertion_point): Use
	linemap_included_from_linemap.
	* c-lex.c (fe_file_change): Use linemap_included_from.
	* c-ppoutput.c (pp_file_change): Likewise.
	gcc/fortran/
	* cpp.c (cb_file_change): Use linemap_included_from.
	gcc/testsuite/
	* c-c++-common/inc-from-1a.h, c-c++-common/inc-from-1b.h,
	c-c++-common/inc-from-1.c: New

From-SVN: r263429
2018-08-08 18:13:00 +00:00
Jonathan Wakely
a801991954 Prevent internal aligned_alloc clashing with libc version
If configure fails to detect aligned_alloc we will try to define our
own in new_opa.cc but that could clash with the libcversion in
<stdlib.h>. Use a namespace to keep them distinct.

	* libsupc++/new_opa.cc (aligned_alloc): Declare inside namespace to
	avoid clashing with an ::aligned_alloc function that was not detected
	by configure.

From-SVN: r263409
2018-08-08 16:16:43 +01:00
Tom de Vries
8e09a12f01 [libgomp, nvptx] Fall back to cuLinkAddData/cuLinkCreate if _v2 not found
Cuda driver api functions cuLinkAddData and cuLinkCreate are available starting
version 5.5.  In version 6.5, they are remapped onto _v2 versions.

The dlopen interface of the libgomp nvptx plugin uses the _v2 versions, so it
won't work with a cuda driver with driver api version lower than 6.5.

This patch fixes the problem by testing for the presence of the _v2 versions,
and falling back to the original versions in case of absence of the _v2
versions.

Build on x86_64 with nvptx accelerator and reg-tested libgomp, both with and
without --without-cuda-driver.

2018-08-08  Tom de Vries  <tdevries@suse.de>

	* plugin/cuda-lib.def (cuLinkAddData_v2, cuLinkCreate_v2): Declare using
	CUDA_ONE_CALL_MAYBE_NULL.
	* plugin/plugin-nvptx.c (cuLinkAddData, cuLinkCreate): Undef and declare.
	(cuLinkAddData_v2, cuLinkCreate_v2): Declare.
	(link_ptx): Fall back to cuLinkAddData/cuLinkCreate if the _v2 versions
	are not found.

From-SVN: r263408
2018-08-08 14:26:37 +00:00
Tom de Vries
cedd9bd016 [libgomp, nvptx] Allow cuGetErrorString to be NULL
Cuda driver api function cuGetErrorString is available in version 6.0 and
higher.

Currently, when the driver that is used does not contain this function, the
libgomp nvptx plugin will not build (PLUGIN_NVPTX_DYNAMIC == 0) or run
(PLUGIN_NVPTX_DYNAMIC == 1).

This patch fixes this problem by testing for the presence of the function, and
handling absence.

Build on x86_64 with nvptx accelerator and reg-tested libgomp, both with and
without --without-cuda-driver.

2018-08-08  Tom de Vries  <tdevries@suse.de>

	* plugin/cuda-lib.def (cuGetErrorString): Use CUDA_ONE_CALL_MAYBE_NULL.
	* plugin/plugin-nvptx.c (cuda_error): Handle if cuGetErrorString is not
	present.

From-SVN: r263407
2018-08-08 14:26:28 +00:00
Tom de Vries
b113af959c [libgomp, nvptx] Remove hard-coded const in nvptx_open_device
CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR is defined in cuda driver
api version 6.0 and higher.

Currently nvptx_open_device uses a hard-coded constant instead.

This patch fixes that by:
- defining CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR to the hardcoded
  constant at toplevel, if not present in cuda.h, and
- using CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR in nvptx_open_device

Build on x86_64 with nvptx accelerator and reg-tested libgomp.

2018-08-08  Tom de Vries  <tdevries@suse.de>

	* plugin/plugin-nvptx.c
	(CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR): Define.
	(nvptx_open_device): Use
	CU_DEVICE_ATTRIBUTE_MAX_REGISTERS_PER_MULTIPROCESSOR.

From-SVN: r263406
2018-08-08 14:26:19 +00:00
Tom de Vries
94767dacea [libgomp, nvptx] Note that cuGetErrorString is in CUDA_VERSION >= 6000
Cuda driver api function cuGetErrorString is available in version 6.0 and
higher.

This patch:
- removes a comment saying the declaration is not available in cuda.h 6.0
- fixes the presence test to use CUDA_VERSION < 6000
- moves the declaration to toplevel

Build on x86_64 with nvptx accelerator and reg-tested libgomp.

2018-08-08  Tom de Vries  <tdevries@suse.de>

	* plugin/plugin-nvptx.c (cuda_error): Move declaration of cuGetErrorString ...
	(cuGetErrorString): ... here.  Guard with CUDA_VERSION < 6000.

From-SVN: r263405
2018-08-08 14:26:10 +00:00
Hongbo Zhang
dc878fea7a [AArch64] Add HXT Phecda core support
HXT semiconductor's CPU core Phecda, as a variant of Qualcomm qdf24xx,
reuses the same tuning structure and pipeline with it.

Applied on behalf of: Hongbo Zhang <hongbo.zhang@linaro.org>

	* config/aarch64/aarch64-cores.def: Add phecda core.
	* config/aarch64/aarch64-tune.md: Regenerate.
	* doc/invoke.texi: Add phecda core.

From-SVN: r263404
2018-08-08 14:23:59 +00:00
Jonathan Wakely
2e9dae0456 Fix Docbook markup for table entry
* doc/xml/manual/using.xml: Fix markup for empty table entry.
	* doc/html/*: Regenerate.

From-SVN: r263401
2018-08-08 14:37:24 +01:00
Jonathan Wakely
c0d57e63bb Add missing <experimental/numeric> header to docs
* doc/xml/manual/using.xml: Add missing header to table and fix typo.
	* doc/html/*: Regenerate.

From-SVN: r263398
2018-08-08 14:29:25 +01:00
Jonathan Wakely
d3f3c68099 PR libstdc++/86597 directory_entry observers should clear error_code
PR libstdc++/86597
	* include/bits/fs_dir.h (directory_entry::_M_file_type(error_code&)):
	Clear error_code when cached type is used.
	* testsuite/27_io/filesystem/directory_entry/86597.cc: New test.

From-SVN: r263397
2018-08-08 14:09:19 +01:00
Andreas Krebbel
9f3c21d621 S/390: Fix PR85295
gcc/ChangeLog:

2018-08-08  Andreas Krebbel  <krebbel@linux.ibm.com>

	PR target/85295
	* config/s390/constraints.md ("NxHD0", "NxSD0"): New constraint
	definitions.
	* config/s390/s390.md ("movti"): Add more alternatives for
	constant to GPR copies.

gcc/testsuite/ChangeLog:

2018-08-08  Andreas Krebbel  <krebbel@linux.ibm.com>

	PR target/85295
	* gcc.target/s390/TI-constants-lra.c: New testcase.
	* gcc.target/s390/TI-constants-nolra.c: New testcase.

From-SVN: r263396
2018-08-08 12:38:51 +00:00
Andreas Krebbel
0ff3dcd61a S/390: Fix whitespace problems in the backend
2018-08-08  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/s390.c: Fix whitespace damage throughout the file.
	* config/s390/s390.h: Likewise.
	* config/s390/tpf.h: Likewise.

From-SVN: r263395
2018-08-08 11:35:45 +00:00
Ilya Leoshkevich
8cc6307c88 S/390: Remove TARGET_CPU_ZARCH
TARGET_CPU_ZARCH allowed to distinguish between g5/g6 and newer
machines.  Since the former are now gone, we can assume that
TARGET_CPU_ZARCH is always true.  As a side-effect, branch splitting
is now completely gone.  Some parts of literal pool splitting are also
gone, but it's still there: we need to support it because floating
point and vector instructions still cannot use relative addressing.

gcc/ChangeLog:

2018-08-08  Ilya Leoshkevich  <iii@linux.ibm.com>

	* config/s390/s390.c (s390_loadrelative_operand_p):
        Remove TARGET_CPU_ZARCH usages.
	(s390_rtx_costs): Likewise.
	(s390_legitimate_constant_p): Likewise.
	(s390_cannot_force_const_mem): Likewise.
	(legitimate_reload_constant_p): Likewise.
	(s390_preferred_reload_class): Likewise.
	(legitimize_pic_address): Likewise.
	(legitimize_tls_address): Likewise.
	(s390_split_branches): Removed.
	(s390_add_execute): Removed.
	(s390_dump_pool): Remove TARGET_CPU_ZARCH usages.
	(s390_mainpool_start): Likewise.
	(s390_mainpool_finish): Likewise.
	(s390_mainpool_cancel): Removed.
	(s390_chunkify_start): Remove TARGET_CPU_ZARCH usages.
	(s390_chunkify_cancel): Likewise.
	(s390_return_addr_rtx): Likewise.
	(s390_register_info): Remove split_branches_pending_p uages.
	(s390_optimize_register_info): Likewise.
	(s390_init_frame_layout): Remove TARGET_CPU_ZARCH and
        split_branches_pending_p usages.
	(s390_can_eliminate): Remove TARGET_CPU_ZARCH usages.
	(s390_load_got): Likewise.
	(s390_expand_split_stack_prologue): Likewise.
	(output_asm_nops): Likewise.
	(s390_function_profiler): Likewise.
	(s390_emit_call): Likewise.
	(s390_conditional_register_usage): Likewise.
	(s390_optimize_prologue): Likewise.
	(s390_reorg): Remove TARGET_CPU_ZARCH and
        split_branches_pending_p usages.
	(s390_option_override_internal): Remove TARGET_CPU_ZARCH
        usages.
	(s390_output_indirect_thunk_function): Likewise.
	* config/s390/s390.h (TARGET_CPU_ZARCH): Removed.
	(TARGET_CPU_ZARCH_P): Removed.
	(struct machine_function): Remove split_branches_pending_p.
	* config/s390/s390.md: Remove TARGET_CPU_ZARCH usages.

From-SVN: r263394
2018-08-08 11:25:31 +00:00
Ilya Leoshkevich
52d4aa4fcf S/390: Remove support for g5 and g6 machines
g5 and g6 were deprecated since gcc 6.1.0 (commit 3bd8520f).

gcc/ChangeLog:

2018-08-08  Ilya Leoshkevich  <iii@linux.ibm.com>

	* common/config/s390/s390-common.c (processor_flags_table):
        Remove flags.
	* config.gcc: Remove with_arch/with_tune support.
	* config/s390/2064.md: Remove cpu attribute comparisons.
	* config/s390/driver-native.c (s390_host_detect_local_cpu):
        Remove MTN.
	* config/s390/linux.h (ASM_SPEC):
        Remove -march support.
	* config/s390/s390-c.c (s390_cpu_cpp_builtins_internal):
        Use a table to get an arch level.
	* config/s390/s390-opts.h (enum processor_type):
        Remove enum values.
	* config/s390/s390.c
        (processor_table): Remove entries, add arch_level values.
        (s390_issue_rate): Remove cases.
        (s390_option_override): Adjust
        s390_option_override_internal() call.
	(s390_option_override_internal): Remove deprecation warning.
        (s390_valid_target_attribute_tree): Adjust
        s390_option_override_internal() call.
	* config/s390/s390.h (struct s390_processor):
        Share with s390-c.c, add arch_level field.
	* config/s390/s390.md:
        Remove occurrences in cpu attribute.
	* config/s390/s390.opt: Remove -march/-mtune support.
	* config/s390/tpf.h (ASM_SPEC): Remove -march support.
	* doc/invoke.texi: Remove deprecation warning.

gcc/testsuite/ChangeLog:

2018-08-08  Ilya Leoshkevich  <iii@linux.ibm.com>

	* gcc.target/s390/hotpatch-8.c: Remove.
	* gcc.target/s390/hotpatch-9.c: Remove.
	* gcc.target/s390/mnop-mcount-m31-fpic.c: Remove.
	* gcc.target/s390/mnop-mcount-m31.c: Remove.

From-SVN: r263393
2018-08-08 10:55:56 +00:00
Jakub Jelinek
e408261123 P0595R1 - is_constant_evaluated
P0595R1 - is_constant_evaluated
cp/
	* cp-tree.h (enum cp_built_in_function): New.
	(maybe_constant_init): Add pretend_const_required argument.
	* typeck2.c (store_init_value): Pass true as new argument to
	maybe_constant_init.
	* constexpr.c (constexpr_fn_retval): Check also DECL_BUILT_IN_CLASS
	for BUILT_IN_UNREACHABLE.
	(struct constexpr_ctx): Add pretend_const_required field.
	(cxx_eval_builtin_function_call): Use DECL_IS_BUILTIN_CONSTANT_P
	macro.  Handle CP_BUILT_IN_IS_CONSTANT_EVALUATED.  Check also
	DECL_BUILT_IN_CLASS for BUILT_IN_UNREACHABLE.
	(cxx_eval_outermost_constant_expr): Add pretend_const_required
	argument, initialize pretend_const_required field in ctx.  If the
	result is TREE_CONSTANT and non_constant_p, retry with
	pretend_const_required false if it was true.
	(is_sub_constant_expr): Initialize pretend_const_required_field in
	ctx.
	(cxx_constant_value): Pass true as pretend_const_required to
	cxx_eval_outermost_constant_expr.
	(maybe_constant_value): Pass false as pretend_const_required to
	cxx_eval_outermost_constant_expr.
	(fold_non_dependent_expr): Likewise.
	(maybe_constant_init_1): Add pretend_const_required argument, pass it
	down to cxx_eval_outermost_constant_expr.  Pass !allow_non_constant
	instead of false as strict to cxx_eval_outermost_constant_expr.
	(maybe_constant_init): Add pretend_const_required argument, pass it
	down to maybe_constant_init_1.
	(cxx_constant_init): Pass true as pretend_const_required to
	maybe_constant_init_1.
	* cp-gimplify.c (cp_gimplify_expr): Handle CALL_EXPRs to
	CP_BUILT_IN_IS_CONSTANT_EVALUATED.
	(cp_fold): Don't fold CP_BUILT_IN_IS_CONSTANT_EVALUATED calls.
	* decl.c: Include langhooks.h.
	(cxx_init_decl_processing): Register __builtin_is_constant_evaluated
	built-in.
	* tree.c (builtin_valid_in_constant_expr_p): Return true for
	CP_BUILT_IN_IS_CONSTANT_EVALUATED.
	* pt.c (declare_integer_pack): Initialize DECL_FUNCTION_CODE.
testsuite/
	* g++.dg/cpp2a/is-constant-evaluated1.C: New test.

From-SVN: r263392
2018-08-08 11:00:51 +02:00
Jakub Jelinek
5e539332c4 re PR c++/86836 (internal compiler error on structured bindings with shadow parameter on templated function)
PR c++/86836
	* pt.c (tsubst_expr): For structured bindings, call tsubst_decomp_names
	before tsubst_init, not after it.

	* g++.dg/cpp1z/decomp46.C: New test.

From-SVN: r263391
2018-08-08 10:32:51 +02:00
Jakub Jelinek
bf533db805 re PR c++/86738 (gcc 8.2: Internal compiler error memcpy)
PR c++/86738
	* constexpr.c (cxx_eval_binary_expression): For arithmetics involving
	NULL pointer set *non_constant_p to true.
	(cxx_eval_component_reference): For dereferencing of a NULL pointer,
	set *non_constant_p to true and return t.

	* g++.dg/opt/pr86738.C: New test.

From-SVN: r263390
2018-08-08 10:31:40 +02:00
Luis Machado
e75bc10e68 [AArch64, Falkor] Switch to using Falkor-specific vector costs.
The adjusted vector costs give Falkor a reasonable boost in performance for FP
benchmarks (both CPU2017 and CPU2006) and doesn't change INT benchmarks that
much. There are some regressions that will be investigated as follow on work.

Numbers from the CI run:

CPU2017:

(R) 605.mcf_s: -1.8%
(R) 620.omnetpp_s: -2%
    623.xalancbmk_s: 2%
    654.roms_s: 7%

(R) INT mean: -0.09%
    FP mean: 0.70%

CPU2006:

(R) 429.mc: -5%
(R) 471.omnetpp: -9.5% (potentially noise/fluctuations)
    483.xalancbmk: 6.02%
    410.bwaves: 5.03%
    433.milc: 2%
    434.zeusmp: 10.5%
(R) 436.cactusADM: -12.75%
    437.leslie3d: 5.94%
(R) 453.povray: -0.82%
    459.GemsFDTD: 16.87%
    465.tonto: 1%

(R) INT mean: -0.79%
    FP mean: 1.54%

gcc/ChangeLog:

2018-08-08  Luis Machado  <luis.machado@linaro.org>

	* config/aarch64/aarch64.c (qdf24xx_vector_cost): New static global.
	(qdf24xx_tunings): Set vector cost structure to qdf24xx_vector_cost.

From-SVN: r263389
2018-08-08 07:54:14 +00:00
Luis Machado
31508b3921 [aarch64] Adjust Falkor's sign extend reg+reg address cost
Adjust Falkor's register_sextend cost from 4 to 3.  This fixes a testsuite
failure in gcc.target/aarch64/extend.c:ldr_sxtw where GCC was generating
a sbfiz instruction rather than a load with sign extension.

No performance changes.

gcc/ChangeLog:

2018-08-08  Luis Machado  <luis.machado@linaro.org>

	* config/aarch64/aarch64.c (qdf24xx_addrcost_table)
	<register_sextend>: Set to 3.

From-SVN: r263388
2018-08-08 07:45:11 +00:00
GCC Administrator
8a1d72375d Daily bump.
From-SVN: r263387
2018-08-08 00:16:28 +00:00
Cesar Philippidis
1972d61572 [OpenACC] cleanup trans-stmt.h
gcc/fortran/
	* trans-stmt.h: Remove stale reference to trans-openacc.c.

From-SVN: r263372
2018-08-07 15:18:36 -07:00