170900 Commits

Author SHA1 Message Date
Ian Lance Taylor
433f84bffa libgo: rebuild runtime.inc if mkruntimeinc.sh changes
The Makefile was missing a dependency.
    
    Also remove runtime.inc.raw in mostlyclean.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191958

From-SVN: r274956
2019-08-27 14:25:04 +00:00
Martin Liska
d23db3858e Share a prevailing name for remove debug info symbols w/ LTO.
2019-08-27  Martin Liska  <mliska@suse.cz>

	PR lto/91478
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	First find a WEAK HIDDEN symbol in symbol table that will be
	preserved.  Later, use the symbol name for all removed symbols.

From-SVN: r274955
2019-08-27 13:36:15 +00:00
Richard Biener
b5a6addb5b 2019-08-27 Richard Biener <rguenther@suse.de>
* config/i386/i386-features.h
	(general_scalar_chain::~general_scalar_chain): Add.
	(general_scalar_chain::insns_conv): New bitmap.
	(general_scalar_chain::n_sse_to_integer): New.
	(general_scalar_chain::n_integer_to_sse): Likewise.
	(general_scalar_chain::make_vector_copies): Adjust signature.
	* config/i386/i386-features.c
	(general_scalar_chain::general_scalar_chain): Outline,
	initialize new members.
	(general_scalar_chain::~general_scalar_chain): New.
	(general_scalar_chain::mark_dual_mode_def): Record insns
	we need to insert conversions at and count them.
	(general_scalar_chain::compute_convert_gain): Account
	for conversion instructions at chain boundary.
	(general_scalar_chain::make_vector_copies): Generate a single
	copy for a def by a specific insn.
	(general_scalar_chain::convert_registers): First populate
	defs_map, then make copies at out-of chain insns.

From-SVN: r274953
2019-08-27 12:46:07 +00:00
Jakub Jelinek
6a07489267 re PR c++/91415 (Invalid warning for C++17 sequencing of shift operator E1<<E2.)
PR c++/91415
	* c-common.c (verify_tree): For LSHIFT_EXPR, RSHIFT_EXPR,
	COMPONENT_REF and ARRAY_REF in cxx_dialect >= cxx17 mode handle it
	like COMPOUND_EXPR rather than normal expression.

	* g++.dg/warn/sequence-pt-4.C: New test.

From-SVN: r274952
2019-08-27 14:37:30 +02:00
Robin Dapp
6c14d00812 re PR testsuite/91549 (gcc.dg/wrapped-binop-simplify.c fails starting with r274925)
PR testsuite/91549

gcc/testsuite/ChangeLog:
	* gcc.dg/wrapped-binop-simplify.c: Test only on x86, s390 with lp64.

From-SVN: r274951
2019-08-27 12:08:58 +00:00
Jakub Jelinek
0ad7981cb4 re PR libgomp/91530 (Several libgomp.*/scan-* tests FAIL without avx_runtime)
PR libgomp/91530
	* testsuite/libgomp.c/scan-11.c: Add -msse2 option for sse2_runtime
	targets.
	* testsuite/libgomp.c/scan-12.c: Likewise.
	* testsuite/libgomp.c/scan-13.c: Likewise.
	* testsuite/libgomp.c/scan-14.c: Likewise.
	* testsuite/libgomp.c/scan-15.c: Likewise.
	* testsuite/libgomp.c/scan-16.c: Likewise.
	* testsuite/libgomp.c/scan-17.c: Likewise.
	* testsuite/libgomp.c/scan-18.c: Likewise.
	* testsuite/libgomp.c/scan-19.c: Likewise.
	* testsuite/libgomp.c/scan-20.c: Likewise.
	* testsuite/libgomp.c++/scan-9.C: Likewise.
	* testsuite/libgomp.c++/scan-10.C: Likewise.
	* testsuite/libgomp.c++/scan-11.C: Likewise.
	* testsuite/libgomp.c++/scan-12.C: Likewise.
	* testsuite/libgomp.c++/scan-14.C: Likewise.
	* testsuite/libgomp.c++/scan-15.C: Likewise.
	* testsuite/libgomp.c++/scan-13.C: Likewise.  Use sse2_runtime
	instead of i?86-*-* x86_64-*-* as target for scan-tree-dump-times.
	* testsuite/libgomp.c++/scan-16.C: Likewise.

From-SVN: r274947
2019-08-27 12:45:55 +02:00
Richard Earnshaw
a7e73b4158 [arm/aarch64] Add comments warning that stack-protector initializer insns shouldn't be split
Following the publication of https://kb.cert.org/vuls/id/129209/ I've
been having a look at GCC's implementation for Arm and AArch64.  I
haven't identified any issues yet, but it's a bit early to be
completely sure.

One observation, however, is that the instruction sequence that
initializes the stack canary might be vulnerable to producing a
reusable value if it were ever split early.  I don't think we ever
would, because the memory locations involved with the stack protector
are all marked volatile to ensure that the values are only loaded at
the point in time when the test is intended to happen, and that also
has the effect of making it unlikely that the value would be reused
without reloading.  Nevertheless, defence in depth is probably
warranted here.

So this patch just adds some comments warning that the patterns should
not be split.

	* config/arm/arm.md (stack_protect_set_insn): Add security-related
	comment.
	* config/aarch64/aarch64.md (stack_protect_set_<mode>): Likewise.

From-SVN: r274946
2019-08-27 10:05:51 +00:00
Martin Liska
72bb85f8d1 Fix new clang warnings.
2019-08-27  Martin Liska  <mliska@suse.cz>

	* cgraph.c (cgraph_node::remove): Remove dead assignment before
	loop.
	* config/i386/i386-features.c (scalar_chain::emit_conversion_insns):
	Enclose in anonymous namespace.
	* config/i386/x86-tune-costs.h (struct processor_costs): Wrap
	hard_register initialization in braces.
	* tree-vrp.h (value_range_base::supports_type_p): Return false
	for function with boolean return type.

From-SVN: r274945
2019-08-27 07:39:34 +00:00
GCC Administrator
e80f40684f Daily bump.
From-SVN: r274944
2019-08-27 00:16:37 +00:00
Thomas Koenig
7a56096cc4 re PR fortran/91390 (treatment of extra parameter in a subroutine call)
2019-08-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/91390
	PR fortran/91473
	* frontend-passes.c (gfc_check_externals): Make
	gfc_errors_to_warnings conditional on -fallow-argument-mismatch.
	* invoke.texi: Document -fallow-argument-mismatch.
	* lang.opt: Add -fallow-argument-mismatch.

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

	PR fortran/91390
	PR fortran/91473
	* gfortran.dg/used_before_typed_4.f90: Change warning to error.
	* gfortran.dg/argument_checking_20.f90: New test.

From-SVN: r274937
2019-08-26 20:05:32 +00:00
Ian Lance Taylor
4d67cae5e6 compiler: generalize cleanup of unresolved placeholder pointer types
This change extends the work in https://golang.org/cl/51131 to include
    placeholder pointer types created for Go function types, which can
    also be left dangling/unresolved in some instances. This fixes an
    assert in Llvm_backend::materializeComposite.
    
    Test case can be found in https://golang.org/cl/191743.
    
    Updates golang/go#33020.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191744

From-SVN: r274935
2019-08-26 19:55:41 +00:00
Uros Bizjak
0e88315116 i386.c (emit_i387_cw_initialization): Fix masking operand value.
* config/i386/i386.c (emit_i387_cw_initialization)
	<case I387_CW_ROUNDEVEN>: Fix masking operand value.

From-SVN: r274934
2019-08-26 21:18:30 +02:00
Martin Sebor
22fca489ea PR tree-optimization/83431 - -Wformat-truncation may incorrectly report truncation
gcc/ChangeLog:

	PR c++/83431
	* gimple-ssa-sprintf.c (pass_data_sprintf_length): Remove object.
	(sprintf_dom_walker): Remove class.
	(get_int_range): Make argument const.
	(directive::fmtfunc, directive::set_precision): Same.
	(format_none): Same.
	(build_intmax_type_nodes): Same.
	(adjust_range_for_overflow): Same.
	(format_floating): Same.
	(format_character): Same.
	(format_string): Same.
	(format_plain): Same.
	(get_int_range): Cast away constness.
	(format_integer): Same.
	(get_string_length): Call get_range_strlen_dynamic.  Handle
	null lendata.maxbound.
	(should_warn_p): Adjust argument scope qualifier.
	(maybe_warn): Same.
	(format_directive): Same.
	(parse_directive): Same.
	(is_call_safe): Same.
	(try_substitute_return_value): Same.
	(sprintf_dom_walker::handle_printf_call): Rename...
	(handle_printf_call): ...to this.  Initialize target to host charmap
	here instead of in pass_sprintf_length::execute.
	(struct call_info): Make global.
	(sprintf_dom_walker::compute_format_length): Make global.
	(sprintf_dom_walker::handle_gimple_call): Same.
	* passes.def (pass_sprintf_length): Replace with pass_strlen.
	* print-rtl.c (print_pattern): Reduce the number of spaces to
	avoid -Wformat-truncation.
	* tree-pass.h (make_pass_warn_printf): New function.
	* tree-ssa-strlen.c (strlen_optimize): New variable.
	(get_string_length): Add comments.
	(get_range_strlen_dynamic): New function.
	(check_and_optimize_call): New function.
	(handle_integral_assign): New function.
	(strlen_check_and_optimize_stmt): Factor code out into
	strlen_check_and_optimize_call and handle_integral_assign.
	(strlen_dom_walker::evrp): New member.
	(strlen_dom_walker::before_dom_children): Use evrp member.
	(strlen_dom_walker::after_dom_children): Use evrp member.
	(printf_strlen_execute): New function.
	(pass_strlen::gate): Update to handle printf calls.
	(dump_strlen_info): New function.
	(pass_data_warn_printf): New variable.
	(pass_warn_printf): New class.
	* tree-ssa-strlen.h (get_range_strlen_dynamic): Declare.
	(handle_printf_call): Same.
	* tree-vrp.c (value_range_base::type): Adjust assertion.
	* vr-values.c (vr_values::update_value_range): Use type of the first
	argument rather than the second.

gcc/testsuite/ChangeLog:

	PR c++/83431
	* gcc.dg/strlenopt-63.c: New test.
	* gcc.dg/pr79538.c: Adjust text of expected warning.
	* gcc.dg/pr81292-1.c: Adjust pass name.
	* gcc.dg/pr81292-2.c: Same.
	* gcc.dg/pr81703.c: Same.
	* gcc.dg/strcmpopt_2.c: Same.
	* gcc.dg/strcmpopt_3.c: Same.
	* gcc.dg/strcmpopt_4.c: Same.
	* gcc.dg/strlenopt-1.c: Same.
	* gcc.dg/strlenopt-10.c: Same.
	* gcc.dg/strlenopt-11.c: Same.
	* gcc.dg/strlenopt-13.c: Same.
	* gcc.dg/strlenopt-14g.c: Same.
	* gcc.dg/strlenopt-14gf.c: Same.
	* gcc.dg/strlenopt-15.c: Same.
	* gcc.dg/strlenopt-16g.c: Same.
	* gcc.dg/strlenopt-17g.c: Same.
	* gcc.dg/strlenopt-18g.c: Same.
	* gcc.dg/strlenopt-19.c: Same.
	* gcc.dg/strlenopt-1f.c: Same.
	* gcc.dg/strlenopt-2.c: Same.
	* gcc.dg/strlenopt-20.c: Same.
	* gcc.dg/strlenopt-21.c: Same.
	* gcc.dg/strlenopt-22.c: Same.
	* gcc.dg/strlenopt-22g.c: Same.
	* gcc.dg/strlenopt-24.c: Same.
	* gcc.dg/strlenopt-25.c: Same.
	* gcc.dg/strlenopt-26.c: Same.
	* gcc.dg/strlenopt-27.c: Same.
	* gcc.dg/strlenopt-28.c: Same.
	* gcc.dg/strlenopt-29.c: Same.
	* gcc.dg/strlenopt-2f.c: Same.
	* gcc.dg/strlenopt-3.c: Same.
	* gcc.dg/strlenopt-30.c: Same.
	* gcc.dg/strlenopt-31g.c: Same.
	* gcc.dg/strlenopt-32.c: Same.
	* gcc.dg/strlenopt-33.c: Same.
	* gcc.dg/strlenopt-33g.c: Same.
	* gcc.dg/strlenopt-34.c: Same.
	* gcc.dg/strlenopt-35.c: Same.
	* gcc.dg/strlenopt-4.c: Same.
	* gcc.dg/strlenopt-48.c: Same.
	* gcc.dg/strlenopt-49.c: Same.
	* gcc.dg/strlenopt-4g.c: Same.
	* gcc.dg/strlenopt-4gf.c: Same.
	* gcc.dg/strlenopt-5.c: Same.
	* gcc.dg/strlenopt-50.c: Same.
	* gcc.dg/strlenopt-51.c: Same.
	* gcc.dg/strlenopt-52.c: Same.
	* gcc.dg/strlenopt-53.c: Same.
	* gcc.dg/strlenopt-54.c: Same.
	* gcc.dg/strlenopt-55.c: Same.
	* gcc.dg/strlenopt-56.c: Same.
	* gcc.dg/strlenopt-6.c: Same.
	* gcc.dg/strlenopt-61.c: Same.
	* gcc.dg/strlenopt-7.c: Same.
	* gcc.dg/strlenopt-8.c: Same.
	* gcc.dg/strlenopt-9.c: Same.
	* gcc.dg/strlenopt.h (snprintf, snprintf): Declare.
	* gcc.dg/tree-ssa/builtin-snprintf-6.c: New test.
	* gcc.dg/tree-ssa/builtin-snprintf-7.c: New test.
	* gcc.dg/tree-ssa/builtin-snprintf-8.c: New test.
	* gcc.dg/tree-ssa/builtin-snprintf-9.c: New test.
	* gcc.dg/tree-ssa/builtin-sprintf-warn-21.c: New test.
	* gcc.dg/tree-ssa/dump-4.c: New test.
	* gcc.dg/tree-ssa/pr83501.c: Adjust pass name.

From-SVN: r274933
2019-08-26 12:29:45 -06:00
Jason Merrill
59bce4ad03 * decl.c (duplicate_decls): Always merge DECL_DECLARED_CONSTEXPR_P.
From-SVN: r274932
2019-08-26 14:03:26 -04:00
Uros Bizjak
f7cf1751a9 * ChangeLog: Fix roundeven entry.
From-SVN: r274931
2019-08-26 17:29:28 +02:00
Marek Polacek
7d349dd8e8 PR c++/91545 - ICE in constexpr store evaluation.
* constexpr.c (cxx_eval_store_expression): Check FIELD_DECL instead
	of DECL_P.

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

From-SVN: r274930
2019-08-26 14:39:08 +00:00
Richard Biener
d2ea2406cc i386-features.c (general_remove_non_convertible_regs): Remove.
2019-08-26  Richard Biener  <rguenther@suse.de>

	* config/i386/i386-features.c (general_remove_non_convertible_regs):
	Remove.
	(convert_scalars_to_vector): Do not call it.

From-SVN: r274929
2019-08-26 13:55:46 +00:00
Tejas Joshi
d3b92f35d8 i386: Roundeven expansion for SSE4.1+
gcc/ChangeLog:

2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>
            Uros Bizjak  <ubizjak@gmail.com>

	* builtins.c (mathfn_built_in_2): Change CASE_MATHFN to
	CASE_MATHFN_FLOATN for roundeven.
	* config/i386/i386.c (ix86_i387_mode_needed): Add case
	I387_ROUNDEVEN.
	(ix86_mode_needed): Likewise.
	(ix86_mode_after): Likewise.
	(ix86_mode_entry): Likewise.
	(ix86_mode_exit): Likewise.
	(ix86_emit_mode_set): Likewise.
	(emit_i387_cw_initialization): Add case I387_CW_ROUNDEVEN.
	* config/i386/i386.h (ix86_stack_slot): Add SLOT_CW_ROUNDEVEN.
	(ix86_entry): Add I387_ROUNDEVEN.
	(avx_u128_state): Add I387_CW_ANY.
	* config/i386/i386.md: Define UNSPEC_FRNDINT_ROUNDEVEN.
	(define_int_iterator): Likewise.
	(define_int_attr): Likewise for rounding_insn, rounding and ROUNDING.
	(define_constant): Define ROUND_ROUNDEVEN mode.
	(define_attr): Add roundeven mode for i387_cw.
	(<rouding_insn><mode>2): Add condition for ROUND_ROUNDEVEN.
	* internal-fn.def (ROUNDEVEN): New builtin function.
	* optabs.def (roundeven_optab): New optab.

gcc/testsuite/ChangeLog:

2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>

	* gcc.target/i386/sse4_1-round-roundeven-1.c: New test.
	* gcc.target/i386/sse4_1-round-roundeven-2.c: New test.


Co-Authored-By: Uros Bizjak <ubizjak@gmail.com>

From-SVN: r274928
2019-08-26 14:41:59 +02:00
Tejas Joshi
7d7b99f95b Builtin function roundeven folding implementation
2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>

        * builtins.c (mathfn_built_in_2): Added CASE_MATHFN_FLOATN
        for ROUNDEVEN.
        * builtins.def: Added function definitions for roundeven function
        variants.
        * fold-const-call.c (fold_const_call_ss): Added case for roundeven
        function call.  Adjust condition for floor, ceil, trunc and round.
        * fold-const.c (negate_mathfn_p): Added case for roundeven function.
        (tree_call_nonnegative_warnv_p): Added case for roundeven function.
        (integer_valued_real_call_p): Added case for roundeven function.
        * real.c (is_even): New function. Returns true if real number is even,
        otherwise returns false.
        (is_halfway_below): New function. Returns true if real number is
        halfway between two integers, else return false.
        (real_roundeven): New function. Round real number to nearest integer,
        rounding halfway cases towards even.
        * real.h (real_value): Added descriptive comments.  Added function
        declaration for roundeven function.
        * doc/extend.texi (Other Builtins): List roundeven variants among
        functions which can be handled as builtins.

gcc/testsuite/ChangeLog:

2019-08-26  Tejas Joshi  <tejasjoshi9673@gmail.com>

        * gcc.dg/torture/builtin-round-roundeven.c: New test.
        * gcc.dg/torture/builtin-round-roundevenf128.c: New test.

From-SVN: r274927
2019-08-26 14:32:29 +02:00
Richard Biener
48a31a0983 re PR target/91522 (STV is slow)
2019-08-26  Richard Biener  <rguenther@suse.de>

	PR target/91522
	PR target/91527
	* config/i386/i386-features.h (general_scalar_chain::defs_map):
	New member.
	(general_scalar_chain::replace_with_subreg): Remove.
	(general_scalar_chain::replace_with_subreg_in_insn): Likewise.
	(general_scalar_chain::convert_reg): Adjust signature.
	* config/i386/i386-features.c (scalar_chain::add_insn): Do not
	iterate over all defs of a reg.
	(general_scalar_chain::replace_with_subreg): Remove.
	(general_scalar_chain::replace_with_subreg_in_insn): Likewise.
	(general_scalar_chain::make_vector_copies): Populate defs_map,
	place copy only after defs that are used as vectors in the chain.
	(general_scalar_chain::convert_reg): Emit a copy for a specific
	def in a specific instruction.
	(general_scalar_chain::convert_op): All reg uses are converted here.
	(general_scalar_chain::convert_insn): Emit copies for scalar
	uses of defs here.  Replace uses with the copies we created.
	Replace and convert the def.  Adjust REG_DEAD notes, remove
	REG_EQUIV/EQUAL notes.
	(general_scalar_chain::convert_registers): Only handle copies
	into the chain here.

From-SVN: r274926
2019-08-26 10:35:59 +00:00
Robin Dapp
df7d46d925 [PATCH 2/2] Add simplify rule for wrapped addition.
Add the transform (T)(A) + CST -> (T)(A + CST).  This enables vrp to
simplify sequences like

_2 = a_7 - 1;
_3 = (long unsigned int) _2;
_5 = _3 + 1

that ivopts creates.

--

gcc/ChangeLog:

2019-08-26  Robin Dapp  <rdapp@linux.ibm.com>

        * match.pd: Add (T)(A) + CST -> (T)(A + CST).

gcc/testsuite/ChangeLog:

2019-08-26  Robin Dapp  <rdapp@linux.ibm.com>

        * gcc.dg/tree-ssa/copy-headers-5.c: Do not run vrp pass.
        * gcc.dg/tree-ssa/copy-headers-7.c: Do not run vrp pass.
        * gcc.dg/tree-ssa/loop-15.c: Remove XFAIL.
        * gcc.dg/tree-ssa/pr23744.c: Change search pattern.
        * gcc.dg/wrapped-binop-simplify.c: New test.

From-SVN: r274925
2019-08-26 10:24:44 +00:00
Robin Dapp
e944354ec0 [PATCH 1/2] Allow folding all statements.
This patch allows users of the substitute_and_fold_engine to
enable folding all statements.  It is now enabled for VRP which
is needed for the match.pd pattern in patch 2/2.

The loop versioning pass was missing one case when
deconstructing addresses that would only be triggered after
this patch for me:
It could handle addition and subsequent convert/nop but not
a convert/nop directly.  This would cause the hash to be
calculated differently and, in turn, cause the pass to miss
a versioning opportunity.  Fixed this by adding the missing
case.

--

gcc/ChangeLog:

2019-08-26  Robin Dapp  <rdapp@linux.ibm.com>

        * gimple-loop-versioning.cc (loop_versioning::record_address_fragment):
        Add nop_convert case.
        * tree-ssa-propagate.c (substitute_and_fold_dom_walker::before_dom_children):
        Fold all statements if requested.
        * tree-ssa-propagate.h (class substitute_and_fold_engine):
        Allow to fold all statements.
        * tree-vrp.c (class vrp_folder):
        Let substitute_and_fold_engine fold all statements.

From-SVN: r274923
2019-08-26 10:18:24 +00:00
Richard Biener
bf05a3bbb5 re PR c/91526 (Unnecessary SSE and other instructions generated when compiling in C mode (vs. C++ mode))
2019-08-26  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/91526
	* passes.def: Note that after late FRE we do TODO_update_address_taken.
	* tree-ssa-sccvn.c (pass_fre::execute): In late mode schedule
	TODO_update_address_taken.

From-SVN: r274922
2019-08-26 09:29:07 +00:00
Kito Cheng
20e7012b75 RISC-V: Add testcase for testing li pseudo instruction
gcc/testsuite/ChangeLog:

	gcc.target/riscv/li.c: New test.

From-SVN: r274920
2019-08-26 02:15:47 +00:00
GCC Administrator
900af77fc2 Daily bump.
From-SVN: r274919
2019-08-26 00:16:48 +00:00
Gerald Pfeifer
1460c0bbb7 gmm_malloc.h: Only use <errno.h> and errno if __STDC_HOSTED__.
* config/i386/gmm_malloc.h: Only use <errno.h> and errno if
	__STDC_HOSTED__.

From-SVN: r274915
2019-08-25 22:25:23 +00:00
GCC Administrator
fed7268f74 Daily bump.
From-SVN: r274907
2019-08-25 00:16:50 +00:00
Nathan Sidwell
6dfc1e1f33 [C++ PATCH] vfunc overrider simplification
https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01674.html
	cp/
	* class.c (check_for_overrides): Conversion operators need
	checking too.

	testsuite/
	* g++.dg/inherit/virtual14.C: New.

From-SVN: r274903
2019-08-24 22:44:06 +00:00
Thomas Koenig
e68a35ae4a re PR fortran/91390 (treatment of extra parameter in a subroutine call)
2019-08-24  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/91390
	PR fortran/91519
	* frontend-passes.c (check_externals_procedure): New
	function. If a procedure is not in the translation unit, create
	an "interface" for it, including its formal arguments.
	(check_externals_code): Use check_externals_procedure for common
	code with check_externals_expr.
	(check_externals_expr): Vice versa.
	* gfortran.h (gfc_get_formal_from_actual-arglist): New prototype.
	(gfc_compare_actual_formal): New prototype.
	* interface.c (compare_actual_formal): Rename to
	(gfc_compare_actual_formal): New function, make global.
	(gfc_get_formal_from_actual_arglist): Make global, and move here from
	* trans-types.c (get_formal_from_actual_arglist): Remove here.
	(gfc_get_function_type): Use gfc_get_formal_from_actual_arglist.

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

	PR fortran/91390
	PR fortran/91519
	* gfortran.dg/bessel_3.f90: Add type mismatch errors.
	* gfortran.dg/coarray_7.f90: Rename subroutines to avoid
	additional errors.
	* gfortran.dg/g77/20010519-1.f: Add -std=legacy. Remove
	warnings for ASSIGN. Add warnings for type mismatch.
	* gfortran.dg/goacc/acc_on_device-1.f95: Add -std=legacy.
	Add catch-all warning.
	* gfortran.dg/internal_pack_9.f90: Rename subroutine to
	avoid type error.
	* gfortran.dg/internal_pack_9.f90: Add -std=legacy. Add
	warnings for type mismatch.
	* gfortran.dg/pr39937.f: Add -std=legacy and type warnings. Move
	here from
	* gfortran.fortran-torture/compile/pr39937.f: Move to
	gfortran.dg.

From-SVN: r274902
2019-08-24 21:12:45 +00:00
Paolo Carlini
c6ca0e3e69 semantics.c (finish_switch_cond): Improve error message location.
/cp
2019-08-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* semantics.c (finish_switch_cond): Improve error message location.

/testsuite
2019-08-24  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/conversion/simd4.C: Test all the locations.

From-SVN: r274901
2019-08-24 19:39:44 +00:00
GCC Administrator
22b23ef237 Daily bump.
From-SVN: r274898
2019-08-24 00:16:42 +00:00
Jason Merrill
5b93b05349 Fix handling of namespace-scope undeduced auto decls.
* decl2.c (decl_dependent_p): New.
	(mark_used): Check it instead of just processing_template_decl.

From-SVN: r274894
2019-08-23 19:29:16 -04:00
Jason Merrill
01c53a74cd * parser.c (cp_parser_nested_name_specifier_opt): Avoid redundant error.
From-SVN: r274893
2019-08-23 19:29:10 -04:00
Marek Polacek
9bf6c63da9 PR c++/91521 - wrong error with operator->.
* decl.c (grokdeclarator): Return error_mark_node for an invalid
	trailing return type.

	* g++.dg/parse/operator8.C: New test.

From-SVN: r274891
2019-08-23 23:24:46 +00:00
Ian Lance Taylor
6ae361ae45 compiler: record pointer var values to remove write barriers
Record when a local pointer variable is set to a value such that
    indirecting through the pointer does not require a write barrier.  Use
    that to eliminate write barriers when indirecting through that local
    pointer variable.  Only keep this information per-block, so it's not
    all that applicable.
    
    This reduces the number of write barriers generated when compiling the
    runtime package from 553 to 524.
    
    The point of this is to eliminate a bad write barrier in the bytes
    function in runtime/print.go.  Mark that function nowritebarrier so
    that the problem does not recur.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/191581

From-SVN: r274890
2019-08-23 22:38:58 +00:00
Segher Boessenkool
457dac4020 rs6000: New darn testcase (PR91481)
We used to implement darn with unspecs, not unspec_volatiles, which
means two darn instructions could be CSEd together.

This testcase tests it by adding together four random numbers.  If all
is well that means we get four darn instructions, because such a small
loop is unrolled fine at -O2 already.  If things go bad, combine will
combine it all to one darn and a shift left by two.


gcc/testsuite/
	PR target/91481
	* gcc.target/powerpc/darn-3.c: New testcase.

From-SVN: r274889
2019-08-24 00:19:40 +02:00
Marek Polacek
5857042a2b PR c++/79817 - attribute deprecated on namespace.
* cp-tree.h (cp_warn_deprecated_use_scopes): Declare.
	* decl.c (grokdeclarator): Call cp_warn_deprecated_use_scopes.
	(type_is_deprecated): Likewise.
	* decl2.c (cp_warn_deprecated_use_scopes): New function.
	* name-lookup.c (handle_namespace_attrs): Handle attribute deprecated.
	* parser.c (cp_parser_namespace_alias_definition): Call
	cp_warn_deprecated_use_scopes.
	(cp_parser_using_declaration): Likewise.
	(cp_parser_using_directive): Likewise.
	* semantics.c (finish_id_expression_1): Likewise.

	* g++.dg/cpp0x/attributes-namespace1.C: New test.
	* g++.dg/cpp0x/attributes-namespace2.C: New test.
	* g++.dg/cpp0x/attributes-namespace3.C: New test.
	* g++.dg/cpp0x/attributes-namespace4.C: New test.
	* g++.dg/cpp0x/attributes-namespace5.C: New test.
	* g++.dg/cpp1z/namespace-attribs.C: Adjust.
	* g++.dg/cpp1z/namespace-attribs2.C: Adjust.

From-SVN: r274888
2019-08-23 22:04:32 +00:00
Michael Forney
d0fc6e9f69 Makefile.tpl (HOST_EXPORTS): Add CXX_FOR_BUILD.
* Makefile.tpl (HOST_EXPORTS): Add CXX_FOR_BUILD.
	* Makefile.in: Regenerate.

From-SVN: r274887
2019-08-23 15:37:22 -06:00
Joseph Myers
4872de4ac7 Fix libstdc++ lstat missing return type for Windows target.
Building for i686-mingw32 target (with some local changes) produced an
error

error: ISO C++ forbids declaration of 'lstat' with no type [-fpermissive]

in libstdc++-v3/src/filesystem/ops-common.h.  This patch adds the
missing return type.  OK to commit (trunk and GCC 9 branch)?

Note 1: I haven't run the testsuite with this patch, but it fixes the
build failure I see (in sources with other local changes).

Note 2: I don't know why this hasn't produced build failures for other
people, but the missing return type looks wrong in any case even if
other local changes are for some reason needed for it to produce an
error.

	* src/filesystem/ops-common.h [_GLIBCXX_FILESYSTEM_IS_WINDOWS]
	(std::filesystem::__gnu_posix::lstat): Add return type.

From-SVN: r274885
2019-08-23 22:04:33 +01:00
Joseph Myers
a0fae47672 * zh_CN.po: Update.
From-SVN: r274868
2019-08-23 20:47:30 +01:00
Nathan Sidwell
5f9f1ffebe [C++ PATCH] vfunc overrider simplification
https://gcc.gnu.org/ml/gcc-patches/2019-08/msg01674.html
	* class.c (check_for_override): Checking IDENTIFIER_VIRTUAL_P is
	sufficient, reorder DECL_OVERRIDE_P check.

From-SVN: r274867
2019-08-23 19:26:04 +00:00
Mihailo Stojanovic
7d35d2bf5a mips.md (mips_get_fcsr, [...]): Use SI machine mode for unspec_volatile operand.
* config/mips/mips.md (mips_get_fcsr, *mips_get_fcsr): Use SI
        machine mode for unspec_volatile operand.

        * gcc.target/mips/get-fcsr-3.c: New test.

From-SVN: r274863
2019-08-23 13:04:56 -06:00
Martin Sebor
0448240b88 pr78973.c: Make functions static to avoid failures with -fpic
gcc/testsuite/ChangeLog:

	* gcc.dg/pr78973.c: Make functions static to avoid failures
	with -fpic
	* gcc.dg/pr78973-2.c: Same.

From-SVN: r274860
2019-08-23 10:16:42 -06:00
Martin Sebor
8e7803e8e1 Warray-bounds-36.c: Make functions static to avoid failures with -fpic.
gcc/testsuite/ChangeLog:

	* gcc.dg/Warray-bounds-36.c: Make functions static to avoid failures
	with -fpic.
	* gcc.dg/Warray-bounds-41.c: Same.

From-SVN: r274859
2019-08-23 09:57:46 -06:00
Wilco Dijkstra
bf1a58e9be [ARM] Deprecate -mneon-for-64bits
Deprecate -mneon-for-64bits since it no longer has any effect after
the DImode codegen improvements.

    gcc/
	* gcc/doc/invoke.texi (mneon-for-64bits): Deprecate option.
	* gcc/config/arm/arm.opt (mneon-for-64bits): Deprecate option.
	* gcc/config/arm/arm.h (TARGET_PREFER_NEON_64BITS): Remove.
	(prefer_neon_for_64bits): Remove.
	* gcc/config/arm/arm.c (prefer_neon_for_64bits): Remove.
	(tune_params): Remove PREF_NEON_64_FALSE uses.
	(arm_option_override): Remove prefer_neon selection code.
	(arm_print_tune_info): Remove prefer_neon_for_64bits.
	* gcc/config/arm/arm-protos.h (tune_params): Remove
	prefer_neon_for_64bits.
	(prefer_neon_for_64bits): Remove.

From-SVN: r274858
2019-08-23 14:53:45 +00:00
Mark Eggleston
35a114dae1 PDF Layout
Prevent lines overlapping the right hand margin, this occurred for
references in the "See also:" section, it is prevented by placing
references on their own lines. Two example programs overlapped the
right hand margin: fixed by adjusting the position and of the comments.
Some tables had overlapping colums: the column widths were adjusted
accordingly.

From-SVN: r274857
2019-08-23 13:03:26 +00:00
Iain Sandoe
22f8849d06 [PATCH, c-family] Fix a PCH thinko (and thus PR61250).
When we are parsing a source file, the very first token might
be a PRAGMA_GCC_PCH_PREPROCESS.  This indicates that we are going
read in a PCH file (named as the value of the pragma).  If we don't
see this pragma, then we know that it's OK to release any resources
that the host might have set aside for the PCH file.

This fixes a thinko in the current implementation, in that the decision
to release resources was happening unconditionally right after the first
token is extracted but before it's been checked or acted upon.

This leads to the pch bug (seen on Darwin), because we actually do release
resources - which are subsequently (reasonably) assumed to be available
when reading a PCH file.  We then get random crashes or hangs depending
on the interaction between unmmap and malloc.

The bug is present everywhere but doesn't show on (say) Linux, since
the release of PCH resources is a NOP there.

This effects all the c-family front ends, because they all use c_lex_with_flags ()
to implement this.

The solution is to check for the PRAGMA_GCC_PCH_PREPROCESS and only call
c_common_no_more_pch () when that is not the first token.

A secondary effect of the collection is that the name of the PCH file
can be collected during the ggc_pch_read() reset of state.  Therefore
we should issue any diagnostic that might name the file before the
collections are triggered.


gcc/c-family/

2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>

	PR pch/61250
	* c-lex.c (c_lex_with_flags):  Don't call
	c_common_no_more_pch () from here.

gcc/c/

2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>

	PR pch/61250
	* c-parser.c (c_parse_file): Call c_common_no_more_pch ()
	after determining that the first token is not
	PRAGMA_GCC_PCH_PREPROCESS.

gcc/cp/

2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>

	PR pch/61250
	* parser.c (cp_parser_initial_pragma): Call c_common_no_more_pch ()
	after determining that the first token is not
	PRAGMA_GCC_PCH_PREPROCESS.

gcc/

2019-08-23  Iain Sandoe  <iain@sandoe.co.uk>

	PR pch/61250
	* ggc-page.c (ggc_pch_read): Read the ggc_pch_ondisk structure
	and issue any diagnostics needed before collecting the pre-PCH
	state.

From-SVN: r274856
2019-08-23 12:41:39 +00:00
Jakub Jelinek
df375b0321 re PR middle-end/91283 (gcc.dg/torture/c99-contract-1.c FAILs)
PR middle-end/91283
	* common.opt (fexcess-precision=): Add Optimization flag.  Use
	flag_excess_precision variable instead of
	flag_excess_precision_cmdline.
	* flags.h (class target_flag_state): Remove x_flag_excess_precision
	member.
	(flag_excess_precision): Don't define.
	* langhooks.c (lhd_post_options): Set flag_excess_precision instead of
	flag_excess_precision_cmdline.  Remove comment.
	* opts.c (set_fast_math_flags): Use frontend_set_flag_excess_precision
	and x_flag_excess_precision instead of
	frontend_set_flag_excess_precision_cmdline and
	x_flag_excess_precision_cmdline.
	(fast_math_flags_set_p): Use x_flag_excess_precision instead of
	x_flag_excess_precision_cmdline.
	* toplev.c (init_excess_precision): Remove.
	(lang_dependent_init_target): Don't call it.
ada/
	* gcc-interface/misc.c (gnat_post_options): Set flag_excess_precision
	instead of flag_excess_precision_cmdline.
brig/
	* brig-lang.c (brig_langhook_post_options): Set flag_excess_precision
	instead of flag_excess_precision_cmdline.
c-family/
	* c-common.c (c_ts18661_flt_eval_method): Use flag_excess_precision
	instead of flag_excess_precision_cmdline.
	* c-cppbuiltin.c (c_cpp_flt_eval_method_iec_559): Likewise.
	* c-opts.c (c_common_post_options): Likewise.
d/
	* d-lang.cc (d_post_options): Set flag_excess_precision instead of
	flag_excess_precision_cmdline.
fortran/
	* options.c (gfc_post_options): Set flag_excess_precision instead of
	flag_excess_precision_cmdline.  Remove comment.
go/
	* go-lang.c (go_langhook_post_options): Set flag_excess_precision
	instead of flag_excess_precision_cmdline.
lto/
	* lto-lang.c (lto_post_options): Set flag_excess_precision instead of
	flag_excess_precision_cmdline.  Remove comment.

From-SVN: r274850
2019-08-23 13:37:29 +02:00
Martin Liska
19566bdda5 Make -flto=jobserver parallel again.
2019-08-23  Martin Liska  <mliska@suse.cz>

	* lto-wrapper.c (run_gcc): When setting jobserver
	set also parallel to 1.  This was done so before r273908.

From-SVN: r274849
2019-08-23 11:27:12 +00:00
Mark Eggleston
3fa7e353ec Intrinsic documentation layout changes.
Documentation of all intrinsics now have their sections in a consistent
order. Empty sections have been removed. Stray words have been removed.
Text in a wrong section has been moved.  A missing standard was inserted.

From-SVN: r274848
2019-08-23 10:16:47 +00:00