1. 17 May, 2019 34 commits
    • [PR89433] Use 'oacc_verify_routine_clauses' for C/C++ OpenACC 'routine' directives · 5bf04509
      	gcc/
      	PR middle-end/89433
      	* omp-general.c (oacc_build_routine_dims): Move some of its
      	processing into...
      	(oacc_verify_routine_clauses): ... this new function.
      	* omp-general.h (oacc_verify_routine_clauses): New prototype.
      	gcc/c/
      	PR c/89433
      	* c-parser.c (c_parser_oacc_routine): Normalize order of clauses.
      	(c_finish_oacc_routine): Call oacc_verify_routine_clauses.
      	gcc/cp/
      	PR c++/89433
      	* parser.c (cp_parser_oacc_routine)
      	(cp_parser_late_parsing_oacc_routine): Normalize order of clauses.
      	(cp_finalize_oacc_routine): Call oacc_verify_routine_clauses.
      	gcc/testsuite/
      	PR testsuite/89433
      	* c-c++-common/goacc/routine-2.c: Update, and move some test
      	into...
      	* c-c++-common/goacc/routine-level-of-parallelism-1.c: ... this
      	new file.
      
      From-SVN: r271344
      Thomas Schwinge committed
    • [PR89433] Refer to OpenACC 'routine' clauses from "omp declare target" attribute · e03436e7
      	gcc/c-family/
      	PR c/89433
      	* c-attribs.c (c_common_attribute_table): Set min_len to -1 for
      	"omp declare target".
      	gcc/c/
      	PR c/89433
      	* c-parser.c (c_finish_oacc_routine): Refer to OpenACC 'routine'
      	clauses from "omp declare target" attribute.
      	gcc/cp/
      	PR c++/89433
      	* parser.c (cp_finalize_oacc_routine): Refer to OpenACC 'routine'
      	clauses from "omp declare target" attribute.
      	gcc/fortran/
      	PR fortran/89433
      	* f95-lang.c (gfc_attribute_table): Set min_len to -1 for "omp
      	declare target".
      	* trans-decl.c (add_attributes_to_decl): Refer to OpenACC
      	'routine' clauses from "omp declare target" attribute.
      	gcc/testsuite/
      	PR testsuite/89433
      	* c-c++-common/goacc/classify-routine.c: Update.
      	* gfortran.dg/goacc/classify-routine.f95: Likewise.
      
      From-SVN: r271343
      Thomas Schwinge committed
    • darwin, powerpc - adjust the formatting of picbase labels · 5d9a8091
      The rest of the Darwin ports now emit Lnnn$pb as the picbase
      lable instead of the ancient (and hard to read) "L0000000nnn$pb".
      
      This just updates this part of the rs6000 port, NFC intended.
      
      2019-05-17  Iain Sandoe  <iain@sandoe.co.uk>
      
      	* config/rs6000/rs6000.c (machopic_output_stub): Adjust the
      	formatting of picbase labels to match other ports.
      
      From-SVN: r271342
      Iain Sandoe committed
    • darwin, powerpc - fix whitespace in generated code. · 163cf956
      NFC intended, this simply adds a missing tab to the
      generaed code.
      
      2019-05-17  Iain Sandoe  <iain@sandoe.co.uk>
      
              * config/rs6000/rs6000.c (macho_branch_islands): Fix bad indent
              on the generated code.
      
      From-SVN: r271341
      Iain Sandoe committed
    • libfortran/90038: Use posix_spawn instead of fork · f8886038
          
      fork() semantics can be problematic.  Most unix style OS'es have
      posix_spawn which can be used to replace fork + exec in many cases.
      For more information see
      e.g. https://www.microsoft.com/en-us/research/uploads/prod/2019/04/fork-hotos19.pdf
          
      This replaces the one use of fork in libgfortran with posix_spawn.
          
      2019-05-17  Janne Blomqvist  <jb@gcc.gnu.org>
      
              PR libfortran/90038
              * configure.ac (AC_CHECK_FUNCS_ONCE): Check for posix_spawn.
              * intrinsics/execute_command_line (execute_command_line): Use
              posix_spawn.
              * Makefile.in: Regenerated.
              * config.h.in: Regenerated.
              * configure: Regenerated.
          
      Regtested on x86_64-pc-linux-gnu.
      
      From-SVN: r271340
      Janne Blomqvist committed
    • Add myself to MAINTAINERS · 8ee47828
      From-SVN: r271339
      Thomas Rodgers committed
    • trans.c (check_inlining_for_nested_subprog): Quote reserved names. · a9c697b8
      
      gcc/ada/ChangeLog:
      
              * gcc-interface/trans.c (check_inlining_for_nested_subprog): Quote
              reserved names.
      
      gcc/brig/ChangeLog:
      
              * brigfrontend/brig-control-handler.cc
              (brig_directive_control_handler::operator): Remove trailing newline
              from a diagnostic.
              * brigfrontend/brig-module-handler.cc
              (brig_directive_module_handler::operator): Remove a duplicated space
              from a diagnostic.
      
      gcc/c/ChangeLog:
      
              * c-decl.c (start_decl): Quote keywords, operators, and
              types in diagnostics.
              (finish_decl): Same.
              * c-parser.c (c_parser_asm_statement): Same.
              (c_parser_conditional_expression): Same.
              (c_parser_transaction_cancel): Same.
              * c-typeck.c (c_common_type): Same.
              (build_conditional_expr): Same.
              (digest_init): Same.
              (process_init_element): Same.
              (build_binary_op): Same.
      
      gcc/c-family/ChangeLog:
      
              * c-attribs.c (handle_no_sanitize_attribute): Quote identifiers,
              keywords, operators, and types in diagnostics.
              (handle_scalar_storage_order_attribute): Same.
              (handle_mode_attribute): Same.
              (handle_visibility_attribute): Same.
              (handle_assume_aligned_attribute): Same.
              (handle_no_split_stack_attribute): Same.
              * c-common.c (shorten_compare): Same.
              (c_common_truthvalue_conversion): Same.
              (cb_get_source_date_epoch): Same.
              * c-lex.c (cb_def_pragma): Quote keywords, operators, and types
              in diagnostics.
              (interpret_float): Same.
              * c-omp.c (c_finish_omp_for): Same.
              * c-opts.c (c_common_post_options): Same.
              * c-pch.c (c_common_pch_pragma): Same.
              * c-pragma.c (pop_alignment): Same.
              (handle_pragma_pack): Same.
              (apply_pragma_weak): Same.
              (handle_pragma_weak): Same.
              (handle_pragma_scalar_storage_order): Same.
              (handle_pragma_redefine_extname): Same.
              (add_to_renaming_pragma_list): Same.
              (maybe_apply_renaming_pragma): Same.
              (push_visibility): Same.
              (handle_pragma_visibility): Same.
              (handle_pragma_optimize): Same.
              (handle_pragma_message): Same.
              * c-warn.c (warn_for_omitted_condop): Same.
              (lvalue_error): Same.
      
      gcc/cp/ChangeLog:
      
              * call.c (print_z_candidate): Wrap diagnostic text in a gettext
              macro.  Adjust.
              (print_z_candidates): Same.
              (build_conditional_expr_1): Quote keywords, operators, and types
              in diagnostics.
              (build_op_delete_call): Same.
              (maybe_print_user_conv_context): Wrap diagnostic text in a gettext
              macro.
              (convert_like_real): Same.
              (convert_arg_to_ellipsis): Quote keywords, operators, and types
              in diagnostics.
              (build_over_call): Same.
              (joust): Break up an overlong line.  Wrap diagnostic text in a gettext
              macro.
              * constexpr.c (cxx_eval_check_shift_p): Spell out >= in English.
              (cxx_eval_constant_expression): Quote keywords, operators, and types
              in diagnostics.
              (potential_constant_expression_1): Same.
              * cp-gimplify.c (cp_genericize_r): Same.
              * cvt.c (maybe_warn_nodiscard): Quote keywords, operators, and types
              in diagnostics.
              (type_promotes_to): Same.
              * decl.c (check_previous_goto_1): Same.
              (check_goto): Same.
              (start_decl): Same.
              (cp_finish_decl): Avoid parenthesizing a sentence for consistency.
              (grok_op_properties): Quote keywords, operators, and types
              in diagnostics.
              * decl2.c (grokfield): Same.
              (coerce_delete_type): Same.
              * except.c (is_admissible_throw_operand_or_catch_parameter): Same.
              * friend.c (do_friend): Quote C++ tokens.
              * init.c (build_new_1): Quote keywords, operators, and types
              in diagnostics.
              (build_vec_delete_1): Same.
              (build_delete): Same.
              * lex.c (parse_strconst_pragma): Same.
              (handle_pragma_implementation): Same.
              (unqualified_fn_lookup_error): Same.
              * mangle.c (write_type): Same.
              * method.c (defaulted_late_check): Avoid two consecutive punctuators.
              * name-lookup.c (cp_binding_level_debug): Remove a trailing newline.
              (pop_everything): Same.
              * parser.c (cp_lexer_start_debugging): Quote a macro name.
              in a diagnostic
              (cp_lexer_stop_debugging): Same.
              (cp_parser_userdef_numeric_literal): Quote a C++ header name
              in a diagnostic.
              (cp_parser_nested_name_specifier_opt): Quote keywords, operators,
              and types in diagnostics.
              (cp_parser_question_colon_clause): Same.
              (cp_parser_asm_definition): Same.
              (cp_parser_init_declarator): Same.
              (cp_parser_template_declaration_after_parameters): Avoid capitalizing
              a sentence in a diagnostic.
              (cp_parser_omp_declare_reduction): Quote keywords, operators, and types
              in diagnostics.
              (cp_parser_transaction): Same.
              * pt.c (maybe_process_partial_specialization): Replace second call
              to permerror with inform for consistency with other uses.
              (expand_integer_pack): Quote keywords, operators, and types
              in diagnostics.
              * rtti.c (get_typeid): Quote keywords, operators, and types
              in diagnostics.
              (build_dynamic_cast_1): Same.
              * semantics.c (finish_asm_stmt): Same.
              (finish_label_decl): Same.
              (finish_bases): Same.
              (finish_offsetof): Same.
              (cp_check_omp_declare_reduction): Same.
              (finish_decltype_type): Same.
              * tree.c (handle_init_priority_attribute): Same.  Add detail
              to diagnostics.
              (maybe_warn_zero_as_null_pointer_constant): Same.
              * typeck.c (cp_build_binary_op): Quote keywords, operators, and types
              in diagnostics.
              (cp_build_unary_op): Same.
              (check_for_casting_away_constness): Same.
              (build_static_cast): Same.
              (build_const_cast_1): Same.
              (maybe_warn_about_returning_address_of_local): Same.
              (check_return_expr): Same.
              * typeck2.c (abstract_virtuals_error_sfinae): Same.
              (digest_init_r): Replace a tab with spaces in a diagnostic.
              (build_functional_cast): Quote keywords, operators, and types
              in diagnostics.
      
      gcc/d/ChangeLog:
      
              * d-builtins.cc (d_init_builtins): Quote keywords, operators,
              and types in diagnostics.
              * d-codegen.cc (get_array_length): Same.  Replace can't with cannot.
              * d-convert.cc (convert_expr): Same.
              * d-frontend.cc (getTypeInfoType): Quote an option name in
              a diagnostic.
              * d-lang.cc (d_handle_option): Same.
              (d_parse_file): Same.
              * decl.cc: Remove a trailing period from a diagnostic.
              * expr.cc: Use a directive for an apostrophe.
              * toir.cc: Quote keywords, operators, and types in diagnostics.
              * typeinfo.cc (build_typeinfo): Quote an option name in a diagnostic.
      
      gcc/fortran/ChangeLog:
      
      	* gfortranspec.c (append_arg): Spell out the word "argument."
      
      gcc/ChangeLog:
      
              * config/i386/i386-expand.c (get_element_number): Quote keywords
              and other internal names in diagnostics.  Adjust other diagnostic
              formatting issues noted by -Wformat-diag.
              * config/i386/i386-features.c
              (ix86_mangle_function_version_assembler_name): Same.
              * config/i386/i386-options.c (ix86_handle_abi_attribute): Same.
              * config/i386/i386.c (ix86_function_type_abi): Same.
              (ix86_function_ms_hook_prologue): Same.
              (classify_argument): Same.
              (ix86_expand_prologue): Same.
              (ix86_md_asm_adjust): Same.
              (ix86_memmodel_check): Same.
      
      gcc/ChangeLog:
      
              * builtins.c (expand_builtin_atomic_always_lock_free): Quote
              identifiers, keywords, operators, and types in diagnostics.  Correct
              quoting, spelling, and sentence capitalization issues.
              (expand_builtin_atomic_is_lock_free): Same.
              (fold_builtin_next_arg): Same.
              * cfgexpand.c (expand_one_var): Same.
              (tree_conflicts_with_clobbers_p): Same.
              (expand_asm_stmt): Same.
              (verify_loop_structure): Same.
              * cgraphunit.c (process_function_and_variable_attributes): Same.
              * collect-utils.c (collect_execute): Same.
              * collect2.c (maybe_run_lto_and_relink): Same.
              (is_lto_object_file): Same.
              (scan_prog_file): Same.
              * convert.c (convert_to_real_1): Same.
              * dwarf2out.c (dwarf2out_begin_prologue): Same.
              * except.c (verify_eh_tree): Same.
              * gcc.c (execute): Same.
              (eval_spec_function): Same.
              (run_attempt): Same.
              (driver::set_up_specs): Same.
              (compare_debug_auxbase_opt_spec_function): Same.
              * gcov-tool.c (unlink_gcda_file): Same.
              (do_merge): Same.
              (do_rewrite): Same.
              * gcse.c (gcse_or_cprop_is_too_expensive): Same.
              * gimplify.c (gimplify_asm_expr): Same.
              (gimplify_adjust_omp_clauses): Same.
              * hsa-gen.c (gen_hsa_addr_insns): Same.
              (gen_hsa_insns_for_load): Same.
              (gen_hsa_cmp_insn_from_gimple): Same.
              (gen_hsa_insns_for_operation_assignment): Same.
              (gen_get_level): Same.
              (gen_hsa_alloca): Same.
              (omp_simple_builtin::generate): Same.
              (gen_hsa_atomic_for_builtin): Same.
              (gen_hsa_insns_for_call): Same.
              * input.c (dump_location_info): Same.
              * ipa-devirt.c (compare_virtual_tables): Same.
              * ira.c (ira_setup_eliminable_regset): Same.
              * lra-assigns.c (lra_assign): Same.
              * lra-constraints.c (lra_constraints): Same.
              * lto-streamer-in.c (lto_input_mode_table): Same.
              * lto-wrapper.c (get_options_from_collect_gcc_options): Same.
              (merge_and_complain): Same.
              (compile_offload_image): Same.
              (compile_images_for_offload_targets): Same.
              (debug_objcopy): Same.
              (run_gcc): Same.
              (main): Same.
              * opts.c (print_specific_help): Same.
              (parse_no_sanitize_attribute): Same.
              (print_help): Same.
              (handle_param): Same.
              * plugin.c (add_new_plugin): Same.
              (parse_plugin_arg_opt): Same.
              (try_init_one_plugin): Same.
              * print-rtl.c (debug_bb_n_slim): Quote identifiers, keywords,
              operators, and types in diagnostics.  Correct quoting and spelling
              issues.
              * read-rtl-function.c (parse_edge_flag_token): Same.
              (function_reader::parse_enum_value): Same.
              * reg-stack.c (check_asm_stack_operands): Same.
              * regcprop.c (validate_value_data): Same.
              * sched-rgn.c (make_pass_sched_fusion): Same.
              * stmt.c (check_unique_operand_names): Same.
              * targhooks.c (default_target_option_pragma_parse): Same.
              * tlink.c (recompile_files): Same.
              * toplev.c (process_options): Same.
              (do_compile): Same.
              * trans-mem.c (diagnose_tm_1): Same.
              (ipa_tm_scan_irr_block): Same.
              (ipa_tm_diagnose_transaction): Same.
              * tree-cfg.c (verify_address): Same.  Use get_tree_code_name to
              format a tree code name in a diagnostic.
              (verify_types_in_gimple_min_lval): Same.
              (verify_types_in_gimple_reference): Same.
              (verify_gimple_call): Same.
              (verify_gimple_assign_unary): Same.
              (verify_gimple_assign_binary): Same.
              (verify_gimple_assign_ternary): Same.
              (verify_gimple_assign_single): Same.
              (verify_gimple_switch): Same.
              (verify_gimple_label): Same.
              (verify_gimple_phi): Same.
              (verify_gimple_in_seq): Same.
              (verify_eh_throw_stmt_node): Same.
              (collect_subblocks): Same.
              (gimple_verify_flow_info): Same.
              (do_warn_unused_result): Same.
              * tree-inline.c (expand_call_inline): Same.
              * tree-into-ssa.c (update_ssa): Same.
              * tree.c (tree_int_cst_elt_check_failed): Same.
              (tree_vec_elt_check_failed): Same.
              (omp_clause_operand_check_failed): Same.
              (verify_type_variant): Same.
              (verify_type): Same.
              * value-prof.c (verify_histograms): Same.
              * varasm.c (assemble_start_function): Same.
      
      gcc/lto/ChangeLog:
      
              * lto-dump.c (lto_main): Same.
              * lto.c (stream_out): Same.
      
      gcc/objc/ChangeLog:
      
              * objc-act.c (objc_begin_catch_clause): Quote keywords and options
              in diagnostics.
              (objc_build_throw_stmt): Same.
              (objc_finish_message_expr): Same.
              (get_super_receiver): Same.
              * objc-next-runtime-abi-01.c (objc_next_runtime_abi_01_init): Spell
              out "less than" in English./
              * objc-next-runtime-abi-02.c (objc_next_runtime_abi_02_init): Spell
              out "greater" in English.
      
      gcc/testsuite/ChangeLog:
      
              * c-c++-common/Wbool-operation-1.c: Adjust text of expected diagnostics.
              * c-c++-common/Wvarargs-2.c: Same.
              * c-c++-common/Wvarargs.c: Same.
              * c-c++-common/pr51768.c: Same.
              * c-c++-common/tm/inline-asm.c: Same.
              * c-c++-common/tm/safe-1.c: Same.
              * g++.dg/asm-qual-1.C: Same.
              * g++.dg/asm-qual-3.C: Same.
              * g++.dg/conversion/dynamic1.C: Same.
              * g++.dg/cpp0x/constexpr-89599.C: Same.
              * g++.dg/cpp0x/constexpr-cast.C: Same.
              * g++.dg/cpp0x/constexpr-shift1.C: Same.
              * g++.dg/cpp0x/lambda/lambda-conv11.C: Same.
              * g++.dg/cpp0x/nullptr04.C: Same.
              * g++.dg/cpp0x/static_assert12.C: Same.
              * g++.dg/cpp0x/static_assert8.C: Same.
              * g++.dg/cpp1y/lambda-conv1.C: Same.
              * g++.dg/cpp1y/pr79393-3.C: Same.
              * g++.dg/cpp1y/static_assert1.C: Same.
              * g++.dg/cpp1z/constexpr-if4.C: Same.
              * g++.dg/cpp1z/constexpr-if5.C: Same.
              * g++.dg/cpp1z/constexpr-if9.C: Same.
              * g++.dg/eh/goto2.C: Same.
              * g++.dg/eh/goto3.C: Same.
              * g++.dg/expr/static_cast8.C: Same.
              * g++.dg/ext/flexary5.C: Same.
              * g++.dg/ext/utf-array-short-wchar.C: Same.
              * g++.dg/ext/utf-array.C: Same.
              * g++.dg/ext/utf8-2.C: Same.
              * g++.dg/gomp/loop-4.C: Same.
              * g++.dg/gomp/macro-4.C: Same.
              * g++.dg/gomp/udr-1.C: Same.
              * g++.dg/init/initializer-string-too-long.C: Same.
              * g++.dg/other/offsetof9.C: Same.
              * g++.dg/ubsan/pr63956.C: Same.
              * g++.dg/warn/Wbool-operation-1.C: Same.
              * g++.dg/warn/Wtype-limits-Wextra.C: Same.
              * g++.dg/warn/Wtype-limits.C: Same.
              * g++.dg/wrappers/pr88680.C: Same.
              * g++.old-deja/g++.mike/eh55.C: Same.
              * gcc.dg/Wsign-compare-1.c: Same.
              * gcc.dg/Wtype-limits-Wextra.c: Same.
              * gcc.dg/Wtype-limits.c: Same.
              * gcc.dg/Wunknownprag.c: Same.
              * gcc.dg/Wunsuffixed-float-constants-1.c: Same.
              * gcc.dg/asm-6.c: Same.
              * gcc.dg/asm-qual-1.c: Same.
              * gcc.dg/cast-1.c: Same.
              * gcc.dg/cast-2.c: Same.
              * gcc.dg/cast-3.c: Same.
              * gcc.dg/cpp/source_date_epoch-2.c: Same.
              * gcc.dg/debug/pr85252.c: Same.
              * gcc.dg/dfp/cast-bad.c: Same.
              * gcc.dg/format/gcc_diag-1.c: Same.
              * gcc.dg/format/gcc_diag-11.c: Same.New test.
              * gcc.dg/gcc_diag-11.c: Same.New test.
              * gcc.dg/gnu-cond-expr-2.c: Same.
              * gcc.dg/gnu-cond-expr-3.c: Same.
              * gcc.dg/gomp/macro-4.c: Same.
              * gcc.dg/init-bad-1.c: Same.
              * gcc.dg/init-bad-2.c: Same.
              * gcc.dg/init-bad-3.c: Same.
              * gcc.dg/pr27528.c: Same.
              * gcc.dg/pr48552-1.c: Same.
              * gcc.dg/pr48552-2.c: Same.
              * gcc.dg/pr59846.c: Same.
              * gcc.dg/pr61096-1.c: Same.
              * gcc.dg/pr8788-1.c: Same.
              * gcc.dg/pr90082.c: Same.
              * gcc.dg/simd-2.c: Same.
              * gcc.dg/spellcheck-params-2.c: Same.
              * gcc.dg/spellcheck-params.c: Same.
              * gcc.dg/strlenopt-49.c: Same.
              * gcc.dg/tm/pr52141.c: Same.
              * gcc.dg/torture/pr51106-1.c: Same.
              * gcc.dg/torture/pr51106-2.c: Same.
              * gcc.dg/utf-array-short-wchar.c: Same.
              * gcc.dg/utf-array.c: Same.
              * gcc.dg/utf8-2.c: Same.
              * gcc.dg/warn-sprintf-no-nul.c: Same.
              * gcc.target/i386/asm-flag-0.c: Same.
              * gcc.target/i386/inline_error.c: Same.
              * gcc.target/i386/pr30848.c: Same.
              * gcc.target/i386/pr39082-1.c: Same.
              * gcc.target/i386/pr39678.c: Same.
              * gcc.target/i386/pr57756.c: Same.
              * gcc.target/i386/pr68843-1.c: Same.
              * gcc.target/i386/pr79804.c: Same.
              * gcc.target/i386/pr82673.c: Same.
              * obj-c++.dg/class-protocol-1.mm: Same.
              * obj-c++.dg/exceptions-3.mm: Same.
              * obj-c++.dg/exceptions-4.mm: Same.
              * obj-c++.dg/exceptions-5.mm: Same.
              * obj-c++.dg/exceptions-6.mm: Same.
              * obj-c++.dg/method-12.mm: Same.
              * obj-c++.dg/method-13.mm: Same.
              * obj-c++.dg/method-6.mm: Same.
              * obj-c++.dg/method-7.mm: Same.
              * obj-c++.dg/method-9.mm: Same.
              * obj-c++.dg/method-lookup-1.mm: Same.
              * obj-c++.dg/proto-lossage-4.mm: Same.
              * obj-c++.dg/protocol-qualifier-2.mm: Same.
              * objc.dg/call-super-2.m: Same.
              * objc.dg/class-protocol-1.m: Same.
              * objc.dg/desig-init-1.m: Same.
              * objc.dg/exceptions-3.m: Same.
              * objc.dg/exceptions-4.m: Same.
              * objc.dg/exceptions-5.m: Same.
              * objc.dg/exceptions-6.m: Same.
              * objc.dg/method-19.m: Same.
              * objc.dg/method-2.m: Same.
              * objc.dg/method-5.m: Same.
              * objc.dg/method-6.m: Same.
              * objc.dg/method-7.m: Same.
              * objc.dg/method-lookup-1.m: Same.
              * objc.dg/proto-hier-1.m: Same.
              * objc.dg/proto-lossage-4.m: Same.
      
      From-SVN: r271338
      Martin Sebor committed
    • re PR fortran/54613 ([F08] Add FINDLOC plus support MAXLOC/MINLOC with KIND=/BACK=) · 6df6f67a
      	PR fortran/54613
      	* gfortran.map (GFORTRAN_9.2): Export _gfortran_{,m,s}findloc{0,1}_r10.
      	* Makefile.am (i_findloc0_c): Add $(srcdir)/generated/findloc0_r10.c.
      	(i_findloc1_c): Add $(srcdir)/generated/findloc1_r10.c.
      	* Makefile.in: Regenerated.
      	* generated/findloc0_r10.c: Generated.
      	* generated/findloc1_r10.c: Generated.
      
      From-SVN: r271336
      Jakub Jelinek committed
    • re PR fortran/54613 ([F08] Add FINDLOC plus support MAXLOC/MINLOC with KIND=/BACK=) · 9f65885a
      	PR fortran/54613
      	* gfortran.map (GFORTRAN_9.2): Export _gfortran_{,m,s}findloc{0,1}_r10.
      	* Makefile.am (i_findloc0_c): Add $(srcdir)/generated/findloc0_r10.c.
      	(i_findloc1_c): Add $(srcdir)/generated/findloc1_r10.c.
      	* Makefile.in: Regenerated.
      	* generated/findloc0_r10.c: Generated.
      	* generated/findloc1_r10.c: Generated.
      
      From-SVN: r271335
      Jakub Jelinek committed
    • re PR fortran/54613 ([F08] Add FINDLOC plus support MAXLOC/MINLOC with KIND=/BACK=) · d3151832
      	PR fortran/54613
      	* gfortran.map (GFORTRAN_9.2): New symbol version, export
      	_gfortran_{,m,s}findloc0_i2 in it.
      
      From-SVN: r271334
      Jakub Jelinek committed
    • mips.c (mips_dwarf_frame_reg_mode): Replace TARGET_FLOAT64 with !TARGET_FLOAT32,… · d9fea2c6
      mips.c (mips_dwarf_frame_reg_mode): Replace TARGET_FLOAT64 with !TARGET_FLOAT32, thus handling both fp64 and fpxx modes.
      
      	* config/mips/mips.c (mips_dwarf_frame_reg_mode): Replace
      	TARGET_FLOAT64 with !TARGET_FLOAT32, thus handling both fp64
      	and fpxx modes.
      
      	* g++.dg/eh/o32-fp.C: New.
      	* gcc.target/mips/dwarfregtable-1.c: New.
      	* gcc.target/mips/dwarfregtable-2.c: New.
      	* gcc.target/mips/dwarfregtable-3.c: New.
      	* gcc.target/mips/dwarfregtable-4.c: New.
      	* gcc.target/mips/dwarfregtable.h: New.
      
      From-SVN: r271331
      Dragan Mladjenovic committed
    • 2019-05-17 François Dumont <fdumont@gcc.gnu.org> · 6f1becb6
      	* include/bits/stl_deque.h
      	(_Deque_iterator<>::__ptr_to): Remove, use std::__ptr_rebind.
      	(_Deque_base(_Deque_base&&, const allocator_type&)): New.
      	(_Deque_base::_Deque_impl_data): New.
      	(_Deque_base::_Deque_impl): Inherit latter.
      	(_Deque_base::_Deque_impl::_M_swap_data): Move...
      	(_Deque_base::_Deque_impl_data::_M_swap_data): ... here.
      	(_Deque_base::_Deque_impl()): Add noexcept qualification.
      	(_Deque_base::_Deque_impl(_Deque_impl&&, _Tp_alloc_type&&)): New.
      	(_Deque_base::_Deque_impl::_M_get_Tp_allocator()): Remove static_cast.
      	(deque<>::deque()): Default.
      	(deque<>::deque(deque&&)): Default.
      	(deque<>::deque(deque&&, const allocator_type&, false_type)): New.
      	(deque<>::deque(deque&&, const allocator_type&, true_type)): New.
      	(deque<>::deque(deque&&, const allocator_type&)): Delegate to latters.
      	(deque<>::deque<_It>(_It, _It, const allocator_type&)): Use
      	_M_range_initialize.
      	(deque<>::assign<_It>(_It, _It)): Use _M_assign_aux.
      	(deque<>::resize(size_type, const value_type&)): Share a single
      	implementation.
      	(deque<>::insert<_It>(const_iterator, _It, _It)): Use
      	_M_range_insert_aux.
      	[__cplusplus >= 201103L](_M_initialize_dispatch): Remove.
      	[__cplusplus >= 201103L](_M_assign_dispatch): Remove.
      	[__cplusplus >= 201103L](_M_insert_dispatch): Remove.
      	* testsuite/23_containers/deque/allocator/default_init.cc: New.
      
      From-SVN: r271330
      François Dumont committed
    • x86-64: Add vector vararg ABI tests · 2a380e2e
      We can scan stack for return address to get vector arguments passed on
      stack.
      
      Tested on Linux/x86-64 and Linux/x32.
      
      	* gcc.target/x86_64/abi/test_varargs-m128.c: New file.
      	* gcc.target/x86_64/abi/avx/test_varargs-m256.c: Likewise.
      	* gcc.target/x86_64/abi/avx512f/test_varargs-m512.c: Likewise.
      
      From-SVN: r271329
      H.J. Lu committed
    • i386: Enable MMX intrinsics without SSE/SSE2/SSSE3 · 45641b31
      Since MMX intrinsics are marked with SSE/SSE2/SSSE3 for SSE emulation,
      enable them without SSE/SSE2/SSSE3 if MMX is enabled.
      
      Restore TARGET_3DNOW check, which was changed to TARGET_3DNOW_A by
      revision 271235.
      
      gcc/
      
      	PR target/90497
      	* config/i386/i386-expand.c (ix86_expand_builtin): Enable MMX
      	intrinsics without SSE/SSE2/SSSE3.
      	* config/i386/mmx.md (mmx_uavgv8qi3): Restore TARGET_3DNOW
      	check.
      	(*mmx_uavgv8qi3): Likewise.
      
      gcc/testsuite/
      
      	PR target/90497
      	* gcc.target/i386/pr90497-1.c: New test.
      	* gcc.target/i386/pr90497-2.c: Likewise.
      
      From-SVN: r271328
      H.J. Lu committed
    • soft-fp: Update soft-fp from glibc · 2581344d
      This patch is updating all soft-fp from glibc, most changes are
      copyright years update, and changes other than years update are
      
      	* soft-fp/extenddftf2.c: Use "_FP_W_TYPE_SIZE < 64" to check if
      	4_FP_W_TYPEs are used for IEEE quad precision.
      	* soft-fp/extendhftf2.c: Likewise.
      	* soft-fp/extendsftf2.c: Likewise.
      	* soft-fp/extendxftf2.c: Likewise.
      	* soft-fp/trunctfdf2.c: Likewise.
      	* soft-fp/trunctfhf2.c: Likewise.
      	* soft-fp/trunctfsf2.c: Likewise.
      	* soft-fp/trunctfxf2.c: Likewise.
      	* config/rs6000/ibm-ldouble.c: Likewise.
      
      From-SVN: r271327
      H.J. Lu committed
    • PR libstdc++/90246 Improve text of std::variant exceptions and assertions · c43c3af2
      	PR libstdc++/90246
      	* include/std/variant (holds_alternative, get, get_if): Improve
      	static assertion messages.
      	(bad_variant_access::bad_variant_access()): Change default message.
      	(__throw_bad_variant_access(bool)): New overload.
      	(get): Use new overload.
      	(visit, visit<R>): Improve exception message.
      
      From-SVN: r271326
      Jonathan Wakely committed
    • Fix std::variant test for ILP32 targets · ac781bc8
      	* testsuite/20_util/variant/compile.cc: Fix narrowing test for ILP32
      	targets. Add more cases from P0608R3.
      	* testsuite/20_util/variant/run.cc: Add more cases from P0608R3.
      
      From-SVN: r271325
      Jonathan Wakely committed
    • Fix uses of non-reserved names for template parameters · 593cda3e
      	* include/bits/random.h (seed_seq::param): Fix non-reserved name.
      	* include/experimental/type_traits (is_detected_exact)
      	(is_detected_exact_v): Likewise.
      	* include/pstl/execution_defs.h (is_execution_policy)
      	(is_execution_policy_v, __enable_if_execution_policy): Likewise.
      	* include/pstl/execution_impl.h (__policy_traits): Likewise.
      	* testsuite/17_intro/names.cc: Check for more non-reserved names.
      	* testsuite/experimental/names.cc: New test.
      
      From-SVN: r271324
      Jonathan Wakely committed
    • PR libstdc++/85965 move is_invocable assertions again · e625ccc2
      This is another attempt to reduce how often the assertions are
      evaluated, so that code which doesn't try to use the function objects
      doesn't need them to be invocable.
      
      For _Rb_tree we access the _M_key_compare object directly, so can't put
      the assertions in an accessor function for it. However, every invocation
      of _M_key_compare is accompanied by a use of _S_key, so the assertions
      can be put in there.  For _Hashtable there are member functions that are
      consistently used to obtain a hash code or test for equality, so the
      assertions can go in those members.
      
      	PR libstdc++/85965
      	* include/bits/hashtable.h (_Hashtable::~_Hashtable()): Remove static
      	assertions from the destructor.
      	* include/bits/hashtable_policy.h (_Hash_code_base::_M_hash_code):
      	Move static_assert for hash function to here.
      	(_Hash_table_base::_M_equals): Move static_assert for equality
      	predicate to here.
      	* include/bits/stl_tree.h (_Rb_tree::_S_value(_Const_Link_type)):
      	Remove.
      	(_Rb_tree::_S_key(_Const_Link_type)): Move assertions here. Access
      	the value directly instead of calling _S_value.
      	(_Rb_tree::_S_value(_Const_Base_ptr)): Remove.
      	(_Rb_tree::_S_key(_Const_Base_ptr)): Do downcast and forward to
      	_S_key(_Const_Link_type).
      	* testsuite/23_containers/set/85965.cc: Check construction,
      	destruction, assignment and size() do not trigger the assertions.
      	* testsuite/23_containers/unordered_set/85965.cc: Likewise.
      	* testsuite/23_containers/map/48101_neg.cc: Call find and adjust
      	expected errors.
      	* testsuite/23_containers/multimap/48101_neg.cc: Likewise.
      	* testsuite/23_containers/multiset/48101_neg.cc: Likewise.
      	* testsuite/23_containers/set/48101_neg.cc: Likewise.
      	* testsuite/23_containers/unordered_map/48101_neg.cc: Likewise.
      	* testsuite/23_containers/unordered_multimap/48101_neg.cc: Likewise.
      	* testsuite/23_containers/unordered_multiset/48101_neg.cc: Likewise.
      	* testsuite/23_containers/unordered_set/48101_neg.cc: Likewise.
      
      From-SVN: r271323
      Jonathan Wakely committed
    • compiler: use SHA1-hash for symname for long gcbits symbols · 8fd5cc19
          
          The current scheme used by the compiler for "gcbits" symbols involves
          generating a symbol name based on a 32-char encoding of the bits data.
          This scheme works well in most cases but can generate very long symbol
          names in rare cases. To help avoid such long symbol names, switch to a
          different encoding scheme based on the SHA1 digest of the payload if
          the symbol size would be too large.
          
          Fixes golang/go#32083.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/177598
      
      From-SVN: r271322
      Ian Lance Taylor committed
    • S/390: Fix larl/PIC test case. · 5719731f
      This patch adds -march=z900 to a test case that expects larl for loading
      a value via the GOT.  On z10 and later, lgrl is used which is tested in
      a new, separate test case.
      
      gcc/testsuite/ChangeLog:
      
      2019-05-17  Robin Dapp  <rdapp@linux.ibm.com>
      
        * gcc.target/s390/global-array-element-pic.c: Add -march=z900.
        * gcc.target/s390/global-array-element-pic2.c: New test for z10+.
      
      From-SVN: r271321
      Robin Dapp committed
    • gimple-parser.c (c_parser_gimple_statement): Handle __VEC_PERM. · c4499192
      2019-05-17  Richard Biener  <rguenther@suse.de>
      
      	c/
      	* gimple-parser.c (c_parser_gimple_statement): Handle __VEC_PERM.
      	(c_parser_gimple_unary_expression): Likewise.
      	(c_parser_gimple_parentized_ternary_expression): New function.
      
      	* gimple-pretty-print.c (dump_ternary_rhs): Handle dumping
      	VEC_PERM_EXPR as __VEC_PERM with -gimple.
      
      	* gcc.dg/gimplefe-41.c: New testcase.
      
      From-SVN: r271320
      Richard Biener committed
    • re PR tree-optimization/90106 (builtin sqrt() ignoring libm's sqrt call result) · 35ee7f54
      	PR tree-optimization/90106
      	* gcc.dg/cdce3.c: New test.
      
      From-SVN: r271319
      Jun Ma committed
    • S/390: Fix vec_sldw builtin · f4debcd1
      The builtin was wired up to the wrong pattern.  Fixed with this patch.
      
      gcc/ChangeLog:
      
      2019-05-17  Andreas Krebbel  <krebbel@linux.ibm.com>
      
      	* config/s390/s390-builtins.def (s390_vec_sldw_*): Use the
      	vec_sldw insn pattern.
      
      gcc/testsuite/ChangeLog:
      
      2019-05-17  Andreas Krebbel  <krebbel@linux.ibm.com>
      
      	* gcc.target/s390/zvector/vec-sldw.c: New test.
      
      From-SVN: r271318
      Andreas Krebbel committed
    • Fix __invoke_r<void> to be valid in C++11 · c471fb2f
      	* include/bits/invoke.h [__cplusplus < 201703L] (__invoke_r<void>):
      	Use _GLIBCXX14_CONSTEXPR because void functions cannot be constexpr
      	in C++11.
      
      From-SVN: r271317
      Jonathan Wakely committed
    • Add missing piece of P0777R1 and update C++20 status docs · 32a1aa70
      	* doc/xml/manual/status_cxx2020.xml: Update P0608R3, P0777R1, and
      	P1165R1 entries.
      	* doc/html/*: Regenerate.
      	* include/std/tuple (make_from_tuple): Use remove_reference_t instead
      	of decay_t (P0777R1).
      
      From-SVN: r271316
      Jonathan Wakely committed
    • ccmp.c (expand_ccmp_expr_1): Do not use gimple_assign_rhs_to_tree. · 8666d8bd
      2019-05-17  Richard Biener  <rguenther@suse.de>
      
      	* ccmp.c (expand_ccmp_expr_1): Do not use gimple_assign_rhs_to_tree.
      
      From-SVN: r271315
      Richard Biener committed
    • Handle a location with NULL as a file (PR driver/90496) · dc2e58c5
      2019-05-17  Martin Liska  <mliska@suse.cz>
      
      	PR driver/90496
      	* toplev.c (output_stack_usage): With LTO and sanitizer it
      	happens that a global ctor (_GLOBAL__sub_I_00099_0_main)
      	has no file location.
      
      From-SVN: r271313
      Martin Liska committed
    • Handle a location with NULL as a file (PR driver/90495) · 804424b9
      2019-05-17  Martin Liska  <mliska@suse.cz>
      
      	PR driver/90495
      	* toplev.c (output_stack_usage): With LTO and sanitizer it
      	happens that a global ctor (_GLOBAL__sub_I_00099_0_main)
      	has no file location.
      
      From-SVN: r271312
      Martin Liska committed
    • Remove a test-case that leads to a huge stack (and file) allocation (PR middle-end/90478). · e2014c8b
      2019-05-17  Martin Liska  <mliska@suse.cz>
      
      	PR middle-end/90478
      	* gcc.dg/tree-ssa/pr90478-2.c: Remove.
      
      From-SVN: r271311
      Martin Liska committed
    • re PR go/90482 (Many 32-bit Solaris/SPARC tests FAIL with SIGBUS) · fb83aeb4
      	PR go/90482
          compiler: make value method of direct interface type takes pointer
          
          Currently, a value method of a direct interface type takes the
          value of the receiver, which is pointer shaped, as the first
          parameter. When this method is called through interface, we
          actually pass the interface data as a pointer. On most platforms
          this is ok, as the underlying calling convention is the same,
          except that on SPARC32, the calling convention is actually
          different.
          
          This CL changes the method function actually takes a pointer.
          The function will convert the pointer to the pointer-shaped
          receiver type (a no-op conversion from machine code's aspect).
          For a direct call, in the caller we convert the receiver to a
          pointer (also no-op conversion) before invoking the method. For
          an interface call, we pass the pointer as before. This way, it is
          consistent that we always pass a pointer.
          
          Hopefully this fixes SPARC32 build and https://gcc.gnu.org/PR90482.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/177758
      
      From-SVN: r271310
      Ian Lance Taylor committed
    • Move from state of allocators (LWG2593) · 935469da
      2019-05-17  François Dumont  <fdumont@gcc.gnu.org>
      
      	Move from state of allocators (LWG2593)
      	* include/bits/stl_deque.h
      	(_Deque_base(_Deque_base&&, false_type)): Remove.
      	(_Deque_base(_Deque_base&&, true_type)): Remove.
      	(_Deque_base(_Deque_base&&)): Adapt.
      	(_Deque_base::_M_move_impl()): Remove.
      	* testsuite/util/testsuite_allocator.h
      	(propagating_allocator(propagating_allocator&&)): Preserve move from
      	state.
      	* testsuite/23_containers/deque/allocator/move_assign.cc (test02):
      	Adapt.
      	* testsuite/23_containers/forward_list/allocator/move_assign.cc (test02):
      	Adapt.
      	* testsuite/23_containers/list/allocator/move_assign.cc (test02): Adapt.
      	* testsuite/23_containers/map/allocator/move_assign.cc (test02): Adapt.
      	* testsuite/23_containers/multimap/allocator/move_assign.cc (test02):
      	Adapt.
      	* testsuite/23_containers/multiset/allocator/move_assign.cc (test02):
      	Adapt.
      	* testsuite/23_containers/set/allocator/move_assign.cc (test02): Adapt.
      	* testsuite/23_containers/unordered_map/allocator/move_assign.cc
      	(test02): Adapt.
      	* testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
      	(test02): Adapt.
      	* testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
      	(test02): Adapt.
      	* testsuite/23_containers/unordered_set/allocator/move_assign.cc
      	(test02): Adapt.
      	* testsuite/23_containers/vector/allocator/move_assign.cc (test02):
      	Adapt.
      	* testsuite/23_containers/vector/bool/allocator/move_assign.cc (test02):
      	Adapt.
      	* testsuite/21_strings/basic_string/allocator/char/move_assign.cc
      	(test02): Adapt.
      	* testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
      	(test02): Adapt.
      
      From-SVN: r271309
      François Dumont committed
    • compiler: intrinsify runtime/internal/atomic functions · 395389bf
          
          Currently runtime/internal/atomic functions are implemented in C
          using C compiler intrinsics. This CL lets the Go frontend
          recognize these functions and turn them into intrinsics directly.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176918
      
      	* go-gcc.cc (Gcc_backend::Gcc_backend): Define atomic builtins.
      
      From-SVN: r271308
      Cherry Zhang committed
    • Daily bump. · 6a362e12
      From-SVN: r271307
      GCC Administrator committed
  2. 16 May, 2019 6 commits
    • compiler: add intrinsics for runtime/internal/sys functions · f6d67708
          
          runtime/internal/sys.Ctz32/64 and Bswap32/64 are currently
          implemented with compiler builtin functions. But if they are
          called from another package, the compiler does not know and
          therefore cannot turn them into compiler intrinsics. This CL
          makes the compiler recognize these functions and turn them into
          intrinsics directly, as the gc compiler does.
          
          This CL sets up a way for adding intrinsics in the compiler.
          More intrinsics will be added in later CLs.
          
          Also move the handling of runtime.getcallerpc/sp to the new way
          of generating intrinsics.
          
          Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176917
      
      From-SVN: r271303
      Ian Lance Taylor committed
    • Remove incorrect assertion from filesystem::absolute · 71101282
      The assertion is wrong, it should be *s.end() == 0, but that's not
      allowed. Just remove it, but keep the comment.
      
      	* src/c++17/fs_ops.cc (absolute(const path&, error_code&))
      	[_GLIBCXX_FILESYSTEM_IS_WINDOWS]: Remove bogus assertion.
      
      From-SVN: r271300
      Jonathan Wakely committed
    • re PR c++/90484 (ICE in equal_mem_array_ref_p at gcc/tree-ssa-scopedtables.c:550… · afc819e8
      re PR c++/90484 (ICE in equal_mem_array_ref_p at gcc/tree-ssa-scopedtables.c:550 since r270433 on i586)
      
      	PR c++/90484
      	* tree-ssa-scopedtables.c (equal_mem_array_ref_p): Don't assert that
      	sz0 is equal to sz1, instead return false in that case.
      
      From-SVN: r271299
      Jakub Jelinek committed
    • omp-low.c (lower_rec_input_clauses): If OMP_CLAUSE_IF has non-constant expression... · 4e65deef
      	* omp-low.c (lower_rec_input_clauses): If OMP_CLAUSE_IF
      	has non-constant expression, force sctx.lane and use two
      	argument IFN_GOMP_SIMD_LANE instead of single argument.
      	* tree-ssa-dce.c (eliminate_unnecessary_stmts): Don't DCE
      	two argument IFN_GOMP_SIMD_LANE without lhs.
      	* tree-vectorizer.h (struct _loop_vec_info): Add simd_if_cond
      	member.
      	(LOOP_VINFO_SIMD_IF_COND, LOOP_REQUIRES_VERSIONING_FOR_SIMD_IF_COND):
      	Define.
      	(LOOP_REQUIRES_VERSIONING): Or in
      	LOOP_REQUIRES_VERSIONING_FOR_SIMD_IF_COND.
      	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
      	simd_if_cond.
      	(vect_analyze_loop_2): Punt if LOOP_VINFO_SIMD_IF_COND is constant 0.
      	* tree-vect-loop-manip.c (vect_loop_versioning): Add runtime check
      	from simd if clause if needed.
      
      	* gcc.dg/vect/vect-simd-1.c: New test.
      	* gcc.dg/vect/vect-simd-2.c: New test.
      	* gcc.dg/vect/vect-simd-3.c: New test.
      	* gcc.dg/vect/vect-simd-4.c: New test.
      
      From-SVN: r271298
      Jakub Jelinek committed
    • Implement sane variant converting constructor (P0608R3) · d069df01
      	* include/std/variant (__overload_set): Remove.
      	(_Arr): New helper.
      	(_Build_FUN): New class template to define a single FUN overload,
      	with specializations to prevent unwanted conversions, as per P0608R3.
      	(_Build_FUNs): New class template to build an overload set of FUN.
      	(_FUN_type): New alias template to perform overload resolution.
      	(__accepted_type): Use integer_constant base for failure case. Use
      	_FUN_type for successful case.
      	(variant::__accepted_index): Use _Tp instead of _Tp&&.
      	(variant::variant(_Tp&&)): Likewise.
      	(variant::operator=(_Tp&&)): Likewise.
      
      From-SVN: r271296
      Jonathan Wakely committed
    • Changes to std::variant to reduce code size · b62dcd16
      	* include/std/variant (_Variant_storage<false, _Types...>::_M_reset):
      	Replace raw visitation with a runtime check for the valueless state
      	and a non-raw visitor.
      	(_Variant_storage<false, _Types...>::_M_reset_impl): Remove.
      	(variant::index()): Remove branch.
      	(variant::swap(variant&)): Use valueless_by_exception() instead of
      	comparing the index to variant_npos, and add likelihood attribute.
      
      From-SVN: r271295
      Jonathan Wakely committed