Commit Graph

173352 Commits

Author SHA1 Message Date
Lewis Hyatt
ee9256409f Byte vs column awareness for diagnostic-show-locus.c (PR 49973)
contrib/ChangeLog

2019-12-09  Lewis Hyatt  <lhyatt@gmail.com>

	PR preprocessor/49973
	* unicode/from_glibc/unicode_utils.py: Support script from
	glibc (commit 464cd3) to extract character widths from Unicode data
	files.
	* unicode/from_glibc/utf8_gen.py: Likewise.
	* unicode/UnicodeData.txt: Unicode v. 12.1.0 data file.
	* unicode/EastAsianWidth.txt: Likewise.
	* unicode/PropList.txt: Likewise.
	* unicode/gen_wcwidth.py: New utility to generate
	libcpp/generated_cpp_wcwidth.h with help from the glibc support
	scripts and the Unicode data files.
	* unicode/unicode-license.txt: Added.
	* unicode/README: New explanatory file.

libcpp/ChangeLog

2019-12-09  Lewis Hyatt  <lhyatt@gmail.com>

	PR preprocessor/49973
	* generated_cpp_wcwidth.h: New file generated by
	../contrib/unicode/gen_wcwidth.py, supports new cpp_wcwidth function.
	* charset.c (compute_next_display_width): New function to help
	implement display columns.
	(cpp_byte_column_to_display_column): Likewise.
	(cpp_display_column_to_byte_column): Likewise.
	(cpp_wcwidth): Likewise.
	* include/cpplib.h (cpp_byte_column_to_display_column): Declare.
	(cpp_display_column_to_byte_column): Declare.
	(cpp_wcwidth): Declare.
	(cpp_display_width): New function.

gcc/ChangeLog

2019-12-09  Lewis Hyatt  <lhyatt@gmail.com>

	PR preprocessor/49973
	* input.c (location_compute_display_column): New function to help with
	multibyte awareness in diagnostics.
	(test_cpp_utf8): New self-test.
	(input_c_tests): Call the new test.
	* input.h (location_compute_display_column): Declare.
	* diagnostic-show-locus.c: Pervasive changes to add multibyte awareness
	to all classes and functions.
	(enum column_unit): New enum.
	(class exploc_with_display_col): New class.
	(class layout_point): Convert m_column member to array m_columns[2].
	(layout_range::contains_point): Add col_unit argument.
	(test_layout_range_for_single_point): Pass new argument.
	(test_layout_range_for_single_line): Likewise.
	(test_layout_range_for_multiple_lines): Likewise.
	(line_bounds::convert_to_display_cols): New function.
	(layout::get_state_at_point): Add col_unit argument.
	(make_range): Use empty filename rather than dummy filename.
	(get_line_width_without_trailing_whitespace): Rename to...
	(get_line_bytes_without_trailing_whitespace): ...this.
	(test_get_line_width_without_trailing_whitespace): Rename to...
	(test_get_line_bytes_without_trailing_whitespace): ...this.
	(class layout): m_exploc changed to exploc_with_display_col from
	plain expanded_location.
	(layout::get_linenum_width): New accessor member function.
	(layout::get_x_offset_display): Likewise.
	(layout::calculate_linenum_width): New subroutine for the constuctor.
	(layout::calculate_x_offset_display): Likewise.
	(layout::layout): Use the new subroutines. Add multibyte awareness.
	(layout::print_source_line): Add multibyte awareness.
	(layout::print_line): Likewise.
	(layout::print_annotation_line): Likewise.
	(line_label::line_label): Likewise.
	(layout::print_any_labels): Likewise.
	(layout::annotation_line_showed_range_p): Likewise.
	(get_printed_columns): Likewise.
	(class line_label): Rename m_length to m_display_width.
	(get_affected_columns): Rename to...
	(get_affected_range): ...this; add col_unit argument and multibyte
	awareness.
	(class correction): Add m_affected_bytes and m_display_cols
	members.  Rename m_len to m_byte_length for clarity.  Add multibyte
	awareness throughout.
	(correction::insertion_p): Add multibyte awareness.
	(correction::compute_display_cols): New function.
	(correction::ensure_terminated): Use new member name m_byte_length.
	(line_corrections::add_hint): Add multibyte awareness.
	(layout::print_trailing_fixits): Likewise.
	(layout::get_x_bound_for_row): Likewise.
	(test_one_liner_simple_caret_utf8): New self-test analogous to the one
	with _utf8 suffix removed, testing multibyte awareness.
	(test_one_liner_caret_and_range_utf8): Likewise.
	(test_one_liner_multiple_carets_and_ranges_utf8): Likewise.
	(test_one_liner_fixit_insert_before_utf8): Likewise.
	(test_one_liner_fixit_insert_after_utf8): Likewise.
	(test_one_liner_fixit_remove_utf8): Likewise.
	(test_one_liner_fixit_replace_utf8): Likewise.
	(test_one_liner_fixit_replace_non_equal_range_utf8): Likewise.
	(test_one_liner_fixit_replace_equal_secondary_range_utf8): Likewise.
	(test_one_liner_fixit_validation_adhoc_locations_utf8): Likewise.
	(test_one_liner_many_fixits_1_utf8): Likewise.
	(test_one_liner_many_fixits_2_utf8): Likewise.
	(test_one_liner_labels_utf8): Likewise.
	(test_diagnostic_show_locus_one_liner_utf8): Likewise.
	(test_overlapped_fixit_printing_utf8): Likewise.
	(test_overlapped_fixit_printing): Adapt for changes to
	get_affected_columns, get_printed_columns and class corrections.
	(test_overlapped_fixit_printing_2): Likewise.
	(test_linenum_sep): New constant.
	(test_left_margin): Likewise.
	(test_offset_impl): Helper function for new test.
	(test_layout_x_offset_display_utf8): New test.
	(diagnostic_show_locus_c_tests): Call new tests.

gcc/testsuite/ChangeLog:

2019-12-09  Lewis Hyatt  <lhyatt@gmail.com>

	PR preprocessor/49973
	* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
	(test_show_locus): Tweak so that expected output is the same as
	before the diagnostic-show-locus.c changes.
	* gcc.dg/cpp/pr66415-1.c: Likewise.

From-SVN: r279137
2019-12-09 20:03:47 +00:00
Ian Lance Taylor
763c9f4a85 re PR go/92861 (Passes relative time to sem_timedwait on GNU/Hurd)
PR go/92861
    runtime: don't define CLOCK_REALTIME in os_hurd.go
    
    It's already defined in sysinfo.go.
    
    Patch by Samuel Thibault.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210538

From-SVN: r279136
2019-12-09 18:03:53 +00:00
Jonathan Wakely
b5b2e3879d libstdc++: Implement ranges::safe_range for C++20 (P1870R1)
This change replaces the __forwarding_range implementation detail with
the ranges::safe_range concept and adds the ranges::enable_safe_range
variable template for opt-in in to the concept.

It also adjusts the begin/end/rbegin/rend customization point objects to
match the new rules for accessing rvalue ranges only when safe to do so.

	* include/bits/range_access.h (ranges::enable_safe_range): Define.
	(ranges::begin, ranges::end, ranges::rbegin, ranges::rend): Constrain
	to only accept types satisfying safe_range and treat argument as an
	lvalue when calling a member of performing ADL.
	(ranges::__detail::__range_impl, ranges::__detail::__forwarding_range):
	Remove.
	(ranges::range): Adjust definition.
	(ranges::safe_range): Define.
	(ranges::iterator_t, ranges::range_difference_t): Reorder definitions
	to match the synopsis in the working draft.
	(ranges::disable_sized_range): Remove duplicate definition.
	* include/experimental/string_view (ranges::enable_safe_range): Add
	partial specialization for std::experimental::basic_string_view.
	* include/std/ranges (ranges::viewable_range, ranges::subrange)
	(ranges::empty_view, ranges::iota_view): Use safe_range. Specialize
	enable_safe_range.
	(ranges::safe_iterator_t, ranges::safe_subrange_t): Define.
	* include/std/span (ranges::enable_safe_range): Add partial
	specialization for std::span.
	* include/std/string_view (ranges::enable_safe_range): Likewise for
	std::basic_string_view.
	* testsuite/std/ranges/access/begin.cc: Adjust expected results.
	* testsuite/std/ranges/access/cbegin.cc: Likewise.
	* testsuite/std/ranges/access/cdata.cc: Likewise.
	* testsuite/std/ranges/access/cend.cc: Likewise.
	* testsuite/std/ranges/access/crbegin.cc: Likewise.
	* testsuite/std/ranges/access/crend.cc: Likewise.
	* testsuite/std/ranges/access/data.cc: Likewise.
	* testsuite/std/ranges/access/end.cc: Likewise.
	* testsuite/std/ranges/access/rbegin.cc: Likewise.
	* testsuite/std/ranges/access/rend.cc: Likewise.
	* testsuite/std/ranges/empty_view.cc: Test ranges::begin and
	ranges::end instead of unqualified calls to begin and end.
	* testsuite/std/ranges/safe_range.cc: New test.
	* testsuite/std/ranges/safe_range_types.cc: New test.
	* testsuite/util/testsuite_iterators.h: Add comment about safe_range.

From-SVN: r279135
2019-12-09 17:35:24 +00:00
Eric Botcazou
43c2de7a57 tree.c (build_array_type_1): Add SET_CANONICAL parameter and compute TYPE_CANONICAL from the element type...
* tree.c (build_array_type_1): Add SET_CANONICAL parameter and compute
	TYPE_CANONICAL from the element type only if it is true.  Remove a few
	obsolete lines and adjust recursive call.
	(fld_process_array_type): Adjust call to build_array_type_1.
	(build_array_type): Likewise.
	(build_nonshared_array_type): Likewise.

From-SVN: r279133
2019-12-09 16:41:30 +00:00
Frederik Harwath
9b4c16f2c9 Fix column information for omp_clauses in Fortran code
The location of all OpenMP/OpenACC clauses on any given line in Fortran code
always points to the first clause on that line. Hence, the column information
is wrong for all clauses but the first one.

Use the correct location for each clause instead.

2019-12-09  Frederik Harwath  <frederik@codesourcery.com>

/gcc/fortran/
	* trans-openmp.c (gfc_trans_omp_reduction_list): Pass correct location for each
	clause to build_omp_clause.

From-SVN: r279132
2019-12-09 16:30:25 +00:00
Andrew Stubbs
28dd61b782 Fix more unrecognised GCN instructions
2019-12-09  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (gather<mode>_insn_1offset<exec>): Change
	%s to %o in asm output.
	(gather<mode>_insn_2offsets<exec>): Likewise.

From-SVN: r279131
2019-12-09 14:49:08 +00:00
Eric Botcazou
fc548411ff Remove gcc/ prefix
From-SVN: r279130
2019-12-09 14:20:54 +00:00
Joseph Myers
0fad54f0a8 Fix libdecnumber handling of non-canonical BID significands (PR middle-end/91226).
As reported in bug 91226, the libdecnumber code used on the host to
interpret DFP values in the BID encoding fails, for _Decimal64 and
_Decimal128, to check for the case where a significand is too large
and so specified in IEEE 754 to be a non-canonical encoding of the
zero significand.  This patch adds the required handling of that case,
together with tests both using -O2 (testing this host code) and -O0
(testing libgcc code, which already worked before the patch); the
tests also cover _Decimal32, which already had the required check.

In the _Decimal128 case, where the code previously completely ignored
the case where the first four bits of the combination field are 1100,
1101 or 1110, the logic for determining the correct quantum exponent
in that case is also newly added by this patch, so tests are added for
that as well (again, libgcc already handled it correctly when the
conversion was done at runtime rather than at compile time).

Bootstrapped with no regressions for x86_64-pc-linux-gnu.

	PR middle-end/91226
libdecnumber:
	* bid/bid2dpd_dpd2bid.c (_bid_to_dpd64): Handle non-canonical
	significands.
	(_bid_to_dpd128): Likewise.  Check for case where combination
	field starts 1100, 1101 or 1110.

gcc/testsuite:
	* gcc.dg/dfp/bid-non-canonical-d128-1.c,
	gcc.dg/dfp/bid-non-canonical-d128-2.c,
	gcc.dg/dfp/bid-non-canonical-d128-3.c,
	gcc.dg/dfp/bid-non-canonical-d128-4.c,
	gcc.dg/dfp/bid-non-canonical-d32-1.c,
	gcc.dg/dfp/bid-non-canonical-d32-2.c,
	gcc.dg/dfp/bid-non-canonical-d64-1.c,
	gcc.dg/dfp/bid-non-canonical-d64-2.c: New tests.

From-SVN: r279129
2019-12-09 13:59:24 +00:00
Richard Earnshaw
8d106dd51f arm: fix v[78]-r multilibs when configured with --with-multlib-list=aprofile
When gcc for Arm is configured with --with-multilib-list=aprofile a
misplaced endif directive in the makefile was causing the arm->thumb
mapping for multilibs to be omitted from the reuse rules.  This
resulted in the default multilib being picked rather than the thumb2
opimized version.

	* config/arm/t-multilib: Use arm->thumb multilib reuse rules
	on a-profile.

From-SVN: r279128
2019-12-09 13:51:50 +00:00
Segher Boessenkool
35041ed9de rs6000: Name set<mode>_cc, and delete some old mfcr patterns
This names the so far unnamed basic mfcr pattern "set<mode>_cc", and
it deletes all the others (only the ashift one ever was generated, and
even that one only once during a whole bootstrap+regtest, and that one
is questionable -- we don't cost that pattern correctly).


	* config/rs6000/rs6000.md (unnamed mfcr define_insn): Name this
	set<mode>_cc.
	(unnamed define_insn_and_split): Delete.
	(unnamed define_insn): Delete.
	(unnamed define_insn): Delete.
	(unnamed define_split): Delete.

From-SVN: r279127
2019-12-09 14:41:53 +01:00
Matthew Malcomson
e6130412c1 [mid-end] [obvious] Cast to avoid -Wsign-compare warning from r279124
The previous revision adds a comparison that triggers a warning.
Here we simply cast the unsigned integer to a signed one before the
comparison.

gcc/ChangeLog:

2019-12-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	* regstat.c (regstat_bb_compute_calls_crossed): Add a cast to
	avoid a warning.

From-SVN: r279126
2019-12-09 13:16:07 +00:00
Jozef Lawrynowicz
21a098f4a1 libgcc: Fix misuse of USE_EH_FRAME_REGISTRY in crtstuff.c
2019-12-09  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* crtstuff.c (__do_global_dtors_aux): Check if USE_EH_FRAME_REGISTRY is
	defined instead of its value.

From-SVN: r279125
2019-12-09 12:35:55 +00:00
Matthew Malcomson
fdc5359fb6 [mid-end] Add notes to dataflow insn info when re-emitting (PR92410)
In scheduling passes, notes are removed with `remove_notes` before the
scheduling is done, and added back in with `reemit_notes` once the
scheduling has been decided.

This process leaves the notes in the RTL chain with different insn uid's
than were there before.  Having different UID's (larger than the
previous ones) means that DF_INSN_INFO_GET(insn) will access outside of
the allocated array.

This has been seen in the `regstat_bb_compute_calls_crossed` function.
This patch adds an assert to the `regstat_bb_compute_calls_crossed`
function so that bad accesses here are caught instead of going
unnoticed, and then avoids the problem.

We avoid the problem by ensuring that new notes added by `reemit_notes` have an
insn record given to them.  This is done by adding a call to
`df_insn_create_insn_record` on each note added in `reemit_notes`.
`df_insn_create_insn_record` leaves this new record zeroed out, which appears
to be fine for notes (e.g. `df_bb_refs_record` already does not set
anything except the luid for notes, and notes have no dataflow information to
record).

We add the testcase that Martin found here
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92410#c2 .
This testcase fails with the "regstat.c" change, and then succeeds with the
"haifa-sched.c" change.

There is a similar problem with labels, that the `gcc_assert` catches
when running regression tests in gcc.dg/fold-eqandshift-1.c and
gcc.c-torture/compile/pr32482.c.
This is due to the `cfg_layout_finalize` call in `bb-reorder.c` emitting
new labels, and these labels not having a dataflow df_insn_info member.

We solve this by manually calling `df_recompute_luids` on each basic
block once this pass has finished.

Testing done:
  Ran regression tests on aarch64-none-linux-gnu cross compiler.
  Bootstrapped and ran tests on aarch64-none-linux-gnu native.

gcc/ChangeLog:

2019-12-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	PR middle-end/92410
	* bb-reorder.c (pass_reorder_blocks::execute): Recompute
	dataflow luids once basic blocks have been reordered.
	* haifa-sched.c (reemit_notes): Create df insn record for each
	new note.
	* regstat.c (regstat_bb_compute_calls_crossed): Assert every
	insn has an insn record before trying to use it.

gcc/testsuite/ChangeLog:

2019-12-09  Matthew Malcomson  <matthew.malcomson@arm.com>

	PR middle-end/92410
	* gcc.dg/torture/pr92410.c: New test.

From-SVN: r279124
2019-12-09 12:03:53 +00:00
Jozef Lawrynowicz
ad8b778345 libgcc: Dont define __do_global_dtors_aux if it will be empty
2019-12-09  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* crtstuff.c (__do_global_dtors_aux): Wrap in #if so it's only defined
	if it will have contents.

From-SVN: r279123
2019-12-09 11:41:07 +00:00
Thomas Schwinge
41f36f22f3 [PR92511] More testing for OpenACC "present" subarrays
In particular, "subset subarrays".

	libgomp/
	PR libgomp/92511
	* testsuite/libgomp.oacc-c-c++-common/copyin-devptr-1.c: Remove
	this file...
	* testsuite/libgomp.oacc-c-c++-common/copyin-devptr-2.c: ..., and
	this file...
	* testsuite/libgomp.oacc-c-c++-common/lib-22.c: ..., and this
	file...
	* testsuite/libgomp.oacc-c-c++-common/lib-30.c: ..., and this
	file...
	* testsuite/libgomp.oacc-c-c++-common/subset-subarray-mappings-1-r-p.c:
	... with their content moved into, and extended in this new file.
	* testsuite/libgomp.oacc-c-c++-common/subset-subarray-mappings-1-d-a.c:
	New file.
	* testsuite/libgomp.oacc-c-c++-common/subset-subarray-mappings-1-d-p.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/subset-subarray-mappings-1-r-a.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/subset-subarray-mappings-2.c:
	Likewise.

From-SVN: r279122
2019-12-09 12:40:36 +01:00
Thomas Schwinge
6effebe10b Add 'libgomp.oacc-c-c++-common/map-data-1.c'
libgomp/
	* testsuite/libgomp.oacc-c-c++-common/map-data-1.c: New file.

From-SVN: r279121
2019-12-09 12:40:27 +01:00
Thomas Schwinge
7d02047320 [PR92854] Add 'libgomp.oacc-c-c++-common/pr92854-1.c'
... to document the status quo.

	libgomp/
	PR libgomp/92854
	* testsuite/libgomp.oacc-c-c++-common/pr92854-1.c: New file.

From-SVN: r279120
2019-12-09 12:40:17 +01:00
Thomas Schwinge
1e1fb715cd Add 'libgomp.oacc-c-c++-common/host_data-6.c'
libgomp/
	* testsuite/libgomp.oacc-c-c++-common/host_data-6.c: New file.

From-SVN: r279119
2019-12-09 12:40:08 +01:00
Thomas Schwinge
b5859e4002 In 'libgomp/target.c:gomp_exit_data', remove open-coded 'gomp_remove_var'
libgomp/
	* target.c (gomp_exit_data): Use 'gomp_remove_var'.

From-SVN: r279118
2019-12-09 12:39:57 +01:00
Tobias Burnus
11586ed9c9 libgomp/testsuite/*fortran – make 'stop' values unique
* testsuite/libgomp.fortran/use_device_addr-3.f90: Make 'stop' codes
        unique.
        * testsuite/libgomp.fortran/use_device_addr-4.f90: Ditto.
        * testsuite/libgomp.fortran/use_device_ptr-optional-2.f90: Ditto.
        * testsuite/libgomp.oacc-fortran/declare-5.f90: Ditto.
        * testsuite/libgomp.oacc-fortran/optional-data-copyin-by-value.f90:
        Ditto.
        * testsuite/libgomp.oacc-fortran/optional-firstprivate.f90: Ditto.
        * testsuite/libgomp.oacc-fortran/optional-update-host.f90: Ditto.

From-SVN: r279117
2019-12-09 12:21:22 +01:00
Hongtao Liu
8cf86e14e8 Use OPTION_MASK_ISA2_$target_[SET,UNSET, ] to indicate those for
x_ix86_isa_flags2.

2019-12-09  Hongtao Liu  <hongtao.liu@intel.com>

    * gcc/common/config/i386/i386-common.c
    (OPTION_MASK_ISA_AVX5124FMAPS_SET): Rename to
    OPTION_MASK_ISA2_AVX5124FMAPS_SET.
    (OPTION_MASK_ISA_AVX5124VNNIW_SET, OPTION_MASK_ISA_AVX512BF16_SET,
    OPTION_MASK_ISA_AVX512VP2INTERSECT_SET,
    OPTION_MASK_ISA_PCONFIG_SET, OPTION_MASK_ISA_WBNOINVD_SET,
    OPTION_MASK_ISA_SGX_SET, OPTION_MASK_ISA_CX16_SET,
    OPTION_MASK_ISA_MOVBE_SET, OPTION_MASK_ISA_PTWRITE_SET,
    OPTION_MASK_ISA_MWAITX_SET, OPTION_MASK_ISA_CLZERO_SET,
    OPTION_MASK_ISA_RDPID_SET, OPTION_MASK_ISA_VAES_SET,
    OPTION_MASK_ISA_MOVDIR64B_SET, OPTION_MASK_ISA_WAITPKG_SET,
    OPTION_MASK_ISA_CLDEMOTE_SET, OPTION_MASK_ISA_ENQCMD_SET,
    OPTION_MASK_ISA_AVX5124FMAPS_UNSET,
    OPTION_MASK_ISA_AVX5124VNNIW_UNSET,
    OPTION_MASK_ISA_AVX512BF16_UNSET,
    OPTION_MASK_ISA_AVX512VP2INTERSECT_UNSET,
    OPTION_MASK_ISA_PCONFIG_UNSET, OPTION_MASK_ISA_WBNOINVD_UNSET,
    OPTION_MASK_ISA_SGX_UNSET, OPTION_MASK_ISA_CX16_UNSET,
    OPTION_MASK_ISA_MOVBE_UNSET, OPTION_MASK_ISA_PTWRITE_UNSET,
    OPTION_MASK_ISA_MWAITX_UNSET, OPTION_MASK_ISA_CLZERO_UNSET,
    OPTION_MASK_ISA_RDPID_UNSET, OPTION_MASK_ISA_VAES_UNSET,
    OPTION_MASK_ISA_MOVDIR64B_UNSET, OPTION_MASK_ISA_WAITPKG_UNSET,
    OPTION_MASK_ISA_CLDEMOTE_UNSET, OPTION_MASK_ISA_ENQCMD_UNSET,
    OPTION_MASK_ISA_AVX5124FMAPS, OPTION_MASK_ISA_AVX5124VNNIW,
    OPTION_MASK_ISA_AVX512BF16, OPTION_MASK_ISA_AVX512VP2INTERSECT,
    OPTION_MASK_ISA_PCONFIG, OPTION_MASK_ISA_WBNOINVD,
    OPTION_MASK_ISA_SGX, OPTION_MASK_ISA_CX16, OPTION_MASK_ISA_MOVBE,
    OPTION_MASK_ISA_PTWRITE, OPTION_MASK_ISA_MWAITX,
    OPTION_MASK_ISA_CLZERO, OPTION_MASK_ISA_RDPID,
    OPTION_MASK_ISA_VAES, OPTION_MASK_ISA_MOVDIR64B,
    OPTION_MASK_ISA_WAITPKG, OPTION_MASK_ISA_CLDEMOTE,
    OPTION_MASK_ISA_ENQCMD): Ditto.
    * gcc/config/i386/i386-builtin.def
    (OPTION_MASK_ISA_AVX5124FMAPS, OPTION_MASK_ISA_AVX5124VNNIW,
    OPTION_MASK_ISA_AVX512BF16, OPTION_MASK_ISA_AVX512VP2INTERSECT,
    OPTION_MASK_ISA_WBNOINVD, OPTION_MASK_ISA_PTWRITE,
    OPTION_MASK_ISA_RDPID, OPTION_MASK_ISA_VAES,
    OPTION_MASK_ISA_MOVDIR64B, OPTION_MASK_ISA_ENQCMD): Ditto.
    * gcc/config/i386/i386-builtins.c (OPTION_MASK_ISA_MWAITX,
    OPTION_MASK_ISA_CLZERO, OPTION_MASK_ISA_WAITPKG,
    OPTION_MASK_ISA_CLDEMOTE, OPTION_MASK_ISA_WBNOINVD): Ditto.
    * gcc/config/i386/i386-c.c
    (OPTION_MASK_ISA_AVX5124FMAPS, OPTION_MASK_ISA_AVX5124VNNIW,
    OPTION_MASK_ISA_AVX512BF16, OPTION_MASK_ISA_AVX512VP2INTERSECT,
    OPTION_MASK_ISA_PCONFIG, OPTION_MASK_ISA_WBNOINVD,
    OPTION_MASK_ISA_SGX, OPTION_MASK_ISA_CX16, OPTION_MASK_ISA_MOVBE,
    OPTION_MASK_ISA_PTWRITE, OPTION_MASK_ISA_MWAITX,
    OPTION_MASK_ISA_CLZERO, OPTION_MASK_ISA_RDPID,
    OPTION_MASK_ISA_VAES, OPTION_MASK_ISA_MOVDIR64B,
    OPTION_MASK_ISA_WAITPKG, OPTION_MASK_ISA_CLDEMOTE,
    OPTION_MASK_ISA_ENQCMD): Ditto.
    * gcc/config/i386/i386-option.c: Ditto
    * gcc/config/i386/i386.opt: Ditto..
    * gcc/config/i386/i386.h: (TARGET_ISA_AVX5124FMAPS,
    TARGET_ISA_AVX5124VNNIW,  TARGET_ISA_AVX512BF16,
    TARGET_ISA_AVX512VP2INTERSECT, TARGET_ISA_PCONFIG,
    TARGET_ISA_WBNOINVD, TARGET_ISA_SGX, TARGET_ISA_CX16,
    TARGET_ISA_MOVBE, TARGET_ISA_PTWRITE, TARGET_ISA_MWAITX,
    TARGET_ISA_CLZERO, TARGET_ISA_RDPID, TARGET_ISA_VAES,
    TARGET_ISA_MOVDIR64B, TARGET_ISA_WAITPKG, TARGET_ISA_CLDEMOTE)
    TARGET_ISA_ENQCMD): Ditto.

From-SVN: r279116
2019-12-09 11:20:13 +00:00
Sudakshina Das
e3126e5f64 [GCC, Vect] Fix costing for vector shifts
While looking at the vectorization for following example, we realized that
even though vectorizable_shift function was distinguishing vector shifted
by vector from vector shifted by scalar, while modelling the cost it would
always add the cost of building a vector constant despite not needing it for
vector shifted by scalar.

This patch fixes this by using scalar_shift_arg to determine whether we need
to build a vector for the second operand or not. This causes the test case
below to now vectorize.

gcc/ChangeLog:

2019-12-09  Sudakshina Das  <sudi.das@arm.com>
	    Richard Sandiford  <richard.sandiford@arm.com>

	* tree-vect-stmt.c (vectorizable_shift): Condition ndts for
	vect_model_simple_cost call on scalar_shift_arg.

gcc/testsuite/ChangeLog:

2019-12-09  Sudakshina Das  <sudi.das@arm.com>

	* gcc.dg/vect/vect-shift-5.c: New test.

Co-Authored-By: Richard Sandiford <richard.sandiford@arm.com>

From-SVN: r279114
2019-12-09 10:22:01 +00:00
Jakub Jelinek
49647b7b25 re PR tree-optimization/92834 (misssed SLP vectorization in LightPixel)
PR tree-optimization/92834
	* match.pd (A - ((A - B) & -(C cmp D)) -> (C cmp D) ? B : A,
	A + ((B - A) & -(C cmp D)) -> (C cmp D) ? B : A): New simplifications.

	* gcc.dg/tree-ssa/pr92834.c: New test.

From-SVN: r279113
2019-12-09 11:13:18 +01:00
Prathamesh Kulkarni
8e03b21e84 re PR tree-optimization/89007 ([SVE] Implement generic vector average expansion)
2019-12-09  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

	PR tree-optimization/89007
	* tree-vect-patterns.c (vect_recog_average_pattern): If there is no
	target support available, generate code to distribute rshift over plus
	and add a carry.

testsuite/
	* gcc.target/aarch64/sve/pr89007-1.c: New test.
	* gcc.target/aarch64/sve/pr89007-2.c: Likewise.

From-SVN: r279112
2019-12-09 09:59:42 +00:00
Jonathan Wakely
1d214c3f83 libstdc++: Improve testing for path::operator+=(const string&)
* testsuite/27_io/filesystem/path/concat/strings.cc: Test more cases.

From-SVN: r279111
2019-12-09 09:59:00 +00:00
Jonathan Wakely
023a3fb491 libstdc++: fix buffer overflow in path::operator+= (PR92853)
When concatenating a path ending in a root-directory onto another path,
we added an empty filename to the end of the path twice, but only
reserved space for one. That meant the second write went past the end of
the allocated buffer.

	PR libstdc++/92853
	* src/c++17/fs_path.cc (filesystem::path::operator+=(const path&)):
	Do not process a trailing directory separator twice.
	* testsuite/27_io/filesystem/path/concat/92853.cc: New test.
	* testsuite/27_io/filesystem/path/concat/path.cc: Test more cases.

From-SVN: r279110
2019-12-09 09:58:56 +00:00
Martin Liska
a65d584dc1 Come up with constructors of symtab_node, cgraph_node and varpool_node.
2019-12-09  Martin Liska  <mliska@suse.cz>

	PR ipa/92737
	* cgraph.c (symbol_table_test::symbol_table_test): Fix
	coding style.
	* cgraph.h (symtab_node::symtab_node): New constructor.
	(cgraph_node::cgraph_node): Likewise.
	(varpool_node::varpool_node): Likewise.
	(symbol_table::allocate_cgraph_symbol): Use newly
	created constructor.
	(symbol_table::allocate_cgraph_symbol): Remove.
	* cgraphunit.c (symtab_terminator): Likewise.
	* varpool.c (varpool_node::create_empty): Use newly
	created constructor.

From-SVN: r279109
2019-12-09 09:00:42 +00:00
François Dumont
4383959047 libstdc++: Add C++20 P1032 constexpr to _GLIBCXX_DEBUG array
* testsuite/23_containers/array/tuple_interface/get_debug_neg.cc:
	Fix static_assert line number.
	* testsuite/23_containers/array/tuple_interface/
	tuple_element_debug_neg.cc: Likewise.

From-SVN: r279108
2019-12-09 08:44:15 +00:00
Hongtao Liu
8b905e9b0c Enable mask movement for VCOND_EXPR under avx512f for
128/256-bit vector when integer mask is available.

Changelog
gcc/
	PR target/92686
	* config/i386/sse.md
	(*<avx512>_cmp<mode>3<mask_scalar_merge_name><round_saeonly_name>,
	*<avx512>_cmp<mode>3<mask_scalar_merge_name>,
	*<avx512>_ucmp<mode>3<mask_scalar_merge_name>,
	*<avx512>_ucmp<mode>3<mask_scalar_merge_name>): New.
	* config/i386/i386.c (ix86_print_operand): New operand substitution.
	* config/i386/i386-expand.c (ix86_valid_mask_cmp_mode):
	New function.
	(ix86_expand_sse_cmp): Relax condition for integer mask from
	512-bit vector to all 128/256/512-bit vector. Delete code gen
	for avx512f compare patterns since we have generic pattern now.
	(ix86_expand_sse_movcc): Adjust condition and codegen for
	maskcmp.
	(ix86_expand_int_sse_cmp): Don't canonicalize the comparison
	when corresponding vector compare is available.

gcc/testsuite/
	* gcc.target/i386/pr92686.inc: New file.
	* gcc.target/i386/avx512bw-pr92686-vpcmp-1.c: New test.
	* gcc.target/i386/avx512bw-pr92686-vpcmp-intelasm-1.c: Ditto.
	* gcc.target/i386/avx512bw-pr92686-vpcmp-2.c: Ditto.
	* gcc.target/i386/avx512vl-pr92686-vpcmp-1.c: Ditto.
	* gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c: Ditto.
	* gcc.target/i386/avx512vl-pr92686-vpcmp-2.c: Ditto.
	* gcc.target/i386/avx512bw-pr92686-movcc-1.c: Ditto.
	* gcc.target/i386/avx512bw-pr92686-movcc-2.c: Ditto.
	* gcc.target/i386/avx512vl-pr92686-movcc-1.c: Ditto.
	* gcc.target/i386/avx512vl-pr92686-movcc-2.c: Ditto.
	* gcc.target/i386/avx512vl-pr88547-1.c: Adjust testcase.
	* gcc.target/i386/pr88547-1.c: Ditto.

From-SVN: r279107
2019-12-09 04:16:24 +00:00
Ian Lance Taylor
9135a6ffc5 re PR go/92861 (Passes relative time to sem_timedwait on GNU/Hurd)
PR go/92861
    runtime: use absolute time for sem_timedwait
    
    Patch by Samuel Thibault.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210457

From-SVN: r279106
2019-12-09 03:43:33 +00:00
GCC Administrator
77cc6ae6d6 Daily bump.
From-SVN: r279104
2019-12-09 00:16:21 +00:00
Jakub Jelinek
5544dbeb1c cvt.c (maybe_warn_nodiscard): Add workaround for GCC 3.4-4.4 - cast msg to (const char *) in conditional...
* cvt.c (maybe_warn_nodiscard): Add workaround for GCC 3.4-4.4 - cast
	msg to (const char *) in conditional expressions.  Formatting fixes.

From-SVN: r279101
2019-12-09 00:22:45 +01:00
Andrew Pinski
a0d169d17a New bswap testcase.
2019-12-08  Andrew Pinski  <apinski@marvell.com>

        * gcc.c-torture/execute/bswap-3.c: New test.

From-SVN: r279100
2019-12-08 13:59:25 -08:00
Sandra Loosemore
58ccb8ec7c Revert commit r279023.
2019-12-08  Sandra Loosemore  <sandra@codesourcery.com>

	Revert commit r279023.

	2019-12-05  Sandra Loosemore  <sandra@codesourcery.com>

	gcc/
	* config/nios2/linux.h (LINK_EH_SPEC): Define.

	gcc/testsuite/
	* g++.target/nios2/hello-pie.C: New.
	* g++.target/nios2/nios2.exp: New.

From-SVN: r279094
2019-12-08 12:12:50 -05:00
Jan Hubicka
6d8fd122c4 Fix overflows in -fprofile-reorder-functions
This patch fixes three sissues with -fprofile-reorder-functions:
1) First is that tp_first_run is stored as 32bit integer while it can easily
   overflow (and does so during Firefox profiling).
2) Second problem is that flag_profile_functions can
   not be tested w/o function context.
   The changes to expand_all_functions makes it to work on mixed units by
   first outputting all functions w/o -fprofile-reorder-function (or with no
   profile info) and then outputting in first_run order
3) LTO partitioner was mixing up order by tp_first_run and by order.
   for no_reorder we definitly want to order via first, while for everything
   else we want to roder by second.

I have also merged duplicated comparators since they are bit fragile into
tp_first_run_node_cmp.

I originaly started to look into this because of undefined symbols with
Firefox PGO builds.  These symbols went away with fixing these bug but I am not
quite sure how. it is possible that there is another problem in lto_blanced_map
but even after reading the noreorder code few times carefuly I did not find it.
Other explanation would be that our new qsort with broken comparator due to
overflow can actualy remove some entries in the array, but that sounds bit
crazy.

Bootstrapped/regested x86_64-linux.

	* cgraph.c (cgraph_node::dump): Make tp_first_run 64bit.
	* cgraph.h (cgrpah_node): Likewise.
	(tp_first_run_node_cmp): Deeclare.
	* cgraphunit.c (node_cmp): Rename to ...
	(tp_first_run_node_cmp): ... this; export; watch for 64bit overflows;
	clear tp_first_run for no_reorder and !flag_profile_reorder_functions.
	(expand_all_functions): Collect tp_first_run and normal functions to
	two vectors so the other functions remain sorted. Do not check for
	flag_profile_reorder_functions it is function local flag.
	* profile.c (compute_value_histograms): Update tp_first_run printing.

	* lto-partition.c (node_cmp): Turn into simple order comparsions.
	(varpool_node_cmp): Remove.
	(add_sorted_nodes): Use node_cmp.
	(lto_balanced_map): Use tp_first_run_node_cmp.

From-SVN: r279093
2019-12-08 17:02:30 +00:00
Jan Hubicka
a8d9d6649e opts.c (common_handle_option): Do not clear ipa_reference for -fprofile-use.
* opts.c (common_handle_option): Do not clear ipa_reference for
	-fprofile-use.

From-SVN: r279092
2019-12-08 17:00:42 +00:00
Jan Hubicka
f514d0199a Fix tp_first_run update in split_function.
The value 0 in tp_first_run is special meaing that profile is unknown.  We
should not set it to 1.

	* ipa-split.c (split_function): Preserve 0 tp_first_run.

From-SVN: r279091
2019-12-08 16:57:20 +00:00
Jan Hubicka
a63574d7ed Silence overactive sanity check with -fpartial-profile-training
do_estimate_edge_time tests that cached and real values matches. This test
is not working precisely for global profiles because of roundoff issues when
profile of clones is subtracted from profile of offline body.  This is checked
by presence of ipa counter. This breaks with partial profile training because
we turn IPA profiles to local when they drop to 0.

	* ipa-inline-analysis.c (do_estimate_edge_time): Silence overactive
	sanity check.

From-SVN: r279090
2019-12-08 14:02:43 +00:00
Jan Hubicka
ad74bc8ca4 re PR tree-optimization/92860 (Global flags affected by -O settings are clobbered by optimize attribute)
PR tree-optimization/92860
	* common.opt (fprofile-reorder-functions, ftoplevel-reorder): Add
	Optimization flag.

From-SVN: r279089
2019-12-08 13:50:32 +00:00
Thomas Koenig
c212316b4a Error on Associate with a program.
2018-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92780
    * resolve.c (resolve_assoc_var): Issue error if the associating
    entity is a program.

2018-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92780
    * gfortran.dg/associate_50.f90: New test.

From-SVN: r279088
2019-12-08 13:42:42 +00:00
Thomas Koenig
f477062c2e re PR fortran/92764 (ICE in gfc_procedure_use)
2018-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92764
    * interface.c (gfc_procedure_use): Check for existence of derived
    component before using (twice).

2018-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92764
    * gfortran.dg/interface_44.f90: New test.

From-SVN: r279087
2019-12-08 13:02:54 +00:00
Thomas Koenig
c9942e5fae re PR fortran/92755 (ICE in gfc_dep_resolver, at fortran/dependency.c:2123)
2019-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/92755
	* dependency.c (gfc_dep_resolver):  Move skipping of _data ref
	into the loop.

2019-12-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/92755
	* gfortran.dg/dependency_57.f90: New test.

From-SVN: r279086
2019-12-08 12:25:15 +00:00
Rainer Orth
9f5836a692 Fix ia32 testsuite failures from C2x attributes on types
* g++.dg/cpp0x/gen-attrs-36.C: Update expected diagnostics.
	* g++.dg/cpp0x/gen-attrs-37.C: Likewise.
	* g++.dg/cpp0x/gen-attrs-8.C: Likewise.

From-SVN: r279085
2019-12-08 10:51:58 +00:00
GCC Administrator
241224b65e Daily bump.
From-SVN: r279084
2019-12-08 00:16:24 +00:00
Andrew Pinski
c44e87ac7c Fix libstdc++ compiling for an aarch64 multilib with big-endian.
2019-12-07  Andrew Pinski  <apinski@marvell.com>

        * config/cpu/aarch64/opt/ext/opt_random.h: Wrap around with check
        for little-endian like ext/random is done.

From-SVN: r279081
2019-12-07 16:08:55 -08:00
Marek Polacek
bfbe98c7e0 PR c++/91678 - wrong error with decltype and location wrapper.
Compiling this testcase results in a bogus "invalid cast" error; this occurs
since the introduction of location wrappers in finish_id_expression.

Here we are parsing the decltype expression via cp_parser_decltype_expr which
can lead to calling various fold_* and c-family routines.  They use
non_lvalue_loc, but that won't create a NON_LVALUE_EXPR wrapper around a location
wrapper.

So before the location wrappers addition cp_parser_decltype_expr would return
NON_LVALUE_EXPR <c>.  Now it returns VIEW_CONVERT_EXPR<float *>(c), but the
STRIP_ANY_LOCATION_WRAPPER immediately following it strips the location wrapper,
and suddenly we don't know whether we have an lvalue anymore.  And that's sad
because then decltype produces the wrong type, causing nonsense errors.

	* fold-const.c (maybe_lvalue_p): Handle VIEW_CONVERT_EXPR.

	* g++.dg/cpp0x/decltype73.C: New test.

From-SVN: r279077
2019-12-07 17:35:54 +00:00
Eric Botcazou
ea37206dec re PR middle-end/90840 (ICE in simplify_subreg, at simplify-rtx.c:6441)
PR middle-end/90840
	* expr.c (expand_assignment): In the case of a CONCAT on the LHS, make
	sure to pass a valid inner mode in calls to simplify_gen_subreg.

From-SVN: r279076
2019-12-07 12:20:44 +00:00
Tobias Burnus
9c81750c5b Fortran] PR 92793 - fix column used for error diagnostic
PR fortran/92793
        * trans.c (gfc_get_location): Declare.
        * trans.c (gfc_get_location): Define; returns column-corrected location.
        (trans_runtime_error_vararg, gfc_trans_runtime_check,
        gfc_generate_module_code): Use new function.
        * trans-array.c (gfc_trans_auto_array_allocation): Likewise.
        * trans-common.c (build_field, get_init_field, create_common): Likewise.
        * trans-decl.c (gfc_build_label_decl, gfc_get_symbol_decl): Likewise.
        * trans-openmp.c (gfc_trans_omp_reduction_list, gfc_trans_omp_clauses):
        Likewise.
        * trans-stmt.c (gfc_trans_if_1): Likewise.

From-SVN: r279075
2019-12-07 12:07:07 +01:00
Richard Sandiford
b01d215df1 Fix @multitable handling in texi2pod.pl
While trying out Dennis's Armv8.6-A patch, I noticed that texi2pod.pl
didn't handle the new @multitable correctly.  There were two problems:

(1) @multitables nested in other @tables inherited the @item type from
    the enclosing @table.  Since the new @multitable is in a @table @samp,
    we applied @samp markup to the @multitable @items.  This in turn
    meant that it captured the @tab separator in the @item markup.

    Fixed by pushing an empty item code onto the stack.

(2) We didn't handle @headitem.  Fixed by enclosing it in italics,
    like we do for section headings.  This causes it to be underlined
    in the man output.

2019-12-07  Richard Sandiford  <richard.sandiford@arm.com>

contrib/
	* texi2pod.pl: Handle @headitems in @multitables, printing them
	in italics.  Push an empty item code onto the stack.

From-SVN: r279074
2019-12-07 09:57:04 +00:00
Tobias Burnus
ae169f9e4c re PR c/87488 (hyperlink filenames in diagnostics)
PR c/87488
	* pretty-print.c (pp_begin_url, pp_end_url, test_urls): Use BEL
	instead of ST sequence to terminate OSC 8 strings.

Co-Authored-By: David Malcolm <dmalcolm@redhat.com>
Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r279073
2019-12-07 09:24:14 +01:00