Commit Graph

177785 Commits

Author SHA1 Message Date
Richard Biener
c78907d514 tree-optimization/95866 - avoid vectorizing uniform SLP subgraphs
This avoids vectorizing SLP subgraphs that just compute uniform
operations on all-same operands.  That fixes the less interesting
(but most embarrasing) part of the testcase in the PR.  On the
way it also fixed a missing matches[0] reset in the last
refactoring touching that place.

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

	PR tree-optimization/95866
	* tree-vect-slp.c (vect_slp_tree_uniform_p): New.
	(vect_build_slp_tree_2): Properly reset matches[0],
	ignore uniform constants.

	* gcc.target/i386/pr95866-1.c: New testcase.
2020-06-24 19:49:16 +02:00
Ilya Leoshkevich
796190e538 Make contrib/download_prerequisites work on AIX and OpenBSD
contrib/ChangeLog:

2020-06-11  Ilya Leoshkevich  <iii@linux.ibm.com>

	* download_prerequisites: Support AIX and OpenBSD unames.
	Pipe `{gzip,bzip2} -d` to `tar -xf -`.
2020-06-24 17:57:53 +02:00
H.J. Lu
134f7c9419 x86: Remove brand ID check for Intel processors
Brand ID was a feature that briefly existed in some Pentium III and
Pentium 4 CPUs.  The CPUs that had non-zero brand ID still have had
valid family/model.  Brand ID just gives a marketing name for the CPU.
Remove the extra code for brand ID check.

gcc/

	PR target/95660
	* common/config/i386/cpuinfo.h (get_intel_cpu): Remove brand_id.
	(cpu_indicator_init): Likewise.
	* config/i386/driver-i386.c (host_detect_local_cpu): Updated.

gcc/testsuite/

	PR target/95660
	* gcc.target/i386/builtin_target.c (check_detailed): Updated.
2020-06-24 08:12:38 -07:00
H.J. Lu
403e166b97 x86: Add Cooper Lake detection with AVX512BF16
All Sky Lake family processors have the same CPUID model number, 0x55.
The differences are Cascade Lake has AVX512VNNI and Cooper Lake has
AVX512VNNI + AVX512BF16.  Check AVX512BF16 for Cooper Lake.

	PR target/95774
	* common/config/i386/cpuinfo.h (get_intel_cpu): Add Cooper Lake
	detection with AVX512BF16.
2020-06-24 07:59:17 -07:00
H.J. Lu
6c35d16a39 x86: Share _isa_names_table and use cpuinfo.h
Both driver-i386.c and libgcc use CPUID to detect the processor name
as well as available ISAs.  To detect the same processor or ISAs, the
same detection logic is duplicated in 2 places.  Sometimes only one place
was up to date or got it right.  Sometimes both places got it wrong.

1. Add common/config/i386/i386-isas.h to define _isa_names_table.
2. Use isa_names_table to auto-generate ISA command-line options.
3. Use isa_names_table to auto-generate __builtin_cpu_supports tests.
4. Use common/config/i386/cpuinfo.h to check available ISAs and detect
newer Intel processors in driver-i386.c and builtin_target.c.
5. Detection of AMD processors and older processors in driver-i386.c is
unchanged.

gcc/

	PR target/95843
	* common/config/i386/i386-isas.h: New file.  Extracted from
	gcc/config/i386/i386-builtins.c.
	(_isa_names_table): Add option.
	(ISA_NAMES_TABLE_START): New.
	(ISA_NAMES_TABLE_END): Likewise.
	(ISA_NAMES_TABLE_ENTRY): Likewise.
	(isa_names_table): Defined with ISA_NAMES_TABLE_START,
	ISA_NAMES_TABLE_END and ISA_NAMES_TABLE_ENTRY.  Add more ISAs
	from enum processor_features.
	* config/i386/driver-i386.c: Include
	"common/config/i386/cpuinfo.h" and
	"common/config/i386/i386-isas.h".
	(has_feature): New macro.
	(host_detect_local_cpu): Call cpu_indicator_init to get CPU
	features.  Use has_feature to detect processor features.  Call
	Call get_intel_cpu to get the newer Intel CPU name.  Use
	isa_names_table to generate command-line options.
	* config/i386/i386-builtins.c: Include
	"common/config/i386/i386-isas.h".
	(_arch_names_table): Removed.
	(isa_names_table): Likewise.

gcc/testsuite/

	PR target/95843
	* gcc.target/i386/builtin_target.c: Include <stdlib.h>,
	../../../common/config/i386/i386-cpuinfo.h and
	../../../common/config/i386/cpuinfo.h.
	(check_amd_cpu_model): Removed.
	(check_intel_cpu_model): Likewise,
	(CHECK___builtin_cpu_is): New.
	(gcc_assert): New.  Defined as assert.
	(gcc_unreachable): New.  Defined as abort.
	(inline): New.  Defined as empty.
	(ISA_NAMES_TABLE_START): Likewise.
	(ISA_NAMES_TABLE_END): Likewise.
	(ISA_NAMES_TABLE_ENTRY): New.
	(check_features): Include
	"../../../common/config/i386/i386-isas.h".
	(check_detailed): Call cpu_indicator_init.  Always call
	check_features.  Call get_amd_cpu instead of check_amd_cpu_model.
	Call get_intel_cpu instead of check_intel_cpu_model.
2020-06-24 07:57:27 -07:00
David Edelsohn
acba4660b4 Fix typo in ChangeLog 2020-06-24 10:10:56 -04:00
H.J. Lu
1890f2f0e2 x86: Move cpuinfo.h from libgcc to common/config/i386
Both x86 backend and libgcc define enum processor_features.  libgcc sets
enum processor_feature and x86 backend checks enum processor_feature.
They are very easy out of sync and it has happened multiple times in the
past.

1. Move cpuinfo.h from libgcc to common/config/i386 so that we can share
the same enum processor_features in x86 backend and libgcc.
2. Change __cpu_features2 to an array to support more processor features.
3. Add more processor features to enum processor_features.

gcc/

	PR target/95259
	* common/config/i386/cpuinfo.h: New file.
	(__processor_model): Moved from libgcc/config/i386/cpuinfo.h.
	(__processor_model2): New.
	(CHECK___builtin_cpu_is): New.  Defined as empty if not defined.
	(has_cpu_feature): New function.
	(set_cpu_feature): Likewise.
	(get_amd_cpu): Moved from libgcc/config/i386/cpuinfo.c.  Use
	CHECK___builtin_cpu_is.  Return AMD CPU name.
	(get_intel_cpu): Moved from libgcc/config/i386/cpuinfo.c.  Use
	Use CHECK___builtin_cpu_is.  Return Intel CPU name.
	(get_available_features): Moved from libgcc/config/i386/cpuinfo.c.
	Also check FEATURE_3DNOW, FEATURE_3DNOWP, FEATURE_ADX,
	FEATURE_ABM, FEATURE_CLDEMOTE, FEATURE_CLFLUSHOPT, FEATURE_CLWB,
	FEATURE_CLZERO, FEATURE_CMPXCHG16B, FEATURE_CMPXCHG8B,
	FEATURE_ENQCMD, FEATURE_F16C, FEATURE_FSGSBASE, FEATURE_FXSAVE,
	FEATURE_HLE, FEATURE_IBT, FEATURE_LAHF_LM, FEATURE_LM,
	FEATURE_LWP, FEATURE_LZCNT, FEATURE_MOVBE, FEATURE_MOVDIR64B,
	FEATURE_MOVDIRI, FEATURE_MWAITX, FEATURE_OSXSAVE,
	FEATURE_PCONFIG, FEATURE_PKU, FEATURE_PREFETCHWT1, FEATURE_PRFCHW,
	FEATURE_PTWRITE, FEATURE_RDPID, FEATURE_RDRND, FEATURE_RDSEED,
	FEATURE_RTM, FEATURE_SERIALIZE, FEATURE_SGX, FEATURE_SHA,
	FEATURE_SHSTK, FEATURE_TBM, FEATURE_TSXLDTRK, FEATURE_VAES,
	FEATURE_WAITPKG, FEATURE_WBNOINVD, FEATURE_XSAVE, FEATURE_XSAVEC,
	FEATURE_XSAVEOPT and FEATURE_XSAVES
	(cpu_indicator_init): Moved from libgcc/config/i386/cpuinfo.c.
	Also update cpu_model2.
	* common/config/i386/i386-cpuinfo.h (processor_vendor): Add
	Add VENDOR_CENTAUR, VENDOR_CYRIX and VENDOR_NSC.
	(processor_features): Moved from gcc/config/i386/i386-builtins.c.
	Renamed F_XXX to FEATURE_XXX.  Add FEATURE_3DNOW, FEATURE_3DNOWP,
	FEATURE_ADX, FEATURE_ABM, FEATURE_CLDEMOTE, FEATURE_CLFLUSHOPT,
	FEATURE_CLWB, FEATURE_CLZERO, FEATURE_CMPXCHG16B,
	FEATURE_CMPXCHG8B, FEATURE_ENQCMD, FEATURE_F16C,
	FEATURE_FSGSBASE, FEATURE_FXSAVE, FEATURE_HLE, FEATURE_IBT,
	FEATURE_LAHF_LM, FEATURE_LM, FEATURE_LWP, FEATURE_LZCNT,
	FEATURE_MOVBE, FEATURE_MOVDIR64B, FEATURE_MOVDIRI,
	FEATURE_MWAITX, FEATURE_OSXSAVE, FEATURE_PCONFIG,
	FEATURE_PKU, FEATURE_PREFETCHWT1, FEATURE_PRFCHW,
	FEATURE_PTWRITE, FEATURE_RDPID, FEATURE_RDRND, FEATURE_RDSEED,
	FEATURE_RTM, FEATURE_SERIALIZE, FEATURE_SGX, FEATURE_SHA,
	FEATURE_SHSTK, FEATURE_TBM, FEATURE_TSXLDTRK, FEATURE_VAES,
	FEATURE_WAITPKG, FEATURE_WBNOINVD, FEATURE_XSAVE, FEATURE_XSAVEC,
	FEATURE_XSAVEOPT, FEATURE_XSAVES and CPU_FEATURE_MAX.
	(SIZE_OF_CPU_FEATURES): New.
	* config/i386/i386-builtins.c (processor_features): Removed.
	(isa_names_table): Replace F_XXX with FEATURE_XXX.
	(fold_builtin_cpu): Change __cpu_features2 to an array.

libgcc/

	PR target/95259
	* config/i386/cpuinfo.c: Don't include "cpuinfo.h".  Include
	"common/config/i386/i386-cpuinfo.h" and
	"common/config/i386/cpuinfo.h".
	(__cpu_features2): Changed to array.
	(get_amd_cpu): Removed.
	(get_intel_cpu): Likewise.
	(get_available_features): Likewise.
	(__cpu_indicator_init): Call cpu_indicator_init.
	* config/i386/cpuinfo.h: Removed.
2020-06-24 05:47:34 -07:00
Jonathan Wakely
eb0ff770e2 libstdc++: Fix std::from_chars to ignore leading zeros in base 2
The parser for binary numbers returned an error if the entire string
contains more digits than the result type. Leading zeros should be
ignored.

libstdc++-v3/ChangeLog:

	* include/std/charconv (__from_chars_binary): Ignore leading zeros.
	* testsuite/20_util/from_chars/1.cc: Check "0x1" for all bases,
	not just 10 and 16.
	* testsuite/20_util/from_chars/3.cc: New test.
2020-06-24 12:35:59 +01:00
Jonathan Wakely
25920dd18a libstdc++: Fix warnings with -Wsystem-headers
libstdc++-v3/ChangeLog:

	* include/bits/stl_algobase.h (__find_if): Add FALLTHRU markers.
	* include/std/charconv (__detail::__to_chars): Avoid
	-Wsign-compare warning.
2020-06-24 12:34:17 +01:00
Jonathan Wakely
be50843754 libstdc++: Fix std::to_chars buffer overflow (PR 95851)
The __detail::__to_chars_2 function assumes it won't be called with zero
values. However, when the output buffer is empty the caller doesn't
handle zero values correctly, and calls __to_chars_2 with a zero value,
resulting in an overflow of the empty buffer.

The __detail::__to_chars_i function should just return immediately for
an empty buffer, and otherwise ensure zero values are handled properly.

libstdc++-v3/ChangeLog:

	PR libstdc++/95851
	* include/std/charconv (__to_chars_i): Check for zero-sized
	buffer unconditionally.
	* testsuite/20_util/to_chars/95851.cc: New test.
2020-06-24 12:28:13 +01:00
H.J. Lu
3fb2c2f4d0 x86: Fold arch_names_table into processor_alias_table
In i386-builtins.c, arch_names_table is used to to map architecture name
string to internal model.  A switch statement is used to map internal
processor name to architecture name string and internal priority.

model and priority are added to processor_alias_table so that a single
entry contains architecture name string, internal processor name,
internal model and internal priority.  6 entries are appended for
i386-builtins.c, which have special architecture name strings: amd,
amdfam10h, amdfam15h, amdfam17h, shanghai and istanbul, and pta_size is
adjusted to exclude them.  Entries which are not used by i386-builtins.c
have internal model 0.  P_PROC_DYNAMIC is added to internal priority to
make entries with dynamic architecture name string or priority.

	PR target/95842
	* common/config/i386/i386-common.c (processor_alias_table): Add
	processor model and priority to each entry.
	(pta_size): Updated with -6.
	(num_arch_names): New.
	* common/config/i386/i386-cpuinfo.h: New file.
	* config/i386/i386-builtins.c (feature_priority): Removed.
	(processor_model): Likewise.
	(_arch_names_table): Likewise.
	(arch_names_table): Likewise.
	(_isa_names_table): Replace P_ZERO with P_NONE.
	(get_builtin_code_for_version): Replace P_ZERO with P_NONE.  Use
	processor_alias_table.
	(fold_builtin_cpu): Replace arch_names_table with
	processor_alias_table.
	* config/i386/i386.h: Include "common/config/i386/i386-cpuinfo.h".
	(pta): Add model and priority.
	(num_arch_names): New.
2020-06-24 04:14:41 -07:00
Richard Biener
6924b5e6bd emit SLP vectorized loads earlier
This makes sure to emit SLP vectorized loads where the first scalar
load is.  This makes SLP dependence checking more powerful because
hoisting loads can use TBAA and it increases the freedom for
vector placement when there are constraints from live lanes.

Vectorized shifts block inserting vectorized stmts always after
vectorized defs because it ends up using the original scalar
operand even when the SLP graph indicates the shift operand
is vectorized (and we actually emit and cost those stmts).

vect_slp_analyze_and_verify_node_alignment shows we need alignment
for too many places, this is a temporary solution and my plan
is to have a single meta-info for a dataref group instead
(also getting rid of DR_GROUP_FIRST/NEXT_ELEMENT).

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

	* tree-vectorizer.h (vect_find_first_scalar_stmt_in_slp):
	Declare.
	* tree-vect-data-refs.c (vect_preserves_scalar_order_p):
	Simplify for new position of vectorized SLP loads.
	(vect_slp_analyze_node_dependences): Adjust for it.
	(vect_slp_analyze_and_verify_node_alignment): Compute alignment
	for the first stmts dataref.
	* tree-vect-slp.c (vect_find_first_scalar_stmt_in_slp): New.
	(vect_schedule_slp_instance): Emit loads before the
	first scalar stmt.
	* tree-vect-stmts.c (vectorizable_load): Do what the comment
	says and use vect_find_first_scalar_stmt_in_slp.
2020-06-24 13:00:02 +02:00
Richard Biener
d32708e796 tree-optimization/95856 fix vect_stmt_dominates_stmt_p at BB region boundary
The following adjusts vect_stmt_dominates_stmt_p to honor out-of-region
stmts we run into which have UID -1u.

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

	PR tree-optimization/95856
	* tree-vectorizer.c (vect_stmt_dominates_stmt_p): Honor
	region marker -1u.

	* gcc.dg/vect/pr95856.c: New testcase.
2020-06-24 12:58:45 +02:00
Jakub Jelinek
01e10b0ee7 fold-const: Fix A <= 0 ? A : -A folding [PR95810]
We folded A <= 0 ? A : -A into -ABS (A), which is for signed integral types
incorrect - can invoke on INT_MIN UB twice, once on ABS and once on its
negation.

The following patch fixes it by instead folding it to (type)-ABSU (A).

2020-06-24  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/95810
	* fold-const.c (fold_cond_expr_with_comparison): Optimize
	A <= 0 ? A : -A into (type)-absu(A) rather than -abs(A).

	* gcc.dg/ubsan/pr95810.c: New test.
2020-06-24 10:41:04 +02:00
Jakub Jelinek
f0008858de openmp: Fix two pastos in non-rect loop OpenMP lowering.
2020-06-24  Jakub Jelinek  <jakub@redhat.com>

	* omp-low.c (lower_omp_for): Fix two pastos.
2020-06-24 10:25:37 +02:00
Martin Liska
7f967bd2a7
options: Properly compare string options.
gcc/ChangeLog:

	* optc-save-gen.awk: Compare string options in cl_optimization_compare
	by strcmp.
2020-06-24 09:24:06 +02:00
GCC Administrator
4543acc874 Daily bump. 2020-06-24 00:16:31 +00:00
Aaron Sawdey
71237df0a0 Allow --with-cpu=power10
Update config.gcc so that we can use --with-cpu=power10.
Also remove "future" from the 64-bit check as Segher suggests.

	* config.gcc: Identify power10 as a 64-bit processor and as valid
	for --with-cpu and --with-tune.
2020-06-23 17:04:29 -05:00
Jason Merrill
6b161257f9 c++: Improve CTAD for aggregates [PR93976]
P2082R1 adjusted the rules for class template argument deduction for an
aggregate to better handle arrays and pack expansions.

gcc/cp/ChangeLog:

	PR c++/93976
	Implement C++20 P2082R1, Fixing CTAD for aggregates.
	* cp-tree.h (TPARMS_PRIMARY_TEMPLATE): Split out from...
	(DECL_PRIMARY_TEMPLATE): ...here.
	(builtin_guide_p): Declare.
	* decl.c (reshape_init_class): Handle bases of a template.
	(reshape_init_r): An array with dependent bound takes a single
	initializer.
	* pt.c (tsubst_default_argument): Shortcut {}.
	(unify_pack_expansion): Allow omitted arguments to trailing pack.
	(builtin_guide_p): New.
	(collect_ctor_idx_types): Give a trailing pack a {} default
	argument.  Handle arrays better.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp2a/class-deduction-aggr3.C: New test.
	* g++.dg/cpp2a/class-deduction-aggr4.C: New test.
2020-06-23 17:49:44 -04:00
Thomas Koenig
6f609029c7 Make forall statement in testsuite conforming.
The recent patch for dependency checking introduced one failing test
case for pointer assignments in a forall statement.  This test case
was invalid because of an interdependency in a forall statement.
This patch fixes that by removing that dependency.

gcc/testsuite/ChangeLog:

	* gfortran.fortran-torture/execute/forall_5.f90: Make forall
	statement conforming.
2020-06-23 21:59:47 +02:00
Iain Sandoe
788b962aa0 coroutines: Add a cleanup expression for g-r-o when needed [PR95477].
The PR reports that we fail to destroy the object initially created from
the get-return-object call.  Fixed by adding a cleanup when the DTOR is
non-trivial.  In addition, to meet the specific wording that the call to
get_return_object creates the glvalue for the return, we must construct
that in-place in the return object to avoid a second copy/move CTOR.

gcc/cp/ChangeLog:

	PR c++/95477
	* coroutines.cc (morph_fn_to_coro): Apply a cleanup to
	the get return object when the DTOR is non-trivial.

gcc/testsuite/ChangeLog:

	PR c++/95477
	* g++.dg/coroutines/pr95477.C: New test.
	* g++.dg/coroutines/void-gro-non-class-coro.C: New test.
2020-06-23 18:37:42 +01:00
David Edelsohn
17964eb3a0 build: Change conditional include and empty.mk to -include in Makefiles
GNU Make supports "-include" keyword to prevent warnings and errors due to
inclusion of non-existent files.  This patch changes gcc/ and libgcc/ to use
"-include" in place of the historical conditional inclusion and use of
empty.mk work-arounds.

gcc/ChangeLog

2020-06-23  David Edelsohn  <dje.gcc@gmail.com>

	* Makefile.in (LANG_MAKEFRAGS): Same.
	(tmake_file): Use -include.
	(xmake_file): Same.

libgcc/ChangeLog

2020-06-23  David Edelsohn  <dje.gcc@gmail.com>

	* Makefile.in: Remove uses of empty.mk. Use -include.
	* config/avr/t-avr: Use -include.
	* empty.mk: Delete.

libgcc/config/avr/libf7/ChangeLog

2020-06-23  David Edelsohn  <dje.gcc@gmail.com>

	* t-libf7: Same.
2020-06-23 17:28:09 +00:00
Nick Alcock
aec24341d0 libiberty, include: add bsearch_r
libctf wants a bsearch that takes a void * arg pointer to avoid a
nonportable use of __thread.

bsearch_r is required, not optional, at this point because as far as I
can see this obvious-sounding function is not implemented by anyone's
libc.  We can easily move it to AC_LIBOBJ later if it proves necessary
to do so.

include/
	* libiberty.h (bsearch_r): New.
libiberty/
	* bsearch_r.c: New file.
	* Makefile.in (CFILES): Add bsearch_r.c.
	(REQUIRED_OFILES): Add bsearch_r.o.
	* functions.texi: Regenerate.
2020-06-23 18:39:38 +02:00
Eric Botcazou
855bb998c9 Remove superfluous space
gcc/ada/ChangeLog:
	* gcc-interface/utils2.c (build_binary_op): Remove space.
2020-06-23 18:35:49 +02:00
Eric Botcazou
d63fbcf800 Fix memory corruption with vector and variant record
The problem is that Has_Constrained_Partial_View must be tested on the
base type of the designated type of an allocator.

gcc/ada/ChangeLog:
	* gcc-interface/trans.c (gnat_to_gnu) <N_Allocator>: Minor tweaks.
	Call Has_Constrained_Partial_View on base type of designated type.
2020-06-23 18:35:48 +02:00
Eric Botcazou
b523ee1f4b Emit debug info for integral variables first
This makes it possible for global dynamic types to reference the DIE of
these integral variables.

gcc/ada/ChangeLog:
	* gcc-interface/utils.c (gnat_write_global_declarations): Output
	integral global variables first and the imported functions later.
2020-06-23 18:35:47 +02:00
Eric Botcazou
ce36abee27 Minor tweak to elaborate_expression_1
gcc/ada/ChangeLog:
	* gcc-interface/decl.c (elaborate_expression_1): When GNAT encodings
	are not used, do not create a variable for debug info purposes if
	the expression is itself a user-declared variable.
2020-06-23 18:35:47 +02:00
Eric Botcazou
5bdd063b9d Streamline implementation of renaming in gigi
The main changes are 1) the bulk of the implementation is put back entirely
in gnat_to_gnu_entity and 2) the handling of lvalues is unified, i.e. it no
longer depends on the Materialize_Entity flag being present on the entity.

gcc/ada/ChangeLog:
	* gcc-interface/ada-tree.h (DECL_RENAMED_OBJECT): Delete.
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Always use
	the stabilized reference directly for renaming and create a variable
	pointing to it separately if requested.
	* gcc-interface/misc.c (gnat_print_decl): Adjust for deletion.
	* gcc-interface/trans.c (Identifier_to_gnu): Likewise.
	(gnat_to_gnu) <N_Object_Renaming_Declaration>:
	Do not deal with side-effects here.
	<N_Exception_Renaming_Declaration>: Likewise.
2020-06-23 18:35:46 +02:00
Eric Botcazou
cd42cdc225 Minor cleanup in elaborate_expression
gcc/ada/ChangeLog:
	* gcc-interface/decl.c (elaborate_expression): Replace calls to
	Is_OK_Static_Expression with Compile_Time_Known_Value.
2020-06-23 18:35:46 +02:00
Eric Botcazou
fa0588dbec Emit user subtypes with -fgnat-encodings=minimal
This changes the compiler to emit debug info for user-defined subtypes
with -fgnat-encodings=minimal, as they might be needed by the debugger.

gcc/ada/ChangeLog:
	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Set
	debug type to the base type and only if the subtype is artificial.
2020-06-23 18:35:45 +02:00
Michael Meissner
d94d571bf0 Remove unintended checkin
2020-06-23  Michael Meissner  <meissner@linux.ibm.com>

	* REVISION: Delete file meant for a private branch.
2020-06-23 12:01:29 -04:00
Eric Botcazou
95c9c1c0dc Minor adjustment in assignment case
gcc/ada/ChangeLog:
	* gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Do
	not test Is_Bit_Packed_Array in the memset path.
2020-06-23 17:20:27 +02:00
Andre Simoes Dias Vieira
5f426554fd arm: PR target/95646: Do not clobber callee saved registers with CMSE
As reported in bugzilla when the -mcmse option is used while compiling for size
(-Os) with a thumb-1 target the generated code will clear the registers r7-r10.
These however are callee saved and should be preserved accross ABI boundaries.
The reason this happens is because these registers are made "fixed" when
optimising for size with Thumb-1 in a way to make sure they are not used, as
pushing and popping hi-registers requires extra moves to and from LO_REGS.

To fix this, this patch uses 'callee_saved_reg_p', which accounts for this
optimisation, instead of 'call_used_or_fixed_reg_p'. Be aware of
'callee_saved_reg_p''s definition, as it does still take call used registers
into account, which aren't callee_saved in my opinion, so it is a rather
misnoemer, works in our advantage here though as it does exactly what we need.

Regression tested on arm-none-eabi.

Is this OK for trunk? (Will eventually backport to previous versions if stable.)

gcc/ChangeLog:
2020-06-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	PR target/95646
	* config/arm/arm.c: (cmse_nonsecure_entry_clear_before_return): Use
	'callee_saved_reg_p' instead of 'calL_used_or_fixed_reg_p'.

gcc/testsuite/ChangeLog:
2020-06-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	PR target/95646
	* gcc.target/arm/pr95646.c: New test.
2020-06-23 15:23:45 +01:00
Jonathan Wakely
b81d4f1e3d libstdc++: Adjust std::from_chars negative tests
Also test with an enumeration type. Move the dg-error directives outside
the #if block, because DejaGnu would process them whether or not wchar_t
support is present.

libstdc++-v3/ChangeLog:

	* testsuite/20_util/from_chars/1_c++20_neg.cc: Check enumeration
	type.
	* testsuite/20_util/from_chars/1_neg.cc: Likewise. Move dg-error
	directives outside preprocessor condition.
2020-06-23 12:20:26 +01:00
Alexandre Oliva
efc16503ca handle dumpbase in offloading, adjust testsuite
Pass dumpbase on to mkoffloads and their offload-target compiler runs,
using different suffixes for different offloading targets.
Obey -save-temps in naming temporary files while at that.

Adjust the testsuite offload dump scanning machinery to look for dump
files named under the new conventions, iterating internally over all
configured offload targets, or recognizing libgomp's testsuite's own
iteration.


for  gcc/ChangeLog

	* collect-utils.h (dumppfx): New.
	* collect-utils.c (dumppfx): Likewise.
	* lto-wrapper.c (run_gcc): Set global dumppfx.
	(compile_offload_image): Pass a -dumpbase on to mkoffload.
	* config/nvptx/mkoffload.c (ptx_dumpbase): New.
	(main): Handle incoming -dumpbase.  Set ptx_dumpbase.  Obey
	save_temps.
	(compile_native): Pass -dumpbase et al to compiler.
	* config/gcn/mkoffload.c (gcn_dumpbase): New.
	(main): Handle incoming -dumpbase.  Set gcn_dumpbase.  Obey
	save_temps.  Pass -dumpbase et al to offload target compiler.
	(compile_native): Pass -dumpbase et al to compiler.

for  gcc/testsuite/ChangeLog

	* lib/scanoffload.exp: New.
	* lib/scanoffloadrtl.exp: Load it.  Replace ".o" with ""
	globally, and use scanoffload's scoff wrapper to fill it in.
	* lib/scanoffloadtree.exp: Likewise.

for libgomp/ChangeLog

	* testsuite/lib/libgomp.exp: Load gcc lib scanoffload.exp.
	* testsuite/lib/libgomp-dg.exp: Drop now-obsolete -save-temps.
2020-06-23 06:31:18 -03:00
Jonathan Wakely
c98fc4eb3a libstdc++: Implement P1972R2 changes to std::variant (PR 95832)
G++ implements P1972R2 since r11-1597-0ca22d027ecc and so we no longer
need the P0608R3 special case to prevent narrowing conversions to bool.

Since non-GNU compilers don't necessarily implment P1972R2 yet, this
may cause a regression for those compilers. There is no feature-test
macro we can use to detect it though, so we'll have to live with it.

libstdc++-v3/ChangeLog:

	PR libstdc++/95832
	* include/std/variant (__detail::__variant::_Build_FUN): Remove
	partial specialization to prevent narrowing conversions to bool.
	* testsuite/20_util/variant/compile.cc: Test non-narrowing
	conversions to bool.
	* testsuite/20_util/variant/run.cc: Likewise.
2020-06-23 10:25:26 +01:00
Jonathan Wakely
a2c5150e40 libstdc++: Regenerate makefiles
libstdc++-v3/ChangeLog:

	* doc/Makefile.in: Regenerate.
	* include/Makefile.in: Regenerate.
	* libsupc++/Makefile.in: Regenerate.
	* po/Makefile.in: Regenerate.
	* python/Makefile.in: Regenerate.
	* src/Makefile.in: Regenerate.
	* src/c++11/Makefile.in: Regenerate.
	* src/c++17/Makefile.in: Regenerate.
	* src/c++98/Makefile.in: Regenerate.
	* src/filesystem/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.
2020-06-23 07:59:40 +01:00
Michael Meissner
418b97a3f6 Add REVISION
gcc/
2020-06-23  Michael Meissner  <meissner@linux.ibm.com>

	* REVISION: New file.
2020-06-23 02:35:13 -04:00
Thomas Koenig
abcde0a658 Handle AR_FULL vs. AR_FULL in dependency checking.
Previously, handling of full vs. full references failed to take
AR_FULL vs. AR_FULL into account.  A change in dependency
checking in gcc 10 created a code path that could lead there;
with this patch, this is now correctly handled.

gcc/fortran/ChangeLog:

2020-06-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/95812
	* dependency.c (ref_same_as_full_array): Handle case of AR_FULL
	vs. AR_FULL.

gcc/testsuite/ChangeLog:

2020-06-23  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/95812
	* gfortran.dg/dependency_59.f90: New test.
2020-06-23 08:14:51 +02:00
Mark Eggleston
384aa89025 Fortran : ICE in gfc_validate_kind PR95586
Report syntax error for invalid letter-spec in IMPLICIT statements
for derived types and not an ICE.

Original patch by Steve Kargl.  Added test cases based on those
provided by G. Steinmetz  in the PR.

2020-06-23  Steven G. Kargl  <kargl@gcc.gnu.org>

gcc/fortran/

	PR fortran/95586
	* decl.c (gfc_match_implicit): Only perform else branch if
	the type spect is not BT_DERIVED.

2020-06-23  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

	PR fortran/95586
	* gfortran.dg/pr95586_1.f90: New test.
	* gfortran.dg/pr95586_2.f90: New test.
2020-06-23 07:07:23 +01:00
GCC Administrator
605a8f3bbc Daily bump. 2020-06-23 00:16:23 +00:00
David Edelsohn
0164e59835 build: Use -include instead of conditional include.
Automake and GNU Make both use the endif keyword, which conflicts and
elicits an error for matching if/ifdef and endif.

This patch changes the conditional include to use "-include" to prevent
a warning about a possible empty tmake_file.

libgomp/ChangeLog

2020-06-22  David Edelsohn  <dje.gcc@gmail.com>

	* Makefile.am: Use -include.
	* Makefile.in: Regenerate.

libatomic/ChangeLog

2020-06-22  David Edelsohn  <dje.gcc@gmail.com>

	* Makefile.am: Use -include.
	* Makefile.in: Regenerate.

libstdc++-v3/ChangeLog

2020-06-22  David Edelsohn  <dje.gcc@gmail.com>

	* Makefile.am: Use -include.
	* Makefile.in: Regenerate.

libgfortran/ChangeLog

2020-06-22  David Edelsohn  <dje.gcc@gmail.com>

	* Makefile.am: Use -include.
	* Makefile.in: Regenerate.
2020-06-22 21:31:48 +00:00
Segher Boessenkool
67f6ef3b38 rs6000: Testsuite changes to go with the previous commit
The "sanity checker" thinks it knows better than maintainers, and there
is no override.

2020-06-22  Segher Boessenkool  <segher@kernel.crashing.org>

gcc/testsuite/ChangeLog:

	* gcc.target/powerpc/cfuged-0.c: I protest.
	* gcc.target/powerpc/cfuged-1.c: I protest.
	* gcc.target/powerpc/clone3.c: I protest.
	* gcc.target/powerpc/cntlzdm-0.c: I protest.
	* gcc.target/powerpc/cntlzdm-1.c: I protest.
	* gcc.target/powerpc/cnttzdm-0.c: I protest.
	* gcc.target/powerpc/cnttzdm-1.c: I protest.
	* gcc.target/powerpc/cpu-future.c: I protest.
	* gcc.target/powerpc/dg-future-0.c: I protest.
	* gcc.target/powerpc/dg-future-1.c: I protest.
	* gcc.target/powerpc/localentry-1.c: I protest.
	* gcc.target/powerpc/localentry-detect-1.c: I protest.
	* gcc.target/powerpc/mma-builtin-1.c: I protest.
	* gcc.target/powerpc/mma-builtin-2.c: I protest.
	* gcc.target/powerpc/mma-builtin-3.c: I protest.
	* gcc.target/powerpc/mma-builtin-4.c: I protest.
	* gcc.target/powerpc/mma-builtin-5.c: I protest.
	* gcc.target/powerpc/mma-builtin-6.c: I protest.
	* gcc.target/powerpc/notoc-direct-1.c: I protest.
	* gcc.target/powerpc/pcrel-sibcall-1.c: I protest.
	* gcc.target/powerpc/pdep-0.c: I protest.
	* gcc.target/powerpc/pdep-1.c: I protest.
	* gcc.target/powerpc/pextd-0.c: I protest.
	* gcc.target/powerpc/pextd-1.c: I protest.
	* gcc.target/powerpc/pr93122.c: I protest.
	* gcc.target/powerpc/pr94740.c: I protest.
	* gcc.target/powerpc/setbceq.c: I protest.
	* gcc.target/powerpc/setbcge.c: I protest.
	* gcc.target/powerpc/setbcgt.c: I protest.
	* gcc.target/powerpc/setbcle.c: I protest.
	* gcc.target/powerpc/setbclt.c: I protest.
	* gcc.target/powerpc/setbcne.c: I protest.
	* gcc.target/powerpc/setnbceq.c: I protest.
	* gcc.target/powerpc/setnbcge.c: I protest.
	* gcc.target/powerpc/setnbcgt.c: I protest.
	* gcc.target/powerpc/setnbcle.c: I protest.
	* gcc.target/powerpc/setnbclt.c: I protest.
	* gcc.target/powerpc/setnbcne.c: I protest.
	* gcc.target/powerpc/vec-cfuged-0.c: I protest.
	* gcc.target/powerpc/vec-cfuged-1.c: I protest.
	* gcc.target/powerpc/vec-clrl-0.c: I protest.
	* gcc.target/powerpc/vec-clrl-1.c: I protest.
	* gcc.target/powerpc/vec-clrl-2.c: I protest.
	* gcc.target/powerpc/vec-clrl-3.c: I protest.
	* gcc.target/powerpc/vec-clrr-0.c: I protest.
	* gcc.target/powerpc/vec-clrr-1.c: I protest.
	* gcc.target/powerpc/vec-clrr-2.c: I protest.
	* gcc.target/powerpc/vec-clrr-3.c: I protest.
	* gcc.target/powerpc/vec-cntlzm-0.c: I protest.
	* gcc.target/powerpc/vec-cntlzm-1.c: I protest.
	* gcc.target/powerpc/vec-cnttzm-0.c: I protest.
	* gcc.target/powerpc/vec-cnttzm-1.c: I protest.
	* gcc.target/powerpc/vec-extracth-0.c: I protest.
	* gcc.target/powerpc/vec-extracth-1.c: I protest.
	* gcc.target/powerpc/vec-extracth-2.c: I protest.
	* gcc.target/powerpc/vec-extracth-3.c: I protest.
	* gcc.target/powerpc/vec-extracth-4.c: I protest.
	* gcc.target/powerpc/vec-extracth-5.c: I protest.
	* gcc.target/powerpc/vec-extracth-6.c: I protest.
	* gcc.target/powerpc/vec-extracth-7.c: I protest.
	* gcc.target/powerpc/vec-extracth-be-0.c: I protest.
	* gcc.target/powerpc/vec-extracth-be-1.c: I protest.
	* gcc.target/powerpc/vec-extracth-be-2.c: I protest.
	* gcc.target/powerpc/vec-extracth-be-3.c: I protest.
	* gcc.target/powerpc/vec-extractl-0.c: I protest.
	* gcc.target/powerpc/vec-extractl-1.c: I protest.
	* gcc.target/powerpc/vec-extractl-2.c: I protest.
	* gcc.target/powerpc/vec-extractl-3.c: I protest.
	* gcc.target/powerpc/vec-extractl-4.c: I protest.
	* gcc.target/powerpc/vec-extractl-5.c: I protest.
	* gcc.target/powerpc/vec-extractl-6.c: I protest.
	* gcc.target/powerpc/vec-extractl-7.c: I protest.
	* gcc.target/powerpc/vec-extractl-be-0.c: I protest.
	* gcc.target/powerpc/vec-extractl-be-1.c: I protest.
	* gcc.target/powerpc/vec-extractl-be-2.c: I protest.
	* gcc.target/powerpc/vec-extractl-be-3.c: I protest.
	* gcc.target/powerpc/vec-gnb-0.c: I protest.
	* gcc.target/powerpc/vec-gnb-1.c: I protest.
	* gcc.target/powerpc/vec-gnb-2.c: I protest.
	* gcc.target/powerpc/vec-pdep-0.c: I protest.
	* gcc.target/powerpc/vec-pdep-1.c: I protest.
	* gcc.target/powerpc/vec-pext-0.c: I protest.
	* gcc.target/powerpc/vec-pext-1.c: I protest.
	* gcc.target/powerpc/vec-stril-0.c: I protest.
	* gcc.target/powerpc/vec-stril-1.c: I protest.
	* gcc.target/powerpc/vec-stril-10.c: I protest.
	* gcc.target/powerpc/vec-stril-11.c: I protest.
	* gcc.target/powerpc/vec-stril-12.c: I protest.
	* gcc.target/powerpc/vec-stril-13.c: I protest.
	* gcc.target/powerpc/vec-stril-14.c: I protest.
	* gcc.target/powerpc/vec-stril-15.c: I protest.
	* gcc.target/powerpc/vec-stril-16.c: I protest.
	* gcc.target/powerpc/vec-stril-17.c: I protest.
	* gcc.target/powerpc/vec-stril-18.c: I protest.
	* gcc.target/powerpc/vec-stril-19.c: I protest.
	* gcc.target/powerpc/vec-stril-2.c: I protest.
	* gcc.target/powerpc/vec-stril-20.c: I protest.
	* gcc.target/powerpc/vec-stril-21.c: I protest.
	* gcc.target/powerpc/vec-stril-22.c: I protest.
	* gcc.target/powerpc/vec-stril-23.c: I protest.
	* gcc.target/powerpc/vec-stril-3.c: I protest.
	* gcc.target/powerpc/vec-stril-4.c: I protest.
	* gcc.target/powerpc/vec-stril-5.c: I protest.
	* gcc.target/powerpc/vec-stril-6.c: I protest.
	* gcc.target/powerpc/vec-stril-7.c: I protest.
	* gcc.target/powerpc/vec-stril-8.c: I protest.
	* gcc.target/powerpc/vec-stril-9.c: I protest.
	* gcc.target/powerpc/vec-stril_p-0.c: I protest.
	* gcc.target/powerpc/vec-stril_p-1.c: I protest.
	* gcc.target/powerpc/vec-stril_p-10.c: I protest.
	* gcc.target/powerpc/vec-stril_p-11.c: I protest.
	* gcc.target/powerpc/vec-stril_p-2.c: I protest.
	* gcc.target/powerpc/vec-stril_p-3.c: I protest.
	* gcc.target/powerpc/vec-stril_p-4.c: I protest.
	* gcc.target/powerpc/vec-stril_p-5.c: I protest.
	* gcc.target/powerpc/vec-stril_p-6.c: I protest.
	* gcc.target/powerpc/vec-stril_p-7.c: I protest.
	* gcc.target/powerpc/vec-stril_p-8.c: I protest.
	* gcc.target/powerpc/vec-stril_p-9.c: I protest.
	* gcc.target/powerpc/vec-strir-0.c: I protest.
	* gcc.target/powerpc/vec-strir-1.c: I protest.
	* gcc.target/powerpc/vec-strir-10.c: I protest.
	* gcc.target/powerpc/vec-strir-11.c: I protest.
	* gcc.target/powerpc/vec-strir-12.c: I protest.
	* gcc.target/powerpc/vec-strir-13.c: I protest.
	* gcc.target/powerpc/vec-strir-14.c: I protest.
	* gcc.target/powerpc/vec-strir-15.c: I protest.
	* gcc.target/powerpc/vec-strir-16.c: I protest.
	* gcc.target/powerpc/vec-strir-17.c: I protest.
	* gcc.target/powerpc/vec-strir-18.c: I protest.
	* gcc.target/powerpc/vec-strir-19.c: I protest.
	* gcc.target/powerpc/vec-strir-2.c: I protest.
	* gcc.target/powerpc/vec-strir-20.c: I protest.
	* gcc.target/powerpc/vec-strir-21.c: I protest.
	* gcc.target/powerpc/vec-strir-22.c: I protest.
	* gcc.target/powerpc/vec-strir-23.c: I protest.
	* gcc.target/powerpc/vec-strir-3.c: I protest.
	* gcc.target/powerpc/vec-strir-4.c: I protest.
	* gcc.target/powerpc/vec-strir-5.c: I protest.
	* gcc.target/powerpc/vec-strir-6.c: I protest.
	* gcc.target/powerpc/vec-strir-7.c: I protest.
	* gcc.target/powerpc/vec-strir-8.c: I protest.
	* gcc.target/powerpc/vec-strir-9.c: I protest.
	* gcc.target/powerpc/vec-strir_p-0.c: I protest.
	* gcc.target/powerpc/vec-strir_p-1.c: I protest.
	* gcc.target/powerpc/vec-strir_p-10.c: I protest.
	* gcc.target/powerpc/vec-strir_p-11.c: I protest.
	* gcc.target/powerpc/vec-strir_p-2.c: I protest.
	* gcc.target/powerpc/vec-strir_p-3.c: I protest.
	* gcc.target/powerpc/vec-strir_p-4.c: I protest.
	* gcc.target/powerpc/vec-strir_p-5.c: I protest.
	* gcc.target/powerpc/vec-strir_p-6.c: I protest.
	* gcc.target/powerpc/vec-strir_p-7.c: I protest.
	* gcc.target/powerpc/vec-strir_p-8.c: I protest.
	* gcc.target/powerpc/vec-strir_p-9.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-0.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-1.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-10.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-2.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-3.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-4.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-5.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-6.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-7.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-8.c: I protest.
	* gcc.target/powerpc/vec-ternarylogic-9.c: I protest.
	* gcc.target/powerpc/xxgenpc-runnable.c: I protest.
	* lib/target-supports.exp: Stuff.
2020-06-22 21:09:41 +00:00
Segher Boessenkool
5d9d0c9458 rs6000: Rename future to power10
This renames the command line options, the internal names, and mentions
in the comments, from "future" to "power10".  Also, the file "future.md"
is renamed.

The predefined user macro _ARCH_PWR_FUTURE is renamed to _ARCH_PWR10.

"Future architecture" is renamed to "ISA 3.1".

2020-06-22  Segher Boessenkool  <segher@kernel.crashing.org>

gcc/ChangeLog:

	* config/rs6000/altivec.h: Use _ARCH_PWR10, not _ARCH_PWR_FUTURE.
	Update comment for ISA 3.1.
	* config/rs6000/altivec.md: Use TARGET_POWER10, not TARGET_FUTURE.
	* config/rs6000/driver-rs6000.c (asm_names): Use -mpwr10 for power10
	on AIX, and -mpower10 elsewhere.
	* config/rs6000/future.md: Delete.
	* config/rs6000/linux64.h: Update comments.  Use TARGET_POWER10, not
	TARGET_FUTURE.
	* config/rs6000/power10.md: New file.
	* config/rs6000/ppc-auxv.h: Use PPC_PLATFORM_POWER10, not
	PPC_PLATFORM_FUTURE.
	* config/rs6000/rs6000-builtin.def: Update comments.  Use BU_P10V_*
	names instead of BU_FUTURE_V_* names.  Use RS6000_BTM_P10 instead of
	RS6000_BTM_FUTURE.  Use P10_BUILTIN_* instead of FUTURE_BUILTIN_*.
	Use BU_P10_* instead of BU_FUTURE_*.
	* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Define
	_ARCH_PWR10 instead of _ARCH_PWR_FUTURE.
	(altivec_resolve_overloaded_builtin): Use P10_BUILTIN_VEC_XXEVAL, not
	FUTURE_BUILTIN_VEC_XXEVAL.
	* config/rs6000/rs6000-call.c: Use P10_BUILTIN_*, not FUTURE_BUILTIN_*.
	Update compiler messages.
	* config/rs6000/rs6000-cpus.def: Update comments.  Use ISA_3_1_*, not
	ISA_FUTURE_*.  Use OPTION_MASK_POWER10, not OPTION_MASK_FUTURE.
	* config/rs6000/rs6000-opts.h: Use PROCESSOR_POWER10, not
	PROCESSOR_FUTURE.
	* config/rs6000/rs6000-string.c: Ditto.
	* config/rs6000/rs6000-tables.opt (rs6000_cpu_opt_value): Use "power10"
	instead of "future", reorder it to right after "power9".
	* config/rs6000/rs6000.c: Update comments.  Use OPTION_MASK_POWER10,
	not OPTION_MASK_FUTURE.  Use TARGET_POWER10, not TARGET_FUTURE.  Use
	RS6000_BTM_P10, not RS6000_BTM_FUTURE.  Update compiler messages.
	Use PROCESSOR_POWER10, not PROCESSOR_FUTURE.  Use ISA_3_1_MASKS_SERVER,
	not ISA_FUTURE_MASKS_SERVER.
	(rs6000_opt_masks): Use "power10" instead of "future".
	(rs6000_builtin_mask_names): Ditto.
	(rs6000_disable_incompatible_switches): Ditto.
	* config/rs6000/rs6000.h: Use -mpower10, not -mfuture.  Use
	-mcpu=power10, not -mcpu=future.  Use MASK_POWER10, not MASK_FUTURE.
	Use OPTION_MASK_POWER10, not OPTION_MASK_FUTURE.  Use RS6000_BTM_P10,
	not RS6000_BTM_FUTURE.
	* config/rs6000/rs6000.md: Use "power10", not "future".  Use
	TARGET_POWER10, not TARGET_FUTURE.  Include "power10.md", not
	"future.md".
	* config/rs6000/rs6000.opt (mfuture): Delete.
	(mpower10): New.
	* config/rs6000/t-rs6000: Use "power10.md", not "future.md".
	* config/rs6000/vsx.md: Use TARGET_POWER10, not TARGET_FUTURE.
2020-06-22 20:57:19 +00:00
Joseph Myers
84f0f9a19a Update gcc sv.po.
* sv.po: Update.
2020-06-22 20:52:57 +00:00
Richard Sandiford
20a2e6afa8 recog: Restore builds with Clang
Using parameter packs with function typedefs tripped a Clang bug
in which the packs were not being expanded correctly:

  https://bugs.llvm.org/show_bug.cgi?id=46377

Work around that by going back to the decltype approach, but adding
a cast to void to suppress a warning about unused values.

2020-06-22  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* coretypes.h (first_type): Delete.
	* recog.h (insn_gen_fn::operator()): Go back to using a decltype.
2020-06-22 20:15:36 +01:00
Srinath Parvathaneni
99abb146fd arm: Fix the failing mve scalar shift execution tests.
In GCC testsuite the MVE scalar shift execution tests (mve_scalar_shifts[1-4].c) are failings
because of executing them on target hardware which doesn't support MVE instructions. This patch
restricts those tests to execute only on target hardware that support MVE instructions.

2020-06-22  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

gcc/
	* doc/sourcebuild.texi (arm_v8_1m_mve_fp_ok): Add item.
	(arm_mve_hw): Likewise.

gcc/testsuite/
	* gcc.target/arm/mve/intrinsics/mve_scalar_shifts1.c: Modify.
	* gcc.target/arm/mve/intrinsics/mve_scalar_shifts2.c: Likewise.
	* gcc.target/arm/mve/intrinsics/mve_scalar_shifts3.c: Likewise.
	* gcc.target/arm/mve/intrinsics/mve_scalar_shifts4.c: Likewise.
	* lib/target-supports.exp (check_effective_target_arm_mve_hw): Define.
2020-06-22 17:13:05 +01:00
Mark Eggleston
647340c92a Fortran : ICE in resolve_fl_procedure PR95708
Now issues an error "Intrinsic procedure 'num_images' not
allowed in PROCEDURE" instead of an ICE.

2020-06-22  Steven G. Kargl  <kargl@gcc.gnu.org>

gcc/fortran/

	PR fortran/95708
	* intrinsic.c (add_functions): Replace CLASS_INQUIRY with
	CLASS_TRANSFORMATIONAL for intrinsic num_images.
	(make_generic): Replace ACTUAL_NO with ACTUAL_YES for
	intrinsic team_number.
	* resolve.c (resolve_fl_procedure): Check pointer ts.u.derived
	exists before using it.

2020-06-22  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

	PR fortran/95708
	* gfortran.dg/pr95708.f90: New test.
2020-06-22 16:28:55 +01:00
H.J. Lu
9302421e71 x86: Skip EXT_REX_SSE_REG_P for vzeroupper optimization
Skip EXT_REX_SSE_REG_P for vzeroupper optimization since upper 16 vector
registers don't trigger SSE <-> AVX transition penalty.

gcc/

	PR target/95791
	* config/i386/i386.c (ix86_dirflag_mode_needed): Skip
	EXT_REX_SSE_REG_P.

gcc/testsuite/

	PR target/95791
	* gcc.target/i386/pr95791.c: New test.
2020-06-22 05:18:47 -07:00
Mark Eggleston
d9aed5f1cc Fortran : ICE in gfc_check_reshape PR95585
Issue an error where an array is used before its definition
instead of an ICE.

2020-06-22  Steven G. Kargl  <kargl@gcc.gnu.org>

gcc/fortran/

	PR fortran/95585
	* check.c (gfc_check_reshape): Add check for a value when
	the symbol has an attribute flavor FL_PARAMETER.

2020-06-22  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

	PR fortran/95585
	* gfortran.dg/pr95585.f90: New test.
2020-06-22 13:14:44 +01:00