Commit Graph

178161 Commits

Author SHA1 Message Date
Piotr Trojanek
33502a3a8c [Ada] Fix detection of actual parameters for procedure calls
gcc/ada/

	* sem_ch8.adb (Is_Actual_Parameter): Fix processing when parent
	is a procedure call statement; extend comment.
2020-07-10 05:16:23 -04:00
Bob Duff
6193954675 [Ada] Ada2020: AI12-0368 Declare expressions can be static
gcc/ada/

	* sem_res.adb (Resolve_Expression_With_Actions): Check the rules
	of AI12-0368, and mark the declare expression as static or known
	at compile time as appropriate.
	* sem_ch4.adb: Minor reformatting.
	* libgnat/a-stoufo.ads, libgnat/a-stoufo.adb: Allow up to 9
	replacement parameters. I'm planning to use this in the test
	case for this ticket.
2020-07-10 05:16:22 -04:00
Ed Schonberg
7d3a9f399a [Ada] Spurious error on parameterless acccess_to_subprogram
gcc/ada/

	* exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Create a
	proper signature when the access type denotes a parameterless
	subprogram.
	* exp_ch6.adb (Expand_Call): Handle properly a  parameterless
	indirect call when the corresponding access type has contracts.
2020-07-10 05:16:22 -04:00
Eric Botcazou
b748c3d1b7 [Ada] Further improve the expansion of array aggregates
gcc/ada/

	* exp_aggr.adb
	(Convert_To_Positional): Add Dims local variable
	and pass it in calls to Is_Flat and Flatten.
	(Check_Static_Components): Pass Dims in call to
	Is_Static_Element.
	(Nonflattenable_Next_Aggr): New predicate.
	(Flatten): Add Dims parameter and Expr local variable.  Call
	Nonflattenable_Next_Aggr in a couple of places.  In the case
	when an Others choice is present, check that the element is
	either static or a nested aggregate that can be flattened,
	before disregarding the replication limit for elaboration
	purposes.  Check that a nested array is flattenable in the case
	of a multidimensional array in any position.  Remove redundant
	check in the Others case and pass Dims in call to
	Is_Static_Element.  Use Expr variable.
	(Is_Flat): Change type of Dims parameter from Int to Nat.
	(Is_Static_Element): Add Dims parameter.  Replace tests on
	literals with call to Compile_Time_Known_Value.  If everything
	else failed and the dimension is 1, preanalyze the expression
	before calling again Compile_Time_Known_Value on it.  Return
	true for null.
	(Late_Expansion): Do not expand further if the assignment to the
	target can be done directly by the back end.
2020-07-10 05:16:22 -04:00
Arnaud Charlet
98af369b94 [Ada] Preserve casing of output files
gcc/ada/

	* osint-c.adb (Set_File_Name): Preserve casing of file.
	* osint.adb (File_Names_Equal): New.
	(Executable_Name): Use File_Equal instead of
	Canonical_Case_File_Name.
2020-07-10 05:16:22 -04:00
Pascal Obry
002f8329d2 [Ada] Fix memory leak in routine Wait_On_Socket
gcc/ada/

	* libgnat/g-socket.adb (Wait_On_Socket): Fix memory leaks and
	file descriptor leaks.  A memory leak was created each time the
	routine was called without a selector (Selector = Null). Also,
	in case of exception in the routine a memory leak and descriptor
	leak was created as the created file selector was not closed.
2020-07-10 05:16:21 -04:00
Pascal Obry
715aea70f3 [Ada] Minor style fixes
gcc/ada/

	* libgnat/g-socket.adb: Minor style fixes.
2020-07-10 05:16:21 -04:00
Javier Miranda
1b5dc454ac [Ada] Potentially unevaluated nested expressions
gcc/ada/

	* sem_util.adb
	(Immediate_Context_Implies_Is_Potentially_Unevaluated): New
	subprogram.
	(Is_Potentially_Unevaluated): Do not stop climbing the tree on
	the first candidate subexpression; required to handle nested
	expressions.
2020-07-10 05:16:21 -04:00
Gary Dismukes
ce59f39f78 [Ada] Reformatting and typo corrections
gcc/ada/

	* exp_aggr.adb, exp_spark.adb, sem_ch13.ads, sem_ch13.adb,
	snames.ads-tmpl: Minor reformatting and typo fixes.
2020-07-10 05:16:21 -04:00
Yannick Moy
c3026d451d [Ada] Fix detection of volatile properties in SPARK
gcc/ada/

	* sem_util.adb (Has_Enabled_Property): Add handling of
	non-variable objects.
2020-07-10 05:16:20 -04:00
Piotr Trojanek
a6ddbacd3a [Ada] Cleanup excessive conditions in Check_Completion
gcc/ada/

	* sem_ch3.adb (Check_Completion): Refactor chained
	if-then-elsif-...  statement to be more like a case
	statement (note: we can't simply use case statement because of
	Is_Intrinsic_Subprogram in the first condition).
2020-07-10 05:16:20 -04:00
Piotr Trojanek
c3b4ce9b91 [Ada] Remove references to non-existing E_Protected_Object
gcc/ada/

	* einfo.ads (E_Protected_Object): Enumeration literal removed.
	* lib-xref.ads (Xref_Entity_Letters): Remove reference to
	removed literal.
	* sem_ch3.adb (Check_Completion): Likewise.
	* sem_util.adb (Has_Enabled_Property): Likewise.
2020-07-10 05:16:20 -04:00
Arnaud Charlet
152f64c2c6 [Ada] Use small limit for aggregates inside subprograms
gcc/ada/

	* exp_aggr.adb (Max_Aggregate_Size): Use small limit for
	aggregate inside subprograms.
	* sprint.adb (Sprint_Node_Actual [N_Object_Declaration]): Do not
	print the initialization expression if the No_Initialization
	flag is set.
	* sem_util.ads, sem_util.adb (Predicate_Enabled): New.
	* exp_ch4.adb (Expand_N_Type_Conversion): Code cleanup and apply
	predicate check consistently.
	* exp_ch6.adb (Expand_Actuals.By_Ref_Predicate_Check): Ditto.
	* sem_ch3.adb (Analyze_Object_Declaration): Ditto.
	* exp_ch3.adb (Build_Assignment): Revert handling of predicate
	check for allocators with qualified expressions, now handled in
	Freeze_Expression directly.
	* sem_aggr.adb: Fix typos.
	* checks.adb: Code refactoring: use Predicate_Enabled.
	(Apply_Predicate_Check): Code cleanup.
	* freeze.adb (Freeze_Expression): Freeze the subtype mark before
	a qualified expression on an allocator.
	* exp_util.ads, exp_util.adb (Within_Internal_Subprogram):
	Renamed Predicate_Check_In_Scope to clarify usage, refine
	handling of predicates within init procs which should be enabled
	when the node comes from source.
	* sem_ch13.adb (Freeze_Entity_Checks): Update call to
	Predicate_Check_In_Scope.
2020-07-10 05:16:19 -04:00
Eric Botcazou
cbe3b8d49d [Ada] Small cleanup throughout Exp_Ch4
gcc/ada/

	* exp_ch4.adb (Expand_Array_Comparison): Reformat.
	(Expand_Concatenate): Use standard size values directly and use
	Standard_Long_Long_Unsigned instead of RE_Long_Long_Unsigned.
	(Expand_Modular_Op): Use Standard_Long_Long_Integer in case the
	modulus is larger than Integer.
	(Expand_N_Op_Expon): Use standard size value directly.
	(Narrow_Large_Operation): Use Uint instead of Nat for sizes and
	use a local variable for the size of the type.
	(Get_Size_For_Range): Return Uint instead of Nat.
	(Is_OK_For_Range): Take Uint instead of Nat.
2020-07-10 05:16:19 -04:00
Javier Miranda
4e91f87c3e [Ada] Spurious error in generic dispatching constructor call
gcc/ada/

	* exp_ch6.adb (Make_Build_In_Place_Iface_Call_In_Allocator):
	Build the internal anonymous access type using as a reference
	the designated type imposed by the context (instead of using the
	return type of the called function).
2020-07-10 05:16:19 -04:00
Yannick Moy
5f43e78930 [Ada] Fix assertion failure on (in-)out function parameter
gcc/ada/

	* sem_res.adb (Resolve_Actuals): Protect call to
	Is_Valued_Procedure.
2020-07-10 05:16:19 -04:00
Piotr Trojanek
8248cf4b70 [Ada] Revert too late setting of Ekind on discriminants
gcc/ada/

	* sem_ch3.adb (Process_Discriminants): Revert recent change to
	location of Set_Ekind; detect effectively volatile discriminants
	by their type only.
2020-07-10 05:16:18 -04:00
Joffrey Huguet
25af525c30 [Ada] Add global contracts to Ada.Numerics.Big_Numbers libraries
gcc/ada/

	* libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Add global
	contract (Global => null) to all functions.
2020-07-10 05:16:18 -04:00
Ed Schonberg
745f56989e [Ada] Part of implementation of AI12-0212: container aggregates
gcc/ada/

	* aspects.ads: Add Aspect_Aggregate.
	* exp_aggr.adb (Expand_Container_Aggregate): Expand positional
	container aggregates into separate initialization and insertion
	operations.
	* sem_aggr.ads (Resolve_Container_Aggregate): New subprogram.
	* sem_aggr.adb (Resolve_Container_Aggregate): Parse aspect
	aggregate, establish element types and key types if present, and
	resolve aggregate components.
	* sem_ch13.ads (Parse_Aspect_Aggregate): Public subprogram used
	in validation, resolution and expansion of container aggregates
	* sem_ch13.adb
	(Parse_Aspect_Aggregate): Retrieve names of primitives specified
	in aspect specification.
	(Validate_Aspect_Aggregate): Check legality of specified
	operations given in aspect specification, before nane
	resolution.
	(Resolve_Aspect_Aggregate): At freeze point resolve operations
	and verify that given operations have the required profile.
	* sem_res.adb (Resolve): Call Resolve_Aspect_Aggregate if aspect
	is present for type.
	* snames.ads-tmpl: Add names used in aspect Aggregate: Empty,
	Add_Named, Add_Unnamed, New_Indexed, Assign_Indexed.
2020-07-10 05:16:18 -04:00
Arnaud Charlet
2f9821a09a [Ada] Make System.Generic_Bignums more flexible
gcc/ada/

	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-shabig.o.
	* libgnat/s-shabig.ads: New file to share definitions.
	* libgnat/s-genbig.ads, libgnat/s-genbig.adb: Reorganized to
	make it more generic and flexible in terms of memory allocation
	and data structure returned.
	(To_String): Moved to System.Generic_Bignums to allow sharing
	this code.
	(Big_And, Big_Or, Big_Shift_Left, Big_Shift_Right): New.
	* libgnat/s-bignum.adb, libgnat/s-bignum.ads: Adapt to new
	System.Generic_Bignums spec.
	* libgnat/a-nbnbin.adb: Likewise.
	(To_String): Moved to System.Generic_Bignums to allow sharing
	this code.
	* libgnat/a-nbnbre.adb (Normalize): Fix handling of Num = 0
	leading to an exception.
2020-07-10 05:16:17 -04:00
Eric Botcazou
9e0cd875b5 [Ada] Fix crash on quantified expression in expression function (2)
gcc/ada/

	* freeze.adb (Freeze_Expr_Types): Replace call to Find_Aspect
	with call to Find_Value_Of_Aspect and adjust accordingly.
2020-07-10 05:16:17 -04:00
Eric Botcazou
a042b9c680 [Ada] Fix crash on quantified expression in expression function
gcc/ada/

	* einfo.adb (Write_Field24_Name): Handle E_Loop_Parameter.
	* freeze.adb (Freeze_Expr_Types): Freeze the iterator type used as
	Default_Iterator of the name of an N_Iterator_Specification node.
2020-07-10 05:16:17 -04:00
Eric Botcazou
b898963124 [Ada] Fix internal error on if-expression in call returning tagged type
gcc/ada/

	* checks.adb (Determine_Range): Deal with Min and Max attributes.
	* exp_ch6.adb (Expand_Call_Helper): When generating code to pass
	the accessibility level to the caller in the case of an actual
	which is an if-expression, also remove the nodes created after
	the declaration of the dummy temporary.
	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Use Natural as
	the type of the minimum accessibility level object.
2020-07-10 05:16:17 -04:00
Piotr Trojanek
eb6eb3b79a [Ada] Fix failing assertions related to volatile objects
gcc/ada/

	* sem_ch3.adb (Process_Discriminants): Set Ekind of the
	processed discriminant entity before passing to
	Is_Effectively_Volatile, which was crashing on a failed
	assertion.
	* sem_prag.adb (Analyze_External_Property_In_Decl_Part): Prevent
	call to No_Caching_Enabled with entities other than variables,
	which was crashing on a failed assertion.
	(Analyze_Pragma): Style cleanups.
	* sem_util.adb (Is_Effectively_Volatile): Enforce comment with
	an assertion; prevent call to No_Caching_Enabled with entities
	other than variables.
	(Is_Effectively_Volatile_Object): Only call
	Is_Effectively_Volatile on objects, not on types.
	(No_Caching_Enabled): Enforce comment with an assertion.
2020-07-10 05:16:16 -04:00
Yannick Moy
c24633fbbb [Ada] Remove use of debug flag -gnatdF for GNATprove
gcc/ada/

	* debug.adb: Update comments to free usage of -gnatdF.
2020-07-10 05:16:16 -04:00
Piotr Trojanek
a9d72b1bcf [Ada] Reuse SPARK expansion of attribute Update for delta_aggregate
gcc/ada/

	* exp_spark.adb (Expand_SPARK_Delta_Or_Update): Refactored from
	Expand_SPARK_N_Attribute_Reference; rewrite into N_Aggregate or
	N_Delta_Aggregate depending on what is being rewritten.
	(Expand_SPARK_N_Delta_Aggregate): New routine to expand
	delta_aggregate.
	(Expand_SPARK_N_Attribute_Reference): Call the refactored
	routine.
2020-07-10 05:16:16 -04:00
Piotr Trojanek
964cf38cb3 [Ada] Fix expansion of 'Update with multiple choices in GNATprove
gcc/ada/

	* exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Fix
	expansion of attribute Update.
2020-07-10 05:16:16 -04:00
Arnaud Charlet
5f74065e26 [Ada] Crash in Walk_Library_Items on ghost units
gcc/ada/

	* sem.adb (Walk_Library_Items): Fix handling of Ghost units.
2020-07-10 05:16:15 -04:00
Richard Biener
6e41c27bf5 fix constant folding from array CTORs
This fixes the case where we try to fold a read from an
array initalizer and happen to cross the boundary of
multiple CTORs which isn't really supported.  For the
interesting cases like the testcase we actually handle
the folding by encoding the whole initializer.

2020-07-10  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/96133
	* gimple-fold.c (fold_array_ctor_reference): Do not
	recurse to folding a CTOR that does not fully cover the
	asked for object.

	* gcc.dg/torture/pr96133.c: New testcase.
2020-07-10 10:52:47 +02:00
Cui,Lili
ba9c87d325 Initial Sapphire Rapids and Alder Lake support from ISA r40
gcc/
	* common/config/i386/cpuinfo.h
	(get_intel_cpu): Handle sapphirerapids.
	* common/config/i386/i386-common.c
	(processor_names): Add sapphirerapids and alderlake.
	(processor_alias_table): Add sapphirerapids and alderlake.
	* common/config/i386/i386-cpuinfo.h
	(processor_subtypes): Add INTEL_COREI7_ALDERLAKE and
	INTEL_COREI7_ALDERLAKE.
	* config.gcc: Add -march=sapphirerapids and alderlake.
	* config/i386/driver-i386.c
	(host_detect_local_cpu) Handle sapphirerapids and alderlake.
	* config/i386/i386-c.c
	(ix86_target_macros_internal): Handle sapphirerapids and alderlake.
	* config/i386/i386-options.c
	(m_SAPPHIRERAPIDS) : Define.
	(m_ALDERLAKE): Ditto.
	(m_CORE_AVX512) : Add m_SAPPHIRERAPIDS.
	(processor_cost_table): Add sapphirerapids and alderlake.
	(ix86_option_override_internal) Handle PTA_WAITPKG, PTA_ENQCMD,
	PTA_CLDEMOTE, PTA_SERIALIZE, PTA_TSXLDTRK.
	* config/i386/i386.h
	(ix86_size_cost) : Define SAPPHIRERAPIDS and ALDERLAKE.
	(processor_type) : Add PROCESSOR_SAPPHIRERAPIDS and
	PROCESSOR_ALDERLAKE.
	(PTA_ENQCMD): New.
	(PTA_CLDEMOTE): Ditto.
	(PTA_SERIALIZE): Ditto.
	(PTA_TSXLDTRK): New.
	(PTA_SAPPHIRERAPIDS): Ditto.
	(PTA_ALDERLAKE): Ditto.
	(processor_type) : Add PROCESSOR_SAPPHIRERAPIDS and
	PROCESSOR_ALDERLAKE.
	* doc/extend.texi: Add sapphirerapids and alderlake.
	* doc/invoke.texi: Add sapphirerapids and alderlake.

gcc/testsuite/
	* gcc.target/i386/funcspec-56.inc: Handle new march.
	* g++.target/i386/mv16.C: Handle new march
2020-07-10 16:40:54 +08:00
Martin Liska
02947a87c4
Add -fdump-profile-report.
When using -fprofile-report, -fdump-profile-report can be used to
print the report to a foo.c.000i.profile-report file instead
of stderr. I see it handy for comparison purpose.

gcc/ChangeLog:

	* dumpfile.c [profile-report]: Add new profile dump.
	* dumpfile.h (enum tree_dump_index): Ad TDI_profile_report.
	* passes.c (pass_manager::dump_profile_report): Change stderr
	to dump_file.
2020-07-10 10:10:50 +02:00
Kewen Lin
08a94a95d1 vect: Use adjusted niters by considering peeling prologue
This patch is derived from the review of vector with length patch
series.  I relaxed the guard on LOOP_VINFO_PEELING_FOR_ALIGNMENT for
vector with length as Richard S.'s suggestion, then encountered one
failure from case gcc.dg/vect/vect-ifcvt-11.c with param
vect-partial-vector-usage=2 enablement run.  The root cause is that
we still use the original niters for the loop body vectorization,
it leads the access to go out of bound, instead we should use
LOOP_VINFO_NITERS which has been adjusted in vect_do_peeling by
considering the peeling number for prologue.

Bootstrapped/regtested on aarch64-linux-gnu and powerpc64le-linux-gnu.

gcc/ChangeLog:

	* tree-vect-loop.c (vect_transform_loop): Use LOOP_VINFO_NITERS which
	is adjusted by considering peeled prologue for non
	vect_use_loop_mask_for_alignment_p cases.
2020-07-09 22:03:26 -05:00
GCC Administrator
3f8ca9cb86 Daily bump. 2020-07-10 00:16:28 +00:00
Julian Brown
0d00fe404c openacc: Set bias to zero for explicit attach/detach clauses in C and C++
This is a fix for the pointer (or array) size inadvertently being used
for the bias with attach and detach mapping kinds, for both C and C++.

2020-07-09  Julian Brown  <julian@codesourcery.com>
	    Thomas Schwinge  <thomas@codesourcery.com>

gcc/c/
	PR middle-end/95270
	* c-typeck.c (c_finish_omp_clauses): Set OMP_CLAUSE_SIZE (bias) to zero
	for standalone attach/detach clauses.

gcc/cp/
	PR middle-end/95270
	* semantics.c (finish_omp_clauses): Likewise.

include/
	PR middle-end/95270
	* gomp-constants.h (gomp_map_kind): Expand comment for attach/detach
	mapping kinds.

gcc/testsuite/
	PR middle-end/95270
	* c-c++-common/goacc/mdc-1.c: Update expected dump output for zero
	bias.

libgomp/
	PR middle-end/95270
	* testsuite/libgomp.oacc-c-c++-common/pr95270-1.c: New test.
	* testsuite/libgomp.oacc-c-c++-common/pr95270-2.c: New test.
2020-07-09 15:17:52 -07:00
Julian Brown
8d2e5026d2 openacc: GOMP_MAP_ATTACH handling in find_group_last
Arrange for GOMP_MAP_ATTACH to be grouped together with a preceding
GOMP_MAP_TO_PSET or other "to" data movement clause, except in cases
where an explicit "attach" clause is used.

2020-07-09  Julian Brown  <julian@codesourcery.com>

include/
	* gomp-constants.h (gomp_map_kind): Update comment for GOMP_MAP_TO_PSET.

libgomp/
	* oacc-mem.c (find_group_last): Group data-movement clauses
	(GOMP_MAP_TO_PSET, GOMP_MAP_TO, etc.) together with a subsequent
	GOMP_MAP_ATTACH.  Allow standalone GOMP_MAP_ATTACH also.
2020-07-09 14:16:00 -07:00
Julian Brown
ac8996edb1 openacc: Fortran derived-type mapping fix
Fix a bug with mapping Fortran components which themselves have derived
types in the OpenACC 2.5+ manual deep-copy support.

2020-07-09  Julian Brown  <julian@codesourcery.com>

gcc/fortran/
	* trans-openmp.c (gfc_trans_omp_clauses): Use 'inner' not 'decl' for
	derived type members which themselves have derived types.

gcc/testsuite/
	* gfortran.dg/goacc/mapping-tests-3.f90: New test.
	* gfortran.dg/goacc/mapping-tests-4.f90: New test.
2020-07-09 14:04:41 -07:00
Peter Bergner
fd263be4b5 rs6000: Allow MMA built-in initialization regardless of compiler options
Built-in initialization occurs only once and fairly early, when the
command line options are in force.  If the -mcpu=<CPU> is pre-power10,
then we fail to initialize the MMA built-ins, so they are not
available to call in a #pragma target/attribute target function.
The fix is to basically always (on server type cpus) initialize the MMA
built-ins so we can use them in #pragma target/attribute target functions.

2020-07-09  Peter Bergner  <bergner@linux.ibm.com>

gcc/
	PR target/96125
	* config/rs6000/rs6000-call.c (rs6000_init_builtins): Define the MMA
	specific types __vector_quad and __vector_pair, and initialize the
	MMA built-ins if TARGET_EXTRA_BUILTINS is set.
	(mma_init_builtins): Don't test for mask set in rs6000_builtin_mask.
	Remove now unneeded mask variable.
	* config/rs6000/rs6000.c (rs6000_option_override_internal): Add the
	OPTION_MASK_MMA flag for power10 if not already set.

gcc/testsuite/
	PR target/96125
	* gcc.target/powerpc/pr96125.c: New test.
2020-07-09 15:58:36 -05:00
Richard Biener
9ddea93062 fixup BIT_FIELD_REF detection in SLP discovery
This fixes a thinko where we end up combining a BIT_FIELD_REF
and a memory access, fixed by checking all stmts are a load or
none.

2020-07-09  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/96133
	* tree-vect-slp.c (vect_build_slp_tree_1): Compare load_p
	status between stmts.
2020-07-09 19:54:34 +02:00
Patrick Palka
614662064a c++: Partially revert fix for PR c++/95497 [PR96132]
I was mistaken to assume that a dependent type is necessarily
incomplete, and indeed there are multiple places in the frontend where
we check a type for both dependency and completeness.  So this patch
partially reverts the fix for PR95497, restoring the dependent_type_p
check that guarded the call to is_really_empty_class below.

gcc/cp/ChangeLog:

	PR c++/96132
	* constexpr.c (potential_constant_expression_1) <case PARM_DECL>:
	Restore dependent_type_p check that guarded the call to
	is_really_empty_class.

gcc/testsuite/ChangeLog:

	PR c++/96132
	* g++.dg/template/incomplete12.C: New test.
2020-07-09 13:47:13 -04:00
H.J. Lu
fab263ab0f x86: Enable FMA in rsqrt<mode>2 expander
Enable FMA in rsqrt<mode>2 expander and fold rsqrtv16sf2 expander into
rsqrt<mode>2 expander which expands to UNSPEC_RSQRT28 for TARGET_AVX512ER.
Although it doesn't show performance change in our workloads, FMA can
improve other workloads.

gcc/

	PR target/88713
	* config/i386/i386-expand.c (ix86_emit_swsqrtsf): Enable FMA.
	* config/i386/sse.md (VF_AVX512VL_VF1_128_256): New.
	(rsqrt<mode>2): Replace VF1_128_256 with VF_AVX512VL_VF1_128_256.
	(rsqrtv16sf2): Removed.

gcc/testsuite/

	PR target/88713
	* gcc.target/i386/pr88713-1.c: New test.
	* gcc.target/i386/pr88713-2.c: Likewise.
2020-07-09 06:35:57 -07:00
Richard Biener
a1e25d0008 remove premature vect_verify_datarefs_alignment
This followup removes vect_verify_datarefs_alignment and its
premature cancellation of vectorization leaving the actual
decision whether alignment is supported to the functions
deciding whether we can vectorize a load or store.

2020-07-08  Richard Biener  <rguenther@suse.de>

	* tree-vectorizer.h (vect_verify_datarefs_alignment): Remove.
	(vect_slp_analyze_and_verify_instance_alignment): Rename to ...
	(vect_slp_analyze_instance_alignment): ... this.
	* tree-vect-data-refs.c (verify_data_ref_alignment): Remove.
	(vect_verify_datarefs_alignment): Likewise.
	(vect_enhance_data_refs_alignment): Do not call
	vect_verify_datarefs_alignment.
	(vect_slp_analyze_node_alignment): Rename from
	vect_slp_analyze_and_verify_node_alignment and do not
	call verify_data_ref_alignment.
	(vect_slp_analyze_instance_alignment): Rename from
	vect_slp_analyze_and_verify_instance_alignment.
	* tree-vect-stmts.c (vectorizable_store): Dump when
	we vectorize an unaligned access.
	(vectorizable_load): Likewise.
	* tree-vect-loop.c (vect_analyze_loop_2): Do not call
	vect_verify_datarefs_alignment.
	* tree-vect-slp.c (vect_slp_analyze_bb_1): Adjust.

	* gcc.dg/vect/bb-slp-10.c: Adjust.
	* gcc.dg/vect/slp-45.c: Likewise.
	* gcc.dg/vect/vect-109.c: Likewise.
2020-07-09 13:17:07 +02:00
Bin Cheng
dd21b03900 Schedule reduction partition in the last.
If reduction partition's SCC is broken by runtime alias checks, force
a negative post order to it so that it will be scheduled in the last.

2020-07-09  Bin Cheng  <bin.cheng@linux.alibaba.com>

gcc/
	PR tree-optimization/95804
	* tree-loop-distribution.c (break_alias_scc_partitions): Force
	negative post order to reduction partition.

gcc/testsuite/
	PR tree-optimization/95804
	* gcc.dg/tree-ssa/pr95804.c: New test.
2020-07-09 18:14:26 +08:00
Jakub Jelinek
5acef69f9d openmp: Optimize triangular loop logical iterator to actual iterators computation using search for quadratic equation root(s)
This patch implements the optimized logical to actual iterators
computation for triangular loops.

I have a rough implementation using integers, but this one uses floating
point.  There is a small problem that -fopenmp programs aren't linked with
-lm, so it does it only if the hw has sqrt optab (and uses ifn rather than
__builtin_sqrt because it obviously doesn't need errno handling etc.).

Do you think it is ok this way, or should I use the integral computation
using inlined isqrt (we have inequation of the form
start >= x * t10 + t11 * (((x - 1) * x) / 2)
where t10 and t11 are signed long long values and start unsigned long long,
and the division by 2 actually is a problem for accuracy in some cases, so
if we do it in integral, we need to do actually
      long long t12 = 2 * t10 - t11;
      unsigned long long t13 = t12 * t12 + start * 8 * t11;
      unsigned long long isqrt_ = isqrtull (t13);
      long long x = (((long long) isqrt_ - t12) / t11) >> 1;
with careful overflow checking on all the computations before isqrtull
(and on overflows use the fallback implementation).

2020-07-09  Jakub Jelinek  <jakub@redhat.com>

	* omp-general.h (struct omp_for_data): Add min_inner_iterations
	and factor members.
	* omp-general.c (omp_extract_for_data): Initialize them and remember
	them in OMP_CLAUSE_COLLAPSE_COUNT if needed and restore from there.
	* omp-expand.c (expand_omp_for_init_counts): Fix up computation of
	counts[fd->last_nonrect] if fd->loop.n2 is INTEGER_CST.
	(expand_omp_for_init_vars): For
	fd->first_nonrect + 1 == fd->last_nonrect loops with for now
	INTEGER_CST fd->loop.n2 find quadratic equation roots instead of
	using fallback method when possible.

	* testsuite/libgomp.c/loop-19.c: New test.
	* testsuite/libgomp.c/loop-20.c: New test.
2020-07-09 12:07:17 +02:00
Jakub Jelinek
ea82325afe openmp: Change omp_atv_default value and rename omp_atv_sequential to omp_atv_serialized.
While this is an OpenMP 5.1 change, it is undesirable to let people use different
values and then deal with ABI backwards compatibility in a year or two.

2020-07-09  Jakub Jelinek  <jakub@redhat.com>

	* omp.h.in (omp_alloctrait_value_t): Change omp_atv_default from
	2 to -1.  Add omp_atv_serialized and define omp_atv_sequential using
	it.  Remove __omp_alloctrait_value_max__.
	* allocator.c (omp_init_allocator): Handle omp_atv_default for
	omp_atk_alignment and omp_atk_pool_size.
2020-07-09 11:29:30 +02:00
Omar Tahir
edf95e51e5 ira: Fix unnecessary register spill
The variables first_moveable_pseudo and last_moveable_pseudo aren't
reset after compiling a function, which means they leak into the first
scheduler pass of the following function. In some cases, this can cause
an extra spill during register allocation of the second function.

gcc/ChangeLog:

	* ira.c (move_unallocated_pseudos): Zero first_moveable_pseudo and
	last_moveable_pseudo before returning.

gcc/testsuite/ChangeLog:

	* gcc.target/aarch64/nospill.c: New test.
2020-07-09 10:14:19 +01:00
Szabolcs Nagy
319078dad6 aarch64: Fix BTI support in libitm
sjlj.S did not have the GNU property note markup and the BTI c
instructions that are necessary when it is built with branch
protection.

The notes are only added when libitm is built with branch
protection, because old linkers mishandle the note (merge
them incorrectly or emit warnings), the BTI instructions
are added unconditionally.

2020-07-09  Szabolcs Nagy  <szabolcs.nagy@arm.com>

libitm/ChangeLog:

	* config/aarch64/sjlj.S: Add BTI marking and related definitions,
	and add BTI c to function entries.
2020-07-09 09:50:25 +01:00
Szabolcs Nagy
f0f62fa032 aarch64: Fix BTI support in libgcc [PR96001]
lse.S did not have the GNU property note markup and the BTI c
instructions that are necessary when it is built with branch
protection.

The notes are only added when libgcc is built with branch
protection, because old linkers mishandle the note (merge
them incorrectly or emit warnings), the BTI instructions
are added unconditionally.

Note: BTI c is only necessary at function entry if the function
may be called indirectly, currently lse functions are not called
indirectly, but BTI is added for ABI reasons e.g. to allow
linkers later to emit stub code with indirect jump.

2020-07-09  Szabolcs Nagy  <szabolcs.nagy@arm.com>

libgcc/ChangeLog:

	PR target/96001
	* config/aarch64/lse.S: Add BTI marking and related definitions,
	and add BTI c to function entries.
2020-07-09 09:50:25 +01:00
Szabolcs Nagy
e73ec75548 aarch64: Fix noexecstack note in libgcc
lse.S did not have GNU stack note, this may cause missing
PT_GNU_STACK in binaries on Linux and FreeBSD.

2020-07-09  Szabolcs Nagy  <szabolcs.nagy@arm.com>

libgcc/ChangeLog:

	* config/aarch64/lse.S: Add stack note.
2020-07-09 09:50:25 +01:00
Szabolcs Nagy
463ba375f7 aarch64: Fix noexecstack note in libitm
sjlj.S only had the note on Linux, but it is supposed
to have it on FreeBSD too.

2020-07-09  Szabolcs Nagy  <szabolcs.nagy@arm.com>

libitm/ChangeLog:

	* config/aarch64/sjlj.S: Add stack note if __FreeBSD__ is defined.
2020-07-09 09:50:25 +01:00
Szabolcs Nagy
63b6808e69 aarch64: Add missing ACLE support for BTI
Define the __ARM_FEATURE_BTI_DEFAULT feature test
macro when BTI branch protection is enabled.

2020-07-09  Szabolcs Nagy  <szabolcs.nagy@arm.com>

gcc/ChangeLog:

	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Add
	__ARM_FEATURE_BTI_DEFAULT support.
2020-07-09 09:46:58 +01:00