Commit Graph

182534 Commits

Author SHA1 Message Date
Andrew MacLeod
c25b504636 Fix trap in pointer conversion in op1_range.
Processing op1_range for conversion between a non-pointer and pointer
shouldnt do any fancy math.

	gcc/
	PR tree-optimization/97750
	* range-op.cc (operator_cast::op1_range): Handle pointers better.
	gcc/testsuite/
	* gcc.dg/pr97750.c: New.
2020-12-17 09:38:31 -05:00
Rainer Orth
d592ee3ada rtl-ssa: Include memmodel.h before tm_p.h
The RTL SSA merge broke SPARC bootstrap:

In file included from ./tm_p.h:4,
                 from /vol/gcc/src/hg/master/local/gcc/rtl-ssa.h:54,
                 from /vol/gcc/src/hg/master/local/gcc/fwprop.c:29:
/vol/gcc/src/hg/master/local/gcc/config/sparc/sparc-protos.h:45:47: error: use of enum 'memmodel' without previous declaration
 extern void sparc_emit_membar_for_model (enum memmodel, int, int);
                                               ^~~~~~~~

and similarly in rtl-ssa/functions.cc, rtl-ssa/changes.cc, and
rtl-ssa/insns.cc.

Fixed by moving the memmove.h include in rtl-ssa.h before tm_p.h.

Tested on sparc-sun-solaris2.11 and i386-pc-solaris2.11.


2020-12-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>

	gcc:
	* rtl-ssa.h: Include memmodel.h before tm_p.h.
2020-12-17 15:31:06 +01:00
Nathan Sidwell
b429f53eba bootstrap: Don't use strsignal [PR 98300]
Sadly strsignal is nonportable, so signal numbers it is then.

	c++tools/
	* server.cc (crash_signal): Don't use strsignal.
2020-12-17 06:07:18 -08:00
Jonathan Wakely
9f9dbc8e09 libstdc++: Fix -Wunused warning
As noted in PR 66146 comment 35, there is a new warning in the new
std::call_once implementation.

libstdc++-v3/ChangeLog:

	* src/c++11/mutex.cc (std::once_flag::_M_finish): Add
	maybe_unused attribute to variable used in assertion.
2020-12-17 14:03:00 +00:00
Jonathan Wakely
8dc63f13f0 libstdc++: Fix preprocessor condition [PR 98344]
libstdc++-v3/ChangeLog:

	PR libstdc++/98344
	* include/bits/semaphore_base.h: Fix preprocessor condition.
2020-12-17 14:03:00 +00:00
Jonathan Wakely
8cdca5f9c7 libstdc++: Move std::hash<std:🧵:id> to <bits/std_thread.h>
This makes the hash function available without including the whole of
<thread>, which is needed for <barrier>.

libstdc++-v3/ChangeLog:

	* include/bits/std_thread.h (hash<thread::id>): Move here,
	from ...
	* include/std/thread (hash<thread::id>): ... here.
2020-12-17 14:03:00 +00:00
Jonathan Wakely
f5feee6adc libstdc++: Regenerate autoconf files
I forgot to regenerate these files in r11-6137.

libstdc++-v3/ChangeLog:

	* config.h.in: Regenerate.
	* configure: Regenerate.
2020-12-17 14:02:59 +00:00
Nathan Sidwell
096164229a bootstrap: Fix some windows issues [PR 98300]
When breaking out the sample server from the gcc/cp directory, it lost
its check for mmap, and the sample resolver just assumed it was there.
Fixed thusly.  The non-mapping paths in module.cc weren't (recently)
excercised, and led to a signedness warning.  Finally I'd missed
c++tools's config.h.in in the gcc_update script.  There I took the
opportunity of adding a 'tools' segment of the dependency lists.

	PR bootstrap/98300
	contrib/
	* gcc_update: Add c++tools/config.h.in.
	c++tools/
	* configure.ac: Check for sys/mman.h.
	* resolver.cc: Don't assume mmap, O_CLOEXEC are available.  Use
	xmalloc.
	* config.h.in: Regenerated.
	* configure: Regenerated.
	gcc/cp/
	* module.cc: Fix ::read, ::write result signedness comparisons.
2020-12-17 05:57:13 -08:00
Nathan Sidwell
5357b1620c libcody: Remove nop asm
This asm was a useful place for gdb to drop a breakpoint and make it
clear where you were when debugging.  I took a punt that 'surely every
arch has a nop instruction'. Well, no, some apparently have nops with
operands (what, do nothing harder? :)

	libcody/
	* fatal.cc (HCF): Remove nop breakpoint lander.
2020-12-17 05:35:37 -08:00
Jakub Jelinek
4e7e7c1326 c++tools: Fix up c++tools for --with-gcc-major-version-only
Seems c++tools doesn't honor --with-gcc-major-version-only.
Our distro uses that flag and so everything is installed in
/usr/lib/gcc/<target>/11/...
/usr/libexec/gcc/<target>/11/...
except
/usr/libexec/gcc/<target>/11.0.0/g++-mapper-server

The following patch should fix that.

2020-12-17  Jakub Jelinek  <jakub@redhat.com>

	* configure.ac: Add GCC_BASE_VER.
	* Makefile.in (version): Remove variable.
	(gcc_version): New variable.
	(libexecsubdir): Use $(gcc_version) instead of $(version).
	* configure: Regenerated.
2020-12-17 14:31:05 +01:00
Jakub Jelinek
62cb9680e5 shrink-wrap: Don't put on incoming EDGE_CROSSING [PR98289]
As mentioned in the PR, shrink-wrapping disqualifies for prologue
placement basic blocks that have EDGE_CROSSING incoming edge.
I don't see why that is necessary, those edges seem to be redirected
just fine, both on x86_64 and powerpc64.  In the former case, they
are usually conditional jumps that patch_jump_insn can handle just fine,
after all, they were previously crossing and will be crossing after
the redirection too, just to a different label.  And in the powerpc64
case, it is a simple_jump instead that again seems to be handled by
patch_jump_insn just fine.
Sure, redirecting an edge that was previously not crossing to be crossing or
vice versa can fail, but that is not what shrink-wrapping needs.
Also tested in GCC 8 with this patch and don't see ICEs there either
(though, of course, I'm not suggesting we should backport this to release
branches).
The old ICEs could have been fixed by PR87475 fix or some other one
years ago.

2020-12-17  Jakub Jelinek  <jakub@redhat.com>

	PR rtl-optimization/98289
	* shrink-wrap.c (can_get_prologue): Don't punt on EDGE_CROSSING
	incoming edges.

	* gcc.target/i386/pr98289.c: New test.
	* gcc.dg/torture/pr98289.c: New test.
2020-12-17 13:28:48 +01:00
Arnaud Charlet
6a6926635c [Ada] Performance of CW_Membership
gcc/ada/

	* libgnat/a-tags.ads, libgnat/a-tags.adb (CW_Membership): Move
	to spec to allow inlining.

gcc/testsuite/

	* gnat.dg/debug15.adb: Remove fragile testcase.
2020-12-17 05:49:25 -05:00
Arnaud Charlet
68dd664912 [Ada] Remove unused subprograms in validsw
gcc/ada/

	* checks.adb: Remove, not used.
	* checks.ads: Likewise.
	* exp_ch6.adb: Likewise.
	* exp_ch7.adb: Likewise.
	* exp_ch7.ads: Likewise.
	* exp_fixd.adb: Likewise.
	* exp_tss.adb: Likewise.
	* exp_tss.ads: Likewise.
	* exp_util.adb: Likewise.
	* exp_util.ads: Likewise.
	* gnat1drv.adb: Likewise.
	* libgnat/s-finmas.adb: Likewise.
	* libgnat/s-finmas.ads: Likewise.
	* 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.
	* repinfo.adb: Likewise.
	* repinfo.ads: Likewise.
	* rtsfind.ads: Likewise.
	* sem_aux.adb: Likewise.
	* sem_aux.ads: Likewise.
	* sem_ch13.adb: Likewise.
	* sem_ch13.ads: Likewise.
	* sem_util.adb (Validity_Checks_Suppressed, TSS,
	Is_All_Null_Statements, Known_Non_Negative,
	Non_Limited_Designated_Type, Get_Binary_Nkind, Get_Unary_Nkind,
	Is_Protected_Operation, Number_Components, Package_Body,
	Validate_Independence, Independence_Checks): Likewise; update
	comments.
	* targparm.adb: Likewise.
	* targparm.ads (AAM, AAM_Str, Fractional_Fixed_Ops,
	Frontend_Layout, Make_Detach_Call, Target_Has_Fixed_Ops, Detach,
	Back_End_Layout, Create_Dynamic_SO_Ref, Get_Dynamic_SO_Entity,
	Is_Dynamic_SO_Ref, Is_Static_SO_Ref,
	Fractional_Fixed_Ops_On_Target): Likewise.
	* validsw.adb (Save_Validity_Check_Options,
	Set_Default_Validity_Check_Options): Likewise.
	* validsw.ads: Likewise.
2020-12-17 05:49:25 -05:00
Arnaud Charlet
acf190b208 [Ada] Remove unused files
gcc/ada/

	* symbols.ads, symbols.adb: Removed no longer used.
2020-12-17 05:49:25 -05:00
Arnaud Charlet
98032cd46f [Ada] Code cleanup: remove Old_Requires_Transient_Scope
gcc/ada/

	* sem_util.adb (New_Requires_Transient_Scope): Renamed
	Requires_Transient_Scope.
	(Requires_Transient_Scope, Old_Requires_Transient_Scope,
	Results_Differ): Removed.
	* debug.adb: Remove -gnatdQ.
2020-12-17 05:49:25 -05:00
Eric Botcazou
e2ff35b910 [Ada] Minor comment fix in System.Val_Real
gcc/ada/

	* libgnat/s-valrea.adb (Need_Extra): Fix comment.
2020-12-17 05:49:24 -05:00
Piotr Trojanek
96c1f71463 [Ada] Prevent early exits without restoring a global variable
gcc/ada/

	* sem_ch5.adb (Analyze_Case_Statement): Move modification of
	Unblocked_Exit_Count after early return statements; fix typo in
	comment.
2020-12-17 05:49:24 -05:00
Piotr Trojanek
445032728d [Ada] Reduce scopes of local variables for case and if statements
gcc/ada/

	* sem_ch5.adb (Analyze_Case_Statement): Change local variable
	Exp to constant; remove unreferenced Last_Choice variable;
	reduce scope of other variables.
	(Analyze_If_Statement): Reduce scope of a local variable; add
	comment.
2020-12-17 05:49:24 -05:00
Piotr Trojanek
7948214670 [Ada] Refine type of a multi unit index number
gcc/ada/

	* opt.ads (Multiple_Unit_Index): Refine type from Int to Nat.
2020-12-17 05:49:24 -05:00
Piotr Trojanek
2f29ceb054 [Ada] Prevent In_Check_Node routine from going too far in the parent chain
gcc/ada/

	* sem_util.adb (In_Check_Node): Add guard and rename Node to
	Par, just like it is done in surrounding routines, e.g.
	In_Assertion_Expression_Pragma and In_Generic_Formal_Package.
2020-12-17 05:49:23 -05:00
Bob Duff
3e05da6849 [Ada] Ada2020: AI12-0400 Ambiguities associated with Vector
gcc/ada/

	* libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads,
	libgnat/a-cdlili.adb, libgnat/a-cdlili.ads,
	libgnat/a-cidlli.adb, libgnat/a-cidlli.ads,
	libgnat/a-cobove.adb, libgnat/a-cobove.ads,
	libgnat/a-coinve.adb, libgnat/a-coinve.ads,
	libgnat/a-convec.adb, libgnat/a-convec.ads: Add *_Vector
	operations, remove default for Count, rename Append_One to be
	Append.
2020-12-17 05:49:23 -05:00
Arnaud Charlet
b7e68e7de0 [Ada] Crash on if expression inside declare expression
gcc/ada/

	* sem_res.adb (Resolve_Declare_Expression): Need to establish a
	transient scope in case Expression (N) requires actions to be
	wrapped.  Code cleanup.
	* exp_ch7.adb, exp_ch11.adb: Code cleanup.
2020-12-17 05:49:23 -05:00
Piotr Trojanek
81392ae7ba [Ada] Consistent wording for missing -gnat2020 switch
gcc/ada/

	* par-ch3.adb (P_Identifier_Declarations): Reuse
	Error_Msg_Ada_2020_Feature for object renaming without subtype.
	* par-ch4.adb (P_Primary): Likewise for target name.
	(P_Iterated_Component_Association): Likewise for iterated
	component.
	(P_Declare_Expression): Likewise for declare expression.
	* par-ch6.adb (P_Formal_Part): Likewise for aspect on formal
	parameter.
	* sem_aggr.adb (Resolve_Delta_Aggregate): Ditto.
	* sem_ch8.adb (Analyze_Object_Renaming): Reuse
	Error_Msg_Ada_2020_Feature.
	* sem_ch13.adb (Validate_Aspect_Aggregate): Reuse
	Error_Msg_Ada_2020_Feature; use lower case for "aspect" and
	don't use underscore for "Ada_2020"; don't give up on analysis
	in Ada 2012 mode.
	(Validate_Aspect_Stable_Properties): Reuse
	Error_Msg_Ada_2020_Feature; use lower case for "aspect"; minor
	style fixes.
2020-12-17 05:49:23 -05:00
Arnaud Charlet
84be0369c8 [Ada] Remove discriminant checks processing in gigi
gcc/ada/

	* sem_ch4.adb (Analyze_Selected_Component): Request a compile
	time error replacement in Apply_Compile_Time_Constraint_Error
	in case of an invalid field.
	* sem_ch3.adb (Create_Constrained_Components): Take advantage of
	Gather_Components also in the case of a record extension and
	also constrain records in the case of compile time known discriminant
	values, as already done in gigi.
	* sem_util.ads, sem_util.adb (Gather_Components): New parameter
	Allow_Compile_Time to allow compile time known (but non static)
	discriminant values, needed by Create_Constrained_Components,
	and new parameter Include_Interface_Tag.
	(Is_Dependent_Component_Of_Mutable_Object): Use Original_Node to
	perform check on the original tree.
	(Is_Object_Reference): Likewise.  Only call Original_Node when
	relevant via a new function Safe_Prefix.
	(Is_Static_Discriminant_Component, In_Check_Node): New.
	(Is_Actual_Out_Or_In_Out_Parameter): New.
	* exp_ch4.adb (Expand_N_Selected_Component): Remove no longer needed
	code preventing evaluating statically discriminants in more cases.
	* exp_ch5.adb (Expand_N_Loop_Statement): Simplify expansion of loops
	with an N_Raise_xxx_Error node to avoid confusing the code generator.
	(Make_Component_List_Assign): Try to find a constrained type to
	extract discriminant values from, so that the case statement
	built gets an opportunity to be folded by
	Expand_N_Case_Statement.
	(Expand_Assign_Record): Update comments, code cleanups.
	* sem_attr.adb (Analyze_Attribute): Perform most of the analysis
	on the original prefix node to deal properly with a prefix rewritten
	as a N_Raise_xxx_Error.
	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Handle properly
	a discrete subtype definition being rewritten as N_Raise_xxx_Error.
	* sem_ch8.adb (Analyze_Object_Renaming): Handle N_Raise_xxx_Error
	nodes as part of the expression being renamed.
	* sem_eval.ads, sem_eval.adb (Fold, Eval_Selected_Component): New.
	(Compile_Time_Known_Value, Expr_Value, Expr_Rep_Value): Evaluate
	static discriminant component values.
	* sem_res.adb (Resolve_Selected_Component): Call
	Eval_Selected_Component.
2020-12-17 05:49:22 -05:00
Piotr Trojanek
4d3a70f2d1 [Ada] Move folding of unchecked conversions from expansion to evaluation
gcc/ada/

	* exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Remove
	folding of discrete values.
	* exp_intr.adb (Expand_Unc_Conversion): Analyze, resolve and
	evaluate (if possible) calls to instances of
	Ada.Unchecked_Conversion after they have been expanded into
	N_Unchecked_Type_Conversion.
	* sem_eval.adb (Eval_Unchecked_Conversion): Add folding of
	discrete values.
2020-12-17 05:49:22 -05:00
Eric Botcazou
97919732a8 [Ada] Do not use exponentiation for common bases in floating-point Value
gcc/ada/

	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Likewise.
	* exp_imgv.adb (Expand_Value_Attribute): Use RE_Value_Long_Float in
	lieu of RE_Value_Long_Long_Float as fallback for fixed-point types.
	Also use it for Long_Long_Float if it has same size as Long_Float.
	* libgnat/s-imgrea.adb: Replace Powten_Table with Powen_LLF.
	* libgnat/s-powflt.ads: New file.
	* libgnat/s-powlfl.ads: Likewise.
	* libgnat/s-powtab.ads: Rename to...
	* libgnat/s-powllf.ads: ...this.
	* libgnat/s-valflt.ads: Add with clause for System.Powten_Flt and
	pass its table as actual parameter to System.Val_Real.
	* libgnat/s-vallfl.ads: Likewise for System.Powten_LFlt.
	* libgnat/s-valllf.ads: Likewise for System.Powten_LLF.
	* libgnat/s-valrea.ads: Add Maxpow and Powten_Address parameters.
	* libgnat/s-valrea.adb: Add pragma Warnings (Off).
	(Need_Extra): New boolean constant.
	(Precision_Limit): Set it according to Need_Extra.
	(Impl): Adjust actual parameter.
	(Integer_to_Rea): Add assertion on the machine radix. Take into
	account the extra digit only if Need_Extra is true.  Reimplement
	the computation of the final value for bases 2, 4, 8, 10 and 16.
	* libgnat/s-valued.adb (Impl): Adjust actual parameter.
	(Scan_Decimal): Add pragma Unreferenced.
	(Value_Decimal): Likewise.
	* libgnat/s-valuef.adb (Impl): Adjust actual parameter.
	* libgnat/s-valuer.ads (Floating): Remove.
	(Round): New formal parameter.
	* libgnat/s-valuer.adb (Round_Extra): New procedure.
	(Scan_Decimal_Digits): Use it to round the extra digit if Round
	is set to True in the instantiation.
	(Scan_Integral_Digits): Likewise.
2020-12-17 05:49:22 -05:00
Erwan Le Guillou
5957283fa4 [Ada] Fix small typo in comments.
gcc/ada/

	* libgnat/system-lynxos178-ppc.ads,
	libgnat/system-lynxos178-x86.ads: Fix small typo in comments.
2020-12-17 05:49:21 -05:00
Eric Botcazou
211d0b4f03 [Ada] Do not generate encodings for fixed-point types by default
gcc/ada/

	* exp_dbug.adb (Get_Encoded_Name): Generate encodings for fixed
	point types only if -fgnat-encodings=all is specified.
2020-12-17 05:49:21 -05:00
Justin Squirek
f6219730a1 [Ada] Crash on discriminant check with current instance
gcc/ada/

	* checks.adb (Build_Discriminant_Checks): Add condition to
	replace references to the current instance of the type when we
	are within an Init_Proc.
	(Replace_Current_Instance): Examine a given node and replace the
	current instance of the type with the corresponding _init
	formal.
	(Search_And_Replace_Current_Instance): Traverse proc which calls
	Replace_Current_Instance in order to replace all references
	within a given expression.
2020-12-17 05:49:21 -05:00
Piotr Trojanek
3838145371 [Ada] Better diagnostic for new language features
gcc/ada/

	* par-ch12.adb (P_Formal_Derived_Type_Definition): Complain
	about formal type with aspect specification, which only become
	legal in Ada 2020.
	* par-ch9.adb (P_Protected_Operation_Declaration_Opt): Reuse
	Error_Msg_Ada_2005_Extension.
	(P_Entry_Declaration): Likewise.
	* scng.adb (Scan): Improve diagnostics for target_name; emit
	error, but otherwise continue in earlier than Ada 2020 modes.
2020-12-17 05:49:21 -05:00
Ed Schonberg
11ad366da5 [Ada] Spurious discriminant check on bounded synchronized queue
gcc/ada/

	* libgnat/a-cbsyqu.ads (Implementation): Provide a box
	initialization for the element array used internally to
	represent the queue, so that its components are properly
	initialized if the given element type has default
	initialization. Suppress warnings on the rest of the package in
	case the element type has no default or discriminant, because it
	is bound to be confusing to the user.
2020-12-17 05:49:20 -05:00
Arnaud Charlet
7fbcb0c72e [Ada] Assert failure on b38105a in -gnat95 mode
gcc/ada/

	* sem_util.adb (Inherit_Predicate_Flags): No-op before Ada 2012.
2020-12-17 05:49:20 -05:00
Arnaud Charlet
148039493e [Ada] Compiler crash on protected component of controlled type
gcc/ada/

	* exp_ch7.adb (Make_Final_Call, Make_Init_Call): Take protected
	types into account.
	* sem_util.ads: Fix typo.
2020-12-17 05:49:20 -05:00
Yannick Moy
9ed2b86d1b [Ada] Fixes for GNAT error/warning messages
gcc/ada/

	* checks.adb: Rework error messages.
	* exp_ch3.adb: Likewise.
	* freeze.adb: Likewise.
	* lib-load.adb: Likewise.
	* par-ch12.adb: Likewise.
	* par-ch3.adb: Likewise.
	* par-ch4.adb: Likewise.
	* par-ch9.adb: Likewise.
	* sem_aggr.adb: Likewise.
	* sem_attr.adb: Likewise.
	* sem_cat.adb: Likewise.
	* sem_ch10.adb: Likewise.
	* sem_ch12.adb: Likewise.
	(Instantiate_Type): Fix CODEFIX comment, applicable only on
	continuation message, and identify the second message as a
	continuation.
	* sem_ch13.adb: Rework error messages.
	* sem_ch3.adb: Likewise.
	* sem_ch4.adb: Likewise.
	* sem_ch5.adb: Likewise.
	* sem_ch6.adb: Likewise.
	* sem_ch8.adb: Likewise.
	* sem_ch9.adb: Likewise.
	* sem_prag.adb: Likewise.
	* sem_res.adb: Likewise.
	* sem_util.adb: Likewise.
	(Wrong_Type): Fix CODEFIX comment, applicable only on
	continuation message, and identify the second message as a
	continuation.
	* symbols.adb: Rework error messages.

gcc/testsuite/

	* gnat.dg/interface6.adb, gnat.dg/not_null.adb,
	gnat.dg/protected_func.adb: Adjust error messages.
2020-12-17 05:49:20 -05:00
Arnaud Charlet
043d137921 [Ada] Spurious error on Type'Access and <>
gcc/ada/

	* sem_attr.adb (OK_Self_Reference): Return True if node does not
	come from source (e.g. a rewritten aggregate).
2020-12-17 05:49:19 -05:00
Piotr Trojanek
337cbb9f9e [Ada] Style cleanups in Parse_Aspect_Stable_Properties
gcc/ada/

	* sem_ch13.adb (Parse_Aspect_Stable_Properties): Fix style;
	limit the scope of local variables; remove extra assignment in
	Extract_Entity.
	(Validate_Aspect_Stable_Properties): Simplify with procedural
	Next.
2020-12-17 05:49:19 -05:00
Marius Hillenbrand
33f925094d IBM Z: Detect libc's float_t behavior on cross compiles
When cross-compiling GCC with target libc headers available and
configure option --enable-s390-excess-float-precision has been omitted,
identify whether they clamp float_t to double or respect
__FLT_EVAL_METHOD__ via a compile test that coerces the build-system
compiler to use the target headers. Then derive the setting from that.

gcc/ChangeLog:

2020-12-16  Marius Hillenbrand  <mhillen@linux.ibm.com>

	* configure.ac: Change --enable-s390-excess-float-precision
	default behavior for cross compiles with target headers.
	* configure: Regenerate.
	* doc/install.texi: Adjust documentation.
2020-12-17 11:47:23 +01:00
Marius Hillenbrand
2f49508599 MAINTAINERS: Add myself for write after approval.
ChangeLog:

2020-12-17  Marius Hillenbrand  <mhillen@linux.ibm.com>

	* MAINTAINERS (Write After Approval): Add myself.
2020-12-17 11:36:43 +01:00
Tobias Burnus
ba9fa68405 Fortran: Delay vtab generation until after parsing [PR92587]
gcc/fortran/ChangeLog:

	PR fortran/92587
	* match.c (gfc_match_assignment): Move gfc_find_vtab call from here ...
	* resolve.c (gfc_resolve_code): ... to here.

gcc/testsuite/ChangeLog:

	PR fortran/92587
	* gfortran.dg/finalize_37.f90: New test.
2020-12-17 10:39:09 +01:00
Harald Anlauf
c09deceb53 PR fortran/98307 - Dependency check fails when using "allocatable"
The dependency check for FORALL constructs already handled pointer
components to derived types, but missed allocatables.  Fix that.

gcc/fortran/ChangeLog:

	PR fortran/98307
	* trans-stmt.c (check_forall_dependencies): Extend dependency
	check to allocatable components of derived types.

gcc/testsuite/ChangeLog:

	PR fortran/98307
	* gfortran.dg/forall_19.f90: New test.
2020-12-17 10:31:55 +01:00
Ian Lance Taylor
6f8486523f test: add new Go tests from source repo 2020-12-16 19:43:20 -08:00
Ian Lance Taylor
ba74e74ac6 test: add new Go tests from source repo 2020-12-16 19:38:08 -08:00
Takayuki 'January June' Suwa
40bf68bbe0 gcc: xtensa: add optimizations for shift operations
2020-12-16  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
gcc/
	* config/xtensa/xtensa.md (*ashlsi3_1, *ashlsi3_3x, *ashrsi3_3x)
	(*lshrsi3_3x): New patterns.

gcc/testsuite/
	* gcc.target/xtensa/shifts.c: New test.
2020-12-16 17:53:17 -08:00
GCC Administrator
eefe499fdf Daily bump. 2020-12-17 00:16:37 +00:00
Richard Sandiford
0b76990a9d fwprop: Rewrite to use RTL SSA
This patch rewrites fwprop.c to use the RTL SSA framework.  It tries
as far as possible to mimic the old behaviour, even in caes where
that doesn't fit naturally with the new framework.  I've added ???
comments to mark those places, but I think “fixing” them should
be done separately to make bisection easier.

In particular:

* The old implementation iterated over uses, and after a successful
  substitution, the new insn's uses were added to the end of the list.
  The pass still processed those uses, but because it processed them at
  the end, it didn't fully optimise one instruction before propagating
  it into the next.

  The new version follows the same approach for comparison purposes,
  but I'd like to drop that as a follow-on patch.

* The old implementation operated on single use sites (DF_REF_LOCs).
  This doesn't work well for instructions with match_dups, where it's
  necessary to update both an operand and its dups at the same time.
  For example, attempting to substitute into a divmod instruction would
  fail because only the div or the mod side would be updated.

  The new version again follows this to some extent for comparison
  purposes (although not exactly).  Again I'd like to drop it as a
  follow-on patch.

  One difference is that if a register occurs in multiple MEM addresses
  in a set, the new version will try to update them all at once.  This is
  what causes the SVE ACLE st4* output to improve.

Also, the old version didn't naturally guarantee termination (PR79405),
whereas the new one does.

gcc/
	* fwprop.c: Rewrite to use the RTL SSA framework.

gcc/testsuite/
	* gcc.dg/rtl/x86_64/test-return-const.c.before-fwprop.c: Don't
	expect insn updates to be deferred.
	* gcc.target/aarch64/sve/acle/asm/st4_s8.c: Expect the addition
	to be folded into the address.
	* gcc.target/aarch64/sve/acle/asm/st4_u8.c: Likewise.
2020-12-17 00:15:12 +00:00
Richard Sandiford
73b7582775 Add rtl-ssa
This patch adds the RTL SSA infrastructure itself.  The following
fwprop.c patch will make use of it.

gcc/
	* configure.ac: Add rtl-ssa to the list of dependence directories.
	* configure: Regenerate.
	* Makefile.in (rtl-ssa-warn): New variable.
	(OBJS): Add the rtl-ssa object files.
	* emit-rtl.h (rtl_data::ssa): New field.
	* rtl-ssa.h: New file.
	* system.h: Include <functional> when INCLUDE_FUNCTIONAL is defined.
	* rtl-ssa/access-utils.h: Likewise.
	* rtl-ssa/accesses.h: New file.
	* rtl-ssa/accesses.cc: Likewise.
	* rtl-ssa/blocks.h: New file.
	* rtl-ssa/blocks.cc: Likewise.
	* rtl-ssa/change-utils.h: Likewise.
	* rtl-ssa/changes.h: New file.
	* rtl-ssa/changes.cc: Likewise.
	* rtl-ssa/functions.h: New file.
	* rtl-ssa/functions.cc: Likewise.
	* rtl-ssa/insn-utils.h: Likewise.
	* rtl-ssa/insns.h: New file.
	* rtl-ssa/insns.cc: Likewise.
	* rtl-ssa/internals.inl: Likewise.
	* rtl-ssa/is-a.inl: Likewise.
	* rtl-ssa/member-fns.inl: Likewise.
	* rtl-ssa/movement.h: Likewise.
2020-12-17 00:15:11 +00:00
Richard Sandiford
47d52e17ad doc: Add documentation for rtl-ssa
This patch adds some documentation to rtl.texi about the SSA form.
It only really describes the high-level structure -- I think for
API-level stuff it's better to rely on function comments instead.

gcc/
	* doc/rtl.texi (RTL SSA): New node.
2020-12-17 00:15:11 +00:00
Richard Sandiford
a20cc01679 rtlanal: Add simple_regno_set
This patch adds a routine for finding a “simple” SET for a register
definition.  See the comment in the patch for details.

gcc/
	* rtl.h (simple_regno_set): Declare.
	* rtlanal.c (simple_regno_set): New function.
2020-12-17 00:15:10 +00:00
Richard Sandiford
04ee46ed1c rtlanal: Add some new helper classes
This patch adds some classes for gathering the list of registers
and memory that are read and written by an instruction, along
with various properties about the accesses.  In some ways it's
similar to the information that DF collects for registers,
but extended to memory.  The main reason for using it instead
of DF is that it can analyse tentative changes to instructions
before they've been committed.

The classes also collect general information about the instruction,
since it's cheap to do and helps to avoid multiple walks of the same
RTL pattern.

I've tried to optimise the code quite a bit, since with later patches
it becomes relatively performance-sensitive.  See the discussion in
the comments for the trade-offs involved.

I put the declarations in a new rtlanal.h header file since it
seemed a bit excessive to put so much new inline stuff in rtl.h.

gcc/
	* rtlanal.h: New file.
	(MEM_REGNO): New constant.
	(rtx_obj_flags): New namespace.
	(rtx_obj_reference, rtx_properties): New classes.
	(growing_rtx_properties, vec_rtx_properties_base): Likewise.
	(vec_rtx_properties): New alias.
	* rtlanal.c: Include it.
	(rtx_properties::try_to_add_reg): New function.
	(rtx_properties::try_to_add_dest): Likewise.
	(rtx_properties::try_to_add_src): Likewise.
	(rtx_properties::try_to_add_pattern): Likewise.
	(rtx_properties::try_to_add_insn): Likewise.
	(vec_rtx_properties_base::grow): Likewise.
2020-12-17 00:15:09 +00:00
Richard Sandiford
a240ea024d recog: Add an RAII class for undoing insn changes
When using validate_change to make a group of changes, you have
to remember to cancel them if something goes wrong.  This patch
adds an RAII class to make that easier.  See the comments in the
patch for details and examples.

gcc/
	* recog.h (insn_change_watermark): New class.
2020-12-17 00:15:08 +00:00