aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2019-12-10diagnostic_show_locus: move initial newline to callersDavid Malcolm10-145/+148
diagnostic_show_locus adds a newline before doing anything (including the do-nothing-else case). This patch removes this initial newline, adding it to all callers of diagnostic_show_locus instead. Doing so makes diagnostic_show_locus more flexible, allowing it to be used in my analyzer patch kit for printing diagnostic paths. gcc/c-family/ChangeLog: * c-format.c (selftest::test_type_mismatch_range_labels): Remove initial newline from expected outputs. * c-opts.c (c_diagnostic_finalizer): Add pp_newline call before call to diagnostic_show_locus. gcc/ChangeLog: * diagnostic-show-locus.c (diagnostic_show_locus): Remove initial newline. (selftest::test_diagnostic_show_locus_unknown_location): Remove initial newline from expected outputs. (selftest::test_one_liner_simple_caret): Likewise. (selftest::test_one_liner_caret_and_range): Likewise. (selftest::test_one_liner_multiple_carets_and_ranges): Likewise. (selftest::test_one_liner_fixit_insert_before): Likewise. (selftest::test_one_liner_fixit_insert_after): Likewise. (selftest::test_one_liner_fixit_remove): Likewise. (selftest::test_one_liner_fixit_replace): Likewise. (selftest::test_one_liner_fixit_replace_non_equal_range): Likewise. (selftest::test_one_liner_fixit_replace_equal_secondary_range): Likewise. (selftest::test_one_liner_fixit_validation_adhoc_locations): Likewise. (selftest::test_one_liner_many_fixits_1): Likewise. (selftest::test_one_liner_many_fixits_2): Likewise. (selftest::test_one_liner_labels): Likewise. (selftest::test_one_liner_simple_caret_utf8): Likewise. (selftest::test_one_liner_caret_and_range_utf8): Likewise. (selftest::test_one_liner_multiple_carets_and_ranges_utf8): Likewise. (selftest::test_one_liner_fixit_insert_before_utf8): Likewise. (selftest::test_one_liner_fixit_insert_after_utf8): Likewise. (selftest::test_one_liner_fixit_remove_utf8): Likewise. (selftest::test_one_liner_fixit_replace_utf8): Likewise. (selftest::test_one_liner_fixit_replace_non_equal_range_utf8): Likewise. (selftest::test_one_liner_fixit_replace_equal_secondary_range_utf8): Likewise. (selftest::test_one_liner_fixit_validation_adhoc_locations_utf8): Likewise. (selftest::test_one_liner_many_fixits_1_utf8): Likewise. (selftest::test_one_liner_many_fixits_2_utf8): Likewise. (selftest::test_one_liner_labels_utf8): Likewise. (selftest::test_add_location_if_nearby): Likewise. (selftest::test_diagnostic_show_locus_fixit_lines): Likewise. (selftest::test_overlapped_fixit_printing): Likewise. (selftest::test_overlapped_fixit_printing_utf8): Likewise. (selftest::test_overlapped_fixit_printing_2): Likewise. (selftest::test_fixit_insert_containing_newline): Likewise. (selftest::test_fixit_insert_containing_newline_2): Likewise. (selftest::test_fixit_replace_containing_newline): Likewise. (selftest::test_fixit_deletion_affecting_newline): Likewise. (selftest::test_line_numbers_multiline_range): Likewise. * diagnostic.c (default_diagnostic_finalizer): Add pp_newline call before call to diagnostic_show_locus. (diagnostic_append_note): Likewise. gcc/fortran/ChangeLog: * error.c (gfc_diagnostic_starter): Add pp_newline call before call to diagnostic_show_locus. gcc/testsuite/ChangeLog: * gcc.dg/plugin/diagnostic_plugin_test_show_locus.c (custom_diagnostic_finalizer): Add pp_newline call before call to diagnostic_show_locus. From-SVN: r279152
2019-12-10Daily bump.GCC Administrator1-1/+1
From-SVN: r279150
2019-12-09PR middle-end/92761 - hash_table::expand invokes assignment on invalid objectsMartin Sebor3-22/+27
PR middle-end/92761 - hash_table::expand invokes assignment on invalid objects PR middle-end/92762 - hash_table::empty_slow invokes assignment on invalid objects gcc/ChangeLog: PR middle-end/92761 PR middle-end/92762 * hash-map-tests.c (test_map_of_type_with_ctor_and_dtor): Tighten up tests. * hash-table.h (hash_table::expand): Use placement new to copy construct objects in uninitialized storage. (hash_table::empty_slow): Avoid invoking copy assignment on uninitialized objects. From-SVN: r279139
2019-12-09typeck.c (check_for_casting_away_constness): Add location_t parameter and ↵Paolo Carlini63-318/+476
use it. gcc/cp 2019-12-09 Paolo Carlini <paolo.carlini@oracle.com> * typeck.c (check_for_casting_away_constness): Add location_t parameter and use it. (maybe_warn_about_useless_cast): Likewise. (maybe_warn_about_cast_ignoring_quals): Likewise. (build_static_cast_1): Likewise. (build_static_cast): Likewise; sets the location of the returned tree. (build_reinterpret_cast_1): Likewise. (build_reinterpret_cast): Likewise; sets the location of the returned tree. (build_const_cast_1): Likewise. (build_const_cast): Likewise; sets the location of the returned tree. (cp_build_c_cast): Likewise. (build_c_cast): Adjust. (build_ptrmemfunc): Adjust calls. (cp_build_unary_op): Pass the location to invert_truthvalue_loc. * rtti.c (build_dynamic_cast_1): Add location_t parameter and use it. (build_dynamic_cast): Likewise. * cp-tree.h: Adjust declarations. * parser.c (cp_parser_postfix_expression): Pass cp_cast_loc to the various build_*_cast functions. (get_cast_suggestion): Adjust calls. (cp_parser_builtin_offsetof): Likewise. * decl.c (reshape_init): Adjust call. * method.c (forward_parm): Likewise. (build_comparison_op): Likewise. * pt.c (tsubst_copy_and_build): Likewise. * semantics.c (finish_omp_reduction_clause): Likewise. (cp_omp_finish_iterators): Likewise. * tree.c (cp_stabilize_reference): Likewise. (move): Likewise. * typeck2.c (build_functional_cast): Likewise. * typeck2.c (build_functional_cast_1): New. (build_functional_cast_1): Calls the latter and sets the location of the returned tree. /libcc1 2019-12-09 Paolo Carlini <paolo.carlini@oracle.com> * libcp1plugin.cc (plugin_build_cast_expr): Adjust build_cast declaration. gcc/testsuite 2019-12-09 Paolo Carlini <paolo.carlini@oracle.com> * c-c++-common/Wcast-align.c: Check location(s) too. * c-c++-common/Wcast-function-type.c: Likewise. * c-c++-common/Wint-to-pointer-cast-1.c: Likewise. * c-c++-common/Wint-to-pointer-cast-2.c: Likewise. * c-c++-common/Wint-to-pointer-cast-3.c: Likewise. * g++.dg/Wcast-function-type.C: Likewise. * g++.dg/addr_builtin-1.C: Likewise. * g++.dg/conversion/const2.C: Likewise. * g++.dg/conversion/dynamic1.C: Likewise. * g++.dg/conversion/ptrmem2.C: Likewise. * g++.dg/conversion/ptrmem3.C: Likewise. * g++.dg/conversion/qual3.C: Likewise. * g++.dg/conversion/reinterpret3.C: Likewise. * g++.dg/cpp0x/constexpr-cast.C: Likewise. * g++.dg/cpp0x/lambda/lambda-conv11.C: Likewise. * g++.dg/cpp0x/nullptr04.C: Likewise. * g++.dg/cpp0x/reinterpret_cast2.C: Likewise. * g++.dg/cpp0x/rv-cast2.C: Likewise. * g++.dg/cpp1y/lambda-conv1.C: Likewise. * g++.dg/cpp1z/noexcept-type7.C: Likewise. * g++.dg/cpp2a/array-conv9.C: Likewise. * g++.dg/expr/cast11.C: Likewise. * g++.dg/expr/static_cast8.C: Likewise. * g++.dg/ext/vector6.C: Likewise. * g++.dg/other/conversion1.C: Likewise. * g++.dg/parse/pr26997.C: Likewise. * g++.dg/rtti/no-rtti.C: Likewise. * g++.dg/tc1/dr137.C: Likewise. * g++.dg/template/cast4.C: Likewise. * g++.dg/warn/Wcast-qual1.C: Likewise. * g++.dg/warn/Wcast-qual2.C: Likewise. * g++.dg/warn/Wconditionally-supported-1.C: Likewise. * g++.dg/warn/Wuseless-cast.C: Likewise. * g++.dg/warn/pr35711.C: Likewise. * g++.old-deja/g++.bugs/900227_01.C: Likewise. * g++.old-deja/g++.bugs/900404_07.C: Likewise. * g++.old-deja/g++.jason/overload1.C: Likewise. * g++.old-deja/g++.jason/rfg26.C: Likewise. * g++.old-deja/g++.jason/rvalue3.C: Likewise. * g++.old-deja/g++.jason/warning2.C: Likewise. * g++.old-deja/g++.mike/dyncast4.C: Likewise. * g++.old-deja/g++.mike/dyncast6.C: Likewise. * g++.old-deja/g++.mike/p11482.C: Likewise. * g++.old-deja/g++.mike/p2573.C: Likewise. * g++.old-deja/g++.mike/p2855.C: Likewise. * g++.old-deja/g++.mike/p7476.C: Likewise. * g++.old-deja/g++.mike/p8039.C: Likewise. * g++.old-deja/g++.other/cast2.C: Likewise. * g++.old-deja/g++.other/cast3.C: Likewise. * g++.old-deja/g++.other/dcast1.C: Likewise. * g++.old-deja/g++.other/dcast2.C: Likewise. From-SVN: r279138
2019-12-09Byte vs column awareness for diagnostic-show-locus.c (PR 49973)Lewis Hyatt7-207/+1614
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-09re PR go/92861 (Passes relative time to sem_timedwait on GNU/Hurd)Ian Lance Taylor1-1/+1
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-09tree.c (build_array_type_1): Add SET_CANONICAL parameter and compute ↵Eric Botcazou4-15/+45
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-09Fix column information for omp_clauses in Fortran codeFrederik Harwath2-1/+6
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-09Fix more unrecognised GCN instructionsAndrew Stubbs2-2/+8
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-09Remove gcc/ prefixEric Botcazou1-71/+69
From-SVN: r279130
2019-12-09Fix libdecnumber handling of non-canonical BID significands (PR ↵Joseph Myers9-0/+157
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-09arm: fix v[78]-r multilibs when configured with --with-multlib-list=aprofileRichard Earnshaw2-1/+7
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-09rs6000: Name set<mode>_cc, and delete some old mfcr patternsSegher Boessenkool2-110/+10
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[mid-end] [obvious] Cast to avoid -Wsign-compare warning from r279124Matthew Malcomson2-1/+6
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[mid-end] Add notes to dataflow insn info when re-emitting (PR92410)Matthew Malcomson6-0/+27
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-09Use OPTION_MASK_ISA2_$target_[SET,UNSET, ] to indicate those forHongtao Liu8-308/+372
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[GCC, Vect] Fix costing for vector shiftsSudakshina Das4-1/+31
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-09re PR tree-optimization/92834 (misssed SLP vectorization in LightPixel)Jakub Jelinek4-0/+158
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-09re PR tree-optimization/89007 ([SVE] Implement generic vector average expansion)Prathamesh Kulkarni5-5/+132
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-09Come up with constructors of symtab_node, cgraph_node and varpool_node.Martin Liska5-33/+65
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-09Enable mask movement for VCOND_EXPR under avx512f forHongtao Liu18-128/+1462
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-09re PR go/92861 (Passes relative time to sem_timedwait on GNU/Hurd)Ian Lance Taylor1-1/+1
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-09Daily bump.GCC Administrator1-1/+1
From-SVN: r279104
2019-12-09cvt.c (maybe_warn_nodiscard): Add workaround for GCC 3.4-4.4 - cast msg to ↵Jakub Jelinek2-12/+19
(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-08New bswap testcase.Andrew Pinski2-0/+29
2019-12-08 Andrew Pinski <apinski@marvell.com> * gcc.c-torture/execute/bswap-3.c: New test. From-SVN: r279100
2019-12-08Revert commit r279023.Sandra Loosemore5-54/+17
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-08Fix overflows in -fprofile-reorder-functionsJan Hubicka7-59/+85
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-08opts.c (common_handle_option): Do not clear ipa_reference for -fprofile-use.Jan Hubicka2-4/+5
* opts.c (common_handle_option): Do not clear ipa_reference for -fprofile-use. From-SVN: r279092
2019-12-08Fix tp_first_run update in split_function.Jan Hubicka2-1/+6
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-08Silence overactive sanity check with -fpartial-profile-trainingJan Hubicka2-0/+6
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-08re PR tree-optimization/92860 (Global flags affected by -O settings are ↵Jan Hubicka2-2/+8
clobbered by optimize attribute) PR tree-optimization/92860 * common.opt (fprofile-reorder-functions, ftoplevel-reorder): Add Optimization flag. From-SVN: r279089
2019-12-08Error on Associate with a program.Thomas Koenig4-0/+25
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-08re PR fortran/92764 (ICE in gfc_procedure_use)Thomas Koenig4-0/+19
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-08re PR fortran/92755 (ICE in gfc_dep_resolver, at fortran/dependency.c:2123)Thomas Koenig4-13/+36
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-08Fix ia32 testsuite failures from C2x attributes on typesRainer Orth4-6/+12
* 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-08Daily bump.GCC Administrator1-1/+1
From-SVN: r279084
2019-12-07PR c++/91678 - wrong error with decltype and location wrapper.Marek Polacek4-0/+15
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-07re PR middle-end/90840 (ICE in simplify_subreg, at simplify-rtx.c:6441)Eric Botcazou2-7/+13
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-07Fortran] PR 92793 - fix column used for error diagnosticTobias Burnus8-71/+105
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-07re PR c/87488 (hyperlink filenames in diagnostics)Tobias Burnus2-4/+15
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-07Daily bump.GCC Administrator1-1/+1
From-SVN: r279072
2019-12-07re PR c++/92831 (CWG1299 extend_ref_init_temps_1 punts on COND_EXPRs)Jakub Jelinek4-1/+57
PR c++/92831 * call.c (build_conditional_expr_1): For ?: with omitted middle operand use cp_stabilize_reference if arg1 is glvalue_p rather than just if it is lvalue_p. * g++.dg/ext/temp-extend1.C: New test. From-SVN: r279069
2019-12-06Add test for c++/92451.Marek Polacek2-0/+11
This was ICEing from r277865 to r278786. * g++.dg/overload/error4.C: New test. From-SVN: r279067
2019-12-06parser.c (cp_parser_diagnose_invalid_type_name): Mention that concept is ↵Jakub Jelinek2-1/+5
also available with -std=c++2a. * parser.c (cp_parser_diagnose_invalid_type_name): Mention that concept is also available with -std=c++2a. From-SVN: r279066
2019-12-06c-cppbuiltin.c (c_cpp_builtins): Don't define __cpp_consteval for now.Jakub Jelinek4-1/+10
* c-cppbuiltin.c (c_cpp_builtins): Don't define __cpp_consteval for now. * g++.dg/cpp2a/feat-cxx2a.C: Don't test __cpp_consteval for now. From-SVN: r279065
2019-12-06PR c++/92831 - CWG 1299, not extending temporary lifetime for ?:Jakub Jelinek5-13/+124
* cp-tree.h (extend_ref_init_temps): Add a new argument with NULL default arg. * call.c (set_up_extended_ref_temp): Add COND_GUARD argument, pass it down to extend_ref_init_temps. Before pushing cleanup, if COND_GUARD is non-NULL, create a bool temporary if needed, initialize to false and guard the cleanup with the temporary being true. (extend_ref_init_temps_1): Add COND_GUARD argument, pass it down to recursive calls and set_up_extended_ref_temp. Handle COND_EXPR. (extend_ref_init_temps): Add COND_GUARD argument, pass it down to recursive calls and to extend_ref_init_temps_1. * g++.dg/cpp0x/temp-extend2.C: New test. From-SVN: r279064
2019-12-06re PR go/92820 (libgo.so.15 has executable stack)Ian Lance Taylor1-1/+1
PR go/92820 runtime: only build go-context for x86 GNU/Linux Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210258 From-SVN: r279063
2019-12-06re PR other/29842 ([meta-bug] outstanding patches / issues from ↵Ian Lance Taylor1-1/+1
STMicroelectronics) PR go/29842 runtime: update HURD support for mOS now being embedded Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/210285 From-SVN: r279062
2019-12-06re PR rtl-optimization/92176 (LRA problem with reloads for subreg operands)Andreas Krebbel4-3/+47
2019-12-06 Andreas Krebbel <krebbel@linux.ibm.com> Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/92176 * lra.c (simplify_subreg_regno): Don't permit unconditional changing mode for LRA too. 2019-12-06 Andreas Krebbel <krebbel@linux.ibm.com> Vladimir Makarov <vmakarov@redhat.com> PR rtl-optimization/92176 * gcc.target/s390/pr92176.c: New test. Co-Authored-By: Vladimir Makarov <vmakarov@redhat.com> From-SVN: r279061
2019-12-06Avoid -Wincompatible-pointer-types on targets like arm-eabi.Martin Sebor3-3/+8
gcc/testsuite/ChangeLog: * gcc.dg/Wstringop-overflow-23.c: Use the correct argument type. * gcc.dg/Wstringop-overflow-24.c: Same. From-SVN: r279059