Andrew MacLeod [Fri, 16 Oct 2020 19:06:44 +0000 (15:06 -0400)]
 
Don't invoke range_of_expr multiple times.
Call evrp_folder::range_of_expr directly so we dont end up calling
hybrid_folder::range_of_expr and doing double lookups/comparisons.
	* gimple-ssa-evrp.c (hybrid_folder::value_on_edge): Call
	evrp_folder::value_of_expr directly.
	(hybrid_folder::value_of_stmt): Ditto.
Andrew MacLeod [Fri, 16 Oct 2020 19:02:42 +0000 (15:02 -0400)]
 
Don't assert on a negative shift.
Don't assert, simply Return false for negative shifts as we can't tell
anything about the operand.
	PR tree-optimization/97462
	gcc/
	* range-op.cc (operator_lshift::op1_range): Don't trap on negative
	shifts.
	gcc/testsuite/
	* gcc.dg/pr97462.c: New file.
Nathan Sidwell [Fri, 16 Oct 2020 17:22:16 +0000 (10:22 -0700)]
 
c++: Fix nullptr deref [pr97460[
My changes to friend handling meant that there are now cases where a
friend doesn't get a lang-specific object.  So we need to check there
is one before looking inside it.
	PR c++/97460
	gcc/cp/
	* pt.c (push_template_decl): Check DECL_LANG_SPECIFIC in friend
	case.
	gcc/testsuite/
	* g++.dg/template/pr97460.C: New.
Nathan Sidwell [Fri, 16 Oct 2020 16:22:22 +0000 (09:22 -0700)]
 
c++: Fix null deref at EOF [PR96258]
cp_parser_declaration peeks at 1 or 2 tokens, when I changed it not to
peek past EOF, I set the second token to NULL.  But there are paths
through the function that just look at the second token.  Fixed by
setting that token to EOF rather than NULL in this case.
	PR c++/96258
	gcc/cp/
	* parser.c (cp_parser_declaration): Make token2 point to EOF if
	token1 was EOF.
	gcc/testsuite/
	* g++.dg/parse/pr96258.C: New.
Rasmus Villemoes [Fri, 2 Oct 2020 15:31:58 +0000 (15:31 +0000)]
 
Inhibit support for C++0x threads on VxWorks < 6
As for condition variables, the C++0x threads support relies on
VxWorks entry points not available in VxWorks versions prior to 6.
We just expose absence of support for C++0x threads on such systems.
2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
libgcc/
	* config/gthr-vxworks.h: Condition the ___GTHREADS_CXX0X
	section on VxWorks >= 6.
	* config/gthr-vxworks-thread.c: Condition the entire
	implementation on __GTHREAD_CXX0X.
Rasmus Villemoes [Fri, 2 Oct 2020 15:26:26 +0000 (15:26 +0000)]
 
Inhibit support for gthread condvars on VxWorks < 6
The condition variables support relies on kernel entry points
to enforce critical aspects of it's expected behavior.
Some of these entry points are not available prior to VxWorks 6,
so we just expose absence of support for condition variables on
such systems.
2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
libgcc/
	* config/gthr-vxworks.h: Condition the __GTHREAD_HAS_COND
	section on VxWorks >= 6.
	* config/gthr-vxworks-cond.c: Condition the entire
	implementation on __GTHREAD_HAS_COND.
Rasmus Villemoes [Fri, 2 Oct 2020 13:27:19 +0000 (13:27 +0000)]
 
Add missing #include <taskLib.h> in gthr-vxworks.c
This fixes an oversight and addresses a few build time warnings.
2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
libgcc/
	* config/gthr-vxworks.c: #include <taskLib.h>.
Rasmus Villemoes [Fri, 2 Oct 2020 13:03:26 +0000 (13:03 +0000)]
 
Fix leftover _VXW_PRE_69 in gthr-vxworks.h
2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
libgcc/
	* config/gthr-vxworks.h: Rewrite remaining occurrence
	of _VXW_PRE_69 as _VXWORKS_PRE(6,9).
Rasmus Villemoes [Fri, 2 Oct 2020 12:58:45 +0000 (12:58 +0000)]
 
Stub out VX_ENTER_TLS_DTOR for VxWorks != 6
As of today, the __gthread_enter/leave entry points are
only meaningful on VxWorks 6. Refactor the VX_ENTER_TLS_DTOR
macros accordingly.
2020-10-15  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
libgcc/
	* config/gthr-vxworks-tls.c (VX_ENTER_TLS_DTOR): Nil
	except on VxWorks 6.
Co-authored-by:  Olivier Hainque  <hainque@adacore.com>
Olivier Hainque [Thu, 15 Oct 2020 17:39:05 +0000 (17:39 +0000)]
 
Fix the vxworks crtstuff handling of kernel/rtp variations
The ports that support RTPs achieve the kernel/rtp compilation
and link distinction through the multilib mechanism.
This patch just removes the bogus explicit extraneous
materialization of this distinction in the common VxWorks
configuration files and leaves the rtp specialization all
to the multilib machinery.
2020-10-15  Olivier Hainque  <hainque@adacore.com>
libgcc/
	* config/t-vxcrtstuff: Remove the -kernel/-rtp specialization.
gcc/
	* config/vxworks.h (VX_CRTBEGIN_SPEC): Likewise.
Olivier Hainque [Tue, 13 Oct 2020 09:53:30 +0000 (09:53 +0000)]
 
Allow self configured definition of _WRS_VXWORKS_MAJOR
This conditions the use of system headers to fetch a
_WRS_VXWORKS_MAJOR macro on the non definition of that
macro. This allows builds where a specific value is
predefined, e.g. with a self spec, useful in environments
where the system headers don't actually define that macro
(e.g. vxworks 5 or 653).
In addition, _WRS_VXWORKS_MINOR is only provided by the
system headers when really meaningful, e.g. from 6.4 to 6.9.
We just pick a conservative default to 0 for all the cases
where it is not exposed by the system headers or otherwise.
2020-10-15  Olivier Hainque  <hainque@adacore.com>
gcc/
	* config/vxworks/_vxworks-versions.h: Only include
	version.h if _WRS_VXWORKS_MAJOR is not defined.
	Provide a default _WRS_VXWORKS_MINOR (0).
Srinath Parvathaneni [Fri, 16 Oct 2020 13:53:28 +0000 (14:53 +0100)]
 
arm: Fix the warning -mcpu=cortex-m55 conflicting with -march=armv8.1-m.main (pr97327).
This patch fixes (PR97327) the warning -mcpu=cortex-m55 conflicts with -march=armv8.1-m.main
for -mfloat-abi=soft by adding the isa_bit_mve_float to clearing FP bit list.
The following combination are fixed with this patch:
$ cat bug.c
int main(){
return 0;
}
$ arm-none-eabi-gcc -mcpu=cortex-m55 -mfloat-abi=soft bug.c -c
$ arm-none-eabi-gcc -mcpu=cortex-m55 -mfloat-abi=soft -march=armv8.1-m.main+mve bug.c -c
Before this patch for above combinations:
cc1: warning: switch '-mcpu=cortex-m55' conflicts with '-march=armv8.1-m.main' switch
After this patch for above combinations no warning/errors.
gcc/ChangeLog:
2020-10-16  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
	PR target/97327
	* config/arm/arm.c (fp_bitlist): Add isa_bit_mve_float to FP bits array.
gcc/testsuite/ChangeLog:
	PR target/97327
	* gcc.target/arm/mve/intrinsics/pr97327.c: New test.
Richard Biener [Wed, 14 Oct 2020 13:37:51 +0000 (15:37 +0200)]
 
Adjust BB vectorization SLP build heuristics
This changes SLP def gathering to not fail due to mismatched
def type but instead demote the def to external.  This allows the
new testcase to be vectorized in full (with GCC 10 it is not
vectorized at all and with current trunk we vectorize only the
store).  This is important since with BB vectorization being
applied to bigger pieces of code the chance that we mix
internal and external defs for an operand that should end up
treated as external (built from scalars) increases.
2020-10-16  Richard Biener  <rguenther@suse.de>
	* tree-vect-slp.c (vect_get_and_check_slp_defs): For BB
	vectorization swap operands only if it helps, demote mismatches to
	external.
	* gcc.dg/vect/bb-slp-53.c: New testcase.
Srinath Parvathaneni [Fri, 16 Oct 2020 10:40:25 +0000 (11:40 +0100)]
 
arm: Fix wrong code generated for mve scatter store with writeback intrinsics with -O2 (PR97271).
This patch fixes (PR97271) the wrong code-gen for mve scatter store with writeback intrinsics with -O2.
$cat bug.c
void
foo (uint32x4_t * addr, const int offset, int32x4_t value)
{
  vstrwq_scatter_base_wb_s32 (addr, 8, value);
}
$ arm-none-eabi-gcc  bug.c -S -O2 -march=armv8.1-m.main+mve -mfloat-abi=hard -o -
Without this patch:
...
foo:
	vldrw.32	q3, [r0]
	vstrw.u32       q0, [q3, #8]!  ---> (A)
	vldr.64 d4, .L3
	vldr.64 d5, .L3+8
	vldrw.32	q3, [r0]
	vstrw.u32       q2, [q3, #8]!  ---> (B)
	bx      lr
...
With this patch:
...
foo:
	vldrw.32	q3, [r0]
	vstrw.u32       q0, [q3, #8]!  --> (C)
	vstrw.32	q3, [r0]
	bx      lr
...
Without this patch 2 vstrw assembly instructions (A and B) are generated for vstrwq_scatter_base_wb_s32
intrinsic where as fix generates only one vstrw assembly instruction (C).
gcc/ChangeLog:
2020-10-06  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
	PR target/97291
	* config/arm/arm-builtins.c (arm_strsbwbs_qualifiers): Modify array.
	(arm_strsbwbu_qualifiers): Likewise.
	(arm_strsbwbs_p_qualifiers): Likewise.
	(arm_strsbwbu_p_qualifiers): Likewise.
	* config/arm/arm_mve.h (__arm_vstrdq_scatter_base_wb_s64): Modify
	function definition.
	(__arm_vstrdq_scatter_base_wb_u64): Likewise.
	(__arm_vstrdq_scatter_base_wb_p_s64): Likewise.
	(__arm_vstrdq_scatter_base_wb_p_u64): Likewise.
	(__arm_vstrwq_scatter_base_wb_p_s32): Likewise.
	(__arm_vstrwq_scatter_base_wb_p_u32): Likewise.
	(__arm_vstrwq_scatter_base_wb_s32): Likewise.
	(__arm_vstrwq_scatter_base_wb_u32): Likewise.
	(__arm_vstrwq_scatter_base_wb_f32): Likewise.
	(__arm_vstrwq_scatter_base_wb_p_f32): Likewise.
	* config/arm/arm_mve_builtins.def (vstrwq_scatter_base_wb_add_u): Remove
	expansion for the builtin.
	(vstrwq_scatter_base_wb_add_s): Likewise.
	(vstrwq_scatter_base_wb_add_f): Likewise.
	(vstrdq_scatter_base_wb_add_u): Likewise.
	(vstrdq_scatter_base_wb_add_s): Likewise.
	(vstrwq_scatter_base_wb_p_add_u): Likewise.
	(vstrwq_scatter_base_wb_p_add_s): Likewise.
	(vstrwq_scatter_base_wb_p_add_f): Likewise.
	(vstrdq_scatter_base_wb_p_add_u): Likewise.
	(vstrdq_scatter_base_wb_p_add_s): Likewise.
	* config/arm/mve.md (mve_vstrwq_scatter_base_wb_<supf>v4si): Remove
	expand.
	(mve_vstrwq_scatter_base_wb_add_<supf>v4si): Likewise.
	(mve_vstrwq_scatter_base_wb_<supf>v4si_insn): Rename pattern to ...
	(mve_vstrwq_scatter_base_wb_<supf>v4si): This.
	(mve_vstrwq_scatter_base_wb_p_<supf>v4si): Remove expand.
	(mve_vstrwq_scatter_base_wb_p_add_<supf>v4si): Likewise.
	(mve_vstrwq_scatter_base_wb_p_<supf>v4si_insn): Rename pattern to ...
	(mve_vstrwq_scatter_base_wb_p_<supf>v4si): This.
	(mve_vstrwq_scatter_base_wb_fv4sf): Remove expand.
	(mve_vstrwq_scatter_base_wb_add_fv4sf): Likewise.
	(mve_vstrwq_scatter_base_wb_fv4sf_insn): Rename pattern to ...
	(mve_vstrwq_scatter_base_wb_fv4sf): This.
	(mve_vstrwq_scatter_base_wb_p_fv4sf): Remove expand.
	(mve_vstrwq_scatter_base_wb_p_add_fv4sf): Likewise.
	(mve_vstrwq_scatter_base_wb_p_fv4sf_insn): Rename pattern to ...
	(mve_vstrwq_scatter_base_wb_p_fv4sf): This.
	(mve_vstrdq_scatter_base_wb_<supf>v2di): Remove expand.
	(mve_vstrdq_scatter_base_wb_add_<supf>v2di): Likewise.
	(mve_vstrdq_scatter_base_wb_<supf>v2di_insn): Rename pattern to ...
	(mve_vstrdq_scatter_base_wb_<supf>v2di): This.
	(mve_vstrdq_scatter_base_wb_p_<supf>v2di): Remove expand.
	(mve_vstrdq_scatter_base_wb_p_add_<supf>v2di): Likewise.
	(mve_vstrdq_scatter_base_wb_p_<supf>v2di_insn): Rename pattern to ...
	(mve_vstrdq_scatter_base_wb_p_<supf>v2di): This.
gcc/testsuite/ChangeLog:
	PR target/97291
	* gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c: Modify.
	* gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c:
	Likewise.
	* gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c:
	Likewise.
	* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c:
	Likewise.
	* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c:
	Likewise.
	* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c: Likewise.
Jan Hubicka [Fri, 16 Oct 2020 10:24:16 +0000 (12:24 +0200)]
 
Fix modref-4.c testcase
	PR testsuite/97426
	* gcc.dg/tree-ssa/modref-4.c: Fix return test.
Martin Liska [Fri, 16 Oct 2020 08:58:03 +0000 (10:58 +0200)]
 
libsanitizer: update locale patches
libsanitizer/ChangeLog:
	* LOCAL_PATCHES: Update revision.
Martin Liska [Thu, 7 Nov 2019 09:34:14 +0000 (10:34 +0100)]
 
Reapply all revisions mentioned in LOCAL_PATCHES.
(cherry picked from commit 
21bb1625bd4f183984223ce31bd03ba47ed62f27)
 
Martin Liska [Fri, 16 Oct 2020 08:03:04 +0000 (10:03 +0200)]
 
libsanitizer: merge from master
Kito Cheng [Fri, 16 Oct 2020 08:36:45 +0000 (16:36 +0800)]
 
RISC-V: Handle implied extension in multilib-generator
 - -march has handle implied extension for a while, so I think
   multilib-generator should handle this well too.
 - Currently only add rule for D imply F.
gcc/ChangeLog:
	* config/riscv/multilib-generator (IMPLIED_EXT): New.
	(arch_canonicalize): Update comment and handle implied extensions.
Richard Biener [Wed, 14 Oct 2020 13:37:51 +0000 (15:37 +0200)]
 
Refactor vect_get_and_check_slp_defs some more
This refactors vect_get_and_check_slp_defs so that the ops and def_stmts
arrays are filled for all stmts and operands even when we signal failure.
This allows later changes for BB vectorization SLP discovery heuristics.
2020-10-16  Richard Biener  <rguenther@suse.de>
	* tree-vect-slp.c (vect_get_and_check_slp_defs): First analyze
	all operands and fill in the def_stmts and ops entries.
	(vect_def_types_match): New helper.
Martin Liska [Thu, 15 Oct 2020 12:57:31 +0000 (14:57 +0200)]
 
IPA: compare VRP types.
gcc/ChangeLog:
	PR ipa/97404
	* ipa-prop.c (struct ipa_vr_ggc_hash_traits):
	Compare types of VRP as we can merge ranges of different types.
gcc/testsuite/ChangeLog:
	PR ipa/97404
	* gcc.c-torture/execute/pr97404.c: New test.
Piotr Trojanek [Thu, 2 Jul 2020 12:01:18 +0000 (14:01 +0200)]
 
[Ada] Assorted style cleanups
gcc/ada/
	* checks.adb, exp_aggr.adb, exp_attr.adb, exp_ch6.adb,
	freeze.adb, sem_aggr.adb, sem_attr.adb, sem_ch13.adb,
	sem_ch13.ads, sem_ch6.adb, sem_eval.adb, sem_util.adb: Fix style
	and typos.
Arnaud Charlet [Tue, 30 Jun 2020 16:06:12 +0000 (12:06 -0400)]
 
[Ada] Preelaborate rules not fully enforced
gcc/ada/
	* sem_cat.adb (Is_Primary): Handle N_Range properly.
Ghjuvan Lacambre [Wed, 24 Jun 2020 15:12:19 +0000 (17:12 +0200)]
 
[Ada] Implement expansion of CUDA_Execute pragma
gcc/ada/
	* elists.ads (New_Elmt_List): New functions.
	* elists.adb (New_Elmt_List): New functions.
	* exp_prag.adb: Add dependency on Elists.
	(Expand_Pragma_CUDA_Execute): New function.
	(Expand_N_Pragma): Add call to Expand_Pragma_CUDA_Execute.
	* rtsfind.ads: Add CUDA.Internal, CUDA.Runtime, System.C
	packages and RE_Push_Call_Configuration,
	RE_Pop_Call_Configuration, RE_Launch_Kernel, RO_IC_Unsigned,
	RO_IC_Unsigned_Long_Long entities.
	* rtsfind.adb: Extend Interfaces_Descendant to include
	Interfaces_C.
Bob Duff [Wed, 1 Jul 2020 20:22:46 +0000 (16:22 -0400)]
 
[Ada] 
Ada2020: parsing of qualified exprs with new agg syntax
gcc/ada/
	* par-ch4.adb (P_Name): Allow Tok_Left_Bracket in two places to
	call P_Qualified_Expression. We don't need to modify other
	places that call P_Qualified_Expression, because a
	qualified_expression is a name in Ada 2012 and higher, so P_Name
	is the right place.  The parser already parses aggregates with
	brackets; we just need to allow that in qualified expressions.
 
Javier Miranda [Tue, 30 Jun 2020 18:20:09 +0000 (14:20 -0400)]
 
[Ada] Crash in generic renaming declaration of child unit
gcc/ada/
	* sem_ch12.adb (Check_Generic_Child_Unit): When the child unit
	is a renaming of a generic child unit then traverse the scope
	containing the renaming declaration to locate the instance of
	its parent.  Otherwise the parent is not installed and the
	frontend cannot process the instantiation.
Bob Duff [Wed, 1 Jul 2020 12:40:02 +0000 (08:40 -0400)]
 
[Ada] Remove non-ASCII character
gcc/ada/
	* libgnat/a-numeri.ads: Remove the greek letter.
Ed Schonberg [Thu, 2 Jul 2020 00:25:09 +0000 (20:25 -0400)]
 
[Ada] Attribute Img on derived types
gcc/ada/
	* exp_imgv.adb (Expand_Image_Attribute): Refine previous patch
	to use root type (and not base type) on enumeration types.
Ed Schonberg [Mon, 29 Jun 2020 21:06:42 +0000 (17:06 -0400)]
 
[Ada] Attribute Img on derived types
gcc/ada/
	* exp_imgv.adb (Expand_Image_Attribute): Use the base type
	instead of the root type when type of object is private. Remove
	Ada_2020 guard, because it has been checked during prior
	analysis. Use Underlying_Type in all cases, as it is a no-op on
	types that are not private.
Arnaud Charlet [Tue, 30 Jun 2020 07:49:34 +0000 (03:49 -0400)]
 
[Ada] 
Ada2020: AI12-0129 Make protected objects more protecting
gcc/ada/
	* aspects.ads, snames.ads-tmpl: Add support for
	Exclusive_Functions aspect.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Ditto.
	* exp_ch9.adb (Build_Protected_Subprogram_Body): Take aspect
	Exclusive_Functions into account.
 
Arnaud Charlet [Wed, 1 Jul 2020 08:53:39 +0000 (04:53 -0400)]
 
[Ada] Clean up in system.ads dependencies during compiler build
gcc/ada/
	* gcc-interface/Make-lang.in: Update dependencies on system.ads,
	add gnatbind switch -t to avoid timestamp inconsistencies during
	build.
	* libgnat/system.ads: Move...
	* gcc-interface/system.ads: ... here.
Gary Dismukes [Tue, 30 Jun 2020 22:58:56 +0000 (18:58 -0400)]
 
[Ada] Legal actual type with inherited discriminants rejected in instantiation
gcc/ada/
	* sem_eval.adb (Subtypes_Statically_Match): Retrieve
	discriminant constraints from the two types via new function
	Original_Discriminant_Constraint rather than
	Discriminant_Constraint.
	(Original_Discriminant_Constraint): New function to locate the
	nearest explicit discriminant constraint associated with a type
	that may possibly have inherited a constraint from an ancestor
	type.
Bob Duff [Wed, 24 Jun 2020 20:26:50 +0000 (16:26 -0400)]
 
[Ada] Remove obsolete workaround regarding array returns
gcc/ada/
	* exp_ch6.adb (Expand_Simple_Function_Return): Remove obsolete
	comment and code.
Arnaud Charlet [Mon, 29 Jun 2020 08:18:27 +0000 (04:18 -0400)]
 
[Ada] Convert from UTF_16 to UTF_8 fails for large values
gcc/ada/
	PR ada/95953
	* libgnat/a-suenco.adb (Convert): Fix handling of third UTF-8
	byte.
Steve Baird [Fri, 26 Jun 2020 00:15:50 +0000 (17:15 -0700)]
 
[Ada] Avoid premature finalization of a function result
gcc/ada/
	* exp_util.adb (Is_Related_To_Func_Return): Cope with the case
	where the FE introduces a type conversion.
Chris Martin [Tue, 16 Jun 2020 09:16:06 +0000 (10:16 +0100)]
 
[Ada] Constants no longer synchronised if they are access-to-variable
gcc/ada/
	* sem_util.ads, sem_util.adb (Is_Access_Variable): New function.
	(Is_Synchronized_Object): Call new function when determining if
	a constant can be regarded as synchronized.
Arnaud Charlet [Sun, 28 Jun 2020 10:24:26 +0000 (06:24 -0400)]
 
[Ada] Finalization of uninitialized object with build in place call
gcc/ada/
	* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
	Call Set_BIP_Initialization_Call systematically.
	* exp_ch7.adb (Process_Transient_In_Scope): Take
	BIP_Initialization_Call into account to decide where to insert
	the Hook.
Piotr Trojanek [Mon, 29 Jun 2020 08:28:00 +0000 (10:28 +0200)]
 
[Ada] Detect qualified type names for AI12-0027
gcc/ada/
	* sem_util.adb (Is_View_Conversion): Detect qualified types.
	* sem_util.ads (Is_Actual_In_Out_Parameter): Fix style in
	comment.
Arnaud Charlet [Fri, 26 Jun 2020 09:08:37 +0000 (05:08 -0400)]
 
[Ada] Relax too strong assertions
gcc/ada/
	* scil_ll.adb, sem_scil.adb: Update assertions.
Ed Schonberg [Sun, 28 Jun 2020 19:11:33 +0000 (15:11 -0400)]
 
[Ada] Improvements to implementation of Ada_2020 attribute Reduce
gcc/ada/
	* sem_attr.adb (Min_Max): Handle the case where attribute
	name (qualified by required type) appears as the reducer of a
	'Reduce attribute reference.
	(Resolve_Attribute) <Reduce>: Handle properly the presence of a
	procedure or an attribute reference Min/Max as a reducer.
	* exp_attr.adb (Expand_Attribute_Reference) <Reduce>: New
	subprogram Build_Stat, to construct the combining statement
	which appears in the generated loop for Reduce, and which is
	either a function call when the reducer is a function or an
	attribute, or a procedure call when reducer is an appropriate
	procedure.  BuilD_Stat is used both when the prefix of 'Reduce
	is a value sequence and when it is an object
Arnaud Charlet [Fri, 26 Jun 2020 11:49:37 +0000 (07:49 -0400)]
 
[Ada] Reduce use of primary stack on string concatenation
gcc/ada/
	* exp_ch4.adb (Expand_Concatenate): Allocate result of string
	concatenation on secondary stack when relevant.
Ed Schonberg [Thu, 25 Jun 2020 20:44:27 +0000 (16:44 -0400)]
 
[Ada] Spurious visibility error on Declare_Expression with renames
gcc/ada/
	* sem_res.adb (Resolve_Declare_Expression): Retrieve the created
	block entity that is the scope of the local declarations, from
	either a local object declaration or an object renaming
	declaration. The block entity does not have an explicit
	declaration, but appears as the scope of all locally declared
	objects.
Eric Botcazou [Fri, 26 Jun 2020 14:16:08 +0000 (16:16 +0200)]
 
[Ada] Use new Max_Integer_Size attribute in system.ads files
gcc/ada/
	* libgnat/system-aix.ads: Likewise.
	* libgnat/system-darwin-arm.ads: Likewise.
	* libgnat/system-darwin-ppc.ads: Likewise.
	* libgnat/system-darwin-x86.ads: Likewise.
	* libgnat/system-djgpp.ads: Likewise.
	* libgnat/system-dragonfly-x86_64.ads: Likewise.
	* libgnat/system-freebsd.ads: Likewise.
	* libgnat/system-hpux-ia64.ads: Likewise.
	* libgnat/system-hpux.ads: Likewise.
	* libgnat/system-linux-alpha.ads: Likewise.
	* libgnat/system-linux-arm.ads: Likewise.
	* libgnat/system-linux-hppa.ads: Likewise.
	* libgnat/system-linux-ia64.ads: Likewise.
	* libgnat/system-linux-m68k.ads: Likewise.
	* libgnat/system-linux-mips.ads: Likewise.
	* libgnat/system-linux-ppc.ads: Likewise.
	* libgnat/system-linux-riscv.ads: Likewise.
	* libgnat/system-linux-s390.ads: Likewise.
	* libgnat/system-linux-sh4.ads: Likewise.
	* libgnat/system-linux-sparc.ads: Likewise.
	* libgnat/system-linux-x86.ads: Likewise.
	* libgnat/system-lynxos178-ppc.ads: Likewise.
	* libgnat/system-lynxos178-x86.ads: Likewise.
	* libgnat/system-mingw.ads: Likewise.
	* libgnat/system-qnx-aarch64.ads: Likewise.
	* libgnat/system-rtems.ads: Likewise.
	* libgnat/system-solaris-sparc.ads: Likewise.
	* libgnat/system-solaris-x86.ads: Likewise.
	* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
	* libgnat/system-vxworks-arm-rtp.ads: Likewise.
	* libgnat/system-vxworks-arm.ads: Likewise.
	* libgnat/system-vxworks-e500-kernel.ads: Likewise.
	* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
	* libgnat/system-vxworks-e500-rtp.ads: Likewise.
	* libgnat/system-vxworks-e500-vthread.ads: Likewise.
	* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
	* libgnat/system-vxworks-ppc-ravenscar.ads: Likewise.
	* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
	* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
	* libgnat/system-vxworks-ppc-vthread.ads: Likewise.
	* libgnat/system-vxworks-ppc.ads: Likewise.
	* libgnat/system-vxworks-x86-kernel.ads: Likewise.
	* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
	* libgnat/system-vxworks-x86-rtp.ads: Likewise.
	* libgnat/system-vxworks-x86-vthread.ads: Likewise.
	* libgnat/system-vxworks-x86.ads: Likewise.
	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
	* libgnat/system-vxworks7-aarch64.ads: Likewise.
	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
	* libgnat/system-vxworks7-arm.ads: Likewise.
	* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
	* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
	* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
	* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
	* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
	* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
Arnaud Charlet [Thu, 25 Jun 2020 08:02:29 +0000 (04:02 -0400)]
 
[Ada] Remove support for -gnatP and pragma Polling
gcc/ada/
	* Makefile.rtl, gnat1drv.adb, expander.adb
	doc/gnat_rm/implementation_defined_pragmas.rst,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_ugn/the_gnat_compilation_model.rst, exp_ch5.ads,
	exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_util.adb,
	exp_util.ads, libgnarl/s-osinte__aix.adb,
	libgnarl/s-osinte__android.adb, libgnarl/s-osinte__darwin.adb,
	libgnarl/s-osinte__gnu.adb, libgnarl/s-osinte__hpux-dce.adb,
	libgnarl/s-osinte__lynxos178.adb, libgnarl/s-osinte__posix.adb,
	libgnarl/s-osinte__qnx.adb, libgnarl/s-osinte__rtems.adb,
	libgnarl/s-osinte__solaris.adb, libgnarl/s-osinte__vxworks.adb,
	libgnarl/s-osinte__x32.adb, libgnarl/s-solita.adb,
	libgnarl/s-taasde.adb, libgnarl/s-taprob.adb,
	libgnarl/s-taprop__dummy.adb, libgnarl/s-taprop__hpux-dce.adb,
	libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
	libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb,
	libgnarl/s-taprop__solaris.adb, libgnarl/s-taprop__vxworks.adb,
	libgnarl/s-tarest.adb, libgnarl/s-tasini.adb,
	libgnarl/s-taskin.adb, libgnarl/s-taspri__dummy.ads,
	libgnarl/s-taspri__hpux-dce.ads, libgnarl/s-taspri__lynxos.ads,
	libgnarl/s-taspri__mingw.ads,
	libgnarl/s-taspri__posix-noaltstack.ads,
	libgnarl/s-taspri__posix.ads, libgnarl/s-taspri__solaris.ads,
	libgnarl/s-taspri__vxworks.ads, libgnarl/s-tassta.adb,
	libgnarl/s-tasuti.adb, libgnarl/s-tposen.adb,
	libgnat/a-except.adb, libgnat/a-except.ads,
	libgnat/s-dwalin.adb, libgnat/s-dwalin.ads,
	libgnat/s-mastop.ads, libgnat/s-soflin.adb,
	libgnat/s-stalib.adb, libgnat/s-stalib.ads,
	libgnat/s-stchop.adb, libgnat/s-stchop.ads,
	libgnat/s-stchop__limit.ads, libgnat/s-traceb.ads,
	libgnat/s-traent.adb, libgnat/s-traent.ads,
	libgnat/s-trasym.adb, libgnat/s-trasym.ads,
	libgnat/s-trasym__dwarf.adb, opt.adb, opt.ads, par-prag.adb,
	sem_prag.adb, snames.ads-tmpl, switch-c.adb, targparm.adb,
	targparm.ads, usage.adb: Remove support for -gnatP and pragma
	Polling.
	* gnat_ugn.texi: Regenerate.
	* libgnat/a-excpol.adb, libgnat/a-excpol__abort.adb: Removed.
Piotr Trojanek [Thu, 25 Jun 2020 19:48:51 +0000 (21:48 +0200)]
 
[Ada] Unique itypes names for unconstrained array object declaration
gcc/ada/
	* sem_ch3.adb (Array_Type_Declaration): Create itype with unique
	name.
Piotr Trojanek [Thu, 25 Jun 2020 13:42:23 +0000 (15:42 +0200)]
 
[Ada] Cleanup related to itypes for unconstrained object declaration
gcc/ada/
	* sem_ch3.adb (Analyze_Object_Declaration): Limit scope of a
	local object by hiding it from local subprograms; simplify
	nested if-then-if-then condition for an Ada 83 restriction.
	(Array_Type_Declaration): Confirm with assertion when the else
	branch is executed.
	(Find_Type_Of_Object): Simplify membership test with a subtype
	range.
Yannick Moy [Tue, 2 Jun 2020 16:24:16 +0000 (18:24 +0200)]
 
[Ada] SPARK: update for effectively volatile types and objects
gcc/ada/
	* sem_prag.adb (Analyze_Global_In_Decl_Part): Update check to
	reject volatile object for reading.
	* sem_res.adb (Resolve_Actuals, Resolve_Entity_Name): Update
	check to reject volatile object for reading.
	* sem_util.adb, sem_util.ads
	(Check_Nonvolatile_Function_Profile,
	Has_Effectively_Volatile_Profile): Detect use of volatile object
	for reading.
	(Has_Enabled_Property): Accept constants as well.
	(Is_Effectively_Volatile_For_Reading): New function based on
	existing Is_Effectively_Volatile.
	(Is_Effectively_Volatile_Object_For_Reading): Adapted from the
	existing Is_Effectively_Volatile_Object, using a shared
	implementation in Is_Effectively_Volatile_Object_Shared.
Gary Dismukes [Wed, 24 Jun 2020 21:22:58 +0000 (17:22 -0400)]
 
[Ada] GNAT-LLVM unnesting issues in elaboration code
gcc/ada/
	* exp_ch7.adb (Check_Unnesting_In_Decls_Or_Stmts): In the case
	of an if-statement, call Unnest_If_Statement to determine
	whether there are nested subprograms in any of the statement
	lists of the "if" parts that require a wrapping procedure to
	handle possible up-level refeferences.
	(Unnest_Block): Call Check_Unnesting_In_Handlers to do unnesting
	of subprograms in exception handlers of the block statement.
	(Unnest_If_Statement): New procedure to traverse the parts of an
	if-statement and create wrapper procedures as needed to
	encapsulate nested subprograms that may make up-level
	references.
	(Check_Stmts_For_Subp_Unnesting): New support procedure in
	Unnest_If_Statement to traverse a statement list looking for
	top-level subprogram bodies that require wrapping inside a
	procedure (via Unnest_Statement_List) as well as possibly having
	other statements (block, loop, if) that may themselves require
	an unnesting transformation (via
	Check_Unnesting_In_Decls_Or_Stmts).
	(Unnest_Statement_List): New support procedure to traverse the
	statements of a statement list that contains subprogram bodies
	at the top level and replace the statement list with a wrapper
	procedure body encapsulating the statements and a call to the
	procedure.
Arnaud Charlet [Thu, 25 Jun 2020 09:36:54 +0000 (05:36 -0400)]
 
[Ada] Crash when specifying an abstract subprogram with Stream_Convert
gcc/ada/
	* sem_prag.adb (Check_OK_Stream_Convert_Function): Check for
	abstract subprograms.
Piotr Trojanek [Thu, 25 Jun 2020 12:37:44 +0000 (14:37 +0200)]
 
[Ada] Fix documentation of No_Local_Timing_Events
gcc/ada/
	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
	(No_Local_Timing_Events): Package Timing_Events is a child of
	Ada.Real_Time, not of Ada.
	* gnat_rm.texi: Regenerate.
Eric Botcazou [Tue, 23 Jun 2020 10:49:04 +0000 (12:49 +0200)]
 
[Ada] Add Max_Integer_Size attribute and couple of helper functions
gcc/ada/
	* doc/gnat_rm/implementation_defined_attributes.rst: Document the
	new Max_Integer_Size attribute.
	* gnat_rm.texi: Regenerate.
	* exp_attr.adb (Get_Integer_Type): Call Small_Integer_Type_For.
	(Expand_N_Attribute_Reference) <Attribute_Pred>: Replace selection
	code with call to Integer_Type_For.
	<Attribute_Succ>: Likewise.
	<Attribute_Val>: Likewise.
	<Attribute_Valid>: Likewise.
	<Attribute_Max_Integer_Size>: Raise Program_Error.
	* exp_ch3.adb (Expand_Freeze_Enumeration_Type): Replace selection
	code with call to Integer_Type_For.
	(Simple_Init_Initialize_Scalars_Type): Use Long_Long_Unsigned and
	System_Max_Integer_Size to size the largest integer type.
	* exp_pakd.adb (Compute_Linear_Subscript): Minor tweak.
	(Create_Packed_Array_Impl_Type): Use Small_Integer_Type_For.
	* exp_util.ads (Integer_Type_For): New function.
	(Small_Integer_Type_For): Likewise.
	* exp_util.adb (Adjust_Condition): Use Integer_Type_For.
	(Component_May_Be_Bit_Aligned): Use System_Max_Integer_Size.
	(Integer_Type_For): New function.
	(Small_Integer_Type_For): Likewise.
	(Matching_Standard_Type): Use Small_Integer_Type_For.
	(Needs_Constant_Address): Replace 64 with System_Max_Integer_Size.
	* freeze.adb (Set_Small_Size): Likewise.
	(Size_Known): Likewise.
	(Check_Suspicious_Modulus): Likewise.
	(Check_Large_Modular_Array): Likewise.
	(Freeze_Entity): Likewise.
	* layout.adb (Layout_Type): Likewise.
	* sem_aggr.adb: Add with and use clauses for Ttypes.
	(Resolve_Aggregate): Replace 64 with System_Max_Integer_Size.
	* sem_attr.ads (Attribute_Impl_Def): Add Attribute_Max_Integer_Size.
	* sem_attr.adb (Analyze_Attribute) <Attribute_Max_Integer_Size>: New
	(Eval_Attribute): Likewise.
	* sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Change max
	scalar size to System_Max_Integer_Size.
	(Check_Array_Type): Replace 64 with System_Max_Integer_Size and
	remove superfluous test.
	(OK_Component): Likewise.
	* sem_ch5.adb: Add with and use clauses for Ttypes.
	(Analyze_Assignment): Replace 64 with System_Max_Integer_Size.
	* snames.ads-tmpl (Name_Max_Integer_Size): New attribute name.
	(Attribute_Id): Add Attribute_Max_Integer_Size.
	* ttypes.ads (System_Max_Integer_Size): New constant.
Richard Biener [Thu, 15 Oct 2020 09:55:53 +0000 (11:55 +0200)]
 
tree-optimization/97428 - split SLP groups for loop vectorization
This enables SLP store group splitting also for loop vectorization.
For the existing testcase gcc.dg/vect/vect-complex-5.c this then
generates much better code, likewise for the PR97428 testcase.
Both of those have a splitting opportunity splitting the group
into two equal (vector-sized) halves, still the patch enables
quite arbitrary splitting since generally the interleaving scheme
results in quite awkward code for even small groups.  If any
problems surface with this it's easy to restrict the splitting
to known-good cases.
2020-10-15  Richard Biener  <rguenther@suse.de>
	PR tree-optimization/97428
	* tree-vect-slp.c (vect_analyze_slp_instance): Split store
	groups also for loop vectorization.
	* gcc.dg/vect/vect-complex-5.c: Expect to SLP.
	* gcc.dg/vect/pr97428.c: Likewise.
GCC Administrator [Fri, 16 Oct 2020 00:16:29 +0000 (00:16 +0000)]
 
Daily bump.
Ian Lance Taylor [Thu, 15 Oct 2020 22:34:14 +0000 (15:34 -0700)]
 
compiler: don't export function type parameter names
When hashing a function type the parameter names are ignored.
Therefore, we should not write them into the export data.
Otherwise, minor changes in the order in which we process the
types can cause the export data to change uselessly, leading to
unnecessary rebuilds.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262818
Nikhil Benesch [Wed, 14 Oct 2020 19:02:12 +0000 (19:02 +0000)]
 
runtime: use correct types in __go_ptrace shim
Make the types of the addr and data arguments in the __go_ptrace shim
match the types declared in Go and the types declared by the C ptrace
function, i.e., void*. This avoids a warning about an implicit
int-to-pointer cast on some platforms.
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262340
Nikhil Benesch [Wed, 14 Oct 2020 19:24:49 +0000 (19:24 +0000)]
 
libgo: correct Makefile typo in path to x/net/route package
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262342
Ian Lance Taylor [Wed, 14 Oct 2020 22:30:00 +0000 (15:30 -0700)]
 
compiler: export type for string and bool constants
Also consolidate the identical code for constant type export into a
pair of static methods.
Fixes golang/go#35739
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262437
David Edelsohn [Thu, 15 Oct 2020 18:12:52 +0000 (14:12 -0400)]
 
testsuite: Fix some endianness bugs in p9 runnable tests.
This patch fixes some bugs in the powerpc testsuite for runnable tests
whose expected values were endian dependent.
gcc/testsuite/ChangeLog:
2020-10-15  David Edelsohn  <dje.gcc@gmail.com>
	* gcc.target/powerpc/builtins-1-p9-runnable.c: Adjust for big endian.
	* gcc.target/powerpc/builtins-7-p9-runnable.c: Same.
Jonathan Wakely [Thu, 15 Oct 2020 18:19:15 +0000 (19:19 +0100)]
 
libstdc++: Fix typos in copyright notice
It looks like I did a s/a/__a/ substition in one of these headers, and
then copied it to the other one.
libstdc++-v3/ChangeLog:
	* include/std/concepts: Fix typos in copyright notice.
	* include/std/ranges: Likewise.
Jason Merrill [Thu, 15 Oct 2020 16:54:16 +0000 (12:54 -0400)]
 
c++: Fix [[deprecated]] and implicit operator==. [PR97358]
Trying to diagnose the problem with an implicit copy function breaks if the
function isn't actually a copy function.
gcc/cp/ChangeLog:
	PR c++/95844
	* decl.c (copy_fn_p): Return false for a function that is neither a
	constructor nor an assignment operator.
	(move_signature_fn_p): Likewise.
gcc/testsuite/ChangeLog:
	PR c++/95844
	* g++.dg/cpp2a/spaceship-eq10.C: New test.
David Edelsohn [Thu, 15 Oct 2020 02:05:09 +0000 (22:05 -0400)]
 
testsuite: Add appropriate target requirements to P9 testcases.
This patch adds effective target and target specific expected results
to a few P9 testcases.
gcc/testsuite/ChangeLog:
	* gcc.target/powerpc/builtins-5-p9-runnable.c: Require lp64.
	* gcc.target/powerpc/builtins-msum-runnable.c: Require int128.
	* gcc.target/powerpc/float128-cmp2-runnable.c: Require float128.
	* gcc.target/powerpc/fold-vec-extract-double.p9.c: Require lp64.
Marek Polacek [Wed, 14 Oct 2020 16:59:58 +0000 (12:59 -0400)]
 
c++: Improve printing of pointers-to-members [PR97406, PR85901]
This PR points out that when printing the parameter mapping for a
pointer-to-member-function, the output was truncated:
  [with T = void (X::*]
Fixed by printing the abstract declarator for pointers-to-members in
cxx_pretty_printer::type_id.  So now we print:
  [with T = void (X::*)()]
But when I tried a pointer-to-data-member, I got
  [with T = ‘offset_type’ not supported by simple_type_specifier)‘offset_type’ not supported by direct_abstract_declarator]
so had to fix that too so that we now print:
  [with T = int X::*]
or
  [with T = int (X::*)[5]]
when the type is an array type.  Which is what PR85901 was about.
gcc/cp/ChangeLog:
	PR c++/97406
	PR c++/85901
	* cxx-pretty-print.c (pp_cxx_type_specifier_seq): Handle OFFSET_TYPE.
	(cxx_pretty_printer::abstract_declarator): Fix the printing of ')'.
	(cxx_pretty_printer::direct_abstract_declarator): Handle OFFSET_TYPE.
	(cxx_pretty_printer::type_id): Likewise.  Print the abstract declarator
	for pointers-to-members.
gcc/testsuite/ChangeLog:
	PR c++/97406
	PR c++/85901
	* g++.dg/diagnostic/ptrtomem1.C: New test.
	* g++.dg/diagnostic/ptrtomem2.C: New test.
Tom de Vries [Thu, 15 Oct 2020 13:55:24 +0000 (15:55 +0200)]
 
[nvptx, testsuite] Xfail stack atomics
Nvptx currently doesn't support atomics if it involves a stack address.
PR97444 is open about.
Xfail corresponding execution fails in gcc.dg/atomic.  Tested on nvptx.
gcc/testsuite/ChangeLog:
2020-10-15  Tom de Vries  <tdevries@suse.de>
	* gcc.dg/atomic/c11-atomic-exec-6.c: Xfail execution for nvptx.
	* gcc.dg/atomic/c11-atomic-exec-7.c: Same.
	* gcc.dg/atomic/stdatomic-op-5.c: Same.
Andre Vehreschild [Thu, 15 Oct 2020 13:43:35 +0000 (15:43 +0200)]
 
Fix fndecl's for fortran coarray calls.
gcc/fortran/ChangeLog:
	* trans-decl.c (gfc_build_builtin_function_decls): Fix the coarray fndecls.
Tom de Vries [Thu, 15 Oct 2020 09:37:43 +0000 (11:37 +0200)]
 
[nvptx] Remove -m32
The nvptx port has an -m32 option, but it's not clear whether this
was ever build/tested/used.
Don't expose to user anymore.  Tested on nvptx.
gcc/ChangeLog:
2020-10-15  Tom de Vries  <tdevries@suse.de>
	PR target/97436
	* config/nvptx/nvptx.opt (m32): Comment out.
	* doc/invoke.texi (NVPTX options): Remove -m32.
gcc/testsuite/ChangeLog:
2020-10-15  Tom de Vries  <tdevries@suse.de>
	PR target/97436
	* gcc.target/nvptx/atomic_fetch-3.c: Remove.
Jan Hubicka [Thu, 15 Oct 2020 12:46:12 +0000 (14:46 +0200)]
 
Fix toplevel comment of attr-fnspec.h
gcc/ChangeLog:
2020-10-15  Jan Hubicka  <hubicka@ucw.cz>
	    Richard Biener  <rguenther@suse.de>
	* attr-fnspec.h: Fix toplevel comment.
Richard Biener [Thu, 15 Oct 2020 11:08:48 +0000 (13:08 +0200)]
 
fix TARGET_MEM_REF dumping
This fixes the missing constant offset from TARGET_MEM_REF dumping.
2020-10-15  Richard Biener  <rguenther@suse.de>
	* tree-pretty-print.c (dump_mem_ref): Print constant offset
	also for TARGET_MEM_REF.
Jan Hubicka [Thu, 15 Oct 2020 11:50:22 +0000 (13:50 +0200)]
 
Also accept symbols in other partition in symtab_node::binds_to_current_def_p
	* symtab.c (symtab_node::binds_to_current_def_p): Also accept symbols
	defined in other partition.
Kwok Cheung Yeung [Thu, 15 Oct 2020 09:32:09 +0000 (02:32 -0700)]
 
libgomp: Amend documentation for omp_get_max_active_levels and omp_get_supported_active_levels
2020-10-15  Kwok Cheung Yeung  <kcy@codesourcery.com>
	libgomp/
	* libgomp.texi (omp_get_max_active_levels): Modify description.
	(omp_get_supported_active_levels): Make descriptions consistent.
Richard Biener [Thu, 15 Oct 2020 08:58:41 +0000 (10:58 +0200)]
 
Fix ICE in vectorizable_live_operation
This fixes the case where the insertion iterator for the live stmt
is the end of a BB by adjusting the dominance query to the definition
of the def we're substituting.
2020-10-15  Richard Biener  <rguenther@suse.de>
	* tree-vect-loop.c (vectorizable_live_operation): Adjust
	dominance query.
	* gcc.dg/vect/bb-slp-52.c: New testcase.
Arnaud Charlet [Tue, 23 Jun 2020 14:39:12 +0000 (10:39 -0400)]
 
[Ada] Spurious visibility on private with package
gcc/ada/
	* sem_ch10.adb (Install_With_Clause): Fix implementation of Ada
	2005 AI-262 by taking into account generic packages.  Minor
	reformatting.
	* libgnat/a-cbhase.ads, libgnat/a-cbhase.adb: Remove use clause
	on runtime unit spec.
Arnaud Charlet [Tue, 23 Jun 2020 16:14:03 +0000 (12:14 -0400)]
 
[Ada] Wrong use of Scope_Depth_Value
gcc/ada/
	* einfo.ads, einfo.adb (Scope_Depth_Value,
	Set_Scope_Depth_Value): Add assertions on valid nodes and update
	documentation accordingly.
	(Write_Field22_Name): Sync with change in Scope_Depth_Value.
	* sem_ch8.adb (Find_Direct_Name): Fix call to Scope_Depth_Value.
Javier Miranda [Wed, 24 Jun 2020 19:05:14 +0000 (15:05 -0400)]
 
[Ada] 
Ada2020: AI12-0003 Specifying the standard storage pool
gcc/ada/
	* sem_prag.adb (Analyze_Pragma): Adding semantic support of
	Standard to Default_Storage_Pool.
	* freeze.adb (Freeze_Entity): If pragma Default_Storage_Pool
	applies and it is set to Standard then use the global pool as
	the associated storage pool of the access type.
 
Javier Miranda [Wed, 24 Jun 2020 19:57:36 +0000 (15:57 -0400)]
 
[Ada] Cleanup definition of Might_Have_Tasks
gcc/ada/
	* exp_ch6.ads (Might_Have_Tasks): Update documentation.
	* exp_ch6.adb (Might_Have_Tasks): Return also true when the type
	has tasks.
	(Make_Build_In_Place_Call_In_Allocator): Code cleanup.
	* exp_ch3.adb (Ensure_Activation_Chain_And_Master,
	Expand_N_Full_Type_Declaration, Expand_N_Object_Declaration):
	Code cleanup.
Steve Baird [Tue, 23 Jun 2020 23:12:36 +0000 (16:12 -0700)]
 
[Ada] Get finalization right when a function returns a function call
gcc/ada/
	* checks.adb (Apply_Predicate_Check): Generate "infinite
	recursion" warning message even if run-time predicate checking
	is disabled.
	* exp_ch6.adb (Expand_Simple_Function_Return): In testing
	whether the returned expression is a function call, look for the
	case where the call has been transformed into a dereference of
	an access value that designates the result of a function call.
	* sem_ch3.adb (Analyze_Object_Declaration): Legality checking
	for a static expression is unaffected by assertion policy (and,
	in particular, enabling/disabling of subtype predicates.  To get
	the right legality checking, we need to call
	Check_Expression_Against_Static_Predicate for a static
	expression even if predicate checking is disabled for the given
	predicate-bearing subtype.  On the other hand, we don't want to
	call Make_Predicate_Check unless predicate checking is enabled.
	* sem_ch7.adb (Uninstall_Declarations.Preserve_Full_Attributes):
	Preserve the Predicates_Ignored attribute.
	* sem_eval.adb (Check_Expression_Against_Static_Predicate):
	Previously callers ensured that this procedure was only called
	if predicate checking was enabled; that is no longer the case,
	so predicates-disabled case must be handled.
	* sem_prag.adb (Analyze_Pragma): Fix bug in setting
	Predicates_Ignored attribute in Predicate pragma case.
Ed Schonberg [Wed, 24 Jun 2020 17:24:49 +0000 (13:24 -0400)]
 
[Ada] Crash on subtype of fixed-point type
gcc/ada/
	* freeze.adb (Freeze_Fixed_Point_Type): Do not scale the bounds
	of a declared subtype using the 'Small of the type;  this is
	done during resolution of the bound itself, unlike what is done
	for the bounds of the base type, which are used to determine its
	required size. Previous code performed this scaling twice,
	leading to meaningless values for such a subtype.
Piotr Trojanek [Wed, 24 Jun 2020 17:18:19 +0000 (19:18 +0200)]
 
[Ada] Fix access to uninitialized global variable when emitting error
gcc/ada/
	* sem_util.adb (Bad_Predicated_Subtype_Use): Emit an
	unconditional error, not a conditional warning.
Piotr Trojanek [Wed, 24 Jun 2020 08:25:23 +0000 (10:25 +0200)]
 
[Ada] Cleanup defensive guards for Null_Exclusion_Present
gcc/ada/
	* sem_ch3.adb (Process_Subtype): Combine guards for
	Null_Exclusion_Present in May_Have_Null_Exclusion; use this
	combined guard when checking AI-231.
Piotr Trojanek [Wed, 24 Jun 2020 07:57:53 +0000 (09:57 +0200)]
 
[Ada] Bring defensive guard for Null_Exclusion_Present up to date
gcc/ada/
	* sem_ch3.adb (Process_Subtype): Sync May_Have_Null_Exclusion
	with assertion in Null_Exclusion_Present; clarify the scope of
	local variables.
Piotr Trojanek [Tue, 23 Jun 2020 19:45:31 +0000 (21:45 +0200)]
 
[Ada] Explain predicate function not being inherited by index type
gcc/ada/
	* sem_ch3.adb (Analyze_Subtype_Declaration): Fix style.
	(Make_Index): Refactor to avoid repeated detection of subtype
	indication; add comment.
Piotr Trojanek [Wed, 24 Jun 2020 07:30:10 +0000 (09:30 +0200)]
 
[Ada] Adjust style in support for CUDA_Execute pragma
gcc/ada/
	* sem_prag.adb (Is_Acceptable_Dim3): Use Is_RTE to not pull CUDA
	package unless necessary; rename local Tmp variable; iterate
	with procedural Next.
Piotr Trojanek [Tue, 23 Jun 2020 17:50:18 +0000 (19:50 +0200)]
 
[Ada] Avoid unnecessary (re)assignments in Make_Info
gcc/ada/
	* sem_ch3.adb (Array_Type_Declaration): Refine type of a local
	variable.
	(Make_Index): Simplify to avoid assignment with a type entity
	and then backtracking by reassigning to Empty; remove excessive
	whitespace.
	* sem_ch9.adb (Analyze_Entry_Body): Remove extra parens.
Piotr Trojanek [Tue, 23 Jun 2020 15:40:22 +0000 (17:40 +0200)]
 
[Ada] Remove excessive defensive calls to Is_Type
gcc/ada/
	* sem_ch3.adb (Access_Subprogram_Declaration): Remove extra
	parens.
	(Make_Index): Remove excessive calls to Is_Type.
Arnaud Charlet [Tue, 23 Jun 2020 14:43:01 +0000 (10:43 -0400)]
 
[Ada] Code cleanup
gcc/ada/
	* sem_util.adb (Enter_Name): Remove unnecessary conditions in
	Enter_Name that come from the beginning of times.
Bob Duff [Tue, 23 Jun 2020 15:38:40 +0000 (11:38 -0400)]
 
[Ada] Remove obsolete DSP comment
gcc/ada/
	* exp_ch6.adb (Expand_Simple_Function_Return): Remove DSP part
	of comment, and reformat.
Boris Yakobowski [Tue, 23 Jun 2020 10:16:53 +0000 (12:16 +0200)]
 
[Ada] Do not expand 'Initialized in codepeer mode
gcc/ada/
	* exp_attr.adb (Expand_N_Attribute_Reference): Do not expand
	'Initialized in CodePeer mode.
Arnaud Charlet [Tue, 23 Jun 2020 07:56:34 +0000 (03:56 -0400)]
 
[Ada] Assert failure on incorrect code
gcc/ada/
	* sem_ch12.adb (Reset_Entity): Protect against malformed tree.
Arnaud Charlet [Mon, 22 Jun 2020 10:18:14 +0000 (06:18 -0400)]
 
[Ada] Double evaluation of predicate
gcc/ada/
	* sem_ch13.adb (Add_Predicates): Prevent analyzing twice the
	same pragma in case an inner package references the type with a
	predicate (as opposed to defining the type).
Eric Botcazou [Tue, 23 Jun 2020 09:53:53 +0000 (11:53 +0200)]
 
[Ada] Do not use maximal values from System in runtime units
gcc/ada/
	* libgnat/a-cfinve.adb (Int): Use subtype of Long_Long_Integer.
	* libgnat/a-cofove.adb (Int): Likewise.
	* libgnat/a-cgcaso.adb (T): Likewise.
	* libgnat/a-cogeso.adb (T): Likewise.
	* libgnat/g-debpoo.ads (Byte_Count): Use Long_Long_Integer'Size.
Piotr Trojanek [Tue, 23 Jun 2020 08:18:48 +0000 (10:18 +0200)]
 
[Ada] Simplify membership tests with N_Entity subtype
gcc/ada/
	* sem_ch12.adb: Replace list of N_Defining_... enumerations with
	N_Entity.
Piotr Trojanek [Mon, 22 Jun 2020 11:17:44 +0000 (13:17 +0200)]
 
[Ada] Refine type from Nat to Pos in Make_Index
gcc/ada/
	* sem_ch3.ads, sem_ch3.adb (Make_Index): Refined type of
	parameter.
	(Constrain_Index): Likewise.
	(Array_Type_Declaration): Refine type of a local counter
	variable; remove a trivially useless initialization.
Piotr Trojanek [Mon, 22 Jun 2020 11:48:43 +0000 (13:48 +0200)]
 
[Ada] Fix range check on constrained array with expanded index name
gcc/ada/
	* sem_ch3.adb (Analyze_Subtype_Declaration): Recognize both
	identifiers and expanded names; use high-level Is_Scalar_Type
	instead of low-level membership test.
Arnaud Charlet [Sun, 21 Jun 2020 08:27:07 +0000 (04:27 -0400)]
 
[Ada] Add support for compile time evaluation of Shift_Right_Arithmetic
gcc/ada/
	* sem_eval.adb (Eval_Intrinsic_Call, Fold_Shift): Add support
	for Shift_Right_Arithmetic and for signed integers.
	* exp_ch4.adb (Expand_N_Op_Rotate_Left,
	Expand_N_Op_Rotate_Right, Expand_N_Op_Shift_Left,
	Expand_N_Op_Shift_Right_Arithmetic): Minor reformatting and code
	cleanup to ensure a consistent handling. Update comments and add
	assertion.
Bob Duff [Mon, 22 Jun 2020 19:23:45 +0000 (15:23 -0400)]
 
[Ada] 
Ada2020: AI12-0180 Using subprograms and entries in invariants
gcc/ada/
	* sem_ch13.adb (Visible_Component): Enable this code for task
	and protected types, as well as record and private types.
	* sem_ch13.ads (Replace_Type_References_Generic): Update
	comment.  Move the efficiency comment into the body, because
	it's about the implementation.
 
Arnaud Charlet [Mon, 22 Jun 2020 06:59:37 +0000 (02:59 -0400)]
 
[Ada] Warn on unknown aspect
gcc/ada/
	* par-ch13.adb (Get_Aspect_Specifications): Generate a warning
	rather than an error on unknown aspects unless -gnatd2 is used.
	(Aspect_Specifications_Present): Improve detection of unknown
	aspects.
	* debug.adb (Debug_Flag_2): Update document.
Arnaud Charlet [Sun, 21 Jun 2020 17:52:29 +0000 (13:52 -0400)]
 
[Ada] Complete support for static intrinsic functions
gcc/ada/
	* sem_res.adb (Resolve_Call): Do not try to inline intrinsic
	calls.
Ed Schonberg [Sun, 21 Jun 2020 16:58:55 +0000 (12:58 -0400)]
 
[Ada] Ada_2020: Add aspect Aggregate to standard container units
gcc/ada/
	* exp_aggr.adb (Expand_N_Aggregate): A record aggregate requires
	a non-private type.
	* sem_ch13.adb (Valid_Assign_Indexed): New subprogram local to
	Resolve_Aspect_Aggregate, to handle the case when the
	corresponding name appearing in the aspect specification for an
	indexed aggregate is an overloaded operation.
	* libgnat/a-convec.ads, libgnat/a-convec.adb,
	libgnat/a-coinve.ads, libgnat/a-coinve.adb,
	libgnat/a-cobove.ads, libgnat/a-cobove.adb,
	libgnat/a-cdlili.ads, libgnat/a-cdlili.adb,
	libgnat/a-cbdlli.ads, libgnat/a-cbdlli.adb,
	libgnat/a-cohama.ads, libgnat/a-cihama.ads,
	libgnat/a-cbhama.ads, libgnat/a-cborma.ads,
	libgnat/a-ciorma.ads, libgnat/a-coorma.ads,
	libgnat/a-cihase.ads, libgnat/a-cohase.ads,
	libgnat/a-cbhase.ads, libgnat/a-cborse.ads,
	libgnat/a-ciorse.ads, libgnat/a-coorse.ads: Add Ada_2020 aspect
	Aggregate to types declared in standard containers, as well as
	new subprograms where required.
Arnaud Charlet [Sun, 21 Jun 2020 16:36:27 +0000 (12:36 -0400)]
 
[Ada] Add iterators over GNAT.Array_Split.Slice_Set
gcc/ada/
	* libgnat/g-arrspl.ads, libgnat/g-arrspl.adb (Create,
	First_Cursor, Advance, Has_Element): New.
Arnaud Charlet [Wed, 17 Jun 2020 11:41:34 +0000 (07:41 -0400)]
 
[Ada] AI12-0385 Predefined shifts and rotates should be static
gcc/ada/
	* Makefile.rtl: Add target pair for interfac.ads.
	* libgnat/interfac.ads: Add a comment.
	* libgnat/interfac__2020.ads: New, used for bootstrap purposes.
	* sem_util.adb (Is_Static_Function): Always return False for pre
	Ada 2020 to e.g. ignore the Static aspect in Interfaces for
	Ada < 2020.
Piotr Trojanek [Fri, 19 Jun 2020 15:14:42 +0000 (17:14 +0200)]
 
[Ada] Do not remove side effects from any object declarations in SPARK
gcc/ada/
	* exp_util.adb (Remove_Side_Effects): Move special-casing for
	GNATprove to be applied to all object declarations.