Commit Graph

177802 Commits

Author SHA1 Message Date
Richard Biener
8a9e230f41 Use SLP_TREE_VECTYPE consistently
This assigns SLP_TREE_VECTYPE to all SLP nodes and uses it when
analyzing def operands.  It does not deal with mismatches between
SLP_TREE_VECTYPE and STMT_VINFO_VECTYPE yet - those cases are
still rejected until I get to clean up the interaction with data
reference groups.

2020-06-17  Richard Biener  <rguenther@suse.de>

	* tree-vect-slp.c (vect_build_slp_tree_1): Set the passed
	in *vectype parameter.
	(vect_build_slp_tree_2): Set SLP_TREE_VECTYPE from what
	vect_build_slp_tree_1 computed.
	(vect_analyze_slp_instance): Set SLP_TREE_VECTYPE.
	(vect_slp_analyze_node_operations_1): Use the SLP node vector type.
	(vect_schedule_slp_instance): Likewise.
	* tree-vect-stmts.c (vect_is_simple_use): Take the vector type
	from SLP_TREE_VECTYPE.
2020-06-17 16:30:21 +02:00
Marek Polacek
ae2ebf011f c++: ICE with IMPLICIT_CONV_EXPR in array subscript [PR95508]
Since r10-7096 convert_like, when called in a template, creates an
IMPLICIT_CONV_EXPR when we're converting to/from array type.

In this test, we have e[f], and we're converting f (of type class A) to
int, so convert_like in build_new_op_1 created the IMPLICIT_CONV_EXPR
that got into cp_build_array_ref which calls maybe_constant_value.  My
patch above failed to adjust this spot to call fold_non_dependent_expr
instead, which can handle codes like I_C_E in a template.  Fixed by
using a new function maybe_fold_non_dependent_expr, which, if the expr
can't be evaluated to a constant, returns the original expression.

gcc/cp/ChangeLog:

	PR c++/95508
	* constexpr.c (maybe_fold_non_dependent_expr): New.
	* cp-tree.h (maybe_fold_non_dependent_expr): Declare.
	* typeck.c (cp_build_array_ref): Call maybe_fold_non_dependent_expr
	instead of maybe_constant_value.

gcc/testsuite/ChangeLog:

	PR c++/95508
	* g++.dg/template/conv16.C: New test.
2020-06-17 09:19:02 -04:00
Patrick Palka
4d2b0866d7 Fix use of inaccessible member in pr85503.C [PR95716]
The recent PR41437 fix exposed a latent use of an inaccessible member in
the below testcase.

gcc/testsuite/ChangeLog:

	PR testsuite/95716
	* g++.dg/ext/pr85503.C: Give ai::cv public access.
2020-06-17 09:09:53 -04:00
Richard Biener
d0909f5858 tree-optimization/95717 - fix SSA update for vectorizer epilogue
This fixes yet another issue with the custom SSA updating in the
vectorizer when we copy from the non-if-converted loop.  We must
not mess with current defs before we updated the BB copies.

2020-06-17  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/95717
	* tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg):
	Move BB SSA updating before exit/latch PHI current def copying.

	* g++.dg/torture/pr95717.C: New testcase.
2020-06-17 15:01:25 +02:00
Martin Liska
9efbb03616
testsuite: clean up .gcov files in test-suite.
gcc/testsuite/ChangeLog:

	PR testsuite/95720
	* gcc.misc-tests/gcov-pr94029.c: Remove not needed remove-gcda.
	* lib/gcov.exp: Delete properly .gcov files.
2020-06-17 13:42:20 +02:00
Martin Liska
502d63b6d6
Lower VEC_COND_EXPR into internal functions.
gcc/ChangeLog:

	* Makefile.in: Add new file.
	* expr.c (expand_expr_real_2): Add gcc_unreachable as we should
	not meet this condition.
	(do_store_flag): Likewise.
	* gimplify.c (gimplify_expr): Gimplify first argument of
	VEC_COND_EXPR to be a SSA name.
	* internal-fn.c (vec_cond_mask_direct): New.
	(vec_cond_direct): Likewise.
	(vec_condu_direct): Likewise.
	(vec_condeq_direct): Likewise.
	(expand_vect_cond_optab_fn):  New.
	(expand_vec_cond_optab_fn): Likewise.
	(expand_vec_condu_optab_fn): Likewise.
	(expand_vec_condeq_optab_fn): Likewise.
	(expand_vect_cond_mask_optab_fn): Likewise.
	(expand_vec_cond_mask_optab_fn): Likewise.
	(direct_vec_cond_mask_optab_supported_p): Likewise.
	(direct_vec_cond_optab_supported_p): Likewise.
	(direct_vec_condu_optab_supported_p): Likewise.
	(direct_vec_condeq_optab_supported_p): Likewise.
	* internal-fn.def (VCOND): New OPTAB.
	(VCONDU): Likewise.
	(VCONDEQ): Likewise.
	(VCOND_MASK): Likewise.
	* optabs.c (get_rtx_code): Make it global.
	(expand_vec_cond_mask_expr): Removed.
	(expand_vec_cond_expr): Removed.
	* optabs.h (expand_vec_cond_expr): Likewise.
	(vector_compare_rtx): Make it global.
	* passes.def: Add new pass_gimple_isel pass.
	* tree-cfg.c (verify_gimple_assign_ternary): Add check
	for VEC_COND_EXPR about first argument.
	* tree-pass.h (make_pass_gimple_isel): New.
	* tree-ssa-forwprop.c (pass_forwprop::execute): Prevent
	propagation of the first argument of a VEC_COND_EXPR.
	* tree-ssa-reassoc.c (ovce_extract_ops): Support SSA_NAME as
	first argument of a VEC_COND_EXPR.
	(optimize_vec_cond_expr): Likewise.
	* tree-vect-generic.c (expand_vector_divmod): Make SSA_NAME
	for a first argument of created VEC_COND_EXPR.
	(expand_vector_condition): Fix coding style.
	* tree-vect-stmts.c (vectorizable_condition): Gimplify
	first argument.
	* gimple-isel.cc: New file.

gcc/testsuite/ChangeLog:

	* g++.dg/vect/vec-cond-expr-eh.C: New test.
2020-06-17 12:04:22 +02:00
Martin Liska
2021af0c23
gcc-changelog: Support 'Backported from master'.
contrib/ChangeLog:

	* gcc-changelog/git_commit.py: Print 'Backported from master'
	heading to backported commits.
	* gcc-changelog/test_email.py: Test it.
	* gcc-changelog/test_patches.txt: Add new patch.
	* gcc-changelog/git_repository.py: Add commit_to_date hook.
	* gcc-changelog/git_email.py: Add fuzzy implementation
	of commit_to_date_hook.
2020-06-17 11:37:34 +02:00
Andrew Stubbs
f062c3f115 amdgcn: Switch to HSACO v3 binary format
This upgrades the compiler to emit HSA Code Object v3 binaries.  This means
changing the assembler directives, and linker command line options.

The gcn-run and libgomp loaders need corresponding alterations.  The
relocations no longer need to be fixed up manually, and the kernel symbol
names have changed slightly.

This move makes the binaries compatible with the new rocgdb from ROCm 3.5.

2020-06-17  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-hsa.h (TEXT_SECTION_ASM_OP): Use ".text".
	(BSS_SECTION_ASM_OP): Use ".bss".
	(ASM_SPEC): Remove "-mattr=-code-object-v3".
	(LINK_SPEC): Add "--export-dynamic".
	* config/gcn/gcn-opts.h (processor_type): Replace PROCESSOR_VEGA with
	PROCESSOR_VEGA10 and PROCESSOR_VEGA20.
	* config/gcn/gcn-run.c (HSA_RUNTIME_LIB): Use ".so.1" variant.
	(load_image): Remove obsolete relocation handling.
	Add ".kd" suffix to the symbol names.
	* config/gcn/gcn.c (MAX_NORMAL_SGPR_COUNT): Set to 62.
	(gcn_option_override): Update gcn_isa test.
	(gcn_kernel_arg_types): Update all the assembler directives.
	Remove the obsolete options.
	(gcn_conditional_register_usage): Update MAX_NORMAL_SGPR_COUNT usage.
	(gcn_omp_device_kind_arch_isa): Handle PROCESSOR_VEGA10 and
	PROCESSOR_VEGA20.
	(output_file_start): Rework assembler file header.
	(gcn_hsa_declare_function_name): Rework kernel metadata.
	* config/gcn/gcn.h (GCN_KERNEL_ARG_TYPES): Set to 16.
	* config/gcn/gcn.opt (PROCESSOR_VEGA): Remove enum.
	(PROCESSOR_VEGA10): New enum value.
	(PROCESSOR_VEGA20): New enum value.

	libgomp/
	* plugin/plugin-gcn.c (init_environment_variables): Use ".so.1"
	variant for HSA_RUNTIME_LIB name.
	(find_executable_symbol_1): Delete.
	(find_executable_symbol): Delete.
	(init_kernel_properties): Add ".kd" suffix to symbol names.
	(find_load_offset): Delete.
	(create_and_finalize_hsa_program): Remove relocation handling.
2020-06-17 10:06:21 +01:00
Martin Liska
8ad4fc26dc
gcov*: collapse lisence header to 2 lines in --version.
gcc/ChangeLog:

	* gcov-dump.c (print_version): Collapse lisence header to 2 lines
	in --version.
	* gcov-tool.c (print_version): Likewise.
	* gcov.c (print_version): Likewise.
2020-06-17 10:58:04 +02:00
Eric Botcazou
48b6386f5d [Ada] Add early return to Apply_Universal_Integer_Attribute_Checks
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* checks.adb (Apply_Universal_Integer_Attribute_Checks): Do not do
	anything when the type of the node is already Universal_Integer.
2020-06-17 04:14:23 -04:00
Arnaud Charlet
86f8060436 [Ada] ACATS 4.1H - BA12018 - Missed errors for private with
2020-06-17  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* sem_ch10.adb (Expand_With_Clause): Add missing handling of
	N_Generic_Subprogram_Declaration, N_Subprogram_Declaration,
	N_Subprogram_Body.
2020-06-17 04:14:23 -04:00
Ed Schonberg
a5c11aa2d5 [Ada] Additional legality rule for indexing operation for derived type
2020-06-17  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch13.adb: (Check_Inherited_Indexing): Check that a type
	derived from an indexable container type cannot specify an
	indexing aspect if the same aspect is not specified for the
	parent type (RM 4.1.6 (6/5), AI12-160). Add a check that a
	specified indexing aspect for a derived type is confirming.
2020-06-17 04:14:22 -04:00
Gary Dismukes
89d9bab0aa [Ada] Nested subprograms in protected subprograms improperly handled in GNAT-LLVM
2020-06-17  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* exp_ch9.adb (Build_Protected_Subp_Specification): Add ???
	comment about the flag Has_Nested_Subprogram not being set here.
	(Expand_N_Protected_Body): If the original body for a protected
	subprogram has the flag Has_Nested_Subprogram set, then set that
	flag on the new unprotected subprogram body that's created for
	it, and reset the Scope fields of its top level declarations,
	which have been effectively taken from the original protected
	subprogram body. Add ??? comment about unclear testing of
	Corresponding_Spec.
2020-06-17 04:14:21 -04:00
Javier Miranda
8afbdb8a64 [Ada] Ada2020: AI12-0279 more dispatching points with aspect Yield
2020-06-17  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* aspects.ads (type Aspect_Id): Add Aspect_Yield as a Boolean
	aspect, and update the Is_Representation_Aspect, Aspect_Names,
	and Aspect_Delay arrays.
	* einfo.ads, einfo.adb (Has_Yield_Aspect, Yield_Aspect): New
	subprograms.
	* exp_ch6.adb (Add_Return, Expand_Non_Function_Return,
	Expand_Simple_Function_Return): Add calls to Yield.
	* exp_ch9.adb (Build_Accept_Body, Expand_N_Accept_Statement):
	Add calls to Yield.
	* rtsfind.ads (RE_Yield): Adding support to generate calls to
	the runtime service Ada.Dispatching.Yield
	* sem_ch13.adb (Analyze_Aspect_Yield): New subprogram.
	* sem_ch3.adb (Derive_Subprogram): Inherit attribute
	Has_Yield_Aspect.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Check consistency
	of Has_Yield in the actual subprogram of a generic
	instantiation.
	* sem_disp.adb (Check_Dispatching_Operation): Check that if the
	Yield aspect is specified for a dispatching subprogram that
	inherits the aspect, the specified value shall be confirming.
	* sem_prag.adb (Analyze_Pragma [Pragma_Implemented]): Check that
	the implementation kind By_Protected_Procedure cannot be applied
	to a procedure that has aspect Yield.
2020-06-17 04:14:20 -04:00
Eric Botcazou
67b2ed8e56 [Ada] Fix incorrect operand sharing after expansion
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_ch4.adb (Expand_N_Op_Expon): Replace all occurrences of
	the original right operand with the relocated version.
2020-06-17 04:14:19 -04:00
Javier Miranda
765005dd67 [Ada] Crash in tagged type constructor with task components
2020-06-17  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_ch6.adb (Has_BIP_Extra_Formal): New subprogram.
	(Needs_BIP_Task_Actuals): Add support for the subprogram type
	internally generated for dispatching calls.
	* exp_disp.adb (Expand_Dispatching_Call): Adding code to
	explicitly duplicate the extra formals of the target subprogram.
	* freeze.adb (Check_Extra_Formals): New subprogram.
	(Freeze_Subprogram): Fix decoration of Extra_Formals.
	* sem_ch3.adb (Derive_Subprogram): Fix decoration of
	Extra_Formals.
2020-06-17 04:14:18 -04:00
Bob Duff
da901811dc [Ada] Do not give "bad indentation" error inside a declare_expression
2020-06-17  Bob Duff  <duff@adacore.com>

gcc/ada/

	* par.adb (P_Basic_Declarative_Items): Update comment about
	Declare_Expression.
	* par-ch3.adb (P_Declarative_Items): Pass in Declare_Expression
	flag, and if True, skip the call to Style.Check_Indentation.
	* par-ch4.adb (P_Declare_Expression): Fix incorrect comment.
2020-06-17 04:14:17 -04:00
Arnaud Charlet
831aff1d8b [Ada] Improve error message on anonymous access parameter conversion
2020-06-17  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* sem_res.adb (Valid_Conversion): Change error message to make
	it more user-friendly.
2020-06-17 04:14:16 -04:00
Eric Botcazou
25f11dfe76 [Ada] Do not generate useless length check for array initialization
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* checks.ads (Apply_Length_Check_On_Assignment): Declare.
	* checks.adb (Apply_Length_Check_On_Assignment): New procedure
	to apply a length check to an expression in an assignment.
	* exp_ch5.adb (Expand_Assign_Array): Call it instead of calling
	Apply_Length_Check to generate a length check.
	* sem_ch5.adb (Analyze_Assignment): Likewise.
2020-06-17 04:14:16 -04:00
Piotr Trojanek
cf9087af1f [Ada] Support aspect Relaxed_Initialization on private types and constants
2020-06-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* einfo.adb (Is_Relaxed_Initialization_State): Add reference to
	SPARK RM.
	* sem_attr.adb (Analyze_Attribute_Old_Result): Likewise.
	* sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Reject
	aspect on completions of private types and deferred constants.
	* sem_util.ads, sem_util.adb (Has_Relaxed_Initialization):
	Adjust comments; support queries for constants.
2020-06-17 04:14:15 -04:00
Eric Botcazou
ceb7fad635 [Ada] Small cleanup throughout CStand body
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* cstand.adb (Stloc): Change to a renaming.
	(Staloc): Likewise.
	(Build_Unsigned_Integer_Type): Remove Nam parameter, use local
	constants and do not call Make_Name.
	(Make_Dummy_Index): Use local constants.
	(Create_Standard): Pass the name of entities as parameter in
	calls to New_Standard_Entity and remove calls to Make_Name.
	Adjust calls to Build_Unsigned_Integer_Type.
	(Identifier_For): Use local constant.
	(Make_Component): Pass the name of the component as parameter
	in call to New_Standard_Entity and remove call to Make_Name.
	(Make_Formal): Likewise.  Rename Formal_Name parameter into
	Nam and use local constant.
	(Make_Name): Delete.
	(New_Operator): Use local constant.
	(New_Standard_Entity): Rename S parameter into Nam and build
	the name here.  Remove call to Make_Name.
	(Register_Float_Type): Pass the name of the type as parameter
	in call to New_Standard_Entity and remove call to Make_Name.
2020-06-17 04:14:14 -04:00
Eric Botcazou
cb52e9fe48 [Ada] Remove new problematic condition for LLVM
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
	Remove condition added for scalar types.
2020-06-17 04:14:13 -04:00
Gary Dismukes
14e7560824 [Ada] Various typo corrections plus minor reformatting
2020-06-17  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Adjust
	colon columns; reformat comment.
	* exp_ch3.adb
	(Build_Access_Subprogram_Wrapper_Body): Likewise.
	* sem_ch3.adb (Build_Access_Subprogram_Wrapper): Reformat spec
	comment and reformat comment in body.
	(Analyze_Full_Type_Declaration): Reformat comment.
	(Replace_Type_Name): Fixed three typos, plus reformatting of
	comment.
	* sem_prag.adb (Analyze_Pre_Post_Condition): Fix typos.
	* sem_warn.adb (Warn_On_Overlapping_Actuals): Edit comments:
	remove hyphen, add missing word.
2020-06-17 04:14:12 -04:00
Bob Duff
c602003b6a [Ada] Ada2020: AI12-0110 Tampering checks are performed first
2020-06-17  Bob Duff  <duff@adacore.com>

gcc/ada/

	* libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb,
	libgnat/a-cbhase.adb, libgnat/a-cbmutr.adb,
	libgnat/a-cborma.adb, libgnat/a-cborse.adb,
	libgnat/a-cdlili.adb, libgnat/a-chtgbk.adb,
	libgnat/a-chtgke.adb, libgnat/a-cidlli.adb,
	libgnat/a-cihama.adb, libgnat/a-cihase.adb,
	libgnat/a-cimutr.adb, libgnat/a-ciorma.adb,
	libgnat/a-ciorse.adb, libgnat/a-cobove.adb,
	libgnat/a-cohama.adb, libgnat/a-cohase.adb,
	libgnat/a-coinve.adb, libgnat/a-comutr.adb,
	libgnat/a-convec.adb, libgnat/a-coorma.adb,
	libgnat/a-coorse.adb, libgnat/a-crbtgk.adb,
	libgnat/a-crbtgo.adb, libgnat/a-rbtgso.adb: Move tampering
	checks earlier.
2020-06-17 04:14:11 -04:00
Eric Botcazou
4ea4df3af8 [Ada] Couple of small tweaks related to integer conversions
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_attr.adb (Get_Integer_Type): Use standard types without
	a specific size.
	* sem_res.adb (Resolve_Unchecked_Type_Conversion): Remove a
	redundant intermediate conversion to Universal_Integer.
2020-06-17 04:14:10 -04:00
Piotr Trojanek
c3a2dc654c [Ada] Fix comment of Get_Iterable_Type_Primitive
2020-06-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_util.ads, sem_util.adb (Get_Iterable_Type_Primitive): Fix
	comment and enforce it with an assertion in the body.
2020-06-17 04:14:10 -04:00
Ed Schonberg
7b6a7ef8ad [Ada] Ada_2020 AI12-0220 Pre/Postconditions on Access_To_Subprogram types
2020-06-17  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch3.adb (Analyze_Full_Type_Declaration): For an
	access_to_subprogram declaration that has aspect specifications,
	call Build_Access_ Subprogram_Wrapper at once, so that pre- and
	postcondition aspects are analyzed in the context of a
	subprogram declaration.
	(Build_Access_Subprogram_Wrapper): Examine aspect specifications
	of an Access_To_Subprogram declaration. If pre- or
	postconditions are declared for it, create declaration for
	subprogram wrapper and add the corresponding aspect
	specifications to it. Replace occurrences of the type name by
	that of the generated subprogram, so that attributes 'Old and
	'Result can appear in a postcondition.
	* exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Moved
	here from sem_prag.adb.
	* exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Visible
	subprogram.
	* sem_prag.adb (Build_Access_Subprogram_Wrapper / _Body): Moved
	to sem_ch3.adb and exp_ch3.adb.
2020-06-17 04:14:09 -04:00
Piotr Trojanek
73642e6899 [Ada] Add assertions to Preserve_Comes_From_Source and reuse it
2020-06-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* atree.adb (Preserve_Comes_From_Source): Rewrite using
	Set_Comes_From_Source and Comes_From_Source, which enforce that
	the parameters are valid.
	* exp_ch4.adb, exp_ch5.adb, sem_ch12.adb, sem_ch6.adb,
	sem_res.adb: Rewrite using Preserve_Comes_From_Source.
2020-06-17 04:14:08 -04:00
Arnaud Charlet
2ead6a05ac [Ada] Remove obsolete comments in Big_Numbers
2020-06-17  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Remove obsolete
	comments.
2020-06-17 04:14:07 -04:00
Gary Dismukes
bbab2db3a6 [Ada] Implement static expression functions for Ada 202x (AI12-0075)
2020-06-17  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* aspects.ads (type Aspect_Id): Add Aspect_Static as a Boolean
	aspect, and update the Is_Representation_Aspect, Aspect_Names,
	and Aspect_Delay arrays.
	* exp_ch6.adb (Expand_Simple_Function_Return): In the case of a
	return for a static expression function, capture a copy of the
	expression of the return statement before it's expanded and
	reset its Analyzed flags. Then, just before leaving this
	procedure, if the expression was rewritten, set the
	Original_Node of the rewritten expression to the new copy and
	also set the Expression of the associated static expression
	function to designate that copy. This ensures that later copies
	of the expression made via New_Copy_Tree will fully copy all
	nodes of the expression tree.
	* inline.ads (Inline_Static_Expression_Function_Call): New
	procedure to evaluate and produce the result of a static call to
	a static expression function.
	* inline.adb: Add with and use for Sem_Res.
	(Establish_Actual_Mapping_For_Inlined_Call): New procedure
	extracted from code in Expand_Inlined_Call that traverses the
	actuals and formals of an inlined call and in some cases creates
	temporaries for holding the actuals, plus establishes an
	association between formals and actuals (via the Renamed_Object
	fields of the formals).
	(Formal_Is_Used_Once): Function removed from Expand_Inlined_Call
	and now nested in the above procedure.
	(Expand_Inlined_Call): Code for doing the formal/actual
	traversal is moved to Create_Actual_Temporaries and replaced
	with a call to that new procedure.
	(Inline_Static_Expression_Function_Call): New procedure to
	evaluate a static call to a static expression function,
	substituting actuals for their corresponding formals and
	producing a fully folded and static result expression. The
	function has subsidiary functions Replace_Formal and Reset_Sloc
	that take care of doing the mapping of formals to actuals and
	resetting the Slocs of subnodes of the mapped expression to that
	of the call so errors will be flagged on the call rather than
	function.
	* sem_ch6.adb (Analyze_Expression_Function): In the case of a
	static expression function, perform an additional preanalysis of
	the function's expression to ensure that it's a potentially
	static expression (according to the requirements of
	6.8(3.2/5-3.4/5)), and issue an error if it's not. The global
	flag Checking_Potentially_Static_Expression is set and unset
	around this checking.
	* sem_ch13.adb (Analyze_Aspect_Static): New procedure to enforce
	selected requirements of the new aspect Static on expression
	functions, including checking that the language version is
	Ada_2020 and that the entity to which it applies is an
	expression function whose formal parameters are of a static
	subtype and have mode 'in', its result subtype is a static
	subtype, and it has no pre- or postcondition aspects. A ???
	comment is added to indicate the need for adding checking that
	type invariants don't apply to the result type if the function
	is a boundary entity.
	(Analyze_One_Aspect): Call Analyze_Aspect_Static for aspect
	Static.
	* sem_elab.adb (Build_Call_Marker): Return without creating a
	call marker when the subprogram is a static expression function,
	since no ABE checking is needed for such functions.
	* sem_eval.ads (Checking_Potentially_Static_Expression): New
	function to return whether the checking for potentially static
	expressions is enabled.
	(Set_Checking_Potentially_Static_Expression): New procedure to
	enable or disable checking of potentially static expressions.
	* sem_eval.adb (Checking_For_Potentially_Static_Expression): New
	global flag for determining whether preanalysis of potentially
	static expression is being done, which affects the behavior of
	certain static evaluation routines.
	(Checking_Potentially_Static_Expression): New function to return
	whether the checking for potentially static expressions is
	enabled.
	(Eval_Call): When evaluating a call within a static expression
	function with checking of potentially static expression
	functions enabled, substitutes a static value in place of the
	call to allow folding of the expression.
	(Eval_Entity_Name): When evaluating a formal parameter of a
	static expression function with checking of potentially static
	expression functions enabled, substitutes a static value in
	place of the reference to the formal to allow folding of the
	expression.
	(Set_Checking_Potentially_Static_Expression): New procedure to
	enable or disable checking of potentially static expressions.
	* sem_res.adb (Resolve_Call): Test for a recursive call
	occurring within a static expression function and issue an error
	for such a call. Prevent the establishment of a transient scope
	in the case this is a call to a (string-returning) static
	expression function. When calling a static expression function,
	if no error has been posted on the function, call
	Inline_Static_Expression_Function_Call to convert the call into
	its equivalent static value.
	* sem_util.ads (Is_Static_Expression_Function): New function
	returning whether the subprogram entity passed to it is a static
	expression function.
	(Is_Static_Expression_Function_Call): New function to determine
	whether the call node passed to it is a static call to a static
	expression function.
	* sem_util.adb (Compile_Time_Constraint_Error): Suppress
	compile-time Constraint_Error reporting when checking for a
	potentially static expression.
	(Is_Static_Expression_Function): New function returning whether
	the subprogram entity passed to it is a static expression
	function by testing for the presence of aspect Static.
	(Has_All_Static_Actuals): New function in
	Is_Static_Expression_Function_Call that traverses the actual
	parameters of a function call and returns True only when all of
	the actuals are given by static expressions. In the case of a
	string-returning function, we call Resolve on each actual to
	ensure that their Is_Static_Expression flag properly reflects
	whether they're static, to allow suppressing creation of a
	transient scope within Resolve_Call. A prominent ??? comment is
	added to explain this rather unconventional call to Resolve.
	(Is_Static_Expression_Function_Call): New function that
	determines whether a node passed to it is a call to a static
	expression function all of whose actual parameters are given by
	static expressions.
2020-06-17 04:14:06 -04:00
Eric Botcazou
22b5aff279 [Ada] Deal with second specific superflat case in Optimize_Length_Comparison
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_ch4.adb (Optimize_Length_Comparison): New local variable to
	record whether this may be a dynamic superflat case.
	(Is_Optimizable): Accept 0 as lower bound and set it in this case,
	but return false if the operand is not a length too.
	(Rewrite_For_Equal_Lengths): New procedure.
	Optimize the comparison of two lengths in the superflat case when
	the arrays have the same bounds.
2020-06-17 04:14:05 -04:00
Eric Botcazou
741826eff5 [Ada] Adjust documentation of 'Bit and 'Descriptor_Size attributes
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_attributes.rst (Bit): Sharpen
	the comparison with System.Storage_Unit.
	(Descriptor_Size): Clear confusion about alignment and padding.
	* gnat_rm.texi: Regenerate.
2020-06-17 04:14:04 -04:00
Eric Botcazou
d27ec3f60a [Ada] Work around problematic interaction with public symbol generation
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
	Do not replace the bound for an array type if it is public.
2020-06-17 04:14:03 -04:00
Eric Botcazou
940eb45810 [Ada] Fix small oversight in change to Optimize_Length_Comparison
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_ch4.adb (Optimize_Length_Comparison): Make sure the base
	types are the same when comparing Y'Last and X'Last directly.
2020-06-17 04:14:02 -04:00
Eric Botcazou
ac8806c4c5 [Ada] Optimize length checks generated for slice assignments
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
	Replace it with a direct reference to an entity which is not a
	discriminant for constrained array types.  Add same condition
	for scalar types.
	<Attribute_Last>: Merge with above implementation.
	* exp_ch4.adb (Optimize_Length_Comparison): Be prepared for a
	second entity whose length is compared.  Rename Prepare_64 to
	Convert_To_Long_Long_Integer.  If the second entity is present,
	compute the difference of the 'First attributes and compare the
	sum of 'Last of the second entity with this difference against
	'Last of the first entity.  Add a special case when the 'First
	attributes are equal.  Suppress overflow checks in all cases.
2020-06-17 04:14:02 -04:00
Piotr Trojanek
137adce390 [Ada] Fix casing from GNATProve to GNATprove
2020-06-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst, lib-writ.ads,
	par-prag.adb, sem_ch12.adb, sem_ch8.adb, sem_prag.adb: Fix
	casing of GNATprove.
	* gnat_rm.texi: Regenerate.
2020-06-17 04:14:01 -04:00
Piotr Trojanek
4ffefb704a [Ada] Remove unnecessary special-casing of GNATprove expansion
2020-06-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* checks.adb (Generate_Range_Check): Simplify redundant
	condition.
	* sem_ch3.adb (Check_Initialization, Process_Discriminants):
	Likewise.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Likewise.
2020-06-17 04:14:00 -04:00
Eric Botcazou
e9c85394fb [Ada] Fix small fallout of change for 'Pos and 'Val attributes
2020-06-17  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_fixd.adb (Build_Conversion): Also preserve the
	Conversion_OK flag of an inner conversion.
2020-06-17 04:13:59 -04:00
Piotr Trojanek
6be763897b [Ada] Fix expansion of "for X of Y loop" in GNATprove
2020-06-17  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_ch5.adb (Analyze_Iterator_Specification): Enable expansion
	that creates a renaming that removes side effects from the
	iterated object in the GNATprove mode; then analyze reference to
	this renaming (it is required for GNATprove and harmless for
	GNAT).
2020-06-17 04:13:58 -04:00
liuhongt
c7199fb6e6 Optimize V16QI/V32QI/V64QI shift by constant.
gcc/ChangeLog:
	PR target/95524
	* config/i386/i386-expand.c
	(ix86_expand_vec_shift_qihi_constant): New function.
	* config/i386/i386-protos.h
	(ix86_expand_vec_shift_qihi_constant): Declare.
	* config/i386/sse.md (<shift_insn><mode>3): Optimize shift
	V*QImode by constant.

gcc/testsuite/ChangeLog:
	* gcc.target/i386/avx2-shiftqihi-constant-1.c: New test.
	* gcc.target/i386/avx2-shiftqihi-constant-2.c: Ditto.
	* gcc.target/i386/avx512bw-shiftqihi-constant-1.c: Ditto.
	* gcc.target/i386/avx512bw-shiftqihi-constant-2.c: Ditto.
	* gcc.target/i386/sse2-shiftqihi-constant-1.c: Ditto.
	* gcc.target/i386/sse2-shiftqihi-constant-2.c: Ditto.
2020-06-17 16:03:26 +08:00
Martin Liska
5fc312a98e
gcov: fix gcov-tool merge for TOPN counters
libgcc/ChangeLog:

	* libgcov-util.c (read_gcda_finalize): Remove const operator.
	(merge_wrapper): Add both counts and use them properly.
	(topn_to_memory_representation): New function.
	(gcov_merge): Covert on disk representation to in memory
	representation.
	* libgcov.h: Remove const operator.
2020-06-17 08:32:27 +02:00
GCC Administrator
56638b9b18 Daily bump. 2020-06-17 00:16:36 +00:00
Jonathan Wakely
d4b0f996fc middle-end: Add another testcase for PR 95493
This was reported on the gcc-help mailing list. The regression started
with r10-589 and was fixed by r11-963.

gcc/testsuite/ChangeLog:

	* g++.dg/torture/pr95493-1.C: New test.
2020-06-16 23:14:54 +01:00
Iain Buclaw
3a0ddf7930 d: Remove names of unused function parameters.
gcc/d/ChangeLog:

	* d-attribs.cc (handle_noreturn_attribute): Remove names of unused
	function parameters.
	(handle_leaf_attribute): Likewise.
	(handle_const_attribute): Likewise.
	(handle_malloc_attribute): Likewise.
	(handle_pure_attribute): Likewise.
	(handle_novops_attribute): Likewise.
	(handle_nonnull_attribute): Likewise.
	(handle_nothrow_attribute): Likewise.
	(handle_type_generic_attribute): Likewise.
	(handle_transaction_pure_attribute): Likewise.
	(handle_returns_twice_attribute): Likewise.
	(handle_fnspec_attribute): Likewise.
	(handle_always_inline_attribute): Likewise.
	(d_handle_noinline_attribute): Likewise.
	(d_handle_forceinline_attribute): Likewise.
	(d_handle_flatten_attribute): Likewise.
	(d_handle_noclone_attribute): Likewise.
	(d_handle_section_attribute): Likewise.
	(d_handle_alias_attribute): Likewise.
	(d_handle_weak_attribute): Likewise.
2020-06-16 23:39:47 +02:00
Iain Buclaw
af3c19f0a5 d: Update code formatting in a consistent style.
gcc/d/ChangeLog:

	* d-attribs.cc: Update code formatting in a consistant style.
	* d-builtins.cc: Likewise.
	* d-codegen.cc: Likewise.
	* d-compiler.cc: Likewise.
	* d-convert.cc: Likewise.
	* d-diagnostic.cc: Likewise.
	* d-frontend.cc: Likewise.
	* d-lang.cc: Likewise.
	* d-longdouble.cc: Likewise.
	* d-port.cc: Likewise.
	* d-spec.cc: Likewise.
	* d-tree.h: Likewise.
	* decl.cc: Likewise.
	* expr.cc: Likewise.
	* longdouble.h: Likewise.
	* modules.cc: Likewise.
	* toir.cc: Likewise.
	* typeinfo.cc: Likewise.
2020-06-16 23:39:23 +02:00
Iain Buclaw
cdbf48bed4 d: Consistently format quotations in comments.
gcc/d/ChangeLog:

	* d-builtins.cc: Update quotation formatting of comments.
	* d-codegen.cc: Likewise.
	* d-lang.cc: Likewise.
	* decl.cc: Likewise.
	* expr.cc: Likewise.
	* imports.cc: Likewise.
	* runtime.cc: Likewise.
	* toir.cc: Likewise.
	* typeinfo.cc: Likewise.
	* types.cc: Likewise.
2020-06-16 23:37:55 +02:00
Iain Buclaw
a23b6d61bc d: Remove dependency on front-end OutBuffer for diagnostic and deps file generation.
gcc/d/ChangeLog:

	* d-diagnostic.cc (expand_d_format): Replace OutBuffer with obstack.
	(d_diagnostic_report_diagnostic): Don't free xformat.
	* d-lang.cc (struct d_option_data): Change deps_target type from
	OutBuffer to vec <const char *>.
	(deps_add_target): Update to push each target to deps_target.
	(deps_write_string): New function.
	(deps_write): Change buffer type to obstack* and remove colmax.
	(d_init_options): Update initialization of deps_target.
	(d_parse_file): Replace OutBuffer with obstack.
2020-06-16 23:37:33 +02:00
Iain Buclaw
0a98123c7a d: Remove dependency on front-end File type for json and deps file generation.
gcc/d/ChangeLog:

	* d-lang.cc (d_parse_file): Replace uses of File with FILE.
2020-06-16 23:36:29 +02:00
Iain Buclaw
f267a31098 d: Move generation of array bounds error to own function.
gcc/d/ChangeLog:

	* d-codegen.cc (build_array_bounds_call): New function.
	(build_bounds_condition): Use build_array_bounds_call.
	* d-lang.cc (d_init_options): Explicitly set default check action to
	CHECKACTION_D.
	(d_post_options): Set check action to CHECKACTION_C if the flag
	-fno-druntime was seen.
	* d-tree.h (build_array_bounds_call): Declare.
	* expr.cc (ExprVisitor::visit (AssertExp *)): Use
	build_array_bounds_call.
2020-06-16 23:35:34 +02:00
Jonathan Wakely
e40b11a91c libstdc++: Strip cv-qualifiers in std::atomic<FP> (PR 95282)
This improves the previous fix for PR 95282, and extends it to also
apply to the exchange function (which has a similar problem and would
become ill-formed with my proposed fix for PR 95378).

	PR libstdc++/95282
	* include/bits/atomic_base.h (__atomic_impl::load): Use the _Val
	alias instead of deducing _Tp as an unqualified type.
	(__atomic_impl::exchange): Use the _Val alias to remove volatile
	from the reinterpret_cast result type.
2020-06-16 22:34:55 +01:00