aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2018-10-18Add -std=c2x, -std=gnu2x, -Wc11-c2x-compat, C2X _Static_assert support.Joseph Myers24-28/+237
Now new features are starting to be added to a C2X draft (in the C2x branch of the C standard git repository, no public WG14 document yet), it's time to add -std=c2x and associated options to GCC for use in enabling C2X features. This patch adds the expected set of options: -std=c2x, -std=gnu2x, -Wc11-c2x-compat. A first C2X feature is added (the only one so far in the repository that's obviously relevant to GCC): support (as in C++) for the string constant to be omitted in _Static_assert. This feature is duly also supported as an extension in earlier standard modes (diagnosed with -pedantic, unless -Wno-c11-c2x-compat is given, or with -Wc11-c2x-compat even in C2X mode). Bootstrapped with no regressions on x86_64-pc-linux-gnu. gcc/ * doc/cpp.texi (__STDC_VERSION__): Document C2X handling. * doc/invoke.texi (-std=c2x, -std=gnu2x): Document new options. * doc/standards.texi (C Language): Document C2X. * dwarf2out.c (highest_c_language), config/rl78/rl78.c (rl78_option_override): Handle "GNU C2X" language name. gcc/c/ * c-errors.c (pedwarn_c11): New function. * c-parser.c (disable_extension_diagnostics): Save warn_c11_c2x_compat and set it to 0. (restore_extension_diagnostics): Restore warn_c11_c2x_compat. (c_parser_static_assert_declaration_no_semi): Handle _Static_assert without string constant. * c-tree.h (pedwarn_c11): New prototype. gcc/c-family/ * c-common.c (flag_isoc2x): New variable. * c-common.h (clk_c): Update comment to reference C2X. (flag_isoc99, flag_isoc11): Update comments to reference future standard versions in general. (flag_isoc2x): Declare. * c-opts.c (set_std_c2x): New function. (c_common_handle_option): Handle -std=c2x and -std=gnu2x. (set_std_c89, set_std_c99, set_std_c11, set_std_c17): Set flag_isoc2x to 0. * c.opt (Wc11-c2x-compat, std=c2x, std=gnu2x): New options. gcc/testsuite/ * gcc.dg/c11-static-assert-7.c, gcc.dg/c11-static-assert-8.c, gcc.dg/c11-static-assert-9.c, gcc.dg/c2x-static-assert-1.c, gcc.dg/c2x-static-assert-2.c, gcc.dg/c99-static-assert-2.c, gcc.dg/gnu2x-static-assert-1.c: New tests. * gcc.dg/missing-symbol-3.c: Update expected fix-it text. libcpp/ * include/cpplib.h (enum c_lang): Add CLK_GNUC2X and CLK_STDC2X. * init.c (lang_defaults): Add GNUC2X and STDC2X entries. (cpp_init_builtins): Define __STDC_VERSION__ to 202000L for C2X. From-SVN: r265251
2018-10-17Update C17 option descriptions not to say "expected to be published".Joseph Myers2-6/+11
* c.opt (std=c17, std=c18, std=gnu17, std=gnu18, std=iso9899:2017) (std=iso9899:2018): Document C17 as published in 2018. From-SVN: r265250
2018-10-17Update manual references for C17 having been published.Joseph Myers3-3/+9
This patch makes references in the manual to C17 reflect it having been published in July 2018. (For the reasons it took so long to get to ballot and publication, see the WG14 convenor's report to the last SC22 plenary - SC22 N5297 - where it references "A troubling new trend where ISO CS has begun enforcing undocumented rules that are approved neither by the TMB nor by the WG 14 editors, leading to a decrease in the usefulness of standards documents.".) Tested with "make info html pdf". * doc/invoke.texi (-std=c17), doc/standards.texi (C Language): Document C17 as published in 2018. From-SVN: r265249
2018-10-17Fix select-type regressionTobias Burnus4-1/+70
PR fortran/87632 * resolve.c (resolve_select_type): Use correct variable. PR fortran/87632 * gfortran.dg/select_type_47.f90: New. From-SVN: r265248
2018-10-17re PR middle-end/87623 (bytes swapped in register when comparing cause fail ↵Eric Botcazou4-3/+48
when compiled with -O1 or higher) PR middle-end/87623 * fold-const.c (fold_truth_andor_1): If the right side is not constant, bail out if both sides do not have the same storage order. From-SVN: r265242
2018-10-17bitmap.c (bitmap_head::dump): New.Aldy Hernandez29-958/+1272
* bitmap.c (bitmap_head::dump): New. * bitmap.h (bitmap_head): Add dump(). * gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range): Adjust for value_range API. (evrp_range_analyzer::set_ssa_range_info): Same. (evrp_range_analyzer::record_ranges_from_phis): Same. (evrp_range_analyzer::record_ranges_from_stmt): Same. * gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children): Same. * gimple-ssa-sprintf.c (get_int_range): Same. (format_integer): Same. (sprintf_dom_walker::handle_gimple_call): Same. * ipa-cp.c (ipcp_vr_lattice::meet_with_1): Same. (ipcp_vr_lattice::top_p): Same. (ipcp_vr_lattice::bottom_p): Same. (ipcp_vr_lattice::set_to_bottom): Same. (ipa_vr_operation_and_type_effects): Same. (propagate_vr_across_jump_function): Same. (ipcp_store_vr_results): Same. * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Same. (ipa_print_node_jump_functions_for_edge): Same. (ipa_get_value_range): Same. (ipa_compute_jump_functions_for_edge): Same. (ipa_write_jump_function): Same. * tree-ssa-dom.c (simplify_stmt_for_jump_threading): Same. * tree-ssa-threadedge.c (record_temporary_equivalences_from_phis): Same. * vr-values.c (set_value_range_to_nonnegative): Same. (set_value_range_to_truthvalue): Same. (vr_values::get_value_range): Same. (vr_values::set_defs_to_varying): Same. (vr_values::update_value_range): Same. (symbolic_range_based_on_p): Same. (vr_values::op_with_boolean_value_range_p): Same. (vr_values::extract_range_for_var_from_comparison_expr): Same. (vr_values::extract_range_from_ssa_name): Same. (vr_values::extract_range_from_binary_expr): Same. (vr_values::extract_range_from_unary_expr): Same. (vr_values::extract_range_from_cond_expr): Same. (vr_values::extract_range_from_comparison): Same. (vr_values::check_for_binary_op_overflow): Same. (vr_values::extract_range_basic): Same. (vr_values::extract_range_from_assignment): Same. (compare_ranges): Same. (compare_range_with_value): Same. (vr_values::adjust_range_with_scev): Same. (vrp_valueize): Same. (vrp_valueize_1): Same. (vr_values::get_vr_for_comparison): Same. (vr_values::compare_name_with_value): Same. (vr_values::compare_names): Same. (vr_values::vrp_evaluate_conditional): Same. (find_case_label_ranges): Same. (vr_values::vrp_visit_switch_stmt): Same. (vr_values::extract_range_from_phi_node): Same. (vr_values::simplify_div_or_mod_using_ranges): Same. (vr_values::simplify_bit_ops_using_ranges): Same. (test_for_singularity): Same. (range_fits_type_p): Same. (vr_values::simplify_cond_using_ranges_1): Same. (vr_values::simplify_switch_using_ranges): Same. (vr_values::simplify_float_conversion_using_ranges): Same. (vr_values::two_valued_val_range_p): Same. (vr_values::add_equivalence): Move to value_range::equiv_add. * vr-values.h (vr_values::add_equivalence): Remove. (VR_INITIALIZER): Remove. * tree-vrp.c (value_range::set): New. (value_range::equiv_add): New. (value_range::value_range): New. (value_range::deep_copy): New. (value_range::check): New. (value_range::equal_p): New. (value_range::ignore_equivs_equal_p): New. (value_range::operator==): New. (value_range::operator!=): New. (value_range::symbolic_p): New. (value_range::numeric_p): New. (value_range::set_undefined): New. (value_range::set_varying): New. (value_range::may_contain_p): New. (value_range::equiv_clear): New. (value_range::singleton_p): New. (value_range::intersect): New. (value_range::dump): New. (value_range::set_and_canonicalize): New. (set_value_range): Adjust for value_range API. (set_value_range_to_undefined): Same. (set_value_range_to_varying): Same. (set_and_canonicalize_value_range): Same. (set_value_range_to_nonnull): Same. (set_value_range_to_null): Same. (range_is_null): Same. (range_is_nonnull): Same. (range_int_cst_p): Same. (range_int_cst_singleton_p): Same. (symbolic_range_p): Same. (range_includes_zero_p): Same. (value_range_constant_singleton): Same. (vrp_set_zero_nonzero_bits): Same. (ranges_from_anti_range): Same. (extract_range_into_wide_ints): Same. (extract_range_from_multiplicative_op): Same. (set_value_range_with_overflow): Same. (extract_range_from_binary_expr_1): Same. (extract_range_from_unary_expr): Same. (dump_value_range): Same. (debug_value_range): Same. (vrp_prop::check_array_ref): Same. (vrp_prop::check_mem_ref): Same. (vrp_prop::vrp_initialize): Same. (vrp_prop::visit_stmt): Same. (intersect_ranges): Same. (vrp_prop::visit_phi): Same. (vrp_prop::vrp_finalize): Same. (determine_value_range_1): Same. (determine_value_range): Same. (vrp_intersect_ranges_1): Rename to... (vrp_intersect_1): this. (vrp_intersect_ranges): Rename to... (value_range::intersect_helper): ...this. (vrp_meet_1): Rename to... (value_range::union_helper): ...this. (vrp_meet): Rename to... (value_range::union_): ...this. (copy_value_range): Remove. * tree-vrp.h (struct value_range): Rewrite into a proper class. (value_range::vrtype): New. (value_range::type): New. (value_range::equiv): New. (value_range::min): New. (value_range::max): New. (value_range::varying_p): New. (value_range::undefined_p): New. (value_range::null_p): New. (value_range::equiv_add): New. (copy_value_range): Remove. From-SVN: r265241
2018-10-17Run selftests for C++ as well as CDavid Malcolm23-49/+159
gcc/ChangeLog: * Makefile.in (SELFTEST_TARGETS): New. (selftest) Change from s-selftest-c to $(SELFTEST_TARGETS). (C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb) (selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move to c/Make-lang.in. (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++) (selftest-c++-gdb, selftest-c++-valgrind): Move to cp/Make-lang.in. * configure: Regenerate. * configure.ac (selftest_languages): New. gcc/brig/ChangeLog: * Make-lang.in (selftest-brig): New. gcc/c/ChangeLog: * Make-lang.in (selftest-c): New. (C_SELFTEST_FLAGS, C_SELFTEST_DEPS, s-selftest-c, selftest-c-gdb) (selftest-gdb, selftest-c-valgrind, selftest-valgrind): Move here from gcc/Makefile.in. gcc/cp/ChangeLog: * Make-lang.in (selftest-c++): New. (CPP_SELFTEST_FLAGS, CPP_SELFTEST_DEPS, s-selftest-c++) (selftest-c++-gdb, selftest-c++-valgrind): Move here from gcc/Makefile.in. gcc/fortran/ChangeLog: * Make-lang.in (selftest-fortran): New. gcc/go/ChangeLog: * Make-lang.in (selftest-go): New. gcc/jit/ChangeLog: * Make-lang.in (selftest-jit): New. gcc/lto/ChangeLog: * Make-lang.in (selftest-lto): New. gcc/objc/ChangeLog: * Make-lang.in (selftest-objc): New. gcc/objcp/ChangeLog: * Make-lang.in (selftest-obj-c++): New. From-SVN: r265240
2018-10-17tree-vrp.c (extract_range_from_multiplicative_op): Remove overflow wraps ↵Aldy Hernandez4-28/+30
argument. * tree-vrp.c (extract_range_from_multiplicative_op): Remove overflow wraps argument. (extract_range_from_binary_expr_1): Do not pass overflow wraps to wide_int_range_multiplicative_op. * wide-int-range.cc (wide_int_range_mult_wrapping): Remove overflow wraps argument. (wide_int_range_multiplicative_op): Same. (wide_int_range_lshift): Same. (wide_int_range_div): Same. * wide-int-range.h (wide_int_range_multiplicative_op): Same. (wide_int_range_lshift): Same. (wide_int_range_div): Same. From-SVN: r265238
2018-10-17wide-int-range.h (wide_int_range_shift_undefined_p): Adjust to use sign as ↵Aldy Hernandez3-4/+13
argument. * wide-int-range.h (wide_int_range_shift_undefined_p): Adjust to use sign as argument. * tree-vrp.c (extract_range_from_binary_expr_1): Pass sign to wide_int_range_shift_undefined_p. From-SVN: r265237
2018-10-172018-10-17 Paolo Carlini <paolo.carlini@oracle.com>Paolo Carlini2-1/+4
* Fix typo in ChangeLog. From-SVN: r265234
2018-10-17re PR c++/84705 (internal compiler error: in add_stmt, at cp/semantics.c:390)Paolo Carlini3-0/+25
/cp 2018-10-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84705 * init.c (build_cplus_new): Avoid duplicate diagnostic about incomplete type, early return error_mark_node if the second argument is error_mark_node. /testsuite 2018-10-17 Paolo Carlini <paolo.carlini@oracle.com> PR c++/84705 * g++.dg/cpp0x/pr84705.C: New. From-SVN: r265233
2018-10-17re PR fortran/56386 ([F03] ICE with ASSOCIATE construct and an derived type ↵Paul Thomas6-0/+108
array component) 2018-10-17 Paul Thomas <pault@gcc.gnu.org> PR fortran/56386 PR fortran/58906 PR fortran/77385 PR fortran/80260 PR fortran/82077 * resolve.c (resolve_variable): Fix up expressions with array associate names, where the parser did not detect that this is array and there was no array part_ref in the expression. 2018-10-17 Paul Thomas <pault@gcc.gnu.org> PR fortran/56386 PR fortran/58906 PR fortran/77385 * gfortran.dg/associate_44.f90 : New test. PR fortran/80260 * gfortran.dg/select_type_45.f90 : New test. PR fortran/82077 * gfortran.dg/select_type_46.f90 : New test. From-SVN: r265232
2018-10-17Daily bump.GCC Administrator1-1/+1
From-SVN: r265228
2018-10-17* es.po: Update.Joseph Myers2-8/+10
From-SVN: r265223
2018-10-16Extend source-expr test caseTobias Burnus2-0/+39
PR fortran/67125 * gfortran.dg/allocate_with_source_26.f90: Extend testcase with polymorphic variables. From-SVN: r265215
2018-10-16Fix bounds with ALLOCATE with source-exprTobias Burnus5-14/+101
PR fortran/67125 * trans-array.c (gfc_array_init_size, gfc_array_allocate): Rename argument e3_is_array_constr to e3_has_nodescriptor and update comments. * trans-stmt.c (gfc_trans_allocate): Also fix lower bound to 1 for nonalloc/nonpointer func results/vars besides array constructors. PR fortran/67125 * gfortran.dg/allocate_with_source_26.f90: New. From-SVN: r265212
2018-10-16Handle form_team w/ function argsTobias Burnus2-21/+44
PR fortran/87556 * trans-stmt.c (form_team, change_team, sync_team): Don't ignore argse.pre/argse.post. From-SVN: r265211
2018-10-16[AArch64] Use @ pattern to eliminate switch statement in one more placeKyrylo Tkachov3-21/+10
We can use the new '@' modifier to MD patterns to generate mode-parametrised gen_ functions for the despeculate_copy patterns and therefore remove the switch on modes in aarch64.c that is used to pick the right generator. This simplifies the code. * config/aarch64/aarch64.md (despeculate_copy<ALLI_TI:mode>): Rename to... (@despeculate_copy<ALLI_TI:mode>): ... This. * config/aarch64/aarch64.c (aarch64_speculation_safe_value): Remove switch statement. From-SVN: r265210
2018-10-16Obsolete Solaris 10 supportRainer Orth3-4/+12
contrib: * config-list.mk (LIST): Switch to i686-solaris2.11, sparc64-sun-solaris2.11. gcc: * config.gcc: Obsolete *-*-solaris2.10*. * doc/install.texi (Specific, *-*-solaris2*): Document it. From-SVN: r265186
2018-10-16Daily bump.GCC Administrator1-1/+1
From-SVN: r265183
2018-10-15ft32.md (ft32_general_movsrc_operand): Disable reg + sym +- const_int ↵Jeff Law2-1/+11
addressing modes. * config/ft32/ft32.md (ft32_general_movsrc_operand): Disable reg + sym +- const_int addressing modes. From-SVN: r265179
2018-10-15diagnostics: add minimum width to left margin for line numbersDavid Malcolm16-60/+152
This patch adds a minimum width to the left margin used for printing line numbers. I set the default to 6. Hence rather than: some-filename:9:1: some message 9 | some source text | ^~~~~~~~~~~~~~~~ some-filename:10:1: another message 10 | more source text | ^~~~~~~~~~~~~~~~ we now print: some-filename:9:42: some message 9 | some source text | ^~~~~~~~~~~~~~~~ some-filename:10:42: another message 10 | more source text | ^~~~~~~~~~~~~~~~ This implicitly fixes issues with margins failing to line up due to different lengths of the number when we haven't read the full file yet and so don't know the highest possible line number, for line numbers up to 99999. Doing so adds some whitespace on the left-hand side, for non-huge files, at least. I believe that this makes it easier to see where each diagnostic starts, by visually breaking things up at the leftmost column; my hope is to make it easier for the eye to see the different diagnostics as if they were different "paragraphs". gcc/ChangeLog: * common.opt (fdiagnostics-minimum-margin-width=): New option. * diagnostic-show-locus.c (layout::layout): Apply the minimum margin width. (layout::start_annotation_line): Only print up to 3 of the margin character, to avoid touching the left-hand side. (selftest::test_diagnostic_show_locus_fixit_lines): Update for minimum margin width, as set by test_diagnostic_context's ctor. (selftest::test_fixit_insert_containing_newline): Likewise. (selftest::test_fixit_insert_containing_newline_2): Likewise. (selftest::test_line_numbers_multiline_range): Clear dc.min_margin_width. * diagnostic.c (diagnostic_initialize): Initialize min_margin_width. * diagnostic.h (struct diagnostic_context): Add field "min_margin_width". * doc/invoke.texi: Add -fdiagnostics-minimum-margin-width=. * opts.c (common_handle_option): Handle OPT_fdiagnostics_minimum_margin_width_. * selftest-diagnostic.c (selftest::test_diagnostic_context::test_diagnostic_context): Initialize min_margin_width to 6. * toplev.c (general_init): Initialize global_dc->min_margin_width. gcc/testsuite/ChangeLog: * gcc.dg/missing-header-fixit-3.c: Update expected indentation to reflect minimum margin width. * gcc.dg/missing-header-fixit-4.c: Likewise. * gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers.c: Likewise. * gcc.dg/plugin/diagnostic-test-show-locus-color-line-numbers.c: Likewise. * gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers-2.c: New test. * gcc.dg/plugin/plugin.exp (plugin_test_list): Add it. From-SVN: r265178
2018-10-15Remove stray reference to error_at_rich_locDavid Malcolm2-1/+6
"error_at_rich_loc" went away in r254280 (in favor of overloading "error_at"), but there was a stray reference in a comment. Remove it. gcc/ChangeLog: * gcc-rich-location.h (gcc_rich_location::add_location_if_nearby): Fix usage of "error_at_rich_loc" in the comment. From-SVN: r265177
2018-10-15re PR fortran/87597 (wrong result with matmul inlining)Tobias Burnus2-1/+6
2018-10-15 Tobias Burnus <burnus@net-b.de> PR fortran/87597 * gfortran.dg/inline_matmul_24.f90: Tweak scan-tree. From-SVN: r265175
2018-10-15[PR87563][AARCH64-SVE]: Don't keep ifcvt loop when COND_<OP> ifn could not ↵Renlin Li6-8/+62
be vectorized. ifcvt will created versioned loop and it will permissively generate scalar COND_<OP> ifn. If in the loop vectorize pass, COND_<OP> could not get vectoized, the if-converted loop should be abandoned when the target doesn't support such ifn. gcc/ 2018-10-12 Renlin Li <renlin.li@arm.com> PR target/87563 * tree-vectorizer.c (try_vectorize_loop_1): Don't use if-conversioned loop when it contains ifn with types not supported by backend. * internal-fn.c (expand_direct_optab_fn): Add an assert. (direct_internal_fn_supported_p): New helper function. * internal-fn.h (direct_internal_fn_supported_p): Declare. gcc/testsuite/ 2018-10-12 Renlin Li <renlin.li@arm.com> PR target/87563 * gcc.target/aarch64/sve/pr87563.c: New. From-SVN: r265172
2018-10-15re PR fortran/87566 (ICE with class(*) and select)Paul Thomas6-5/+136
2018-10-15 Paul Thomas <pault@gcc.gnu.org> Tobias Burnus <burnus@gcc.gnu.org> PR fortran/87566 * resolve.c (resolve_assoc_var): Add missing array spec for class associate names. (resolve_select_type): Handle case where last typed component of the selector has a different type to the expression. * trans-expr.c (gfc_find_and_cut_at_last_class_ref): Replace call to gfc_expr_to_initialize with call to gfc_copy_expr. (gfc_conv_class_to_class): Guard assignment to 'len' field against case where zero constant is supplied. 2018-10-15 Paul Thomas <pault@gcc.gnu.org> Tobias Burnus <burnus@gcc.gnu.org> PR fortran/87566 * gfortran.dg/select_type_44.f90: New test. * gfortran.dg/associate_42.f90: New test. Co-Authored-By: Tobias Burnus <burnus@gcc.gnu.org> From-SVN: r265171
2018-10-15re PR target/87572 (ICE in emit_move_insn, at expr.c:3722)Jakub Jelinek2-2/+7
PR target/87572 * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET): Remove OPTION_MASK_ISA_AVX5124FMAPS_UNSET and OPTION_MASK_ISA_AVX5124VNNIW_UNSET. From-SVN: r265169
2018-10-15re PR tree-optimization/87022 (miscompilation with -ftree-loop-distribution)Bin Cheng4-1/+49
PR tree-optimization/87022 * tree-loop-distribution.c (pg_add_dependence_edges): Check all bits in dist vector rather than the first one. gcc/testsuite PR tree-optimization/87022 * gcc.dg/tree-ssa/pr87022.c: New test. From-SVN: r265161
2018-10-15re PR middle-end/87610 (wrong-code with restrict)Richard Biener4-3/+51
2018-10-15 Richard Biener <rguenther@suse.de> PR middle-end/87610 * tree-ssa-structalias.c (struct vls_data): Add escaped_p member. (visit_loadstore): When a used restrict tag escaped verify that the points-to solution of "other" pointers do not include escaped. (compute_dependence_clique): If a used restrict tag escaped communicated that down to visit_loadstore. * gcc.dg/torture/restrict-6.c: New testcase. From-SVN: r265160
2018-10-15S/390: Fix problem with vec_init expanderAndreas Krebbel4-3/+43
gcc/ChangeLog: 2018-10-15 Andreas Krebbel <krebbel@linux.ibm.com> * config/s390/s390.c (s390_expand_vec_init): Force vector element into reg if it isn't a general operand. gcc/testsuite/ChangeLog: 2018-10-15 Andreas Krebbel <krebbel@linux.ibm.com> * g++.dg/vec-init-1.C: New test. From-SVN: r265158
2018-10-15Daily bump.GCC Administrator1-1/+1
From-SVN: r265155
2018-10-14i386: Add register source to movddupH.J. Lu4-1/+24
Add register source to movddup so that IRA will allow register source for *vec_dupv2di when SSE3 is enabled. gcc/ PR target/87599 * config/i386/sse.md (*vec_dupv2di): Add register source to movddup. gcc/testsuite/ PR target/87599 * gcc.target/i386/pr87599.c: New test. From-SVN: r265151
2018-10-14i386: Also disable AVX512IFMA/AVX5124FMAPS/AVX5124VNNIWH.J. Lu4-2/+29
Also disable AVX512IFMA, AVX5124FMAPS and AVX5124VNNIW when disabling AVX512F. gcc/ PR target/87572 * common/config/i386/i386-common.c (OPTION_MASK_ISA_AVX512F_UNSET): Add OPTION_MASK_ISA_AVX512IFMA_UNSET, OPTION_MASK_ISA_AVX5124FMAPS_UNSET and OPTION_MASK_ISA_AVX5124VNNIW_UNSET. gcc/testsuite/ PR target/87572 * gcc.target/i386/pr87572.c: New test. From-SVN: r265150
2018-10-14re PR fortran/83146 (ICE on SELECT CASE statement with associate name)Paul Thomas2-0/+40
2018-10-14 Paul Thomas <pault@gcc.gnu.org> PR fortran/83146 * gfortran.dg/associate_43.f90: New test. From-SVN: r265148
2018-10-14This patch adjusts one of the c-torture tests to account for the possible ↵Anthony Green2-0/+7
lack of divide-by-zero exceptions on certain moxie targets. From-SVN: r265147
2018-10-14Daily bump.GCC Administrator1-1/+1
From-SVN: r265146
2018-10-13dwarf2cfi.c (struct dw_trace_info): Add args_size_defined_for_eh.Eric Botcazou2-2/+24
* dwarf2cfi.c (struct dw_trace_info): Add args_size_defined_for_eh. (notice_args_size): Set it in the current trace if no insn that can throw internally has been seen yet. (connect_traces): When connecting args_size between traces, allow the incoming values not to match if there is an insn setting it before the first insn that can throw internally; in that case, force the creation of a CFI note on this latter insn. From-SVN: r265142
2018-10-13Fix compilation failure with C++98 compilersJonathan Wakely2-1/+7
* opt-problem.h (opt_wrapper): Use template-argument-list when naming the base class, because using the injected-class-name was not clearly specified until DR 176. From-SVN: r265140
2018-10-13Daily bump.GCC Administrator1-1/+1
From-SVN: r265139
2018-10-12pdp11.md (doloop_end): New expander.Paul Koning3-2/+95
* config/pdp11/pdp11.md (doloop_end): New expander. (doloop_end_insn): renamed from "doloop_end". (addqi3): New pattern. (subqi3): New pattern. * config/pdp11/predicates.md (incdec_operand): New predicate. From-SVN: r265132
2018-10-12Add pattern to remove useless float casts in comparisons.Yury Gribov8-11/+110
PR middle-end/81376 gcc/ * real.c (format_helper::can_represent_integral_type_p): New function * real.h (format_helper::can_represent_integral_type_p): Ditto. * match.pd: New pattern. gcc/testsuite/ * c-c++-common/pr81376.c: New test. * gcc.target/i386/387-ficom-2.c: Update test. * gcc.target/i386/387-ficom-2.c: Ditto. From-SVN: r265131
2018-10-12introduce --enable-large-address-awareAlexandre Oliva7-2/+69
Add a configure knob for mingw32 and 64 toolchains to default passing --large-address-aware to the linker, when creating 32-bit binaries. -Wl,--disable-large-address-aware can still reverse its effects. for gcc/ChangeLog * configure.ac: Introduce --enable-large-address-aware to define MINGW_DEFAULT_LARGE_ADDR_AWARE. * doc/install.texi: Document it. * configure, config.in: Rebuilt. * config/i386/mingw32.h (LINK_SPEC_LARGE_ADDR_AWARE): Define, based on MINGW_DEFAULT_LARGE_ADDR_AWARE. (LINK_SPEC): Insert it. * config/i386/mingw-264.h: Likewise. From-SVN: r265130
2018-10-12define HAVE_GAS_ALIGNED_COMMAlexandre Oliva2-0/+8
HAVE_GAS_ALIGNED_COMM is referenced in an initializer in cygming.opt, but it's not guaranteed to be defined by configure, so define it to zero in a cygming-specific header if it's not defined. for gcc/ChangeLog * cygming.h (HAVE_GAS_ALIGNED_COMM): Fallback-define. From-SVN: r265129
2018-10-12[C++ PATCH] more TU parsing refactoringNathan Sidwell3-67/+74
https://gcc.gnu.org/ml/gcc-patches/2018-10/msg00788.html * parser.h (struct cp_parser): Drop implicit_extern_c. * parser.c (cp_debug_parser): Drop implicit_extern_c. (cp_parser_new): Likewise. (cp_parser_translation_unit): Handle implicit extern c here. Call cp_parser_toplevel_declaration. (cp_parser_toplevel_declaration): New, broken out of ... (cp_parser_declaration_seq_opt): ... here. Call it. Drop implicit extern C handling. From-SVN: r265127
2018-10-12Fix off-by-one issue with inline matmulTobias Burnus4-1/+68
PR fortran/87597 * expr.c (gfc_simplify_expr): Avoid simplifying the 'array' argument to lbound/ubound/lcobound/ ucobound. PR fortran/87597 * gfortran.dg/inline_matmul_24.f90: New. From-SVN: r265126
2018-10-12Fix error-recovery ICE in check_proc_interfaceTobias Burnus11-32/+69
PR fortran/58787 * decl.c (get_proc_name): Return with error before creating sym_tree. PR fortran/58787 * gfortran.dg/goacc/pr77765.f90: Modify dg-error. * gfortran.dg/interface_42.f90: Ditto. * gfortran.dg/internal_references_1.f90: Ditto. * gfortran.dg/invalid_procedure_name.f90: Ditto. * gfortran.dg/pr65453.f90: Ditto. * gfortran.dg/pr77414.f90: Ditto. * gfortran.dg/pr78741.f90: Ditto. * gfortran.dg/same_name_2.f90: Ditto. From-SVN: r265125
2018-10-12re PR rtl-optimization/87600 (Fix for PRs 86939 and 87479 causes build ↵Peter Bergner2-0/+10
issues for several targets) PR rtl-optimization/87600 * ira-lives (non_conflicting_reg_copy_p): Disable for non LRA targets. From-SVN: r265113
2018-10-12md.texi (doloop_end): Document that the pattern code may need to check ↵Paul Koning2-4/+38
operand mode. * doc/md.texi (doloop_end): Document that the pattern code may need to check operand mode. From-SVN: r265102
2018-10-12[AArch64] Support zero-extended move to FP registerWilco Dijkstra5-13/+68
The popcount expansion uses SIMD instructions acting on 64-bit values. As a result a popcount of a 32-bit integer requires zero-extension before moving the zero-extended value into an FP register. This patch adds support for zero-extended int->FP moves to avoid the redundant uxtw. Similarly, add support for 32-bit zero-extending load->FP register and 32-bit zero-extending FP->FP and FP->int moves. Add a missing 'fp' arch attribute to the related 8/16-bit pattern and fix an incorrect type attribute. To complete zero-extended load support, add a new alternative to load_pair_zero_extendsidi2_aarch64 to support LDP into FP registers too. int f (int a) { return __builtin_popcount (a); } Before: uxtw x0, w0 fmov d0, x0 cnt v0.8b, v0.8b addv b0, v0.8b fmov w0, s0 ret After: fmov s0, w0 cnt v0.8b, v0.8b addv b0, v0.8b fmov w0, s0 ret Passes regress & bootstrap on AArch64. gcc/ * config/aarch64/aarch64.md (zero_extendsidi2_aarch64): Add alternatives to zero-extend between int and floating-point registers. (load_pair_zero_extendsidi2_aarch64): Add alternative for zero-extended ldp into floating-point registers. Add type and arch attributes. (zero_extend<SHORT:mode><GPI:mode>2_aarch64): Add arch attribute. Use f_loads for type attribute. testsuite/ * gcc.target/aarch64/popcnt.c: Test zero-extended popcount. * gcc.target/aarch64/vec_zeroextend.c: Test zero-extended vectors. From-SVN: r265079
2018-10-12Fix typo in previous commit.Christophe Lyon2-1/+6
2018-10-12 Christophe Lyon <christophe.lyon@linaro.org> PR c++/87364 * c-pretty-print.c (c_pretty_printer::constant): Fix typo. From-SVN: r265078