Commit Graph

172402 Commits

Author SHA1 Message Date
Jozef Lawrynowicz 02afb6a932 MSP430: Add -mtiny-printf option
2019-11-04  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

gcc/
	* config.in: Regenerate.
	* config/msp430/msp430.c (msp430_option_override): Emit an error if
	-mtiny-printf is used without GCC being configured with
	--enable-newlib-nano-formatted-io.
	* config/msp430/msp430.h (LINK_SPEC): Pass 
	"--wrap puts --wrap printf" when -mtiny-printf is used.
	* config/msp430/msp430.opt: Document -mtiny-printf.
	* configure: Regenerate.
	* configure.ac: Enable --enable-newlib-nano-formatted-io flag.
	Define HAVE_NEWLIB_NANO_FORMATTED_IO if
	--enable-newlib-nano-formatted-io is passed.
	* doc/invoke.texi: Document -mtiny-printf.

gcc/testsuite/
	* gcc.target/msp430/tiny-printf.c: New test.

From-SVN: r277774
2019-11-04 11:23:46 +00:00
Jozef Lawrynowicz e0f8e3da33 Regenerate gcc/configure
From-SVN: r277773
2019-11-04 11:18:24 +00:00
Jozef Lawrynowicz d7eabfd452 MSP430: Add new methods of finding external MCU data file
MCU data file can now be specified with an environment variable or installed
into a toolchain subdirectory.

2019-11-04  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

gcc/
	* config/msp430/driver-msp430.c
	(msp430_get_linker_devices_include_path): New spec function.
	* config/msp430/msp430-devices.c (msp430_dirname): New function.
	(extract_devices_dir_from_exec_prefix): New function.
	(extract_devices_dir_from_collect_gcc): New function.
	(msp430_check_env_var_for_devices): New function.
	(msp430_check_path_for_devices): Use xstrdup instead of ASTRDUP.
	(parse_devices_csv): Call msp430_check_env_var_for_devices if
	devices.csv was not found using other methods.
	* config/msp430/msp430-devices.h (msp430_check_env_var_for_devices):
	New prototype.
	(msp430_dirname): Likewise.
	* config/msp430/msp430.c (msp430_register_pre_includes): New function.
	* config/msp430/msp430.h (EXTRA_SPEC_FUNCTIONS): Add
	msp430_get_linker_devices_include_path.
	(TARGET_EXTRA_PRE_INCLUDES): Define.
	* doc/invoke.texi: Document new ways of searching for support files.

gcc/testsuite/
	* gcc.target/msp430/devices/csv-using-env-var.c: New test.
	* gcc.target/msp430/devices/csv-using-installed.c: New test.
	* gcc.target/msp430/devices/csv-using-option.c: New test.
	* gcc.target/msp430/devices/devices-main.c: New test source file.
	* gcc.target/msp430/devices/msp430-devices.h: New test.
	* gcc.target/msp430/msp430.exp (msp430_device_permutations_runtest):
	Add special cases for csv-using* tests.
	Define TESTING_HARD_DATA when running tests that use hard-coded device
	data.
	(get_installed_device_data_path): New.
	(msp430_hide_installed_devices_data): New.
	(msp430_restore_installed_devices_data): New.
	(msp430_test_installed_device_data): New.
	(msp430_install_device_data): New.

From-SVN: r277772
2019-11-04 11:01:03 +00:00
Richard Biener b76f4e6c06 re PR bootstrap/92301 (Wrong vectorizer code since r277566)
2019-11-04  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/92301
	* tree-vect-stmts.c (process_use): Force reduction PHI defs live
	as required by epilogue generation

	* gcc.dg/pr92301.c: New testcase.

From-SVN: r277771
2019-11-04 10:08:22 +00:00
Tobias Burnus 12fd2ec5ae libgomp/testsuite - use unique numbers with Fortran's 'stop'
PR fortran/92305
        * testsuite/libgomp.fortran/allocatable2.f90: Use
        unique numbers with 'stop'.
        * testsuite/libgomp.fortran/use_device_addr-1.f90: Ditto.
        * testsuite/libgomp.fortran/use_device_addr-2.f90: Ditto.
        * testsuite/libgomp.fortran/use_device_ptr-1.f90: Ditto.
        * testsuite/libgomp.oacc-fortran/lib-15.f90: Ditto.
        * testsuite/libgomp.oacc-fortran/pset-1.f90: Ditto.

From-SVN: r277769
2019-11-04 11:01:22 +01:00
Martin Liska 2323aa040b Fix hash_operand for fields of a CONSTRUCTOR.
2019-11-04  Martin Liska  <mliska@suse.cz>

	PR ipa/92304
	* fold-const.c (operand_compare::hash_operand): Fix field
	hashing of CONSTRUCTOR.

From-SVN: r277768
2019-11-04 09:11:26 +00:00
Martin Liska ddf628e42f Come up with ggc_delete.
2019-11-04  Martin Liska  <mliska@suse.cz>

	* ggc.h (ggc_delete): New function.
	* ipa-fnsummary.c (ipa_free_fn_summary): Use it.
	* ipa-prop.c (ipa_free_all_edge_args): Likewise.
	(ipa_free_all_node_params): Likewise.
	* ipa-sra.c (ipa_sra_analysis): Likewise.

From-SVN: r277767
2019-11-04 09:11:14 +00:00
Thomas Koenig cedaa3f605 re PR fortran/92113 (r276673 causes segfault in gfortran.dg/pr51434.f90)
2019-11-04  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92113
    * ChangeLog: Fix PR number

From-SVN: r277766
2019-11-04 07:39:21 +00:00
GCC Administrator e10ed12560 Daily bump.
From-SVN: r277764
2019-11-04 00:16:17 +00:00
Thomas Koenig b8dd4aa14d re PR fortran/92113 (r276673 causes segfault in gfortran.dg/pr51434.f90)
2019-11-03  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/92133
    * trans-decl.c (gfc_get_symbol_decl): If __def_init actually
    contains a value, put it into  the read-only section.

From-SVN: r277760
2019-11-03 22:33:53 +00:00
Jan Hubicka 40a777e840 Improve effectivity of ipa_polymorphi_context cache.
* ipa-fnsummary.c (set_cond_stmt_execution_predicate,
	set_switch_stmt_execution_predicate, compute_bb_predicates,
	will_be_nonconstant_expr_predicate,
	phi_result_unknown_predicate,
	analyze_function_body): Pass arround params summary.
	(ipa_call_context::duplicate_from): New comment;
	only duplicate useful values.
	(ipa_call_context::equal_to): Only compare useful values.
	(remap_edge_summaries): Pass params_summary.
	(remap_hint_predicate): Likewise.
	(ipa_merge_fn_summary_after_inlining): Likewise.
	(inline_read_section): Initialize params summary used flags.
	* ipa-predicate.c (predicate::remap_after_inlining): Pass
	around param_summary.
	(add_condition): Initialized used params summary flags.
	* ipa-predicate.h (inline_param_summary::equals_to): Make const.
	(inline_param_summary::useless_p): New predicate.
	(remap_after_inlining, add_condition): Update prototype
	* ipa-prop.c (ipa_populate_param_decls): Watch overflow in
	move_cost.
	(ipa_note_param_call): Add parameter POLYMORPHIC; update params
	summaries.
	(ipa_analyze_indirect_call_uses): Update use of ipa_note_param_call.
	(ipa_analyze_virtual_call_uses): Likewise.
	(update_indirect_edges_after_inlining): Update param summaries.
	(ipa_print_node_params): Print used flags.
	(ipa_read_indirect_edge_info): Update param summareis.
	* ipa-prop.h (ipa_param_descriptor): Add
	used_by_ipa_predicates, used_by_indirect_call
	and used_by_polymorphic_call.
	(ipa_set_param_used_by_ipa_predicates,
	ipa_set_param_used_by_indirect_call,
	ipa_set_param_used_by_polymorphic_call,
	ipa_is_param_used_by_ipa_predicates,
	ipa_is_param_used_by_indirect_call,
	ipa_is_param_used_by_polymorphic_call): New inline functions.

From-SVN: r277759
2019-11-03 22:32:56 +00:00
Martin Sebor 4bcd578ab4 PR c++/88565 - enhance -Warray-bounds for C++ trailing class member arrays
gcc/testsuite/ChangeLog:

	* g++.dg/warn/Warray-bounds-9.C: New test.

From-SVN: r277758
2019-11-03 15:11:37 -07:00
Jan Hubicka ac6f2e5948 ipa-fnsummary.c (ipa_call_context::duplicate_from): New member function.
* ipa-fnsummary.c (ipa_call_context::duplicate_from): New
	member function.
	(ipa_call_context::release): Add ALL parameter.
	(ipa_call_context::equal_to): New member function.
	* ipa-fnsummary.h (ipa_call_context): Add empty constructor;
	duplicate_form, release, equal_to and exists_p member functoins.
	* ipa-inline-analysis.c (node_context_cache_entry): New
	class.
	(node_context_summary): Likewise.
	(node_context_cache, node_context_cache_hit, node_context_cache_miss,
	node_context_clear): New static vars.
	(initialize_growth_caches): New function.
	(free_growth_caches): Also delete node_context_cache; output stats.
	(do_estimate_edge_time): Cache contexts.
	(reset_node_cache): New function.
	* ipa-inline.c (reset_edge_caches): Reset also node cache.
	(inline_small_functions): Initialize growth caches.
	* ipa-inline.h (reset_node_cache, initialize_growth_caches):
	Declare.
	* ipa-predicate.h (inline_param_summary::equal_to): New.
	* ipa-prop.c (ipa_agg_jf_item::equal_to): New.
	* ipa-prop.h (ipa_agg_jf_item): Declare equal_to member function.
	(ipa_agg_jump_function): Implement equal_to member function.

From-SVN: r277757
2019-11-03 16:37:45 +00:00
Jan Hubicka 360386c7ef ipa-fnsummary.c (inline_read_section): Set vector size ahead of time.
* ipa-fnsummary.c (inline_read_section): Set vector size
	ahead of time.

From-SVN: r277756
2019-11-03 15:58:43 +00:00
Jan Hubicka 1532500ecb ipa-fnsummary.c (ipa_call_context): New constructor.
* ipa-fnsummary.c (ipa_call_context): New constructor.
	(estimate_node_size_and_time): Turn to ...
	(ipa_call_context::estimate_size_and_time): ... this one.
	(ipa_call_context::release): New.
	* ipa-fnsummary.h (ipa_call_context): New class.
	(estimate_node_size_and_time): Remove.
	* ipa-inline-analysis.c (do_estimate_edge_time, do_estimate_edge_size,
	do_estimate_edge_hints): Update.

From-SVN: r277755
2019-11-03 13:52:59 +00:00
Jan Hubicka a9a0fd0e28 config.in: Regenerate.
* config.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Check for mallinfo.
	* ggc-common.c: Include malloc.h if available;
	include options.h
	(report_heap_memory_use): New functoin.
	* ggc-page.c (ggc_grow): Do not print "start".
	* ggc.h (report_heap_memory_use): Declare.
	* pases.c (execute_one_pass): Report memory after IPA passes.
	(ipa_read_summaries_1): Likewise.
	(ipa_read_optimization_summaries_1): Likewise.

From-SVN: r277754
2019-11-03 12:50:22 +00:00
Jan Hubicka c9ef0409cd config.in: Regenerate.
* config.in: Regenerate.
	* configure: Regenerate.
	* configure.ac: Check for mallinfo.
	* ggc-common.c: Include malloc.h if available;
	include options.h
	(report_heap_memory_use): New functoin.
	* ggc-page.c (ggc_grow): Do not print "start".
	* ggc.h (report_heap_memory_use): Declare.
	* pases.c (execute_one_pass): Report memory after IPA passes.
	(ipa_read_summaries_1): Likewise.
	(ipa_read_optimization_summaries_1): Likewise.

	* lto/lto-common.c (read_cgraph_and_symbols): Improve -Q reporting.
	* lto.c (lto_wpa_write_files): Likewise.

From-SVN: r277753
2019-11-03 12:48:43 +00:00
Oleg Endo da5c1bbe97 re PR libgcc/78804 ([RX] -m64bit-doubles does not work)
libgcc/
	PR libgcc/78804
	* fp-bit.h: Remove FLOAT_BIT_ORDER_MISMATCH.
	* fp-bit.c (pack_d, unpack_d): Remove special cases for
	FLOAT_BIT_ORDER_MISMATCH.
	* config/arc/t-arc: Remove FLOAT_BIT_ORDER_MISMATCH.

From-SVN: r277752
2019-11-03 12:09:26 +00:00
GCC Administrator e3200f1d33 Daily bump.
From-SVN: r277749
2019-11-03 00:16:16 +00:00
Paolo Carlini b77c16f9dd typeck.c (composite_pointer_type): Add a const op_location_t& parameter and use it in diagnostics.
/cp
2019-11-02  Paolo Carlini  <paolo.carlini@oracle.com>

	* typeck.c (composite_pointer_type): Add a const op_location_t&
	parameter and use it in diagnostics.
	(composite_pointer_error): Likewise.
	(composite_pointer_type_r): Add a const op_location_t&
	parameter and forward it.
	(cp_build_binary_op): Adjust calls.
	(common_pointer_type): Likewise.
	* call.c (add_builtin_candidate): Likewise.
	(build_conditional_expr_1): Likewise.
	* cp-tree.h (composite_pointer_type): Update declaration.

	* typeck.c (cxx_sizeof_expr): Use cp_expr_loc_or_input_loc
	in permerror.
	(cxx_alignof_expr): Likewise.
	(lvalue_or_else): Likewise.

/testsuite
2019-11-02  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/conversion/ptrmem9.C: Check location.
	* g++.dg/expr/cond2.C: Likewise.
	* g++.dg/warn/Waddress-1.C: Check locations.
	* g++.old-deja/g++.bugs/900324_02.C: Check location.
	* g++.old-deja/g++.jason/rfg20.C: Likewise.
	* g++.old-deja/g++.law/typeck1.C: Likewise.
	* g++.old-deja/g++.rfg/00321_01-.C: Likewise.
	* g++.old-deja/g++.rfg/00324_02-.C: Likewise.

	* g++.dg/diagnostic/alignof1.C: New.
	* g++.dg/expr/sizeof1.C: Check location.
	* g++.dg/cpp0x/rv-lvalue-req.C: Check locations.

From-SVN: r277743
2019-11-02 09:13:37 +00:00
Jakub Jelinek d0c464d272 gimplify.h (omp_construct_selector_matches): Change return type to int, add a new SCORES argument.
* gimplify.h (omp_construct_selector_matches): Change return
	type to int, add a new SCORES argument.
	* gimplify.c (omp_construct_selector_matches): Likewise.  If
	SCORES is non-NULL, compute scores of each construct.
	* omp-general.h (omp_get_context_selector): Declare.
	* omp-general.c (omp_maybe_offloaded, omp_context_selector_matches):
	Adjust omp_construct_selector_matches callers.
	(omp_get_context_selector): New function, moved from c-family/c-omp.c.
	(omp_context_compute_score): New function.
	(omp_resolve_declare_variant): Compute scores and decide based on
	that.
c-family/
	* c-common.h (c_omp_get_context_selector): Remove.
	* c-omp.c (c_omp_get_context_selector): Moved to omp-general.c
	and renamed to omp_get_context_selector.
c/
	* c-parser.c (c_finish_omp_declare_variant): Use
	omp_get_context_selector instead of c_omp_get_context_selector.
cp/
	* decl.c (omp_declare_variant_finalize_one): Use
	omp_get_context_selector instead of c_omp_get_context_selector.
testsuite/
	* c-c++-common/gomp/declare-variant-12.c: New test.

From-SVN: r277742
2019-11-02 10:02:21 +01:00
Jakub Jelinek 628be4ef70 re PR c++/89640 (g++ chokes on lambda with __attribute__)
PR c++/89640
	* parser.c (cp_parser_decl_specifier_seq): Don't parse attributes
	if CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR.

	* g++.dg/cpp1z/attr-lambda1.C: New test.
	* g++.dg/ext/attr-lambda2.C: New test.

From-SVN: r277741
2019-11-02 07:53:53 +01:00
GCC Administrator 1afe39ac14 Daily bump.
From-SVN: r277740
2019-11-02 00:16:23 +00:00
Jakub Jelinek d228ee80f8 re PR bootstrap/92314 (missing omp-device-properties', needed by 's-omp-device-properties-h')
PR bootstrap/92314
	* configure.ac: Don't look for omp-device-properties files from
	installed offloading compilers.  Instead add tmake_file snippets
	for configured offloading targets and use files they generate.
	* Makefile.in (install): Don't depend on
	install-omp-device-properties.
	(install-omp-device-properties): Remove goal.
	* config/i386/t-omp-device: New file.
	* config/i386/t-intelmic (omp-device-properties): Remove goal.
	* config/nvptx/t-omp-device: New file.
	* config/nvptx/t-nvptx (omp-device-properties): Remove goal.
	* configure: Regenerated.

From-SVN: r277735
2019-11-02 00:34:21 +01:00
Jakub Jelinek 917dd789e5 omp-general.h (omp_context_selector_set_compare): Declare.
* omp-general.h (omp_context_selector_set_compare): Declare.
	* omp-general.c (omp_construct_simd_compare,
	omp_context_selector_props_compare, omp_context_selector_set_compare,
	omp_context_selector_compare): New functions.
	(omp_resolve_declare_variant): Prune variants that are strict subset
	of another variant.
c-family/
	* c-omp.c (c_omp_mark_declare_variant): Use
	omp_context_selector_set_compare.
testsuite/
	* c-c++-common/gomp/declare-variant-6.c: Expect construct rather than
	constructor in diagnostic messages.
	* c-c++-common/gomp/declare-variant-7.c: Likewise.
	* c-c++-common/gomp/declare-variant-11.c: New test.

From-SVN: r277734
2019-11-02 00:30:55 +01:00
Jakub Jelinek f968ef9b8d PR c++/88335 - Implement P1073R3: Immediate functions
PR c++/88335 - Implement P1073R3: Immediate functions
c-family/
	* c-common.h (enum rid): Add RID_CONSTEVAL.
	* c-common.c (c_common_reswords): Add consteval.
cp/
	* cp-tree.h (struct lang_decl_fn): Add immediate_fn_p bit.
	(DECL_IMMEDIATE_FUNCTION_P, SET_DECL_IMMEDIATE_FUNCTION_P): Define.
	(enum cp_decl_spec): Add ds_consteval.
	(fold_non_dependent_expr): Add another tree argument defaulted to
	NULL_TREE.
	* name-lookup.h (struct cp_binding_level): Add immediate_fn_ctx_p
	member.
	* parser.c (cp_keyword_starts_decl_specifier_p): Adjust comments
	for C++11 and C++20 specifiers.  Handle RID_CONSTEVAL.
	(CP_PARSER_FLAGS_ONLY_MUTABLE_OR_CONSTEXPR): Adjust comment.
	(CP_PARSER_FLAGS_CONSTEVAL): New.
	(cp_parser_skip_balanced_tokens): New forward declaration.
	(cp_parser_lambda_declarator_opt): Handle ds_consteval.  Set
	current_binding_level->immediate_fn_ctx_p before parsing parameter
	list if decl-specifier-seq contains consteval specifier.
	(cp_parser_decl_specifier_seq): Handle RID_CONSTEVAL.
	(cp_parser_explicit_instantiation): Diagnose explicit instantiation
	with consteval specifier.
	(cp_parser_init_declarator): For consteval or into flags
	CP_PARSER_FLAGS_CONSTEVAL.
	(cp_parser_direct_declarator): If CP_PARSER_FLAGS_CONSTEVAL, set
	current_binding_level->immediate_fn_ctx_p in the sk_function_parms
	scope.
	(set_and_check_decl_spec_loc): Add consteval entry, formatting fix.
	* call.c (build_addr_func): For direct calls to immediate functions
	use build_address rather than decay_conversion.
	(build_over_call): Evaluate immediate function invocations.
	* error.c (dump_function_decl): Handle DECL_IMMEDIATE_FUNCTION_P.
	* semantics.c (expand_or_defer_fn_1): Use tentative linkage and don't
	call mark_needed for immediate functions.
	* typeck.c (cxx_sizeof_or_alignof_expr): Likewise.  Formatting fix.
	(cp_build_addr_expr_1): Reject taking address of immediate function
	outside of immediate function.
	* decl.c (validate_constexpr_redeclaration): Diagnose consteval
	vs. non-consteval or vice versa redeclaration.  Use
	SET_DECL_IMMEDIATE_FUNCTION_P if new_decl is immediate function.
	(check_tag_decl): Use %qs with keyword string to simplify translation.
	Handle ds_consteval.
	(start_decl): Adjust diagnostics for static or thread_local variables
	in immediate functions.
	(grokfndecl): Call sorry_at on virtual consteval.  Use %qs with keyword
	to string to simplify translation.  Diagnose consteval main.  Use
	SET_DECL_IMMEDIATE_FUNCTION_P for consteval.
	(grokdeclarator): Handle consteval.  Use %qs with keyword strings to
	simplify translation.  Use separate ifs instead of chained else if
	for invalid specifiers.  For constinit clear constinit_p rather than
	constexpr_p.
	* constexpr.c (find_immediate_fndecl): New function.
	(cxx_eval_outermost_constant_expr): Allow consteval calls returning
	void.  Diagnose returning address of immediate function from consteval
	evaluation.
	(fold_non_dependent_expr_template): Add OBJECT argument, pass it
	through to cxx_eval_outermost_constant_expr.
	(fold_non_dependent_expr): Add OBJECT argument, pass it through to
	fold_non_dependent_expr_template.
	(fold_non_dependent_init): Adjust fold_non_dependent_expr_template
	caller.
	* method.c (defaulted_late_check): Adjust diagnostics for consteval.
	* lambda.c (maybe_add_lambda_conv_op): Copy over
	DECL_DECLARED_CONSTEXPR_P and DECL_IMMEDIATE_FUNCTION_P bits from
	callop to both artificial functions.
	* init.c (build_value_init): Don't do further processing if
	build_special_member_call returned a TREE_CONSTANT.  Formatting fix.
testsuite/
	* g++.dg/cpp2a/consteval1.C: New test.
	* g++.dg/cpp2a/consteval2.C: New test.
	* g++.dg/cpp2a/consteval3.C: New test.
	* g++.dg/cpp2a/consteval4.C: New test.
	* g++.dg/cpp2a/consteval5.C: New test.
	* g++.dg/cpp2a/consteval6.C: New test.
	* g++.dg/cpp2a/consteval7.C: New test.
	* g++.dg/cpp2a/consteval8.C: New test.
	* g++.dg/cpp2a/consteval9.C: New test.
	* g++.dg/cpp2a/consteval10.C: New test.
	* g++.dg/cpp2a/consteval11.C: New test.
	* g++.dg/cpp2a/consteval12.C: New test.
	* g++.dg/cpp2a/consteval13.C: New test.
	* g++.dg/cpp2a/consteval14.C: New test.
	* g++.dg/ext/consteval1.C: New test.

From-SVN: r277733
2019-11-02 00:28:20 +01:00
Jakub Jelinek 8412b939d1 PR c++/91369 - Implement P0784R7: constexpr new
PR c++/91369 - Implement P0784R7: constexpr new
	* cp-tree.h (CALL_FROM_NEW_OR_DELETE_P): Define.
	* init.c (build_new_1, build_vec_delete_1, build_delete): Set
	CALL_FROM_NEW_OR_DELETE_P on the CALL_EXPR to allocator functions.
	* constexpr.c (is_std_allocator_allocate): Only allow
	global replaceable allocator functions if CALL_FROM_NEW_OR_DELETE_P
	or in std::allocate<T>::{,de}allocate.
	(potential_constant_expression_1): Likewise.

	* g++.dg/cpp2a/constexpr-new6.C: New test.
	* g++.dg/cpp2a/constexpr-new7.C: New test.

From-SVN: r277732
2019-11-02 00:26:17 +01:00
Jakub Jelinek 8a8ce49e0f * gcc.dg/pr36902.c: Terminate dg-warning regexp string.
From-SVN: r277730
2019-11-02 00:22:57 +01:00
Martin Sebor 49fb45c81f PR middle-end/91679 - missing -Warray-bounds accessing a member array in a local buffer
PR middle-end/91679 - missing -Warray-bounds accessing a member array in a local buffer
PR middle-end/91647 - new FAILs for Warray-bounds-8 and Wstringop-overflow-3.C
PR middle-end/91463 - missing -Warray-bounds accessing past the end of a statically initialized flexible array member
PR middle-end/92312 - bogus -Wstringop-overflow storing into a trailing array backed by larger buffer

gcc/ChangeLog:

	PR middle-end/91679
	PR middle-end/91647
	PR middle-end/91463
	PR middle-end/92312
	* c-family/c-pretty-print.c (direct_abstract_declarator): Print
	bound in zero-length arrays.
	* gcc/c-family/c.opt (-Wzero-length-bounds): New option.
	* gcc/doc/invoke.texi (-Wzero-length-bounds): Document.
	* gimple-match-head.c (try_conditional_simplification): Use memcpy
	instead of a hand-rolled loop to avoid PR 92323.
	* tree-vrp.c (vrp_prop::check_array_ref): Handle trailing arrays
	with initializers.
	(vrp_prop::check_mem_ref): Handle declared struct objects.
	* tree.c (last_field): New function.
	(array_at_struct_end_p): Handle MEM_REF.
	(get_initializer_for): New helper.
	(component_ref_size): Add argument.  Rename locals.  Call
	get_initializer_for instead of fold_ctor_reference.  Correct handling
	of flexible array members.
	* wide-int.h (generic_wide_int <storage>::sign_mask): Assert invariant.

gcc/testsuite/ChangeLog:

	PR middle-end/91679
	PR middle-end/91647
	PR middle-end/91463
	PR middle-end/92312
	* c-c++-common/Warray-bounds-2.c: Disable VRP.  Adjust expected messages.
	* g++.dg/warn/Warray-bounds-8.C: Remove xfails.
	* gcc.dg/Warray-bounds-48.c: New test.
	* gcc.dg/Warray-bounds-49.c: New test.
	* gcc.dg/Wstringop-overflow-16.c: Adjust text of expected messages.
	* gcc.dg/Wstringop-overflow-21.c: New test.
	* gcc.dg/Wzero-length-array-bounds.c: New test.
	* gcc.dg/pr36902.c: Remove xfail.
	* gcc.dg/strlenopt-57.c: Add an expected warning.

From-SVN: r277728
2019-11-01 15:09:20 -06:00
Jim Wilson 8dc56a2244 RISC-V: Build soft-float divide routines for -mno-fdiv.
Using -mno-fdiv gives linker errors unless we build the missing divide
routines in libgcc always.  There is at least one university project
designing RISC-V parts without FP divide that wants to use the option.

	libgcc/
	* config/riscv/t-softfp32 (softfp_extra): Add FP divide routines

From-SVN: r277723
2019-11-01 13:35:12 -07:00
Jason Merrill 2df0c2315a Fix nodiscard test failures.
* g++.dg/cpp2a/nodiscard-once.C: Expect nodiscard warning.
	* g++.dg/cpp2a/nodiscard-reason.C: Adjust expected warnings.

From-SVN: r277719
2019-11-01 16:12:30 -04:00
Steven G. Kargl 2028ce454f decl.c (match_byte_typespec): New function.
2019-11-01  Steven G. Kargl  <kargl@gcc.gnu.org>

	* decl.c (match_byte_typespec): New function.  Match BYTE type-spec.
	(gfc_match_decl_type_spec): Use it.

2019-11-01  Steven G. Kargl  <kargl@gcc.gnu.org>

	* gfortran.dg/byte_3.f: New test.
	* gfortran.dg/byte_4.f90: Ditto.

From-SVN: r277715
2019-11-01 16:59:06 +00:00
Steven G. Kargl c7e3443332 re PR fortran/90988 (Wrong error message with variables named "PUBLIC*")
2019-11-01  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/90988
	* decl.c (gfc_match_private, gfc_match_public): Fixed-form source code
	does not require whitespace between PRIVATE (or PUBLIC) and an entity.

2019-11-01  Steven G. Kargl  <kargl@gcc.gnu.org>

	PR fortran/90988
	* gfortran.dg/pr90988_4.f: New test.

From-SVN: r277714
2019-11-01 16:27:38 +00:00
Martin Sebor 783aea3340 builtin-sprintf-warn-3.c: Declare test functions with noipa attribute.
gcc/testsuite/ChangeLog:

	* gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Declare test functions
	with noipa attribute.

From-SVN: r277711
2019-11-01 09:42:25 -06:00
Kewen Lin 6485d5d69a [rs6000] vector conversion RTL pattern update for diff unit size
2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>

  * config/rs6000/rs6000-modes.def (V2SF, V2SI): New modes.
  * config/rs6000/vsx.md (UNSPEC_VSX_CVSPSXDS, UNSPEC_VSX_CVSPUXDS): Remove.
  (vsx_xvcvspdp): New define_expand, old define_insn split to...
  (vsx_xvcvspdp_be): ... this.  New.  And...
  (vsx_xvcvspdp_le): ... this.  New.
  (vsx_xvcv<su>xwdp): New define_expand, old define_insn split to...
  (vsx_xvcv<su>xwdp_be): ... this.  New.  And...
  (vsx_xvcv<su>xwdp_le): ... this.  New.
  (vsx_xvcvsp<su>xds): New define_expand, old define_insn split to...
  (vsx_xvcvsp<su>xds_be): ... this.  New.  And...
  (vsx_xvcvsp<su>xds_le): ... this.  New.

From-SVN: r277709
2019-11-01 14:08:50 +00:00
Kewen Lin 4d8cfe0e8c [rs6000] vector conversion RTL pattern update for same unit size
2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>

  * config/rs6000/vsx.md (UNSPEC_VSX_CVSXWSP, UNSPEC_VSX_CVUXWSP,
  UNSPEC_VSX_XVCVSXDDP, UNSPEC_VSX_XVCVUXDDP,
  UNSPEC_VSX_XVCVDPSXDS, UNSPEC_VSX_XVCVDPUXDS,
  UNSPEC_VSX_XVCVSPSXWS): Remove.
  (vsx_xvcv<su>xddp, vsx_xvcvdp<su>xds, vsx_xvcvsp<su>xws,
  vsx_xvcv<su>xwsp): Update define_insn RTL patterns.

From-SVN: r277708
2019-11-01 13:17:48 +00:00
Nathan Sidwell 10e1540cdf [C++ PATCH] cleanup check_field_decls
https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00012.html
	cp/
	* class.c (check_field_decls): Refactor.

	testsuite/
	* g++.dg/template/fn.C: New.

From-SVN: r277707
2019-11-01 12:59:25 +00:00
Kewen Lin 9de3d4f049 [rs6000] Replace vsx_xvcdpsp by vsx_xvcvdpsp
2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>

    * config/rs6000/vsx.md (vsx_xvcdpsp): Remove define_insn.
    (UNSPEC_VSX_XVCDPSP): Remove.
    * config/rs6000/rs6000.c (rs6000_generate_float2_double_code):
    Replace gen_vsx_xvcdpsp by gen_vsx_xvcvdpsp.

From-SVN: r277706
2019-11-01 11:52:15 +00:00
Tobias Burnus 92e63bd2df OpenMP] use_device_addr/use_device_ptr with Fortran allocatable/pointer arrays
gcc/fortran/
        * f95-lang.c (LANG_HOOKS_OMP_ARRAY_DATA): Set to gfc_omp_array_data.
        * trans-array.c (gfc_conv_descriptor_data_get): Handle also
        REFERENCE_TYPE.
        * trans-openmp.c (gfc_omp_array_data): New.
        * trans.h (gfc_omp_array_data): New prototype.

        gcc/
        * hooks.c (hook_tree_tree_bool_null): New.
        * hooks.h (hook_tree_tree_bool_null): Declare.
        * langhooks-def.h (LANG_HOOKS_OMP_ARRAY_DATA): Define.
        (LANG_HOOKS_DECLS): Add it.
        * langhooks.h (lang_hooks_for_decls): Add omp_array_data.
        * omp-low.c (install_var_field): New mode for Fortran descriptor arrays.
        (lower_omp_target): Handle Fortran array with descriptor in
        OMP_CLAUSE_USE_DEVICE_ADDR/OMP_CLAUSE_USE_DEVICE_PTR.

        libgomp/
        * testsuite/libgomp.fortran/use_device_addr-1.f90 (test_nullptr_1,
        test_dummy_opt_nullptr_callee_1): Add present but unallocated test.
        * testsuite/libgomp.fortran/use_device_addr-2.f90: Likewise.
        * testsuite/libgomp.fortran/use_device_addr-3.f90: New.
        * testsuite/libgomp.fortran/use_device_addr-4.f90: New.
        * testsuite/testsuite/libgomp.fortran/use_device_ptr-1.f90: New.

From-SVN: r277705
2019-11-01 08:59:23 +01:00
Kewen Lin 271da73284 PR testsuite/92127: Disable unrolling for some vect code model cases
2019-11-01  Kewen Lin  <linkw@gcc.gnu.org>

  PR testsuite/92127
  * gcc.dg/vect/costmodel/ppc/costmodel-pr37194.c: Disable unroll.
  * gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c: Likewise.

From-SVN: r277704
2019-11-01 07:11:12 +00:00
GCC Administrator 52c826885f Daily bump.
From-SVN: r277703
2019-11-01 00:16:15 +00:00
Jonathan Wakely 081f3c3c2f Regenerate libstdc++ HTML docs
* doc/html/*: Regenerate.

From-SVN: r277699
2019-10-31 23:03:26 +00:00
Jonathan Wakely 2670a7aa8f Add remaining changes from P1065R2 "constexpr INVOKE"
* include/bits/refwrap.h (reference_wrapper, ref, cref): Add constexpr
	specifiers for C++20.
	* include/std/functional (_Mem_fn, mem_fn, _Bind, _Bind_result, bind)
	(bind_front, _Not_fn, not_fn): Likewise.
	* testsuite/20_util/bind/constexpr.cc: New test.
	* testsuite/20_util/function_objects/bind_front/constexpr.cc: New test.
	* testsuite/20_util/function_objects/mem_fn/constexpr.cc: New test.
	* testsuite/20_util/function_objects/not_fn/constexpr.cc: New test.
	* testsuite/20_util/reference_wrapper/constexpr.cc: New test.

From-SVN: r277698
2019-10-31 23:03:22 +00:00
Jonathan Wakely 328b52d675 Partial implementation of C++20 of <ranges> header
* doc/doxygen/user.cfg.in: Add new header.
	* include/Makefile.am: Add new header.
	* include/Makefile.in: Regenerate.
	* include/precompiled/stdc++.h: Include new header.
	* include/std/ranges: New header.
	(ranges::sentinel_t, ranges::range_value_t, ranges::range_reference_t)
	(ranges::range_rvalue_reference_t, ranges::sized_range)
	(ranges::output_range, ranges::input_ranges, ranges::forward_range)
	(ranges::bidirectional_range, ranges::random_access_range)
	(ranges::contiguous_range, ranges::common::range): Define.
	* testsuite/24_iterators/headers/iterator/synopsis_c++20.cc: Check
	that disabled_sized_sentinel can be specialized.
	* testsuite/std/ranges/access/begin.cc: Include <ranges> instead of
	<iterator>.
	* testsuite/std/ranges/access/cbegin.cc: Likewise.
	* testsuite/std/ranges/access/cdata.cc: Likewise.
	* testsuite/std/ranges/access/cend.cc: Likewise.
	* testsuite/std/ranges/access/crbegin.cc: Likewise.
	* testsuite/std/ranges/access/crend.cc: Likewise.
	* testsuite/std/ranges/access/data.cc: Likewise.
	* testsuite/std/ranges/access/empty.cc: Likewise.
	* testsuite/std/ranges/access/end.cc: Likewise.
	* testsuite/std/ranges/access/end_neg.cc: Likewise.
	* testsuite/std/ranges/access/rbegin.cc: Likewise.
	* testsuite/std/ranges/access/rend.cc: Likewise.
	* testsuite/std/ranges/access/size.cc: Likewise.
	* testsuite/std/ranges/access/size_neg.cc: Likewise.
	* testsuite/std/ranges/headers/ranges/synopsis.cc: New test.
	* testsuite/std/ranges/range.cc: New test.
	* testsuite/std/ranges/refinements.cc: New test.
	* testsuite/std/ranges/sized.cc: New test.
	* testsuite/util/testsuite_iterators.h: Add aliases for range types.
	(output_iterator_wrapper::WritableObject::operator=): Add const
	qualifier so that output_iterator_wrapper satisfies writable.

From-SVN: r277697
2019-10-31 21:42:18 +00:00
Alexandre Oliva d5a9005e64 Test --help=common for full sentences
The portion of help.exp that checks that help output contains full
sentences failed to cover common options.


for  gcc/testsuite/ChangeLog

	* gcc.misc-tests/help.exp: Test --help=common for full sentences.

From-SVN: r277686
2019-10-31 17:47:29 +00:00
Jakub Jelinek aa23e73b1a re PR preprocessor/92296 (internal compiler error: Segmentation fault #pragma push_macro("__LINE__"))
PR preprocessor/92296
	* internal.h (struct def_pragma_macro): Add is_builtin bitfield.
	(_cpp_restore_special_builtin): Declare.
	* init.c (_cpp_restore_special_builtin): New function.
	* directives.c (do_pragma_push_macro): For NT_BUILTIN_MACRO
	set is_builtin and don't try to grab definition.
	(cpp_pop_definition): Use _cpp_restore_special_builtin to restore
	builtin macros.

	* c-c++-common/cpp/pr92296-1.c: New test.
	* c-c++-common/cpp/pr92296-2.c: New test.

From-SVN: r277685
2019-10-31 18:38:44 +01:00
Jozef Lawrynowicz 0092b21f24 devices-main.c: Move to devices subdirectory.
2019-10-31  Jozef Lawrynowicz  <jozef.l@mittosystems.com>

	* gcc.target/msp430/devices-main.c: Move to devices subdirectory.
	* gcc.target/msp430/devices/bad-devices-1.c: Update #include path to
	devices-main.c.
	* gcc.target/msp430/devices/bad-devices-2.c: Likewise.
	* gcc.target/msp430/devices/bad-devices-3.c: Likewise.
	* gcc.target/msp430/devices/bad-devices-4.c: Likewise.
	* gcc.target/msp430/devices/bad-devices-5.c: Likewise.
	* gcc.target/msp430/devices/bad-devices-6.c: Likewise.
	* gcc.target/msp430/devices/csv-device-order.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_00.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_01.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_02.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_04.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_08.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_10.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_11.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_12.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_14.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_18.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_20.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_21.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_22.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_24.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430_28.c: Likewise.
	* gcc.target/msp430/devices/csv-msp430fr5969.c: Likewise.
	* gcc.target/msp430/devices/hard-cc430f5123.c: Likewise.
	* gcc.target/msp430/devices/hard-foo.c: Likewise.
	* gcc.target/msp430/devices/hard-msp430afe253.c: Likewise.
	* gcc.target/msp430/devices/hard-msp430cg4616.c: Likewise.
	* gcc.target/msp430/devices/hard-msp430f4783.c: Likewise.
	* gcc.target/msp430/devices/hard-rf430frl154h_rom.c: Likewise.

From-SVN: r277684
2019-10-31 17:36:53 +00:00
Richard Sandiford cc6336f5b3 [AArch64] Fix g++.target/aarch64/sve/vcond_1_run.C
This had been failing since a mass renaming.  Noticed it a few times
before but somehow never got around to fixing it.

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

gcc/testsuite/
	* g++.target/aarch64/sve/vcond_1_run.C: Update test name.

From-SVN: r277683
2019-10-31 17:29:28 +00:00
Richard Sandiford 354ee86707 [AArch64] Split gcc.target/aarch64/sve/vcond_4*
vcond_4.c combined too much stuff into one test, so that when we needed
to add XFAILs for one set of routines, we lost testing of others that
used the same instructions.  This patch splits it into four:

vcond_4.c:
  The main test for selects between a vector and a scalar, with all
  elements having the same size.

  After Prathamesh's fix for PR91272, we are now guaranteed to use the
  conditionally-loaded vector as the "then" value and the scalar as the
  "else" value.

vcond_4_zero.c:
  Like vcond_4.c, but comparing with zero.

vcond_4_sel.c:
  Tests for selects between two scalars, with all elements having
  the same size.  The optimisers can legitimately switch the "then"
  and "else" order and adjust the comparison to match.

vcond_4_costly.c:
  Like vcnod_4.c, but with mixed element sizes.  The sequences tested
  here will not be the preferred ones once we support mixtures of vector
  sizes, but it still tests an important code path.

This means that vcond_4_run.c now only tests what's left in vcond_4.c,
but that seems OK, since the main point was to ensure correct exception
behaviour.

Similarly it means that vcond_5.c only tests what's left in vcond_4.c,
but that too is OK, since the point of the test was to compare the
default handling of each comparison in vcond_4.c with the
-fno-trapping-math equivalent.

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

gcc/testsuite/
	* gcc.target/aarch64/sve/vcond_4.c: Split parts out into...
	* gcc.target/aarch64/sve/vcond_4_costly.c,
	* gcc.target/aarch64/sve/vcond_4_sel.c,
	* gcc.target/aarch64/sve/vcond_4_zero.c: ...these new tests.
	* gcc.target/aarch64/sve/vcond_4_run.c: Adjust accordingly.
	* gcc.target/aarch64/sve/vcond_5.c: Likewise.

From-SVN: r277682
2019-10-31 17:27:02 +00:00
Richard Sandiford 37115224b2 [AArch64] Split gcc.target/aarch64/sve/reduc_strict_3.c
This patch splits gcc.target/aarch64/sve/reduc_strict_3.c into one
test per function, so that it's easier to see what each scan is
matching and also so that we no longer rely on the number of times
that each dump message is printed.

The patch also generalises the tests to work with scalable vectors.
I think the test probably predates support for variable-length
loop-aware SLP.

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

gcc/testsuite/
	* gcc.target/aarch64/sve/reduc_strict_3.c: Split all but the
	first function out into...
	* gcc.target/aarch64/sve/reduc_strict_4.c,
	* gcc.target/aarch64/sve/reduc_strict_5.c,
	* gcc.target/aarch64/sve/reduc_strict_6.c,
	* gcc.target/aarch64/sve/reduc_strict_7.c,
	* gcc.target/aarch64/sve/reduc_strict_8.c,
	* gcc.target/aarch64/sve/reduc_strict_9.c: ...these new tests.
	Test for scalable vectors instead of 256-bit vectors.

From-SVN: r277681
2019-10-31 17:21:11 +00:00