Commit Graph

170497 Commits

Author SHA1 Message Date
Tamar Christina 8f5331b252 Add rules to strip away unneeded type casts in expressions
This patch moves part of the type conversion code from convert.c to match.pd
because match.pd is able to apply these transformations in the presence of
intermediate temporary variables.

Concretely it makes both these cases behave the same

  float e = (float)a * (float)b;
  *c = (_Float16)e;

and 

  *c = (_Float16)((float)a * (float)b);

gcc/ChangeLog:

	* convert.c (convert_to_real_1): Move part of conversion code...
	* match.pd: ...To here.

gcc/testsuite/ChangeLog:

	* gcc.dg/type-convert-var.c: New test.

From-SVN: r273826
2019-07-26 13:05:39 +00:00
Martin Jambor 4517b378af [PR 89330] Remove non-useful speculations from new_edges
2019-07-26  Martin Jambor  <mjambor@suse.cz>

	PR ipa/89330
	* ipa-inline-transform.c (check_speculations_1): New function.
	(push_all_edges_in_set_to_vec): Likewise.
	(check_speculations): Use check_speculations_1, new parameter
	new_edges.
	(inline_call): Pass new_edges to check_speculations.
	* ipa-inline.c (add_new_edges_to_heap): Assert edge_callee is not
	NULL.
	(speculation_useful_p): Early return true if edge is inlined, remove
	later checks for inline_failed.

	testsuite/
	* g++.dg/lto/pr89330_[01].C: New test.
	* g++.dg/tree-prof/devirt.C: Added -fno-profile-values to dg-options.

From-SVN: r273825
2019-07-26 10:44:51 +02:00
François Dumont ac2dca4daf 2019-07-26 François Dumont <fdumont@gcc.gnu.org>
* testsuite/util/testsuite_iterators.h
	(bidirectional_iterator_wrapper): Fix type comment.
	(random_access_iterator_wrapper): Likewise.

From-SVN: r273824
2019-07-26 05:05:48 +00:00
GCC Administrator cc00790cd3 Daily bump.
From-SVN: r273823
2019-07-26 00:16:24 +00:00
Jonathan Wakely 45c7215c1e Relocate std::endian from <type_traits> to <bit>
This change to an early C++2a feature was just approved (P1612R1).

	* include/std/bit (endian): Move definition here as per P1612R1.
	* include/std/type_traits (endian): Remove definition from here.
	* testsuite/20_util/endian/1.cc: Rename to ...
	* testsuite/26_numerics/endian/1.cc: ... here. Adjust header.

From-SVN: r273816
2019-07-25 21:30:25 +01:00
Martin Sebor 599780d601 Wstringop-overflow-14.c: Disable for stricly aligned targets.
gcc/testsuite/ChangeLog:
	* gcc.dg/Wstringop-overflow-14.c: Disable for stricly aligned targets.

From-SVN: r273814
2019-07-25 13:39:04 -06:00
Martin Sebor f2d52e0042 re PR tree-optimization/91183 (strlen of a strcpy result with a conditional source not folded)
PR tree-optimization/91183
PR tree-optimization/86688

gcc/testsuite/ChangeLog:
	* gcc.dg/strlenopt-70.c: Fix bugs.
	* gcc.dg/strlenopt-71.c: Same.
	* gcc.dg/strlenopt-72.c: Same.

From-SVN: r273812
2019-07-25 13:03:00 -06:00
Vladimir Makarov 9f41de41ea re PR rtl-optimization/91223 (ICE: in curr_insn_transform, at lra-constraints.c:4459)
2019-07-25  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/91223
	* lra-constraints.c (process_alt_operands): Fail for unsuccessful
	matching with INOUT operand.

2019-07-25  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/91223
	* gcc.target/i386/pr91223.c: New test.

From-SVN: r273810
2019-07-25 18:36:52 +00:00
Iain Sandoe 7649f2e444 [Darwin, testsuite] Address PR91087 - XFAIL parts of pr16855.C.
The testcase is failing to instrument part of the source because of a bug
in the ordering of static DTORs.  It seems unlikely that this is generically
fixable in the toolchain (and given that it's likely to be a dynamic loader
change would not be expected to be applied retrospectively to OS versions
that are out of support).  To avoid the testsuite noise, xfail the count lines
that don't match (we can adjust the xfails as/when the upstream bug is fixed).

dejagnu xfails do not seem to work when embedded in a line like:
  ~Test (void) { .... /* count(1) { xfail ... } */ }
the closing brace seems to confuse the parser.  The solution is to exapnd the
text onto three lines.

2019-07-25  Iain Sandoe  <iain@sandoe.co.uk>

	PR gcov-profile/91087
	* g++.dg/gcov/pr16855.C: Xfail the count lines for the DTORs and the
	"final" line for the failure summaries.  Adjust source layout so that
	dejagnu xfail expressions work.

From-SVN: r273809
2019-07-25 18:12:03 +00:00
Thomas Koenig 40e1ed2677 re PR fortran/65819 (overzealous checking in gfc_check_dependency for identical=true)
2019-07-25  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/65819
	* dependency.h (gfc_dep_resovler): Add optional argument identical.
	* dependency.c (gfc_check_dependency): Do not alway return 1 if
	the symbol is the same. Pass on identical to gfc_dep_resolver.
	(gfc_check_element_vs_element): Whitespace fix.
	(gfc_dep_resolver): Adjust comment for function.  If identical is
	true, return 1 if any overlap has been found.

2019-07-25  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/65819
	* gfortran.dg/dependency_54.f90: New test.

From-SVN: r273807
2019-07-25 16:24:00 +00:00
Eric Botcazou 0dfa7ba12c stmt.c (expand_case): Try to narrow the index type if it's larger than a word.
* stmt.c (expand_case): Try to narrow the index type if it's larger
	than a word.  Tidy up.

From-SVN: r273805
2019-07-25 16:16:32 +00:00
Eric Botcazou 5ab2422adf cif-code.def (NEVER_CALL): New code.
* cif-code.def (NEVER_CALL): New code.
	* ipa-inline.c (want_inline_small_function_p): Fix formatting issues.
	Set the failure to CIF_NEVER_CALL if the IPA count is zero.

From-SVN: r273804
2019-07-25 16:07:29 +00:00
Wilco Dijkstra 7508869693 Fix low reg issue in Thumb-2 movsi patterns
The Thumb-2 movsi patterns try to prefer low registers for loads and stores.
However this is done incorrectly by using 2 separate variants with 'l' and 'h'
register classes.  The register allocator will only use low registers, and
as a result we end up with significantly more spills and moves to high
registers.  Fix this by merging the alternatives and use 'l*r' to indicate
preference for low registers.  This saves ~400 instructions from the pr77308
testcase.

    gcc/
	* config/arm/thumb2.md (thumb2_movsi_insn): Fix load/store low reg.
	* config/arm/vfp.md (thumb2_movsi_vfp): Likewise.

From-SVN: r273802
2019-07-25 14:24:41 +00:00
Jan Hubicka 2fc233b731 * ipa-devirt.c (add_type_duplicate): Fix return value.
From-SVN: r273800
2019-07-25 13:42:25 +00:00
Richard Biener e2cfa983c3 tree-vrp.c (extract_range_from_multiplicative_op): Add type parameter and use it instead of guessing expression type from the...
2019-07-25  Richard Biener  <rguenther@suse.de>

	* tree-vrp.c (extract_range_from_multiplicative_op): Add
	type parameter and use it instead of guessing expression
	type from the first operand.
	(extract_range_from_binary_expr): Pass expr_type down.

From-SVN: r273797
2019-07-25 12:05:19 +00:00
Kyrylo Tkachov c9357dc13b [arm][committed] Clean up code iterator usage in satsi* patterns
GCC 10 now supports having RTL codes being code attributes (thanks
Richard) allowing us to map smax to smin and vice versa.
This means we can clean up their use in the saturation patterns that do
the cross product of [smin, smax] and use the pattern
predicate to cancel out the nonsense ones.

	* config/arm/arm.md (SATrev): Change to code attribute.
	(*satsi_<SAT:code>): Adjust for the above.
	(*satsi_<SAT:code>_shift): Likewise.

From-SVN: r273796
2019-07-25 11:04:21 +00:00
Richard Biener 0982acbe28 gimple-loop-versioning.cc (loop_versioning::prune_loop_conditions): Make value_range * temporary const.
2019-07-25  Richard Biener  <rguenther@suse.de>

	* gimple-loop-versioning.cc (loop_versioning::prune_loop_conditions):
	Make value_range * temporary const.
	* gimple-ssa-evrp-analyze.c (evrp_range_analyzer::try_find_new_range):
	Likewise.
	(evrp_range_analyzer::record_ranges_from_): Likewise.
	(evrp_range_analyzer::pop_value_range): Return a const value_range *,
	deal with having recorded a const one.
	* gimple-ssa-evrp-analyze.h (evrp_range_analyzer::get_value_range):
	Return a const value_range *.
	(evrp_range_analyzer::pop_value_range): Likewise.
	(evrp_range_analyzer::stack): Record const value_range *s.
	* gimple-ssa-evrp.c (evrp_dom_walker::before_dom_children):
	Adjust.
	* gimple-ssa-sprintf.c (get_int_range): Likewise.
	(format_integer): Likewise.
	(sprintf_dom_walker::handle_gimple_call): Likewise.
	* tree-ssa-dom.c (simplify_stmt_for_jump_threading): Likewise.
	* tree-vrp.c (vrp_prop::set_def_to_varying): Add.
	(vrp_prop::get_value_range): Adjust.
	(vrp_prop::vrp_initialize): Use set_def_to_varying instead of
	modifying the lattice in-place.
	(vrp_prop::visit_stmt): Likewise.
	* vr-values.c (vr_values::get_lattice_entry): New private method.
	(vr_values::get_value_range): Wrap it and return a const
	value_range *.
	(vr_values::set_def_to_varying): New.
	(vr_values::set_defs_to_varying): Use it.
	(vr_values::update_value_range): Likewise.
	(vr_values::vrp_stmt_computes_nonzero): Adjust.
	(values::op_with_constant_singleton_va): Likewise.
	(vr_values::extract_range_for_var_from_co): Likewise.
	(vr_values::extract_range_from_ssa_name): Likewise.
	(vr_values::extract_range_from_cond_expr): Likewise.
	(vr_values::extract_range_basic): Likewise.
	(compare_ranges): Take const value_range *, adjust.
	(compare_range_with_value): Likewise.
	(vrp_valueize): Adjust.
	(vrp_valueize_1): Likewise.
	(vr_values::get_vr_for_comparison): Return a const value_range *.
	(vr_values::compare_name_with_value): Adjust.
	(vr_values::compare_names): Likewise.
	(vr_values::vrp_evaluate_conditional_warnv_with_ops_using_ranges):
	Likewise.
	(vr_values::vrp_evaluate_conditional): Likewise.
	(find_case_label_ranges): Take a const value_range *.
	(vr_values::vrp_visit_switch_stmt): Adjust.
	(vr_values::extract_range_from_phi_node): Likewise.
	(vr_values::simplify_div_or_mod_using_ran): Likewise.
	(vr_values::simplify_abs_using_ranges): Likewise.
	(test_for_singularity): Take a const value_range *.
	(range_fits_type_p): Likewise.
	(vr_values::simplify_cond_using_ranges_1): Adjust.
	(vr_values::simplify_cond_using_ranges_2): Likewise.
	(vr_values::simplify_switch_using_ranges): Likewise.
	(vr_values::simplify_float_conversion_usi): Likewise.
	(vr_values::two_valued_val_range_p): Likewise.
	* vr-values.h (vr_values::get_value_range): Return a const
	value_range *.
	(vr_values::set_def_to_varying): New.
	(vr_values::get_lattice_entry): New private method.
	(vr_values::get_vr_for_comparison): Return a const value_range *.

From-SVN: r273792
2019-07-25 10:25:13 +00:00
Martin Liska 6343b6bf3b Extend DCE to remove unnecessary new/delete-pairs (PR c++/23383).
2019-07-25  Martin Liska  <mliska@suse.cz>
	    Dominik Infuhr  <dominik.infuehr@theobroma-systems.com>

	PR c++/23383
	* common.opt: Add -fallocation-dce
	* gimple.c (gimple_call_operator_delete_p): New.
	* gimple.h (gimple_call_operator_delete_p): Likewise.
	* tree-core.h (enum function_decl_type): Add OPERATOR_DELETE.
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Handle
	DECL_IS_OPERATOR_DELETE_P.
	(mark_all_reaching_defs_necessary_1): Likewise.
	(propagate_necessity): Likewise.
	(eliminate_unnecessary_stmts): Handle
	gimple_call_operator_delete_p.
	* tree-streamer-in.c (unpack_ts_function_decl_value_fields):
	Add packing of OPERATOR_DELETE.
	* tree-streamer-out.c (pack_ts_function_decl_value_fields):
	Similarly here.
	* tree.h (DECL_IS_OPERATOR_DELETE_P): New.
	(DECL_SET_IS_OPERATOR_DELETE): New.
	(DECL_IS_REPLACEABLE_OPERATOR_NEW_P): Likewise.
2019-07-25  Martin Liska  <mliska@suse.cz>
	    Dominik Infuhr  <dominik.infuehr@theobroma-systems.com>

	PR c++/23383
	* c-decl.c (merge_decls): Merge OPERATOR_DELETE flag.
2019-07-25  Martin Liska  <mliska@suse.cz>
	    Dominik Infuhr  <dominik.infuehr@theobroma-systems.com>

	PR c++/23383
	* decl.c (cxx_init_decl_processing): Mark delete operators
	with DECL_SET_IS_OPERATOR_DELETE.
2019-07-25  Martin Liska  <mliska@suse.cz
	    Dominik Infuhr  <dominik.infuehr@theobroma-systems.com>

	PR c++/23383
	* g++.dg/cpp1y/new1.C: New test.
2019-07-25  Martin Liska  <mliska@suse.cz>
	    Dominik Infuhr  <dominik.infuehr@theobroma-systems.com>

	PR c++/23383
	* testsuite/ext/bitmap_allocator/check_delete.cc: Add
	-fno-allocation-dce.
	* testsuite/ext/bitmap_allocator/check_new.cc: Likewise.
	* testsuite/ext/new_allocator/check_delete.cc: Likewise.
	* testsuite/ext/new_allocator/check_new.cc: Likewise.

Co-Authored-By: Dominik Infuehr <dominik.infuehr@theobroma-systems.com>

From-SVN: r273791
2019-07-25 09:36:38 +00:00
Martin Liska cb50701ec2 Come up with function_decl_type and use it in tree_function_decl.
2019-07-25  Martin Liska  <mliska@suse.cz>

	* calls.c (maybe_warn_alloc_args_overflow): Use new macros
	(e.g. DECL_SET_LAMBDA_FUNCTION and DECL_LAMBDA_FUNCTION_P).
	* coverage.c (coverage_begin_function): Likewise.
	* fold-const.c (tree_expr_nonzero_warnv_p): Likewise.
	* gimple.c (gimple_call_nonnull_result_p): Likewise.
	* ipa-icf.c (sem_item::compare_referenced_symbol_properties): Likewise.
	(sem_item::hash_referenced_symbol_properties): Likewise.
	* lto-streamer-out.c (hash_tree): Likewise.
	* predict.c (expr_expected_value_1): Likewise.
	* tree-inline.c (expand_call_inline): Likewise.
	* tree-streamer-in.c (unpack_ts_function_decl_value_fields): Likewise.
	* tree-streamer-out.c (pack_ts_function_decl_value_fields): Likewise.
	* tree-core.h (enum function_decl_type): New enum.
	(struct tree_function_decl): Remove operator_new_flag and lambda_function.
	* tree.h (FUNCTION_DECL_DECL_TYPE): New.
	(set_function_decl_type): Likewise.
	(DECL_IS_OPERATOR_NEW_P): New.
	(DECL_SET_IS_OPERATOR_NEW): Likewise.
	(DECL_LAMBDA_FUNCTION): Likewise.
	(DECL_LAMBDA_FUNCTION_P): Likewise.
	(DECL_IS_OPERATOR_NEW): Remove.
	(DECL_SET_LAMBDA_FUNCTION): Likewise.
2019-07-25  Martin Liska  <mliska@suse.cz>

	* c-decl.c (merge_decls): Use new macros
	(e.g. DECL_SET_LAMBDA_FUNCTION and DECL_LAMBDA_FUNCTION_P).
2019-07-25  Martin Liska  <mliska@suse.cz>

	* decl.c (duplicate_decls): Use new macros
	(e.g. DECL_SET_LAMBDA_FUNCTION and DECL_LAMBDA_FUNCTION_P).
	(cxx_init_decl_processing): Likewise.
	(grok_op_properties): Likewise.
	* parser.c (cp_parser_lambda_declarator_opt): Likewise.
2019-07-25  Martin Liska  <mliska@suse.cz>

	* lto-common.c (compare_tree_sccs_1): Use new macros
	(e.g. DECL_SET_LAMBDA_FUNCTION and DECL_LAMBDA_FUNCTION_P).

From-SVN: r273790
2019-07-25 09:36:19 +00:00
Xiong Hu Luo 982b149787 Generalize get_most_common_single_value to return n_th value & count
Currently get_most_common_single_value could only return the max hist
<value, count>, add sort after reading from disk, then it return nth value
in later use.  Rename it to get_nth_most_common_value.

gcc/ChangeLog:

2019-07-15  Xiong Hu Luo  <luoxhu@linux.ibm.com>

	* ipa-profile.c (get_most_common_single_value): Use
	get_nth_most_common_value.
	* profile.c (sort_hist_value): New function.
	(compute_value_histograms): Call sort_hist_value to sort the
	values after loading from disk.
	* value-prof.c (get_most_common_single_value): Rename to ...
	get_nth_most_common_value.  Add input params n, return
	the n_th value and count.
	(gimple_divmod_fixed_value_transform): Use
	get_nth_most_common_value.
	(gimple_ic_transform): Likewise.
	(gimple_stringops_transform): Likewise.
	* value-prof.h (get_most_common_single_value): Add input params
	n, default to 0.

From-SVN: r273789
2019-07-25 09:20:13 +00:00
Eric Botcazou 25b46fc918 re PR testsuite/91245 (gnat.dg/float_value1.adb FAILs)
PR testsuite/91245
	* gnat.dg/float_value1.adb: Only run on x86.

From-SVN: r273788
2019-07-25 08:01:20 +00:00
Richard Biener 599331c858 re PR tree-optimization/91236 (ICE in walk_non_aliased_vuses at gcc/tree-ssa-alias.c:3395 on aarch64)
2019-07-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/91236
	* tree-ssa-sccvn.c (vn_walk_cb_data::push_partial_def): Fix
	size of CONSTRUCTOR write.  Fix buffer size we pass to
	native_encode_expr.

From-SVN: r273787
2019-07-25 06:57:46 +00:00
Martin Sebor b631bdb3c1 PR tree-optimization/91183 - strlen of a strcpy result with a conditional source not folded
PR tree-optimization/91183 - strlen of a strcpy result with a conditional source not folded
PR tree-optimization/86688 - missing -Wstringop-overflow using a non-string local array in strnlen with excessive bound

gcc/ChangeLog:

	PR tree-optimization/91183
	PR tree-optimization/86688
	* builtins.c (compute_objsize): Handle MEM_REF.
	* tree-ssa-strlen.c (class ssa_name_limit_t): New.
	(get_min_string_length): Remove.
	(count_nonzero_bytes): New function.
	(handle_char_store): Rename...
	(handle_store): to this.  Handle multibyte stores via integer types.
	(strlen_check_and_optimize_stmt): Adjust conditional and the called
	function name.

gcc/testsuite/ChangeLog:

	PR tree-optimization/91183
	PR tree-optimization/86688
	* gcc.dg/Wstringop-overflow-14.c: New test.
	* gcc.dg/attr-nonstring-2.c: Remove xfails.
	* gcc.dg/strlenopt-70.c: New test.
	* gcc.dg/strlenopt-71.c: New test.
	* gcc.dg/strlenopt-72.c: New test.
	* gcc.dg/strlenopt-8.c: Remove xfails.

From-SVN: r273783
2019-07-24 18:29:17 -06:00
GCC Administrator 7214f11d47 Daily bump.
From-SVN: r273782
2019-07-25 00:16:24 +00:00
Jozef Lawrynowicz 378a578aff Fix non-GNU style in previous commits
2019-07-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* config.gcc (msp430*-*-*): Fix non-GNU style in r273774.
	* config/msp430/msp430.h (ENDFILE_SPEC): Fix non-GNU style in
	r273773.

From-SVN: r273775
2019-07-24 21:37:29 +00:00
Jozef Lawrynowicz c46d171720 config.gcc (msp430*-*-*): Enable initfini_array by default unless explicitly disabled with...
2019-07-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* config.gcc (msp430*-*-*): Enable initfini_array by default unless
	explicitly disabled with --disable-initfini-array.

From-SVN: r273774
2019-07-24 21:13:54 +00:00
Jozef Lawrynowicz d4c972b7eb msp430.h (ENDFILE_SPEC): Wrap uses of crtn*.o in if-exists.
2019-07-24  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* config/msp430/msp430.h (ENDFILE_SPEC): Wrap uses of crtn*.o in
	if-exists.

From-SVN: r273773
2019-07-24 21:08:34 +00:00
Martin Sebor fa5baeedd4 PR driver/80545 - option -Wstringop-overflow not recognized by Fortran
gcc/cp/ChangeLog:

	PR driver/80545
	* decl.c (finish_function): Use lang_mask.

gcc/testsuite/ChangeLog:

	PR driver/80545
	* gcc.misc-tests/help.exp: Add tests.
	* lib/options.exp: Handle C++.

gcc/ChangeLog:

	PR driver/80545
	* diagnostic.c (diagnostic_classify_diagnostic): Use lang_mask.
	(diagnostic_report_diagnostic): Same.
	* diagnostic.h (diagnostic_context::option_enabled): Add an argument.
	(diagnostic_context::lang_mask): New data member.
	* ipa-pure-const.c (suggest_attribute): Use
	lang_hooks.option_lang_mask ().
	* opts-common.c (option_enabled): Handle new argument.
	(get_option_state): Pass an additional argument.
	* opts.c (print_filtered_help): Print supported languages for
	unsupported options.  Adjust printing of current state.
	* opts.h (option_enabled): Add argument.
	* toplev.c (print_switch_values): Use lang_mask.
	(general_init): Set global_dc->lang_mask.

From-SVN: r273771
2019-07-24 14:34:03 -06:00
Iain Sandoe e346167470 [Darwin] Partial reversion of 273749.
We still need to cater for pr80556, for the single-arch case.

2019-07-24  Iain Sandoe  <iain@sandoe.co.uk>

gcc/

	PR bootstrap/87030
	* config/i386/darwin.h (REAL_LIBGCC_SPEC): Revert r273749.

From-SVN: r273768
2019-07-24 19:59:22 +00:00
Giuliano Belinassi 856bb3ef93 cgraphunit.c (symbol_table::compile): Start and stop TV_CGRAPH_IPA_PASSES and TV_CGRAPH_FUNC_EXPANSION timers.
* cgraphunit.c (symbol_table::compile): Start and stop
	TV_CGRAPH_IPA_PASSES and TV_CGRAPH_FUNC_EXPANSION timers.
	* timevar.def (TV_CGRAPH_IPA_PASSES, TV_CGRAPH_FUNC_EXPANSION): New.

From-SVN: r273767
2019-07-24 13:10:36 -06:00
Oliver Browne efab3e3a73 gimplify.c (flag_instrument_functions_exclude_p): Include namespace/class information in the printable name.
* gimplify.c (flag_instrument_functions_exclude_p): Include
	namespace/class information in the printable name.
	* opts.c (add_comma_separated_to_vector): Add NUL terminator
	to tokens entered into the vector.

From-SVN: r273766
2019-07-24 12:08:51 -06:00
Eric Botcazou 58f3f2c397 tree-nested.c (build_simple_mem_ref_notrap): New function.
* tree-nested.c (build_simple_mem_ref_notrap): New function.
	(get_static_chain): Call it instead of build_simple_mem_ref.
	(get_frame_field): Likewise.
	(get_nonlocal_debug_decl): Likewise.
	(convert_nonlocal_reference_op): Likewise.

From-SVN: r273763
2019-07-24 15:29:34 +00:00
Claudiu Zissulescu ce9dbf20f4 [ARC] Fix and refurbish the interrupts.
When entering an interrupt, not only the call save registers needs to
be place on stack but also the call clobbers one. More over, the
ARC700 return from interrupt instruction needs to be rtie, the same
like ARCv2 CPUs. While the ARC6xx family uses j.f [ilinkX]
instruction. Additionally, we need to save the state of the ZOL
machinery, namely the lp_count, lp_end and lp_start registers. For
architectures which are using extension registers (i.e., HS48) we need
to save/restore them as well.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc-protos.h (arc_output_function_epilogue): Delete
	declaration.
	(arc_compute_frame_size): Millicode is disabled when compiling
	ISR.
	(arc_return_address_register): Likewise.
	(arc_compute_function_type): Likewise.
	(arc_compute_frame_size): Likewise.
	(secondary_reload_info): Likewise.
	(arc_get_unalign): Likewise.
	(arc_can_use_return_insn): Declare.
	* config/arc/arc.c (AUX_LP_START): Define
	(AUX_LP_END): Likewise.
	(arc_frame_info): Update gmask member to 64-bit datum.
	(GMASK_LEN): Update.
	(arc_compute_function_type): Make it static, move it forward.
	(arc_must_save_register): Update, consider the extra regs.
	(arc_compute_millicode_save_restore_regs): Update to use the 64
	bit gmask.
	(arc_compute_frame_size): Likewise.
	(arc_enter_leave_p): Likewise.
	(arc_save_callee_saves): Likewise.
	(arc_restore_callee_saves): Likewise.
	(arc_save_callee_enter): Likewise.
	(arc_restore_callee_leave): Likewise.
	(arc_save_callee_milli): Likewise.
	(arc_restore_callee_milli): Likewise.
	(arc_expand_prologue): Add new interrupt handling.
	(arc_return_address_register): Make it static, move it forward.
	(arc_expand_epilogue): Add new interrupt handling.
	(arc_get_unalign): Delete.
	(arc_epilogue_uses): Make sure we do not remove the extra
	saved/restored registers when interrupt.
	(arc_can_use_return_insn): New function.
	(push_reg): Likewise.
	(pop_reg): Likewise.
	(arc_save_callee_saves): Add ZOL and FPX aux registers saving
	procedures.
	(arc_restore_callee_saves): Likewise, but restoring.
	* config/arc/arc.md (VUNSPEC_ARC_ARC600_RTIE): Define.
	(R33_REG): Likewise.
	(R34_REG): Likewise.
	(R35_REG): Likewise.
	(R36_REG): Likewise.
	(R37_REG): Likewise.
	(R38_REG): Likewise.
	(R39_REG): Likewise.
	(R45_REG): Likewise.
	(R46_REG): Likewise.
	(R47_REG): Likewise.
	(R48_REG): Likewise.
	(R49_REG): Likewise.
	(R50_REG): Likewise.
	(R51_REG): Likewise.
	(R52_REG): Likewise.
	(R53_REG): Likewise.
	(R54_REG): Likewise.
	(R55_REG): Likewise.
	(R56_REG): Likewise.
	(R58_REG): Likewise.
	(type): Add rtie attribute.
	(in_call_delay_slot): Use RETURN_ADDR_REGNUM.
	(movsi_insn): Accept moves to lp_count.
	(rtie): Update pattern.
	(simple_return): Simplify it, don't use this pattern as a return
	from an interrupt.
	(arc600_rtie): New pattern.
	(p_return_i): Clean up.
	(return): Likewise.
	* config/arc/builtins.def (rtie): Only available for non ARC6xx
	family CPUs.
	* config/arc/predicates.md (move_src_operand): Consider lp_count
	as a register.

gcc/testsuite
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

	* gcc.target/arc/arc.exp (check_effective_target_accregs): New
	predicate.
	* gcc.target/arc/builtin_special.c: Update test/
	* gcc.target/arc/interrupt-1.c: Likewise.
	* gcc.target/arc/interrupt-10.c: New test.
	* gcc.target/arc/interrupt-11.c: Likewise.
	* gcc.target/arc/interrupt-12.c: Likewise.

update

From-SVN: r273761
2019-07-24 14:21:38 +02:00
Andreas Krebbel 4caa6bab76 S/390: Add add/sub/mul overflow check patterns
This patch implements the addv, subv, and mulv patterns for signed
integers.

gcc/ChangeLog:

2019-07-24  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/predicates.md (addv_const_operand): New predicate.
	* config/s390/s390-modes.def (CCO): New condition code mode.
	* config/s390/s390.c (s390_match_ccmode_set): Handle E_CCOmode.
	(s390_branch_condition_mask): Likewise.
	* config/s390/s390.md ("addv<mode>4", "subv<mode>4")
	("mulv<mode>4"): New expanders.
	("*addv<mode>3_ccoverflow", "*addv<mode>3_ccoverflow_const")
	("*subv<mode>3_ccoverflow", "*mulv<mode>3_ccoverflow"): New
	pattern definitions.

gcc/testsuite/ChangeLog:

2019-07-24  Andreas Krebbel  <krebbel@linux.ibm.com>

	* gcc.target/s390/addsub-signed-overflow-1.c: New test.
	* gcc.target/s390/addsub-signed-overflow-2.c: New test.
	* gcc.target/s390/mul-signed-overflow-1.c: New test.
	* gcc.target/s390/mul-signed-overflow-2.c: New test.

From-SVN: r273759
2019-07-24 11:27:56 +00:00
Prathamesh Kulkarni 21caa1a264 re PR middle-end/91166 ([SVE] Unfolded ZIPs of constants)
2019-07-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>

	PR middle-end/91166
	* match.pd (vec_perm_expr(v, v, mask) -> v): New pattern.
	(define_predicates): Add entry for uniform_vector_p.
	(vec_same_elem_p): New match pattern.

testsuite/
	* gcc.target/aarch64/sve/pr91166.c: New test.

From-SVN: r273758
2019-07-24 07:20:24 +00:00
Martin Liska 7012184434 Fix off-by-one in simple-object-elf.c (PR lto/91228).
2019-07-24  Martin Liska  <mliska@suse.cz>

	PR lto/91228
	* simple-object-elf.c (simple_object_elf_copy_lto_debug_sections):
	Find first '\0' starting from gnu_lto + 1.

From-SVN: r273757
2019-07-24 07:00:48 +00:00
Bin Cheng fe1a06fc57 Fixup ChangeLog entry for revision 273570.
From-SVN: r273756
2019-07-24 01:40:59 +00:00
GCC Administrator 55ac9c5ce5 Daily bump.
From-SVN: r273753
2019-07-24 00:16:23 +00:00
Iain Sandoe c2ff710457 [Darwin] Fix PR87030 add missed commit hunks.
Messed up the commit, and missed changes to gcc/config.gcc and to the comments
in some of the headers.

2019-07-24  Iain Sandoe  <iain@sandoe.co.uk>

gcc/

	PR bootstrap/87030
	* config/i386/darwin.h (REAL_LIBGCC_SPEC): Move from here...
	* config/i386/darwin32-biarch.h .. to here.
	* config/i386/darwin64-biarch.h: Adjust comments.
	* config/rs6000/darwin32-biarch.h: Likewise.
	* config/rs6000/darwin64-biarch.h: Likewise.
	* config.gcc: Missed commit from r273746
	(*-*-darwin*): Don't include CPU t-darwin here.
	(i[34567]86-*-darwin*): Adjust to use biarch files. Produce
	an error message if i686-darwin configuration is attempted for
	Darwin >= 18.

From-SVN: r273749
2019-07-23 23:20:31 +00:00
Steven G. Kargl c078c9f447 re PR fortran/54072 (BOZ with -std=f2008: wrongly accepted to TRANSFER/ABS/...; two BOZ not rejected for IOR/IEOR/IAND)
2019-07-23  Steven G. Kargl  <kargl@gcc.gnu.org>

 PR fortran/54072
 * check.c (gfc_invalid_boz): Fix comment.
 (illegal_boz_arg): New function.
 (gfc_check_transfer): Use to arguments.
 (gfc_check_storage_size): Ditto.
 (gfc_check_complex): Remove leftover comment from BOZ patch.
 * primary.c (match_boz_constant): Remove leftover comment. 

2019-07-23  Steven G. Kargl  <kargl@gcc.gnu.org>

 PR fortran/54072
 * gfortran.dg/illegal_boz_arg_1.f90: New tests.

From-SVN: r273748
2019-07-23 23:02:07 +00:00
Steven G. Kargl 8dc63166e0 arith.c (gfc_convert_integer, [...]): Move to ...
2019-07-23  Steven G. Kargl  <kargl@gcc.gnu.org>

	* arith.c (gfc_convert_integer, gfc_convert_real, gfc_convert_complex):
	Move to ...
	* primary.c (convert_integer, convert_real, convert_complex): ... here.
	Rename and make static functions.
	(match_integer_constant): Use convert_integer
	(match_real_constant): Use convert_real.
	(match_complex_constant: Use convert_complex.
	* arith.h (gfc_convert_integer, gfc_convert_real, gfc_convert_complex):
	Remove prototypes.
	* array.c (match_array_cons_element): A BOZ cannot be a data 
	statement value.  Jump to a common exit point.
	* check.c (gfc_invalid_boz): New function.  Emit error or warning
	for a BOZ in an invalid context.
	(boz_args_check): Move to top of file to prevent need of forward
	declaration.
	(is_boz_constant): New function.  Check that BOZ expr is constant.
	(gfc_b	z2real): New function. In-place conversion of BOZ literal
	constant to REAL in accordance to F2018.
	(gfc_boz2int): New function. In-place conversion of BOZ literal
 	onstant to INTEGER in accordance to F2018.
	(gfc_check_achar, gfc_check_char, gfc_check_float): Use gfc_invalid_boz.
	Convert BOZ as needed.
	(gfc_check_bge_bgt_ble_blt): Enforce F2018 requirements on BGE, 
	BGT, BLE, and BLT intrinsic functions.
	(gfc_check_cmplx): Re-organize to check kind, if present, first.
	Convert BOZ real and/or imaginary parts as needed in accordance to
	F2018.
	(gfc_check_complex):  Use gfc_invalid_boz.  Convert BOZ as needed.
	(gfc_check_dcmplx, gfc_check_dble ): Convert BOZ as needed.
	(gfc_check_dshift):  Make dshift[lr] conform to F2018 standard.
	 gfc_check_float (gfc_expr *a)
	(gfc_check_iand_ieor_ior):  Make IAND, IEOR, and IOR conform to 
	F2018 standard.
	(gfc_check_int): Conform to F2018 standard.
	(gfc_check_intconv): Deprecate SHORT and LONG aliases for INT2 and
	INT.  Simply return for a BOZ argument. See gfc_simplify_intconv.
	(gfc_check_merge_bits): Make MERGE_BITS conform to Fortran 2018
	standard.
	(gfc_check_real): Remove incorrect comment. Check kind, if present,
	first.  Simply return for a BOZ argument. See gfc_simplify_real.
	(gfc_check_and): Re-do error handling for BOZ arguments.  Remove
	special casing ts.type != BT_INTEGER or BT_LOGICAL.
	* decl.c (match_old_style_init): Check for BOZ in old-style
	initialization.  Issue error or warning depending on
	-fallow-invalid-boz option.  Issue error if variable is not an
	INTEGER or REAL and the value is BOZ.
	* expr.c (gfc_copy_expr): Copy a BT_BOZ gfc_expr.
	(gfc_check_assign): Re-do error handling for a BOZ in an assignment
	statement.  Do in-place conversion of RHS based on LHS type of
	INTEGER or REAL.
	* gfortran.h (gfc_expr): Add a boz component.  Remove is_boz component.
	(gfc_boz2int, gfc_boz2real, gfc_invalid_boz): New prototypes.
	* interface.c (gfc_extend_assign): Guard against replacing an 
	intrinsic involving a BOZ literal constant on RHS.
	* invoke.texi: Doument -fallow-invalid-boz.
	* lang.opt: New option. -fallow-invalid-boz.
	* libgfortran.h (bt): Elevate BOZ to a basic type.
	* misc.c (gfc_basic_typename, gfc_typename): Translate BT_BOZ to BOZ.
	* primary.c (convert_integer, convert_real, convert_complex): to here.
	Rename and make static functions.
	* primary.c(match_boz_constant): Rewrite parsing of a BOZ. Re-do
	error handling.  Deprecate 'X' for hexidecimal and postfix notation.
	Use -fallow-invalid-boz and gfc_invalid_boz to accept deprecated code.
	* resolve.c (resolve_ordinary_assign): Rework a RHS that is a
	BOZ literal constant.  Use gfc_invalid_boz to allow previous
	nonstandard behavior.  Remove range checking of BOZ conversion.
	* simplify.c (convert_boz): Remove function.
	(simplify_cmplx): Remove conversion of BOZ constants, because
	conversion is done in gfc_check_cmplx.
	(gfc_simplify_float): Remove conversion of BOZ constant, because
	conversion is done in gfc_check_float.
	(simplify_intconv): Use gfc_boz2int to convert BOZ to INTEGER.
	Remove range checking for BOZ conversion.
	(gfc_simplify_real): Use k, if present, to determine kind.  Convert
	BOZ to REAL.  Remove range checking for BOZ conversion.
	target-memory.c (gfc_convert_boz): Rewrite to deal with convert of
	a BOZ to a REAL value.

2019-07-23  Steven G. Kargl  <kargl@gcc.gnu.org>

	* gfortran.dg/achar_5.f90: Fix for new BOZ handling.
	* arithmetic_overflow_1.f90: Ditto.
	* gfortran.dg/boz_11.f90: Ditto.
	* gfortran.dg/boz_12.f90: Ditto.
	* gfortran.dg/boz_4.f90: Ditto.
	* gfortran.dg/boz_5.f90: Ditto.
	* gfortran.dg/boz_6.f90: Ditto.
	* gfortran.dg/boz_7.f90: Ditto.
	* gfortran.dg/boz_8.f90: Ditto.
	* gfortran.dg/dec_structure_6.f90: Ditto.
	* gfortran.dg/dec_union_1.f90: Ditto.
	* gfortran.dg/dec_union_2.f90: Ditto.
	* gfortran.dg/dec_union_5.f90: Ditto.
	* gfortran.dg/dshift_3.f90: Ditto.
	* gfortran.dg/gnu_logical_2.f90: Ditto.
	* gfortran.dg/int_conv_1.f90: Ditto.
	* gfortran.dg/ishft_1.f90: Ditto.
	* gfortran.dg/nan_4.f90: Ditto.
	* gfortran.dg/no_range_check_3.f90: Ditto.
	* gfortran.dg/pr16433.f: Ditto.
	* gfortran.dg/pr44491.f90: Ditto.
	* gfortran.dg/pr58027.f90: Ditto.
	* gfortran.dg/pr81509_2.f90: Ditto.
	* gfortran.dg/unf_io_convert_1.f90: Ditto.
	* gfortran.dg/unf_io_convert_2.f90: Ditto.
	* gfortran.fortran-torture/execute/intrinsic_fraction_exponent.f90:
	Ditto.
	* gfortran.fortran-torture/execute/intrinsic_mvbits.f90: Ditto.
	* gfortran.fortran-torture/execute/intrinsic_nearest.f90: Ditto.
	* gfortran.fortran-torture/execute/seq_io.f90: Ditto.
	* gfortran.dg/gnu_logical_1.F: Delete test.
	* gfortran.dg/merge_bits_3.f90: New test.
	* gfortran.dg/merge_bits_3.f90: Ditto.
	* gfortran.dg/boz_int.f90: Ditto.
	* gfortran.dg/boz_bge.f90: Ditto.
	* gfortran.dg/boz_complex_1.f90: Ditto.
	* gfortran.dg/boz_complex_2.f90: Ditto.
	* gfortran.dg/boz_complex_3.f90: Ditto.
	* gfortran.dg/boz_dble.f90: Ditto.
	* gfortran.dg/boz_dshift_1.f90: Ditto.
	* gfortran.dg/boz_dshift_2.f90: Ditto.
	* gfortran.dg/boz_float_1.f90: Ditto.
	* gfortran.dg/boz_float_2.f90: Ditto.
	* gfortran.dg/boz_float_3.f90: Ditto.
	* gfortran.dg/boz_iand_1.f90: Ditto.
	* gfortran.dg/boz_iand_2.f90: Ditto.

2019-07-23  Steven G. Kargl  <kargl@gcc.gnu.org>

	* testsuite/libgomp.fortran/reduction4.f90: Update BOZ usage
	* testsuite/libgomp.fortran/reduction5.f90: Ditto.

From-SVN: r273747
2019-07-23 21:43:21 +00:00
Iain Sandoe 000a002072 [Darwin] Fix PR87030 and tidy config fragments.
This is about 32/64b host and multilib support across the range of Darwin
systems.

Prior to Darwin8 (OS X 10.4), the toolchains support only PowerPC and only 32b.

On Darwin8 it is possible to target a 64b multilib, but with support limited
to a few of the main libraries on the system (not a recommended configuration).

From Darwin9 to Darwin17 (OSX 10.5 to 10.13) it is possible to have either
32 or 64b hosted toolchains, with support for a 64 or 32b multilib respectively.

On Darwin9 the kernel is 32b, but with support for 64b executables, so it's
conventional to build a 32b host toolchain supporting a 64b multilib.  However
this is not enforced (merely a convention).

There is also some platform hardware supporting Darwin10/11 which is only 32b
and for which the same situation applies.  However, from Darwin10 to Darwin17,
the majority of platform hardware supports a 64b kernel and it's conventional
to build a 64b host toolchain with support for a 32b multilib.

On/from Darwin18 (OS X 10.14), the development headers (in the SDK) no longer
expose the interfaces for the 32b multilib support (although sufficient runtime
support remains installed that the testsuite can be run for a 32b multilib).

The PR is raised against this latter situation since the absence of exposed
interfaces causes a 'default' bootstrap fail regardless of the availability of
the runtimes.  Given the number of permutations, I felt it warranted a general
solution, especially since the current scheme of target headers and t-make
fragments has become somewhat messy.

The changes here enforce the single 32b PowerPC multilib for Darwin < 8 and the
single X86 64b multilib for Darwin >= 18.  This means that there is no longer
any need to configure Darwin18+ '--disable-multilib', but also that if you want
to use the ability to continue to test the compiler's 32b multilib there, you
need to make a configuration targeting an earlier OS version (and using the
SDK from that).

gcc/

	PR bootstrap/87030
	* config.gcc (*-*-darwin*): Don't include CPU t-darwin here.
	(i[34567]86-*-darwin*): Adjust to use biarch files. Produce
	an error message if i686-darwin configuration is attempted for
	Darwin >= 18.
	(x86_64-*-darwin*): Switch to single multilib for Darwin >= 18.
	(powerpc-*-darwin*): Use biarch files where needed.
	(powerpc64-*-darwin*): Likewise.
	* config/i386/darwin.h (REAL_LIBGCC_SPEC): Move to new biarch file.
	(DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
	arch case.
	* config/i386/darwin32-biarch.h: New.
	* config/i386/darwin64.h: Rename.
	* gcc/config/i386/darwin64-biarch.h: To this.
	* config/i386/t-darwin: Rename.
	* gcc/config/i386/t-darwin32-biarch: To this.
	* config/i386/t-darwin64: Rename.
	* gcc/config/i386/t-darwin64-biarch: To this.
	* config/rs6000/darwin32-biarch.h: New.
	* config/rs6000/darwin64.h: Rename.
	* config/rs6000/darwin64-biarch.h: To this.
	(DARWIN_ARCH_SPEC, DARWIN_SUBARCH_SPEC): Revise for default single
	arch case.
	* config/rs6000/t-darwin8: Rename.
	* config/rs6000/t-darwin32-biarch: To this.
	* config/rs6000/t-darwin64 Rename.
	* config/rs6000/t-darwin64-biarch: To this.

From-SVN: r273746
2019-07-23 20:31:26 +00:00
Jeff Law d8e54c6203 Add PR markers to recent DSE changes. And...
PR tree-optimization/86061
	* gcc.dg/tree-ssa/pr86061.c: New test.

From-SVN: r273745
2019-07-23 14:05:48 -06:00
Ian Lance Taylor 40768ee0bc compiler: use correct value type in 2-case select send
In the channel-send case, the value to be sent may needs an
    (implicit) type conversion to the channel element type. This CL
    ensures that we use the correct value type for the send.
    
    Fixes golang/go#33235.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/187177

From-SVN: r273743
2019-07-23 17:20:36 +00:00
Martin Sebor 9bf4008473 configure.ac (ACX_PROG_CXX_WARNING_OPTS): Revert r273311.
gcc/ChangeLog:
	* configure.ac (ACX_PROG_CXX_WARNING_OPTS): Revert r273311.

From-SVN: r273742
2019-07-23 11:03:13 -06:00
Vladislav Ivanishin d894bafc5b gdbinit.in: add reload-gdbhooks (rh) command
gcc/ChangeLog:

2019-07-23  Vladislav Ivanishin <vlad@ispras.ru>

	* gdbinit.in (reload-gdbhooks): New command with an attached doc string.
	(rh): New alias for it.

From-SVN: r273738
2019-07-23 14:05:14 +00:00
Vladislav Ivanishin e41dd06873 make gdbhooks.py idempotent with respect to reloading
gcc/ChangeLog:

2019-07-23  Vladislav Ivanishin <vlad@ispras.ru>

	* gdbhooks.py: Pass replace=True to
	gdb.printing.register_pretty_printer.

From-SVN: r273737
2019-07-23 13:57:43 +00:00
Richard Biener 0bd65f4fde re PR debug/91231 (ICE in dwarf2out_inline_entry, at dwarf2out.c:27642)
2019-07-23  Richard Biener  <rguenther@suse.de>

	PR debug/91231
	* lto-streamer-in.c (input_function): Drop inline-entry markers
	that ended up with an unknown location block.

From-SVN: r273733
2019-07-23 10:45:59 +00:00
Richard Biener 62e3e66f13 re PR tree-optimization/83518 (Missing optimization: useless instructions should be dropped)
2019-07-23  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/83518
	* tree-ssa-sccvn.c (vn_reference_lookup_3): Handle aggregate
	init from a constant even when partial defs are already recorded.

	c/
	* gimple-parser.c (c_parser_parse_gimple_body): When we have
	a CFG also rebuild cgraph edges.

	* gcc.dg/tree-ssa/ssa-fre-79.c: New testcase.

From-SVN: r273732
2019-07-23 10:00:24 +00:00
Jan Hubicka e1eb82f5aa i386-common.c: Use PROCESSOR_ZNVER2 scheduler for znver2.
* i386-common.c: Use PROCESSOR_ZNVER2 scheduler for znver2.
	* config/i386/znver1.md: Enable patterns for znver2 and add store
	variants which use extra AGU unit.

From-SVN: r273731
2019-07-23 09:38:49 +00:00