Martin Liska [Mon, 19 Oct 2020 08:52:53 +0000 (10:52 +0200)]
IPA: fix one more UBSAN error
It fixes:
/home/marxin/Programming/gcc2/gcc/ipa-modref-tree.h:482:22: runtime error: load of value 255, which is not a valid value for type 'bool'
#0 0x18e5df3 in modref_tree<int>::merge(modref_tree<int>*, vec<modref_parm_map, va_heap, vl_ptr>*) /home/marxin/Programming/gcc2/gcc/ipa-modref-tree.h:482
#1 0x18dc180 in ipa_merge_modref_summary_after_inlining(cgraph_edge*) /home/marxin/Programming/gcc2/gcc/ipa-modref.c:1779
#2 0x18c1c72 in inline_call(cgraph_edge*, bool, vec<cgraph_edge*, va_heap, vl_ptr>*, int*, bool, bool*) /home/marxin/Programming/gcc2/gcc/ipa-inline-transform.c:492
#3 0x4a3589c in inline_small_functions /home/marxin/Programming/gcc2/gcc/ipa-inline.c:2216
#4 0x4a3b230 in ipa_inline /home/marxin/Programming/gcc2/gcc/ipa-inline.c:2697
#5 0x4a3d902 in execute /home/marxin/Programming/gcc2/gcc/ipa-inline.c:3096
#6 0x1edf831 in execute_one_pass(opt_pass*) /home/marxin/Programming/gcc2/gcc/passes.c:2509
#7 0x1ee26af in execute_ipa_pass_list(opt_pass*) /home/marxin/Programming/gcc2/gcc/passes.c:2936
#8 0x103f31b in ipa_passes /home/marxin/Programming/gcc2/gcc/cgraphunit.c:2700
#9 0x103fb40 in symbol_table::compile() /home/marxin/Programming/gcc2/gcc/cgraphunit.c:2777
#10 0x104092b in symbol_table::finalize_compilation_unit() /home/marxin/Programming/gcc2/gcc/cgraphunit.c:3022
#11 0x235723b in compile_file /home/marxin/Programming/gcc2/gcc/toplev.c:485
#12 0x235fff9 in do_compile /home/marxin/Programming/gcc2/gcc/toplev.c:2321
#13 0x23605fc in toplev::main(int, char**) /home/marxin/Programming/gcc2/gcc/toplev.c:2460
#14 0x4e2b93b in main /home/marxin/Programming/gcc2/gcc/main.c:39
#15 0x7ffff6f0ae09 in __libc_start_main ../csu/libc-start.c:314
#16 0x9a0be9 in _start (/home/marxin/Programming/gcc2/objdir/gcc/cc1+0x9a0be9)
gcc/ChangeLog:
* ipa-modref.c (compute_parm_map): Clear vector.
Richard Biener [Mon, 19 Oct 2020 09:30:46 +0000 (11:30 +0200)]
tree-optimization/97486 - avoid edge insertion in SLP vectorizing
This avoids edge inserting and eventual splitting during BB SLP
vectorization for now.
2020-10-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/97486
* tree-vect-slp.c (vect_slp_function): Split after stmts
ending a BB.
* gcc.dg/vect/bb-slp-pr97486.c: New testcase.
Jonathan Wakely [Mon, 19 Oct 2020 10:18:42 +0000 (11:18 +0100)]
libstdc++: Remove unused header
This header was not part of the patch submitted and reviewed, and was
not added to include/Makefile.am so never gets installed anyway. It
appears to have been committed by mistake, so let's remove it.
libstdc++-v3/ChangeLog:
* include/precompiled/expc++.h: Removed.
Jonathan Wakely [Mon, 19 Oct 2020 09:24:03 +0000 (10:24 +0100)]
doc: Add closing parenthesis to -ffat-lto-objects docs
gcc/ChangeLog:
* doc/invoke.texi (OPptimize Options): Add missing closing
parenthesis.
Ed Schonberg [Fri, 10 Jul 2020 15:13:57 +0000 (11:13 -0400)]
[Ada] Ada_2020: Implement Key_Expression for named container aggregates
gcc/ada/
* par-ch4.adb: (P_Aggregate_Or_Paren_Expr): Recognize
Iterated_Element_Component.
(P_Iterated_Component_Association): Rebuild node as an Iterated_
Element_Association when Key_Expression is present, and attach
either the Loop_Parameter_Specification or the
Iterator_Specification to the new node.
* sem_aggr.adb: (Resolve_Container_Aggregate):
Resolve_Iterated_Association handles bota Iterated_Component_
and Iterated_Element_Associations, in which case it analyzes and
resoles the orresponding Key_Expression.
* exp_aggr.adb (Expand_Iterated_Component): If a Key_Expression
is present, use it as the required parameter in the call to the
insertion routine for the destination container aggregate. Call
this routine for both kinds of Iterated_Associations.
Arnaud Charlet [Fri, 10 Jul 2020 12:21:53 +0000 (08:21 -0400)]
[Ada] Missing check on array concatenation
gcc/ada/
* exp_ch4.adb (Expand_Concatenate): Enable needed range checks.
Bob Duff [Fri, 10 Jul 2020 11:37:33 +0000 (07:37 -0400)]
[Ada] Suppress warnings in expansion of "for ... of" loops
gcc/ada/
* exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration):
Set the Warnings_Off flag on the pointer object used in the
expansion of iterators and similar.
Eric Botcazou [Fri, 10 Jul 2020 08:28:45 +0000 (10:28 +0200)]
[Ada] Use alternate stack for signal handling on PowerPC/Linux
gcc/ada/
* Makefile.rtl (PowerPC/Linux): Use s-taspri__posix.ads instead
of s-taspri__posix-noaltstack.ads for s-taspri.ads.
Piotr Trojanek [Thu, 9 Jul 2020 20:16:46 +0000 (22:16 +0200)]
[Ada] Remove excessive guards in building predicate functions
gcc/ada/
* sem_ch13.adb (Add_Call): Remove excessive condition and
unnecessary call to Set_Has_Predicates.
Yannick Moy [Thu, 9 Jul 2020 09:52:49 +0000 (11:52 +0200)]
[Ada] Alternative display of multi-line messages for GNATprove
gcc/ada/
* debug.adb: Use debug switch -gnatdF for this alternative
display of messages.
* errout.adb (Output_Messages): Alternative display when -gnatdF
is used.
* erroutc.adb (Output_Msg_Text): Likewise.
Arnaud Charlet [Thu, 9 Jul 2020 12:26:37 +0000 (08:26 -0400)]
[Ada] AI12-0352: Early derivation and equality of untagged types
gcc/ada/
* sem_ch6.adb (Check_Untagged_Equality): Check for AI12-0352.
Ed Schonberg [Wed, 8 Jul 2020 13:04:16 +0000 (09:04 -0400)]
[Ada] Compiler abort on in_out function parameter with type invariant
gcc/ada/
* exp_ch6.adb (Add_View_Conversion_Invariants): Do not insert
generated invariant checks when the call is a function call.
These tests are properly inserted in the code in procedure
Insert_Post_Call_Actions, which takes care of finding the proper
insertion point for the checks.
(Insert_Post_Call_Actions): Add question marks to indicate
possible gap in handling function calls that appear as aggregate
components.
Arnaud Charlet [Thu, 9 Jul 2020 09:36:18 +0000 (05:36 -0400)]
[Ada] Wrong freezing for expression function with contracts in a generic
gcc/ada/
* contracts.adb (Process_Preconditions_For): Do not exclude
instances.
* sem_ch4.adb (Analyze_Quantified_Expression): Disable spurious
warning on internally generated variables.
Ghjuvan Lacambre [Thu, 30 Jan 2020 10:47:00 +0000 (11:47 +0100)]
[Ada] Implement initialization of CUDA runtime
gcc/ada/
* debug.adb: Document -gnatd_c flag as being used for CUDA.
* gnat_cuda.ads: New file.
* gnat_cuda.adb: New file.
* rtsfind.ads: Add Interfaces_C_Strings package and
RE_Fatbin_Wrapper, RE_Register_Fat_Binary,
RE_Register_Fat_Binary_End, RE_Register_Function, RE_Chars_Ptr,
RE_New_Char_Array entities.
* rtsfind.adb: Create new Interfaces_C_Descendant subtype,
handle it.
* sem_ch7.adb (Analyze_Package_Body_Helper): Call CUDA init
procedure.
* sem_prag.adb (Analyze_Pragma): Call Add_Cuda_Kernel procedure.
* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add gnat_cuda.o.
Bob Duff [Tue, 7 Jul 2020 21:29:44 +0000 (17:29 -0400)]
[Ada] Expanded names in ghost assignments
gcc/ada/
* ghost.adb (Whole_Object_Ref): New function to compute the name
of the whole object.
(Mark_And_Set_Ghost_Assignment): Rewrite to use
Whole_Object_Ref. We need to partly analyze the left-hand side
in order to distinguish expanded names and record components.
* lib-xref.ads, lib-xref.adb (Deferred_References): Move table
to body, and add Defer_Reference to update the table, avoiding
duplicates.
(Generate_Reference): Avoid duplicates.
* sem_ch8.ads, sem_ch8.adb (Find_Direct_Name): Remove _OK
parameters, which are no longer needed. Ignore errors in
Ignore_Errors mode.
* sem_util.ads, sem_util.adb (Preanalyze_Without_Errors): Make
this public, so we can call it from Ghost.
* errout.ads, scng.adb, sem_prag.adb: Minor.
Ghjuvan Lacambre [Mon, 6 Jul 2020 13:56:28 +0000 (15:56 +0200)]
[Ada] Do not replace bounds for packed arrays that depend on discriminants
gcc/ada/
* exp_attr.adb (Expand_N_Attribute_Reference): Check if type
depends on discriminant.
Bob Duff [Tue, 7 Jul 2020 18:36:50 +0000 (14:36 -0400)]
[Ada]
Ada2020: AI12-0304 Put_Image attrs of lang-def types
gcc/ada/
* libgnat/a-coinve.adb, libgnat/a-cidlli.adb (Put_Image): Call
Iterate.
Arnaud Charlet [Tue, 7 Jul 2020 13:09:32 +0000 (09:09 -0400)]
[Ada] ACATS 4.1R - Exception missed
gcc/ada/
* sem_aggr.adb (Resolve_Record_Aggregate): Properly apply
subtype constraints when using a Default_Value.
* freeze.adb: Fix typo.
Yannick Moy [Mon, 6 Jul 2020 12:58:28 +0000 (14:58 +0200)]
[Ada] Reject use of Relaxed_Initialization on scalar/access param or result
gcc/ada/
* sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Fix bug
where a call to Error_Msg_N leads to crash due to
Error_Msg_Name_1 being removed by the call, while a subsequent
call to Error_Msg_N tries to use it. The variable
Error_Msg_Name_1 should be restored prior to the next call. Also
add checking for the new rules.
Arnaud Charlet [Mon, 29 Jun 2020 08:22:35 +0000 (04:22 -0400)]
[Ada] No range check on fixed point to integer conversion
gcc/ada/
* checks.adb (Apply_Type_Conversion_Checks): Minor code clean
up.
* exp_ch4.adb (Discrete_Range_Check): Optimize range checks.
Update comments.
(Expand_N_Type_Conversion): Generate range check when rewriting
a type conversion if needed. Add assertion.
* exp_ch6.adb (Expand_Simple_Function_Return): Minor code clean
up.
* sem_res.adb (Resolve_Type_Conversion): Apply range check when
needed. Update comments.
Yannick Moy [Tue, 7 Jul 2020 09:19:47 +0000 (11:19 +0200)]
[Ada] Clarify protection offered by preconditions on Ada.Text_IO units
gcc/ada/
* libgnat/a-textio.ads: Update top-level comment.
Piotr Trojanek [Fri, 3 Jul 2020 13:42:53 +0000 (15:42 +0200)]
[Ada] Fix typo in error message about contract cases
gcc/ada/
* sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
Piotr Trojanek [Thu, 2 Jul 2020 21:39:06 +0000 (23:39 +0200)]
[Ada] Simplify detection of by-copy types
gcc/ada/
* exp_ch6.adb (Expand_Actuals): Simplify condition for by-copy
types.
Yannick Moy [Mon, 6 Jul 2020 16:17:34 +0000 (18:17 +0200)]
[Ada] Clarify current design of Errout wrt global variable usage
gcc/ada/
* errout.ads: Add comment regarding lack of preservation of
Errout state across successive calls to the API.
Bob Duff [Thu, 2 Jul 2020 17:32:40 +0000 (13:32 -0400)]
[Ada]
Ada2020: AI12-0304 Put_Image attrs of lang-def types
gcc/ada/
* exp_put_image.adb (Build_Elementary_Put_Image_Call): Use the
base type to recognize various cases of access types.
* libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads, libgnat/a-cbhama.adb,
libgnat/a-cbhama.ads, libgnat/a-cbhase.adb, libgnat/a-cbhase.ads,
libgnat/a-cbmutr.adb, libgnat/a-cbmutr.ads, libgnat/a-cborma.adb,
libgnat/a-cborma.ads, libgnat/a-cborse.adb, libgnat/a-cborse.ads,
libgnat/a-cdlili.adb, libgnat/a-cdlili.ads, libgnat/a-cidlli.adb,
libgnat/a-cidlli.ads, libgnat/a-cihama.adb, libgnat/a-cihama.ads,
libgnat/a-cihase.adb, libgnat/a-cihase.ads, libgnat/a-cimutr.adb,
libgnat/a-cimutr.ads, libgnat/a-ciorma.adb, libgnat/a-ciorma.ads,
libgnat/a-ciormu.adb, libgnat/a-ciormu.ads, libgnat/a-ciorse.adb,
libgnat/a-ciorse.ads, libgnat/a-coboho.adb, libgnat/a-coboho.ads,
libgnat/a-cobove.adb, libgnat/a-cobove.ads, libgnat/a-cohama.adb,
libgnat/a-cohama.ads, libgnat/a-cohase.adb, libgnat/a-cohase.ads,
libgnat/a-coinho.adb, libgnat/a-coinho.ads,
libgnat/a-coinho__shared.adb, libgnat/a-coinho__shared.ads,
libgnat/a-coinve.adb, libgnat/a-coinve.ads, libgnat/a-comutr.adb,
libgnat/a-comutr.ads, libgnat/a-coorma.adb, libgnat/a-coorma.ads,
libgnat/a-coormu.adb, libgnat/a-coormu.ads, libgnat/a-coorse.adb,
libgnat/a-coorse.ads, libgnat/a-strunb.adb, libgnat/a-strunb.ads,
libgnat/a-strunb__shared.adb, libgnat/a-strunb__shared.ads:
Implement Put_Image attibute.
* libgnat/a-stteou.ads, libgnat/s-putima.ads,
libgnat/a-stouut.ads, libgnat/a-stoubu.adb: Make
Ada.Strings.Text_Output, Ada.Strings.Text_Output.Utils, and
System.Put_Images Pure, so they can be with'ed by Pure units
that should have Put_Image defined.
* libgnat/a-stouut.adb: Add missing column adjustments, and
remove a redundant one.
* libgnat/s-putima.adb (Put_Arrow): New routine to print an
arrow. Avoids adding a with clause to some containers.
Bob Duff [Thu, 2 Jul 2020 22:16:57 +0000 (18:16 -0400)]
[Ada]
Ada2020: matching parentheses and brackets
gcc/ada/
* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Require matching
parens or brackets.
* par.adb, par-tchk.adb (T_Right_Bracket): New procedure to give
an error on missing ].
Javier Miranda [Mon, 6 Jul 2020 12:04:01 +0000 (08:04 -0400)]
[Ada] Crash in expression function defined in protected object
gcc/ada/
* sem_ch8.adb (Find_Direct_Name): Do not trust in the decoration
of the Entity attribute in constants associated with
discriminals of protected types.
Gary Dismukes [Sun, 5 Jul 2020 17:29:02 +0000 (13:29 -0400)]
[Ada] AI12-0170: Abstract subprogram calls in class-wide precond exprs
gcc/ada/
* sem_disp.adb (Check_Dispatching_Context): When the enclosing
subprogram is abstract, bypass early return if the call is
tag-indeterminate, to continue with the later error checking.
Javier Miranda [Sun, 5 Jul 2020 10:43:30 +0000 (06:43 -0400)]
[Ada] Private type unexpectedly visible
gcc/ada/
* sem_ch7.adb (Uninstall_Declarations): Uninstall the
declaration of a subtype declaration defined in the private part
of a package.
Arnaud Charlet [Thu, 2 Jul 2020 10:10:28 +0000 (06:10 -0400)]
[Ada] Clean up support of square brackets
gcc/ada/
* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Simplify code since
we are always under -gnatX if we encounter a Tok_Left_Bracket.
* scng.adb (Scan): [] is an aggregate under -gnatX and a wide
character otherwise.
Piotr Trojanek [Thu, 2 Jul 2020 12:09:06 +0000 (14:09 +0200)]
[Ada] Remove useless initialization and refine type of a local variable
gcc/ada/
* exp_ch6.adb (Expand_Call_Helper): Cleanup.
Piotr Trojanek [Thu, 2 Jul 2020 12:06:58 +0000 (14:06 +0200)]
[Ada] Refine type of a local variable
gcc/ada/
* exp_ch6.adb (Is_Direct_Deep_Call): Refine type from Node_Id to
Entity_Id.
Piotr Trojanek [Thu, 2 Jul 2020 12:05:30 +0000 (14:05 +0200)]
[Ada] Simplify membership test for operators
gcc/ada/
* exp_ch6.adb (May_Fold): Detect all operators, i.e. both binary
and unary ones.
Piotr Trojanek [Thu, 2 Jul 2020 12:04:07 +0000 (14:04 +0200)]
[Ada] Simplify repeated calls with membership test
gcc/ada/
* inline.adb (Expand_Inlined_Call): Simplify repeated calls to
Nkind.
Aldy Hernandez [Mon, 19 Oct 2020 07:48:27 +0000 (09:48 +0200)]
Handle right shifts by zero in range-ops.
If the shift amount in operator_lshift::op1_range was zero, an invalid range
of [1, 0] was being created.
gcc/ChangeLog:
PR tree-optimization/97467
* range-op.cc (operator_lshift::op1_range): Handle shifts by 0.
gcc/testsuite/ChangeLog:
* gcc.dg/pr97467.c: New test.
Richard Biener [Mon, 19 Oct 2020 09:07:36 +0000 (11:07 +0200)]
tree-optimization/97466 - remove spurious assert
This removes an assertion that was supposed to be only for temporary
debugging. I've also re-indented the code which I missed as well.
2020-10-19 Richard Biener <rguenther@suse.de>
PR tree-optimization/97466
* tree-vect-slp.c (vect_get_and_check_slp_defs): Remove
spurious assert, re-indent.
guojiufu [Mon, 19 Oct 2020 05:48:19 +0000 (13:48 +0800)]
[PATCH] fold x << (n % C) to x << (n & C-1) if C meets power2
This patch fixes PR66552 which is also as:
https://gcc.gnu.org/pipermail/gcc-patches/2020-February/540930.html
which requests to optimizes (x shift (n mod C)) to
(x shift (n bit_and (C - 1))) when C is a constant and power of two.
gcc/ChangeLog
2020-10-19 Li Jia He <helijia@gcc.gnu.org>
PR tree-optimization/66552
* match.pd (x << (n % C) -> x << (n & C-1)): New simplification.
gcc/testsuite/ChangeLog
2020-10-19 Li Jia He <helijia@gcc.gnu.org>
PR tree-optimization/66552
* gcc.dg/pr66552.c: New testcase.
Richard Biener [Mon, 19 Oct 2020 08:41:19 +0000 (10:41 +0200)]
Simplify comparison GIMPLE IL verification
There's an old extra allowance for same-mode pointer comparison
for which I don't see any good reason today where the only special-case
of pointers in useless_type_conversion_p is that of function/method
pointers vs. non-function/method pointers.
2020-10-19 Richard Biener <rguenther@suse.de>
* tree-cfg.c (verify_gimple_comparison): Drop special-case
for pointer comparison.
Martin Liska [Mon, 19 Oct 2020 07:05:34 +0000 (09:05 +0200)]
libsanitizer: Add recently added commit to LOCAL_PATCHES.
libsanitizer/ChangeLog:
* LOCAL_PATCHES: Add one commit.
GCC Administrator [Mon, 19 Oct 2020 00:16:22 +0000 (00:16 +0000)]
Daily bump.
Alexandre Oliva [Sun, 18 Oct 2020 20:19:53 +0000 (17:19 -0300)]
revamp ada.numerics.aux
Instead of mapping elementary functions for all types to a single
type, use the intrinsics available for the various base types.
A new Ada.Numerics.Aux_Generic_Float is introduced to explicitly
dispatch, based on the 'Digits attribute of the base type, to the
various newly-added Aux_Short_Float, Aux_Float, Aux_Long_Float, or
Aux_Long_Long_Float.
The Aux_Short_Float unit is implemented in terms of the Aux_Float one,
and the others rely on the elementary functions from the C Math
library for float, double and long double types, respectively.
An Aux_Linker_Options is added, and units that import intrinsics from
libm/libc depend on it to provide the "-lm" linker option if needed.
The option is provided by default, but there is an alternate version
that doesn't, that is used for vxworks targets.
The Aux variant that used to open-code Sin and Cos for the ancient
ppc-darwin, because of insufficient precision in libc, is dropped,
along with the alternate dummy body for Aux. Both are presumed no
longer needed.
The original Ada.Numerics.Aux is retained, for backward compatibility,
as a wrapper for a newly-added Aux_Compat, that renames
Aux_Long_Float, except on x86, in which an alternate version renames
Aux_Long_Long_Float.
Generic_Elementary_Functions and Generic_Complex_Types are adjusted to
use Aux_Generic_Float, avoiding the type conversions and inefficiencies of
computing results in higher precision than requested.
Generic_Complex_Elementary_Functions is adjusted to enable an
additional instance of the sincos optimization, even without -gnatn.
for gcc/ada/ChangeLog
* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Compile Ada.Numerics
child units Aux_Generic_Float, Aux_Long_Long_Float, Aux_Long_Float,
Aux_Float, Aux_Short_Float, Aux_Compat, and Aux_Linker_Options.
(X86_TARGET_PAIRS): Drop dummy body for Aux. Use x86 version
of Aux_Compat.
(X86_64_TARGET_PAIRS): Likewise.
(LIBGNAT_TARGET_PAIRS): On VxWorks, select the nolibm
variants. Drop the darwin version of Aux. Drop the redundant
libc-x86 numaux variants on x86* kfreebsd variants.
* libgnat/a-nagefl.ads: New Aux_Generic_Float.
* libgnat/a-naliop.ads: New Aux_Linker_Options.
* libgnat/a-naliop__nolibm.ads: New.
* libgnat/a-nallfl.ads: New Aux_Long_Long_Float.
* libgnat/a-nalofl.ads: New Aux_Long_Float.
* libgnat/a-nuaufl.ads: New Aux_Float.
* libgnat/a-nashfl.ads: New Aux_Short_Float.
* libgnat/a-ngcefu.adb (Exp): Factor out the Im (X) passed to
Sin and Cos in the Complex variant too.
* libgnat/a-ngcoty.adb: Switch to Aux_Generic_Float. Drop
redundant conversions.
* libgnat/a-ngelfu.adb: Likewise.
* libgnat/a-nuauco.ads: New Aux_Compat.
* libgnat/a-nuauco__x86.ads: New.
* libgnat/a-numaux.ads: Replace with Compat wrapper.
* libgnat/a-numaux__darwin.adb: Remove.
* libgnat/a-numaux__darwin.ads: Remove.
* libgnat/a-numaux__dummy.adb: Remove.
* libgnat/a-numaux__libc-x86.ads: Remove.
* libgnat/a-numaux__vxworks.ads: Remove.
Iain Sandoe [Sun, 18 Oct 2020 07:48:58 +0000 (08:48 +0100)]
libsanitizer, Darwin, Bootstrap : Fix bootstrap on Darwin <= 15.
The latest upstream merge for libsanitizer introduces code that makes
use of some macro values that are not available in SDKs for versions
of Darwin <= 15 (macOS 10.11).
Add definitions for these where they are not present.
libsanitizer/ChangeLog:
* sanitizer_common/sanitizer_mac.h: Ensure that TARGET_OS_
macros are defined where the macOS SDK does not contain
them.
(TARGET_OS_OSX, TARGET_OS_IOS, TARGET_OS_TV, TARGET_OS_WATCH):
Define where needed.
Harald Anlauf [Sun, 18 Oct 2020 18:15:26 +0000 (20:15 +0200)]
PR libfortran/97063 - Wrong result for vector (step size is negative) * matrix
The MATMUL intrinsic provided a wrong result for rank-1 times rank-2 array
when a negative stride was used for addressing the elements of the rank-1
array, because a check on strides was erroneously placed before the check
on the rank. Interchange order of checks.
libgfortran/ChangeLog:
* m4/matmul_internal.m4: Move check for rank-1 times rank-2 before
checks on strides for rank-2 times rank-2.
* generated/matmul_c10.c: Regenerated.
* generated/matmul_c16.c: Likewise.
* generated/matmul_c4.c: Likewise.
* generated/matmul_c8.c: Likewise.
* generated/matmul_i1.c: Likewise.
* generated/matmul_i16.c: Likewise.
* generated/matmul_i2.c: Likewise.
* generated/matmul_i4.c: Likewise.
* generated/matmul_i8.c: Likewise.
* generated/matmul_r10.c: Likewise.
* generated/matmul_r16.c: Likewise.
* generated/matmul_r4.c: Likewise.
* generated/matmul_r8.c: Likewise.
* generated/matmulavx128_c10.c: Likewise.
* generated/matmulavx128_c16.c: Likewise.
* generated/matmulavx128_c4.c: Likewise.
* generated/matmulavx128_c8.c: Likewise.
* generated/matmulavx128_i1.c: Likewise.
* generated/matmulavx128_i16.c: Likewise.
* generated/matmulavx128_i2.c: Likewise.
* generated/matmulavx128_i4.c: Likewise.
* generated/matmulavx128_i8.c: Likewise.
* generated/matmulavx128_r10.c: Likewise.
* generated/matmulavx128_r16.c: Likewise.
* generated/matmulavx128_r4.c: Likewise.
* generated/matmulavx128_r8.c: Likewise.
gcc/testsuite/ChangeLog:
* gfortran.dg/matmul_20.f90: New test.
GCC Administrator [Sun, 18 Oct 2020 00:16:23 +0000 (00:16 +0000)]
Daily bump.
David Edelsohn [Sat, 17 Oct 2020 20:58:43 +0000 (16:58 -0400)]
testsuite: simplify target requirements for various Power9 testcases.
This patch removes unnnecessary or simplifies requirements for various
Power9 testcase.
gcc/testsuite/ChangeLog:
* gcc.target/powerpc/p9-dimode1.c: Remove target.
* gcc.target/powerpc/p9-dimode2.c: Remove target.
* gcc.target/powerpc/p9-fpcvt-1.c: Remove target.
* gcc.target/powerpc/p9-fpcvt-2.c: Require lp64.
* gcc.target/powerpc/p9-minmax-1.c: Remove target.
* gcc.target/powerpc/p9-minmax-2.c: Remove target.
* gcc.target/powerpc/p9-minmax-3.c: Remove target.
* gcc.target/powerpc/p9-splat-1.c: Require lp64.
* gcc.target/powerpc/p9-splat-2.c: Remove target.
* gcc.target/powerpc/p9-splat-3.c: Remove target.
* gcc.target/powerpc/p9-splat-4.c: Require lp64.
* gcc.target/powerpc/p9-vbpermd.c: Require lp64.
* gcc.target/powerpc/p9-vneg.c: Require lp64.
* gcc.target/powerpc/p9-vparity.c: Require lp64.
* gcc.target/powerpc/p9-vpermr.c: Require LE.
* gcc.target/powerpc/p9-xxbr-1.c: Remove target.
* gcc.target/powerpc/p9-xxbr-2.c: Require lp64.
* gcc.target/powerpc/p9-xxbr-3.c: Require lp64.
Ville Voutilainen [Sat, 17 Oct 2020 19:08:50 +0000 (22:08 +0300)]
libstdc++: Fix visitor return type diagnostics [PR97449]
libstdc++-v3/ChangeLog:
PR libstdc++/97449
* include/std/variant
(__gen_vtable_impl<>::_S_apply_single_alt):
Diagnose visitor return type mismatches here..
(__gen_vtable_impl</*base case*/>::_S_apply):
..not here.
David Edelsohn [Thu, 15 Oct 2020 22:50:05 +0000 (18:50 -0400)]
testsuite: Enable builtins-3-p9.c on BE targets.
This patch removes the unnecessary "le" target requirement
of the builtins-3-p9.c testcase.
gcc/testsuite/ChangeLog:
2020-10-16 David Edelsohn <dje.gcc@gmail.com>
* gcc.target/powerpc/builtins-3-p9.c: Remove le.
GCC Administrator [Sat, 17 Oct 2020 00:16:29 +0000 (00:16 +0000)]
Daily bump.
David Edelsohn [Fri, 16 Oct 2020 22:09:49 +0000 (18:09 -0400)]
testsuite: remove explicit -m32/-m64 from testcases
Two tests in the powerpc-specific testsuite explicitly add the -m32
and -m64 commandline options, which only are valid for Linux. And the
tests check for lp64 or ilp32, which is redundant. This patch removes
the unnecessary commandline options.
gcc/testsuite/ChangeLog:
2020-10-16 David Edelsohn <dje.gcc@gmail.com>
* gcc.target/powerpc/pr96139-a.c: Remove -m32.
* gcc.target/powerpc/pr96139-b.c: Remove -m64.
Harald Anlauf [Fri, 16 Oct 2020 20:17:46 +0000 (22:17 +0200)]
PR fortran/95979 - ICE in get_kind, at fortran/simplify.c:129
Simplification of the elemental intrinsic INDEX with constant array-valued
arguments failed with an ICE or did not reduce to a constant array, depending
also on the presence of the optional KIND argument. Add a further attempt of
simplification in the case of elemental intrinsics, and make sure the KIND
argument is not removed prematurely during simplification of INDEX.
gcc/fortran/ChangeLog:
PR fortran/95979
* expr.c (gfc_check_init_expr): Fix check of return code from
gfc_intrinsic_func_interface.
* intrinsic.c (gfc_intrinsic_func_interface): Add further attempt
of simplification of elemental intrinsics with array arguments.
* iresolve.c (gfc_resolve_index_func): Keep optional KIND argument
for simplification of elemental use of INDEX.
gcc/testsuite/ChangeLog:
PR fortran/95979
* gfortran.dg/index_4.f90: New test.
Andrew MacLeod [Fri, 16 Oct 2020 19:13:24 +0000 (15:13 -0400)]
[PATCH] Don't display ranges for dead ssa-names.
Dont show names that have been removed.
* vr-values.c (dump_all_value_ranges): Only dump names which are
still active.
Andrew MacLeod [Fri, 16 Oct 2020 19:10:17 +0000 (15:10 -0400)]
pointer_plus [0, 0] + const folding
Return a constant range if POINTER_PLUS is [0,0] plus a const.
* range-op.cc (pointer_plus_operator::wi_fold): Make pointer_plus
[0, 0] + const return a [const, const] range.
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.