Commit Graph

171683 Commits

Author SHA1 Message Date
Rainer Orth
a164d19acb Check init_priority in g++.dg/cpp0x/gen-attrs-67.C
gcc/testsuite:
	* g++.dg/cpp0x/gen-attrs-67.C: Expect constructor priorities error
	on any !init_priority target.

From-SVN: r276510
2019-10-03 13:23:52 +00:00
Richard Sandiford
eec306385d [arm] Fix rtl-checking failure in arm_print_value
Noticed while debugging the arm bootstrap failure.

2019-10-03  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* config/arm/arm.c (arm_print_value): Use real_to_decimal
	to print CONST_DOUBLEs.

From-SVN: r276508
2019-10-03 13:05:31 +00:00
Andrea Corallo
12e088ba57 re PR jit/91928 (libgccjit fails on subsequent compilations in ipa-cp)
PR jit/91928

	* ipa-cp.c (ipa_cp_c_finalize): Release ipcp_transformation_sum.
	* ipa-prop.c (ipcp_free_transformation_sum): New function.
	* ipa-prop.h (ipcp_free_transformation_sum): Add declaration.

From-SVN: r276507
2019-10-03 12:39:55 +00:00
Thomas Koenig
3aad513c68 re PR fortran/84487 (Large rodate section increase in 465.tonto with r254427)
2019-10-03  Thomas Koenig <tkoenig@gcc.gnu.org>

	PR fortran/84487
	* trans-decl.c (gfc_get_symbol_decl): For __def_init, set
	DECL_ARTIFICAL and do not set TREE_READONLY.

2019-10-03  Thomas Koenig <tkoenig@gcc.gnu.org>

	PR fortran/84487
	* gfortran.dg/typebound_call_22.f03: xfail.

From-SVN: r276506
2019-10-03 12:39:42 +00:00
Mark Eggleston
f61e54e59c Character typenames in errors and warnings
Character type names now incorporate length, kind is only shown if
the default character is not being used.
    
Examples:
   
  character(7) is reported as CHARACTER(7)
  character(len=20,kind=4) is reported as CHARACTER(20,4)
   
dummy character variables with assumed length:
    
  character(*) is reported as CHARACTER(*)
  character(*,kind=4) is reported as CHARACTER(*,4)

From-SVN: r276505
2019-10-03 09:40:23 +00:00
Aldy Hernandez
38a734350f Makefile.in (OBJS): Add range.o and range-op.o.
* Makefile.in (OBJS): Add range.o and range-op.o.
	Remove wide-int-range.o.
	* function-tests.c (test_ranges): New.
	(function_tests_c_tests): Call test_ranges.
	* ipa-cp.c (ipa_vr_operation_and_type_effects): Call
	range_fold_unary_expr instead of extract_range_from_unary_expr.
	* ipa-prop.c (ipa_compute_jump_functions_for_edge): Same.
	* range-op.cc: New file.
	* range-op.h: New file.
	* range.cc: New file.
	* range.h: New file.
	* selftest.h (range_tests): New prototype.
	* ssa.h: Include range.h.
	* tree-vrp.c (value_range_base::value_range_base): New
	constructors.
	(value_range_base::singleton_p): Do not call
	ranges_from_anti_range until sure we will need to.
	(value_range_base::type): Rename gcc_assert to
	gcc_checking_assert.
	(vrp_val_is_max): New argument.
	(vrp_val_is_min): Same.
	(wide_int_range_set_zero_nonzero_bits): Move from
	wide-int-range.cc.
	(extract_range_into_wide_ints): Remove.
	(extract_range_from_multiplicative_op): Remove.
	(extract_range_from_pointer_plus_expr): Abstract POINTER_PLUS code
	from extract_range_from_binary_expr.
	(extract_range_from_plus_minus_expr): Abstract PLUS/MINUS code
	from extract_range_from_binary_expr.
	(extract_range_from_binary_expr): Remove.
	(normalize_for_range_ops): New.
	(range_fold_binary_expr): New.
	(range_fold_unary_expr): New.
	(value_range_base::num_pairs): New.
	(value_range_base::lower_bound): New.
	(value_range_base::upper_bound): New.
	(value_range_base::upper_bound): New.
	(value_range_base::contains_p): New.
	(value_range_base::invert): New.
	(value_range_base::union_): New.
	(value_range_base::intersect): New.
	(range_compatible_p): New.
	(value_range_base::operator==): New.
	(determine_value_range_1): Call range_fold_*expr instead of
	extract_range_from_*expr.
	* tree-vrp.h (class value_range_base): Add new constructors.
	Add methods for union_, intersect, operator==, contains_p,
	num_pairs, lower_bound, upper_bound, invert.
	(vrp_val_is_min): Add handle_pointers argument.
	(vrp_val_is_max): Same.
	(extract_range_from_unary_expr): Remove.
	(extract_range_from_binary_expr): Remove.
	(range_fold_unary_expr): New.
	(range_fold_binary_expr): New.
	* vr-values.c (vr_values::extract_range_from_binary_expr): Call
	range_fold_binary_expr instead of extract_range_from_binary_expr.
	(vr_values::extract_range_basic): Same.
	(vr_values::extract_range_from_unary_expr): Call
	range_fold_unary_expr instead of extract_range_from_unary_expr.
	* wide-int-range.cc: Remove.
	* wide-int-range.h: Remove.

From-SVN: r276504
2019-10-03 08:08:50 +00:00
Michael Meissner
0a8c8f4d65 Undo unintended change to predicates.md in subversion id 276498
From-SVN: r276503
2019-10-03 00:17:56 +00:00
GCC Administrator
e6f53878db Daily bump.
From-SVN: r276502
2019-10-03 00:16:19 +00:00
Michael Meissner
e5ec901cec Use the SIGNED_16BIT_OFFSET_EXTRA_P macro for 16-bit signed tests.
2019-10-02   Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/rs6000.c (mem_operand_gpr): Use
	SIGNED_16BIT_OFFSET_EXTRA_P.
	(mem_operand_ds_form): Use SIGNED_16BIT_OFFSET_EXTRA_P.
	(rs6000_mode_dependent_address): Use SIGNED_16BIT_OFFSET_EXTRA_P.

From-SVN: r276498
2019-10-03 00:13:40 +00:00
Joseph Myers
202be58655 Define WIDTH macros for C2x.
As part of the integration of TS 18661-1 into C2x, many features
became unconditional features not depending on any feature test macro
being defined.  This patch updates the conditionals on the *_WIDTH
macros in limits.h and stdint.h accordingly so that they are defined
for C2x.  The macro CR_DECIMAL_DIG in float.h does still require
__STDC_WANT_IEC_60559_BFP_EXT__ to be defined, and a test for this is
added.

Bootstrapped with no regressions on x86_64-pc-linux-gnu.

gcc:
	* ginclude/stdint-gcc.h [__STDC_WANT_IEC_60559_BFP_EXT__]: Change
	condition on WIDTH macros to [__STDC_WANT_IEC_60559_BFP_EXT__ ||
	(__STDC_VERSION__ && __STDC_VERSION__ > 201710L)].
	* glimits.h: Likewise.

gcc/testsuite:
	* gcc.dg/cr-decimal-dig-2.c: New test.
	* gcc.dg/limits-width-2.c: New test.  Based on limits-width-1.c.
	* gcc.dg/stdint-width-2.c: New test.  Based on stdint-width-1.c.

From-SVN: r276497
2019-10-03 00:50:58 +01:00
Paolo Carlini
f5fc32e4a3 init.c (build_new): Use cp_expr_loc_or_input_loc in two places.
/cp
2019-10-03  Paolo Carlini  <paolo.carlini@oracle.com>

	* init.c (build_new): Use cp_expr_loc_or_input_loc in two places.
	* name-lookup.c (do_pushdecl): Use DECL_SOURCE_LOCATION.
	(push_class_level_binding_1): Likewise.
	(set_decl_namespace): Likewise.

/testsuite
2019-10-03  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/diagnostic/integral-array-size-1.C: New.
	* g++.dg/cpp0x/alias-decl-1.C: Test location(s) too.
	* g++.dg/init/new43.C: Likewise.
	* g++.dg/lookup/friend12.C: Likewise.
	* g++.dg/lookup/pr79766.C: Likewise.
	* g++.dg/lookup/pr84375.C: Likewise.
	* g++.dg/other/new-size-type.C: Likewise.

From-SVN: r276496
2019-10-02 23:23:51 +00:00
Jakub Jelinek
775eaa4d83 re PR rtl-optimization/91976 (RTL check: expected code 'const_int', have 'reg' in emit_block_move_hints, at expr.c:1627)
PR rtl-optimization/91976
	* expr.c (emit_block_move_hints): Don't call can_move_by_pieces if
	size is not CONST_INT_P, set pieces_ok to false in that case.  Simplify
	CONST_INT_P (size) && pieces_ok to pieces_ok.  Formatting fix.

From-SVN: r276495
2019-10-03 00:33:39 +02:00
Jakub Jelinek
1006c9d439 constexpr.c (cxx_eval_constant_expression): If not skipping upon entry to body...
* constexpr.c (cxx_eval_constant_expression) <case CLEANUP_STMT>: If
	not skipping upon entry to body, run cleanup with the same *jump_target
	as it started to run the cleanup even if the body returns, breaks or
	continues.
	(potential_constant_expression_1): Allow CLEANUP_STMT.

	* g++.dg/ext/constexpr-attr-cleanup1.C: New test.

From-SVN: r276494
2019-10-03 00:32:56 +02:00
Jakub Jelinek
276a52d556 constexpr.c (cxx_eval_store_expression): Formatting fix.
* constexpr.c (cxx_eval_store_expression): Formatting fix.  Handle
	const_object_being_modified with array type.

From-SVN: r276493
2019-10-03 00:31:58 +02:00
Martin Sebor
bead578432 Add changelog entries for r276491.
From-SVN: r276492
2019-10-02 16:04:00 -06:00
Martin Sebor
d1090a8a80 PR tree-optimization/80936 - bcmp, bcopy, and bzero not declared nonnull
gcc/testsuite/ChangeLog:

	PR tree-optimization/80936
	* gcc.dg/Wnonnull-2.c: New test.
	* gcc.dg/Wnonnull-3.c: New test.
	* gcc.dg/nonnull-3.c: Expect more warnings.

gcc/ChangeLog:

	PR tree-optimization/80936
	* builtins.def (bcmp, bcopy, bzero): Declare nonnull.

From-SVN: r276491
2019-10-02 16:00:42 -06:00
Richard Sandiford
aa29ed6db6 Fix ALL_REGS thinko in initialisation of function_used_regs
My change to the -fipa-ra bookkeeping used ALL_REGS as the supposedly
safe default assumption, but ALL_REGS isn't literally all registers,
just a close approximation.

This caused a bootstrap failure on arm-linux-gnu, where the condition
code register isn't in ALL_REGS and so was being masked out of some
call-clobbered sets.

2019-10-02  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* cgraph.c (cgraph_node::rtl_info): Use SET_HARD_REG_SET
	instead of reg_class_contents[ALL_REGS].

From-SVN: r276489
2019-10-02 21:19:35 +00:00
Ian Lance Taylor
b7c4123032 runtime: mark go-context.S as no-executable-stack and split-stack supported
The .note.GNU-stack section tells the linker that this object does not
    require an executable stack.
    
    The .note.GNU-split-stack section tells the linker that functions in
    this object can be called directly by split-stack functions, without
    require a large stack.
    
    The .note.GNU-no-split-stack section tells the linker that functions
    in this object do not have a split-stack prologue.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/198440

From-SVN: r276488
2019-10-02 20:11:35 +00:00
Jason Merrill
b830c28b56 Improve C++ fold caching efficiency.
While looking at concepts caching I noticed that we were clearing the caches
unnecessarily for non-constant initialization, which shouldn't affect
folding.

	* typeck2.c (store_init_value): Only clear_cv_and_fold_caches if the
	value is constant.

From-SVN: r276487
2019-10-02 16:01:42 -04:00
Jason Merrill
c89844e5d3 Add some hash_map_safe_* functions like vec_safe_*.
gcc/
	* hash-map.h (default_hash_map_size): New variable.
	(create_ggc): Use it as default argument.
	(hash_map_maybe_create, hash_map_safe_get)
	(hash_map_safe_get_or_insert, hash_map_safe_put): New fns.
gcc/cp/
	* constexpr.c (maybe_initialize_fundef_copies_table): Remove.
	(get_fundef_copy): Use hash_map_safe_get_or_insert.
	* cp-objcp-common.c (cp_get_debug_type): Use hash_map_safe_*.
	* decl.c (store_decomp_type): Remove.
	(cp_finish_decomp): Use hash_map_safe_put.
	* init.c (get_nsdmi): Use hash_map_safe_*.
	* pt.c (store_defaulted_ttp, lookup_defaulted_ttp): Remove.
	(add_defaults_to_ttp): Use hash_map_safe_*.

From-SVN: r276484
2019-10-02 15:26:47 -04:00
Andreas Tobler
d61bff850d Testsuite, remove alloca header
2019-10-02  Andreas Tobler  <andreast@gcc.gnu.org>

	* testsuite/libgomp.oacc-c-c++-common/loop-default.h: Remove alloca.h
	include. Replace alloca () with __builtin_alloca ().
	* testsuite/libgomp.oacc-c-c++-common/loop-dim-default.c: Likewise.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>

From-SVN: r276479
2019-10-02 21:05:35 +02:00
Steven G. Kargl
c20a90e0c8 re PR fortran/91784 (ICE in gfc_real2complex, at fortran/arith.c:2208)
2019-10-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91784
	* simplify.c (gfc_convert_constant): Simplify expression if the
	expres	ion type is EXPR_OP.

2019-10-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91784
	* gfortran.dg/pr91784.f90: New test.

From-SVN: r276474
2019-10-02 17:17:55 +00:00
Steven G. Kargl
307de10071 re PR fortran/91785 (ICE in check_assumed_size_reference, at fortran/resolve.c:1601)
2019-10-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91785
	* primary.c (gfc_match_varspec): Ensure an inquiry parameter has
	it locus set.

2019-10-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91785
	* gfortran.dg/pr91785.f90: New test.

From-SVN: r276473
2019-10-02 17:09:45 +00:00
Steven G. Kargl
939e9f696b re PR fortran/91942 (ICE in match_vtag, at fortran/io.c:1485)
2019-10-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91942
	* io.c (match_vtag): Check for non-NULL result->symtree.
	(match_out_tag): Check for invalid constant due to inquiry parameter.
	(match_filepos): Instead of a syntax error, go to cleanup to get better
	error messages.

2019-10-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91942
	* gfortran.dg/pr91587.f90: Update dg-error regex.
	* gfortran.dg/pr91942.f90: New test.

From-SVN: r276472
2019-10-02 17:04:57 +00:00
Steven G. Kargl
8b4e5e711d re PR fortran/91943 (ICE in gfc_conv_constant_to_tree, at fortran/trans-const.c:370)
2019-10-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91943
	* match.c (gfc_match_call): BOZ cannot be an actual argument in
	a subroutine reference.
	* resolve.c (resolve_function): BOZ cannot be an actual argument in
	a function reference.
 
2019-10-02  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/91943
	gfortran.dg/pr91943.f90

From-SVN: r276471
2019-10-02 17:01:30 +00:00
Jan Hubicka
b1fb82e525 cif-code.def (MAX_INLINE_INSNS_SINGLE_O2_LIMIT, [...]): New.
* cif-code.def (MAX_INLINE_INSNS_SINGLE_O2_LIMIT,
	MAX_INLINE_INSNS_AUTO_O2_LIMIT): New.
	* ipa-inline.c (inline_insns_single, inline_insns_auto): New functions.
	(can_inline_edge_by_limits_p): Use it.
	(big_speedup_p): Use PARAM_INLINE_MIN_SPEEDUP_O2.
	(want_inline_small_function_p): Use O2 bounds.
	(edge_badness): LIkewise.
	* opts.c (default_options): Add OPT_finline_functions.
	* params.def (PARAM_INLINE_MIN_SPEEDUP_O2,
	PARAM_MAX_INLINE_INSNS_SINGLE_O2, PARAM_MAX_INLINE_INSNS_AUTO_O2):
	New parameters.

	* g++.dg/tree-ssa/pr53844.C: Add -fno-inline-functions --param
	max-inline-insns-single-O2=200.
	* gcc.c-torture/execute/builtins/builtins.exp: Add
	-fno-inline-functions to additional_flags.
	* gcc.dg/ipa/inline-7.c: Add -fno-inline-functions.
	* gcc.dg/optimize-bswapsi-5.c: Add -fno-inline-functions.
	* gcc.dg/tree-ssa/ssa-thread-12.c: Add --param
	early-inlining-insns-O2=14 -fno-inline-functions; revert previous
	change.
	* gcc.dg/winline-3.c: Use --param max-inline-insns-single-O2=1
	--param inline-min-speedup-O2=100
	instead of --param max-inline-insns-single=1 --param
	inline-min-speedup=100

	* invoke.texi (-finline-functions): Update documentation.
	(max-inline-insns-single-O2, max-inline-insns-auto-O2,
	inline-min-speedup-O2): Document.
	(early-inlining-insns-O2): Simplify docs.

From-SVN: r276470
2019-10-02 16:02:16 +00:00
Jan Hubicka
562d1e9556 cif-code.def (MAX_INLINE_INSNS_SINGLE_O2_LIMIT, [...]): New.
* cif-code.def (MAX_INLINE_INSNS_SINGLE_O2_LIMIT,
	MAX_INLINE_INSNS_AUTO_O2_LIMIT): New.
	* ipa-inline.c (inline_insns_single, inline_insns_auto): New functions.
	(can_inline_edge_by_limits_p): Use it.
	(big_speedup_p): Use PARAM_INLINE_MIN_SPEEDUP_O2.
	(want_inline_small_function_p): Use O2 bounds.
	(edge_badness): LIkewise.
	* opts.c (default_options): Add OPT_finline_functions.
	* params.def (PARAM_INLINE_MIN_SPEEDUP_O2,
	PARAM_MAX_INLINE_INSNS_SINGLE_O2, PARAM_MAX_INLINE_INSNS_AUTO_O2):
	New parameters.

	* g++.dg/tree-ssa/pr53844.C: Add -fno-inline-functions --param
	max-inline-insns-single-O2=200.
	* gcc.c-torture/execute/builtins/builtins.exp: Add
	-fno-inline-functions to additional_flags.
	* gcc.dg/ipa/inline-7.c: Add -fno-inline-functions.
	* gcc.dg/optimize-bswapsi-5.c: Add -fno-inline-functions.
	* gcc.dg/tree-ssa/ssa-thread-12.c: Add --param
	early-inlining-insns-O2=14 -fno-inline-functions; revert previous
	change.
	* gcc.dg/winline-3.c: Use --param max-inline-insns-single-O2=1
	--param inline-min-speedup-O2=100
	instead of --param max-inline-insns-single=1 --param
	inline-min-speedup=100

	* invoke.texi (-finline-functions): Update documentation.
	(max-inline-insns-single-O2, max-inline-insns-auto-O2,
	inline-min-speedup-O2): Document.
	(early-inlining-insns-O2): Simplify docs.

From-SVN: r276469
2019-10-02 16:01:47 +00:00
Jonathan Wakely
352d2690f1 Remove greedy wildcards from libstdc++ linker script
The only symbols matched by std::e[a-q]* and std::e[s-z]* that are
supposed to be in the GLIBCXX_3.4 version are std::exception::* and
std::endl and std::ends. The latter two already have explicit patterns
matching them, so we just need to match std::exception::*.

This change ensures that any new symbols with a return type of
std::enable_if<...> are not added to the GLIBCXX_3.4 version.

	* config/abi/pre/gnu.ver: Tighten up greedy wildcards.

From-SVN: r276468
2019-10-02 16:52:41 +01:00
Alexander Monakov
1764d63bd9 ifcvt: improve cost estimation (PR 87047)
PR rtl-optimization/87047
	* ifcvt.c (average_cost): New static function.  Use it...
	(noce_process_if_block): ... here.

testsuite/
	* gcc.dg/pr87047.c: New test.

From-SVN: r276466
2019-10-02 18:37:12 +03:00
Martin Jambor
a264ea9a5b [PR testsuite/91842] Skip gcc.dg/ipa/ipa-sra-19.c on power
2019-10-02  Martin Jambor  <mjambor@suse.cz>

	PR testsuite/91842
	* gcc.dg/ipa/ipa-sra-19.c: Skip on powerpc.

From-SVN: r276465
2019-10-02 17:09:37 +02:00
Jan Hubicka
408b33fcc3 module.c (load_commons): Initialize flags to 0 to silecne -Wmaybe-uninitialized warning.
* module.c (load_commons): Initialize flags to 0 to silecne
	-Wmaybe-uninitialized warning.
	(read_module): Likewise for n and comp_name.

From-SVN: r276464
2019-10-02 15:07:52 +00:00
Jonathan Wakely
709310e7a4 Document non-conformance of parallel mode to recent C++ standards
* doc/xml/manual/parallel_mode.xml: Add caveat about support for
	recent standards.
	* doc/html/*: Regenerate.

From-SVN: r276463
2019-10-02 15:56:57 +01:00
Aaron Sawdey
c8241327cd rs6000-protos.h (expand_block_move): Change prototype.
2019-10-02  Aaron Sawdey <acsawdey@linux.ibm.com>

	* config/rs6000/rs6000-protos.h (expand_block_move): Change prototype.
	* config/rs6000/rs6000-string.c (expand_block_move): Add
	might_overlap parm.
	* config/rs6000/rs6000.md (movmemsi): Add new pattern.
	(cpymemsi): Add might_overlap parm to expand_block_move() call.

From-SVN: r276462
2019-10-02 09:26:09 -05:00
Aaron Sawdey
03a9b90aa6 builtins.c (expand_builtin_memory_copy_args): Add might_overlap parm.
2019-10-02  Aaron Sawdey <acsawdey@linux.ibm.com>

	* builtins.c (expand_builtin_memory_copy_args): Add might_overlap parm.
	(expand_builtin_memcpy): Use might_overlap parm.
	(expand_builtin_mempcpy_args): Use might_overlap parm.
	(expand_builtin_memmove): Call expand_builtin_memory_copy_args.
	(expand_builtin_memory_copy_args): Add might_overlap parm.
	* expr.c (emit_block_move_via_cpymem): Rename to
	emit_block_move_via_pattern, add might_overlap parm, use cpymem
	or movmem optab as appropriate.
	(emit_block_move_hints): Add might_overlap parm, do the right
	thing for might_overlap==true.
	* expr.h (emit_block_move_hints): Update prototype.

From-SVN: r276461
2019-10-02 09:23:51 -05:00
Eric Botcazou
629387a658 tree-eh.h (unsplit_eh_edges): Declare.
* tree-eh.h (unsplit_eh_edges): Declare.
	* tree-eh.c (maybe_remove_unreachable_handlers): Detect more cases.
	(unsplit_eh_edges): New function wrapping unsplit_all_eh.
	* gimple-ssa-store-merging.c: Include cfganal.h cfgcleanup.h except.h.
	(struct store_immediate_info): Add lp_nr field.
	(store_immediate_info::store_immediate_info): Add NR2 parameter and
	initialize lp_nr with it.
	(struct merged_store_group): Add lp_nr and only_constants fields.
	(merged_store_group::merged_store_group): Initialize them.
	(merged_store_group::can_be_merged_into): Deal with them.
	(pass_store_merging): Rename terminate_and_release_chain into
	terminate_and_process_chain.
	(pass_store_merging::terminate_and_process_all_chains): Adjust to above
	renaming and remove useless assertions.
	(pass_store_merging::terminate_all_aliasing_chains): Small tweak.
	(stmts_may_clobber_ref_p): Be prepared for different basic blocks.
	(imm_store_chain_info::coalesce_immediate_stores): Use only_constants
	instead of always recomputing it and compare lp_nr.
	(imm_store_chain_info::output_merged_store): If the group is in an
	active EH region, register new stores if they can throw.  Moreover,
	if the insertion has created new basic blocks, adjust the PHI nodes
	of the post landing pad.
	(imm_store_chain_info::output_merged_stores): If the original stores
	are in an active EH region, deregister them.
	(lhs_valid_for_store_merging_p): Prettify.
	(adjust_bit_pos): New function extracted from...
	(mem_valid_for_store_merging): ...here.  Use it for the base address
	and also for the offset if it is the addition of a constant.
	(lp_nr_for_store): New function.
	(pass_store_merging::process_store): Change return type to bool.
	Call lp_nr_for_store to initialize the store info.  Propagate the
	return status of various called functions to the return value.
	(store_valid_for_store_merging_p): New predicate.
	(enum basic_block_status): New enumeration.
	(get_status_for_store_merging): New function.
	(pass_store_merging::execute): If the function can throw and catch
	non-call exceptions, unsplit the EH edges on entry and clean up the
	CFG on exit if something changed.  Call get_status_for_store_merging
	for every basic block and keep the chains open across basic blocks
	when possible.  Terminate and process open chains at the end, if any.

From-SVN: r276459
2019-10-02 13:35:40 +00:00
Richard Sandiford
ea4b29d53a Fix shadowing in globalize_reg
2019-10-02  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* reginfo.c (globalize_reg): Fix shadowed variable in
	function_abis walk.

From-SVN: r276457
2019-10-02 13:12:37 +00:00
Richard Sandiford
4bdb8c3dca Fix MIPS call-clobbered-*.c tests
Jeff pointed out that gcc.target/mips/call-clobbered-4.c started
failing after the function-abi series.  This is because IRA used
to treat partly call-clobbered registers as hard conflicts and
so wouldn't consider them for -fcaller-saves.  Now that we treat
call clobbers the same way regardless of where they come from,
we can use $f21 as a caller-save register.  This in turn means
that -Os is no longer a special case in call-clobbered-3.c.

(The new code is the same size as the old code.)

2019-10-02  Richard Sandiford  <richard.sandiford@arm.com>

gcc/testsuite/
	* gcc.target/mips/call-clobbered-3.c: Remove skip for -Os.
	* gcc.target/mips/call-clobbered-4.c: Delete.

From-SVN: r276456
2019-10-02 13:11:45 +00:00
Martin Jambor
3187c8a501 [PATCH] Do not check call type compatibility when cloning cgraph-edges
2019-10-02  Martin Jambor  <mjambor@suse.cz>

	* cgraph.c (symbol_table::create_edge): New parameter cloning_p,
	do not compute some stuff when set.
	(cgraph_node::create_edge): Likewise.
	(cgraph_node::create_indirect_edge): Renamed last parameter to
	coning_p and flipped its meaning, don't even calculate
	inline_failed when set.
	* cgraph.h (cgraph_node::create_edge): Add new parameter.
	(symbol_table::::create_edge): Likewise.
	(cgraph_node::create_indirect_edge): Rename last parameter, flip
	the default value.
	* cgraphclones.c (cgraph_edge::clone): Pass true cloning_p to all
	call graph edge creating functions.

From-SVN: r276455
2019-10-02 14:44:35 +02:00
Jan Hubicka
569651fd6f re PR c++/91222 (507.cactuBSSN_r build fails in warn_types_mismatch at ipa-devirt.c:1006 since r273571)
PR c++/91222
	* ipa-devirt.c (warn_types_mismatch): Fix conditional on anonymous
	namespace types.

From-SVN: r276454
2019-10-02 12:41:36 +00:00
Shahab Vahedi
d94b160233 [ARC] Pass along "-mcode-density" flag to "as"
This change makes sure that if the driver is invoked with
"-mcode-density" flag, then the assembler will receive it
too.

gcc/
xxxx-xx-xx  Shahab Vahedi  <shahab@synopsys.com>

        * config/arc/arc.h (ASM_SPEC): pass -mcode-density

From-SVN: r276453
2019-10-02 13:26:15 +02:00
Richard Biener
9f4d9a366b tree-vectorizer.h (vect_transform_reduction): Declare.
2019-10-02  Richard Biener  <rguenther@suse.de>

	* tree-vectorizer.h (vect_transform_reduction): Declare.
	* tree-vect-stmts.c (vect_transform_stmt): Use it.
	* tree-vect-loop.c (vectorizable_reduction): Split out reduction
	stmt transform to ...
	(vect_transform_reduction): ... this.

From-SVN: r276452
2019-10-02 11:24:27 +00:00
Tobias Burnus
ef4add8e54 Support OpenMP's use_device_addr in Fortran
gcc/fortran/
	* dump-parse-tree.c (show_omp_clauses): Handle OMP_LIST_USE_DEVICE_ADDR.
	* gfortran.h (enum): Add OMP_LIST_USE_DEVICE_ADDR.
	* openmp.c (omp_mask1): Likewise.
	(gfc_match_omp_clauses): Match 'use_device_addr'.
	(OMP_TARGET_DATA_CLAUSES): Add OMP_LIST_USE_DEVICE_ADDR.
	(resolve_omp_clauses): Add it; add is_device_ptr checks.

        gcc/testsuite/
	* gfortran.dg/gomp/is_device_ptr-1.f90: New.

From-SVN: r276449
2019-10-02 12:57:54 +02:00
Richard Biener
fc1a202ca6 re PR c++/91606 (Optimization leads to invalid code)
2019-10-02  Richard Biener  <rguenther@suse.de>

	PR c++/91606
	* decl.c (build_ptrmemfunc_type): Mark pointer-to-member
	fat pointer structure members as DECL_NONADDRESSABLE_P.

	* g++.dg/torture/pr91606.C: New testcase.

From-SVN: r276448
2019-10-02 10:54:10 +00:00
Tobias Burnus
ba045eb229 Improve OMP/ACC error diagnostic in Fortran
gcc/fortran/
	* openmp.c (gfc_match_omp_clauses): Show a clause-parsing
	error if none was rised before.
	* parse.c (matcha, matcho): If error occurred after
	OpenMP/OpenACC directive matched, do not try other directives.

	gcc/testsuite/
	* gfortran.dg/goacc/asyncwait-1.f95: Handle new error message.
	* gfortran.dg/goacc/asyncwait-2.f95: Likewise
	* gfortran.dg/goacc/asyncwait-3.f95: Likewise
	* gfortran.dg/goacc/asyncwait-4.f95: Likewise
	* gfortran.dg/goacc/default-2.f: Likewise
	* gfortran.dg/goacc/enter-exit-data.f95: Likewise
	* gfortran.dg/goacc/if.f95: Likewise
	* gfortran.dg/goacc/list.f95: Likewise
	* gfortran.dg/goacc/literal.f95: Likewise
	* gfortran.dg/goacc/loop-2-kernels-tile.f: Likewise95
	* gfortran.dg/goacc/loop-2-parallel-tile.f95: Likewise
	* gfortran.dg/goacc/loop-7.f95: Likewise
	* gfortran.dg/goacc/parallel-kernels-cla: Likewiseuses.f95
	* gfortran.dg/goacc/routine-6.f90: Likewise
	* gfortran.dg/goacc/several-directives.f95: Likewise
	* gfortran.dg/goacc/sie.f95: Likewise
	* gfortran.dg/goacc/tile-1.f90: Likewise
	* gfortran.dg/goacc/update-if_present-2.: Likewisef90
	* gfortran.dg/gomp/declare-simd-1.f90: Likewise
	* gfortran.dg/gomp/pr29759.f90: Likewise

From-SVN: r276447
2019-10-02 12:50:23 +02:00
Tobias Burnus
4aef466788 Fix coding style comment, missed in last commit
* trans-openmp.c (gfc_omp_is_optional_argument): Fix coding
        style.

From-SVN: r276446
2019-10-02 12:41:59 +02:00
Tobias Burnus
67c259509c Fix omp target issue with Fortran optional arguments
gcc/
        * omp-low.c (lower_omp_target): Dereference optional argument
        to work with the right pointer.

        gcc/testsuite/
        * libgomp/testsuite/libgomp.fortran/use_device_ptr-optional-1.f90: New.

From-SVN: r276445
2019-10-02 12:33:42 +02:00
Kwok Cheung Yeung
73a2863409 f95-lang.c (LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT): Define to gfc_omp_is_optional_argument.
2019-10-02  Kwok Cheung Yeung  <kcy@codesourcery.com>

        gcc/fortran/
        * f95-lang.c (LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT): Define to
        gfc_omp_is_optional_argument.
        * trans-decl.c (create_function_arglist): Set
        GFC_DECL_OPTIONAL_ARGUMENT in the generated decl if the parameter is
        optional.
        * trans-openmp.c (gfc_omp_is_optional_argument): New.
        (gfc_omp_privatize_by_reference): Return true if the decl is an
        optional pass-by-reference argument.
        * trans.h (gfc_omp_is_optional_argument): New declaration.
        (lang_decl): Add new optional_arg field.
        (GFC_DECL_OPTIONAL_ARGUMENT): New macro.

        gcc/
        * langhooks-def.h (LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT): Default to
        false.
        (LANG_HOOKS_DECLS): Add LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT.
        * langhooks.h (omp_is_optional_argument): New hook.
        * omp-general.c (omp_is_optional_argument): New.
        * omp-general.h (omp_is_optional_argument): New declaration.
        * omp-low.c (lower_omp_target): Create temporary for received value
        and take the address for new_var if the original variable was a
        DECL_BY_REFERENCE.  Use size of referenced object when a
        pass-by-reference optional argument used as argument to firstprivate.

From-SVN: r276444
2019-10-02 12:31:02 +02:00
Richard Biener
68710ac7da internal.h (enum include_type): Remove trailing comma.
2019-10-02  Richard Biener  <rguenther@suse.de>

	* internal.h (enum include_type): Remove trailing comma.

From-SVN: r276443
2019-10-02 10:22:05 +00:00
Jakub Jelinek
9ff9a0a5e6 re PR tree-optimization/91940 (__builtin_bswap16 loop optimization)
PR tree-optimization/91940
	* tree-vect-patterns.c: Include tree-vector-builder.h and
	vec-perm-indices.h.
	(vect_recog_rotate_pattern): Also handle __builtin_bswap16, either by
	unpromoting the argument back to uint16_t, or by converting into a
	rotate, or into shifts plus ior.

	* gcc.dg/vect/vect-bswap16.c: Add -msse4 on x86, run on all targets,
	expect vectorized 1 loops message on both vect_bswap and sse4_runtime
	targets.
	* gcc.dg/vect/vect-bswap16a.c: New test.

From-SVN: r276442
2019-10-02 12:18:50 +02:00
Richard Biener
291fa23ac0 tree-vectorizer.h (stmt_vec_info_type::cycle_phi_info_type): New.
2019-10-02  Richard Biener  <rguenther@suse.de>

	* tree-vectorizer.h (stmt_vec_info_type::cycle_phi_info_type):
	New.
	(vect_transform_cycle_phi): Declare.
	* tree-vect-stmts.c (vect_transform_stmt): Call
	vect_transform_cycle_phi.
	* tree-vect-loop.c (vectorizable_reduction): Split out
	PHI transformation stage to ...
	(vect_transform_cycle_phi): ... here.

From-SVN: r276441
2019-10-02 09:21:57 +00:00