Commit graph

173620 commits

Author SHA1 Message Date
Jan Hubicka
510873f901 lto-streamer-in.c (input_function): Add node parameter.
* lto-streamer-in.c (input_function): Add node parameter.
	(lto_read_body_or_constructor): Use it.

From-SVN: r279379
2019-12-13 18:43:20 +00:00
Andrew Stubbs
26b74ed022 Update OpenACC tests for amdgcn
2019-12-13  Andrew Stubbs  <ams@codesourcery.com>

	libgomp/
	* testsuite/libgomp.oacc-c-c++-common/acc_prof-init-1.c: Handle gcn.
	* testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/acc_prof-parallel-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/asyncwait-nop-1.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/function-not-offloaded.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/async_queue-1.c: Disable on GCN.
	* testsuite/libgomp.oacc-c-c++-common/tile-1.c: Likewise.

From-SVN: r279378
2019-12-13 17:40:06 +00:00
Roman Zhuykov
faab8a70f2 modulo-sched: fix branch rescheduling issue (PR92591)
PR rtl-optimization/92591
	* modulo-sched.c (ps_add_node_check_conflicts): Improve checking
	for history > 0 case.

testsuite:

	PR rtl-optimization/92591
	* gcc.dg/pr92951-1.c: New test.
	* gcc.dg/pr92951-2.c: New test.

From-SVN: r279377
2019-12-13 17:33:38 +00:00
Roman Zhuykov
c420be8b3c modulo-sched: fix parameters usage and their ranges
* modulo-sched.c (sms_schedule): Use param_sms_max_ii_factor
	value instead of macro.  Adjust comment.
	(sms_schedule_by_order): Use parameter value without macro.
	* params.opt: Add ranges for modulo scheduler parameters,
	set param_sms_max_ii_factor = 2 by default.

From-SVN: r279376
2019-12-13 17:17:31 +00:00
Roman Zhuykov
728c2e5eea modulo-sched: speed up DDG analysis (PR90001)
PR rtl-optimization/90001
	* ddg.c (create_ddg): Init max_dist array for each node.
	(free_ddg): Free max_dist array.
	(create_ddg_edge): Use bool field instead of aux union.
	(set_recurrence_length): Use prepared max_dist information instead
	of calling longest_simple_path.
	(create_scc): Remove graph argument, fill node's aux.count with
	SCC id, and move set_recurrence_length call to...
	(create_ddg_all_sccs): ...here, after filling all max_dist arrays
	using Floyd–Warshall-like algorithm.
	(update_dist_to_successors): Remove the whole function.
	(longest_simple_path): Likewise.
	* ddg.h (struct ddg_node): Add max_dist pointer.
	(struct ddg_edge): Use bool field instead of unused aux union.

From-SVN: r279375
2019-12-13 17:02:53 +00:00
Andrew Stubbs
7b945b19ad Sub-dword vector multiply for amdgcn
2019-12-13  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (mulv64si3<exec>): Rename to ...
	(mul<mode>3<exec>): ... this, and implement sub-dword patterns.
	(mulv64si3_dup<exec>): Rename to ...
	(mul<mode>3_dup<exec>): ... this, and implement sub-dword patterns.

From-SVN: r279374
2019-12-13 16:37:17 +00:00
Jan Hubicka
e44deb433b Fix merging of common traget info.
* ipa-utils.c (ipa_merge_profiles): Improve dumping; merge common
	targets.

From-SVN: r279373
2019-12-13 15:41:55 +00:00
Andrew Stubbs
3d66c77719 Sub-dword vector extend and truncate for amdgcn
2019-12-13  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (sdwa): New mode attribute.
	(VCVT_FROM_MODE): Rename to ...
	(VCVT_MODE): ... this.
	(VCVT_TO_MODE): Delete mode iterator.
	(VCVT_FMODE): New mode iterator.
	(VCVT_IMODE): Likewise.
	(<cvt_name><VCVT_FROM_MODE:mode><VCVT_TO_MODE:mode>2<exec>): Change ...
	(<cvt_name><VCVT_MODE:mode><VCVT_FMODE:mode>2<exec>): ... to this.
	(<cvt_name><VCVT_FMODE:mode><VCVT_IMODE:mode>2<exec>): New.
	(zero_convert): New code iterator.
	(convop): New code attribute.
	(<convop><VEC_ALL1REG_INT_ALT:mode><VEC_ALL1REG_INT_MODE:mode>2<exec>)
	: New.
	(extend<VEC_ALL1REG_INT_ALT:mode><VEC_ALL1REG_INT_MODE:mode>2<exec>)
	: New.
	(vec_truncatev64div64si): Rename to ...
	(truncv64di<mode>2): ... this and implement sub-dword patterns.
	(vec_truncatev64div64si_exec): Rename to ...
	(truncv64di<mode>2_exec): ... this and implement sub-dword patterns.
	(<convop><mode>v64di2): New insn_and_split.
	(<convop><mode>v64di2_exec): Likewise.
	(mask_gather_load<mode>): Update truncate names.
	(mask_scatter_store<mode>): Likewise.
	* config/gcn/gcn.c (gcn_expand_scaled_offsets): Update truncate names.

From-SVN: r279372
2019-12-13 15:29:26 +00:00
Dennis Zhang
a93e1d5c70 [AArch64] Enable CLI for Armv8.6-a: armv8.6-a, i8mm and bf16
2019-12-13  Dennis Zhang  <dennis.zhang@arm.com>

gcc/
	* config/aarch64/aarch64-arches.def (armv8.6-a): New.
	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
	__ARM_FEATURE_MATMUL_INT8, __ARM_FEATURE_BF16_VECTOR_ARITHMETIC and
	__ARM_FEATURE_BF16_SCALAR_ARITHMETIC when enabled.
	* config/aarch64/aarch64-option-extensions.def (i8mm, bf16): New.
	(fp): Disabling fp also disables i8mm and bf16.
	(simd): Disabling simd also disables i8mm.
	* config/aarch64/aarch64.h (AARCH64_FL_V8_6): New macro.
	(AARCH64_FL_I8MM, AARCH64_FL_BF16, AARCH64_FL_FOR_ARCH8_6): Likewise.
	(AARCH64_ISA_V8_6, AARCH64_ISA_I8MM, AARCH64_ISA_BF16): Likewise.
	(TARGET_I8MM, TARGET_BF16_FP, TARGET_BF16_SIMD): Likewise.
	* doc/invoke.texi (armv8.6-a, i8mm, bf16): Document new options
	and add a new table to list permissible values for ARCH.

gcc/testsuite/
	* gcc.target/aarch64/pragma_cpp_predefs_2.c: Add tests for i8mm
	and bf16 features.

From-SVN: r279370
2019-12-13 10:22:39 +00:00
Jakub Jelinek
1a4c0446c0 re PR target/92908 (wrong code with -Og -fno-tree-fre -mavx512bw and vector compare)
PR target/92908
	* simplify-rtx.c (simplify_relational_operation): Punt for vector
	cmp_mode and scalar mode, if simplify_relational_operation returned
	const_true_rtx.
	(simplify_const_relational_operation): Change VOID_mode in function
	comment to VOIDmode.

	* gcc.target/i386/avx512bw-pr92908.c: New test.

From-SVN: r279369
2019-12-13 11:12:55 +01:00
Gary Dismukes
814db0c199 [Ada] Minor rewording of one sentence
2019-12-13  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst: Minor
	rewording of one sentence.
	* gnat_rm.texi: Regenerate.

From-SVN: r279368
2019-12-13 09:05:43 +00:00
Arnaud Charlet
9531aef54f [Ada] Unnesting and annex E
2019-12-13  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* exp_unst.adb (Unnest_Subprogram): Account for trees produced
	by Annex E constructs.

From-SVN: r279367
2019-12-13 09:05:38 +00:00
Ghjuvan Lacambre
e203dd6e24 [Ada] implementation_defined_pragmas.rst: Update Initialize_Scalars docs
2019-12-13  Ghjuvan Lacambre  <lacambre@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst: Update
	Initialize_Scalars documentation.
	* gnat_rm.texi: Regenerate.

From-SVN: r279366
2019-12-13 09:05:33 +00:00
Javier Miranda
c90e1eca37 [Ada] Spurious error on precondition of subprogram instantiation
2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* sem_ch13.adb (Analyze_Aspect_Specification): Processing a
	precondition, if the expression is of the form A and then B, do
	not generate separate Pre/Post aspects for the separate clases
	when we are processing a generic unit. Required to avoid
	reporting spurious visibility errors on the instantiations.

From-SVN: r279365
2019-12-13 09:05:28 +00:00
Eric Botcazou
e1e1e53a48 [Ada] Better error message for aliased formal and atomic actual
2019-12-13  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Actuals): Give canonical error for
	illegal case of atomic/volatile parameter also if the formal is
	aliased.

From-SVN: r279364
2019-12-13 09:05:23 +00:00
Eric Botcazou
a35c1b077e [Ada] Clear confusion about subcomponents of atomic object
2019-12-13  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* sem_util.ads (Is_Atomic_Object): Mention relevant RM clauses.
	* sem_util.adb (Is_Atomic_Object): For an indexed component,
	only look at the Has_Atomic_Components aspect of the prefix and
	do not recurse on it; for a selected component, do not look at
	the prefix.
	(Is_Atomic_Or_VFA_Object): Minor tweak.

From-SVN: r279363
2019-12-13 09:05:18 +00:00
Arnaud Charlet
309ff6fb23 [Ada] Fix support for > 24 hours image in Ada.Calendar.Formatting
2019-12-13  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/a-calfor.ads, libgnat/a-calfor.adb (Split_Duration):
	New procedure.
	(Split, Image): Use Split_Duration. Update Image spec.

From-SVN: r279362
2019-12-13 09:05:13 +00:00
Javier Miranda
3af796b550 [Ada] Adding support for unsupported type conversions in CCG
2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_unst.adb (Unnest_Subprogram): Generate an extra temporary
	to facilitate the C backend processing dereferences.

From-SVN: r279361
2019-12-13 09:05:08 +00:00
Javier Miranda
48f05f09e6 [Ada] Pragma Linker_Section in subprogram instantiations in CCG
2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* sem_prag.adb (Analyze_Pragma): Propagate the
	Linker_Section_Attribute to the ultimate alias of the subprogram
	to facilitate the C backend processing this attribute.

From-SVN: r279360
2019-12-13 09:05:03 +00:00
Yannick Moy
de12d07e93 [Ada] Avoid spurious mismatch error of assertion policy in generics
2019-12-13  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_util.adb (Original_Aspect_Pragma_Name): Go through
	Original_Node for pragma.

From-SVN: r279359
2019-12-13 09:04:58 +00:00
Piotr Trojanek
8973b987b6 [Ada] Minor fix typo in comment
2019-12-13  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* exp_aggr.adb, exp_unst.adb: Minor fix typo in comment.

From-SVN: r279358
2019-12-13 09:04:53 +00:00
Steve Baird
a85475beae [Ada] Detect illegal implicit type conversions
2019-12-13  Steve Baird  <baird@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve, Valid_Conversion): Add Base_Type call
	when testing whether a type is a general access type.

From-SVN: r279357
2019-12-13 09:04:48 +00:00
Javier Miranda
02458cc742 [Ada] Adding support for unsupported type conversion in CCG
2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Generate an
	extra temporary for cases unsupported by the C backend.

From-SVN: r279356
2019-12-13 09:04:43 +00:00
Steve Baird
cfedf3e51b [Ada] Implement AI12-0109 (prohibit some "early" derivations)
2019-12-13  Steve Baird  <baird@adacore.com>

gcc/ada/

	* einfo.ads: Correct comment for Derived_Type_Link to reflect
	that fact that this function is now used for more than just
	generation of warnings.
	* sem_ch3.adb (Build_Derived_Type): Do not call
	Set_Derived_Type_Link if the derived type and the parent type
	are in different compilation units. Such a derivation cannot be
	a problematic "early" derivation (identifying these is what the
	Derived_Type_Link attribute is used for) and we don't like
	inter-unit references that go in the opposite direction of
	semantic dependencies.
	* sem_ch13.adb (Is_Type_Related_Rep_Item): A new function,
	analogous to the existing function Is_Operational_Item.
	(Rep_Item_Too_Late): Generate a hard error (with same text as
	the warning that was previously being generated) if the
	AI12-0109 legality rule is violated.

From-SVN: r279355
2019-12-13 09:04:38 +00:00
Eric Botcazou
63e21a7237 [Ada] Minor tweak to Volatile_Full_Access wording in GNAT RM
2019-12-13  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* doc/gnat_rm/implementation_defined_pragmas.rst: Minor tweak to
	Volatile_Full_Access wording in GNAT RM.
	* gnat_rm.texi: Regenerate.

From-SVN: r279354
2019-12-13 09:04:33 +00:00
Gary Dismukes
47997d257a [Ada] Suppress Base_Address call on init of activation record components
2019-12-13  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* exp_attr.adb (Expand_N_Attribute_Reference,
	Attribute_Address): Suppress generation of a call to
	Base_Address in the case where the Address attribute is being
	used to initialize a corresponding component of an activation
	record.
	(Is_Unnested_Component_Init): New function to determine whether
	an attribute reference for Address is used to initialized a
	component of an activation record object that corresponds to the
	object denoted by the prefix of the attribute (an assignment
	used in support of unnesting for back ends like LLVM).

From-SVN: r279353
2019-12-13 09:04:28 +00:00
Ed Schonberg
be3614c740 [Ada] Crash on implicit dereference not made explicit
2019-12-13  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve): IF an entity reference is overloaded
	because its type has an Implicit_Dereference aspect, we must
	examine the discriminants of the type to determine whether an
	explicit dereference must be inserted for use in code
	generation. Previously this was done for other expressions but
	not for entity references by themselves.  This was sufficient to
	handle uses of the aspect in container handling and iteration,
	but not more generally.

From-SVN: r279352
2019-12-13 09:04:23 +00:00
Javier Miranda
20dc266e5a [Ada] Deallocation of controlled type implementing interface types
2019-12-13  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_disp.ads (Expand_Interface_Thunk): Adding one formal (the
	interface type).
	* exp_disp.adb (Expand_Interface_Thunk): Using the added formal
	to ensure the correct profile of the thunk generated for
	predefined primitives; in addition, the added formal is also
	used to perform a check that ensures that the controlling type
	of the thunk is the one expected by the GCC backend.
	(Make_Secondary_DT, Register_Primitive): Adding the new formal
	to the calls to Expand_Interface_Thunk.
	* exp_ch6.adb (Register_Predefined_DT_Entry): Adding the new
	formal to the call to Expand_Interface_Thunk.
	* exp_intr.adb (Expand_Unc_Deallocation): When deallocating a
	controlled type and the call to unchecked deallocation is
	performed with a pointer to one of the convered interface types,
	displace the pointer to the object to reference the base of the
	object to deallocate its memory.
	* gcc-interface/trans.c (maybe_make_gnu_thunk): Assert that the
	controlling type of the thunk is an interface type.

From-SVN: r279351
2019-12-13 09:04:18 +00:00
Bob Duff
6c9e4a1d65 [Ada] Remove Is_Available function
2019-12-13  Bob Duff  <duff@adacore.com>

gcc/ada/

	* exp_attr.adb (Is_Available): Remove this function, and replace
	all calls with RTE_Available. RTE_Available will return True if
	"not Configurable_Run_Time_Mode". Remove the "???" comment.

From-SVN: r279350
2019-12-13 09:04:12 +00:00
Ed Schonberg
7f8ad8f001 [Ada] Crash on inherited private operation in child package
2019-12-13  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch7.adb (Analyze_Package_Body_Helper): Do not call
	Declare_Inherited_Private_Subprograms on s child body: the
	required operations have already been created when analyzing the
	corresponding package declaration. This prevents a redeclaration
	of inehrited operation, and a crash when inserting the new
	operation in the current scope.

From-SVN: r279349
2019-12-13 09:04:06 +00:00
Yannick Moy
0a8ff576db [Ada] Avoid spurious errors on Global/Depends in instantiations
2019-12-13  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_prag.adb (Analyze_Depends_In_Decl_Part,
	Analyze_Global_In_Decl_Part,
	Analyze_Refined_Depends_In_Decl_Part,
	Analyze_Refined_Global_In_Decl_Part, Check_Missing_Part_Of):
	Skip redundant checking involving visibility inside
	instantiations.

From-SVN: r279348
2019-12-13 09:04:01 +00:00
Yannick Moy
2e3795d016 [Ada] Prevent inlining inside condition of while loop in GNATprove
2019-12-13  Yannick Moy  <moy@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Call): Prevent inlining inside while loop
	conditions.
	* sem_util.adb, sem_util.ads (In_While_Loop_Condition): New
	query function.

From-SVN: r279347
2019-12-13 09:03:56 +00:00
Bob Duff
e841d4d8b3 [Ada] Ada2020: Update Impunit for Ada 202X
2019-12-13  Bob Duff  <duff@adacore.com>

gcc/ada/

	* impunit.ads: Add Ada_202X_Unit.
	* impunit.adb: Add a table Non_Imp_File_Names_2X analogous to
	the other tables. Add code to search this table.
	* opt.ads: Add Warn_On_Ada_202X_Compatibility flag, currently
	always True.
	* sem_ch10.adb (Analyze_With_Clause): Give a warning if an Ada
	2020 unit is with-ed when Ada_Version < Ada_2020.  Change 'if'
	to 'case': Full coverage rules rule.

From-SVN: r279346
2019-12-13 09:03:50 +00:00
Bob Duff
90366d6573 [Ada] Rtsfind: minor comment fixes
2019-12-13  Bob Duff  <duff@adacore.com>

gcc/ada/

	* rtsfind.ads: Minor comment fix.

From-SVN: r279345
2019-12-13 09:03:45 +00:00
Gary Dismukes
563be3ee1d [Ada] Up-level addressing problems with private tasks and selective accept procs
2019-12-13  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* sem_util.adb (Scope_Within): For the case of checking for a
	task type procedure, check the Implementation_Base_Type of Curr.
	(Scope_Within_Or_Same): For the case of checking for a task type
	procedure, check the Implementation_Base_Type of Curr.

From-SVN: r279344
2019-12-13 09:03:40 +00:00
Arnaud Charlet
9ea2a24d50 [Ada] Add Ada.Containers.Vectors.Generic_Parallel_Sorting to known units
2019-12-13  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* impunit.adb (Non_Imp_File_Names_12): Add
	Ada.Containers.Vectors.Generic_Parallel_Sorting.

From-SVN: r279343
2019-12-13 09:03:34 +00:00
Justin Squirek
8daf00dd4a [Ada] Missing accessibility checks on conditionals
2019-12-13  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Allocator): Add calls to
	Check_Cond_Expr_Accessibility when a conditional expression is
	found.
	(Check_Allocator_Discrim_Accessibility_Exprs): Created to
	recursively traverse a potentially compound conditional
	expression and perform accessibility checks for each
	alternative.
	* sem_util.adb (Dynamic_Accessibility_Level): Avoid use of
	original node of the expression in question so we can handle
	dynamic accessibility in the limited case of a constant folded
	conditional expression.

From-SVN: r279342
2019-12-13 09:03:28 +00:00
Steve Baird
d7c37f4549 [Ada] Implement AI12-0101
2019-12-13  Steve Baird  <baird@adacore.com>

gcc/ada/

	* exp_ch4.adb (Expand_N_Op_Eq.Is_Equality): Move this function
	from within Expand_N_Op_Eq.Find_Equality out to immediately
	within Expand_N_Op_Eq in order to give it greater visibility.
	Add a new Typ parameter (defaulted to Empty) which, if
	non-empty, means the function will return False in the case of
	an equality op for some other type.
	* (Expand_N_Op_Eq.User_Defined_Primitive_Equality_Op): A new
	function. Given an untagged record type, finds the corresponding
	user-defined primitive equality op (if any).  May return Empty.
	Ignores visibility.
	* (Expand_N_Op): For Ada2012 or later, check for presence of a
	user-defined primitive equality op before falling back on the
	usual predefined component-by-component comparison. If found,
	then call the user-defined op instead.

From-SVN: r279341
2019-12-13 09:03:23 +00:00
Justin Squirek
08f4f1721a [Ada] Spurious error on overriding controlled primitive
2019-12-13  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* sem_ch6.adb (Check_Overriding_Indicator): Modify condition to
	take into account the modification of the Is_Hidden flag within
	generic instances.
	(Verify_Overriding_Indicator): Add an exception for controlled
	primitives within an instance.

From-SVN: r279340
2019-12-13 09:03:18 +00:00
Ed Schonberg
b622076c56 [Ada] New flag to indicate whether aspect appears on partial view
2019-12-13  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sinfo.ads, sinfo.adb (Aspect_On_Partial_View,
	Set_Aspect_On_Partial_View): New flag for use by SPARK, to
	indicate whether an aspect that appears on a type declaration
	applies to the partial view of that type.
	* sem_ch13.adb (Analyze_Aspect_Specification): Set new flag
	appropriately.

From-SVN: r279339
2019-12-13 09:03:02 +00:00
Andrew Pinski
db0aa34fb4 Add C testcases for PR 86659
testsuite/ChangeLog:
2019-12-13  Andrew Pinski  <apinski@marvell.com>

       * gcc.c-torture/execute/pr86659-1.c: New test.
       * gcc.c-torture/execute/pr86659-2.c: New test.

From-SVN: r279338
2019-12-13 00:31:42 -08:00
Tobias Burnus
7858bb9693 libgomp/openacc.f90 – clean-up public/private attributes
libgomp/
        * openacc.f90 (module openacc_kinds): Use 'PUBLIC' to mark all symbols
        as public except for the 'use …, only' imported symbol, which is
        private.
        (module openacc): Default to 'PRIVATE' to exclude openacc_internal; mark
        all symbols from module openacc_kinds as PUBLIC; add missing PUBLIC
        attributes for acc_copyout_finalize and acc_delete_finalize.

From-SVN: r279337
2019-12-13 08:58:53 +01:00
Kewen Lin
396c2a9842 [rs6000] Adjust vectorization cost for scalar COND_EXPR
We found that the vectorization cost modeling on scalar COND_EXPR is a bit off
on rs6000.  One typical case is 548.exchange2_r, -Ofast -mcpu=power9 -mrecip
-fvect-cost-model=unlimited is better than -Ofast -mcpu=power9 -mrecip (the
default is -fvect-cost-model=dynamic) by 1.94%.  Scalar COND_EXPR is expanded
into compare + branch or compare + isel normally, either of them should be
priced more than the simple FXU operation.  This patch is to add additional
vectorization cost onto scalar COND_EXPR on top of builtin_vectorization_cost.
The idea to use additional cost value 2 instead of the others: 1) try various
possible value candidates from 1 to 5, 2 is the best measured on Power9.  2) 
from latency view, compare takes 3 cycles and isel takes 2 on Power9, it's 
2.5 times of simple FXU instruction which takes cost 1 in the current
modeling, it's close.  3) get fine SPEC2017 ratio on Power8 as well.

gcc/ChangeLog

    * config/rs6000/rs6000.c (adjust_vectorization_cost): New function.
    (rs6000_add_stmt_cost): Call adjust_vectorization_cost and update
    stmt_cost.

From-SVN: r279336
2019-12-13 06:00:53 +00:00
Jason Merrill
a1af2dd9c3 PR c++/92496 - ICE with <=> and no #include <compare>.
* typeck.c (cp_build_binary_op): Handle error from spaceship_type.

From-SVN: r279331
2019-12-13 00:05:51 -05:00
GCC Administrator
0fec7ca198 Daily bump.
From-SVN: r279330
2019-12-13 00:16:22 +00:00
Jakub Jelinek
46f3e52e83 re PR target/92904 (varargs for __int128 is placed at an unaligned location and uses movdqa for the load)
PR target/92904
	* config/i386/i386.c (ix86_gimplify_va_arg): If need_intregs and
	not need_temp, decrease alignment of the read because the GPR save
	area only guarantees 8-byte alignment.

	* gcc.c-torture/execute/pr92904.c: New test.

From-SVN: r279327
2019-12-13 01:09:34 +01:00
Harald Anlauf
5e4bb24147 re PR fortran/92898 (ICE in gfc_check_is_contiguous, at fortran/check.c:7157)
2019-12-12  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/92898
	* check.c (gfc_check_is_contiguous): Simplify check to handle
	arbitrary NULL() argument.

	PR fortran/92898
	* gfortran.dg/pr92898.f90: New test.

From-SVN: r279314
2019-12-12 20:39:48 +00:00
Sudakshina Das
666b46c610 [Committed, testsuite] Fix PR92870
With my recent commit, I added a test that is not passing on all targets.
My change was valid for targets that have a vector/scalar shift/rotate optabs
(optab that supports vector shifted by scalar).

Since it does not seem to be easy to find out which targets would support it,
I am limiting the test to the targets that I know pass.

gcc/testsuite/ChangeLog

2019-12-12  Sudakshina Das  <sudi.das@arm.com>

	PR testsuite/92870
	* gcc.dg/vect/vect-shift-5.c: Add target to scan-tree-dump.

From-SVN: r279310
2019-12-12 18:01:18 +00:00
Georg-Johann Lay
404a671b59 Add support for some more AVR devices from avrxmega3 family.
* config/avr/avr-mcus.def (attiny1604, attiny1606, attiny1607)
	(attiny402, attiny404, attiny406)
	(attiny804, attiny806, attiny807)
	(attiny202, attiny204): Add AVR_MCU lines to support them.
	* doc/avr-mmcu.texi: Regenerate.

From-SVN: r279309
2019-12-12 17:00:46 +00:00
Jonathan Wakely
d1505d0146 libstdc++: Simplify std::common_comparison_category
* libsupc++/compare (common_comparison_category): Define without using
	concepts and optimise for compilation time.
	(__detail::__cmp_cat_ids): Remove.
	(__detail::__common_cmp_cat): Replace class template and
	specializations with constexpr function.

From-SVN: r279307
2019-12-12 14:35:55 +00:00