aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2021-02-02 12:42:10 -0800
committerIan Lance Taylor <iant@golang.org>2021-02-02 12:42:10 -0800
commit8910f1cd79445bbe2da01f8ccf7c37909349529e (patch)
treeba67a346969358fd7cc2b7c12384479de8364cab /gcc/ada
parent45c32be1f96ace25b66c34a84818dc5e07e9d516 (diff)
parent8e4a738d2540ab6aff77506d368bf4e3fa6963bd (diff)
downloadgcc-8910f1cd79445bbe2da01f8ccf7c37909349529e.zip
gcc-8910f1cd79445bbe2da01f8ccf7c37909349529e.tar.gz
gcc-8910f1cd79445bbe2da01f8ccf7c37909349529e.tar.bz2
Merge from trunk revision 8e4a738d2540ab6aff77506d368bf4e3fa6963bd.
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog12688
-rw-r--r--gcc/ada/ChangeLog-202013978
-rw-r--r--gcc/ada/Makefile.rtl15
-rw-r--r--gcc/ada/adaint.c3
-rw-r--r--gcc/ada/adaint.h10
-rw-r--r--gcc/ada/ali.adb10
-rw-r--r--gcc/ada/ali.ads4
-rw-r--r--gcc/ada/bindo-writers.adb2
-rw-r--r--gcc/ada/checks.adb56
-rw-r--r--gcc/ada/checks.ads1
-rw-r--r--gcc/ada/contracts.adb241
-rw-r--r--gcc/ada/contracts.ads15
-rw-r--r--gcc/ada/debug.adb7
-rw-r--r--gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst4
-rw-r--r--gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst2
-rw-r--r--gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst2
-rw-r--r--gcc/ada/einfo.adb4
-rw-r--r--gcc/ada/einfo.ads4
-rw-r--r--gcc/ada/errout.adb19
-rw-r--r--gcc/ada/errout.ads5
-rw-r--r--gcc/ada/exp_aggr.adb31
-rw-r--r--gcc/ada/exp_attr.adb68
-rw-r--r--gcc/ada/exp_ch11.adb4
-rw-r--r--gcc/ada/exp_ch3.adb9
-rw-r--r--gcc/ada/exp_ch4.adb67
-rw-r--r--gcc/ada/exp_ch5.adb59
-rw-r--r--gcc/ada/exp_ch6.adb85
-rw-r--r--gcc/ada/exp_ch7.adb813
-rw-r--r--gcc/ada/exp_ch7.ads7
-rw-r--r--gcc/ada/exp_ch9.adb3
-rw-r--r--gcc/ada/exp_dbug.adb2
-rw-r--r--gcc/ada/exp_disp.adb2
-rw-r--r--gcc/ada/exp_fixd.adb37
-rw-r--r--gcc/ada/exp_imgv.adb28
-rw-r--r--gcc/ada/exp_intr.adb10
-rw-r--r--gcc/ada/exp_pakd.adb11
-rw-r--r--gcc/ada/exp_prag.adb6
-rw-r--r--gcc/ada/exp_tss.adb42
-rw-r--r--gcc/ada/exp_tss.ads1
-rw-r--r--gcc/ada/exp_unst.adb21
-rw-r--r--gcc/ada/exp_util.adb164
-rw-r--r--gcc/ada/exp_util.ads24
-rw-r--r--gcc/ada/expect.c8
-rw-r--r--gcc/ada/freeze.adb10
-rw-r--r--gcc/ada/gcc-interface/trans.c35
-rw-r--r--gcc/ada/gcc-interface/utils.c14
-rw-r--r--gcc/ada/gnat1drv.adb9
-rw-r--r--gcc/ada/gnat_rm.texi8
-rw-r--r--gcc/ada/gnat_ugn.texi18
-rw-r--r--gcc/ada/gnatvsn.ads2
-rw-r--r--gcc/ada/impunit.adb2
-rw-r--r--gcc/ada/inline.adb27
-rw-r--r--gcc/ada/inline.ads14
-rw-r--r--gcc/ada/lib-load.adb2
-rw-r--r--gcc/ada/lib-writ.adb2
-rw-r--r--gcc/ada/libgnarl/s-tporft.adb1
-rw-r--r--gcc/ada/libgnat/a-cbdlli.adb10
-rw-r--r--gcc/ada/libgnat/a-cbdlli.ads6
-rw-r--r--gcc/ada/libgnat/a-cbsyqu.ads10
-rw-r--r--gcc/ada/libgnat/a-cdlili.adb10
-rw-r--r--gcc/ada/libgnat/a-cdlili.ads6
-rw-r--r--gcc/ada/libgnat/a-cidlli.adb10
-rw-r--r--gcc/ada/libgnat/a-cidlli.ads6
-rw-r--r--gcc/ada/libgnat/a-cobove.adb73
-rw-r--r--gcc/ada/libgnat/a-cobove.ads44
-rw-r--r--gcc/ada/libgnat/a-coinve.adb64
-rw-r--r--gcc/ada/libgnat/a-coinve.ads43
-rw-r--r--gcc/ada/libgnat/a-convec.adb80
-rw-r--r--gcc/ada/libgnat/a-convec.ads78
-rw-r--r--gcc/ada/libgnat/a-strfix.ads894
-rw-r--r--gcc/ada/libgnat/a-tags.adb44
-rw-r--r--gcc/ada/libgnat/a-tags.ads50
-rw-r--r--gcc/ada/libgnat/a-ticoau.adb23
-rw-r--r--gcc/ada/libgnat/a-ticoau.ads35
-rw-r--r--gcc/ada/libgnat/a-ticoio.adb94
-rw-r--r--gcc/ada/libgnat/a-tideau.adb1
-rw-r--r--gcc/ada/libgnat/a-tifiau.adb1
-rw-r--r--gcc/ada/libgnat/a-tifiio.adb52
-rw-r--r--gcc/ada/libgnat/a-tifiio.ads2
-rw-r--r--gcc/ada/libgnat/a-tifiio__128.adb60
-rw-r--r--gcc/ada/libgnat/a-tiflau.adb118
-rw-r--r--gcc/ada/libgnat/a-tiflau.ads31
-rw-r--r--gcc/ada/libgnat/a-tiflio.adb74
-rw-r--r--gcc/ada/libgnat/a-tiflio.ads2
-rw-r--r--gcc/ada/libgnat/a-tigeau.adb100
-rw-r--r--gcc/ada/libgnat/a-tigeau.ads6
-rw-r--r--gcc/ada/libgnat/a-wtcoau.adb23
-rw-r--r--gcc/ada/libgnat/a-wtcoau.ads45
-rw-r--r--gcc/ada/libgnat/a-wtcoio.adb95
-rw-r--r--gcc/ada/libgnat/a-wtcoio.ads16
-rw-r--r--gcc/ada/libgnat/a-wtdeau.adb1
-rw-r--r--gcc/ada/libgnat/a-wtdeio.adb4
-rw-r--r--gcc/ada/libgnat/a-wtdeio__128.adb4
-rw-r--r--gcc/ada/libgnat/a-wtenio.adb4
-rw-r--r--gcc/ada/libgnat/a-wtfiau.adb1
-rw-r--r--gcc/ada/libgnat/a-wtfiio.adb25
-rw-r--r--gcc/ada/libgnat/a-wtfiio__128.adb29
-rw-r--r--gcc/ada/libgnat/a-wtflau.adb131
-rw-r--r--gcc/ada/libgnat/a-wtflau.ads39
-rw-r--r--gcc/ada/libgnat/a-wtflio.adb85
-rw-r--r--gcc/ada/libgnat/a-wtgeau.adb100
-rw-r--r--gcc/ada/libgnat/a-wtgeau.ads6
-rw-r--r--gcc/ada/libgnat/a-wtinio.adb4
-rw-r--r--gcc/ada/libgnat/a-wtinio__128.adb4
-rw-r--r--gcc/ada/libgnat/a-wtmoio.adb4
-rw-r--r--gcc/ada/libgnat/a-wtmoio__128.adb4
-rw-r--r--gcc/ada/libgnat/a-ztcoau.adb23
-rw-r--r--gcc/ada/libgnat/a-ztcoau.ads41
-rw-r--r--gcc/ada/libgnat/a-ztcoio.adb96
-rw-r--r--gcc/ada/libgnat/a-ztcoio.ads14
-rw-r--r--gcc/ada/libgnat/a-ztdeau.adb1
-rw-r--r--gcc/ada/libgnat/a-ztdeio.adb4
-rw-r--r--gcc/ada/libgnat/a-ztdeio__128.adb4
-rw-r--r--gcc/ada/libgnat/a-ztenio.adb4
-rw-r--r--gcc/ada/libgnat/a-ztfiau.adb1
-rw-r--r--gcc/ada/libgnat/a-ztfiio.adb25
-rw-r--r--gcc/ada/libgnat/a-ztfiio__128.adb29
-rw-r--r--gcc/ada/libgnat/a-ztflau.adb133
-rw-r--r--gcc/ada/libgnat/a-ztflau.ads39
-rw-r--r--gcc/ada/libgnat/a-ztflio.adb84
-rw-r--r--gcc/ada/libgnat/a-ztgeau.adb100
-rw-r--r--gcc/ada/libgnat/a-ztgeau.ads6
-rw-r--r--gcc/ada/libgnat/a-ztinio.adb4
-rw-r--r--gcc/ada/libgnat/a-ztinio__128.adb4
-rw-r--r--gcc/ada/libgnat/a-ztmoio.adb4
-rw-r--r--gcc/ada/libgnat/a-ztmoio__128.adb4
-rw-r--r--gcc/ada/libgnat/g-diopit.adb5
-rw-r--r--gcc/ada/libgnat/g-diopit.ads2
-rw-r--r--gcc/ada/libgnat/g-expect.adb6
-rw-r--r--gcc/ada/libgnat/g-sercom__linux.adb110
-rw-r--r--gcc/ada/libgnat/memtrack.adb33
-rw-r--r--gcc/ada/libgnat/s-fatgen.adb682
-rw-r--r--gcc/ada/libgnat/s-fatgen.ads15
-rw-r--r--gcc/ada/libgnat/s-finmas.adb14
-rw-r--r--gcc/ada/libgnat/s-finmas.ads4
-rw-r--r--gcc/ada/libgnat/s-imgrea.adb6
-rw-r--r--gcc/ada/libgnat/s-imguti.ads21
-rw-r--r--gcc/ada/libgnat/s-objrea.adb4
-rw-r--r--gcc/ada/libgnat/s-objrea.ads5
-rw-r--r--gcc/ada/libgnat/s-powflt.ads85
-rw-r--r--gcc/ada/libgnat/s-powlfl.ads355
-rw-r--r--gcc/ada/libgnat/s-powllf.ads (renamed from gcc/ada/libgnat/s-powtab.ads)12
-rw-r--r--gcc/ada/libgnat/s-valflt.ads (renamed from gcc/ada/libgnat/s-fatsfl.ads)36
-rw-r--r--gcc/ada/libgnat/s-vallfl.ads57
-rw-r--r--gcc/ada/libgnat/s-valllf.ads57
-rw-r--r--gcc/ada/libgnat/s-valrea.adb181
-rw-r--r--gcc/ada/libgnat/s-valrea.ads19
-rw-r--r--gcc/ada/libgnat/s-valued.adb8
-rw-r--r--gcc/ada/libgnat/s-valuef.adb6
-rw-r--r--gcc/ada/libgnat/s-valuer.adb169
-rw-r--r--gcc/ada/libgnat/s-valuer.ads4
-rw-r--r--gcc/ada/libgnat/system-aix.ads2
-rw-r--r--gcc/ada/libgnat/system-darwin-arm.ads2
-rw-r--r--gcc/ada/libgnat/system-darwin-ppc.ads2
-rw-r--r--gcc/ada/libgnat/system-darwin-x86.ads2
-rw-r--r--gcc/ada/libgnat/system-djgpp.ads2
-rw-r--r--gcc/ada/libgnat/system-dragonfly-x86_64.ads2
-rw-r--r--gcc/ada/libgnat/system-freebsd.ads2
-rw-r--r--gcc/ada/libgnat/system-hpux-ia64.ads2
-rw-r--r--gcc/ada/libgnat/system-hpux.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-alpha.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-arm.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-hppa.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-ia64.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-m68k.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-mips.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-ppc.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-riscv.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-s390.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-sh4.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-sparc.ads2
-rw-r--r--gcc/ada/libgnat/system-linux-x86.ads2
-rw-r--r--gcc/ada/libgnat/system-lynxos178-ppc.ads4
-rw-r--r--gcc/ada/libgnat/system-lynxos178-x86.ads4
-rw-r--r--gcc/ada/libgnat/system-mingw.ads2
-rw-r--r--gcc/ada/libgnat/system-qnx-aarch64.ads2
-rw-r--r--gcc/ada/libgnat/system-rtems.ads2
-rw-r--r--gcc/ada/libgnat/system-solaris-sparc.ads2
-rw-r--r--gcc/ada/libgnat/system-solaris-x86.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-arm-rtp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-arm.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-e500-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-e500-rtp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-e500-vthread.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-ppc-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-ppc-rtp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-ppc-vthread.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-ppc.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-x86-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-x86-rtp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-x86-vthread.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks-x86.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-aarch64.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-arm.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-e500-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-e500-rtp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-x86-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-x86-rtp.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads2
-rw-r--r--gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads2
-rw-r--r--gcc/ada/opt.ads2
-rw-r--r--gcc/ada/par-ch10.adb13
-rw-r--r--gcc/ada/par-ch11.adb5
-rw-r--r--gcc/ada/par-ch12.adb76
-rw-r--r--gcc/ada/par-ch3.adb113
-rw-r--r--gcc/ada/par-ch4.adb64
-rw-r--r--gcc/ada/par-ch5.adb28
-rw-r--r--gcc/ada/par-ch6.adb40
-rw-r--r--gcc/ada/par-ch9.adb27
-rw-r--r--gcc/ada/repinfo.adb80
-rw-r--r--gcc/ada/repinfo.ads88
-rw-r--r--gcc/ada/rtsfind.ads40
-rw-r--r--gcc/ada/s-oscons-tmplt.c35
-rw-r--r--gcc/ada/sa_messages.ads2
-rw-r--r--gcc/ada/scng.adb19
-rw-r--r--gcc/ada/sem_aggr.adb22
-rw-r--r--gcc/ada/sem_attr.adb406
-rw-r--r--gcc/ada/sem_aux.adb116
-rw-r--r--gcc/ada/sem_aux.ads25
-rw-r--r--gcc/ada/sem_cat.adb9
-rw-r--r--gcc/ada/sem_ch10.adb13
-rw-r--r--gcc/ada/sem_ch11.adb2
-rw-r--r--gcc/ada/sem_ch12.adb10
-rw-r--r--gcc/ada/sem_ch13.adb429
-rw-r--r--gcc/ada/sem_ch13.ads31
-rw-r--r--gcc/ada/sem_ch3.adb78
-rw-r--r--gcc/ada/sem_ch4.adb18
-rw-r--r--gcc/ada/sem_ch5.adb61
-rw-r--r--gcc/ada/sem_ch6.adb58
-rw-r--r--gcc/ada/sem_ch8.adb34
-rw-r--r--gcc/ada/sem_ch9.adb20
-rw-r--r--gcc/ada/sem_disp.adb2
-rw-r--r--gcc/ada/sem_elab.adb18
-rw-r--r--gcc/ada/sem_eval.adb129
-rw-r--r--gcc/ada/sem_eval.ads5
-rw-r--r--gcc/ada/sem_prag.adb246
-rw-r--r--gcc/ada/sem_res.adb107
-rw-r--r--gcc/ada/sem_util.adb819
-rw-r--r--gcc/ada/sem_util.ads41
-rw-r--r--gcc/ada/sem_warn.adb10
-rw-r--r--gcc/ada/snames.ads-tmpl5
-rw-r--r--gcc/ada/symbols.adb90
-rw-r--r--gcc/ada/symbols.ads115
-rw-r--r--gcc/ada/targparm.adb16
-rw-r--r--gcc/ada/targparm.ads10
-rw-r--r--gcc/ada/tracebak.c7
-rw-r--r--gcc/ada/validsw.adb50
-rw-r--r--gcc/ada/validsw.ads13
262 files changed, 20508 insertions, 17152 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 5631a01..75f75ec 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,12680 +1,44 @@
-2020-11-30 Pierre-Marie de Rodat <derodat@adacore.com>
+2021-01-26 Marius Hillenbrand <mhillen@linux.ibm.com>
- * libgnat/s-trasym.ads: Update the list of supported platforms.
+ PR ada/98228
+ * gcc-interface/utils.c (maybe_pad_type): Test the size of the new
+ packable type instead of its alignment for addressability's sake.
-2020-11-30 Arnaud Charlet <charlet@adacore.com>
+2021-01-25 Eric Botcazou <ebotcazou@adacore.com>
- * gcc-interface/Makefile.in, gcc-interface/trans.c: Remove ^L
- characters.
+ * gcc-interface/trans.c (make_covariant_thunk): Set the DECL_CONTEXT
+ of the parameters and do not set TREE_PUBLIC on the thunk.
+ (maybe_make_gnu_thunk): Pass the alias to the covariant thunk.
+ * gcc-interface/utils.c (finish_subprog_decl): Set the DECL_CONTEXT
+ of the parameters here...
+ (begin_subprog_body): ...instead of here.
-2020-11-30 Arnaud Charlet <charlet@adacore.com>
+2021-01-19 Eric Botcazou <ebotcazou@adacore.com>
- * gcc-interface/Makefile.in (GNATLIBFLAGS): Enable checks by
- default.
- * libgnat/s-bitfie.ads: Suppress alignment checks.
- * libgnat/s-bituti.adb: Minor reformatting.
- * libgnat/s-secsta.adb (SS_Allocate): Support Size = 0.
+ PR ada/98740
+ * gcc-interface/trans.c (add_decl_expr): Always mark TYPE_ADA_SIZE.
-2020-11-30 Arnaud Charlet <charlet@adacore.com>
+2021-01-14 Sebastian Huber <sebastian.huber@embedded-brains.de>
- * exp_ch3.adb (Replace_Discr_Ref): Removed, no longer needed.
+ PR ada/98595
+ * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <riscv*-*-rtems*>: Use
+ wraplf version of Aux_Long_Long_Float.
-2020-11-30 Piotr Trojanek <trojanek@adacore.com>
+2021-01-03 Eric Botcazou <ebotcazou@adacore.com>
- * sem_ch5.adb (Process_Statements): Replace low-level membership
- test with a high-level wrapper.
-
-2020-11-30 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch5.adb (Set_Assignment_Type): Combine calls to Ekind
- using membership test.
- (Should_Transform_BIP_Assignment): Replace assignment to a
- "Result" variable with simple return statements; avoid repeated
- calls to Unqual_Conv by declaring a local constant.
-
-2020-11-30 Piotr Trojanek <trojanek@adacore.com>
-
- * lib-xref.adb (Generate_Reference): Fix reference to
- Analyze_Assignment.
- * sem_ch5.adb (Diagnose_Non_Variable_Lhs): Reuse existing
- utility function.
-
-2020-11-30 Eric Botcazou <ebotcazou@adacore.com>
-
- * contracts.adb (Check_Type_Or_Object_External_Properties): Make
- sure to exclude all return objects from the SPARK legality rule
- on effectively volatile variables.
- * exp_ch6.adb (Expand_N_Extended_Return_Statement): Use the fast
- track only when the declaration of the return object can be
- dropped.
-
-2020-11-30 Gary Dismukes <dismukes@adacore.com>
-
- * einfo.ads (Is_Partial_DIC_Procedure): New function.
- (Partial_DIC_Procedure): New procedure.
- * einfo.adb (Is_Partial_DIC_Procedure): New function to return
- whether a subprogram is a partial Default_Initial_Condition
- procedure by checking the name (to avoid adding a new field).
- (DIC_Procedure): Add a test that excludes partial DIC procedures
- from being returned.
- (Partial_DIC_Procedure): New procedure to return the partial DIC
- procedure of a type, if it has one (otherwise returns Empty).
- (Set_DIC_Procedure): Remove check for duplicate DIC procedures.
- * exp_aggr.adb (Gen_Assign): Generate a call to the type's DIC
- procedure in the case where an array component is default
- initialized (due to an association with a box).
- (Build_Record_Aggr_Code): For an extension aggregate, generate a
- call to the ancestor type's DIC procedure (if any) when the
- ancestor part is a subtype mark. For a record component
- association that was specified with a box (tested for by
- checking the new flag Was_Default_Init_Box_Association),
- generate a call to the component type's DIC procedure (if it has
- one).
- * exp_ch4.adb (Expand_N_Allocator): When the allocated object is
- default initialized and the designated type has a DIC aspect,
- generate a call to the DIC procedure.
- * exp_util.ads (Build_DIC_Call): Change the formal Obj_Id to
- name Obj_Name, and change its type from Entity_Id to Node_Id
- (and update comment).
- (Build_DIC_Procedure_Body): Add formal Partial_DIC, remove
- formal For_Freeze, and update comment accordingly.
- (Build_DIC_Procedure_Declaration): Add formal Partial_DIC and
- update comment.
- * exp_util.adb
- (Build_DIC_Call): Revised to use its Obj_Name (formerly Obj_Id)
- formal directly rather than calling New_Occurrence_Of on it, to
- allow arbitrary names to be passed rather than being limited to
- Entity_Ids.
- (Build_DIC_Procedure_Body): Call Add_Parent_DICs to generate
- checks for DICs associated with any parent types, implementing
- the required "additive" semantics for DICs. When building a DIC
- procedure body for a partial view (when Partial_DIC is True),
- call Add_Own_DIC when the type has its own DIC. In the case of
- "full" DIC procedures, a call is generated to any partial DIC
- procedure of the type (unless the procedure has a null body),
- along with checks for any DICs inherited by the full view.
- (Build_DIC_Procedure_Declaration): Add handling for partial DIC
- procedures. For the suffix of a regular DIC procedure's name,
- use "DIC" (instead of "Default_Initial_Condition"), and for the
- suffix of a partial DIC procedure's name, use "Partial_DIC".
- (Add_DIC_Check): Add the DIC pragma to the list of seen pragmas
- (Pragmas_Seen).
- (Add_Inherited_Tagged_DIC): Remove the formals Par_Typ,
- Deriv_Typ, and Obj_Id, and add formal Expr, which denotes DIC's
- expression. Remove the call to Replace_References (which is now
- done in Add_Inherited_DICs).
- (Add_Inherited_DICs): New procedure to locate a DIC pragma
- associated with a parent type, replace its references
- appropriately (such as any current instance references), and add
- a check for the DIC.
- (Add_Own_DIC): Add an Obj_Id formal to allow caller to pass the
- _init formal of the generated DIC procedure.
- (Add_Parent_DICs): New procedure to traverse a type's parents,
- looking for DICs associated with those and calling
- Add_Inherited_DICs to apply the appropriate DIC checks.
- (Is_Verifiable_DIC_Pragma): Treat pragmas that have an Empty
- first argument the same as a pragma without any arguments
- (returning False for that case).
- * exp_ch3.adb (Init_One_Dimension): Generate calls to the
- component's DIC procedure when needed.
- (Possible_DIC_Call): New function nested in Init_One_Dimension
- to build a call to the array component type's DIC-checking
- function when appropriate.
- (Build_Array_Init_Proc): The presence of a DIC on the component
- type is an additional condition for generating an init proc for
- an array type.
- (Build_Init_Statements): When the record component's type has a
- DIC, and the component declaration does not have an
- initialization expression, generate a call to the component
- type's DIC procedure.
- (Expand_N_Object_Declaration): Modify the call to Build_DIC_Call
- to pass a new occurrence of the object's defining id rather than
- the id itself.
- (Freeze_Type): Only build a type's DIC procedure (if it has one)
- for types that are not interfaces.
- * exp_spark.adb (Expand_SPARK_N_Freeze_Type): Remove From_Freeze
- actual and add a ??? comment.
- (Expand_SPARK_N_Object_Declaration): Modify call to
- Build_DIC_Call to pass a new occurrence of the object id rather
- than the object id itself.
- * sem_aggr.adb (Resolve_Record_Aggregate): Declare local flag
- Is_Box_Init_By_Default and set it in cases where the component
- association has a box and the component is being initialized by
- default (as opposed to initialized by an initialization
- expression associated with the component's declaration).
- (Add_Association): If the association has a box for a component
- initialized by default, the flag
- Was_Default_Init_Box_Association is set on the new component
- association (for later testing during expansion).
- (Get_Value): Reset Is_Box_Init_By_Default to False.
- * sem_ch3.adb (Build_Assertion_Bodies_For_Type): Rearrange code
- to build DIC procedure bodies for a (noninterface) type that
- Has_Own_DIC (for partial type views) or Has_DIC (for full type
- views) as appropriate.
- * sem_ch13.adb (Analyze_Aspect_Specifications,
- Aspect_Default_Initial_Condition): Add an extra argument to the
- DIC pragma to denote the type associated with the pragma (for
- use in Build_DIC_Procedure_Body).
- * sem_prag.adb (Analyze_Pragma): Allow two arguments for pragma
- Default_Initial_Condition. If not already present, add an extra
- argument denoting the type that the pragma is associated with.
- * sem_util.adb (Propagate_DIC_Attributes): Retrieve any partial
- DIC procedure associated with the type and add it to the type's
- list of subprograms (Subprograms_For_Type).
- * sinfo.ads (Was_Default_Init_Box_Association): New flag on
- N_Component_Association nodes. Add subprograms to get and set
- flag, as well as updating the documentation.
- * sinfo.adb (Was_Default_Init_Box_Association): New function to
- retrieve the corresponding flag (Flag14).
- (Set_Was_Default_Init_Box_Association): New procedure to set the
- corresponding flag (Flag14).
-
-2020-11-30 Arnaud Charlet <charlet@adacore.com>
-
- * par-ch6.adb (P_Formal_Part): Remove extra call to Scan.
- * par-tchk.adb: Minor reformatting.
-
-2020-11-30 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/a-nbnbre.adb (Float_Conversions): Instantiate Conv
- package only once in the body.
- (Fixed_Conversions.Float_Aux): New instance.
- (Fixed_Conversions.Conv_I): Likewise.
- (Fixed_Conversions.Conv_U): Likewise.
- (Fixed_Conversions.LLLI): New subtype.
- (Fixed_Conversions.LLLU): Likewise.
- (Fixed_Conversions.Too_Large): New constant.
- (Fixed_Conversions.To_Big_Real): Reimplement.
- (Fixed_Conversions.From_Big_Real): Likewise.
-
-2020-11-30 Bob Duff <duff@adacore.com>
-
- * exp_ch3.adb (Expand_N_Object_Declaration): Avoid crash in case
- of conditional expression.
-
-2020-11-30 Eric Botcazou <ebotcazou@adacore.com>
-
- * doc/gnat_rm/implementation_defined_attributes.rst (Pool_Address):
- Fix pasto.
- (Small_Denominator): New entry.
- (Small_Numerator): Likewise.
- * doc/gnat_rm/implementation_defined_characteristics.rst (3.5.9):
- Relax conditions on 128-bit smalls and integer-only implementation.
- * gnat_rm.texi: Regenerate.
- * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Fore>:
- Relax conditions on integer implementation for ordinary fixed-point
- types and pass a third parameter to the routine.
- <Attribute_Small_Denominator>: Raise Program_Error.
- <Attribute_Small_Numerator>: Likewise.
- * exp_fixd.adb (Expand_Convert_Fixed_To_Fixed): Use a scaled divide
- if the numerator and denominator of the small ratio are sufficiently
- small integers.
- (Expand_Convert_Fixed_To_Integer): Use a scaled divide if numerator
- and denominator of the small value are sufficiently small integers.
- (Expand_Convert_Integer_To_Fixed): Likewise.
- * exp_imgv.adb (Expand_Image_Attribute): Relax the conditions on the
- integer implementation for ordinary fixed-point types.
- (Expand_Value_Attribute): Likewise.
- * freeze.adb (Freeze_Fixed_Point_Type): Relax conditions on 128-bit
- smalls.
- * sem_attr.adb (Analyze_Attribute) <Attribute_Small_Denominator>:
- Check no arguments, fixed-point and set type to Universal_Integer.
- <Attribute_Small_Numerator>: Likewise.
- (Eval_Attribute) <Attribute_Small_Denominator>: Fold statically.
- <Attribute_Small_Numerator>: Likewise.
- * snames.ads-tmpl (Name_Small_Denominator): New attribute name.
- (Name_Small_Numerator): Likewise.
- (Attribute_Id): Add Attribute_Small_{Denominator,Numerator}.
- * libgnat/a-tifiio.adb (Exact): Delete.
- (Need_64): Likewise.
- (OK_Get_32): New boolean constant.
- (OK_Put_32): Likewise.
- (OK_Get_64): Likewise.
- (OK_Put_64): Likewise.
- (E): Adjust.
- (Get procedures): Likewise.
- (Put procedures): Likewise.
- * libgnat/a-tifiio__128.adb (Exact): Delete.
- (Need_64): Likewise.
- (Need_128): Likewise.
- (OK_Get_32): New boolean constant.
- (OK_Put_32): Likewise.
- (OK_Get_64): Likewise.
- (OK_Put_64): Likewise.
- (OK_Get_128): Likewise.
- (OK_Put_128): Likewise.
- (E): Adjust.
- (Get procedures): Likewise.
- (Put procedures): Likewise.
- * libgnat/a-wtfiio.adb (Exact): Delete.
- (Need_64): Likewise.
- (OK_Get_32): New boolean constant.
- (OK_Put_32): Likewise.
- (OK_Get_64): Likewise.
- (OK_Put_64): Likewise.
- (E): Adjust.
- (Get procedures): Likewise.
- (Put procedures): Likewise.
- * libgnat/a-wtfiio__128.adb (Exact): Delete.
- (Need_64): Likewise.
- (Need_128): Likewise.
- (OK_Get_32): New boolean constant.
- (OK_Put_32): Likewise.
- (OK_Get_64): Likewise.
- (OK_Put_64): Likewise.
- (OK_Get_128): Likewise.
- (OK_Put_128): Likewise.
- (E): Adjust.
- (Get procedures): Likewise.
- (Put procedures): Likewise.
- * libgnat/a-ztfiio.adb (Exact): Delete.
- (Need_64): Likewise.
- (OK_Get_32): New boolean constant.
- (OK_Put_32): Likewise.
- (OK_Get_64): Likewise.
- (OK_Put_64): Likewise.
- (E): Adjust.
- (Get procedures): Likewise.
- (Put procedures): Likewise.
- * libgnat/a-ztfiio__128.adb (Exact): Delete.
- (Need_64): Likewise.
- (Need_128): Likewise.
- (OK_Get_32): New boolean constant.
- (OK_Put_32): Likewise.
- (OK_Get_64): Likewise.
- (OK_Put_64): Likewise.
- (OK_Get_128): Likewise.
- (OK_Put_128): Likewise.
- (E): Adjust.
- (Get procedures): Likewise.
- (Put procedures): Likewise.
- * libgnat/s-fore_f.ads (Fore_Fixed): Adjust signature.
- * libgnat/s-fore_f.adb (Fore_Fixed): Reimplement.
- * libgnat/s-fofi32.ads (Fore_Fixed32): Adjust signature.
- * libgnat/s-fofi64.ads (Fore_Fixed64): Likewise.
- * libgnat/s-fofi128.ads (Fore_Fixed128): Likewise.
- * libgnat/s-imagef.ads: Adjust description.
- * libgnat/s-imagef.adb (Maxdigs): Move around.
- (Set_Image_Integer): Remove assertion.
- * libgnat/s-valuef.ads: Adjust description.
- * libgnat/s-valuef.adb (Integer_To_Fixed): Minor tweak.
-
-2020-11-30 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
- Describe -gnateb switch.
- * doc/gnat_ugn/the_gnat_compilation_model.rst: Mention -gnateb
- switch in configuration pragma files section.
- * gnat_ugn.texi: Regenerate.
- * lib-writ.adb (Write_ALI): Strip directories from configuration
- files path if needed.
- * opt.ads: Declare Config_Files_Store_Basename option.
- * par.adb (Par): Save configuration file checksum.
- * switch-c.adb (Scan_Front_End_Switches): Set
- Config_Files_Store_Basename true if -gnateb is present.
-
-2020-11-30 Arnaud Charlet <charlet@adacore.com>
-
- * exp_dist.adb (RCI_Cache): Initialize.
-
-2020-11-30 Arnaud Charlet <charlet@adacore.com>
-
- * terminals.c (allocate_pty_desc): Copy one less byte since the
- last byte will always be set to 0.
-
-2020-11-30 Eric Botcazou <ebotcazou@adacore.com>
-
- * doc/gnat_ugn/building_executable_programs_with_gnat.rst (-xdr):
- Document that XDR is not supported for 128-bit integer types.
- * gnat_ugn.texi: Regenerate.
- * exp_strm.adb (Build_Elementary_Input_Call): Deal with types
- larger than Long_Long_Integer.
- (Build_Elementary_Write_Call): Likewise.
- * rtsfind.ads (RE_Id): Add RE_I_LLL{I,U] and RE_W_LLL{I,U}.
- (RE_Unit_Table): Add entries for them.
- * libgnat/s-stratt.ads (I_LLLI): New inline function.
- (I_LLLU): Likewise.
- (W_LLLI): New inline procedure.
- (W_LLLU): Likewise.
- * libgnat/s-stratt.adb (S_LLLI): New subtype of SEA.
- (S_LLLU): Likewise.
- (From_LLLI): New instance of Unchecked_Conversion.
- (From_LLLU): Likewise.
- (To_LLLI): Likewise.
- (To_LLLU): Likewise.
- (I_LLLI): Implement.
- (I_LLLU): Likewise.
- (W_LLLI): Likewise.
- (W_LLLU): Likewise.
-
-2020-11-30 Ed Schonberg <schonberg@adacore.com>
-
- * exp_ch5.adb (Expand_Iterator_Loop_Over_Container): Check the
- signature of the private operation Get_Element_Access to prevent
- accidental use of a user-defined homonym subprogram.
-
-2020-11-30 Yannick Moy <moy@adacore.com>
-
- * spark_xrefs.ads: Add comment for Heap that it may remain
- Empty.
-
-2020-11-30 Pascal Obry <obry@adacore.com>
-
- * libgnat/g-sercom__linux.adb (Set): Fix control flags of the
- serial port setting.
-
-2020-11-30 Pascal Obry <obry@adacore.com>
-
- * libgnat/g-sercom__linux.adb: Minor style fixes.
-
-2020-11-30 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_util.adb (Get_Current_Value_Condition): Don't use current
- value tracking in GNATprove mode.
- * sem_res.adb (Resolve_Comparison_Op): Remove incomplete
- special-casing for folding in GNATprove mode.
-
-2020-11-30 Bob Duff <duff@adacore.com>
-
- * errout.adb (Error_Msg_NEL): Do not call Set_Posted if errors
- are being ignored.
- (Error_Msg): Change Errors_Must_Be_Ignored to use the getter.
- * sem_ch8.adb (Find_Direct_Name): Do not skip all the error
- checks when ignoring errors, but instead do not add an entry to
- the Urefs table if errors are being ignored.
- * exp_ch5.adb: Minor comment fix.
-
-2020-11-30 Yannick Moy <moy@adacore.com>
-
- * sem_aggr.adb (Resolve_Array_Aggregate): Improve error message.
-
-2020-11-30 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/s-valuef.adb (Integer_To_Fixed): Do not modify numerator
- or denominator in order to reduce the exponent.
-
-2020-11-30 Arnaud Charlet <charlet@adacore.com>
-
- * ali-util.adb (Get_File_Checksum): Remove dead code.
- * exp_ch4.adb (Expand_Boolean_Operator, Expand_N_Op_Not,
- Make_Boolean_Array_Op): Take Transform_Function_Array into
- account.
- * exp_ch6.adb (Expand_Call_Helper): Update comment. Code
- cleanup.
- * exp_util.adb (Build_Procedure_Form): Use new predefined name
- Name_UP_RESULT.
- * snames.ads-tmpl (Name_UP_RESULT): New predefined name. Code
- cleanup: remove unused names from the project parser, moved to
- gprbuild sources.
- * xsnamest.adb: Add support for uppercase names.
-
-2020-11-30 Ed Schonberg <schonberg@adacore.com>
-
- * sem_util.adb (Enter_Name): When an inherited operation for a
- local derived type is hidden by an explicit declaration of a
- non-overloadable entity in the same scope, make the inherited
- operation non-visible to prevent its accidental use elsewhere.
-
-2020-11-29 John David Anglin <danglin@gcc.gnu.org>
-
- PR ada/97504
- * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <hppa*-*-hpux*>: Use wraplf
- version of Aux_Long_Long_Float.
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/s-valuef.adb (Integer_To_Fixed): Take into account the
- extra digit when scaling up the input.
- * libgnat/s-valuer.adb (Scan_Decimal_Digits): Restrict previous
- change to fixed-point types.
- (Scan_Integral_Digits): Likewise.
-
-2020-11-27 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_res.adb (Parent_Is_Boolean): Simplify.
- (Resolve_Op_Not): Reduce scope of a local variable.
-
-2020-11-27 Piotr Trojanek <trojanek@adacore.com>
-
- * cstand.adb: Simplify with Append_New_Elmt.
- * sem_util.adb: Likewise.
-
-2020-11-27 Arnaud Charlet <charlet@adacore.com>
-
- * sem_eval.adb (Fold_Shift): Fix evaluation of Shift_Right on
- negative values.
-
-2020-11-27 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch6.adb (Expand_Call): Properly split
- Transform_Function_Array and Modify_Tree_For_C.
-
-2020-11-27 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_eval.ads (Compile_Time_Compare): Restore parameter Diff to
- be of an access type.
- * sem_eval.adb (Compile_Time_Compare): Adapt body and callers.
- * sem_attr.adb (Eval_Attribute): Adapt callers.
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/s-valuer.adb (Scan_Decimal_Digits): Round Extra.
- (Scan_Integral_Digits): Likewise.
-
-2020-11-27 Yannick Moy <moy@adacore.com>
-
- * checks.adb (Selected_Range_Checks): Adapt the condition for
- applying range checks so that it is not done inside generics.
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_fixd.adb (Build_Double_Divide): Only use a 128-bit
- division if one of the operands is larger than 64 bits.
- (Build_Double_Divide_Code): Likewise.
- (Build_Scaled_Divide): Likewise.
- (Build_Scaled_Divide_Code): Likewise.
-
-2020-11-27 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-os_lib.adb (To_GM_Time): Return valid and consistent
- values for Invalid_Time.
-
-2020-11-27 Steve Baird <baird@adacore.com>
-
- * snames.ads-tmpl: Define new Name_Stable_Properties Name_Id
- value.
- * aspects.ads, aspects.adb: Add new Aspect_Stable_Properties
- enumeration literal to Aspect_Id type. Add Class_Present
- parameter to Find_Aspect and related
- functions (Find_Value_Of_Aspect and Has_Aspect).
- * sem_util.adb (Has_Nontrivial_Precondition): Fix
- previously-latent bug uncovered by adding Class_Present
- parameter to Aspect.Find_Aspect. The code was wrong before, but
- with the change the bug was more likely to make a user-visible
- difference.
- * sem_ch6.adb (Analyze_Operator_Symbol): If a string literal
- like "abs" or "-" occurs in a Stable_Properties aspect
- specification, then it is to be interpreted as an operator
- symbol and not as a string literal.
- * sem_ch13.ads: Export new Parse_Aspect_Stable_Properties
- function, analogous to the existing Parse_Aspect_Aggregate
- exported procedure.
- * sem_ch13.adb: (Parse_Aspect_Stable_Properties): New function;
- analogous to existing Parse_Aspect_Aggregate.
- (Validate_Aspect_Stable_Properties): New procedure; analogous to
- existing Validate_Aspect_Aggregate. Called from the same case
- statement (casing on an Aspect_Id value) where
- Validate_Aspect_Aggregate is called.
- (Resolve_Aspect_Stable_Properties): New procedure; analogous to
- existing Resolve_Aspect_Aggregate. Called from the same two case
- statements (each casing on an Aspect_Id value) where
- Resolve_Aspect_Aggregate is called.
- (Analyze_Aspect_Specifications): Set Has_Delayed_Aspects and
- Is_Delayed_Aspect attributes for Aspect_Stable_Properties aspect
- specifications.
- (Check_Aspect_At_End_Of_Declarations): The syntactic
- "expression" for a Stable_Properties aspect specification is not
- semantically an expression; it doesn't have a type. Thus, force
- T to be empty in this case.
- * contracts.adb (Expand_Subprogram_Contract): Add call to new
- local procedure,
- Expand_Subprogram_Contract.Add_Stable_Property_Contracts, which
- generates Postcondition pragmas corresponding to stable property
- checks.
-
-2020-11-27 Piotr Trojanek <trojanek@adacore.com>
-
- * doc/gnat_rm/implementation_defined_pragmas.rst:
- (Assertion_Policy): Move "Default_Initial_Condition" from
- ID_ASSERTION_KIND to RM_ASSERTION_KIND section.
- * gnat_rm.texi: Regenerate.
-
-2020-11-27 Piotr Trojanek <trojanek@adacore.com>
-
- * doc/gnat_rm/implementation_defined_pragmas.rst
- (Assertion_Policy): Add "Default_Initial_Condition",
- "Initial_Condition" and "Subprogram_Variant".
- * gnat_rm.texi: Regenerate.
-
-2020-11-27 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Is_Valid_Assertion_Kind): Return False on
- "Assertion_Policy"
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * make.adb (GNAT_Flag): Change to "-gnatg".
- (Compile): Adjust comments accordingly.
-
-2020-11-27 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch4.adb (Rewrite_Comparison): Add assertion to confirm
- that evaluation folds comparisons with static operands; when
- folding comparison with non-static operands, the resulting
- literal is non-static.
- * sem_eval.adb (Eval_Relational_Op): Refactor nested IF
- statement for the special case in the THEN branch; move code for
- the "general case" out of the ELSE branch.
- * sem_res.adb (Resolve_Comparison_Op): Only apply a dubious
- special-case for GNATprove in the GNATprove_Mode.
-
-2020-11-27 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_eval.ads (Compile_Time_Compare): Change parameter Diff
- from access to mode out.
- * sem_eval.adb (Compile_Time_Compare): Adapt body and callers.
- * sem_attr.adb (Eval_Attribute): Adapt callers.
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Expand_N_Op_Multiply): Move down block calling
- Narrow_Large_Operation if the type is Universal_Integer.
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/a-nbnbre.adb: Remove clauses for System.Img_Real and
- add them for System.Unsigned_Types.
- (Float_Conversions.To_Big_Real): Reimplement.
- (Float_Conversions.From_Big_Real): Likewise.
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.ads (Determine_Range_To_Discrete): New procedure.
- * checks.adb (Apply_Scalar_Range_Check): Call it to determine
- a range for the expression when the target type is discrete.
- And also apply the tests for discrete types to fixed-point
- types when they are treated as integers.
- (Apply_Type_Conversion_Checks): Apply checks to conversions
- involving fixed-point types when they are treated as integers.
- (Determine_Range) <N_Type_Conversion>: Factor out code into...
- (Determine_Range_To_Discrete): ...this new procedure and add
- support for fixed-point types when they are treated as integers.
- * einfo.ads (Type_High_Bound): Remove obsolete sentence.
- (Type_Low_Bound): Likewise.
- * exp_ch4.adb (Discrete_Range_Check): Remove obsolete code.
- (Real_Range_Check): Likewise.
- (Expand_N_Type_Conversion): In case of a no-op conversion, clear
- the Do_Range_Check flag on the operand before substituting it.
- Remove calls to Real_Range_Check and Discrete_Range_Check that
- are not guarded by the Do_Range_Check flag, and an assertion.
- * sem_res.adb (Resolve_Type_Conversion): Always apply range
- checks in GNATprove mode; in normal mode, use the updated type
- of the operand in the test against Universal_Fixed. Remove
- obsolete code setting the Do_Range_Check flag at the end.
-
-2020-11-27 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Analyze_Pragma): Change "Ref Manual" to RM;
- replace uses of an unnecessary "Ok" variable with RETURN
- statements; replace nested IF with ELSIF.
-
-2020-11-27 Arnaud Charlet <charlet@adacore.com>
-
- * libgnarl/s-tasren.adb (Local_Complete_Rendezvous): Always call
- Defer_Abort.
- * libgnat/a-except.adb: Abort does not need to be deferred.
- * libgnarl/s-tpobop.adb (Exceptional_Complete_Entry_Body): Abort
- never needs to be undeferred here.
- * exp_ch11.adb (Expand_Exception_Handlers): Remove difference
- between ZCX and SJLJ.
- * exp_ch9.adb (Expand_N_Asynchronous_Select): Remove different
- handling for sjlj.
- * exp_sel.ads, exp_sel.adb (Build_Abort_Block,
- Build_Abort_Block_Handler): Ditto.
-
-2020-11-27 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_prag.adb (Analyze_Pragma): declare new Check_No_Return
- function and call it.
-
-2020-11-27 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch12.adb (Instantiate_Object): Consistently use
- New_Copy_Tree instead of New_Copy.
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_fixd.adb (Build_Conversion): Adjust head comment.
- (Build_Divide): Likewise.
- (Build_Double_Divide): Likewise.
- (Build_Multiply): Likewise.
- (Build_Rem): Likewise.
- (Build_Scaled_Divide): Likewise.
-
-2020-11-27 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-genbig.ads, libgnat/s-genbig.adb (To_Bignum): New
- variant taking an Unsigned_128.
- * libgnat/a-nbnbin.adb (To_Big_Integer): Add support for 128
- bits signed and unsigned types.
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/s-imagef.adb (Set_Image_Fixed): Pass the full value
- of the quotient to Set_Image_Integer during the first round and
- adjust the handling of the minus sign.
-
-2020-11-27 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nbnbre.adb ("=", "<"): Fix.
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/s-valuer.adb (Scan_Raw_Real): Move pragma Annotate around
- and adjust its parameters.
-
-2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_fixd.adb (Build_Double_Divide): Use the RM size of types and
- a more precise estimate for the size of the denominator.
- (Build_Double_Divide_Code): Likewise.
- (Build_Multiply): Use a more precise estimate for the size of the
- result.
- (Build_Scaled_Divide): Use the RM size of types and a more precise
- estimate for the size of the numerator.
- (Build_Scaled_Divide_Code): Likewise.
-
-2020-11-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * Makefile.rtl <sparc*-sun-solaris*> (THREADSLIB): Remove.
- (MISCLIB): Remove -lposix4.
- <*86-*-solaris2*>: Likewise.
- * libgnarl/s-osinte__solaris.ads (System.OS_Interface): Remove
- -lposix4 -lthread.
-
-2020-11-26 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nbnbre.adb (To_Big_Real): Do not loose precision.
-
-2020-11-26 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch8.adb (Analyze_Object_Renaming): Check for AI12-0401.
-
-2020-11-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Likewise.
- (GNATRTL_128BIT_OBJS): Likewise.
- (GNATRTL_128BIT_PAIRS): Add new 128-bit variants.
- * cstand.adb (Create_Standard): Create Standard_Integer_128.
- * doc/gnat_rm/implementation_defined_characteristics.rst: Document
- new limits on 64-bit platforms in entry for 3.5.9(10).
- * gnat_rm.texi: Regenerate.
- * exp_attr.adb: Add with and use clauses for Urealp.
- (Expand_N_Attribute_Reference) <Attribute_Fore>: Call new routines
- for decimal fixed-point types and common ordinary fixed-point types.
- * exp_ch4.adb (Real_Range_Check): Extend conversion trick to all
- ordinary fixed-point types and use Small_Integer_Type_For.
- * exp_fixd.adb: Add with and use clauses for Ttypes.
- (Build_Divide): Add special case for 32-bit values and deal with
- 128-bit types.
- (Build_Double_Divide): Deal with 128-bit types.
- (Build_Double_Divide_Code): Likewise. Do not apply conversions
- before calling Build_Multiply.
- (Build_Multiply): Likewise. Add special case for 32-bit values.
- (Build_Scaled_Divide): Deal with 128-bit types.
- (Build_Scaled_Divide_Code): Likewise. Fix size computation. Do not
- apply conversions before calling Build_Multiply.
- (Do_Multiply_Fixed_Fixed): Minor tweak.
- (Integer_Literal): Deal with 128-bit values.
- * exp_imgv.adb (Has_Decimal_Small): Delete.
- (Expand_Image_Attribute): Call new routines for common ordinary
- fixed-point types.
- (Expand_Value_Attribute): Likewise.
- (Expand_Width_Attribute): Add new expansion for fixed-point types.
- * freeze.adb (Freeze_Entity): Move error checks for ordinary
- fixed-point types to...
- (Freeze_Fixed_Point_Type): ...here. Deal with 128-bit types and
- adjust limitations for 32-bnt and 64-bit types.
- * rtsfind.ads (RTU_Id): Add entries for new System_Fore, System_Img,
- and System_Val units and remove them for obsolete units.
- (RE_Id): Add entries for Double_Divide128, Scaled_Divide128, the new
- Fore, Image, Value routines and remove them for obsolete units.
- (RE_Unit_Table): Likewise.
- * sem_ch3.adb (Decimal_Fixed_Point_Type_Declaration): Deal with
- 128-bit types.
- * stand.ads (Standard_Entity_Type): Add Standard_Integer_128.
- * uintp.ads (Uint_31): New deferred constant.
- (Uint_Minus_18): Likewise.
- (Uint_Minus_31): Likewise.
- (Uint_Minus_76): Likewise.
- (Uint_Minus_127): Likewise.
- * urealp.ads (Ureal_2_31): New function.
- (Ureal_2_63): Likewise.
- (Ureal_2_127): Likewise.
- (Ureal_2_M_127): Likewise.
- (Ureal_2_10_18): Likewise.
- (Ureal_M_2_10_18): Likewise.
- (Ureal_9_10_36): Likewise.
- (Ureal_M_9_10_36): Likewise.
- (Ureal_10_76): Likewise.
- (Ureal_M_10_76): Likewise.
- (Ureal_10_36): Delete.
- (Ureal_M_10_36): Likewise.
- * urealp.adb (UR_2_10_18): New variable.
- (UR_9_10_36): Likewise.
- (UR_10_76): Likewise.
- (UR_M_2_10_18): Likewise.
- (UR_M_9_10_36): Likewise.
- (UR_M_10_76): Likewise.
- (UR_2_31): Likewise.
- (UR_2_63): Likewise.
- (UR_2_127): Likewise.
- (UR_2_M_127): Likewise.
- (UR_10_36): Delete.
- (UR_M_10_36): Likewise.
- (Initialize): Initialize them.
- (UR_Write): Do not use awkward Ada literal style.
- (Ureal_2_10_18): New function.
- (Ureal_9_10_36): Likewise.
- (Ureal_10_76): Likewise.
- (Ureal_2_31): Likewise.
- (Ureal_2_63): Likewise.
- (Ureal_2_127): Likewise.
- (Ureal_2_M_127): Likewise.
- (Ureal_M_2_10_18): Likewise.
- (Ureal_M_9_10_36): Likewise.
- (Ureal_10_76): Likewise.
- (Ureal_M_10_76): Likewise.
- (Ureal_10_36): Delete.
- (Ureal_M_10_36): Likewise.
- * libgnat/a-decima__128.ads: New file.
- * libgnat/a-tideau.ads, libgnat/a-tideau.adb: Reimplement as
- generic unit.
- * libgnat/a-tideio.adb: Reimplement.
- * libgnat/a-tideio__128.adb: New file.
- * libgnat/a-tifiau.ads, libgnat/a-tifiau.adb: New generic unit.
- * libgnat/a-tifiio.adb: Move bulk of implementation to s-imagef
- and reimplement.
- * libgnat/a-tifiio__128.adb: New file.
- * libgnat/a-tiflau.adb (Get): Minor consistency fix.
- (Gets): Likewise.
- * libgnat/a-wtdeau.ads, libgnat/a-wtdeau.adb: Reimplement as
- generic unit.
- * libgnat/a-wtdeio.adb: Reimplement.
- * libgnat/a-wtdeio__128.adb: New file.
- * libgnat/a-wtfiau.ads, libgnat/a-wtfiau.adb: New generic unit.
- * libgnat/a-wtfiio.adb: Reimplement.
- * libgnat/a-wtfiio__128.adb: New file.
- * libgnat/a-ztdeau.ads, libgnat/a-ztdeau.adb: Reimplement as
- generic unit.
- * libgnat/a-ztdeio.adb: Reimplement.
- * libgnat/a-ztdeio__128.adb: New file.
- * libgnat/a-ztfiau.ads, libgnat/a-ztfiau.adb: New generic unit.
- * libgnat/a-ztfiio.adb: Reimplement.
- * libgnat/a-ztfiio__128.adb: New file.
- * libgnat/g-rannum.adb (Random_Decimal_Fixed): Use a subtype of the
- appropiate size for the instantiation.
- (Random_Ordinary_Fixed): Likewise.
- * libgnat/s-arit32.ads, libgnat/s-arit32.adb: New support unit.
- * libgnat/s-fode128.ads: New instantiation.
- * libgnat/s-fode32.ads: Likewise.
- * libgnat/s-fode64.ads: Likewise.
- * libgnat/s-fofi128.ads: Likewise.
- * libgnat/s-fofi32.ads: Likewise.
- * libgnat/s-fofi64.ads: Likewise.
- * libgnat/s-fore_d.ads, libgnat/s-fore_d.adb: New generic unit.
- * libgnat/s-fore_f.ads, libgnat/s-fore_f.adb: Likewise.
- * libgnat/s-fore.ads, libgnat/s-fore.adb: Rename into...
- * libgnat/s-forrea.ads, libgnat/s-forrea.adb: ...this.
- * libgnat/s-imaged.ads, libgnat/s-imaged.adb: New generic unit.
- * libgnat/s-imagef.ads, libgnat/s-imagef.adb: Likewise, taken
- from a-tifiio.adb.
- * libgnat/s-imde128.ads: New instantiation.
- * libgnat/s-imde32.ads: Likewise.
- * libgnat/s-imde64.ads: Likewise.
- * libgnat/s-imfi128.ads: Likewise.
- * libgnat/s-imfi32.ads: Likewise.
- * libgnat/s-imfi64.ads: Likewise.
- * libgnat/s-imgdec.ads, libgnat/s-imgdec.adb: Delete.
- * libgnat/s-imglld.ads, libgnat/s-imglld.adb: Likewise.
- * libgnat/s-imgrea.adb (Set_Image_Real): Replace Sign local variable
- with Minus local variable for the sake of consistency.
- * libgnat/s-imguti.ads, libgnat/s-imguti.adb: New support unit.
- * libgnat/s-vade128.ads: New instantiation.
- * libgnat/s-vade32.ads: Likewise.
- * libgnat/s-vade64.ads: Likewise.
- * libgnat/s-vafi128.ads: Likewise.
- * libgnat/s-vafi32.ads: Likewise.
- * libgnat/s-vafi64.ads: Likewise.
- * libgnat/s-valdec.ads, libgnat/s-valdec.adb: Delete.
- * libgnat/s-vallld.ads, libgnat/s-vallld.adb: Likewise.
- * libgnat/s-valued.ads, libgnat/s-valued.adb: New generic unit.
- * libgnat/s-valuef.ads, libgnat/s-valuef.adb: Likewise.
- * libgnat/s-valuei.adb: Minor rewording.
- * libgnat/s-valrea.adb: Move bulk of implementation to...
- * libgnat/s-valuer.ads, libgnat/s-valuer.adb: ...here. New
- generic unit.
- * libgnat/system-aix.ads (Max_Mantissa): Adjust.
- * libgnat/system-darwin-arm.ads (Max_Mantissa): Likewise.
- * libgnat/system-darwin-ppc.ads (Max_Mantissa): Likewise.
- * libgnat/system-darwin-x86.ads (Max_Mantissa): Likewise.
- * libgnat/system-djgpp.ads (Max_Mantissa): Likewise.
- * libgnat/system-dragonfly-x86_64.ads (Max_Mantissa): Likewise.
- * libgnat/system-freebsd.ads (Max_Mantissa): Likewise.
- * libgnat/system-hpux-ia64.ads (Max_Mantissa): Likewise.
- * libgnat/system-hpux.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-alpha.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-arm.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-hppa.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-ia64.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-m68k.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-mips.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-ppc.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-riscv.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-s390.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-sh4.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-sparc.ads (Max_Mantissa): Likewise.
- * libgnat/system-linux-x86.ads (Max_Mantissa): Likewise.
- * libgnat/system-lynxos178-ppc.ads (Max_Mantissa): Likewise.
- * libgnat/system-lynxos178-x86.ads (Max_Mantissa): Likewise.
- * libgnat/system-mingw.ads (Max_Mantissa): Likewise.
- * libgnat/system-qnx-aarch64.ads (Max_Mantissa): Likewise.
- * libgnat/system-rtems.ads (Max_Mantissa): Likewise.
- * libgnat/system-solaris-sparc.ads (Max_Mantissa): Likewise.
- * libgnat/system-solaris-x86.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-arm-rtp-smp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-arm-rtp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-arm.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-e500-kernel.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-e500-rtp-smp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-e500-rtp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-e500-vthread.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-ppc-kernel.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-ppc-ravenscar.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-ppc-rtp-smp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-ppc-rtp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-ppc-vthread.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-ppc.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-x86-kernel.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-x86-rtp-smp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-x86-rtp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-x86-vthread.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks-x86.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-aarch64-rtp-smp.ads (Max_Mantissa):
- Likewise.
- * libgnat/system-vxworks7-aarch64.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-arm-rtp-smp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-arm.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-e500-kernel.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-e500-rtp-smp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-e500-rtp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-ppc-kernel.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-ppc-rtp-smp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-ppc-rtp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-ppc64-kernel.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-ppc64-rtp-smp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-x86-kernel.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-x86-rtp-smp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-x86-rtp.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-x86_64-kernel.ads (Max_Mantissa): Likewise.
- * libgnat/system-vxworks7-x86_64-rtp-smp.ads (Max_Mantissa): Likewise.
-
-2020-11-26 Liaiss Merzougue <merzougue@adacore.com>
-
- * libgnat/s-imgrea.ads (Image_Ordinary_Fixed_Point): Add a
- remark concerning the irrelevant use of Inf and -0.0
-
-2020-11-26 Arnaud Charlet <charlet@adacore.com>
-
- * osint-c.adb (Set_Output_Object_File_Name): Add support for
- .c output file.
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * lib-writ.adb, sem_ch8.adb, sem_prag.adb: Use
- Is_Generic_Subprogram instead of low-level membership tests.
-
-2020-11-26 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch6.adb (Analyze_Call_And_Resolve): Reformatted a comment.
- * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
- Fixed a typo.
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_res.adb (Resolve_Membership_Op): Replace pragma Warnings
- with pragma Assert.
-
-2020-11-26 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch6.adb (Analyze_Call_And_Resolve): Add information to the
- error message on an illegal procedure call, when the illegality
- is due to the presence of a component of the full view of the
- target object, as well as a procedure with the same name (See RM
- 4.1.3 (9.2/3)).
-
-2020-11-26 Ed Schonberg <schonberg@adacore.com>
-
- * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
- when the restriction is a configuration pragma and specifies
- No_Tasking, a global flag is set to reject task declarations,
- and to prevent the construction of Master entities. The flag
- must not be set if the pragma is a Restriction_Warning, in which
- case task declarationns are allowed.
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * libgnat/a-stzhas.adb (Wide_Wide_Hash): Instantiate inside a
- wrapper function.
- * libgnat/a-stzhas.ads (Wide_Wide_Hash): Likewise; remove wrong
- comment, because this is indeed a RM unit, as described in Ada
- RM A.4.8 (1/3).
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_eval.adb (Eval_Slice): Refactor repeated calls to Prefix
- with a local constant (named just like in Resolve_Slice).
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_eval.adb (Eval_Slice): Emit warning not just for
- constants, but for any objects.
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch4.adb (Indicate_Name_And_Type): Fix whitespace in
- comment.
- * sem_res.adb (Resolve_Call): Remove redundant parens.
- * sem_util.adb (Set_Entity_With_Checks): Remove extra call to
- Set_Entity.
-
-2020-11-26 Bob Duff <duff@adacore.com>
-
- * exp_ch4.adb (Expand_Concatenate): Call Set_No_Initialization
- on the N_Allocator node that is supposed to allocate on the
- secondary stack.
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch13.adb, exp_ch9.adb, sem_ch8.adb, sem_util.adb: Replace
- a combination of Is_Protected_Type and Is_Task_Type by
- Is_Concurrent_Type.
-
-2020-11-26 Arnaud Charlet <charlet@adacore.com>
-
- * libgnarl/s-tassta.adb (Task_Wrapper): Fix computation of
- Pattern_Size.
-
-2020-11-26 Bob Duff <duff@adacore.com>
-
- * freeze.adb (Freeze_Array_Type): Remove propagation of
- Has_Own_Invariants to the first subtype. This is a no-op,
- because the current (incorrect) version of Has_Own_Invariants
- calls Base_Type.
- * sem_prag.adb, sem_util.adb: Pass the base type to
- Set_Has_Own_Invariants.
-
-2020-11-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (Aft_Value): Adjust documentation.
- (Scale_Value): Likewise.
-
-2020-11-26 Justin Squirek <squirek@adacore.com>
-
- * exp_ch4.adb (Expand_N_Type_Conversion): Use the unexpanded
- operand when generating accessibility checks.
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * libgnat/a-cbhase.adb (Read): Remove extra whitespace.
- * libgnat/a-cbmutr.ads (Read): Likewise.
- * libgnat/a-cborse.adb (Read): Likewise.
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch7.adb, exp_util.adb, freeze.adb: Rewrite with
- Is_Access_Object_Type.
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Check_Valid_Library_Unit_Pragma): Raise
- exception.
- (Analyze_Pragma): Remove detection of rewritten pragmas.
-
-2020-11-26 Joffrey Huguet <huguet@adacore.com>
-
- * libgnat/a-strmap.ads: Add preconditions and postconditions to
- all subprograms.
-
-2020-11-26 Yannick Moy <moy@adacore.com>
-
- * sem_res.adb (Resolve_Equality_Op): Warn when -gnatwq is used
- (the default) and the problematic case is encountered.
-
-2020-11-26 Yannick Moy <moy@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute): Issue a continuation message
- to give proper recommendation here.
-
-2020-11-26 Gary Dismukes <dismukes@adacore.com>
-
- * exp_util.adb (Expand_Subtype_From_Expr): A typo correction,
- plus other minor reformatting.
-
-2020-11-26 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch12.adb (Instantiate_Formal_Package): If previous matched
- entity is overloadable, advance in the list of actuals of the
- actual package, to prevent an erroneous match of two adjacent
- overloadable homonyms with the same entity.
-
-2020-11-26 Justin Squirek <squirek@adacore.com>
-
- * sem_ch6.adb (First_Selector): Utility routine to return the
- first selector or choice in an association.
- (Check_Return_Construct_Accessibility): Modify loop to handle
- named associations when iterating through discriminants.
-
-2020-11-26 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch12.adb: Fix casing from "Instantiation" to
- "instantiation".
-
-2020-11-25 Ed Schonberg <schonberg@adacore.com>
-
- * freeze.adb (Is_Uninitialized_Aggregate): Move...
- * exp_util.adb (Is_Uninitialized_Aggregate): ... here.
- (Expand_Subtype_From_Expr): If the expression is an
- uninitialized aggregate, capture subtype for declared object and
- remove expression to suppress further superfluous expansion.
-
-2020-11-25 Ed Schonberg <schonberg@adacore.com>
-
- * sem_eval.adb (Subtypes_Statically_Compatible): Scalar types
- with compatible static bounds are statically compatible if
- predicates are compatible, even if they are not static subtypes.
- Same for private types without discriminants.
-
-2020-11-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch11.adb (Expand_N_Raise_Statement): Use Is_Entity_Name
- consistently in tests on the name of the statement.
- * exp_prag.adb (Expand_Pragma_Check): In the local propagation
- case, wrap the raise statement in a block statement.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch8.adb (Expand_N_Exception_Renaming_Declaration): Move
- "Nam" constant after the body of a nested subprogram; change "T"
- from variable to constant.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * make.adb (Scan_Make_Arg): Merge ELSIF branches for -u and -U.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * doc/gnat_rm/implementation_defined_attributes.rst
- (Has_Tagged_Values): Document based on the existing description
- of Has_Access_Type and the comment for Has_Tagged_Component,
- which is where frontend evaluates this attribute.
- * gnat_rm.texi: Regenerate.
- * sem_attr.adb (Analyze_Attribute): Merge processing of
- Has_Access_Type and Has_Tagged_Component attributes.
- * sem_util.adb (Has_Access_Type): Fix casing in comment.
- * sem_util.ads (Has_Tagged_Component): Remove wrong (or
- outdated) comment about the use of this routine to implement the
- equality operator.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb (Expand_Size_Attribute): Remove whitespace;
- simplify with a membership test, which are now allowed in the
- frontend code.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (Analyze_One_Aspect): Fix inconsistent calls to
- Make_Aitem_Pragma.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (Check_Expr_Constants): Simplify with
- Is_Named_Number.
- * sem_prag.adb (Process_Convention): Likewise.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (Analyze_One_Aspect): Detect aspect identifiers
- with membership tests.
- (Check_Aspect_At_End_Of_Declarations): Likewise.
- (Freeze_Entity_Checks): Likewise; a local constant is no longer
- needed.
- (Is_Operational_Item): Similar simplification for attribute
- identifiers.
- (Is_Type_Related_Rep_Item): Likewise.
- (Resolve_Iterable_Operation): Detect names with a membership
- test.
- (Validate_Independence): Replace repeated Ekind with a
- membership test.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (Analyze_One_Aspect): Replace duplicate of
- Effective_Reads.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.adb: Use composite wrappers (e.g.
- Is_Subprogram_Or_Entry) and membership tests where it appears to
- improve clarity.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.adb (Is_Standard_Character_Type,
- Is_Standard_String_Type): Simplify.
- (Last_Formal): Use procedural variant of Next_Formal.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.adb: Replace "E" with Entity_Id in local object
- declarations.
-
-2020-11-25 Steve Baird <baird@adacore.com>
-
- * exp_ch2.adb (Expand_Entity_Reference): A new local predicate
- Is_Object_Renaming_Name indicates whether a given expression
- occurs (after looking through qualified expressions and type
- conversions) as the name of an object renaming declaration. If
- Current_Value is available but this new predicate is True, then
- ignore the availability of Current_Value.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch12.adb (Instantiate_Type): Remove extra whitespace.
- (Validate_Access_Type_Instance): Remove dead (and duplicated)
- code.
-
-2020-11-25 Gary Dismukes <dismukes@adacore.com>
-
- * exp_util.adb (Possible_Side_Effect_In_SPARK): Replace hyphen
- with a space in "side-effect" (two instances).
-
-2020-11-25 Justin Squirek <squirek@adacore.com>
-
- * doc/gnat_rm/intrinsic_subprograms.rst (Shifts and Rotates):
- Document behavior on negative numbers
- * gnat_rm.texi: Regenerate.
- * sem_eval.adb (Fold_Shift): Set modulus to be based on the RM
- size for non-modular integer types.
-
-2020-11-25 Olivier Hainque <hainque@adacore.com>
-
- * adaint.c (__gnat_copy_attribs): Reinstate code based on utime
- for timestamp processing on VxWorks 6.
-
-2020-11-25 Yannick Moy <moy@adacore.com>
-
- * exp_util.adb (Remove_Side_Effects): Only remove side-effects
- in GNATprove mode when this is useful.
- * sem_res.adb (Set_Slice_Subtype): Make sure in GNATprove mode
- to define the Itype when needed, so that run-time errors can be
- analyzed.
- * sem_util.adb (Enclosing_Declaration): Correctly take into
- account renaming declarations.
-
-2020-11-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/s-rannum.adb (Random_Discrete): Specifically deal with
- the case where the size of the base type is larger than 64 bits.
-
-2020-11-25 Yannick Moy <moy@adacore.com>
-
- * sem_ch3.adb (Access_Type_Declaration): Set Etype before
- checking for volatility compatibility.
-
-2020-11-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/g-rannum.ads (Random): New functions returning 128-bit.
- * libgnat/g-rannum.adb (Random): Implement them and alphabetize.
- (To_Signed): New unchecked conversion function for 128-bit.
-
-2020-11-25 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch7.adb (Build_Finalization_Master, Build_Finalizer,
- Build_Object_Declarations, Make_Deep_Array_Body,
- Wrap_Transient_Expression): Call Set_Debug_Info_Needed on
- temporaries when Debug_Generated_Code is True.
-
-2020-11-25 Liaiss Merzougue <merzougue@adacore.com>
-
- * libgnat/s-imagei.adb
- (Set_Digits): Rewrite the procedure to remove recursion.
- (Image_Integer, Set_Image_Integer): Update assertions and remove
- redundant ones.
- * libgnat/s-imageu.adb
- (Set_Image_Unsigned): Rewrite the procedure to remove recursion.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_util.adb (Attribute_Constrained_Static_Value): Fix body
- box.
- * sem_attr.adb (Eval_Attribute): Replace repeated calls to
- Attribute_Name with a captured value of the Attribute_Id; also,
- remove extra parens around Is_Generic_Type.
-
-2020-11-25 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_prag.adb (Analyze_Pragma): Emit error on wrong argument
- nkind.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_attr.adb, sem_prag.adb: Use Is_Named_Number.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb, exp_util.adb: Fix style and typos in comments.
-
-2020-11-25 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): A variable that
- is only incremented in the code has now type Nat; conversion is
- now unnecessary.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Analyze_Global_Item): Call SPARK_Msg_NE with the
- entity, not with its identifier.
-
-2020-11-24 Arnaud Charlet <charlet@adacore.com>
-
- * opt.ads (Generate_Asm): New flag.
- * osint-c.adb (Set_Output_Object_File_Name): Accept any
- extension when generating assembly.
- * adabkend.adb (Scan_Compiler_Args): Recognize -S.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb, exp_ch4.adb, exp_intr.adb, sem_ch8.adb,
- sem_res.adb, sem_type.adb, sem_util.adb: Reuse Is_Packed_Array.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * checks.adb (Apply_Access_Check): Remove unbalanced paren.
- * exp_attr.adb (Expand_N_Attribute_Reference): Fix typo in
- comment.
-
-2020-11-24 Justin Squirek <squirek@adacore.com>
-
- * sem_prag.adb (Analyze_Pragma): Mark relevant pragmas as ghost
- when they are within a ghost region.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * contracts.adb, freeze.adb, sem_ch12.adb, sem_prag.adb: Reuse
- In_Same_List.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Is_Loop_Pragma): Avoid repeated calls to
- Original_Node; remove unnecessary IF statement.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Rewrite
- with a CASE statement.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): Replace calls to
- Sloc with a local constant Loc; remove call to
- Analyze_And_Resolve and return, which is exactly what happens
- anyway (and other branches in the Constrained declare block
- appear to rely on analysis, resolution and returning happening
- in all cases).
- * sem_util.adb: Remove useless parens.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_util.adb (Is_Object_Reference): Delta and extension
- aggregates are objects.
-
-2020-11-24 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * libgnat/s-rident.ads (System.Rident): Register new restriction
- IDs.
- * par-ch13.adb (Get_Aspect_Specifications): Add restriction check.
- * par-prag.adb (Process_Restrictions_Or_Restriction_Warnings):
- Register No_Unrecognized_Aspects restriction.
- * sem_prag.adb (Analyze_Pragma): Add restriction check.
- * snames.ads-tmpl: Create restriction names.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_attr.adb (Declared_Within): Return True for objects
- declared within the attribute Loop_Entry prefix itself.
-
-2020-11-24 Yannick Moy <moy@adacore.com>
-
- * sem_ch3.adb (Process_Discriminants): Correctly set right
- context for analyzing default value of discriminant.
-
-2020-11-24 Arnaud Charlet <charlet@adacore.com>
-
- * sem_type.adb (Add_One_Interp.Is_Universal_Operation): Account
- for universal_access = operator.
- (Disambiguate): Take into account preference on universal_access
- = operator when relevant.
- (Disambiguate.Is_User_Defined_Anonymous_Access_Equality): New.
-
-2020-11-24 Arnaud Charlet <charlet@adacore.com>
-
- * exp_util.adb (Is_Finalizable_Transient): Take into account return
- statements containing N_Expression_With_Actions. Also clean up a
- condition to make it more readable.
- * exp_ch6.adb: Fix typo.
-
-2020-11-24 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/a-wtdeio.adb (TFT): Delete and adjust throughout.
- * libgnat/a-wtenau.adb (TFT): Likewise.
- * libgnat/a-wtfiio.adb (TFT): Likewise.
- * libgnat/a-wtflio.adb (TFT): Likewise.
- * libgnat/a-wtinio.adb (TFT): Likewise.
- * libgnat/a-wtinio__128.adb (TFT): Likewise.
- * libgnat/a-wtmoio.adb (TFT): Likewise.
- * libgnat/a-wtmoio__128.adb (TFT): Likewise.
- * libgnat/a-ztdeio.adb (TFT): Likewise.
- * libgnat/a-ztenau.adb (TFT): Likewise.
- * libgnat/a-ztfiio.adb (TFT): Likewise.
- * libgnat/a-ztflio.adb (TFT): Likewise.
- * libgnat/a-ztinio.adb (TFT): Likewise.
- * libgnat/a-ztinio__128.adb (TFT): Likewise.
- * libgnat/a-ztmoio.adb (TFT): Likewise.
- * libgnat/a-ztmoio__128.adb (TFT): Likewise.
-
-2020-11-24 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch13.adb (Validate_Literal_Aspect): Add support for named
- numbers and in particular overload of the Real_Literal function.
- * sem_res.adb (Resolve): Add support for named numbers in
- Real_Literal and Integer_Literal resolution.
- * einfo.adb, einfo.ads (Related_Expression,
- Set_Related_Expression): Allow E_Function.
- * uintp.ads (UI_Image_Max): Bump size of buffer to avoid loosing
- precision.
- * sem_eval.adb: Fix typo in comment.
- * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads (From_String):
- Return a Valid_Big_Integer.
- * libgnat/a-nbnbre.adb, libgnat/a-nbnbre.ads (From_String): New
- variant taking two strings. Return a Valid_Big_Real.
-
-2020-11-24 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch12.adb (Analyze_Associations) <Explicit_Freeze_Check>: Test
- that the instance is in a statement sequence instead of local scope.
- (Freeze_Subprogram_Body): Use the special delayed placement with
- regard to the parent instance only if its Sloc is strictly greater.
- (Install_Body): Likewise.
-
-2020-11-24 Steve Baird <baird@adacore.com>
-
- * sem_ch13.adb (Validate_Literal_Aspect): Call to Base_Type
- needed in order to correctly check result type of String_Literal
- function when the first named subtype differs from the base
- type (e.g.:
- type T is range 1 .. 10 with String_Literal => ... ;
- ).
-
-2020-11-24 Yannick Moy <moy@adacore.com>
-
- * sem_prag.adb (Analyze_Global_Item): Handle specially the
- current instance of a PO.
- * sem_util.ads (Is_Effectively_Volatile,
- Is_Effectively_Volatile_For_Reading): Add parameter
- Ignore_Protected.
- * sem_util.adb (Is_Effectively_Volatile,
- Is_Effectively_Volatile_For_Reading): Add parameter
- Ignore_Protected to compute the query results ignoring protected
- objects/types.
- (Is_Effectively_Volatile_Object,
- Is_Effectively_Volatile_Object_For_Reading): Adapt to new
- signature.
-
-2020-11-24 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
- Update documentation on -gnatyk.
- * gnat_ugn.texi: Regenerate.
-
-2020-11-24 Yannick Moy <moy@adacore.com>
-
- * sem_ch10.adb (Analyze_Compilation_Unit): Move aspects from
- body to the newly created spec.
-
-2020-11-24 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch6.adb (Add_Cond_Expression_Extra_Actual): Simplify
- handling of function calls and remove bug in handling of
- transient objects. Minor reformatting along the way.
-
-2020-11-24 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nbnbin.adb (From_String): Implement fully.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Resolve_Delta_Array_Aggregate): If the choice is
- a subtype_indication then call
- Resolve_Discrete_Subtype_Indication; both for choices
- immediately inside array delta aggregates and inside
- iterated_component_association within array delta aggregates.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * lib-load.adb, lib-writ.adb, lib.adb, par-load.adb,
- rtsfind.adb, sem_ch10.adb: Use Present where possible.
-
-2020-11-24 Yannick Moy <moy@adacore.com>
-
- * sem_prag.adb (Analyze_Depends_Global): Reject Global and
- Depends on null procedure.
-
-2020-11-24 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nbnbre.adb (From_String): Handle properly '_'
- characters.
-
-2020-11-24 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_Array_Aggregate,
- Expand_SPARK_N_Aggregate): Remove, no longer needed.
- * sem_aggr.adb (Resolve_Iterated_Component_Association): Only
- remove references in the analyzed expression when generating
- code and the expression needs to be analyzed anew after being
- rewritten into a loop.
-
-2020-11-24 Eric Botcazou <ebotcazou@adacore.com>
-
- * doc/gnat_rm/implementation_defined_characteristics.rst: Complete
- entry of 3.5.9(10).
- * gnat_rm.texi: Regenerate.
-
-2020-11-20 Maciej W. Rozycki <macro@linux-mips.org>
-
- * adaint.c (__gnat_number_of_cpus): Check for the presence of
- _SC_NPROCESSORS_ONLN rather than a list of OS-specific macros
- to decide whether to use `sysconf'.
-
-2020-11-20 Jakub Jelinek <jakub@redhat.com>
-
- PR other/97911
- * gcc-interface/Make-lang.in (ada.serial): Change from goal to a
- variable.
- (.PHONY): Drop ada.serial and ada.prev.
- (gnat1$(exeext)): Depend on $(ada.serial) rather than ada.serial.
-
-2020-11-19 Eric Botcazou <ebotcazou@adacore.com>
-
- PR ada/97805
- * adaint.c: Include climits in C++ and limits.h otherwise.
-
-2020-11-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_dbug.adb (Is_Handled_Scale_Factor): Delete.
- (Get_Encoded_Name): Do not call it.
- * gcc-interface/decl.c (gnat_to_gnu_entity) <Fixed_Point_Type>:
- Tidy up and always use a meaningful description for arbitrary
- scale factors.
- * gcc-interface/misc.c (gnat_get_fixed_point_type_info): Remove
- obsolete block and adjust the description of the scale factor.
-
-2020-11-18 Jakub Jelinek <jakub@redhat.com>
-
- * gcc-interface/Make-lang.in (ada.serial): New goal.
- (.PHONY): Add ada.serial ada.prev.
- (gnat1$(exeext)): Depend on ada.prev. Call LINK_PROGRESS.
-
-2020-11-18 Matthias Klose <doko@ubuntu.com>
-
- PR ada/97859
- * Makefile.rtl (powerpc% linux%): Also match powerpc64le cpu.
-
-2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/gigi.h: Remove ^L characters throughout.
- * gcc-interface/decl.c: Likewise.
- * gcc-interface/utils.c: Likewise.
- * gcc-interface/utils2.c: Likewise.
- * gcc-interface/trans.c (gnat_to_gnu) <N_Allocator>: Do not explicitly
- go to the base type for the Has_Constrained_Partial_View flag.
-
-2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (build_binary_op_trapv): Convert operands
- to the result type before doing generic overflow checking.
-
-2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (can_be_lower_p): Remove.
- (Regular_Loop_to_gnu): Add ENTRY_COND unconditionally if
- BOTTOM_COND is non-zero.
-
-2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: In case
- the constant is not being defined, get the expression in type
- annotation mode only if its type is elementary.
-
-2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (gnat_to_gnu) <N_Op_Shift>: Also convert
- GNU_MAX_SHIFT if the type of the operation has been changed.
- * gcc-interface/utils.c (can_materialize_object_renaming_p): Add
- pair of missing parentheses.
-
-2020-11-07 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/Makefile.in: Force target_cpu to powerpc if the
- nominal target is powerpc64-suse-linux.
-
-2020-11-07 Iain Sandoe <iain@sandoe.co.uk>
-
- * gcc-interface/misc.c (gnat_printable_name): Change
- DECL_IS_BUILTIN -> DECL_IS_UNDECLARED_BUILTIN.
-
-2020-10-28 Alexandre Oliva <oliva@adacore.com>
-
- PR ada/97504
- * Makefile.rtl (LIBGNAT_TARGET_PAIRS> <riscv*-*-*>: Use wraplf
- version of Aux_Long_Long_Float.
-
-2020-10-27 Doug Rupp <rupp@adacore.com>
-
- * Makefile.rtl: Add vx7r2cert spec file to ARM, PowerPC and x86
- targets.
- * vxworks7-cert-rtp-link.spec: New spec file.
-
-2020-10-27 Arnaud Charlet <charlet@adacore.com>
-
- * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-spogwa object.
- * libgnat/g-spogwa.adb: Fix style errors.
-
-2020-10-27 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_Array_Aggregate): Dedicated
- routine for array aggregates; mostly reuses existing code, but
- calls itself recursively for multi-dimensional array aggregates.
- (Expand_SPARK_N_Aggregate): Call Expand_SPARK_Array_Aggregate to
- do the actual expansion, starting from the first index of the
- array type.
-
-2020-10-27 Ed Schonberg <schonberg@adacore.com>
-
- * sem_aggr.adb (Resolve_Iterated_Component_Association): new
- internal subprogram Remove_References, to reset semantic
- information on each reference to the index variable of the
- association, so that Collect_Aggregate_Bounds can work properly
- on multidimensional arrays with nested associations, and
- subsequent expansion into loops can verify that dimensions of
- each subaggregate are compatible.
-
-2020-10-27 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * exp_prag.adb (Append_Copies): Handle N_Parameter_Associations.
-
-2020-10-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * ada_get_targ.adb (Digits_From_Size): Delete.
- (Width_From_Size): Likewise.
- * get_targ.adb (Digits_From_Size): Likewise.
- (Width_From_Size): Likewise.
- * get_targ.ads (Digits_From_Size): Likewise.
- (Width_From_Size): Likewise.
- * ttypes.ads: Remove with clause for Get_Targ.
- (Standard_Short_Short_Integer_Width): Delete.
- (Standard_Short_Integer_Width): Likewise.
- (Standard_Integer_Width): Likewise.
- (Standard_Long_Integer_Width): Likewise.
- (Standard_Long_Long_Integer_Width): Likewise.
- (Standard_Long_Long_Long_Integer_Width): Likewise.
- (Standard_Short_Float_Digits): Likewise.
- (Standard_Float_Digits): Likewise.
- (Standard_Long_Float_Digits): Likewise.
- (Standard_Long_Long_Float_Digits): Likewise.
- * gnat1drv.adb (Adjust_Global_Switches): Adjust.
-
-2020-10-27 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch6.adb, freeze.adb, gnat1drv.adb, opt.ads, sem_ch6.adb
- (Transform_Function_Array): New flag, split from Modify_Tree_For_C.
- * exp_unst.adb: Minor reformatting.
-
-2020-10-27 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * libgnat/g-socpol.adb (Wait): Do not exit from loop on EINTR
- error and timeout is over.
-
-2020-10-26 Ed Schonberg <schonberg@adacore.com>
-
- * exp_aggr.adb (Build_Array_Aggr_Code): If the aggregate
- includes an Others_Choice in an association that is an
- Iterated_Component_Association, generate a proper loop for it.
-
-2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/a-tifiio.adb: Add missing sign in documentation.
- * libgnat/s-imgrea.ads: Minor fixes in commentary.
-
-2020-10-26 Pat Rogers <rogers@adacore.com>
-
- * doc/gnat_rm/implementation_defined_pragmas.rst: Include
- "Jorvik" in pragma Profile description.
- * gnat_rm.texi: Regenerate.
-
-2020-10-26 Bob Duff <duff@adacore.com>
-
- * sem_attr.adb (Check_Image_Type): Remove "|", so the compiler
- will not crash.
- * errout.ads: Improve comment. This has nothing to do with
- -gnatQ.
-
-2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/a-tifiio.adb: Minor editions to documentation.
-
-2020-10-26 Piotr Trojanek <trojanek@adacore.com>
-
- * contracts.adb (Causes_Contract_Freezing): Extend condition to
- match the one in Analyze_Subprogram_Body_Helper. This routine is
- used both as an assertion at the very start of
- Freeze_Previous_Contracts and to detect previous declaration for
- which Freeze_Previous_Contracts has been executed.
-
-2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/a-tifiio.adb: Move around documentaton paragraph.
-
-2020-10-26 Piotr Trojanek <trojanek@adacore.com>
-
- * inline.adb (Establish_Actual_Mapping_For_Inlined_Call): Add
- guard for a call to Set_Last_Assignment with the same condition
- as the assertion in that routine and explain why this guard
- fails in GNATprove mode.
-
-2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * doc/gnat_rm/implementation_defined_characteristics.rst: Adjust
- the entries of 3.5.9(8) and 3.5.9(10).
- * gnat_rm.texi: Regenerate.
-
-2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/a-tifiio.adb: Change the range of supported Small
- values.
- (E0, E1, E2): Adjust factors.
- (Exact): Return false if the Small does not fit in 64 bits.
-
-2020-10-26 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * libgnat/g-socket.adb (Wait_On_Socket): Boolean parameter
- For_Read changed to Event parameter of type
- GNAT.Sockets.Poll.Wait_Event_Set. Implementation is simplified
- and based on call to GNAT.Sockets.Poll.Wait now.
-
-2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/a-tifiio.adb: Minor editions to documentation.
-
-2020-10-26 Yannick Moy <moy@adacore.com>
-
- * sem_ch12.adb (Restore_Private_Views): Do not lose the
- information provided by Is_Generic_Actual_Type in GNATprove
- mode.
-
-2020-10-26 Arnaud Charlet <charlet@adacore.com>
-
- * sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning
- on formal parameters of all dispatching operations.
-
-2020-10-26 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Resolve_Delta_Array_Aggregate): Fix typos in
- error message.
-
-2020-10-26 Olivier Hainque <hainque@adacore.com>
-
- * libgnat/s-dwalin.adb (Symbolic_Traceback): Always emit the hex
- address at the beginning of an entry if suppression is not
- requested. Consistently output a "???" for the subprogram name
- when it is unknown.
-
-2020-10-26 Doug Rupp <rupp@adacore.com>
-
- * s-oscons-tmplt.c (_nfds_t): Use sizeof (unsigned long int).
-
-2020-10-26 Piotr Trojanek <trojanek@adacore.com>
-
- * par-ch4.adb (P_Iterated_Component_Association): Move code for
- iterated_element_association to
- Build_Iterated_Element_Association.
-
-2020-10-26 Yannick Moy <moy@adacore.com>
-
- * sem_ch12.adb (Needs_Body_Instantiated): In GNATprove mode, do
- not instantiate bodies outside of the main unit.
-
-2020-10-26 Ed Schonberg <schonberg@adacore.com>
-
- * sem_aggr.adb (Resolve_Delta_Array_Aggregate): For an
- association that is an iterated component association, attach
- the copy of the expression to the tree prior to analysis, in
- order to preserve its context. This is needed when verifying
- static semantic rules that depend on context, for example that a
- use of 'Old appears only within a postcondition.
-
-2020-10-26 Bob Duff <duff@adacore.com>
-
- * doc/gnat_ugn/gnat_utility_programs.rst: Document that
- --no-comments-fill is now the default.
-
-2020-10-26 Gary Dismukes <dismukes@adacore.com>
-
- * sem_aggr.adb (Resolve_Extension_Aggregate): When testing for
- an aggregate that is illegal due to having an ancestor type that
- has unknown discriminants, add an "or else" condition testing
- whether the aggregate type has unknown discriminants and that
- Partial_View_Has_Unknown_Discr is also set on the ancestor type.
- Extend the comment, including adding ??? about a possible
- simpler test.
-
-2020-10-26 Bob Duff <duff@adacore.com>
-
- * libgnat/a-cihama.adb, libgnat/a-cohama.adb,
- libgnat/a-cohase.adb (Delete): Set Position.Position, and
- assert.
-
-2020-10-26 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch8.adb (Find_Direct_Name.Undefined): Handle known unit
- names with 3 selectors.
-
-2020-10-26 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_Delta_Or_Update): Add missing call
- to Enter_Name, just like it is called for
- iterated_component_association in Expand_SPARK_N_Aggregate.
-
-2020-10-26 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_Delta_Or_Update): Reuse local
- constant Expr and the Choice_List routine.
- (Expand_SPARK_N_Aggregate): Reuse local constant Expr.
-
-2020-10-26 Piotr Trojanek <trojanek@adacore.com>
-
- * par-ch4.adb (P_Iterated_Component_Association): Fix typos in
- comments.
-
-2020-10-26 Arnaud Charlet <charlet@adacore.com>
-
- * par-ch6.adb (P_Formal_Part): Ada 2020 supports scanning
- aspects on formal parameters.
- * doc/gnat_rm/implementation_defined_aspects.rst (Aspect
- Unreferenced): Update documentation.
- * gnat_rm.texi: Regenerate.
-
-2020-10-26 Ed Schonberg <schonberg@adacore.com>
-
- * freeze.adb (Freeze_Type_Refs): When an entity in an expression
- function is a type, freeze the entity and not just its type,
- which would be incomplete when the type is derived and/or
- tagged.
-
-2020-10-26 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb (Expand_Update_Attribute): Handle
- subtype_indication just like in Expand_Delta_Array_Aggregate.
-
-2020-10-25 Iain Sandoe <iain@sandoe.co.uk>
-
- * Makefile.rtl: Add GNATRTL_128BIT_PAIRS/OBJS for 64bit
- PowerPC Darwin cases.
-
-2020-10-23 Iain Sandoe <iain@sandoe.co.uk>
-
- * adaint.c: On Darwin platforms, define st_atim to
- st_atimespec. Likwise st_mtim to st_mtimespec.
-
-2020-10-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * Makefile.rtl (EXTRA_GNATRTL_NONTASKING_OBJS) [IA64/Linux]: Fix typo.
-
-2020-10-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * Makefile.rtl (EXTRA_GNATRTL_NONTASKING_OBJS) [IA64/Linux]: Fix typo.
-
-2020-10-23 Alexandre Oliva <oliva@adacore.com>
-
- PR ada/97504
- * Makefile.rtl (LIBGNAT_TARGET_PAIRS): Select wraplf version
- of Aux_Long_Long_Float for s390 and remaining sparc and
- powerpc targets.
-
-2020-10-23 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * Makefile.rtl (GNATRTL_SOCKETS_OBJS): New object
- g-socpol$(objext) New source files noted: g-socpol.adb,
- g-socpol.ads, g-socpol__dummy.adb, g-socpol__dummy.ads,
- g-sopowa.adb, g-sopowa__posix.adb, g-sopowa__mingw.adb,
- g-spogwa.adb, g-spogwa.ads.
- * impunit.adb (Non_Imp_File_Names_95): New base filename
- g-socpol in "GNAT Library Units" section for GNAT.Sockets.Poll
- unit.
- * libgnat/g-socket.ads, libgnat/g-socket.adb:
- (Raise_Socket_Error): Moved from body to private part of
- specification to use in GNAT.Sockets.Poll.
- * libgnat/g-socpol.ads, libgnat/g-socpol.adb: Main unit of the
- implementation.
- * libgnat/g-socpol__dummy.ads, libgnat/g-socpol__dummy.adb:
- Empty unit for the systems without sockets support.
- * libgnat/g-spogwa.ads, libgnat/g-spogwa.adb: Generic unit
- implementing sockets poll on top of select system call.
- * libgnat/g-sopowa.adb (Wait): Separate implementation for
- operation systems with poll system call support.
- * libgnat/g-sopowa__posix.adb (Wait): Separate implementation
- for POSIX select system call.
- * libgnat/g-sopowa__mingw.adb (Wait): Separate implementation
- for Windows select system call.
- * gsocket.h (_WIN32_WINNT): Increase to 0x0600 for winsock2.h to
- allow WSAPoll related definitions.
- * s-oscons-tmplt.c: Fix comment next to #endif for
- #if defined (__linux__) || defined (__ANDROID__) line. Include
- <poll.h> for all except VxWorks and Windows.
- (SIZEOF_nfds_t): New definition.
- (SIZEOF_fd_type): New definition.
- (SIZEOF_pollfd_events): New definition.
- (POLLIN, POLLPRI, POLLOUT, POLLERR, POLLHUP, POLLNVAL): New
- definitions for VxWorks to be able to emulate poll on top of
- select in it. Define POLLPRI as zero on Windows as it is not
- supported there.
- (Poll_Linkname): New definition, because the poll system call
- has different name in Windows and POSIX.
-
-2020-10-23 Justin Squirek <squirek@adacore.com>
-
- * checks.adb (Apply_Accessibility_Check): Skip checks against
- the extra accessibility of a function result when in Ada 2005
- mode or earlier.
- * exp_ch3.adb (Build_Initialization_Call): Modify accessibility
- level calls to use Accessibility_Level.
- (Expand_N_Object_Declaration): Modify accessibility level calls
- to use Accessibility_Level.
- * exp_ch4.adb (Expand_Allocator_Expression): Add static check
- for anonymous access discriminants. Remove unneeded propagation
- of accessibility actual.
- (Expand_N_In): Modify accessibility level calls to use
- Accessibility_Level.
- (Expand_N_Type_Conversion): Modify accessibility level calls to
- use Accessibility_Level.
- * exp_ch5.adb (Expand_N_Assignment_Statement): Modify
- accessibility level calls to use Accessibility_Level.
- * exp_ch6.adb (Expand_Call_Helper): Rewrite accessibility
- calculation for the extra accessibility of result actual in
- function calls, and modify accessibility level calls to use
- Accessibility_Level.
- (Check_Against_Result_Level): Removed.
- * exp_ch9.adb (Expand_N_Requeue_Statement): Add dynamic
- accessibility check for requeues
- * sem_attr.adb (Resolve_Attribute): Modify accessibility level
- calls to use Accessibility_Level.
- * sem_ch13.adb (Associate_Storage_Pool): Modify accessibility
- level calls to use Accessibility_Level.
- * sem_ch4.adb (Analyze_Call): Add static check for explicitly
- aliased formals in function calls within return statements.
- * sem_ch6.adb (Check_Return_Construct_Accessibility): Rewrite
- routine to account for non-aggregate return objects.
- (Generate_Minimum_Accessibility): Created.
- (Analyze_Call): Modify accessibility level calls to use
- Accessibility_Level.
- (Analyze_Subprogram_Body_Helper): Add generation of minimum
- accessibility for the extra accessibility of the function
- result.
- * sem_ch9.adb (Analyze_Requeue): Modify accessibility level
- calls to use Accessibility_Level.
- * sem_res.adb: (Check_Aliased_Parameters): Modify accessibility
- level calls to use Accessibility_Level.
- (Valid_Conversion): Modify accessibility level calls to use
- Accessibility_Level.
- * sem_util.adb, sem_util.ads (Accessibility_Level_Helper):
- Renamed to Accessibility_Level, add detection for functions in
- prefix notation, and add cases where to return zero when
- specified. Modified to take new, more descriptive, parameters.
- (Accessibility_Level): Created.
- (Function_Call_Level): Removed.
- (Function_Call_Or_Allocator_Level): Created to centralize the
- calculation accessibility levels for function calls and
- allocators.
- (Static_Accessibility_Level): Removed.
- (Dynamic_Accessibility_Level): Removed.
- (Get_Dynamic_Accessibility): Renamed from Get_Accessibility.
- (In_Return_Value): Created to determine if a given expression
- contributes to the current function's return value.
- (Is_Master): Created.
- (Is_Explicitly_Aliased): Created
-
-2020-10-23 Bob Duff <duff@adacore.com>
-
- * doc/gnat_ugn/gnat_utility_programs.rst: Document
- --no-comments-fill.
-
-2020-10-23 Piotr Trojanek <trojanek@adacore.com>
-
- * contracts.adb (Analyze_Entry_Or_Subprogram_Contract,
- Analyze_Subprogram_Body_Stub_Contract): Fix missing references
- to Subprogram_Variant where similar references to Contract_Cases
- are present.
- * sem_prag.adb (Analyze_Contract_Case, Analyze_Variant): Check
- that aggregate parameter has no expressions.
- (Analyze_Pragma): Replace Contract_Cases with Subprogram_Variant
- in a copy-pasted comment.
-
-2020-10-23 Philippe Gil <gil@adacore.com>
-
- * libgnat/g-socket.ads: Fix comment typo.
-
-2020-10-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * doc/gnat_rm/implementation_defined_pragmas.rst (VFA): Remove uage
- restrictions in conjunction with Atomic and Aliased.
- * gnat_rm.texi: Regenerate.
- * aspects.ads (Aspect_Id): Add Aspect_Full_Access_Only.
- (Is_Representation_Aspect): Likewise.
- (Aspect_Names): Likewise.
- (Aspect_Delay): Likewise.
- * einfo.ads (Is_Atomic_Or_VFA): Rename into...
- (Is_Full_Access): ...this.
- (Is_Volatile_Full_Access): Document new usage for Full_Access_Only.
- * einfo.adb (Is_Atomic_Or_VFA): Rename into...
- (Is_Full_Access): ...this.
- * freeze.ads (Is_Atomic_VFA_Aggregate): Rename into...
- (Is_Full_Access_Aggregate): ...this.
- * freeze.adb (Is_Atomic_VFA_Aggregate): Rename into...
- (Is_Full_Access_Aggregate): ...this. Adjust to above renaming.
- (Freeze_Array_Type): Likewise.
- (Freeze_Entity): Likewise.
- * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Likewise.
- (Expand_Record_Aggregate): Likewise.
- * exp_ch4.adb (Expand_N_Op_Eq): Likewise.
- * exp_ch5.adb (Expand_Assign_Array): Likewise.
- * exp_ch8.adb (Evaluation_Required): Likewise.
- * layout.adb (Layout_Type): Likewise.
- (Set_Composite_Alignment): Likewise.
- * sem_aux.ads (Has_Rep_Item): Delete.
- * sem_aux.adb (Has_Rep_Item): Likewise.
- * sem_attr.adb (Resolve_Attribute) <Attribute_Access>: Implement
- new legality rules in C.6(12).
- * sem_ch12.adb (Instantiate_Object): Likewise.
- * sem_res.adb (Resolve_Actuals): Likewise.
- * sem_ch13.adb (Inherit_Delayed_Rep_Aspects): Deal with aspect
- Full_Access_Only.
- (Check_False_Aspect_For_Derived_Type): Likewise.
- (Make_Pragma_From_Boolean_Aspect): Test for the presence of Expr.
- Deal with aspect Full_Access_Only.
- (Analyze_Aspects_At_Freeze_Point): Likewise.
- (Analyze_One_Aspect): Do not set Delay_Required to true even for
- Always_Delay boolean aspects if they have no expression. Force
- Delay_Required to true for aspect Full_Access_Only in all cases.
- Reject aspect Full_Access_Only if not in Ada 2020 mode.
- (Check_Aspect_At_End_Of_Declarations): Deal with empty expression.
- (Check_Aspect_At_Freeze_Point): Likewise.
- (Rep_Item_Entity): Delete.
- (Inherit_Aspects_At_Freeze_Point): Align handling for Bit_Order
- with that for Scalar_Storage_Order.
- * sem_prag.adb (Check_Atomic_VFA): Delete.
- (Check_VFA_Conflicts): Likewise.
- (Check_Full_Access_Only): New procedure.
- (Process_Atomic_Independent_Shared_Volatile): Call to implement
- the new legality checks in C.6(8/2) and mark the entity last.
- (Analyze_Pragma) <Pragma_Atomic_Components>: Remove obsolete check.
- * sem_util.ads (Is_Atomic_Or_VFA_Object): Rename into...
- (Is_Full_Access_Object): ...this.
- (Is_Subcomponent_Of_Atomic_Object): Rename into...
- (Is_Subcomponent_Of_Full_Access_Object): ...this.
- * sem_util.adb (Inherit_Rep_Item_Chain): Use Present_In_Rep_Item.
- (Is_Atomic_Or_VFA_Object): Rename into...
- (Is_Full_Access_Object): ...this.
- (Is_Subcomponent_Of_Atomic_Object): Rename into...
- (Is_Subcomponent_Of_Full_Access_Object): ...this and adjust.
- * snames.ads-tmpl (Name_Full_Access_Only): New name of aspect.
- * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust for renaming.
- (promote_object_alignment): Likewise.
- (gnat_to_gnu_field): Likewise. Rename local variable and use
- specific qualifier in error message for Volatile_Full_Access.
- * gcc-interface/trans.c (lvalue_required_p): Likewise.
-
-2020-10-23 Arnaud Charlet <charlet@adacore.com>
-
- * lib-writ.ads, lib-writ.adb (Write_ALI): No longer read
- existing ALI files in -gnatc mode.
-
-2020-10-23 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/g-socthi__mingw.adb (C_Select): Fix logic in code and
- make it explicit that we are checking against null values before
- dereferencing them.
-
-2020-10-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_imgv.adb (Expand_Image_Attribute): For an enumeration type
- subject to pragma Discard_Names, convert 'Pos to Long_Long_Integer
- before applying 'Img to the result.
-
-2020-10-23 Ed Schonberg <schonberg@adacore.com>
-
- * freeze.adb (Freeze_Type_Refs): Add guard on freezing of the
- designated type of an access type appearing in the expression,
- when expression includes an explicit dereference whose prefix
- includes a function call.
-
-2020-10-23 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_Delta_Or_Update): Handle
- subtype_indication; do not apply range checks for ranges; add
- comment saying that others_choices is not allowed.
-
-2020-10-23 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_N_Aggregate,
- Expand_SPARK_Delta_Or_Update): Expand
- Iterated_Component_Association occurring within delta
- aggregates.
- (Expand_SPARK): Apply SPARK-specific expansion to ordinary
- aggregates.
-
-2020-10-23 Johannes Kanig <kanig@adacore.com>
-
- * exp_util.adb, exp_util.ads
- (Containing_Package_With_Ext_Axioms,
- Has_Annotate_Pragma_For_External_Axiomatizations): Removed.
- * sem_ch8.adb (Analyze_Subprogram_Renaming): Removed code
- related to external axiomatizations.
- * einfo.ads
- (Is_Generic_Actual_Subprogram): Removed comment about external
- axiomatization.
-
-2020-10-23 Ed Schonberg <schonberg@adacore.com>
-
- * sem_aggr.adb (Resolve_Aggregate): Do not call
- Resolve_Container_Aggregate if compilation version is earlier
- than Ada_2020.
-
-2020-10-23 Arnaud Charlet <charlet@adacore.com>
-
- * doc/gnat_rm/implementation_defined_pragmas.rst: Improve
- documentation of pragma Abort_Defer.
- * gnat_rm.texi: Regenerate.
-
-2020-10-23 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * exp_prag.adb (Etype_Or_Dim3): New function.
- (Expand_Pragma_Cuda_Execute): Use Etype_Or_Dim3 for temporary
- decls.
-
-2020-10-23 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-fileio.adb (Open): Fix setting of Tempfile.
-
-2020-10-23 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * exp_prag.adb (Get_Launch_Kernel_Arg_Type): Renamed to
- Get_Nth_Arg_Type and made more generic.
- (Build_Dim3_Declaration): Now builds a CUDA.Internal.Dim3
- instead of a CUDA.Vector_Types.Dim3.
- (Build_Shared_Memory_Declaration): Now infers needed type from
- Launch_Kernel instead of using a hard-coded type.
- (Expand_Pragma_CUDA_Execute): Build additional temporaries to
- store Grids and Blocks.
- * rtsfind.ads: Move Launch_Kernel from public to internal
- package.
-
-2020-10-23 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch4.adb (Complete_Object_Operation): Only mark entities
- referenced if we are compiling the extended main unit.
- * sem_attr.adb (Analyze_Attribute [Attribute_Tag]): Record a
- reference on the type and its scope.
-
-2020-10-23 Ed Schonberg <schonberg@adacore.com>
-
- * freeze.adb (Is_Uninitialized_Aggregate): Recognize an array
- aggregate with box initialization, scalar components, and no
- component default values.
- (Freeze_Entity, Check_Address_Clause): Call it, and simplify
- freeze code for entity by removing useless assignment.
-
-2020-10-23 Javier Miranda <miranda@adacore.com>
-
- * sem_ch3.adb (Check_Abstract_Overriding): Subprogram renamings
- cannot be overridden.
- (Derive_Subprogram): Enable setting attribute
- Requires_Overriding on functions with controlling access results
- of record extensions with a null extension part require
- overriding (AI95-00391/06).
-
-2020-10-23 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Resolve_Delta_Array_Aggregate): Push scope of
- the implicit loop before entering name of the index parameter,
- not after; enter name no matter if the identifier has been
- decorated before.
-
-2020-10-23 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch4.adb (Analyze_Call): In the case where the call is not
- overloaded, check for a call to an abstract nondispatching
- operation and flag an error.
-
-2020-10-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gnat1drv.adb (Adjust_Global_Switches): Rewrite again code enabling
- or disabling the support for 128-bit integer types.
-
-2020-10-23 Arnaud Charlet <charlet@adacore.com>
-
- * alloc.ads, aspects.adb, aspects.ads, atree.adb, atree.ads,
- casing.adb, casing.ads, csets.adb, csets.ads, debug.adb, debug.ads,
- einfo.adb, einfo.ads, elists.adb, elists.ads, fname.adb, fname.ads,
- gnatvsn.adb, gnatvsn.ads, hostparm.ads, indepsw-aix.adb,
- indepsw-darwin.adb, indepsw-gnu.adb, indepsw.adb, indepsw.ads,
- krunch.adb, krunch.ads, lib-list.adb, lib-sort.adb, lib.adb, lib.ads,
- namet-sp.adb, namet-sp.ads, namet.adb, namet.ads, nlists.adb,
- nlists.ads, opt.adb, opt.ads, output.adb, output.ads, rident.ads,
- scans.adb, scans.ads, scil_ll.adb, scil_ll.ads, sem_aux.ads,
- sem_aux.adb, sfn_scan.adb, sinfo.adb, sinfo.ads, sinput.adb,
- sinput.ads, snames.adb-tmpl, snames.ads-tmpl, stand.ads,
- stringt.adb, stringt.ads, table.adb, table.ads, types.adb,
- types.ads, uintp.adb, uintp.ads, uname.adb, uname.ads,
- urealp.adb, urealp.ads, vast.adb, vast.ads, widechar.adb,
- widechar.ads: Update header.
-
-2020-10-23 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nbnbin.adb (From_String): Take advantage of
- Long_Long_Long_Integer.
- * libgnat/s-genbig.ads, libgnat/s-genbig.adb (To_Bignum): New
- function taking a Long_Long_Long_Integer.
-
-2020-10-23 Justin Squirek <squirek@adacore.com>
-
- * sem_util.adb (Accessibility_Call_Helper): In the selected
- component case, test if a prefix is a function call and whether
- the subprogram call is not being used in its entirety and use
- the Innermost_Master_Scope_Depth in that case.
- (Innermost_Master_Scope_Depth): Test against the node_par
- instead of its identifier to avoid misattributing unnamed blocks
- as not being from source.
- (Function_Call_Level): Add calculation for whether a subprogram
- call is initializing an object in its entirety.
- (Subprogram_Call_Level): Renamed to Function_Call_Level.
-
-2020-10-23 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Check_External_Properties): Rewrite to match the
- SPARK RM description.
-
-2020-10-23 Piotr Trojanek <trojanek@adacore.com>
-
- * contracts.adb (Check_Type_Or_Object_External_Properties):
- Cleanup.
-
-2020-10-23 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Analyze_External_Property_In_Decl_Part): Set the
- output parameter Expr_Val to the (implicit) pragma argument even
- when returning early.
-
-2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * Makefile.rtl (GNATRTL_128BIT_PAIRS): Add i-cexten.ads.
- * debug.adb (d.H): Document new usage.
- * doc/gnat_rm/representation_clauses_and_pragmas.rst (Size Clauses):
- Document new limit on 64-bit platforms.
- (Component_Size Clauses): Likewise.
- (Pragma Pack for Arrays): Likewise.
- (Pragma Pack for Records): Likewise.
- (Record Representation Clauses): Likewise.
- * gnat_rm.texi: Regenerate.
- * gnat1drv.adb (Adjust_Global_Switches): Rewrite code enabling or
- disabling the support for 128-bit integer types.
- * switch-c.adb (Scan_Front_End_Switches): Do not deal with e128.
- * usage.adb (Write_Switch_Char): Do not print -gnate128 switch.
- * libgnat/i-cexten__128.ads: New file.
-
-2020-10-22 Javier Miranda <miranda@adacore.com>
-
- * einfo.ads (Has_Limited_View): New synthesized attribute.
- * einfo.adb (Has_Limited_View): New synthesized attribute.
- (Set_Limited_View): Complete assertion.
- * sem_ch10.ads (Is_Visible_Through_Renamings): Make this routine
- public to invoke it from Find_Expanded_Name and avoid reporting
- spurious errors on renamings of limited-with packages.
- (Load_Needed_Body): Moved to have this spec alphabetically
- ordered.
- * sem_ch10.adb (Is_Visible_Through_Renamings): Moved to library
- level.
- (Is_Limited_Withed_Unit): New subprogram.
- * sem_ch3.adb (Access_Type_Declaration): Adding protection to
- avoid reading attribute Entity() when not available.
- * sem_ch8.adb (Analyze_Package_Renaming): Report error on
- renamed package not visible through context clauses.
- (Find_Expanded_Name): Report error on renamed package not
- visible through context clauses; handle special case where the
- prefix is a renaming of a (now visible) shadow package.
-
-2020-10-22 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * exp_prag.adb (Get_Launch_Kernel_Arg_Type): New function.
- (Build_Shared_Memory_Declaration): Use
- Get_Launch_Kernel_Arg_Type.
- (Build_Stream_Declaration): Use Get_Launch_Kernel_Arg_Type.
- * rtsfind.ads: Remove RO_IC_Unsigned_Long_Long.
-
-2020-10-22 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-imenne.adb, libgnat/s-imgrea.adb: Add assertions.
-
-2020-10-22 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-imgrea.adb (Set_Image_Real): Update annotations.
-
-2020-10-22 Steve Baird <baird@adacore.com>
-
- * aspects.ads: Introduce the subtype Nonoverridable_Aspect_Id,
- whose Static_Predicate reflects the list of nonoverridable
- aspects given in Ada RM 13.1.1(18.7).
- * sem_util.ads, sem_util.adb: Add two new visible subprograms,
- Check_Inherited_Nonoverridable_Aspects and Is_Confirming. The
- former is used to check the consistency of inherited
- nonoverridable aspects from multiple sources. The latter
- indicates whether two aspect specifications for a nonoverridable
- aspect are confirming. Because of compatibility concerns in
- compiling QGen, Is_Confirming always returns True if
- Relaxed_RM_Semantics (i.e., -gnatd.M) is specified.
- * sem_ch3.adb (Derived_Type_Declaration): Call new
- Check_Inherited_Nonoverridable_Aspects procedure if interface
- list is non-empty.
- * sem_ch9.adb (Check_Interfaces): Call new
- Check_Inherited_Nonoverridable_Aspects procedure if interface
- list is non-empty.
- * sem_ch13.adb (Analyze_Aspect_Specifications): When an explicit
- aspect specification overrides an inherited nonoverridable
- aspect, check that the explicit specification is confirming.
-
-2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * freeze.ads (Check_Compile_Time_Size): Adjust size limit.
-
-2020-10-22 Richard Kenner <kenner@adacore.com>
-
- * sprint.adb (pg, po, ps): Use {Push,Pop}_Output.
- * treepr.adb (pl, pn): Likewise.
-
-2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * doc/gnat_rm/implementation_advice.rst: Minor fix.
- * gnat_rm.texi: Regenerate.
-
-2020-10-22 Steve Baird <baird@adacore.com>
-
- * sem_util.adb (Is_Container_Aggregate): A new local predicates
- which indicates whether a given expression is a container
- aggregate. The implementation of this function is incomplete; in
- the unusual case of a record aggregate (i.e., not a container
- aggregate) of a type whose Aggregate aspect is specified, the
- function will incorrectly return True.
- (Immediate_Context_Implies_Is_Potentially_Unevaluated): Improve
- handling of aggregate components.
- (Is_Repeatedly_Evaluated): Test for container aggregate
- components along with existing test for array aggregate
- components.
-
-2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_fixd.adb (Fpt_Value): Fold if-then-else with identical arms.
-
-2020-10-22 Ed Schonberg <schonberg@adacore.com>
-
- * par-ch4.adb (P_Iterated_Component_Association): If the
- construct includes an iterator filter it corresponds to an
- Iterated_Element_Association, so build the proper node for it.
- * exp_aggr.adb (Expand_Container_Aggregate, Aggregate_Size): If
- the component is an Iterated_Element_Association, treat it as
- having a non-static size.
-
-2020-10-22 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * scng.adb (Scan): Check if any letter of the token is
- uppercase.
-
-2020-10-22 Justin Squirek <squirek@adacore.com>
-
- * sem_util.adb (Accessibility_Level_Helper): Conversions to
- named access types get the level associated with the named
- access type.
-
-2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (Has_Constrained_Partial_View): Add "base type" marker.
-
-2020-10-22 Gary Dismukes <dismukes@adacore.com>
-
- * einfo.adb (Has_Constrained_Partial_View): Apply Base_Type to Id.
- * sem_res.adb (Resolve_Actuals.Check_Aliased_Parameter): Remove
- "not Is_Generic_Type" test and call
- Object_Type_Has_Constrained_Partial_View instead of
- Has_Constrained_Partial_View. Improve related error message to
- say "does not statically match" instead of just "does not
- match".
-
-2020-10-22 Steve Baird <baird@adacore.com>
-
- * sem_util.ads, sem_util.adb: Declare and implement a new
- predicate, Derivation_Too_Early_To_Inherit. This function
- indicates whether a given derived type fails to inherit a given
- streaming-related attribute from its parent type because the
- declaration of the derived type precedes the corresponding
- attribute_definition_clause of the parent.
- * exp_tss.adb (Find_Inherited_TSS): Call
- Derivation_Too_Early_To_Inherit instead of unconditionally
- assuming that a parent type's streaming attribute is available
- for inheritance by an immediate descendant type.
- * sem_attr.adb (Stream_Attribute_Available): Call
- Derivation_Too_Early_To_Inherit instead of unconditionally
- assuming that a parent type's streaming attribute is available
- for inheritance by an immediate descendant type.
- * exp_attr.adb (Default_Streaming_Unavailable): A new predicate;
- given a type, indicates whether predefined (as opposed to
- user-defined) streaming operations for the type should be
- implemented by raising Program_Error.
- (Expand_N_Attribute_Reference): For each of the 4
- streaming-related attributes (i.e., Read, Write, Input, Output),
- after determining that no user-defined implementation is
- available (including a Stream_Convert pragma), call
- Default_Streaming_Unavailable; if that call returns True, then
- implement the streaming operation as "raise Program_Error;".
-
-2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.adb (Apply_Float_Conversion_Check): Saturate the bounds
- of the check to those of the base type of the expression.
-
-2020-10-22 Justin Squirek <squirek@adacore.com>
-
- * checks.adb (Apply_Accessibility_Check): Modify condition to
- avoid flawed optimization and use Get_Accessibility over
- Extra_Accessibility.
- * exp_attr.adb: Remove inclusion of Exp_Ch2.adb.
- * exp_ch2.adb, exp_ch2.ads (Param_Entity): Moved to sem_util.
- * exp_ch3.ads (Init_Proc_Level_Formal): New function.
- * exp_ch3.adb (Build_Init_Procedure): Add extra accessibility
- formal for init procs when the associated type is a limited
- record.
- (Build_Initialization_Call): Add condition to handle propagation
- of the new extra accessibility paramter actual needed for init
- procs.
- (Init_Proc_Level_Formal): Created to fetch a the extra
- accessibility parameter associated with init procs if one
- exists.
- * exp_ch4.adb (Build_Attribute_Reference): Modify static check
- to be dynamic.
- * exp_ch6.adb (Add_Cond_Expression_Extra_Actual): Move logic
- used to expand conditional expressions used as actuals for
- anonymous access formals.
- (Expand_Call_Helper): Remove extranious accessibility
- calculation logic.
- * exp_util.adb: Remove inclusion of Exp_Ch2.adb.
- * par-ch3.adb (P_Array_Type_Definition): Properly set
- Aliased_Present on access definitions
- * sem_attr.adb (Resolve_Attribute): Replace instances for
- Object_Access_Level with Static_Accessibility_Level.
- * sem_ch13.adb (Storage_Pool): Replace instances for
- Object_Access_Level with Static_Accessibility_Level.
- * sem_ch6.adb (Check_Return_Construct_Accessibility): Replace
- instances for Object_Access_Level with
- Static_Accessibility_Level.
- * sem_ch9.adb (Analyze_Requeue): Replace instances for
- Object_Access_Level with Static_Accessibility_Level.
- * sem_res.adb (Check_Aliased_Parameter,
- Check_Allocator_Discrim_Accessibility, Valid_Conversion):
- Replace instances for Object_Access_Level with
- Static_Accessibility_Level.
- * sem_util.adb, sem_util.ads (Accessibility_Level_Helper):
- Created to centralize calculation of accessibility levels.
- (Build_Component_Subtype): Replace instances for
- Object_Access_Level with Static_Accessibility_Level.
- (Defining_Entity): Add extra parameter to dictate whether an
- error is raised or empty is return in the case of an irrelevant
- N.
- (Dynamic_Accessibility_Level): Rewritten to use
- Accessibility_Level_Helper.
- (Is_View_Conversion): Check membership against Etype to capture
- nodes like explicit dereferences which have types but are not
- expanded names or identifers.
- (Object_Access_LeveL): Removed.
- (Param_Entity): Moved from sem_util.
- (Static_Accessibility_Level): Created as a replacement to
- Object_Access_Level, it also uses Accessibility_Level_Helper for
- its implementation.
- * snames.ads-tmpl: Added new name for extra accessibility
- parameter in init procs.
-
-2020-10-22 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_prag.adb (Expand_Pragma_Contract_Cases,
- Expand_Pragma_Loop_Variant): Reuse Append_New_To.
- * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
- (Analyze_Pre_Post_Condition): Refactor repeated calls to
- Defining_Entity.
-
-2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * doc/gnat_rm/implementation_defined_characteristics.rst: Minor
- fixes.
- * gnat_rm.texi: Regenerate.
-
-2020-10-22 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_warn.adb (Check_Unused_Withs): Move local variables from
- to a nested procedure; Lunit is passed as a parameter to
- Check_System_Aux and its type is refined from Node_Id to
- Entity_Id; Cnode is now a constant.
-
-2020-10-22 Patrick Bernardi <bernardi@adacore.com>
-
- * libgnat/s-rident.ads (Profile_Info): Use a common profile
- definition for Jorvik and GNAT Extended Ravenscar, using the
- GNAT Extended Ravenscar definition.
-
-2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * Makefile.rtl (64-bit platforms): Add GNATRTL_128BIT_PAIRS to
- the LIBGNAT_TARGET_PAIRS list and also GNATRTL_128BIT_OBJS to
- the EXTRA_GNATRTL_NONTASKING_OBJS list.
-
-2020-10-22 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_prag.adb (Process_Convention,
- Process_Import_Or_Interface): Fix error message.
-
-2020-10-22 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_ch13.adb (Make_Aitem_Pragma): Turn into function. This
- removes a side-effect on the Aitem variable.
- (Analyze_Aspect_Specifications): Handle Suppress and Unsuppress
- aspects differently from the Linker_Section aspect.
- (Ceck_Aspect_At_Freeze_Point): Don't expect Suppress/Unsuppress
- to be delayed anymore.
-
-2020-10-22 Ed Schonberg <schonberg@adacore.com>
-
- * sem_aggr.adb: (Resolve_Container_Aggregate): For an indexed
- container, verify that expressions and component associations
- are not both present.
- * exp_aggr.adb: Code reorganization, additional comments.
- (Expand_Container_Aggregate): Use Aggregate_Size for Iterated_
- Component_Associations for indexed aggregates. If present, the
- default value of the formal in the constructor function is used
- when the size of the aggregate cannot be determined statically.
-
-2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_attr.adb (Eval_Attribute): Fix oversight for Bit_Position.
-
-2020-10-22 Ed Schonberg <schonberg@adacore.com>
-
- * sem_util.ads, sem_util.adb (Check_Ambiguous_Aggregate): When a
- subprogram call is found to be ambiguous, check whether
- ambiguity is caused by an aggregate actual. and indicate that
- it should carry a type qualification.
- * sem_ch4.adb (Traverse_Hoonyms, Try_Primitive_Operation): Call
- it.
- * sem_res.adb (Report_Ambiguous_Argument): Call it.
-
-2020-10-22 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_warn.adb (Check_One_Unit): Avoid repeated calls by using a
- local variable Lunit; remove local constant Eitem, which was
- identical to Lunit.
-
-2020-10-22 Alexandre Oliva <oliva@adacore.com>
-
- * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <x86*-vxworks*>: Select
- nolibm and wraplf variants like other vxworks ports.
-
-2020-10-22 Martin Liska <mliska@suse.cz>
-
- PR c/94722
- * gcc-interface/utils.c (handle_no_stack_protect_attribute):
- New.
- (handle_stack_protect_attribute): Add error message for a
- no_stack_protector function.
-
-2020-10-22 Alexandre Oliva <oliva@adacore.com>
-
- * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <lynxos178>: Rely on
- Aux_Long_Float for all real types.
-
-2020-10-22 Alexandre Oliva <oliva@adacore.com>
-
- * Makefile.rtl (LIBGNAT_TARGET_PAIRS): Use Long Float-based
- variant of Aux_Short_Float and Aux_Float on vxworks targets.
- * libgnat/a-nashfl__wraplf.ads: New.
- * libgnat/a-nuaufl__wraplf.ads: New.
-
-2020-10-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
-
- * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <sparc*-sun-solaris>:
- Use wraplf version of a-nallfl.
-
-2020-10-22 Alexandre Oliva <oliva@adacore.com>
-
- * Makefile.rtl (LIBGNAT_TARGET_PAIRS): Use
- a-nallfl__wraplf.ads on aarch64-* and ppc*-linux-gnu targets.
- * libgnat/a-nallfl__wraplf.ads: New.
-
-2020-10-22 Jan Hubicka <hubicka@ucw.cz>
-
- * gcc-interface/trans.c: Include tree-nested.h
- (walk_nesting_tree): Update for new nested function info.
-
-2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add a-llltio, a-lllwti,
- a-lllzti and remove a-timoau, a-wtmoau and a-ztmoau.
- (GNATRTL_128BIT_PAIRS): Add a-tiinio.adb, a-timoio.adb, a-wtinio.adb,
- a-wtmoio.adb, a-ztinio.adb and a-ztmoio.adb.
- * impunit.adb (Non_Imp_File_Names_95): Add a-llltio, a-lllwti and
- a-lllzti.
- * krunch.ads: Document trick for Ada.Long_Long_Long_Integer_*_IO.
- * krunch.adb (Krunch): Add trick for Ada.Long_Long_Long_Integer_*_IO.
- * libgnat/a-llltio.ads: Instantiate Ada.Text_IO.Integer_IO.
- * libgnat/a-lllwti.ads: Instantiate Ada.Wide_Text_IO.Integer_IO.
- * libgnat/a-lllzti.ads: Instantiate Ada.Wide_Wide_Text_IO.Integer_IO.
- * libgnat/a-tigeau.ads (Load_Integer): New procedure.
- * libgnat/a-tigeau.adb (Load_Integer): Likewise.
- * libgnat/a-tiinau.ads, libgnat/a-tiinau.adb: Change to generic
- package.
- * libgnat/a-tiinio.adb: Instantiate it.
- * libgnat/a-tiinio__128.adb: Likewise.
- * libgnat/a-timoau.ads, libgnat/a-timoau.adb: Change to generic
- package.
- * libgnat/a-timoio.adb: Instantiate it.
- * libgnat/a-timoio__128.adb: Likewise.
- * libgnat/a-wtgeau.ads (Load_Integer): New procedure.
- * libgnat/a-wtgeau.adb (Load_Integer): Likewise.
- * libgnat/a-wtinau.ads, libgnat/a-wtinau.adb: Change to generic
- package.
- * libgnat/a-wtinio.adb: Instantiate it.
- * libgnat/a-wtinio__128.adb: Likewise.
- * libgnat/a-wtmoau.ads, libgnat/a-wtmoau.adb: Change to generic
- package.
- * libgnat/a-wtmoio.adb: Instantiate it.
- * libgnat/a-wtmoio__128.adb: Likewise.
- * libgnat/a-ztgeau.ads (Load_Integer): New procedure.
- * libgnat/a-ztgeau.adb (Load_Integer): Likewise.
- * libgnat/a-ztinau.ads, libgnat/a-ztinau.adb: Change to generic
- package.
- * libgnat/a-ztinio.adb: Instantiate it.
- * libgnat/a-ztinio__128.adb: Likewise.
- * libgnat/a-ztmoau.ads, libgnat/a-ztmoau.adb: Change to generic
- package.
- * libgnat/a-ztmoio.adb: Instantiate it.
- * libgnat/a-ztmoio__128.adb: Likewise.
-
-2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch12.adb (Freeze_Subprogram_Body): Do not move the freeze
- node of the package body enclosing the instance when its parent
- is in the same declarative part as the freeze node of the parent.
-
-2020-10-21 Steve Baird <baird@adacore.com>
-
- * exp_ch6.adb (Insert_Post_Call_Actions): When a function's
- result type requires finalization and we decide to make copy of
- a call to the function and subsequently refer only to the copy,
- then don't forget to finalize the original function result
- object.
-
-2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-widint,
- s-widthi, s-widuns, s-widuns.
- (GNATRTL_128BIT_OBJS): Add s-imglllb, s-imgllli, s-imglllu, s-imglllw,
- s-valllli, s-vallllu, s-widllli, s-widlllu.
- * exp_imgv.adb (Expand_Image_Attribute): Deal with 128-bit types.
- (Expand_Value_Attribute): Likewise.
- (Expand_Width_Attribute): Likewise.
- * exp_put_image.adb (Build_Elementary_Put_Image_Call): Likewise.
- * krunch.adb (Krunch): Deal with s-img, s-val and s-wid prefixes.
- * rtsfind.ads (RTU_Id): Add System_Img_LLLI, System_Img_LLLU,
- System_Val_LLLI, System_Val_LLL, System_Wid_Int, System_Wid_LLLI,
- System_Wid_LLLU, System_Wid_Uns).
- (RE_Id): Add RE_Image_Long_Long_Long_Integer,
- RE_Image_Long_Long_Long_Unsigned,
- RE_Put_Image_Long_Long_Long_Integer,
- RE_Put_Image_Long_Long_Long_Unsigned,
- RE_Long_Long_Long_Unsigned, RE_Value_Long_Long_Long_Integer,
- RE_Value_Long_Long_Long_Unsigned, RE_Width_Integer,
- RE_Width_Long_Long_Long_Integer, RE_Width_Long_Long_Long_Unsigned,
- RE_Width_Unsigned, RE_Image_Long_Long_Long_Integer,
- RE_Image_Long_Long_Long_Unsigned, RE_Put_Image_Long_Long_Long_Integer,
- RE_Put_Image_Long_Long_Long_Unsigned, RE_Long_Long_Long_Unsigned,
- RE_Value_Long_Long_Long_Integer, RE_Value_Long_Long_Long_Unsigned,
- RE_Width_Integer, RE_Width_Long_Long_Long_Integer,
- RE_Width_Long_Long_Long_Unsigned, RE_Width_Unsigned.
- * libgnat/s-imageb.ads, libgnat/s-imageb.adb: New generic
- package.
- * libgnat/s-imagei.ads, libgnat/s-imagei.adb: Likewise.
- * libgnat/s-imageu.ads, libgnat/s-imageu.adb: Likewise.
- * libgnat/s-imagew.ads, libgnat/s-imagew.adb: Likewise.
- * libgnat/s-imgbiu.ads: Instantiate System.Image_B.
- * libgnat/s-imgbiu.adb: Add pragma No_Body.
- * libgnat/s-imgint.ads: Instantiate System.Image_I.
- * libgnat/s-imgint.adb: Add pragma No_Body.
- * libgnat/s-imgllb.ads: Instantiate System.Image_B.
- * libgnat/s-imgllb.adb: Add pragma No_Body0
- * libgnat/s-imglli.ads: Instantiate System.Image_I.
- * libgnat/s-imglli.adb: Add pragma No_Body.
- * libgnat/s-imglllb.ads: Instantiate System.Image_B.
- * libgnat/s-imgllli.ads: Instantiate System.Image_I.
- * libgnat/s-imglllu.ads: Instantiate System.Image_U.
- * libgnat/s-imglllw.ads: Instantiate System.Image_W.
- * libgnat/s-imgllu.ads: Instantiate System.Image_U.
- * libgnat/s-imgllu.adb: Add pragma No_Body.
- * libgnat/s-imgllw.ads: Instantiate System.Image_W.
- * libgnat/s-imgllw.adb: Add pragma No_Body.
- * libgnat/s-imgrea.adb: Remove clauses for System.Unsigned_Types.
- * libgnat/s-imguns.ads: Instantiate System.Image_U.
- * libgnat/s-imguns.adb: Add pragma No_Body.
- * libgnat/s-imgwiu.ads: Instantiate System.Image_W.
- * libgnat/s-imgwiu.adb: Add pragma No_Body.
- * libgnat/s-putima.ads (Long_Long_Long_Unsigned): New subtype.
- (Put_Image_Long_Long_Long_Unsigned): New procedure.
- * libgnat/s-putima.adb (Small): Rename to Integer_Images.
- (Large): Rename to LL_Integer_Images.
- (LLL_Integer_Images): New instantiation.
- (Put_Image_Long_Long_Long_Integer): New renaming.
- (Put_Image_Long_Long_Long_Unsigned): Likewise.
- * libgnat/s-valint.ads: Instantiate System.Value_I.
- * libgnat/s-valint.adb: Add pragma No_Body.
- * libgnat/s-vallli.ads: Instantiate System.Value_I.
- * libgnat/s-vallli.adb: Add pragma No_Body.
- * libgnat/s-valllli.ads: Instantiate System.Value_I.
- * libgnat/s-vallllu.ads: Instantiate System.Value_U.
- * libgnat/s-valllu.ads: Instantiate System.Value_U.
- * libgnat/s-valllu.adb: Add pragma No_Body.
- * libgnat/s-valuei.ads, libgnat/s-valuei.adb: New generic
- package.
- * libgnat/s-valueu.ads, libgnat/s-valueu.adb: Likewise.
- * libgnat/s-valuns.ads: Instantiate System.Value_U.
- * libgnat/s-valuns.adb: Add pragma No_Body.
- * libgnat/s-widint.ads: Instantiate System.Width_I.
- * libgnat/s-widlli.ads: Likewise.
- * libgnat/s-widlli.adb: Add pragma No_Body.
- * libgnat/s-widllli.ads: Instantiate System.Width_I.
- * libgnat/s-widlllu.ads: Instantiate System.Width_U.
- * libgnat/s-widllu.ads: Likewise.
- * libgnat/s-widllu.adb: Add pragma No_Body.
- * libgnat/s-widthi.ads, libgnat/s-widthi.adb: New generic
- package.
- * libgnat/s-widthu.ads, libgnat/s-widthu.adb: Likewise.
- * libgnat/s-widuns.ads: Instantiate System.Width_U.
-
-2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * set_targ.adb (DTN): Fix oversight.
- (Read_Target_Dependent_Values): Do not error out on missing
- Long_Long_Long_Size entry and reuse Long_Long_Size for it.
-
-2020-10-21 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_aggr.adb (Gen_Loop): Analyze copy of the expression in the
- scope of the implicit loop with name of the index parameter
- visible.
-
-2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * Makefile.rtl (GNATRTL_128BIT_PAIRS): New variable.
- (GNATRTL_128BIT_OBJS): Likewise.
- (Windows): In 64-bit mode, add the former to LIBGNAT_TARGET_PAIRS and
- the latter to EXTRA_GNATRTL_NONTASKING_OBJS.
- (x86_64/linux): Likewise, but unconditionally.
- (GNATRTL_NONTASKING_OBJS): Add s-aridou, s-exponn, s-expont,
- s-exponu.
- * ada_get_targ.adb (Get_Long_Long_Long_Size): New function.
- * checks.adb (Apply_Arithmetic_Overflow_Strict): Use Integer_Type_For
- to find an appropriate integer type; if it does not exist and the max
- integer size is larger than 64, use the 128-bit arithmetic routines.
- * cstand.adb (Create_Standard): Build Standard_Long_Long_Long_Integer
- and its base type. Use it for Etype of Any_Integer, Any_Modular and
- Any_Numeric. Use its size for Build Standard_Long_Long_Long_Unsigned
- and Universal_Integer.
- (Print_Standard): Print Long_Long_Long_Integer.
- * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Mod>: Adjust
- comment.
- * exp_ch3.adb (Simple_Init_Initialize_Scalars_Type): Deal with 128-bit
- types.
- * exp_ch4.adb (Expand_Array_Comparison): Likewise.
- (Expand_N_Op_Expon): Likewise.
- (Narrow_Large_Operation): Likewise.
- * exp_dbug.adb (Bounds_Match_Size): Handle 128-bit size.
- * exp_fixd.adb (Build_Double_Divide_Code): Use RE_Double_Divide64.
- * exp_intr.adb (Expand_Binary_Operator_Call): Handle 128-bit size.
- * exp_pakd.ads (E_Array): Extend range to 127.
- (Bits_Id): Fill in up to 127.
- (Get_Id): Likewise.
- (GetU_Id): Likewise.
- (Set_Id): Likewise.
- (SetU_Id): Likewise.
- * exp_pakd.adb (Revert_Storage_Order): Handle 128-bit size.
- * exp_util.adb (Integer_Type_For): Likewise.
- (Small_Integer_Type_For): Likewise.
- * fname.adb (Is_Predefined_File_Name): Do not return False for names
- larger than 12 characters if they start with "s-".
- * freeze.adb (Adjust_Esize_For_Alignment): Change the maximum value
- to System_Max_Integer_Size.
- (Check_Suspicious_Modulus): Adjust comment.
- (Freeze_Entity): Likewise.
- * get_targ.ads (Get_Long_Long_Long_Size): New function.
- * get_targ.adb (Get_Long_Long_Long_Size): Likewise.
- (Width_From_Size): Deal with 128-bit size.
- * gnat1drv.adb (Adjust_Global_Switches): Deal with 128-bit types.
- * impunit.adb (Get_Kind_Of_File): Bump buffer size. Accept files with
- 13 characters if they start with 's'. Compare slice of Buffer.
- (Not_Impl_Defined_Unit): Accept files with 13 characters if they start
- with 's'.
- * krunch.ads: Document length for 128-bit support units.
- * krunch.adb (Krunch): Set length to 9 for 128-bit support units.
- * layout.adb (Layout_Type): Use System_Max_Integer_Size as alignment
- limit.
- * rtsfind.ads (RTU_Id): Add System_Arith_128,
- System_Compare_Array_Signed_128, System_Compare_Array_Unsigned_128,
- System_Exn_LLLI, System_Exp_LLLU, System_Pack_[65..127].
- (RE_Id): Add RE_Integer_128, RE_Unsigned_128, RE_Add_With_Ovflo_Check128
- RE_Multiply_With_Ovflo_Check128, RE_Subtract_With_Ovflo_Check128,
- RE_Bswap_128, RE_Compare_Array_S128, RE_Compare_Array_U128,
- RE_Exn_Long_Long_Long_Integer, RE_Exp_Long_Long_Long_Integer,
- RE_Exp_Long_Long_Long_Unsigned, RE_Bits_[65-127], RE_Get_[65-127],
- RE_Set_[65-127], RE_IS_Is16, RE_IS_Iu16, RE_Integer_128 and
- RE_Unsigned_128. Rename RE_Add_With_Ovflo_Check, RE_Double_Divide,
- RE_Multiply_With_Ovflo_Check, RE_Scaled_Divide and
- RE_Subtract_With_Ovflo_Check. Remove RE_IS_Iz1, RE_IS_Iz2, RE_IS_Iz4,
- RE_IS_Iz8, RE_Long_Unsigned, RE_Short_Unsigned, RE_Short_Short_Unsigned
- (RE_Unit_Table): Likewise.
- * sem_aux.adb (Corresponding_Unsigned_Type): Deal with a size equal to
- that of Standard_Long_Long_Long_Integer.
- (First_Subtype): Deal with Standard_Long_Long_Long_Integer'Base.
- * sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Attribute_Size>:
- Check the size against powers of 2 and System_Max_Integer_Size for
- objects as well.
- (Set_Enum_Esize): Deal with 128-bit bounds.
- * sem_ch3.adb (Set_Modular_Size): Handle 128-bit size.
- (Modular_Type_Declaration): Deal with 128-bit types.
- (Signed_Integer_Type_Declaration): Support derivation from
- Standard_Long_Long_Long_Integer.
- * sem_ch4.adb (Analyze_Mod): Handle 128-bit modulus.
- * sem_intr.adb: Add with and use clauses for Ttypes.
- (Check_Shift): Handle 128-bit size and modulus.
- * sem_prag.adb (Analyze_Pragma) <Pragma_Initialize_Scalars>: Deal
- with Signed_128 and Unsigned_128.
- (Analyze_Integer_Value): Handle 128-bit size.
- * sem_util.ads (Addressable): Adjust description.
- * sem_util.adb (Addressable): Return true for 128 if the system
- supports 128 bits.
- (Set_Invalid_Binder_Values): Deal with Signed_128 and Unsigned_128.
- * set_targ.ads (Long_Long_Long_Size): New variable.
- * set_targ.adb (S_Long_Long_Long_Size): New constant.
- (DTN): Add entry for S_Long_Long_Long_Size.
- (DTV): Add entry for Long_Long_Long_Size.
- (Set_Targ): Set Long_Long_Long_Size.
- * snames.ads-tmpl (Name_Max_Integer_Size): New attribute name.
- (Name_Signed_128): New scalar name.
- (Name_Unsigned_128): Likewise.
- (Scalar_Id): Adjust.
- (Integer_Scalar_Id): Likewise.
- (Attribute_Id): Add Attribute_Max_Integer_Size.
- * stand.ads (Standard_Entity_Type): Add S_Long_Long_Long_Integer.
- (Standard_Long_Long_Long_Integer): New renaming.
- (Universal_Integer): Adjust description.
- (Standard_Long_Long_Long_Unsigned): New variable.
- * switch-c.adb (Scan_Front_End_Switches): Deal with -gnate128.
- * ttypes.ads (Standard_Long_Long_Long_Integer_Size): New variable.
- (Standard_Long_Long_Long_Integer_Width): Likewise.
- (System_Max_Integer_Size): Turn into variable.
- (System_Max_Binary_Modulus_Power): Likewise.
- * uintp.ads (Uint_127): New constant.
- * uintp.adb (UI_Power_2): Extednd to 128.
- (UI_Power_10): Likewise.
- (UI_Expon): Deal with exponent up to 128 specially.
- * usage.adb (Write_Switch_Char): Print -gnate128 switch.
- * libgnat/a-tifiio.adb (Put_Scaled): Call Scaled_Divide64.
- * libgnat/interfac__2020.ads (Integer_128): New integer type.
- (Unsigned_128): New modular type.
- (Shift_Left, Shift_Right, Shift_Right_Arithmetic, Rotate_Left,
- Rotate_Right): New intrinsic functions operating on it.
- * libgnat/s-aridou.ads, libgnat/s-aridou.adb: New generic
- package.
- * libgnat/s-arit64.ads, libgnat/s-arit64.adb: Instantiate
- System.Arithmetic_Double.
- * libgnat/s-arit128.ads, libgnat/s-arit128.adb: Likewise.
- * libgnat/s-bytswa.ads: Add with clause for Interfaces, use subtypes
- of unsigned types defined in Interfaces and add Bswap_128.
- * libgnat/s-casi128.ads, libgnat/s-casi128.adb: New package.
- * libgnat/s-caun128.ads, libgnat/s-caun128.adb: Likewise.
- * libgnat/s-exnint.ads: Instantiate System.Exponn.
- * libgnat/s-exnint.adb: Add pragma No_Body.
- * libgnat/s-exnlli.ads: Instantiate System.Exponn.
- * libgnat/s-exnlli.adb: Add pragma No_Body.
- * libgnat/s-exnllli.ads: Instantiate System.Exponn.
- * libgnat/s-expint.ads: Likewise.
- * libgnat/s-expint.adb: Add pragma No_Body.
- * libgnat/s-explli.ads: Instantiate System.Exponn.
- * libgnat/s-explli.adb: Add pragma No_Body.
- * libgnat/s-expllli.ads: Instantiate System.Exponn.
- * libgnat/s-explllu.ads: Instantiate System.Exponu.
- * libgnat/s-expllu.ads: Likewise.
- * libgnat/s-expllu.adb: Add pragma No_Body.
- * libgnat/s-exponn.ads, libgnat/s-exponn.adb: New generic
- function.
- * libgnat/s-expont.ads, libgnat/s-expont.adb: Likewise.
- * libgnat/s-exponu.ads, libgnat/s-exponu.adb: Likewise.
- * libgnat/s-expuns.ads, libgnat/s-expuns.adb: Likewise.
- * libgnat/s-pack65.ads, libgnat/s-pack65.adb: New package.
- * libgnat/s-pack66.ads, libgnat/s-pack66.adb: New package.
- * libgnat/s-pack67.ads, libgnat/s-pack67.adb: New package.
- * libgnat/s-pack68.ads, libgnat/s-pack68.adb: New package.
- * libgnat/s-pack69.ads, libgnat/s-pack69.adb: New package.
- * libgnat/s-pack70.ads, libgnat/s-pack70.adb: New package.
- * libgnat/s-pack71.ads, libgnat/s-pack71.adb: New package.
- * libgnat/s-pack72.ads, libgnat/s-pack72.adb: New package.
- * libgnat/s-pack73.ads, libgnat/s-pack73.adb: New package.
- * libgnat/s-pack74.ads, libgnat/s-pack74.adb: New package.
- * libgnat/s-pack75.ads, libgnat/s-pack75.adb: New package.
- * libgnat/s-pack76.ads, libgnat/s-pack76.adb: New package.
- * libgnat/s-pack77.ads, libgnat/s-pack77.adb: New package.
- * libgnat/s-pack78.ads, libgnat/s-pack78.adb: New package.
- * libgnat/s-pack79.ads, libgnat/s-pack79.adb: New package.
- * libgnat/s-pack80.ads, libgnat/s-pack80.adb: New package.
- * libgnat/s-pack81.ads, libgnat/s-pack81.adb: New package.
- * libgnat/s-pack82.ads, libgnat/s-pack82.adb: New package.
- * libgnat/s-pack83.ads, libgnat/s-pack83.adb: New package.
- * libgnat/s-pack84.ads, libgnat/s-pack84.adb: New package.
- * libgnat/s-pack85.ads, libgnat/s-pack85.adb: New package.
- * libgnat/s-pack86.ads, libgnat/s-pack86.adb: New package.
- * libgnat/s-pack87.ads, libgnat/s-pack87.adb: New package.
- * libgnat/s-pack88.ads, libgnat/s-pack88.adb: New package.
- * libgnat/s-pack89.ads, libgnat/s-pack89.adb: New package.
- * libgnat/s-pack90.ads, libgnat/s-pack90.adb: New package.
- * libgnat/s-pack91.ads, libgnat/s-pack91.adb: New package.
- * libgnat/s-pack92.ads, libgnat/s-pack92.adb: New package.
- * libgnat/s-pack93.ads, libgnat/s-pack93.adb: New package.
- * libgnat/s-pack94.ads, libgnat/s-pack94.adb: New package.
- * libgnat/s-pack95.ads, libgnat/s-pack95.adb: New package.
- * libgnat/s-pack96.ads, libgnat/s-pack96.adb: New package.
- * libgnat/s-pack97.ads, libgnat/s-pack97.adb: New package.
- * libgnat/s-pack98.ads, libgnat/s-pack98.adb: New package.
- * libgnat/s-pack99.ads, libgnat/s-pack99.adb: New package.
- * libgnat/s-pack100.ads, libgnat/s-pack100.adb: New package.
- * libgnat/s-pack101.ads, libgnat/s-pack101.adb: New package.
- * libgnat/s-pack102.ads, libgnat/s-pack102.adb: New package.
- * libgnat/s-pack103.ads, libgnat/s-pack103.adb: New package.
- * libgnat/s-pack104.ads, libgnat/s-pack104.adb: New package.
- * libgnat/s-pack105.ads, libgnat/s-pack105.adb: New package.
- * libgnat/s-pack106.ads, libgnat/s-pack106.adb: New package.
- * libgnat/s-pack107.ads, libgnat/s-pack107.adb: New package.
- * libgnat/s-pack108.ads, libgnat/s-pack108.adb: New package.
- * libgnat/s-pack109.ads, libgnat/s-pack109.adb: New package.
- * libgnat/s-pack110.ads, libgnat/s-pack110.adb: New package.
- * libgnat/s-pack111.ads, libgnat/s-pack111.adb: New package.
- * libgnat/s-pack112.ads, libgnat/s-pack112.adb: New package.
- * libgnat/s-pack113.ads, libgnat/s-pack113.adb: New package.
- * libgnat/s-pack114.ads, libgnat/s-pack114.adb: New package.
- * libgnat/s-pack115.ads, libgnat/s-pack115.adb: New package.
- * libgnat/s-pack116.ads, libgnat/s-pack116.adb: New package.
- * libgnat/s-pack117.ads, libgnat/s-pack117.adb: New package.
- * libgnat/s-pack118.ads, libgnat/s-pack118.adb: New package.
- * libgnat/s-pack119.ads, libgnat/s-pack119.adb: New package.
- * libgnat/s-pack120.ads, libgnat/s-pack120.adb: New package.
- * libgnat/s-pack121.ads, libgnat/s-pack121.adb: New package.
- * libgnat/s-pack122.ads, libgnat/s-pack122.adb: New package.
- * libgnat/s-pack123.ads, libgnat/s-pack123.adb: New package.
- * libgnat/s-pack124.ads, libgnat/s-pack124.adb: New package.
- * libgnat/s-pack125.ads, libgnat/s-pack125.adb: New package.
- * libgnat/s-pack126.ads, libgnat/s-pack126.adb: New package.
- * libgnat/s-pack127.ads, libgnat/s-pack127.adb: New package.
- * libgnat/s-rannum.ads (Random): New function returning 128-bit.
- * libgnat/s-rannum.adb (Random): Implement it.
- * libgnat/s-scaval.ads: Add with clause for Interfaces, use subtypes
- of unsigned types defined in Interfaces.
- * libgnat/s-scaval.adb: Add use clause for Interfaces.
- * libgnat/s-scaval__128.ads, libgnat/s-scaval__128.adb: New
- package.
- * libgnat/s-unstyp.ads (Long_Long_Long_Unsigned): New modular type.
- (Shift_Left, Shift_Right, Shift_Right_Arithmetic, Rotate_Left,
- Rotate_Right): New intrinsic functions operating on it.
-
-2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * doc/gnat_rm/implementation_defined_characteristics.rst: Add
- Long_Long_Long_Integer to the list of predefined integer types.
- * gnat_rm.texi: Regenerate.
-
-2020-10-21 Yannick Moy <moy@adacore.com>
-
- * ada_get_targ.adb (Width_From_Size): Add case for 128 bits.
- Reorder declarations in the same order as get_targ.adb to
- facilitate diffs.
-
-2020-10-21 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_aggr.adb (Expand_N_Aggregate): Refactor repeated calls to
- Etype (N).
- (Build_Array_Aggr_Code): Fix whitespace.
-
-2020-10-21 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * adaint.c (__gnat_file_time): Use regular arithmetic instead of
- __builtin_*_overflow routines if GCC version 4 or less and
- compiler is g++.
-
-2020-10-21 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Resolve_Array_Aggregate): Use Choice_List, which
- internally calls either Choice or Discrete_Choices, depending on
- the context.
-
-2020-10-21 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Resolve_Iterated_Component_Association): Use
- existing defining identifier for index parameter.
-
-2020-10-21 Javier Miranda <miranda@adacore.com>
-
- * exp_ch9.adb (Build_Task_Activation_Call): Do not generate a
- call to activate tasks if we are within the scope of a protected
- type and pragma Detect_Blocking is active.
-
-2020-10-21 Liaiss Merzougue <merzougue@adacore.com>
-
- * libgnat/s-carsi8.adb (Compare_Array_S8): Add pragma Assert to
- avoid warning concerning Left_Len and RighLen value regarding
- Bytes_Compared_As_Words.
- * libgnat/s-carun8.adb (Compare_Array_U8): Likewise.
- * libgnat/s-geveop.adb (Binary_Operation, Unary_Operation): Add
- pragma Assert concerning divide by 0 warning.
- * libgnat/s-imgcha.adb (Image_Character): Code update to prevent
- constant operation warning.
- (Image_Character): Add pragma Assert concerning the unchecked
- String size.
- * libgnat/s-imgdec.adb
- (Round): Upate loop code to prevent warning concerning
- Digs'First access.
- (Round): Add pragma assert.
- (Set): Add pragma Assert for the unchecked string size.
- (Set_Digits): Add pragma Assert for the input range.
- (Set_Decimal_Digits): Add pragma Assert.
- (Set_Blank_And_Sign): Add pragma Assert for the input range.
- * libgnat/s-arit64.adb (DoubleDivide): Add pragma Assert
- concerning Du /= 0.
- (Multiply_With_Ovflo_Check): Add pragma Annotate to avoid
- warning concerning unsigned -> signed conversion.
- * libgnat/s-imguns.adb (Set_Image_Unsigned): Add pragma Assert
- to prevent overflow check warning. Add pragma Assert for
- controlling S'First = 1.
- * libgnat/s-imgrea.adb (Image_Floating_Point, Set, Set_Digs,
- Set_Special_Fill, Convert_Integer): Add pragma Annotate to
- prevent overflow check warning.
- (Set_Image_Real): Add pragma Annotate to avoid dead code warning
- on float check. Add pragma Assert to prevent overflow check
- warning.
- * libgnat/s-imgwiu.adb (Set_Digits, Set_Image_Width_Unsigned):
- Add pragma assert to prevent overflow check warning.
- * libgnat/s-imgllu.adb (Set_Image_Long_Long_Unsigned): Add
- pragma assert to prevent overflow check warning.
- * libgnat/s-imgint.adb (Set_Digits): Add Assert for input
- constraint and to prevent overflow check warning, create
- Non_Positive subtype, and change the T parameter as Non_Positive
- instead Integer.
- (Set_Image_Integer): Add pragma assert to prevent overflow check
- warning.
- * libgnat/s-imglli.adb (Set_Digits): Add Assert for input
- constraint and to prevent overflow check warning, create
- Non_Positive subtype, and change the T parameter as Non_Positive
- instead Integer.
- (Set_Image_Long_Long_Integer): Add pragma assert to prevent
- overflow check warning.
- * libgnat/s-fatgen.adb (Decompose, Pred, Succ): Add pragma
- Annotate to prevent dead code due to invalid float check.
- * libgnat/s-imenne.adb (Image_Enumeration_8,
- Image_Enumeration_16, Image_Enumeration_32): Add pragma Assert
- to prevent overflow check warning. Add Names_Index subtype for
- restricting Index_table content.
-
-2020-10-21 Gary Dismukes <dismukes@adacore.com>
-
- * exp_ch6.adb (Insert_Post_Call_Actions): Test for
- N_Explicit_Dereference as part of the existing test for function
- calls.
-
-2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * freeze.adb (Check_Strict_Alignment): Do not set the flag for
- a bit-packed array type, even if it is a by-reference type.
-
-2020-10-21 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * adaint.c (__gnat_file_time): New routine.
- (__gnat_copy_attribs): Copy timestamps in nanoseconds.
- * libgnat/a-direct.adb (C_Modification_Time): Bind to
- __gnat_file_time.
- (Modification_Time): Call to C_Modification_Time.
-
-2020-10-21 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Resolve_Iterated_Component_Association):
- Expression's copy and now has the same parent as the original
- expression.
- (Resolve_Array_Aggregate): Add ??? comment about a still
- existing minor issue that led to discovery of the above crash.
-
-2020-10-21 Javier Miranda <miranda@adacore.com>
-
- * sem_ch12.adb (Install_Parents_Of_Generic_Context): Simplify
- functionality; collect and install parents of generic child
- package.
- (Remove_Parents_Of_Generic_Context): Code cleanup.
- (Instantiate_Package_Body): Hide parents of generic context from
- visibility before installing the parent instance; restore their
- visibility when the instance is analyzed
-
-2020-10-21 Doug Rupp <rupp@adacore.com>
-
- * libgnarl/s-osinte__lynxos178e.ads: Remove -mthreads switch.
-
-2020-10-21 Patrick Bernardi <bernardi@adacore.com>
-
- * env.c (__gnat_setenv): call setenv for VxWorks 7 kernel mode.
- (__gnat_environ): envGet takes an int instead of a NULL pointer.
- (__gnat_unsetenv): call unsetenv for VxWorks 7 kernel mode.
- (__gnat_clearenv): use __gnat_unsetenv to clear environment
- variables.
-
-2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch12.adb (Freeze_Subprogram_Body): Call
- Package_Freeze_Node to retrieve the freeze node for the
- enclosing body of the generic.
-
-2020-10-21 Justin Squirek <squirek@adacore.com>
-
- * exp_ch6.adb (Expand_Call_Helper): Modify calls to
- Add_Extra_Actual to use Extra_Accessibility instead of
- Get_Accessibility for the EF parameter.
-
-2020-10-21 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch6.adb (Expand_Actuals): Whitespace cleanup.
- * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Make minimum
- accessibility a constant object.
-
-2020-10-21 Patrick Bernardi <bernardi@adacore.com>
-
- * env.c (__gnat_environ): For VxWorks kernel simply return the
- result of the envGet call. Do this for VxWorks 6 and 7 as they
- both support the same API.
-
-2020-10-21 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * exp_ch7.adb (Build_Finalizer): Disable warnings on referenced
- entity.
-
-2020-10-21 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.ads, sem_ch3.adb, sem_util.adb: Fix comments.
-
-2020-10-21 Javier Miranda <miranda@adacore.com>
-
- * sem_ch3.adb (Build_Derived_Type): Propagate convention of
- class-wide parent.
-
-2020-10-21 Claire Dross <dross@adacore.com>
-
- * libgnat/a-cofove.adb (Copy): Add explanation in case of
- Capacity_Error.
- (Insert_Space): Raise Capacity_Error if the new length is
- greater than the capacity.
- (Reserve_Capacity): Raise Capacity_Error instead of
- Constraint_Error.
-
-2020-10-20 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Constrain_Decimal, Constrain_Enumeration,
- Constrain_Float, Constrain_Integer, Constrain_Ordinary_Fixed):
- Refine parameter type from Node_Id to Entity_Id.
-
-2020-10-20 Piotr Trojanek <trojanek@adacore.com>
-
- * sprint.adb (po): Set Dump_Freeze_Null to False; align colons.
- (ps): Likewise.
-
-2020-10-20 Ed Schonberg <schonberg@adacore.com>
-
- * sinfo.ads, sinfo.adb: The flag Box_Present can appear in
- Iterated_Element_Association nodes.
- * sem_aggr.adb (Resolve_Aggregate): Call
- Resolve_Container_Aggregate when type of context has
- corresponding aspect.
- * sem_type.adb (Covers): In Ada_2020 an aggregate is compatible
- with a type that carries the corresponding aspect.
- * exp_ch3.adb (Make_Controlling_Function_Wrappers): Do not
- create declarations and bodies for inherited primitive functions
- of null extensions that dispatch on result, when current scope
- includes an immediately visible non-overloadable homonym of the
- function.
- * libgnat/a-cborse.adb, libgnat/a-cborse.ads,
- libgnat/a-cbhase.ads, libgnat/a-cbhase.adb,
- libgnat/a-cborma.adb, libgnat/a-cborma.ads,
- libgnat/a-cbhama.adb, libgnat/a-cbhama.ads,
- libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads,
- libgnat/a-convec.ads, libgnat/a-ciorse.ads,
- libgnat/a-cihase.ads, libgnat/a-cihase.adb,
- libgnat/a-ciorma.ads, libgnat/a-cihama.ads,
- libgnat/a-cihama.adb, libgnat/a-cidlli.ads,
- libgnat/a-cidlli.adb, libgnat/a-coinve.adb,
- libgnat/a-cobove.adb, libgnat/a-cobove.ads,
- libgnat/a-convec.adb, libgnat/a-coinve.ads,
- libgnat/a-coorse.ads, libgnat/a-cohase.adb,
- libgnat/a-cohase.ads, libgnat/a-coorma.ads,
- libgnat/a-cohama.adb, libgnat/a-cohama.ads,
- libgnat/a-cdlili.ads: Add primitive function Empty for use in
- aspect Aggregate, and add corresponding body or expression
- function.
-
-2020-10-20 Arnaud Charlet <charlet@adacore.com>
-
- * aspects.adb (Has_Aspect_Specifications_Flag): Add
- N_Parameter_Specification.
- * par-ch13.adb (Aspect_Specifications_Present): Also handle case
- of an unknown aspect on the last formal parameter (terminated by
- a Tok_Right_Paren). Minor reformatting.
- * par-ch6.adb (P_Formal_Part): Scan aspects on formal
- parameters.
- * par.adb: Fix typos.
- * sem_ch6.adb (Process_Formals): Add processing of aspects and
- in particular Unreferenced aspect for now.
- * sinfo.ads: Allow ASPECT_SPECIFICATIONS on a
- PARAMETER_SPECIFICATION.
- * doc/gnat_rm/implementation_defined_aspects.rst
- (Aspect Unreferenced): Update documentation.
- * gnat_rm.texi: Regenerate.
-
-2020-10-20 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_util.ads, sem_util.adb (Get_Accessibility): Refine result
- type from Node_Id to Entity_Id.
-
-2020-10-20 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.adb, exp_attr.adb, sem_ch13.adb, sem_util.adb: Use
- Is_Formal where possible.
-
-2020-10-20 Steve Baird <baird@adacore.com>
-
- * sem_util.ads: Declare a new package, Old_Attr_Util, which in
- turn declares two more packages, Conditional_Evaluation and
- Indirect_Temps. Conditional_Evaluation provides a predicate for
- deciding whether a given 'Old attribute reference is eligible
- for conditional evaluation and, in the case where it is
- eligible, a function that constructs the Boolean-valued
- condition that is to be evaluated at run time in deciding
- whether to evaluate the attribute prefix. Indirect_Temps
- provides support for declaring a temporary which is only
- initialized conditionally; more specifically, an access type and
- a variable of that type are declared (unconditionally) and then
- the variable is (conditionally) initialized with an allocator.
- The existence of the access type and the pointer variable is
- hidden from clients, except that a predicate,
- Is_Access_Type_For_Indirect_Temp, is provided for identifying
- such access types. This is needed because we want such an access
- type to be treated like a "normal" access type (specifically
- with respect to finalization of allocated objects). Other parts
- of the compiler treat access types differently if
- Comes_From_Source is False, or if the secondary stack storage
- pool is used; this predicate is used to disable this special
- treatment.
- * sem_attr.adb (Uneval_Old_Msg): Improve message text to reflect
- Ada202x changes.
- (Analyze_Attribute): A previously-illegal 'Old attribute
- reference is accepted in Ada2020 if it is eligible for
- conditional evaluation.
- * sem_res.adb (Valid_Conversion): Do not treat a rewritten 'Old
- attribute like other rewrite substitutions. This makes a
- difference, for example, in the case where we are generating the
- expansion of a membership test of the form "Saooaaat'Old in
- Named_Access_Type"; in this case Valid_Conversion needs to
- return True (otherwise the expansion will be False - see the
- call site in exp_ch4.adb).
- * exp_attr.adb (Expand_N_Attribute_Reference): When expanding a
- 'Old attribute reference, test for the case where the reference
- is eligible for conditional evaluation. In that case, use the
- new "indirect temporary" mechanism provided by Sem_Util.
- * exp_prag.adb
- (Expand_Attributes_In_Consequence.Expand_Attributes): If
- Sem_Util.Indirect_Temp_Needed indicates that there could be
- correctness problems associated with the old expansion scheme
- for dealing with 'Old attributes in contract cases consequences,
- then we use the new "indirect temporary" mechanism provided by
- Sem_Util instead. We do not want to do this unconditionally.
- * sem_util.adb: Provide a body for the new Old_Attr_Util
- package. Further work is needed in several areas for
- correctness:
- - The function Is_Repeatedly_Evaluated does not deal with
- container aggregates yet.
- - The function Is_Known_On_Entry does not deal with interactions
- with the Global aspect.
- Each area where more work is needed is indicated with a "???"
- comment in the code; a more detailed description can be found
- there. Some optimization opportunties are similarly indicated
- with a "???" comment.
- * exp_ch3.adb (Freeze_Type): In deciding whether to generate
- expansion for the list controller of an access type, take the
- predicate Is_Access_Type_For_Indirect_Temp into account. If the
- predicate yields True, then generate the expansion.
- * exp_util.adb (Build_Allocate_Deallocate_Proc): We don't
- normally finalize allocated objects that are allocated on the
- secondary stack. Add an exception to this rule if the predicate
- Is_Access_Type_For_Indirect_Temp yields True. As a result of
- this exception, we have to deal with the fact that gigi expects
- a different parameter profile if we are using the secondary
- stack pool; the Pool and Alignment parameters must be omitted in
- this case.
-
-2020-10-20 Javier Miranda <miranda@adacore.com>
-
- * sem_ch12.adb (Install_Parents_Of_Generic_Context,
- Remove_Parents_Of_Generic_Context): New subprograms.
- (Instantiate_Package_Body): Adding assertions to ensure that
- installed parents are properly removed.
-
-2020-10-20 Claire Dross <dross@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute): Emit a warning on 'Update
- when Warn_On_Obsolescent_Feature is set to True.
-
-2020-10-20 Richard Kenner <kenner@adacore.com>
-
- * gnat_cuda.adb (Build_Register_Function_Call): Make procedure
- call instead of function, rename to
- Build_Register_Procedure_Call.
- (Build_CUDA_Init_Proc): Make procedure call instead of function.
-
-2020-10-20 Justin Squirek <squirek@adacore.com>
-
- * exp_ch6.adb (Expand_Branch): Properly anticipate expansion of
- conditional expressions producing object declarations in
- addition to assignment statements, and rename formal.
-
-2020-10-20 Yannick Moy <moy@adacore.com>
-
- * errout.adb (Write_Source_Code_Line): Adopt display closer to
- GCC format.
- (Output_Messages): Deal specially with info messages.
- * erroutc.adb (Prescan_Message): Fix bug leading to check
- messages being considered as error messages in pretty output
- mode.
-
-2020-10-20 Justin Squirek <squirek@adacore.com>
-
- * exp_ch6.adb (Expand_Call_Helper): Properly handle the case
- where the condition of a conditional expression has been
- optimized out when calculating the value of an extra
- accessibility parameter.
-
-2020-10-20 Bob Duff <duff@adacore.com>
-
- * doc/gnat_ugn/gnat_utility_programs.rst: Change "_" to "-".
-
-2020-10-20 Arnaud Charlet <charlet@adacore.com>
-
- * sem_aggr.adb (Resolve_Aggregate): Warn on not fully
- initialized box aggregate.
- * sem_aggr.ads: Fix typo.
- * sem_res.adb (Resolve_Actuals): Fix typo in error message
- format marking it incorrectly as a continuation message.
- * sem_elab.adb (Check_Internal_Call_Continue): Similarly, add
- missing primary message in case of a call to an actual generic
- subprogram.
- * sem_warn.adb (Check_References): Do not warn on read but never
- assigned variables if the type is partially initialized.
- * libgnat/a-except.ads, libgnat/a-ststun.ads,
- libgnat/g-sechas.ads, libgnat/a-cbdlli.ads,
- libgnat/a-cfdlli.ads, libgnat/a-cobove.ads,
- libgnat/a-cohata.ads, libgnat/a-crbltr.ads,
- libgnat/a-cbmutr.ads, libgnat/a-crdlli.ads,
- libgnat/a-cbsyqu.ads: Address new warning.
- * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
- Update doc on -gnatwv.
- * gnat_ugn.texi: Regenerate.
-
-2020-10-20 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch6.adb (Analyze_Expression_Function): Mark static
- expression functions as inlined.
-
-2020-10-20 Arnaud Charlet <charlet@adacore.com>
-
- * contracts.adb (Is_Prologue_Renaming): This function was
- missing support for E_Constant which can also be generated in
- protected objects.
-
-2020-10-20 Arnaud Charlet <charlet@adacore.com>
-
- * bindgen.adb (Gen_Bind_Env_String): Generate Ada 2012 compatible
- strings. Code cleanup.
-
-2020-10-20 Yannick Moy <moy@adacore.com>
-
- * sem_util.adb, sem_util.ads: Comment fix.
-
-2020-10-20 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch8.adb (Check_Constrained_Object): Suppress discriminant
- checks when the type has default discriminants and comes from
- expansion of a "for of" loop.
-
-2020-10-20 Bob Duff <duff@adacore.com>
-
- * atree.ads: Make Default_Node a constant. Remove the
- modification of Comes_From_Source, and use a separate flag for
- that. Change Sloc to 0; it always overwritten, and never left
- as the No_Location value.
- (Print_Statistics): Move to spec so we can call it from
- gnat1drv.
- (Num_Nodes): Rename to clarify that this is approximate.
- Correct comment: nodes and entities are never deleted, the count
- is never decremented, and this is not used by Xref.
- (Initialize): Correct comment: Error_List is not created here.
- Other minor naming and comment changes.
- * atree.adb (Extend_Node, New_Copy, New_Entity, New_Node):
- Streamline these. Simplify and improve efficiency. Move code
- from Allocate_Initialize_Node to these, where it can be executed
- unconditionally. Take advantage of automatic zeroing of the
- Nodes table.
- (Allocate_Initialize_Node): Remove this. It was an efficiency
- bottleneck, and somewhat complicated, because it was called from
- 4 places, and had all sorts of conditionals to check where it
- was called from. Better to move most of that code to the call
- sites, where it can be executed (or not) unconditionally.
- (Allocate_New_Node): New procedure to partly replace
- Allocate_Initialize_Node (called from just 2 of those 4 places).
- (Comes_From_Source_Default): New flag written/read by
- Set_Comes_From_Source_Default/Get_Comes_From_Source_Default.
- This allows us to make Default_Node into a constant with
- all-zeros value.
- (Set_Paren_Count_Of_Copy): New procedure to avoid duplicated
- code.
- (Report): New procedure to encapsulate the call to the reporting
- procedure.
- (Atree_Private_Part): We now need a body for this package, to
- contain package body Nodes.
- (Approx_Num_Nodes_And_Entities): Was Num_Nodes. For efficiency,
- compute the answer from Nodes.Last. That way we don't need to
- increment a counter on every node creation. Other minor naming
- and comment changes.
- * gnat1drv.adb: Call Atree.Print_Statistics if -gnatd.A switch
- was given. Add comment documenting the new order dependency (we
- must process the command line before calling Atree.Initialize).
- * debug.adb: Document -gnatd.A.
- * einfo.adb, sinfo.adb: Remove useless Style_Checks pragmas.
- * nlists.ads (Allocate_List_Tables): Inline makes node creation
- a little faster.
- * nlists.adb (Initialize): Remove local constant E, which didn't
- seem to add clarity.
- * treepr.adb (Print_Init): Use renamed
- Approx_Num_Nodes_And_Entities function.
- * types.ads: Change the Low and High bounds as described above.
- * types.h: Change Low and High bounds to match types.ads.
- * sem_ch8.adb, namet.adb, namet.ads: Move the computation of
- Last_Name_Id from sem_ch8 to namet, and correct it to not assume
- Name_Ids are positive.
- * ali.adb, ali-util.adb, bindo-writers.adb, exp_dist.adb,
- fmap.adb, fname-uf.adb, osint.adb: Fix various hash functions to
- avoid assuming the various ranges are positive. Note that "mod"
- returns a nonnegative result when the second operand is
- positive. "rem" can return negative values in that case (in
- particular, if the first operand is negative, which it now is).
- * switch-c.adb: Allow switch -gnaten to control the value of
- Nodes_Size_In_Meg.
- * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
- Remove traling whitespaces.
- * opt.ads (Nodes_Size_In_Meg): New Variable.
-
-2020-10-20 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_util.adb (Remove_Side_Effects): Always generate a renaming
- that is handled by the front-end in the case of an indexed or a
- selected component whose prefix has a nonstandard representation.
-
-2020-10-20 Pat Rogers <rogers@adacore.com>
-
- * doc/gnat_rm/the_gnat_library.rst: Add Ada.Task_Initialization.
- * gnat_rm.texi: Regenerate.
-
-2020-10-20 Yannick Moy <moy@adacore.com>
-
- * errout.adb: (Error_Msg-Internal): Pass the location for a line
- insertion if any in the message.
- (Output_Messages: Add display of source code lines if -gnatdF is
- set.
- (Write_Source_Code_Line): Code clean up.
- * erroutc.adb (Prescan_Message): Apply prescan for continuation
- lines when -gnatdF is set, and record presence of line
- insertion.
- * erroutc.ads (Has_Insertion_Line): New global for prescan.
- (Error_Msg_Object): Add field to record line insertion if
- present.
- * errutil.adb (Error_Msg): Pass no location for Insertion_Sloc.
-
-2020-10-20 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch5.adb (Expand_N_Case_Statement): Do not generate
- validity check when possible.
-
-2020-10-20 Ed Schonberg <schonberg@adacore.com>
-
- * exp_aggr.adb (Expand_Iterated_Component): Reorganize code to
- ensure that Loop_Id is properly initialized on all paths, and
- remove code duplication.
-
-2020-10-20 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Analyze_Subtype_Declaration): Propagate predicate
- function to full view of the created type as well, if it was
- created.
-
-2020-10-20 Arnaud Charlet <charlet@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): Merge handling of
- Simple_Storage_Pool and Storage_Pool.
-
-2020-10-20 Piotr Trojanek <trojanek@adacore.com>
-
- * aspects.ads: Introduce Subprogram_Variant aspect with the
- following properties: GNAT-specific, with mandatory expression,
- not a representation aspect, never delayed.
- * contracts.adb (Expand_Subprogram_Contract): Mention new aspect
- in the comment.
- (Add_Contract_Item): Support addition of pragma
- Subprogram_Variant to N_Contract node.
- (Analyze_Entry_Or_Subprogram_Contract): Mention new aspect in
- the comment; add pragma Subprogram_Variant to N_Contract node.
- (Build_Postconditions_Procedure): Adapt call to
- Insert_Before_First_Source_Declaration, which is now reused in
- expansion of new aspect.
- (Process_Contract_Cases_For): Also process Subprogram_Variant,
- which is stored in N_Contract node together with Contract_Cases.
- * contracts.ads (Analyze_Entry_Or_Subprogram_Contract): Mention
- new aspect in the comment.
- (Analyze_Entry_Or_Subprogram_Body_Contract): Likewise.
- * einfo.adb (Get_Pragma): Support retrieval of new pragma.
- * einfo.ads (Get_Pragma): Likewise.
- * exp_ch6.adb (Check_Subprogram_Variant): New routine for
- emitting call to check Subprogram_Variant expressions at run
- time.
- (Expand_Call_Helper): Check Subprogram_Variant expressions at
- recursive calls.
- * exp_prag.adb (Make_Op): Moved from expansion of pragma
- Loop_Variant to Exp_Util, so it is now reused for expansion of
- pragma Subprogram_Variant.
- (Process_Variant): Adapt call to Make_Op after moving it to
- Exp_Util.
- (Expand_Pragma_Subprogram_Variant): New routine.
- * exp_prag.ads (Expand_Pragma_Subprogram_Variant): Likewise.
- * exp_util.adb (Make_Variant_Comparison): Moved from Exp_Prag
- (see above).
- * exp_util.ads (Make_Variant_Comparison): Likewise.
- * inline.adb (Remove_Aspects_And_Pragmas): Handle aspect/pragma
- Subprogram_Variant just like similar contracts.
- * par-prag.adb (Prag): Likewise.
- * sem.adb (Insert_Before_First_Source_Declaration): Moved from
- Contracts (see above).
- * sem.ads (Insert_Before_First_Source_Declaration): Likewise.
- * sem_ch12.adb: Mention new aspect in the comment about
- "Implementation of Generic Contracts", just like similar aspects
- are mentioned there.
- * sem_ch13.adb (Insert_Pragma): Mention new aspect in the
- comment, because this routine is now used for Subprogram_Variant
- just like for other similar aspects.
- (Analyze_Aspect_Specifications): Mention new aspect in comments;
- it is handled just like aspect Contract_Cases.
- (Check_Aspect_At_Freeze_Point): Do not expect aspect
- Subprogram_Variant just like we don't expect aspect
- Contract_Cases.
- * sem_prag.adb (Ensure_Aggregate_Form): Now also used for pragma
- Subprogram_Variant, so update comment.
- (Analyze_Pragma): Add initial checks for pragma
- Subprogram_Variant.
- (Analyze_Subprogram_Variant_In_Decl_Part): New routine with
- secondary checks on the new pragma.
- (Sig_Flags): Handle references within pragma Subprogram_Variant
- expression just like references in similar pragma
- Contract_Cases.
- (Is_Valid_Assertion_Kind): Handle Subprogram_Variant just like
- other similar contracts.
- * sem_prag.ads (Analyze_Subprogram_Variant_In_Decl_Part): New
- routine.
- * sem_res.adb (Same_Or_Aliased_Subprograms): Moved to Sem_Util,
- so it can be reused for detection of recursive calls where
- Subprogram_Variant needs to be verified.
- * sem_util.adb (Is_Subprogram_Contract_Annotation): Handle new
- Subprogram_Variant annotation just like other similar
- annotations.
- (Same_Or_Aliased_Subprograms): Moved from Sem_Res (see above).
- * sem_util.ads (Is_Subprogram_Contract_Annotation): Mention new
- aspect in the comment.
- (Same_Or_Aliased_Subprograms): Moved from Sem_Res (see above).
- * sinfo.ads (N_Contract): Document handling of
- Subprogram_Variant.
- * snames.ads-tmpl: Add name for the internally generated
- procedure with checks for Subprogram_Variant expression, name
- for the new aspect and new pragma corresponding to aspect
- Subprogram_Variant.
-
-2020-10-20 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_util.ads: Reorder declaration.
-
-2020-10-19 Ed Schonberg <schonberg@adacore.com>
-
- * 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.
-
-2020-10-19 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch4.adb (Expand_Concatenate): Enable needed range checks.
-
-2020-10-19 Bob Duff <duff@adacore.com>
-
- * 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.
-
-2020-10-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * Makefile.rtl (PowerPC/Linux): Use s-taspri__posix.ads instead
- of s-taspri__posix-noaltstack.ads for s-taspri.ads.
-
-2020-10-19 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (Add_Call): Remove excessive condition and
- unnecessary call to Set_Has_Predicates.
-
-2020-10-19 Yannick Moy <moy@adacore.com>
-
- * 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.
-
-2020-10-19 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch6.adb (Check_Untagged_Equality): Check for AI12-0352.
-
-2020-10-19 Ed Schonberg <schonberg@adacore.com>
-
- * 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.
-
-2020-10-19 Arnaud Charlet <charlet@adacore.com>
-
- * contracts.adb (Process_Preconditions_For): Do not exclude
- instances.
- * sem_ch4.adb (Analyze_Quantified_Expression): Disable spurious
- warning on internally generated variables.
-
-2020-10-19 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * 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.
-
-2020-10-19 Bob Duff <duff@adacore.com>
-
- * 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.
-
-2020-10-19 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): Check if type
- depends on discriminant.
-
-2020-10-19 Bob Duff <duff@adacore.com>
-
- * libgnat/a-coinve.adb, libgnat/a-cidlli.adb (Put_Image): Call
- Iterate.
-
-2020-10-19 Arnaud Charlet <charlet@adacore.com>
-
- * sem_aggr.adb (Resolve_Record_Aggregate): Properly apply
- subtype constraints when using a Default_Value.
- * freeze.adb: Fix typo.
-
-2020-10-19 Yannick Moy <moy@adacore.com>
-
- * 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.
-
-2020-10-19 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-19 Yannick Moy <moy@adacore.com>
-
- * libgnat/a-textio.ads: Update top-level comment.
-
-2020-10-19 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
-
-2020-10-19 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch6.adb (Expand_Actuals): Simplify condition for by-copy
- types.
-
-2020-10-19 Yannick Moy <moy@adacore.com>
-
- * errout.ads: Add comment regarding lack of preservation of
- Errout state across successive calls to the API.
-
-2020-10-19 Bob Duff <duff@adacore.com>
-
- * 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.
-
-2020-10-19 Bob Duff <duff@adacore.com>
-
- * 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 ].
-
-2020-10-19 Javier Miranda <miranda@adacore.com>
-
- * sem_ch8.adb (Find_Direct_Name): Do not trust in the decoration
- of the Entity attribute in constants associated with
- discriminals of protected types.
-
-2020-10-19 Gary Dismukes <dismukes@adacore.com>
-
- * 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.
-
-2020-10-19 Javier Miranda <miranda@adacore.com>
-
- * sem_ch7.adb (Uninstall_Declarations): Uninstall the
- declaration of a subtype declaration defined in the private part
- of a package.
-
-2020-10-19 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-19 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch6.adb (Expand_Call_Helper): Cleanup.
-
-2020-10-19 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch6.adb (Is_Direct_Deep_Call): Refine type from Node_Id to
- Entity_Id.
-
-2020-10-19 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch6.adb (May_Fold): Detect all operators, i.e. both binary
- and unary ones.
-
-2020-10-19 Piotr Trojanek <trojanek@adacore.com>
-
- * inline.adb (Expand_Inlined_Call): Simplify repeated calls to
- Nkind.
-
-2020-10-18 Alexandre Oliva <oliva@adacore.com>
-
- * 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.
-
-2020-10-16 Piotr Trojanek <trojanek@adacore.com>
-
- * 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.
-
-2020-10-16 Arnaud Charlet <charlet@adacore.com>
-
- * sem_cat.adb (Is_Primary): Handle N_Range properly.
-
-2020-10-16 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * 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.
-
-2020-10-16 Bob Duff <duff@adacore.com>
-
- * 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.
-
-2020-10-16 Javier Miranda <miranda@adacore.com>
-
- * 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.
-
-2020-10-16 Bob Duff <duff@adacore.com>
-
- * libgnat/a-numeri.ads: Remove the greek letter.
-
-2020-10-16 Ed Schonberg <schonberg@adacore.com>
-
- * exp_imgv.adb (Expand_Image_Attribute): Refine previous patch
- to use root type (and not base type) on enumeration types.
-
-2020-10-16 Ed Schonberg <schonberg@adacore.com>
-
- * 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.
-
-2020-10-16 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-16 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-16 Gary Dismukes <dismukes@adacore.com>
-
- * 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.
-
-2020-10-16 Bob Duff <duff@adacore.com>
-
- * exp_ch6.adb (Expand_Simple_Function_Return): Remove obsolete
- comment and code.
-
-2020-10-16 Arnaud Charlet <charlet@adacore.com>
-
- PR ada/95953
- * libgnat/a-suenco.adb (Convert): Fix handling of third UTF-8
- byte.
-
-2020-10-16 Steve Baird <baird@adacore.com>
-
- * exp_util.adb (Is_Related_To_Func_Return): Cope with the case
- where the FE introduces a type conversion.
-
-2020-10-16 Chris Martin <cmartin@adacore.com>
-
- * 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.
-
-2020-10-16 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-16 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_util.adb (Is_View_Conversion): Detect qualified types.
- * sem_util.ads (Is_Actual_In_Out_Parameter): Fix style in
- comment.
-
-2020-10-16 Arnaud Charlet <charlet@adacore.com>
-
- * scil_ll.adb, sem_scil.adb: Update assertions.
-
-2020-10-16 Ed Schonberg <schonberg@adacore.com>
-
- * 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
-
-2020-10-16 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch4.adb (Expand_Concatenate): Allocate result of string
- concatenation on secondary stack when relevant.
-
-2020-10-16 Ed Schonberg <schonberg@adacore.com>
-
- * 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.
-
-2020-10-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * 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.
-
-2020-10-16 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-16 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Array_Type_Declaration): Create itype with unique
- name.
-
-2020-10-16 Piotr Trojanek <trojanek@adacore.com>
-
- * 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.
-
-2020-10-16 Yannick Moy <moy@adacore.com>
-
- * 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.
-
-2020-10-16 Gary Dismukes <dismukes@adacore.com>
-
- * 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.
-
-2020-10-16 Arnaud Charlet <charlet@adacore.com>
-
- * sem_prag.adb (Check_OK_Stream_Convert_Function): Check for
- abstract subprograms.
-
-2020-10-16 Piotr Trojanek <trojanek@adacore.com>
-
- * 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.
-
-2020-10-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * 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.
-
-2020-10-15 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-15 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-15 Javier Miranda <miranda@adacore.com>
-
- * 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.
-
-2020-10-15 Javier Miranda <miranda@adacore.com>
-
- * 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.
-
-2020-10-15 Steve Baird <baird@adacore.com>
-
- * 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.
-
-2020-10-15 Ed Schonberg <schonberg@adacore.com>
-
- * 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.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_util.adb (Bad_Predicated_Subtype_Use): Emit an
- unconditional error, not a conditional warning.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Process_Subtype): Combine guards for
- Null_Exclusion_Present in May_Have_Null_Exclusion; use this
- combined guard when checking AI-231.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Process_Subtype): Sync May_Have_Null_Exclusion
- with assertion in Null_Exclusion_Present; clarify the scope of
- local variables.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Analyze_Subtype_Declaration): Fix style.
- (Make_Index): Refactor to avoid repeated detection of subtype
- indication; add comment.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Is_Acceptable_Dim3): Use Is_RTE to not pull CUDA
- package unless necessary; rename local Tmp variable; iterate
- with procedural Next.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * 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.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Access_Subprogram_Declaration): Remove extra
- parens.
- (Make_Index): Remove excessive calls to Is_Type.
-
-2020-10-15 Arnaud Charlet <charlet@adacore.com>
-
- * sem_util.adb (Enter_Name): Remove unnecessary conditions in
- Enter_Name that come from the beginning of times.
-
-2020-10-15 Bob Duff <duff@adacore.com>
-
- * exp_ch6.adb (Expand_Simple_Function_Return): Remove DSP part
- of comment, and reformat.
-
-2020-10-15 Boris Yakobowski <yakobowski@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): Do not expand
- 'Initialized in CodePeer mode.
-
-2020-10-15 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch12.adb (Reset_Entity): Protect against malformed tree.
-
-2020-10-15 Arnaud Charlet <charlet@adacore.com>
-
- * 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).
-
-2020-10-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * 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.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch12.adb: Replace list of N_Defining_... enumerations with
- N_Entity.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * 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.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Analyze_Subtype_Declaration): Recognize both
- identifiers and expanded names; use high-level Is_Scalar_Type
- instead of low-level membership test.
-
-2020-10-15 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-15 Bob Duff <duff@adacore.com>
-
- * 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.
-
-2020-10-15 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-15 Arnaud Charlet <charlet@adacore.com>
-
- * sem_res.adb (Resolve_Call): Do not try to inline intrinsic
- calls.
-
-2020-10-15 Ed Schonberg <schonberg@adacore.com>
-
- * 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.
-
-2020-10-15 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/g-arrspl.ads, libgnat/g-arrspl.adb (Create,
- First_Cursor, Advance, Has_Element): New.
-
-2020-10-15 Arnaud Charlet <charlet@adacore.com>
-
- * 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.
-
-2020-10-15 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_util.adb (Remove_Side_Effects): Move special-casing for
- GNATprove to be applied to all object declarations.
-
-2020-10-12 Alexandre Oliva <oliva@adacore.com>
-
- * libgnat/a-ngelfu.ads (Sin, Cos): Make the single-argument
- functions inline.
-
-2020-10-11 Alexandre Oliva <oliva@adacore.com>
-
- * libgnat/a-numaux.ads: Make all imports Intrinsic.
- * libgnat/a-numaux__darwin.ads: Likewise.
- * libgnat/a-numaux__libc-x86.ads: Likewise.
- * libgnat/a-numaux__vxworks.ads: Likewise.
-
-2020-09-28 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (Subprogram_Body_to_gnu): Set the end locus
- of body and declaration earlier.
-
-2020-09-28 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (maybe_saturate_size): Add ALIGN parameter
- and round down the result to ALIGN.
- (gnat_to_gnu_entity): Adjust calls to maybe_saturate_size.
-
-2020-09-14 Jakub Jelinek <jakub@redhat.com>
-
- * gcc-interface/trans.c (gigi): Adjust build_optimization_node
- caller.
-
-2020-09-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * fe.h: Fix pilot error in previous change.
- * gcc-interface/gigi.h (enum standard_datatypes): Add ADT_mulv128_decl.
- (mulv128_decl): New macro.
- (get_target_long_long_long_size): Declare.
- * gcc-interface/decl.c (gnat_to_gnu_entity): Use a maximum size of
- 128 bits for discrete types if Enable_128bit_Types is true.
- * gcc-interface/targtyps.c: Include target.h.
- (get_target_long_long_long_size): New function.
- * gcc-interface/trans.c (gigi): Initialize mulv128_decl if need be.
- (build_binary_op_trapv): Call it for 128-bit multiplication.
- * gcc-interface/utils.c (make_type_from_size): Enforce a maximum
- size of 128 bits if Enable_128bit_Types is true.
-
-2020-09-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (lvalue_for_aggr_p) <N_Object_Declaration>:
- Return false unconditionally.
-
-2020-09-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (gnat_to_gnu) <N_Object_Declaration>: Clear
- the SLOC of the expression of a tag.
-
-2020-09-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Only give
- a warning for the overlay of an aliased array with an unconstrained
- nominal subtype if the address is absolute.
-
-2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils.c (type_has_variable_size): New function.
- (create_field_decl): In the packed case, also force byte alignment
- when the type of the field has variable size.
-
-2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/misc.c (get_array_bit_stride): Return TYPE_ADA_SIZE
- for record and union types.
-
-2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/misc.c (gnat_get_fixed_point_type): Bail out only
- when the GNAT encodings are specifically used.
-
-2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Only
- create extra subtypes for discriminants if the RM size of the base
- type of the index type is lower than that of the index type.
-
-2020-09-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (set_rm_size): Do not take into account the
- Value_Size clause if it is not for the entity itself.
-
-2020-09-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (build_subst_list): For a definition, make
- sure to instantiate the SAVE_EXPRs generated by the elaboration of
- the constraints in front of the elaboration of the type itself.
-
-2020-09-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/misc.c: Include tree-pass.h.
- (internal_error_function): Call emergency_dump_function.
-
-2020-09-03 Arnaud Charlet <charlet@adacore.com>
-
- * fe.h, opt.ads (Enable_128bit_Types): New.
- * stand.ads (Standard_Long_Long_Long_Integer,
- S_Long_Long_Long_Integer): New.
-
-2020-09-03 Arnaud Charlet <charlet@adacore.com>
-
- * sem_util.ads, sem_util.adb (Get_Fullest_View): New procedure.
- * exp_unst.adb (Check Static_Type): Do all processing on fullest
- view of specified type.
-
-2020-08-27 Martin Liska <mliska@suse.cz>
-
- * gcc-interface/trans.c (gigi): Set exact argument of a vector
- growth function to true.
- (Attribute_to_gnu): Likewise.
-
-2020-07-27 Alexandre Oliva <oliva@adacore.com>
-
- * switch.adb (Is_Internal_GCC_Switch): Revert accidental
- reintroduction of auxbase and auxbase-strip.
-
-2020-07-27 Javier Miranda <miranda@adacore.com>
-
- * sem_res.adb (Resolve_Actuals): Restrict the check on matching
- aliased components to view conversions of array types that are
- not placed in an instance. In such case at runtime an object is
- created.
- * sem_util.ads (Is_Actual_In_Out_Parameter, Is_View_Conversion):
- New subprograms.
- * sem_util.adb (Is_Actual_In_Out_Parameter, Is_View_Conversion):
- New subprograms.
-
-2020-07-27 Arnaud Charlet <charlet@adacore.com>
-
- * lib-xref.adb (Generate_Reference): Protect against malformed
- tree in case of severe errors.
- * sem_ch8.adb (Add_Implicit_Operator): Ditto.
-
-2020-07-27 Arnaud Charlet <charlet@adacore.com>
-
- * opt.ads (Ada_Version_Runtime): Set to Ada_2020.
- * sem_ch3.adb (Analyze_Subtype_Declaration): Propagate
- Is_Independent flag to subtypes.
- * libgnarl/s-taprop__linux.adb: Adapt to Ada 2020 warning.
- * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
- libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb,
- libgnat/a-nbnbre.ads, libgnat/a-stobbu.adb,
- libgnat/a-stobbu.ads, libgnat/a-stobfi.adb,
- libgnat/a-stobfi.ads, libgnat/a-stoubu.adb,
- libgnat/a-stoubu.ads, libgnat/a-stoufi.adb,
- libgnat/a-stoufi.ads, libgnat/a-stoufo.adb,
- libgnat/a-stoufo.ads, libgnat/a-stouut.adb,
- libgnat/a-stouut.ads, libgnat/a-strsto.ads,
- libgnat/a-ststbo.adb, libgnat/a-ststbo.ads,
- libgnat/a-ststun.adb, libgnat/a-ststun.ads,
- libgnat/a-stteou.ads, libgnat/s-aoinar.ads,
- libgnat/s-aomoar.ads, libgnat/s-atopex.ads,
- libgnat/s-putaim.adb, libgnat/s-putaim.ads,
- libgnat/s-putima.adb, libgnat/s-putima.ads: Remove pragma
- Ada_2020, now redundant.
-
-2020-07-27 Justin Squirek <squirek@adacore.com>
-
- * exp_ch6.adb (Expand_Call_Helper): Modify addition of the extra
- accessibility parameter to take into account the extra
- accessibility of formals within the calling subprogram.
-
-2020-07-27 Bob Duff <duff@adacore.com>
-
- * exp_imgv.adb (Expand_Image_Attribute): Add Root_Type, so
- constrained subtypes work.
-
-2020-07-27 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * exp_prag.adb (Arg1, Arg2, Arg3): Removed.
- (Arg_N): New function.
-
-2020-07-27 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch8.adb (Analyze_Object_Renaming): Allow values in Ada
- 2020 mode.
-
-2020-07-27 Arnaud Charlet <charlet@adacore.com>
-
- * sem_res.adb (Resolve_Actuals): Refine 6.4.1 rules as per
- AI12-0377.
-
-2020-07-27 Bob Duff <duff@adacore.com>
-
- * errout.ads, errout.adb (Error_Msg_Ada_2020_Feature): New
- procedure analogous to Error_Msg_Ada_2012_Feature.
- * sem_attr.adb (Analyze_Image_Attribute): Use
- Error_Msg_Ada_2012_Feature and Error_Msg_Ada_2020_Feature to
- indicate that Object'Image is allowed in Ada 2012, and that
- 'Image is allowed for any type in Ada 2020.
-
-2020-07-27 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * libgnat/a-strunb.adb (Sum, Mul, Saturated_Sum, Saturated_Mul):
- New routines. Use them when resulting string size more that
- length of the strings in parameters.
- (Unbounded_Slice): Use "- 1" instead of "+ 1" in opposite side
- of condition to avoid overflow.
- * libgnat/a-strunb__shared.adb (Sum, Mul): New routines.
- (Allocate): New routine with 2 parameters. Use routine above
- when resulting string size more that length of the strings in
- parameters.
- (Aligned_Max_Length): Do not try to align to more than Natural'Last.
- (Unbounded_Slice): Use "- 1" instead of "+ 1" in opposite side
- of condition to avoid overflow.
-
-2020-07-27 Arnaud Charlet <charlet@adacore.com>
-
- * sem_attr.adb (Resolve_Attribute): Remove dead code.
-
-2020-07-27 Arnaud Charlet <charlet@adacore.com>
-
- * aspects.adb, atree.adb, atree.ads, checks.adb, contracts.adb,
- einfo.adb, errout.adb, exp_aggr.adb, exp_attr.adb, exp_cg.adb,
- exp_ch11.adb, exp_ch2.adb, exp_ch3.adb, exp_ch4.adb,
- exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_ch8.adb, exp_ch9.adb,
- exp_dbug.adb, exp_disp.adb, exp_intr.adb, exp_pakd.adb,
- exp_prag.adb, exp_put_image.adb, exp_smem.adb, exp_tss.adb,
- exp_unst.adb, exp_util.adb, freeze.adb, ghost.adb, gnat1drv.adb,
- inline.adb, lib-writ.adb, lib-xref-spark_specific.adb,
- lib-xref.adb, namet.adb, namet.ads, nlists.adb, par-ch10.adb,
- par-ch2.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb, par-ch6.adb,
- par-prag.adb, par-util.adb, par_sco.adb, pprint.adb,
- repinfo.adb, restrict.adb, rtsfind.adb, scil_ll.adb, sem.adb,
- sem_aggr.adb, sem_attr.adb, sem_aux.adb, sem_cat.adb,
- sem_ch10.adb, sem_ch11.adb, sem_ch12.adb, sem_ch13.adb,
- sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_ch7.adb,
- sem_ch8.adb, sem_ch9.adb, sem_dim.adb, sem_disp.adb,
- sem_dist.adb, sem_elab.adb, sem_elim.adb, sem_eval.adb,
- sem_intr.adb, sem_mech.adb, sem_prag.adb, sem_res.adb,
- sem_scil.adb, sem_type.adb, sem_util.adb, sem_warn.adb,
- sinfo.adb, sinfo.ads, sprint.adb, styleg.adb, tbuild.adb,
- treepr.adb (Nkind_In, Nam_In, Ekind_In): Removed, replaced by
- membership tests.
-
-2020-07-27 Gary Dismukes <dismukes@adacore.com>
-
- * sem_prag.adb (Analyze_Pragma, Pragma_Max_Entry_Queue_Length):
- Refine error message to indicate that the pragma must apply to
- an entry declaration, not just an entry.
-
-2020-07-27 Javier Miranda <miranda@adacore.com>
-
- * exp_ch6.adb (Make_Build_In_Place_Iface_Call_In_Allocator):
- Revert previous patch, and add a missing type conversion to
- displace the pointer to the allocated object to reference the
- target dispatch table.
-
-2020-07-27 Javier Miranda <miranda@adacore.com>
-
- * sem_res.adb (Resolve_Actuals): Restore restrictive check on
- view conversions which required matching value of
- Has_Aliased_Components of formals and actuals. Required to avoid
- the regression of ACATS b460005.
-
-2020-07-27 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch12.adb (Instantiate_Package_Body): Add commentary for a
- nesting issue with parent handling and private view switching.
- (Switch_View): Do not skip specific private-dependent subtypes.
-
-2020-07-27 Patrick Bernardi <bernardi@adacore.com>
-
- * Makefile.rtl: Remove X86_TARGET_PAIRS for x86-lynx178elf.
-
-2020-07-27 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch13.adb (Analyze_Address_Specification_Clause): Do not
- emit a warning when a constant declaration in a generic unit
- overlays a generic In_Parameter.
-
-2020-07-27 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch3.adb (Check_Abstract_Overriding): Remove Scope
- comparison test from test related to initial implementation of
- AI12-0042, plus remove the related ??? comment.
- (Derive_Subprogram): Add test requiring that the type extension
- appear in the visible part of its enclosing package when
- checking the overriding requirement of 7.3.2(6.1/4), as
- clarified by AI12-0382.
-
-2020-07-27 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_N_Attribute_Reference) Extend
- existing workaround to 'Pos.
-
-2020-07-27 Bob Duff <duff@adacore.com>
-
- * libgnat/s-rannum.ads, libgnat/s-rannum.adb: Add Put_Image.
- This will be inherited by the language-defined packages
- Ada.Numerics.Discrete_Random and Ada.Numerics.Float_Random.
- * libgnat/a-convec.ads, libgnat/a-convec.adb: Add Put_Image.
- * libgnat/s-putima.ads: Add pragma Preelaborate, so this can be
- imported into containers packages.
- * libgnat/s-putima.adb: Move Digit to private part; otherwise
- reference to Base is illegal in Preelaborate generic.
- * exp_put_image.adb (Build_Record_Put_Image_Procedure): Use the
- base type.
-
-2020-07-23 Arnaud Charlet <charlet@adacore.com>
-
- * aspects.ads: Declare CUDA_Global as aspect.
- * einfo.ads: Use Flag118 for the Is_CUDA_Kernel flag.
- (Set_Is_CUDA_Kernel): New function.
- (Is_CUDA_Kernel): New function.
- * einfo.adb (Set_Is_CUDA_Kernel): New function.
- (Is_CUDA_Kernel): New function.
- * par-prag.adb (Prag): Ignore Pragma_CUDA_Execute and
- Pragma_CUDA_global.
- * rtsfind.ads: Define CUDA.Driver_Types.Stream_T and
- CUDA.Vector_Types.Dim3 entities
- * rtsfind.adb: Define CUDA_Descendant subtype.
- (Get_Unit_Name): Handle CUDA_Descendant packages.
- * sem_prag.ads: Mark CUDA_Global as aspect-specifying pragma.
- * sem_prag.adb (Analyze_Pragma): Validate Pragma_CUDA_Execute and
- Pragma_CUDA_Global.
- * snames.ads-tmpl: Define Name_CUDA_Execute and Name_CUDA_Global.
-
-2020-07-23 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch13.ads (Same_Representation): Renamed as
- Has_Compatible_Representation because now the order of the arguments
- are taken into account; its formals are also renamed as Target_Type
- and Operand_Type.
- * sem_ch13.adb (Same_Representation): Renamed and moved to place the
- routine in alphabetic order.
- * sem_attr.adb (Prefix_With_Safe_Accessibility_Level): New subprogram.
- (Resolve_Attribute): Check that the prefix of attribute Access
- does not have a value conversion of an array type.
- * sem_res.adb (Resolve_Actuals): Remove restrictive check on view
- conversions which required matching value of Has_Aliased_Components of
- formals and actuals.
- * exp_ch4.adb (Handle_Changed_Representation): Update call to
- Same_Representation.
- (Expand_N_Type_Conversion): Update call to Same_Representation.
- * exp_ch5.adb (Change_Of_Representation): Update call to
- Same_Representation.
- * exp_ch6.adb (Add_Call_By_Copy_Code): Update call to
- Same_Representation.
- (Expand_Actuals): Update call to Same_Representation.
- (Expand_Call_Helper): Update call to Same_Representation.
-
-2020-07-23 Arnaud Charlet <charlet@adacore.com>
-
- * output.ads (Push_Output, Pop_Output): New procedures.
- * output.adb (FD_Array, FD_Stack, FD_Stack_Idx): New type and vars.
- (Push_Output, Pop_Output): New procedures.
-
-2020-07-16 Javier Miranda <miranda@adacore.com>
-
- * exp_ch3.adb (Expand_N_Full_Type_Declaration): Ensure a _master
- declaration on limited types that might have tasks.
- * exp_ch9.adb (Build_Master_Renaming): For private types, if we
- are processing declarations in the private part, ensure that
- master is inserted before its full declaration; otherwise the
- master renaming may be inserted in the public part of the
- package (and hence before the declaration of its _master
- variable).
-
-2020-07-16 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch8.adb (Analyze_Subprogram_Renaming): A renames-as-body
- freezes the expression of any expression function that it
- renames.
-
-2020-07-16 Ed Schonberg <schonberg@adacore.com>
-
- * sem_aggr.adb (Resolve_Container_Aggregate): Add semantic
- checks for indexed aggregates, including component associations
- and iterated component associations.
- * exp_aggr.adb (Expand_Iterated_Component): New subprogram,
- subsidiary of Expand_Container_Aggreggate, used for positional,
- named, and indexed aggregates.
- (Aggregate_Size): New subprogram to precompute the size of an
- indexed aggregate prior to call to allocate it.
- (Expand_Range_Component): New subprogram so generate loop for a
- component association given by a range or a subtype name in an
- indexed aggregate.
-
-2020-07-16 Bob Duff <duff@adacore.com>
-
- * bindo-diagnostics.adb (Output_Invocation_Related_Suggestions):
- Use Cumulative_Restrictions.Set, because Restriction_Active only
- works at compile time.
-
-2020-07-16 Bob Duff <duff@adacore.com>
-
- * gnatbind.adb (Gnatbind): For No_Tasks_Unassigned_To_CPU, check
- that CPU has been set on the main subprogram.
- (Restriction_Could_Be_Set): Don't print
- No_Tasks_Unassigned_To_CPU if it would violate the
- above-mentioned rule. Up to now, all restrictions were checked
- by the compiler, with the binder just checking for consistency.
- But the compiler can't know which subprogram is the main, so
- it's impossible to check this one at compile time.
- * restrict.ads, restrict.adb: Misc refactoring. Change Warning
- to Warn, for consistency, since most already use Warn.
- (Set_Restriction): New convenience routine.
- * sem_ch13.adb (Attribute_CPU): Check
- No_Tasks_Unassigned_To_CPU.
- * sem_prag.adb (Pragma_CPU): Check No_Tasks_Unassigned_To_CPU.
- Misc refactoring.
- * tbuild.ads, tbuild.adb (Sel_Comp): New functions for building
- selected components.
-
-2020-07-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * impunit.adb (Non_Imp_File_Names_95): Remove duplicate entry.
-
-2020-07-16 Arnaud Charlet <charlet@adacore.com>
-
- * Makefile.rtl: replace a-numaux__x86.ads by
- a-numaux__libc-x86.ads and a-numaux__x86.adb by
- a-numaux__dummy.adb.
- * libgnat/a-numaux__x86.ads, libgnat/a-numaux__x86.adb: Removed.
- * libgnat/a-numaux__dummy.adb: New.
-
-2020-07-16 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch12.adb (Load_Parent_Of_Generic): If an ancestor is an
- instance whose source appears within a formal package of the
- current unit, there is no body of the ancestor needed to
- complete the current generic compilation.
-
-2020-07-16 Doug Rupp <rupp@adacore.com>
-
- * libgnat/s-thread__ae653.adb (taskVarAdd): Defunct, so remove.
- (Current_ATSD): Make it a TLS variable.
- (OK): Move to package scope.
- (System.Storage_Elements): Import and Use.
-
-2020-07-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch9.adb (Expand_N_Accept_Statement): Set Parent of the
- created block entity to the created block statement.
-
-2020-07-16 Arnaud Charlet <charlet@adacore.com>
-
- * scng.adb (Scan): Detect wide characters not in NFKC.
- * libgnat/a-chahan.adb, libgnat/a-chahan.ads,
- libgnat/a-wichha.adb, libgnat/a-wichha.ads,
- libgnat/a-wichun.adb, libgnat/a-wichun.ads,
- libgnat/a-zchhan.adb, libgnat/a-zchhan.ads,
- libgnat/a-zchuni.adb, libgnat/a-zchuni.ads (Is_NFKC): New.
- * libgnat/s-utf_32.ads, libgnat/s-utf_32.adb (Is_UTF_32_NFKC):
- New.
-
-2020-07-16 Bob Duff <duff@adacore.com>
-
- * libgnat/s-rident.ads (Restriction_Id): Add
- No_Tasks_Unassigned_To_CPU.
-
-2020-07-16 Bob Duff <duff@adacore.com>
-
- * exp_aggr.adb (Max_Aggregate_Size): Use the small size of 64
- when copying is needed (for example, for the initialization of a
- local variable, and for assignment statements). Use the larger
- size when static allocation can be done without copying.
-
-2020-07-16 Bob Duff <duff@adacore.com>
-
- * libgnat/s-rident.ads (No_Dynamic_CPU_Assignment): New
- restriction. Add it to all relevant profiles.
- * sem_ch13.adb (Attribute_CPU): Check No_Dynamic_CPU_Assignment
- restriction.
- (Attribute_CPU, Attribute_Dispatching_Domain,
- Attribute_Interrupt_Priority): Remove error checks -- these are
- checked in the parser.
- * sem_prag.adb (Pragma_CPU): Check No_Dynamic_CPU_Assignment
- restriction. We've got a little violation of DRY here.
- * sem.ads, sem_ch3.ads: Minor comment fix.
-
-2020-07-16 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch4.adb (Try_Container_Indexing): When the prefix type is
- an access type, change it to the designated type, change the
- prefix to an explicit dereference, and emit a ?d? warning for
- the implicit dereference. Include a ??? comment questioning
- whether this is the right context in which to perform the
- implicit dereferencing.
-
-2020-07-16 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch13.adb (Validate_Literal_Aspect): Ensure that the
- parameter is not aliased. Minor reformatting.
- * sem_util.adb (Statically_Names_Object): Update comment.
-
-2020-07-16 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_case.adb (Build_Choice): Set Is_Static_Expression flag.
- (Lit_Of): Update specification to mention Is_Static_Expression
- flag.
- * sem_ch13.adb (Membership_Entry): Check for N_Others_Choice.
-
-2020-07-16 Bob Duff <duff@adacore.com>
-
- * sem_ch6.adb (Null_Exclusions_Match): New function to check
- that the null exclusions match, including in the case addressed
- by this AI.
- (Check_Conformance): Remove calls to Comes_From_Source
- when calling Null_Exclusions_Match. These are not
- needed, as indicated by an ancient "???" comment.
-
-2020-07-16 Justin Squirek <squirek@adacore.com>
-
- * exp_ch4.adb (Expand_N_Type_Conversion): Remove flawed test for
- whether "statically deeper" accessibility rules apply to a given
- target type and instead use the new routine
- Statically_Deeper_Relation_Applies.
- (Statically_Deeper_Relation_Applies): Created to centralize the
- calculation of whether a target type within a conversion must
- have static accessibility checks.
- * sem_ch13.adb (Check_One_Function): Minor comment revision.
-
-2020-07-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * fe.h (Is_OK_Static_Expression): Delete.
- * sem_eval.ads (Is_OK_Static_Expression): Remove WARNING note.
-
-2020-07-16 Justin Squirek <squirek@adacore.com>
-
- * einfo.adb, einfo.ads (Is_Named_Access_Type): Created for
- readability.
- * sem_ch6.adb (Check_Return_Construct_Accessibility): Add
- special cases for formals.
- * sem_util.adb (Object_Access_Level): Add handling of access
- attributes and named access types in the general case.
-
-2020-07-16 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_case.adb (Build_Choice): Simplify.
-
-2020-07-16 Arnaud Charlet <charlet@adacore.com>
-
- * frontend.adb: Disable Initialize_Scalars on runtime files.
-
-2020-07-16 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_ch3.adb (Analyze_Object_Declaration): Add
- Comes_From_Source call.
-
-2020-07-16 Javier Miranda <miranda@adacore.com>
-
- * exp_attr.adb (Expand_Access_To_Protected_Op): Initialize
- variable Sub to Empty to avoid false positive reported by
- Codepeer.
-
-2020-07-16 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch8.adb (Note_Redundant_Use): Add missing warning tag.
- Do not check for redundant use clauses in predefined units to avoid
- misleading warnings that may occur as part of a rtsfind load.
-
-2020-07-16 Javier Miranda <miranda@adacore.com>
-
- * exp_attr.adb (Has_By_Protected_Procedure_Prefixed_View): New
- subprogram.
- (Expand_Access_To_Protected_Op): Adding support for prefixed
- class-wide view with By_Protected_Procedure convention.
- * sem_attr.adb (Get_Convention): New subprogram.
- (Get_Kind): Adapted to use Get_Convention.
- * sem_ch4.adb (Try_By_Protected_Procedure_Prefixed_View): New
- subprogram.
- (Analyze_Selected_Component): Invoke
- Try_By_Protected_Procedure_Prefixed_View.
- * sem_util.ads (Is_By_Protected_Procedure): New subprogram.
- * sem_util.adb (Is_By_Protected_Procedure): New subprogram.
-
-2020-07-16 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-ststop.ads: Fix typo.
- * libgnat/s-ststop.adb (Read, Write): Fix block number
- computation to avoid overflows in case of large strings.
-
-2020-07-16 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-genbig.adb ("**"): Remove capacity limit check.
- Improve code by using an extended return.
- (Normalize): Perform capacity limit check here instead which is
- the centralized place where (potentially large) big integers are
- allocated.
-
-2020-07-16 Gary Dismukes <dismukes@adacore.com>
-
- * exp_ch4.adb (Expand_N_Type_Conversion): Handle the case of
- applying an invariant check for a conversion to a class-wide
- type whose root type has a type invariant, when the conversion
- appears within the immediate scope of the type and the
- expression is of a specific tagged type.
- * sem_ch3.adb (Is_Private_Primitive): New function to determine
- whether a primitive subprogram is a private operation.
- (Check_Abstract_Overriding): Enforce the restriction imposed by
- AI12-0042 of requiring overriding of an inherited nonabstract
- private operation when the ancestor has a class-wide type
- invariant and the ancestor's private operation is visible.
- (Derive_Subprogram): Set Requires_Overriding on a subprogram
- inherited from a visible private operation of an ancestor to
- which a Type_Invariant'Class expression applies.
-
-2020-07-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_util.adb (Find_Overlaid_Entity): Fix style in comment.
- (Note_Possible_Modification): Simplify repeated calls to Ekind.
-
-2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_aggr.adb (Flatten): Adjust description.
- (Convert_To_Positional): Remove obsolete ??? comment and use
- Compile_Time_Known_Value in the final test.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * par-ch4.adb (P_Iterated_Component_Association): Extended to
- recognzize the similar Iterated_Element_Association. This node
- is only generated when an explicit Key_Expression is given.
- Otherwise the distinction between the two iterated forms is done
- during semantic analysis.
- * sinfo.ads: New node N_Iterated_Element_Association, for
- Ada202x container aggregates. New field Key_Expression.
- * sinfo.adb: Subprograms for new node and newn field.
- * sem_aggr.adb (Resolve_Iterated_Component_Association): Handle
- the case where the Iteration_Scheme is an
- Iterator_Specification.
- * exp_aggr.adb (Wxpand_Iterated_Component): Handle a component
- with an Iterated_Component_Association, generate proper loop
- using given Iterator_Specification.
- * exp_util.adb (Insert_Axtions): Handle new node as other
- aggregate components.
- * sem.adb, sprint.adb: Handle new node.
- * tbuild.adb (Make_Implicit_Loop_Statement): Handle properly a
- loop with an Iterator_ specification.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-stposu.adb (Allocate_Any_Controlled): Fix logic in
- lock/unlock.
-
-2020-07-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_util.adb (Is_Object_Reference): Return True on
- N_Target_Name.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Add proper
- handling of Aspect_Predicate_Failure, consistent with
- Check_Aspect_At_Freeze_Point.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch13.adb (Check_Aspect_Too_Late): Mention -gnat2020 switch
- in error message.
-
-2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (Delayed Freezing and Elaboration): Adjust description.
- * freeze.adb (Freeze_Object_Declaration): Likewise.
- * sem_ch3.adb (Delayed_Aspect_Present): Likewise. Do not return
- true for Alignment.
- * sem_ch13.adb (Analyze_Aspect_Specifications): Do not always delay
- for Alignment. Moreover, for Alignment and various Size aspects,
- do not delay if the expression is an attribute whose prefix is the
- Standard package.
-
-2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch6.adb (Requires_Atomic_Or_Volatile_Copy): Return false
- inside an initialization procedure.
-
-2020-07-15 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_util.adb (Is_Renaming): Add ekind checks.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * doc/gnat_ugn/gnat_utility_programs.rst: Remove doc on obsolete
- tools.
- * gnat_ugn.texi: Regenerate.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * sem_res.adb (Resolve_Type_Conversion): Protect against null
- entity. Add proper tag for -gnatwr warning.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch6.adb (Analyze_Procedure_Call): Detect use of operators
- in a procedure call.
- * sem_util.adb: Minor edit.
-
-2020-07-15 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_Delta_Or_Update): Apply scalar
- range checks against the base type of an index type, not against
- the index type itself.
-
-2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (Delayed Freezing and Elaboration): Minor tweaks.
- Document the discrepancy between the aspect and the non-aspect
- cases for alignment settings in object declarations.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch3.adb (Freeze_Type): Remove warning in expander,
- replaced by a corresponding error in sem_ch13.adb. Replace
- RTE_Available by RTU_Loaded to avoid adding unnecessary
- dependencies.
- * sem_ch13.adb (Associate_Storage_Pool): New procedure.
- (Analyze_Attribute_Definition_Clause
- [Attribute_Simple_Storage_Pool| Attribute_Storage_Pool]): Call
- Associate_Storage_Pool to add proper legality checks on
- subpools.
-
-2020-07-15 Yannick Moy <moy@adacore.com>
-
- * 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-cbprqu.adb, libgnat/a-cbprqu.ads,
- libgnat/a-cbsyqu.adb, libgnat/a-cbsyqu.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-cohama.adb, libgnat/a-cohama.ads,
- libgnat/a-cohase.adb, libgnat/a-cohase.ads,
- libgnat/a-coinve.adb, libgnat/a-coinve.ads,
- libgnat/a-comutr.adb, libgnat/a-comutr.ads,
- libgnat/a-convec.adb, libgnat/a-convec.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: Add SPARK_Mode =>
- Off.
-
-2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch3.adb (Delayed_Aspect_Present): Fix oversight in loop.
- * freeze.adb (Freeze_Object_Declaration): Use Declaration_Node
- instead of Parent for the sake of consistency.
-
-2020-07-15 Javier Miranda <miranda@adacore.com>
-
- * sem_attr.adb (Resolve_Attribute): Resolve overloaded
- N_Selected_Component prefix of 'Access. Required to handle
- overloaded prefixed view of protected subprograms.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * doc/gnat_ugn/about_this_guide.rst: Remove old section and
- update for Ada 202x.
- * doc/gnat_ugn/getting_started_with_gnat.rst: Add a system
- requirements section. Remove obsolete section and minimal
- rewording on the getting started section.
- * gnat_ugn.texi: Regenerate.
-
-2020-07-15 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch5.adb (Expand_Assign_Array): Use short-circuit operator
- (style).
- * sem_res.adb (Resolve_Indexed_Component): Fix style in comment.
- * sem_util.adb (Is_Effectively_Volatile_Object): Handle slices
- just like indexed components; handle qualified expressions and
- type conversions lie in Is_OK_Volatile_Context.
- (Is_OK_Volatile_Context): Handle qualified expressions just like
- type conversions.
-
-2020-07-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Atomic_Components): Simplify with Ekind_In.
- (Complex_Representation): Fix type of E_Id, which just like when
- for pragma Atomic_Components will hold an N_Identifier node, not
- an entity.
- * sem_util.adb (Is_Effectively_Volatile): Refactor to avoid
- unnecessary computation.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * inline.adb, inline.ads
- (Inline_Static_Expression_Function_Call): Renamed
- Inline_Static_Function_Call.
- * sem_ch13.adb (Analyze_Aspect_Static): Allow static intrinsic
- imported functions under -gnatX.
- * sem_util.ads, sem_util.adb (Is_Static_Expression_Function):
- Renamed Is_Static_Function.
- (Is_Static_Expression_Function_Call): Renamed
- Is_Static_Function_Call.
- * sem_ch6.adb, sem_elab.adb, sem_res.adb: Update calls to
- Is_Static_Function*.
- * sem_eval.adb (Fold_Dummy, Eval_Intrinsic_Call, Fold_Shift):
- New.
- (Eval_Call): Add support for intrinsic calls, code refactoring.
- (Eval_Entity_Name): Code refactoring.
- (Eval_Logical_Op): Update comment.
- (Eval_Shift): Call Fold_Shift. Update comments.
- * par-prag.adb (Par [Pragma_Extensions_Allowed]): Set
- Ada_Version to Ada_Version_Type'Last to handle
- Extensions_Allowed (On) consistently.
- * opt.ads (Extensions_Allowed): Update documentation.
- * sem_attr.adb: Update comment.
- * doc/gnat_rm/implementation_defined_pragmas.rst: Update
- documentation of Extensions_Allowed.
- * gnat_rm.texi: Regenerate.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * sem_aggr.adb (Resolve_Iterated_Component_Association): Ensure
- Typ is never accessed uninitialized.
-
-2020-07-15 Piotr Trojanek <trojanek@adacore.com>
-
- * doc/gnat_rm/representation_clauses_and_pragmas.rst: Fix typo.
- * gnat_rm.texi: Regenerate.
- * libgnat/s-secsta.ads (Memory_Alignment): Likewise.
-
-2020-07-15 Gary Dismukes <dismukes@adacore.com>
-
- * exp_ch6.adb: Add a comma and fix a typo (machinary =>
- machinery) in comment.
- * exp_aggr.adb: Reformat, fix capitalization, and add a couple
- of commas in a comment. Adjust columns in several code
- fragments.
- * sem_aggr.adb: Reformat and add a comma in a comment.
-
-2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch9.adb (Expand_N_Timed_Entry_Call): Use the Sloc of
- the delay statement in the expansion.
-
-2020-07-15 Ed Schonberg <schonberg@adacore.com>
-
- * sem_aggr.adb (Resolve_Iterated_Component_Association): New
- procedure, internal to Resolve_Container_Aggregate, to complete
- semantic analysis of Iterated_Component_Associations.
- * exp_aggr.adb (Expand_Iterated_Component): New procedure,
- internal to Expand_Container_Aggregate, to expand the construct
- into an implicit loop that performs individual insertions into
- the target aggregate.
-
-2020-07-15 Justin Squirek <squirek@adacore.com>
-
- * exp_ch6.adb (Make_Build_In_Place_Call_Allocator): Normalize
- the associated node for internally generated objects to be like
- their SOAAT counter-parts.
-
-2020-07-15 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/g-socket.adb (Wait_On_Socket): Fix potentially
- uninitialized variable.
-
-2020-07-10 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch8.adb (Find_Direct_Name): Fix code to match the comment.
-
-2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Address>:
- Issue an unconditional warning for an overlay that changes the
- scalar storage order.
-
-2020-07-10 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch8.adb (Is_Actual_Parameter): Fix processing when parent
- is a procedure call statement; extend comment.
-
-2020-07-10 Bob Duff <duff@adacore.com>
-
- * sem_res.adb (Resolve_Expression_With_Actions): Check the rules
- of AI12-0368, and mark the declare expression as static or known
- at compile time as appropriate.
- * sem_ch4.adb: Minor reformatting.
- * libgnat/a-stoufo.ads, libgnat/a-stoufo.adb: Allow up to 9
- replacement parameters. I'm planning to use this in the test
- case for this ticket.
-
-2020-07-10 Ed Schonberg <schonberg@adacore.com>
-
- * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Create a
- proper signature when the access type denotes a parameterless
- subprogram.
- * exp_ch6.adb (Expand_Call): Handle properly a parameterless
- indirect call when the corresponding access type has contracts.
-
-2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_aggr.adb
- (Convert_To_Positional): Add Dims local variable
- and pass it in calls to Is_Flat and Flatten.
- (Check_Static_Components): Pass Dims in call to
- Is_Static_Element.
- (Nonflattenable_Next_Aggr): New predicate.
- (Flatten): Add Dims parameter and Expr local variable. Call
- Nonflattenable_Next_Aggr in a couple of places. In the case
- when an Others choice is present, check that the element is
- either static or a nested aggregate that can be flattened,
- before disregarding the replication limit for elaboration
- purposes. Check that a nested array is flattenable in the case
- of a multidimensional array in any position. Remove redundant
- check in the Others case and pass Dims in call to
- Is_Static_Element. Use Expr variable.
- (Is_Flat): Change type of Dims parameter from Int to Nat.
- (Is_Static_Element): Add Dims parameter. Replace tests on
- literals with call to Compile_Time_Known_Value. If everything
- else failed and the dimension is 1, preanalyze the expression
- before calling again Compile_Time_Known_Value on it. Return
- true for null.
- (Late_Expansion): Do not expand further if the assignment to the
- target can be done directly by the back end.
-
-2020-07-10 Arnaud Charlet <charlet@adacore.com>
-
- * osint-c.adb (Set_File_Name): Preserve casing of file.
- * osint.adb (File_Names_Equal): New.
- (Executable_Name): Use File_Equal instead of
- Canonical_Case_File_Name.
-
-2020-07-10 Pascal Obry <obry@adacore.com>
-
- * libgnat/g-socket.adb (Wait_On_Socket): Fix memory leaks and
- file descriptor leaks. A memory leak was created each time the
- routine was called without a selector (Selector = Null). Also,
- in case of exception in the routine a memory leak and descriptor
- leak was created as the created file selector was not closed.
-
-2020-07-10 Pascal Obry <obry@adacore.com>
-
- * libgnat/g-socket.adb: Minor style fixes.
-
-2020-07-10 Javier Miranda <miranda@adacore.com>
-
- * sem_util.adb
- (Immediate_Context_Implies_Is_Potentially_Unevaluated): New
- subprogram.
- (Is_Potentially_Unevaluated): Do not stop climbing the tree on
- the first candidate subexpression; required to handle nested
- expressions.
-
-2020-07-10 Gary Dismukes <dismukes@adacore.com>
-
- * exp_aggr.adb, exp_spark.adb, sem_ch13.ads, sem_ch13.adb,
- snames.ads-tmpl: Minor reformatting and typo fixes.
-
-2020-07-10 Yannick Moy <moy@adacore.com>
-
- * sem_util.adb (Has_Enabled_Property): Add handling of
- non-variable objects.
-
-2020-07-10 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Check_Completion): Refactor chained
- if-then-elsif-... statement to be more like a case
- statement (note: we can't simply use case statement because of
- Is_Intrinsic_Subprogram in the first condition).
-
-2020-07-10 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.ads (E_Protected_Object): Enumeration literal removed.
- * lib-xref.ads (Xref_Entity_Letters): Remove reference to
- removed literal.
- * sem_ch3.adb (Check_Completion): Likewise.
- * sem_util.adb (Has_Enabled_Property): Likewise.
-
-2020-07-10 Arnaud Charlet <charlet@adacore.com>
-
- * exp_aggr.adb (Max_Aggregate_Size): Use small limit for
- aggregate inside subprograms.
- * sprint.adb (Sprint_Node_Actual [N_Object_Declaration]): Do not
- print the initialization expression if the No_Initialization
- flag is set.
- * sem_util.ads, sem_util.adb (Predicate_Enabled): New.
- * exp_ch4.adb (Expand_N_Type_Conversion): Code cleanup and apply
- predicate check consistently.
- * exp_ch6.adb (Expand_Actuals.By_Ref_Predicate_Check): Ditto.
- * sem_ch3.adb (Analyze_Object_Declaration): Ditto.
- * exp_ch3.adb (Build_Assignment): Revert handling of predicate
- check for allocators with qualified expressions, now handled in
- Freeze_Expression directly.
- * sem_aggr.adb: Fix typos.
- * checks.adb: Code refactoring: use Predicate_Enabled.
- (Apply_Predicate_Check): Code cleanup.
- * freeze.adb (Freeze_Expression): Freeze the subtype mark before
- a qualified expression on an allocator.
- * exp_util.ads, exp_util.adb (Within_Internal_Subprogram):
- Renamed Predicate_Check_In_Scope to clarify usage, refine
- handling of predicates within init procs which should be enabled
- when the node comes from source.
- * sem_ch13.adb (Freeze_Entity_Checks): Update call to
- Predicate_Check_In_Scope.
-
-2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Expand_Array_Comparison): Reformat.
- (Expand_Concatenate): Use standard size values directly and use
- Standard_Long_Long_Unsigned instead of RE_Long_Long_Unsigned.
- (Expand_Modular_Op): Use Standard_Long_Long_Integer in case the
- modulus is larger than Integer.
- (Expand_N_Op_Expon): Use standard size value directly.
- (Narrow_Large_Operation): Use Uint instead of Nat for sizes and
- use a local variable for the size of the type.
- (Get_Size_For_Range): Return Uint instead of Nat.
- (Is_OK_For_Range): Take Uint instead of Nat.
-
-2020-07-10 Javier Miranda <miranda@adacore.com>
-
- * exp_ch6.adb (Make_Build_In_Place_Iface_Call_In_Allocator):
- Build the internal anonymous access type using as a reference
- the designated type imposed by the context (instead of using the
- return type of the called function).
-
-2020-07-10 Yannick Moy <moy@adacore.com>
-
- * sem_res.adb (Resolve_Actuals): Protect call to
- Is_Valued_Procedure.
-
-2020-07-10 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Process_Discriminants): Revert recent change to
- location of Set_Ekind; detect effectively volatile discriminants
- by their type only.
-
-2020-07-10 Joffrey Huguet <huguet@adacore.com>
-
- * libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Add global
- contract (Global => null) to all functions.
-
-2020-07-10 Ed Schonberg <schonberg@adacore.com>
-
- * aspects.ads: Add Aspect_Aggregate.
- * exp_aggr.adb (Expand_Container_Aggregate): Expand positional
- container aggregates into separate initialization and insertion
- operations.
- * sem_aggr.ads (Resolve_Container_Aggregate): New subprogram.
- * sem_aggr.adb (Resolve_Container_Aggregate): Parse aspect
- aggregate, establish element types and key types if present, and
- resolve aggregate components.
- * sem_ch13.ads (Parse_Aspect_Aggregate): Public subprogram used
- in validation, resolution and expansion of container aggregates
- * sem_ch13.adb
- (Parse_Aspect_Aggregate): Retrieve names of primitives specified
- in aspect specification.
- (Validate_Aspect_Aggregate): Check legality of specified
- operations given in aspect specification, before nane
- resolution.
- (Resolve_Aspect_Aggregate): At freeze point resolve operations
- and verify that given operations have the required profile.
- * sem_res.adb (Resolve): Call Resolve_Aspect_Aggregate if aspect
- is present for type.
- * snames.ads-tmpl: Add names used in aspect Aggregate: Empty,
- Add_Named, Add_Unnamed, New_Indexed, Assign_Indexed.
-
-2020-07-10 Arnaud Charlet <charlet@adacore.com>
-
- * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-shabig.o.
- * libgnat/s-shabig.ads: New file to share definitions.
- * libgnat/s-genbig.ads, libgnat/s-genbig.adb: Reorganized to
- make it more generic and flexible in terms of memory allocation
- and data structure returned.
- (To_String): Moved to System.Generic_Bignums to allow sharing
- this code.
- (Big_And, Big_Or, Big_Shift_Left, Big_Shift_Right): New.
- * libgnat/s-bignum.adb, libgnat/s-bignum.ads: Adapt to new
- System.Generic_Bignums spec.
- * libgnat/a-nbnbin.adb: Likewise.
- (To_String): Moved to System.Generic_Bignums to allow sharing
- this code.
- * libgnat/a-nbnbre.adb (Normalize): Fix handling of Num = 0
- leading to an exception.
-
-2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * freeze.adb (Freeze_Expr_Types): Replace call to Find_Aspect
- with call to Find_Value_Of_Aspect and adjust accordingly.
-
-2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.adb (Write_Field24_Name): Handle E_Loop_Parameter.
- * freeze.adb (Freeze_Expr_Types): Freeze the iterator type used as
- Default_Iterator of the name of an N_Iterator_Specification node.
-
-2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.adb (Determine_Range): Deal with Min and Max attributes.
- * exp_ch6.adb (Expand_Call_Helper): When generating code to pass
- the accessibility level to the caller in the case of an actual
- which is an if-expression, also remove the nodes created after
- the declaration of the dummy temporary.
- * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Use Natural as
- the type of the minimum accessibility level object.
-
-2020-07-10 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Process_Discriminants): Set Ekind of the
- processed discriminant entity before passing to
- Is_Effectively_Volatile, which was crashing on a failed
- assertion.
- * sem_prag.adb (Analyze_External_Property_In_Decl_Part): Prevent
- call to No_Caching_Enabled with entities other than variables,
- which was crashing on a failed assertion.
- (Analyze_Pragma): Style cleanups.
- * sem_util.adb (Is_Effectively_Volatile): Enforce comment with
- an assertion; prevent call to No_Caching_Enabled with entities
- other than variables.
- (Is_Effectively_Volatile_Object): Only call
- Is_Effectively_Volatile on objects, not on types.
- (No_Caching_Enabled): Enforce comment with an assertion.
-
-2020-07-10 Yannick Moy <moy@adacore.com>
-
- * debug.adb: Update comments to free usage of -gnatdF.
-
-2020-07-10 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_Delta_Or_Update): Refactored from
- Expand_SPARK_N_Attribute_Reference; rewrite into N_Aggregate or
- N_Delta_Aggregate depending on what is being rewritten.
- (Expand_SPARK_N_Delta_Aggregate): New routine to expand
- delta_aggregate.
- (Expand_SPARK_N_Attribute_Reference): Call the refactored
- routine.
-
-2020-07-10 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Fix
- expansion of attribute Update.
-
-2020-07-10 Arnaud Charlet <charlet@adacore.com>
-
- * sem.adb (Walk_Library_Items): Fix handling of Ghost units.
-
-2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * tracebak.c [generic implementation]: Add pragma GCC diagnostic
- to disable warning about __builtin_frame_address.
-
-2020-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * socket.c [_WIN32] (__gnat_minus_500ms): Parentheses around &&
- operations. Remove notes about TN in comment.
-
-2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * adaint.h (__gnat_expect_portable_execvp): Fix prototype.
- (__gnat_expect_poll): Likewise.
- * expect.c [_WIN32]: Include adaint.h file.
- (__gnat_waitpid): Remove useless variable.
- (__gnat_expect_portable_execvp): Add ATTRIBUTE_UNUSED on parameter.
- * raise-gcc.c [SEH] (__gnat_personality_v0): Add ATTRIBUTE_UNUSED.
- * socket.c [_WIN32] (__gnat_getservbyport): Add ATTRIBUTE_UNUSED on
- a couple of parameters.
- (__gnat_gethostbyname): Likewise.
- (__gnat_gethostbyaddr): Likewise.
- (__gnat_getservbyname): Likewise.
- (__gnat_last_socket_in_set): Use variables local to loops.
- (__gnat_socket_ioctl): Cast 3rd parameter to proper type if _WIN32.
- (__gnat_inet_pton): Cast 2nd parameter to proper type if _WIN32.
- * sysdep.c (__gnat_localtime_tzoff): Remove superfluous test.
- * terminals.c [_WIN32]: Include io.h file.
- (is_gui_app): Remove useless variables and fix unsigned comparison.
- (nt_spawnve): Add ATTRIBUTE_UNUSED on first parameter. Initialize a
- local variable and remove others that are useless. Add missing cast
- (__gnat_setup_child_communication): Remove useless variable and call
- Use proper formatting string in call to sprintf.
- (__gnat_setup_parent_communication): Cast to proper type.
- (find_child_console): Fix prototype and remove useless variable.
- (find_process_handle): Likewise.
- (_gnat_interrupt_process): Move to after __gnat_interrupt_pid.
- (__gnat_reset_tty): Add ATTRIBUTE_UNUSED on parameter, remove return
- (__gnat_setup_winsize): Add ATTRIBUTE_UNUSED on all parameters.
-
-2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Expand_N_Allocator): In the subtype mark case, do
- not apply constraint checks if the No_Initialization flag is set.
-
-2020-07-08 Javier Miranda <miranda@adacore.com>
-
- * exp_ch9.adb
- (Build_Class_Wide_Master): Insert the declaration of _Master
- before its use; required to avoid assertion failure in the
- backend.
-
-2020-07-08 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/i-cexten.ads (long_long, unsigned_long_long): Now
- subtypes of Interfaces.C types.
- * libgnat/a-calcon.ads, libgnat/a-calcon.adb
- (To_Unix_Nano_Time): Use Interfaces.C.long_long instead of
- Interfaces.C.Extensions.long_long.
-
-2020-07-08 Vasiliy Fofanov <fofanov@adacore.com>
-
- * debug.adb: Document new switch.
- * exp_ch6.adb (Warn_BIP): New function that warns if the switch
- is on. Call it from Make_Build_In_Place_* functions. Warn_BIP
- is not needed in Make_Build_In_Place_Iface_*, because those call
- Make_Build_In_Place_Call_In_Object_Declaration or similar.
-
-2020-07-08 Piotr Trojanek <trojanek@adacore.com>
-
- * erroutc.adb (Matches): Fix comments.
-
-2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * freeze.adb (Has_Decl_In_List): New predicate to check that an
- entity is declared in a list of nodes.
- (Freeze_Expression): Use it to deal with Expression_With_Actions,
- short-circuit expression, if- and case-expression and ensure that
- the freeze node is put onto their Actions list if the entity is
- declared locally.
-
-2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * freeze.adb (In_Expanded_Body): Return true for the body of a
- generated predicate function.
-
-2020-07-08 Gary Dismukes <dismukes@adacore.com>
-
- * sem_attr.adb: Remove hyphens in comments, plus minor code
- reformatting.
- * sem_ch13.adb: Fix typo (that => than).
- * sem_util.adb: Add hyphen in comment ("class-wide").
-
-2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * freeze.adb (Freeze_Array_Type): Add comment on implementation
- choice for byte-packed array types.
-
-2020-07-08 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute): Correct prefix of 'Result
- this prefix is a generic function but the enclosing aspect or
- pragma is attached to its instance.
- * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Analyze
- generic subprogram formal parameters (including the implicit
- result of a generic function) and only then analyse its aspects,
- because with Relaxed_Initialization the aspect expression might
- refer to those formal parameters.
- * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Accept
- aspect on generic subprograms; install formal parameters of a
- generic subprogram but not formal parameters of the generic unit
- itself (the previous code was inspired by aspects Post and
- Depends, where both kinds of formals are allowed).
- * sem_util.ads (Enter_Name): Fix name of a subprogram referenced
- in comment.
-
-2020-07-08 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Call
- Analyze_Aspect_Specifications after setting Ekind of the
- analyzed entity.
- * sem_ch13.adb (Analyze_Aspect_Yield): Remove minimal decoration
- of generic subprograms.
-
-2020-07-08 Arnaud Charlet <charlet@adacore.com>
-
- * sem_prag.adb (Process_Inline): Check for duplicate
- pragma+aspect Inline. Minor code cleanup.
- (Check_Duplicate_Pragma): Add warning for duplicate
- pragma [No_]Inline under -gnatwr.
- * sinfo.ads, sinfo.adb (Next_Rep_Item): Allow N_Null_Statement
- which can appear when a pragma is rewritten.
- * sem_util.ads, sem_util.adb, bindo-writers.adb: Fix bad
- copy/paste now flagged.
- * libgnat/s-mmap.ads: Remove redundant pragma Inline.
-
-2020-07-08 Ed Schonberg <schonberg@adacore.com>
-
- * sem_util.adb (Build_Class_Wide_Clone_Body): Update entities to
- refer to the right spec.
-
-2020-07-08 Bob Duff <duff@adacore.com>
-
- * sem_ch13.adb (Predicate_Failure): Check that the type has
- predicates. Remove the setting of Has_Delayed_Aspects and
- Freeze_Node, because (if the code is legal) it should have
- already been done by the predicate aspect.
-
-2020-07-08 Gary Dismukes <dismukes@adacore.com>
-
- * par-ch4.adb (P_Iterated_Component_Association): Typo
- corrections.
-
-2020-07-08 Ed Schonberg <schonberg@adacore.com>
-
- * par.adb (P_Iterator_Specification): Make public for use in
- other parser subprograms.
- * par-ch4.adb (P_Iterated_Component_Association): In Ada_2020,
- recognize use of Iterator_Specification in an element iterator.
- To simplify disambiguation between the two iterator forms, mark
- the component association as carrying an Iterator_Specification
- only when the element iterator (using "OF") is used.
- * par-ch5.adb (P_Loop_Parameter_Specification): In Ada_2020,
- parse iterator filter when present.
- (P_Iterator_Specification): Ditto. Remove declaration of
- P_Iterator_Specification, now in parent unit.
- * exp_ch5.adb (Expand_N_Loop_Statement): Apply Iterator filter
- when present.
- (Expand_Iterator_Loop_Over_Array): Ditto.
- (Expand_Iterator_Loop_Over_Container): Ditto.
- * sem_aggr.adb (Resolve_Array_Aggregate): Emit error nessage if
- an iterated component association includes a iterator
- specificcation with an element iterator, i.e. one that uses the
- OF keyword.
- * sem_ch5.adb (Analyze_Iterator_Specification): Analyze Iterator
- filter when present.
- (Analyze_Loop_Parameter_Specification): Ditto.
- * sinfo.adb: Suprogram bodies for new syntactic element
- Iterator_Filter.
- * sinfo.ads: Add Iterator_Filter to relevant nodes. Structure
- of Component_Association and Iteroted_Component_Association
- nodes is modified to take into account the possible presence of
- an iterator specification in the latter.
-
-2020-07-08 Yannick Moy <moy@adacore.com>
-
- * sem_util.ads, sem_util.adb (Is_Attribute_Loop_Entry): New
- function for GNATProve.
-
-2020-07-08 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_ch13.adb (Analyze_Record_Representation_Clause,
- Check_Record_Representation_Clause): Add expected and actual
- size to error message.
-
-2020-07-08 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_util.ads, sem_util.adb (Safe_To_Capture_Value): Return
- True for in-parameters.
-
-2020-07-08 Justin Squirek <squirek@adacore.com>
-
- * exp_attr.adb (Expand_Attribute): Set
- Stores_Attribute_Old_Prefix to generated renamings of 'Old
- constants for later use in generating finalization routines.
- * exp_ch7.adb (Build_Finalizer): Minor reformatting. Use "or
- else" operators.
-
-2020-07-08 Gary Dismukes <dismukes@adacore.com>
-
- * exp_ch6.adb (Expand_Simple_Function_Return): Remove ugly code
- that was copying the return expression, resetting Analyzed
- flags, etc. for the return expression of static expression
- functions.
- * inline.adb (Inline_Static_Expression_Function_Call): Set the
- Parent of the copied expression to that of the call. This avoids
- a blowup in Insert_Actions when GNATprove_Mode is set and there
- are nested SEF calls. Add ??? comment.
- * sem_ch6.adb (Analyze_Expression_Function): In the case of a
- static expression function, create a new copy of the expression
- and replace the function's expression with the copy; the
- original expression is used in the expression function's body
- and will be analyzed and rewritten, and we need to save a clean
- copy for later use in processing static calls to the function.
- This allows removing the kludgy code that was in
- Expand_Simple_Function_Return.
- * sem_eval.adb (Eval_Qualified_Expression): Return immediately
- if any errors have been posted on the qualified expression, to
- avoid blowups when GNATprove_Mode is enabled (or with -gnatd.F),
- since illegal static expressions are handled differently in that
- case and attempting to fold such expressions would fail.
-
-2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * repinfo.adb (Compute_Max_Length): Skip hidden discriminants.
- (List_Record_Layout): Likewise.
- (List_Structural_Record_Layout): Use First_Discriminant instead
- of First_Stored_Discriminant and Next_Discriminant instead of
- Next_Stored_Discriminant to walk the list of discriminants.
-
-2020-07-08 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Analyze
- optional boolean expressions.
- * sem_util.ads, sem_util.adb (Has_Relaxed_Initialization): Adapt
- query; update comment.
-
-2020-07-08 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.ads (Current_Value): Fix typo in comment.
- * exp_ch2.adb (Expand_Current_Value): Remove unnecessary "Start
- of processing ..." comment.
- * exp_util.adb (Set_Entity_Current_Value): Fix unbalanced paren
- in comment.
- (Get_Current_Value_Condition): Fix layout in comment.
- * sem_ch5.adb (Analyze_Cond_Then): Replace commented condition
- with pragma Assert.
-
-2020-07-08 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch5.adb (Expand_N_If_Statement): Detect True/False
- prefixed with Standard.
-
-2020-07-08 Bob Duff <duff@adacore.com>
-
- * sem_ch13.adb (Analyze_Aspect_Specifications): Add freeze node
- for the Underlying_Full_View if it exists. The freeze node is
- what triggers the generation of the predicate function.
- * freeze.adb: Minor reformatting.
-
-2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Narrow_Large_Operation): Use the base type instead
- of the first subtype of standard integer types as narrower type.
-
-2020-07-07 Eric Botcazou <ebotcazou@adacore.com>
-
- * freeze.adb (Freeze_Array_Type): Use Ctyp more consistently.
- Move code setting the alignment in the non-packed case to...
- * layout.adb (Layout_Type): ...here.
-
-2020-07-07 Bob Duff <duff@adacore.com>
-
- * treepr.adb (Print_Node): Add code to test Is_Extension.
-
-2020-07-07 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch4.adb (Try_Container_Indexing): Add ??? comment. Protect
- against malformed tree in case of errors.
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.adb, sem_ch10.adb, sem_ch12.adb, sem_ch8.adb: Use
- Is_Generic_Subprogram.
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch8.adb (Analyze_Use_Package): Replace low-level,
- error-prone Ekind_In tests with high-level Is_Generic_Subprogram
- and Is_Subprogram.
-
-2020-07-07 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch6.adb (Check_Formal_Subprogram_Conformance): New
- subprogram to handle checking without systematically emitting an
- error.
- (Check_Conformance): Update call to
- Check_Formal_Subprogram_Conformance and fix handling of Conforms
- and Errmsg parameters.
-
-2020-07-07 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch4.adb (Tagged_Membership): Generate a call to
- CW_Membership instead of using Build_CW_Membership.
- (Expand_N_In): Remove wrong handling of null access types and
- corresponding comment.
- * exp_intr.adb (Expand_Dispatching_Constructor_Call): Generate a
- call to CW_Membership instead of using Build_CW_Membership.
- * rtsfind.ads: Add CW_Membership.
- * exp_atag.ads, exp_atag.adb (Build_CW_Membership): Removed.
- * einfo.ads: Fix typo.
- * libgnat/a-tags.ads, libgnat/a-tags.adb (CW_Membership): Moved
- back to spec.
-
-2020-07-07 Ed Schonberg <schonberg@adacore.com>
-
- * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Create
- proper subprogram specification for body, using names in the
- subprogram declaration but distinct entities.
- * exp_ch6.adb (Expand_Call): If this is an indirect call
- involving a subprogram wrapper, insert pointer parameter in list
- of actuals with a parameter association, not as a positional
- parameter.
-
-2020-07-07 Justin Squirek <squirek@adacore.com>
-
- * exp_ch6.adb (Expand_Branch): Verify the original node is a
- conditional expression before recursing further.
- (Insert_Level_Assign): Transform assertion into an explicit
- raise.
-
-2020-07-07 Steve Baird <baird@adacore.com>
-
- * sem_attr.adb (Eval_Attribute): Generalize static evaluation of
- Size attribute references to also handle
- Max_Size_In_Storage_Elements references.
-
-2020-07-07 Javier Miranda <miranda@adacore.com>
-
- * sem_util.adb (Is_Potentially_Unevaluated): Code cleanup.
-
-2020-07-07 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.ads (Expander Routines): Update the description of the
- Do_Range_Check mechanism.
- * checks.adb (Selected_Range_Checks): Fix typo.
- * exp_ch9.adb: Add with and use clause for Checks.
- (Actual_Index_Expression): Generate a range check if requested.
- (Entry_Index_Expression): Likewise.
- * sem_attr.adb (Resolve_Attribute) <Attribute_Count>: Call
- Apply_Scalar_Range_Check instead of Apply_Range_Check.
- * sem_ch9.adb (Analyze_Accept_Statement): Likewise.
- * sem_res.adb (Resolve_Entry): Likewise, after having set the
- actual index type on the prefix of the indexed component.
- (Resolve_Indexed_Component): Remove useless conditional construct.
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * contracts.adb (Analyze_Entry_Or_Subprogram_Contract,
- Process_Preconditions_For): Freeze expression that has been
- relocated to pragma Precondition, not the expression which is
- still in the aspect.
-
-2020-07-07 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch6.adb (Check_Conformance): Remove unnecessary (and
- wrong) code.
- * sem_ch8.adb (Check_Null_Exclusion): Post error at proper
- location. Introduce new helper Null_Exclusion_Mismatch and fix
- implementation wrt formal subprograms used in generic bodies.
- (Analyze_Subprogram_Renaming): Fix missing setting of
- Error_Msg_Sloc.
- (Analyze_Object_Renaming): Replace "in Anonymous_Access_Kind" by
- Is_Anonymous_Access_Type.
- * sem_util.adb (Has_Null_Exclusion): Fix handling of
- N_Parameter_Specification.
- * sem_ch12.adb (Instantiate_Object): Replace "in
- Anonymous_Access_Kind" by Is_Anonymous_Access_Type.
-
-2020-07-07 Ed Schonberg <schonberg@adacore.com>
-
- * freeze.adb (Freeze_Expr_Types): Freeze the designated type of
- the explicit dereference.
-
-2020-07-07 Javier Miranda <miranda@adacore.com>
-
- * sem_util.adb (Is_Potentially_Unevaluated): Protect reading
- attribute Etype.
-
-2020-07-07 Bob Duff <duff@adacore.com>
-
- * libgnat/g-catiio.adb (Value, Parse_ISO_8601): Unsuppress
- checks, and don't rely on 'Valid.
-
-2020-07-07 Arnaud Charlet <charlet@adacore.com>
-
- * Makefile.rtl: Remove dead code.
- * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
- Document gnatbind -xdr switch.
- * gnat_ugn.texi: Regenerate.
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * doc/gnat_ugn/building_executable_programs_with_gnat.rst
- (Validity Checking): Add "p" to the list of switches enabled by
- -gnatVa.
- * gnat_ugn.texi: Regenerate.
-
-2020-07-07 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Add call
- to Check_Restriction_No_Specification_Of_Aspect.
- * sem_prag.adb (Analyze_Pragma): Likewise.
- * restrict.ads (Check_Restriction_No_Specification_Of_Aspect):
- Mention possible new node kinds in documentation.
- * restrict.adb (Check_Restriction_No_Specification_Of_Aspect):
- Retrieve aspect id from different fields if given node is an
- N_Pragma or an N_Attribute_Definition_Clause.
-
-2020-07-07 Gary Dismukes <dismukes@adacore.com>
-
- * contracts.adb (Add_Invariant_And_Predicate_Checks): Relax the
- condition for doing invariant checks so that in-mode parameters
- of procedures are also checked (required by AI05-0289, and
- restricted to procedures by AI12-0044). This is done in a
- procedure's nested postconditions procedure.
- * exp_ch6.adb (Expand_Actuals): Also perform postcall invariant
- checks for in parameters of procedures (but not functions).
- Moved invariant-checking code to end of Expand_Actuals
- (including the nested function Is_Public_Subp).
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Resolve_Delta_Array_Aggregate): Make Index_Type
- a constant.
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_aggr.adb (Expand_N_Delta_Aggregate): Use type of the delta
- base expression for the anonymous object of the delta aggregate.
-
-2020-07-07 Javier Miranda <miranda@adacore.com>
-
- * sem_util.ads (Interval_Lists): Reordering routine.
- * sem_util.adb (Interval_Lists): Reordering routines to keep
- them alphabetically ordered.
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_attr.adb (Resolve_Attribute): Do not call
- Check_Non_Static_Context.
-
-2020-07-07 Arnaud Charlet <charlet@adacore.com>
-
- * sem_elab.adb (Is_Guaranteed_ABE): Take into account null
- procedures.
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch5.adb (Analyze_Assignment): Reuse Is_Assignable.
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Add scalar
- range checks for 'Update on arrays just like for 'Update on
- records.
- * sem_attr.adb (Analyze_Array_Component_Update): Do not set
- range checks for single-dimensional arrays.
- (Resolve_Attribute): Do not set range checks for both single-
- and multi- dimensional arrays.
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * sem.ads (Sem): Fix description.
-
-2020-07-07 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (Analyze_Relaxed_Parameter): Fix for protected
- entries.
-
-2020-07-06 Piotr Trojanek <trojanek@adacore.com>
-
- * checks.adb (Apply_Scalar_Range_Check): Use Is_RTE.
-
-2020-07-06 Bob Duff <duff@adacore.com>
-
- * libgnat/g-catiio.ads: Document newly supported format. Add
- ISO_Time constant, for convenience.
- * libgnat/g-catiio.adb (Image_Helper): New helper function to do
- all the formatting work, called by the two exported Image
- functions. Add support for "%:::z" here. Add a Time_Zone
- parameter used by the "%:::z" processing. This parameter is not
- used for the actual time zone computations; local time is always
- used for that, for ease of implementation reasons. It would
- make sense to use Append throughout this function, but that's a
- cleanup for another day.
- (Image): Modify these to pass the local time zone, or the
- specified time zone, as appropriate.
-
-2020-07-06 Bob Duff <duff@adacore.com>
-
- * libgnat/g-catiio.ads: Change the regular expression that
- documents the allowed format to match what ISO-8601 allows.
- * libgnat/g-catiio.adb (Scan_Subsecond): Rewrite so it doesn't
- assume the subsecond comes last.
- (Parse_ISO_8601): Parse an optional subsecond, followed by an
- optional time zone, rather than making these alternatives to
- each other.
-
-2020-07-06 Bob Duff <duff@adacore.com>
-
- * libgnat/g-catiio.adb (Parse_ISO_8601): Minor cleanups:
- Give some objects clearer names.
- Make some objects more local to where they are used.
- Remove some validity checks that can't fail, because some of
- the variables tested have been moved so they're not visible here.
- Anyway, Wrong_Syntax is about errors in the input, not data
- validity.
- Use Time_Zone_Seen instead of Local_Sign = ' ' to determine
- that a time zone indication was seen.
- We don't need to distinguish two different kinds of
- syntax error (End_Of_Source_Reached and Wrong_Syntax),
- so use Wrong_Syntax always.
- Remove comment, "Certain scanning scenarios may handle
- this exception on their own."; there are no such scenarios.
-
-2020-07-06 Bob Duff <duff@adacore.com>
-
- * libgnat/g-catiio.ads, libgnat/g-catiio.adb (Image): New
- function. It might seem like the local-time Image should be
- implemented in terms of the Time_Zone Image, but that would be
- far harder to implement, so we do it the other way around.
-
-2020-07-06 Thomas Quinot <quinot@adacore.com>
-
- * libgnat/g-sechas.ads, libgnat/g-sechas.adb: Refactor to use
- Stream_Element_Array as the internal buffer type.
- * libgnat/g-shshco.adb: Adjust to use Stream_Element_Offset
- instead of Integer as the index in the internal state buffer.
-
-2020-07-06 Gary Dismukes <dismukes@adacore.com>
-
- * doc/gnat_rm/implementation_defined_pragmas.rst, errout.ads,
- erroutc.adb, exp_ch4.adb, exp_ch6.adb, freeze.adb: Comment
- rewording/reformatting/typo fixes. Replace "ie." with "that is"
- in comment; "can not" -> "cannot", and remove an extraneous
- underscore in another comment.
- * gnat_rm.texi, gnat_ugn.texi: Regenerate.
-
-2020-07-06 Javier Miranda <miranda@adacore.com>
-
- * sem_util.ads (Interval_Lists.Aggregate_Intervals): New
- subprogram.
- * sem_util.adb (Has_Null_Others_Choice,
- Non_Static_Or_Null_Range, Interval_Lists.Aggregate_Intervals):
- New subprograms.
- (Is_Potentially_Unevaluated): Adding support to detect
- potentially unevaluated components of array aggregates.
-
-2020-07-06 Bob Duff <duff@adacore.com>
-
- * libgnat/g-catiio.adb (Parse_ISO_8601): New name for
- Parse_ISO_8861_UTC. 8601 is the correct ISO standard number.
- Also, "UTC" was confusing. All Time values are represented in
- UTC, but the ISO 8601 date strings include a time zone.
- If a time zone was specified, call
- Ada.Calendar.Formatting.Time_Of instead of
- GNAT.Calendar.Time_Of, because the latter adjusts to the current
- time zone, whereas we want to use (just) the time zone specified
- in the ISO string. This allows us to pass Time_Zone instead to
- Time_Of, instead of adjusting by Local_Disp by hand.
- If no time zone was specified, call GNAT.Calendar.Time_Of as
- before.
- Use expanded names to clarify which Time_Of is being called.
- Remove redundant comment, and move nonredundant part of the
- commment to the spec.
- (Value): Minor: use "not in" instead of "or else".
- * libgnat/g-catiio.ads: Comment moved here. Correct the ISO
- standard number.
- * libgnat/g-calend.adb: Add ??? comments.
- * libgnat/a-calend.ads, libgnat/a-calend.adb: Update obsolete
- comments regarding the representation of type Time. Move the
- information about the epoch (year 2150) to the spec, and avoid
- uttering "2150" more than once.
- * libgnat/a-catizo.ads (Time_Offset): Add comment.
-
-2020-07-06 Ed Schonberg <schonberg@adacore.com>
-
- * exp_ch5.adb (Find_Component): If the target type is a derived
- record type and the required component is a discriminant that is
- renamed in the derived type declaration, use the name of the
- original discriminant to locate the intended target component.
-
-2020-07-06 Justin Squirek <squirek@adacore.com>
-
- * sem_ch12.adb (Analyze_Associations): Add check for errors on
- the generic formal before continuing with instantiation.
-
-2020-07-06 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nbnbin.ads, libgnat/a-nbnbin.adb,
- libgnat/a-nbnbin__gmp.adb: Use more Valid_Big_Integer.
-
-2020-07-06 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_util.ads (Get_Index_Subtype): Fix duplicate "Last".
-
-2020-07-06 Ed Schonberg <schonberg@adacore.com>
-
- * sinfo.ads: Indicate that Field 1 of an N_Delta_Aggregate is
- unused. Previously it was erroneously labelled as holding an
- Expressions list, in analogy with other aggregate constructs,
- but there are no Expressions attached to this node syntactically
- or semantically.
-
-2020-07-06 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_attr.adb (Eval_Attribute): Check if constant has an
- initialization expression.
-
-2020-07-06 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Apply
- scalar range checks.
- * sem_attr.adb (Resolve_Attribute): Do not set scalar range
- checks when resolving attribute Update.
-
-2020-07-06 Gary Dismukes <dismukes@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute, Attribute_Constrained): Issue
- a warning if the attribute prefix is a current instance
- reference within an aspect of a type or subtype.
- (Address_Checks): Replace test of Is_Object (Ent) with
- Is_Object_Reference (P) so that testing for current instances
- will be done.
- (Eval_Attribute): Add test for current instance reference, to
- ensure that we still fold array attributes when current
- instances are involved, since value prefixes are allowed for
- array attributes, and will now be excluded by
- Is_Object_Reference.
- * sem_util.ads (Is_Current_Instance_Reference_In_Type_Aspect):
- New exported query function.
- * sem_util.adb (Is_Object_Reference): Return False for the case
- where N is a current instance reference within an
- aspect_specification of a type or subtype (basically if the
- reference occurs within a predicate, invariant, or DIC aspect
- expression).
- (Is_Current_Instance_Reference_In_Type_Aspect): New function
- that tests whether a node is a reference to a current instance
- formal of a predicate, invariant, or
- Default_Initial_Condition (DIC) subprogram.
-
-2020-07-06 Ed Schonberg <schonberg@adacore.com>
-
- * sem_res.adb (Resolve_Declare_Expression): New subprogram, to
- install the scope holding local declarations of the expression,
- before completing its resolution.
- (Resolve): For an Expression_With_Actions that comes from a
- source occurrence of a Declare_Expression, call new subprogram.
-
-2020-07-06 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute): Reuse SPARK_Implicit_Load.
-
-2020-07-06 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Propagate
- exception when switch -gnatdk is used and no previous errors are
- present.
- * sem_eval.adb (Compile_Time_Known_Value, Is_In_Range):
- Likewise.
- * sem_warn.adb (Operand_Has_Warnings_Suppressed): Likewise.
-
-2020-07-06 Richard Kenner <kenner@adacore.com>
-
- * exp_unst.adb (Needs_Fat_Pointer): Don't check for formal.
- (Unnest_Subprogram): Use 'Unchecked_Access instead of 'Access
- when populating activation record.
-
-2020-07-06 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Rename parameter
- from Bit_Packed_Array to Force.
- (Expand_Actuals): Do not apply BIP processing if the subprogram
- is intrinsic. Adjust calls to Add_Simple_Call_By_Copy_Code and
- add one for In parameters whose actual is a CPP constructor call.
-
-2020-07-06 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_attr.adb (Eval_Attribute): Do not apply range checks in
- the case of 'Pos applied to an integer type here.
-
-2020-07-06 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch3.adb (Analyze_Object_Declaration): If the type is an
- Unchecked_Union, and the expression is an aggregate. complete
- the analysis and resolution of the aggregate, and treat like a
- regular object declaration, instead of as a renaming
- declarattion.
-
-2020-07-06 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch9.adb (Is_Potentially_Large_Family): Add documentation.
- (Actual_Index_Expression): Use Entry_Index_Type.
- (Build_Entry_Count_Expression): Likewise.
- (Build_Find_Body_Index): Likewise.
- (Collect_Entry_Families): Likewise. Use directly the bounds of
- the index type to find out whether the family is large.
- (Entry_Index_Expression): Likewise.
-
-2020-07-06 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_res.adb (Resolve_Range): Resolve both low and high bounds
- with the range type.
-
-2020-07-06 Arnaud Charlet <charlet@adacore.com>
-
- * aspects.ads (Is_Representation_Aspect):
- Default_Component_Value is a representation aspect.
- * sem_ch13.adb (Check_Aspect_Too_Late, Rep_Item_Too_Late): Relax
- RM 13.1(10) rule wrt primitive operations for Ada 202x.
-
-2020-07-06 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Move to library
- level and use a new predicate Is_OK_Aggregate to recognize the
- aggregates suitable for direct assignment by the back-end.
- (Convert_Array_Aggr_In_Allocator): If neither in CodePeer mode nor
- generating C code, generate a direct assignment instead of further
- expanding if Aggr_Assignment_OK_For_Backend returns true.
-
-2020-07-06 Gary Dismukes <dismukes@adacore.com>
-
- * sem_aux.adb: Add a with clause for Nlists.
- (Nearest_Ancestor): Test for the case of concurrent
- types (testing for both Is_Concurrent_Type and
- Is_Concurrent_Record_Type), and return the first ancestor in the
- Interfaces list if present (otherwise will return Empty if no
- interfaces).
- * sem_ch13.adb (Build_Predicate_Functions): Add a ??? comment
- about missing handling for adding predicates when they can be
- inherited from multiple progenitors.
-
-2020-07-06 Arnaud Charlet <charlet@adacore.com>
-
- * par-ch6.adb (P_Return_Object_Declaration): Set
- Has_Init_Expression flag.
-
-2020-07-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * debug.adb (d.K): Document new usage.
- * fe.h (Debug_Flag_Dot_KK): Declare.
- * gcc-interface/decl.c (gnat_to_gnu_field): Give an error when the
- component overlaps with the parent subtype, except with -gnatd.K.
-
-2020-06-26 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Expand_Set_Membership): Expand the membership test
- using left associativity instead of right associativity.
-
-2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils2.c (build_binary_op): Remove space.
-
-2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (gnat_to_gnu) <N_Allocator>: Minor tweaks.
- Call Has_Constrained_Partial_View on base type of designated type.
-
-2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils.c (gnat_write_global_declarations): Output
- integral global variables first and the imported functions later.
-
-2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (elaborate_expression_1): When GNAT encodings
- are not used, do not create a variable for debug info purposes if
- the expression is itself a user-declared variable.
-
-2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/ada-tree.h (DECL_RENAMED_OBJECT): Delete.
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Always use
- the stabilized reference directly for renaming and create a variable
- pointing to it separately if requested.
- * gcc-interface/misc.c (gnat_print_decl): Adjust for deletion.
- * gcc-interface/trans.c (Identifier_to_gnu): Likewise.
- (gnat_to_gnu) <N_Object_Renaming_Declaration>:
- Do not deal with side-effects here.
- <N_Exception_Renaming_Declaration>: Likewise.
-
-2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (elaborate_expression): Replace calls to
- Is_OK_Static_Expression with Compile_Time_Known_Value.
-
-2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Set
- debug type to the base type and only if the subtype is artificial.
-
-2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Do
- not test Is_Bit_Packed_Array in the memset path.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (lvalue_required_for_attribute_p): Do not deal
- with 'Pos or 'Val.
- (Attribute_to_gnu): Likewise.
- * gcc-interface/utils.c (create_field_decl): Small formatting fix.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (adjust_for_implicit_deref): Delete.
- (maybe_implicit_deref): Likewise.
- (Attribute_to_gnu): Replace calls to maybe_implicit_deref by calls
- to maybe_padded_object.
- (Call_to_gnu): Likewise.
- (gnat_to_gnu) <N_Indexed_Component>: Likewise.
- <N_Slice>: Likewise.
- <N_Selected_Component>: Likewise.
- <N_Free_Statement>: Remove call to adjust_for_implicit_deref and
- manually make sure that the designated type is complete.
- * gcc-interface/utils2.c (build_simple_component_ref): Add comment.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_param): Tidy up.
- (gnat_to_gnu_subprog_type): For a variadic C function, do not
- build unnamed parameters and do not add final void node.
- * gcc-interface/misc.c: Include snames.h.
- * gcc-interface/trans.c (Attribute_to_gnu): Tidy up.
- (Call_to_gnu): Implement support for unnamed parameters in a
- variadic C function.
- * gcc-interface/utils.c: Include snames.h.
- (copy_type): Tidy up.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch5.adb (Expand_N_Assignment_Statement): Do not apply
- range checks to allocators here.
-
-2020-06-19 Justin Squirek <squirek@adacore.com>
-
- * lib.adb (Check_Same_Extended_Unit): Add check to determine if
- the body for the subunits exist in the same file as their
- specifications.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_aggr.adb (In_Place_Assign_OK): In an allocator context,
- check the bounds of an array aggregate against those of the
- designated type, except if the latter is unconstrained.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch3.adb (Is_Visible_Component): Reason only on the private
- status of the original type in an instance body.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_res.adb (Resolve_Qualified_Expression): Do not override the
- type of the node when it is unconstrained if it is for an allocator.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_res.adb (Resolve_Allocator): Call Resolve_Qualified_Expression
- on the qualified expression, if any, instead of doing an incomplete
- type resolution manually.
- (Resolve_Qualified_Expression): Apply predicate check to operand.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch4.adb (Analyze_Selected_Component): In an instance body,
- also invoke Find_Component_In_Instance on the parent subtype of
- a derived tagged type immediately visible. Remove obsolete case.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Get_Integer_Type): Return the largest supported
- unsigned integer type if need be.
-
-2020-06-19 Justin Squirek <squirek@adacore.com>
-
- * sem_warn.adb (Warn_On_Known_Condition): Add general sanity
- check that asserts the original source node being checked
- contains an entity. If not, it could be the result of special
- case expansion for type conversions.
-
-2020-06-19 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch6.adb (Analyze_Expression_Function): Do not indicate
- that the function has a completion if it appears within a Ghost
- generic package.
-
-2020-06-19 Bob Duff <duff@adacore.com>
-
- * libgnat/a-ststbo.adb (Write): Replace pragma Assert with "if
- ... raise Constraint_Error".
-
-2020-06-19 Justin Squirek <squirek@adacore.com>
-
- * widechar.adb, widechar.ads (Skip_Wide): Catch validity check
- failure when skipping over characters, and update comment to
- reflect Skip_Wide's usage in error printing.
-
-2020-06-19 Javier Miranda <miranda@adacore.com>
-
- * exp_ch3.ads (Ensure_Activation_Chain_And_Master): New
- subprogram.
- * exp_ch3.adb (Ensure_Activation_Chain_And_Master): New
- subprogram that factorizes code.
- (Expand_N_Object_Declaration): Call new subprogram.
- * sem_ch6.adb (Analyze_Function_Return): Returning a
- build-in-place unconstrained array type defer the full analysis
- of the returned object to avoid generating the corresponding
- constrained subtype; otherwise the bounds would be created in
- the stack and a dangling reference would be returned pointing to
- the bounds.
-
-2020-06-19 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
- libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb,
- libgnat/a-nbnbre.ads: Update spec according to AI12-0366.
-
-2020-06-19 Piotr Trojanek <trojanek@adacore.com>
-
- * checks.ads: Remove excessive whitespace in declarations of
- functions for check suppression.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch7.adb (Hide_Public_Entities): Split handling of objects
- and subprograms, and do not reject the latter upfront in nested
- instance specs if there are no referencer subprograms at all.
- (Analyze_Package_Body_Helper): Also call Hide_Public_Entities on
- nested generic instances.
-
-2020-06-19 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute): Reject illegal positional
- component associations; fix syntax in comment about named
- component associations.
-
-2020-06-19 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Resolve_Delta_Record_Aggregate): Modify a nested
- Get_Component_Type routine to return a component and not just
- its type; use this routine to decorate the identifier within the
- delta aggregate.
-
-2020-06-19 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch4.adb (Find_Equality_Types.Check_Access_Attribute): New.
- (Find_Equality_Types): Move universal_access related checks at
- the end of the processing and add call to
- Check_Access_Attribute.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_prag.adb (Process_Convention): Revert previous change.
-
-2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.ads (Apply_Static_Length_Check): Move up.
- (Apply_Range_Check): Add parameter Insert_Node.
- * checks.adb (Apply_Selected_Range_Checks): Merge into...
- (Apply_Range_Check): ...this. Add parameter Insert_Node,
- pass it as Warn_Node to Selected_Range_Checks and use it
- as insertion point for the checks.
- * sem_ch3.adb (Analyze_Subtype_Declaration): Rewrite block
- dealing with the range checks for the subtype indication.
- Use local variable and call Apply_Range_Check in both cases.
-
-2020-06-19 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): Call Ensure_Valid
- on the expression of an object declaration that captures the
- value of 'Old prefix.
-
-2020-06-19 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): Add comment.
- * sem_attr.adb (Analyze_Attribute): Add ??? comment.
- * sem_util.ads (Valid_Scalars): This routine is only used for
- 'Valid_Scalars and not for 'Valid.
-
-2020-06-19 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): Do not call
- Scalar_Part_Present on the array component's type.
- (Build_Array_VS_Func): Remove Comp_Typ parameter, because it can
- be easily computed from the Array_Top parameter *and redundant
- parameters are confusing and error-prone).
-
-2020-06-19 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb (Build_Record_VS_Func): Strip privacy and type
- derivation from the root type when 'Valid_Scalars is applied to
- a class-wide type.
-
-2020-06-19 Piotr Trojanek <trojanek@adacore.com>
-
- * checks.adb (Apply_Parameter_Validity_Checks): Remove testing
- of Check_Validity_Of_Parameters for every formal parameter and
- function result.
-
-2020-06-19 Arnaud Charlet <charlet@adacore.com>
-
- * sem_warn.adb (Warn_On_Overlapping_Actuals): Add missing
- warning tag.
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Get_Size_For_Range): Only make sure to return a
- size lower than that of the original type if possible.
- * libgnat/s-rannum.adb (Random_Discrete): Back out optimization
- added for 32-bit types.
-
-2020-06-18 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch6.ads, sem_ch6.adb (Check_Formal_Conformance): New
- subprogram.
- (Check_Conformance): Move code to Check_Formal_Conformance.
- * sem_ch8.adb (Analyze_Subprogram_Renaming): Check for formal
- conformance when needed.
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Narrow_Large_Operation): New procedure to try
- and narrow large arithmetic and comparison operations.
- (Expand_N_In): Call it.
- (Expand_N_Op_Abs): Likewise.
- (Expand_N_Op_Add): Likewise.
- (Expand_N_Op_Divide): Likewise.
- (Expand_N_Op_Eq): Likewise.
- (Expand_N_Op_Ge): Likewise.
- (Expand_N_Op_Gt): Likewise.
- (Expand_N_Op_Le): Likewise.
- (Expand_N_Op_Lt): Likewise.
- (Expand_N_Op_Minus): Likewise.
- (Expand_N_Op_Mod): Likewise.
- (Expand_N_Op_Multiply): Likewise.
- (Expand_N_Op_Ne): Likewise.
- (Expand_N_Op_Plus): Likewise.
- (Expand_N_Op_Rem): Likewise.
- (Expand_N_Op_Subtract): Likewise.
- (Expand_N_Type_Conversion): Use Convert_To procedure.
- * exp_ch9.adb (Is_Pure_Barrier) <N_Identifier>: Skip all
- numeric types.
- <N_Type_Conversion>: Use explicit criterion.
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Expand_Allocator_Expression): Apply constraint
- and predicate checks for the qualified expression on entry,
- followed by constraint and predicate checks for the allocator
- itself, and return early if this results in a static error.
- (Expand_N_Allocator): Do not do the same here. Instead apply
- constraint and predicate checks for arrays in the subtype
- indication case.
- * exp_ch5.adb (Expand_N_Assignment_Statement): Do not apply
- range checks to allocators here.
-
-2020-06-18 Javier Miranda <miranda@adacore.com>
-
- * exp_ch6.adb (BIP_Suffix_Kind, Is_Build_In_Place_Entity): Move
- declarations...
- * exp_ch6.ads: Here.
- * exp_util.adb (Is_Secondary_Stack_BIP_Func_Call): Do not rely
- on the name of the scope to locate the extra formal BIPalloc
- since they are copied when the pointer type associated with
- dispatching calls is built; rely on routines
- Is_Build_In_Place_Entity and BIP_Suffix_Kind.
- * exp_disp.adb (Expand_Dispatching_Call): Set the scope of the
- first extra formal of the internally built pointer type.
- * sem_ch3.adb (Derive_Subprogram): Do not inherit extra formals
- from a limited interface parent since limitedness is not
- inherited in such case (AI-419) and this affects the extra
- formals.
- * sprint.adb (Write_Itype): Output extra formals of subprogram
- types.
-
-2020-06-18 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * errout.adb (Write_Error_Summary): Display number of warnings
- treated as errors.
- * errutil.ads: Update comment.
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Analyze_Attribute) <Asm_{In,Out}put>: Alphabetize.
- <Component_Size>: Add check for universal integer attribute.
- <Aft>, <Bit_Order>, <Definite>, <Max_Alignment_For_Allocation>,
- <Scalar_Storage_Order>: Raise Program_Error on them.
- * sem_attr.adb (Eval_Attribute) <Component_Size>: Add comment on
- the packed array case.
-
-2020-06-18 Steve Baird <baird@adacore.com>
-
- * sem_util.adb (Object_Access_Level): Treat a 'Old attribute
- reference like an aggregate in determining its static
- accessibility level; after the evaluation of the relevant
- post-condition, the implicitly declared constant associated with
- an Old attribute reference ceases to exist. Similarly for
- Loop_Entry attribute.
- * exp_ch6.adb (Expand_Call_Helper): For an attribute reference
- that is expanded into a reference to an implicitly declared
- constant (e.g., a 'Old or 'Loop_Entry attribute), compute the
- dynamic accessibility level of that constant by looking at the
- declaration of the constant (as opposed to looking at the
- attribute reference).
-
-2020-06-18 Steve Baird <baird@adacore.com>
-
- * exp_ch3.adb (Expand_N_Object_Declaration): Do not generate a
- default initial condition check for the declaration of an
- imported object.
-
-2020-06-18 Arnaud Charlet <charlet@adacore.com>
-
- * Makefile.rtl: Add s-statxd.o.
- * bindgen.adb (Gen_Adainit): Add support for XDR_Stream.
- * bindusg.adb (Display): Add mention of -xdr.
- * gnatbind.adb: Process -xdr switch.
- * init.c (__gl_xdr_stream): New.
- * opt.ads (XDR_Stream): New.
- * libgnat/s-stratt__xdr.adb: Rename to...
- * libgnat/s-statxd.adb: this and adjust.
- * libgnat/s-statxd.ads: New.
- * libgnat/s-stratt.ads, libgnat/s-stratt.adb: Choose between
- default and XDR implementation at runtime.
- * libgnat/s-ststop.ads: Update comments.
- * doc/gnat_rm/implementation_advice.rst: Update doc on XDR
- streaming.
- * gnat_rm.texi: Regenerate.
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute) <To_Address>: Use the address
- size of the target instead of the host when checking the value of
- a static expression. Also use standard idiom for exponentiation.
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_prag.adb (Process_Convention): Give a warning on C_Variadic_n
- being applied to a subprogram with exactly n parameters.
-
-2020-06-18 Arnaud Charlet <charlet@adacore.com>
-
- * libgnarl/s-osinte__linux.ads, libgnat/g-io.adb,
- libgnat/g-socket.adb, libgnat/g-socthi.adb,
- libgnat/g-socthi.ads, libgnat/g-socthi__vxworks.adb,
- libgnat/g-socthi__vxworks.ads, libgnat/g-sothco.ads,
- libgnat/s-io.adb, libgnat/a-except.adb: Fix function profile
- mismatch with imported C functions.
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch6.adb (Expand_Call_Helper): Remove superfluous calls
- to Relocate_Node and merge calls to Analyze and Resolve in a
- couple of places. Do not attempt to generate a range check
- for an actual parameter against the formal's type of a derived
- subprogram after generating a conversion to the formal's type
- of the parent subprogram.
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.adb (Compute_Range_For_Arithmetic_Op): New procedure to
- compute a range for an arithmetical operation extracted from...
- (Minimize_Eliminate_Overflows): ...here. Call it.
- (Determine_Range_Cache_O): New cache for Original_Node nodes.
- (Determine_Range): Call Compute_Range_For_Arithmetic_Op for all
- arithmetic expressions. Use Attribute_Id in lieu of Attribute_Name
- for attributes. Add handling for Range_Length alongside Length.
- Add specific handling for Alignment, Bit, First_Bit, Last_Bit,
- Max_Size_In_Storage_Elements, Position, Bit_Position,
- Component_Size, Object_Size, Size, Value_Size, Descriptor_Size.
- (Enable_Overflow_Check): Omit the check for Abs and Minus if the
- operand cannot be the largest negative number.
- (Selected_Length_Checks): Use Pos for Number_Dimensions.
- * exp_attr.adb (Expand_N_Attribute_Reference): Move compile-time
- handling of Bit_Position, Descriptor_Size, First_Bit, Last_Bit
- and Position to...
- * sem_attr.adb (Eval_Attribute): ...here. Move up Alignment for
- objects and use Compile_Time_Known_Attribute in this case too.
-
-2020-06-18 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * erroutc.ads: Declare new Is_Compile_Time_Msg boolean,
- add new Compile_Time_Pragma field to Error_Msg_Object type.
- (Count_Compile_Time_Pragma_Warnings): New function.
- * erroutc.adb (Count_Compile_Time_Pragma_Warnings): New
- function.
- (Compilation_Errors): Take Compile_Time warnings into account
- when tallying Errors/Warnings.
- * errout.ads (Error_Msg): New procedure.
- * errout.adb (Error_Msg): New procedure.
- (Error_Msg_Internal): Set new Compile_Time_Pragma field in
- Error_Msg_Object.
- * errutil.adb (Error_Msg): Set new Compile_Time_Pragma field in
- Error_Msg_Object.
- * sem_prag.adb (Validate_Compile_Time_Warning_Or_Error): Pass
- True to new Error_Msg procedure.
- * doc/gnat_rm/implementation_defined_pragmas.rst: Update doc for
- the Compile_Time_Warning pragma.
- * gnat_rm.texi: Regenerate.
- * opt.ads: Update comment.
-
-2020-06-18 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch4.adb (Check_Compatible_Profiles): Add explicit
- initialization.
-
-2020-06-18 Piotr Trojanek <trojanek@adacore.com>
-
- * checks.adb (Generate_Index_Checks): Handle
- N_Subtype_Indication returned from Scalar_Range.
-
-2020-06-18 Piotr Trojanek <trojanek@adacore.com>
-
- * checks.adb, sem_ch3.adb: Minor refactorings.
- * sem_eval.adb (Eval_Qualified_Expression): Fix reference to RM
- rule in comment; only set a local variable Hex in the branch
- where it is used.
-
-2020-06-18 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_eval.adb (Check_Non_Static_Context): Use Is_RTE.
-
-2020-06-18 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch4.adb (Find_Equality_Types.Check_Access_Object_Types):
- New function, used to implement RM 4.5.2 (9.6/2).
- (Find_Equality_Types.Check_Compatible_Profiles): New function,
- used to implement RM 4.5.2(9.7/2).
- (Find_Equality_Types.Reference_Anonymous_Access_Type): New
- function.
- (Find_Equality_Types.Try_One_Interp): Fix handling of anonymous
- access types which was accepting both too much and too little.
- Remove accumulated special and incomplete cases for
- instantiations, replaced by Has_Compatible_Type.
- (Analyze_Overloaded_Selected_Component): Use
- Is_Anonymous_Access_Type instead of Ekind_In.
- * sem_res.adb: Code cleanup and bug fix: use
- Is_Anonymous_Access_Type instead of Ekind_In. Relax checking of
- anonymous access parameter when universal_access "=" is
- involved.
- * sem_type.adb: Likewise.
- (Find_Unique_Type): Move code from here...
- (Specific_Type): ...to here. Also add missing handling of access
- to class wide types.
- * einfo.ads, einfo.adb (Is_Access_Object_Type): New.
-
-2020-06-18 Bob Duff <duff@adacore.com>
-
- * libgnat/a-strsto.ads, libgnat/a-ststbo.adb,
- libgnat/a-ststbo.ads, libgnat/a-ststun.adb,
- libgnat/a-ststun.ads: New files, containing packages
- Ada.Streams.Storage, Ada.Streams.Storage.Bounded, and
- Ada.Streams.Storage.Unbounded.
- * impunit.adb, Makefile.rtl: Add new file names.
-
-2020-06-18 Javier Miranda <miranda@adacore.com>
-
- * sem_ch13.adb (Has_Good_Profile): Enforce strictness in the
- check. Required to detect wrong profiles for Input and Output.
- (Analyze_Stream_TSS_Definition): Minor enhancement in the text
- of the error for class-wide attributes.
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Get_Integer_Type): Pick an unsigned type based
- on the Esize of the base type of the input type.
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Expand_Array_Equality): For the optimization of
- the 2-element case, build new expression lists for the indices.
-
-2020-06-18 Richard Kenner <kenner@adacore.com>
-
- * sem_util.adb (Enclosing_Subprogram): No longer need
- Convention_Protected.
-
-2020-06-18 Claire Dross <dross@adacore.com>
-
- * sem_util.adb (Is_OK_Volatile_Context): Return False on
- definitions of constants declared in declare expressions.
-
-2020-06-18 Piotr Trojanek <trojanek@adacore.com>
-
- * doc/gnat_rm/implementation_defined_aspects.rst
- (Relaxed_Initialization): New implementation-defined aspect.
- * doc/gnat_rm/implementation_defined_attributes.rst
- (Initialized): New implementation-defined attribute.
- * gnat_rm.texi: Regenerate.
-
-2020-06-18 Javier Miranda <miranda@adacore.com>
-
- * exp_disp.adb (Expand_Dispatching_Call): Add missing decoration
- of attribute Extra_Accessibility_Of_Result.
- * freeze.adb (Check_Extra_Formals): No check required if
- expansion is disabled; Adding check on
- Extra_Accessibilty_Of_Result.
- (Freeze_Subprogram): Fix decoration of
- Extra_Accessibility_Of_Result.
- * sem_ch3.adb (Derive_Subprogram): Fix decoration of
- Extra_Accessibility_Of_Result
-
-2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Optimize_Length_Comparison): Accept 32-bit values
- in the full unsigned range.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.adb (Apply_Universal_Integer_Attribute_Checks): Do not do
- anything when the type of the node is already Universal_Integer.
-
-2020-06-17 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch10.adb (Expand_With_Clause): Add missing handling of
- N_Generic_Subprogram_Declaration, N_Subprogram_Declaration,
- N_Subprogram_Body.
-
-2020-06-17 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch13.adb: (Check_Inherited_Indexing): Check that a type
- derived from an indexable container type cannot specify an
- indexing aspect if the same aspect is not specified for the
- parent type (RM 4.1.6 (6/5), AI12-160). Add a check that a
- specified indexing aspect for a derived type is confirming.
-
-2020-06-17 Gary Dismukes <dismukes@adacore.com>
-
- * exp_ch9.adb (Build_Protected_Subp_Specification): Add ???
- comment about the flag Has_Nested_Subprogram not being set here.
- (Expand_N_Protected_Body): If the original body for a protected
- subprogram has the flag Has_Nested_Subprogram set, then set that
- flag on the new unprotected subprogram body that's created for
- it, and reset the Scope fields of its top level declarations,
- which have been effectively taken from the original protected
- subprogram body. Add ??? comment about unclear testing of
- Corresponding_Spec.
-
-2020-06-17 Javier Miranda <miranda@adacore.com>
-
- * aspects.ads (type Aspect_Id): Add Aspect_Yield as a Boolean
- aspect, and update the Is_Representation_Aspect, Aspect_Names,
- and Aspect_Delay arrays.
- * einfo.ads, einfo.adb (Has_Yield_Aspect, Yield_Aspect): New
- subprograms.
- * exp_ch6.adb (Add_Return, Expand_Non_Function_Return,
- Expand_Simple_Function_Return): Add calls to Yield.
- * exp_ch9.adb (Build_Accept_Body, Expand_N_Accept_Statement):
- Add calls to Yield.
- * rtsfind.ads (RE_Yield): Adding support to generate calls to
- the runtime service Ada.Dispatching.Yield
- * sem_ch13.adb (Analyze_Aspect_Yield): New subprogram.
- * sem_ch3.adb (Derive_Subprogram): Inherit attribute
- Has_Yield_Aspect.
- * sem_ch8.adb (Analyze_Subprogram_Renaming): Check consistency
- of Has_Yield in the actual subprogram of a generic
- instantiation.
- * sem_disp.adb (Check_Dispatching_Operation): Check that if the
- Yield aspect is specified for a dispatching subprogram that
- inherits the aspect, the specified value shall be confirming.
- * sem_prag.adb (Analyze_Pragma [Pragma_Implemented]): Check that
- the implementation kind By_Protected_Procedure cannot be applied
- to a procedure that has aspect Yield.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Expand_N_Op_Expon): Replace all occurrences of
- the original right operand with the relocated version.
-
-2020-06-17 Javier Miranda <miranda@adacore.com>
-
- * exp_ch6.adb (Has_BIP_Extra_Formal): New subprogram.
- (Needs_BIP_Task_Actuals): Add support for the subprogram type
- internally generated for dispatching calls.
- * exp_disp.adb (Expand_Dispatching_Call): Adding code to
- explicitly duplicate the extra formals of the target subprogram.
- * freeze.adb (Check_Extra_Formals): New subprogram.
- (Freeze_Subprogram): Fix decoration of Extra_Formals.
- * sem_ch3.adb (Derive_Subprogram): Fix decoration of
- Extra_Formals.
-
-2020-06-17 Bob Duff <duff@adacore.com>
-
- * par.adb (P_Basic_Declarative_Items): Update comment about
- Declare_Expression.
- * par-ch3.adb (P_Declarative_Items): Pass in Declare_Expression
- flag, and if True, skip the call to Style.Check_Indentation.
- * par-ch4.adb (P_Declare_Expression): Fix incorrect comment.
-
-2020-06-17 Arnaud Charlet <charlet@adacore.com>
-
- * sem_res.adb (Valid_Conversion): Change error message to make
- it more user-friendly.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.ads (Apply_Length_Check_On_Assignment): Declare.
- * checks.adb (Apply_Length_Check_On_Assignment): New procedure
- to apply a length check to an expression in an assignment.
- * exp_ch5.adb (Expand_Assign_Array): Call it instead of calling
- Apply_Length_Check to generate a length check.
- * sem_ch5.adb (Analyze_Assignment): Likewise.
-
-2020-06-17 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.adb (Is_Relaxed_Initialization_State): Add reference to
- SPARK RM.
- * sem_attr.adb (Analyze_Attribute_Old_Result): Likewise.
- * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Reject
- aspect on completions of private types and deferred constants.
- * sem_util.ads, sem_util.adb (Has_Relaxed_Initialization):
- Adjust comments; support queries for constants.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * cstand.adb (Stloc): Change to a renaming.
- (Staloc): Likewise.
- (Build_Unsigned_Integer_Type): Remove Nam parameter, use local
- constants and do not call Make_Name.
- (Make_Dummy_Index): Use local constants.
- (Create_Standard): Pass the name of entities as parameter in
- calls to New_Standard_Entity and remove calls to Make_Name.
- Adjust calls to Build_Unsigned_Integer_Type.
- (Identifier_For): Use local constant.
- (Make_Component): Pass the name of the component as parameter
- in call to New_Standard_Entity and remove call to Make_Name.
- (Make_Formal): Likewise. Rename Formal_Name parameter into
- Nam and use local constant.
- (Make_Name): Delete.
- (New_Operator): Use local constant.
- (New_Standard_Entity): Rename S parameter into Nam and build
- the name here. Remove call to Make_Name.
- (Register_Float_Type): Pass the name of the type as parameter
- in call to New_Standard_Entity and remove call to Make_Name.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
- Remove condition added for scalar types.
-
-2020-06-17 Gary Dismukes <dismukes@adacore.com>
-
- * exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Adjust
- colon columns; reformat comment.
- * exp_ch3.adb
- (Build_Access_Subprogram_Wrapper_Body): Likewise.
- * sem_ch3.adb (Build_Access_Subprogram_Wrapper): Reformat spec
- comment and reformat comment in body.
- (Analyze_Full_Type_Declaration): Reformat comment.
- (Replace_Type_Name): Fixed three typos, plus reformatting of
- comment.
- * sem_prag.adb (Analyze_Pre_Post_Condition): Fix typos.
- * sem_warn.adb (Warn_On_Overlapping_Actuals): Edit comments:
- remove hyphen, add missing word.
-
-2020-06-17 Bob Duff <duff@adacore.com>
-
- * libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb,
- libgnat/a-cbhase.adb, libgnat/a-cbmutr.adb,
- libgnat/a-cborma.adb, libgnat/a-cborse.adb,
- libgnat/a-cdlili.adb, libgnat/a-chtgbk.adb,
- libgnat/a-chtgke.adb, libgnat/a-cidlli.adb,
- libgnat/a-cihama.adb, libgnat/a-cihase.adb,
- libgnat/a-cimutr.adb, libgnat/a-ciorma.adb,
- libgnat/a-ciorse.adb, libgnat/a-cobove.adb,
- libgnat/a-cohama.adb, libgnat/a-cohase.adb,
- libgnat/a-coinve.adb, libgnat/a-comutr.adb,
- libgnat/a-convec.adb, libgnat/a-coorma.adb,
- libgnat/a-coorse.adb, libgnat/a-crbtgk.adb,
- libgnat/a-crbtgo.adb, libgnat/a-rbtgso.adb: Move tampering
- checks earlier.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Get_Integer_Type): Use standard types without
- a specific size.
- * sem_res.adb (Resolve_Unchecked_Type_Conversion): Remove a
- redundant intermediate conversion to Universal_Integer.
-
-2020-06-17 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_util.ads, sem_util.adb (Get_Iterable_Type_Primitive): Fix
- comment and enforce it with an assertion in the body.
-
-2020-06-17 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch3.adb (Analyze_Full_Type_Declaration): For an
- access_to_subprogram declaration that has aspect specifications,
- call Build_Access_ Subprogram_Wrapper at once, so that pre- and
- postcondition aspects are analyzed in the context of a
- subprogram declaration.
- (Build_Access_Subprogram_Wrapper): Examine aspect specifications
- of an Access_To_Subprogram declaration. If pre- or
- postconditions are declared for it, create declaration for
- subprogram wrapper and add the corresponding aspect
- specifications to it. Replace occurrences of the type name by
- that of the generated subprogram, so that attributes 'Old and
- 'Result can appear in a postcondition.
- * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Moved
- here from sem_prag.adb.
- * exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Visible
- subprogram.
- * sem_prag.adb (Build_Access_Subprogram_Wrapper / _Body): Moved
- to sem_ch3.adb and exp_ch3.adb.
-
-2020-06-17 Piotr Trojanek <trojanek@adacore.com>
-
- * atree.adb (Preserve_Comes_From_Source): Rewrite using
- Set_Comes_From_Source and Comes_From_Source, which enforce that
- the parameters are valid.
- * exp_ch4.adb, exp_ch5.adb, sem_ch12.adb, sem_ch6.adb,
- sem_res.adb: Rewrite using Preserve_Comes_From_Source.
-
-2020-06-17 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Remove obsolete
- comments.
-
-2020-06-17 Gary Dismukes <dismukes@adacore.com>
-
- * aspects.ads (type Aspect_Id): Add Aspect_Static as a Boolean
- aspect, and update the Is_Representation_Aspect, Aspect_Names,
- and Aspect_Delay arrays.
- * exp_ch6.adb (Expand_Simple_Function_Return): In the case of a
- return for a static expression function, capture a copy of the
- expression of the return statement before it's expanded and
- reset its Analyzed flags. Then, just before leaving this
- procedure, if the expression was rewritten, set the
- Original_Node of the rewritten expression to the new copy and
- also set the Expression of the associated static expression
- function to designate that copy. This ensures that later copies
- of the expression made via New_Copy_Tree will fully copy all
- nodes of the expression tree.
- * inline.ads (Inline_Static_Expression_Function_Call): New
- procedure to evaluate and produce the result of a static call to
- a static expression function.
- * inline.adb: Add with and use for Sem_Res.
- (Establish_Actual_Mapping_For_Inlined_Call): New procedure
- extracted from code in Expand_Inlined_Call that traverses the
- actuals and formals of an inlined call and in some cases creates
- temporaries for holding the actuals, plus establishes an
- association between formals and actuals (via the Renamed_Object
- fields of the formals).
- (Formal_Is_Used_Once): Function removed from Expand_Inlined_Call
- and now nested in the above procedure.
- (Expand_Inlined_Call): Code for doing the formal/actual
- traversal is moved to Create_Actual_Temporaries and replaced
- with a call to that new procedure.
- (Inline_Static_Expression_Function_Call): New procedure to
- evaluate a static call to a static expression function,
- substituting actuals for their corresponding formals and
- producing a fully folded and static result expression. The
- function has subsidiary functions Replace_Formal and Reset_Sloc
- that take care of doing the mapping of formals to actuals and
- resetting the Slocs of subnodes of the mapped expression to that
- of the call so errors will be flagged on the call rather than
- function.
- * sem_ch6.adb (Analyze_Expression_Function): In the case of a
- static expression function, perform an additional preanalysis of
- the function's expression to ensure that it's a potentially
- static expression (according to the requirements of
- 6.8(3.2/5-3.4/5)), and issue an error if it's not. The global
- flag Checking_Potentially_Static_Expression is set and unset
- around this checking.
- * sem_ch13.adb (Analyze_Aspect_Static): New procedure to enforce
- selected requirements of the new aspect Static on expression
- functions, including checking that the language version is
- Ada_2020 and that the entity to which it applies is an
- expression function whose formal parameters are of a static
- subtype and have mode 'in', its result subtype is a static
- subtype, and it has no pre- or postcondition aspects. A ???
- comment is added to indicate the need for adding checking that
- type invariants don't apply to the result type if the function
- is a boundary entity.
- (Analyze_One_Aspect): Call Analyze_Aspect_Static for aspect
- Static.
- * sem_elab.adb (Build_Call_Marker): Return without creating a
- call marker when the subprogram is a static expression function,
- since no ABE checking is needed for such functions.
- * sem_eval.ads (Checking_Potentially_Static_Expression): New
- function to return whether the checking for potentially static
- expressions is enabled.
- (Set_Checking_Potentially_Static_Expression): New procedure to
- enable or disable checking of potentially static expressions.
- * sem_eval.adb (Checking_For_Potentially_Static_Expression): New
- global flag for determining whether preanalysis of potentially
- static expression is being done, which affects the behavior of
- certain static evaluation routines.
- (Checking_Potentially_Static_Expression): New function to return
- whether the checking for potentially static expressions is
- enabled.
- (Eval_Call): When evaluating a call within a static expression
- function with checking of potentially static expression
- functions enabled, substitutes a static value in place of the
- call to allow folding of the expression.
- (Eval_Entity_Name): When evaluating a formal parameter of a
- static expression function with checking of potentially static
- expression functions enabled, substitutes a static value in
- place of the reference to the formal to allow folding of the
- expression.
- (Set_Checking_Potentially_Static_Expression): New procedure to
- enable or disable checking of potentially static expressions.
- * sem_res.adb (Resolve_Call): Test for a recursive call
- occurring within a static expression function and issue an error
- for such a call. Prevent the establishment of a transient scope
- in the case this is a call to a (string-returning) static
- expression function. When calling a static expression function,
- if no error has been posted on the function, call
- Inline_Static_Expression_Function_Call to convert the call into
- its equivalent static value.
- * sem_util.ads (Is_Static_Expression_Function): New function
- returning whether the subprogram entity passed to it is a static
- expression function.
- (Is_Static_Expression_Function_Call): New function to determine
- whether the call node passed to it is a static call to a static
- expression function.
- * sem_util.adb (Compile_Time_Constraint_Error): Suppress
- compile-time Constraint_Error reporting when checking for a
- potentially static expression.
- (Is_Static_Expression_Function): New function returning whether
- the subprogram entity passed to it is a static expression
- function by testing for the presence of aspect Static.
- (Has_All_Static_Actuals): New function in
- Is_Static_Expression_Function_Call that traverses the actual
- parameters of a function call and returns True only when all of
- the actuals are given by static expressions. In the case of a
- string-returning function, we call Resolve on each actual to
- ensure that their Is_Static_Expression flag properly reflects
- whether they're static, to allow suppressing creation of a
- transient scope within Resolve_Call. A prominent ??? comment is
- added to explain this rather unconventional call to Resolve.
- (Is_Static_Expression_Function_Call): New function that
- determines whether a node passed to it is a call to a static
- expression function all of whose actual parameters are given by
- static expressions.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Optimize_Length_Comparison): New local variable to
- record whether this may be a dynamic superflat case.
- (Is_Optimizable): Accept 0 as lower bound and set it in this case,
- but return false if the operand is not a length too.
- (Rewrite_For_Equal_Lengths): New procedure.
- Optimize the comparison of two lengths in the superflat case when
- the arrays have the same bounds.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * doc/gnat_rm/implementation_defined_attributes.rst (Bit): Sharpen
- the comparison with System.Storage_Unit.
- (Descriptor_Size): Clear confusion about alignment and padding.
- * gnat_rm.texi: Regenerate.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
- Do not replace the bound for an array type if it is public.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Optimize_Length_Comparison): Make sure the base
- types are the same when comparing Y'Last and X'Last directly.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
- Replace it with a direct reference to an entity which is not a
- discriminant for constrained array types. Add same condition
- for scalar types.
- <Attribute_Last>: Merge with above implementation.
- * exp_ch4.adb (Optimize_Length_Comparison): Be prepared for a
- second entity whose length is compared. Rename Prepare_64 to
- Convert_To_Long_Long_Integer. If the second entity is present,
- compute the difference of the 'First attributes and compare the
- sum of 'Last of the second entity with this difference against
- 'Last of the first entity. Add a special case when the 'First
- attributes are equal. Suppress overflow checks in all cases.
-
-2020-06-17 Piotr Trojanek <trojanek@adacore.com>
-
- * doc/gnat_rm/implementation_defined_pragmas.rst, lib-writ.ads,
- par-prag.adb, sem_ch12.adb, sem_ch8.adb, sem_prag.adb: Fix
- casing of GNATprove.
- * gnat_rm.texi: Regenerate.
-
-2020-06-17 Piotr Trojanek <trojanek@adacore.com>
-
- * checks.adb (Generate_Range_Check): Simplify redundant
- condition.
- * sem_ch3.adb (Check_Initialization, Process_Discriminants):
- Likewise.
- * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Likewise.
-
-2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_fixd.adb (Build_Conversion): Also preserve the
- Conversion_OK flag of an inner conversion.
-
-2020-06-17 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch5.adb (Analyze_Iterator_Specification): Enable expansion
- that creates a renaming that removes side effects from the
- iterated object in the GNATprove mode; then analyze reference to
- this renaming (it is required for GNATprove and harmless for
- GNAT).
-
-2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * sinfo.ads (Conversion_OK): Document use for 'Pos and 'Val.
- * exp_attr.adb (Get_Integer_Type): New function returning a
- small integer type appropriate for an enumeration type.
- (Expand_N_Attribute_Reference) <Attribute_Enum_Rep>: Call it.
- <Attribute_Pos>: For an enumeration type with a standard
- representation, expand to a conversion with Conversion_OK.
- <Attribute_Val>: Likewise.
- * exp_ch4.adb (Expand_N_Type_Conversion): Do not expand when
- the target is an enumeration type and Conversion_OK is set.
-
-2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch4.adb (Common_Type): Go to Underlying_Full_View, if any.
-
-2020-06-16 Richard Kenner <kenner@adacore.com>
-
- * exp_unst.adb (Subp_Index): Change way we detect internal
- protected subprograms.
-
-2020-06-16 Richard Kenner <kenner@adacore.com>
-
- * comperr.adb (Compiler_Abort): Clarify message displayed to
- customers.
-
-2020-06-16 Piotr Trojanek <trojanek@adacore.com>
-
- * checks.adb, doc/gnat_ugn/the_gnat_compilation_model.rst,
- einfo.ads, exp_ch5.adb, exp_ch7.adb, lib-xref.ads,
- libgnat/g-spitbo.ads, make.adb, sem_aux.adb, sem_ch3.adb,
- sem_ch4.adb, sem_ch5.adb, urealp.adb: Fix wrong casing.
- * gnat_ugn.texi: Regenerate.
-
-2020-06-16 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.adb, exp_spark.adb, exp_util.adb, sem_eval.adb: Replace
- "Ekind ... in Object_Kind" with "Is_Object (...)".
-
-2020-06-16 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_warn.adb (Warn_On_Overlapping_Actuals): Fix typo in
- comment.
-
-2020-06-16 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_util.adb (Evaluate_Name): Force evaluation of aggregates;
- recursively evaluate expression of a qualified expression; fix
- location of the comment for an attribute referenced and an
- indexed component.
-
-2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * freeze.adb (Freeze_Expression): Use consistent style and
- formatting in a couple of cases.
-
-2020-06-16 Steve Baird <baird@adacore.com>
-
- * libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Uncomment the
- commented-out Integer_Literal aspect specification for type
- Big_Integer.
-
-2020-06-16 Javier Miranda <miranda@adacore.com>
-
- * exp_ch6.adb (BIP_Suffix_Kind, Check_BIP_Actuals,
- Is_Build_In_Place_Entity): New subprograms.
- (Make_Build_In_Place_Call_In_Allocator,
- Make_Build_In_Place_Call_In_Anonymous_Context,
- Make_Build_In_Place_Call_In_Assignment,
- Make_Build_In_Place_Call_In_Object_Declaration): Add assertions.
- (Needs_BIP_Task_Actuals): Add missing support for thunks.
- (Expand_Actuals): Ensure that the BIP call has available an
- activation chain and the _master variable.
- * exp_ch9.adb (Find_Enclosing_Context): Initialize the list of
- declarations of empty blocks when the _master variable must be
- declared and the list was not available.
-
-2020-06-16 Bob Duff <duff@adacore.com>
-
- * par-ch4.adb (P_Case_Expression): Move to be local.
- (P_Declare_Expression): New parsing routine.
- (P_Unparen_Cond_Expr_Etc): New name for
- P_Unparen_Cond_Case_Quant_Expression which was missing one case
- in its name (iterated component association), and we're adding a
- new case (declare expression), so lets use "Etc" instead of
- trying to pack all those things into the name. Add call to
- P_Declare_Expression, and check for missing parens.
- (P_Expression_If_OK, P_Expression_Or_Range_Attribute_If_OK): Add
- Tok_Declare.
- * par.adb (P_Basic_Declarative_Items): Add parameter
- Declare_Expression so we can tailor the error message about
- incorrect bodies.
- (P_Case_Expression): Move to body.
- * par-ch3.adb (P_Basic_Declarative_Items): Tailor the error
- message about incorrect bodies.
- * par-ch7.adb (P_Package): Pass Declare_Expression => False to
- P_Basic_Declarative_Items.
- * sem.ads (In_Declare_Expr): Counter used to determine whether
- we are analyzing a declare_expression. Needed to give errors
- about things that are not allowed in declare_expression, such as
- the 'Access attribute.
- * sem.adb (Do_Analyze): Save/restore In_Declare_Expr.
- * sem_ch4.adb (Analyze_Expression_With_Actions): Give this node
- its own scope. That seems better in general, but it is
- necessary for declare_expressions. For example, an identifier
- declared in a declare_expression should not clash with the same
- identifier in an outer scope. If this is a declare_expression,
- indicated by Comes_From_Source, then check legality rules, and
- incr/decr In_Declare_Expr.
- * sem_aggr.adb (Resolve_Aggregate): Allow an applicable index
- constraint for a declare_expression, so if its expression is an
- array aggregate, it can have "others => ...".
- * sem_attr.adb (Analyze_Access_Attribute): Disallow these
- attributes in declare_expressions. Add comment to make it clear
- that Unrestricted_Access is included.
- * sinfo.ads, sinfo.adb, atree.ads, atree.adb: Remove the
- now-incorrect comment in sinfo.ads that says
- N_Expression_With_Actions has no proper scope. Add 17-parameter
- versions of Nkind_In. Remove the 16-parameter versions of
- Nkind_In.
-
-2020-06-16 Arnaud Charlet <charlet@adacore.com>
-
- * sem_aux.ads, sem_aux.adb (Is_Record_Or_Limited_Type): New
- function.
- * exp_ch4.adb, sem_ch4.adb (Analyze_Membership_Op,
- Expand_Set_Membership.Make_Cond): Choose between primitive and
- predefined equality for membership tests.
-
-2020-06-16 Ed Schonberg <schonberg@adacore.com>
-
- * sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify code and
- implement AI12-0216 which clarifies the conditions under which
- overlapping actuals in a call are illegal. If proper warnings
- are enabled, GNAT also emits warnings in legal cases of
- overlopping actuals.
-
-2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * freeze.adb (Freeze_Expression): Stop climbing the parent chain
- at a N_{Case,If}_Expression node for a type or an entity that
- does not come from source.
-
-2020-06-16 Steve Baird <baird@adacore.com>
-
- * snames.ads-tmpl: Define names of the three new aspects.
- * aspects.ads: Define the three new aspects.
- * sem_util.ads, sem_util.adb, sem_dim.adb: Move the function
- String_From_Numeric_Literal from being declared in the body of
- package Sem_Dim to being declared in the visible part of package
- Sem_Util.
- * sem_ch13.ads, sem_ch13.adb: Declare new visible procedure
- Validate_Literal_Aspect. This is where most of the legality
- checking occurs for an aspect specification for one of the three
- new aspects, as well as resolution of the subprogram named in
- the aspect specification. Follow example of other aspects (e.g.,
- Validate_Literal_Aspect is called in much the same way as
- Validate_Iterable_Aspect in Analyze_Aspects_At_Freeze_Point; a
- small amount of legality checking is performed in
- Analyze_One_Aspect in much the same way as for Default_Value or
- Default_Component_Value aspects). Most of the work is done in
- Validate_Literal_Aspect.
- * contracts.adb (Add_Contract_Item): Call
- Validate_Literal_Aspect in much the same way that
- Validate_Iterable_Aspect was already being called.
- * sem_res.adb (Resolve): Rewrite a literal as a call if it is a
- user-defined literal. This is where the dynamic semantics of
- the 3 new aspects are implemented.
- * sem_ch6.adb (Fully_Conformant_Expressions): Two numeric
- literals that have different text but the same value (e.g.,
- 12345 and 12_345) do not conform if they are user-defined
- literals. Introduce a new function
- User_Defined_Numeric_Literal_Mismatch to avoid duplication in
- making this check.
- * sem_type.adb (Has_Compatible_Type): A numeric literal can be
- compatible with a non-numeric type (and a string literal can be
- compatible with a non-string type) if it can be interpreted as a
- user-defined literal.
-
-2020-06-16 Arnaud Charlet <charlet@adacore.com>
-
- * sem_aggr.adb (Resolve_Extension_Aggregate): Fix implementation
- of AI05-0115 by checking the correct type.
-
-2020-06-16 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch6.adb (Analyze_Subprogram_Specification): Generate error
- message for functions returning interfaces.
-
-2020-06-16 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (Membership_Entry): Relax assertion to also
- recognize qualified identifiers.
-
-2020-06-16 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_util.adb (Evaluate_Name): Force evaluation of operators.
-
-2020-06-16 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch4.adb (Analyze_Membership_Op): Reset entity of equality
- nodes for membership tests with singletons.
- (Analyze_User_Defined_Binary_Op): Always perform the analysis
- since nodes coming from the expander also may refer to non
- standard operators as part of membership expansion.
- * exp_ch4.adb (Expand_Set_Membership.Make_Cond): Reset entity of
- equality node.
- * sem_type.ads: Fix typo in comment.
-
-2020-06-16 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute): Add
- Check_Not_Incomplete_Type call.
-
-2020-06-16 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch6.adb: Add closing paren in a comment.
- * sem_util.adb: Correct comment typo (aggreate => aggregate).
-
-2020-06-16 Javier Miranda <miranda@adacore.com>
-
- * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
- Code cleanup.
-
-2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * freeze.adb (In_Expanded_Body): Remove unreachable code.
- (Freeze_Expression): Rename a couple of local variables.
- In the case of an expanded body, also freeze locally the
- entities declared in a nested block.
-
-2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch4.adb (Transform_Object_Operation): Document that it
- may be partially destructive for the parent of the node.
- (Try_Object_Operation): Undo the changes made above on failure.
-
-2020-06-16 Javier Miranda <miranda@adacore.com>
-
- * restrict.adb (Global_No_Tasking): Adding
- Targparm.Restrictions_On_Target Fixes regressions with zfp.
-
-2020-06-16 Ed Schonberg <schonberg@adacore.com>
-
- * freeze.adb: (Freeze_Expression, In_Expanded_Body): Treat the
- generated body of an expression function like other bodies
- generated during expansion (e.g. stream subprograms) so that
- those bodies are not treated as freezing points. Handle properly
- other global references in such completions.
-
-2020-06-16 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch8.adb (Analyze_Object_Renaming): Remove trivially
- useless initialization of Is_Object_Reference.
- * sem_util.adb (Is_Object_Reference): Simplify detection of
- binary and unary operators; literally implement rules about
- aggregates and qualified expressions; recognize string literals
- as object references.
-
-2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch12.adb (Validate_Derived_Type_Instance): Reword error
- message for 12.5.1(8) subclause and add secondary message if
- the incompatibility comes from the predicates.
- * sem_ch3.adb (Check_Constraining_Discriminant): New procedure
- to give the error required by the 3.7(15) subclause. Mention
- "statically" in the error message and add secondary message
- if the incompatibility comes from the predicates.
- (Build_Derived_Concurrent_Type): Call it when a new discriminant
- constrains an old one.
- (Build_Derived_Record_Type): Likewise.
- * sem_eval.ads (Predicates_Compatible): Declare.
- * sem_eval.adb (Predicates_Compatible): New function to implement
- the compatibility of predicates specified by the 4.9.1 clause.
- (Subtypes_Statically_Compatible): Call it.
-
-2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_eval.ads (Predicates_Match): Fix description.
- * sem_eval.adb (Predicates_Match): Rewrite.
-
-2020-06-15 Ed Falis <falis@adacore.com>
-
- * Makefile.rtl: Change name of hie/g-io__vxworks-ppc-cert.adb.
-
-2020-06-15 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch8.adb (Premature_Usage): Add support for subtype
- references and replace set of if-then-else by a case statement.
-
-2020-06-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Analyze_Depends_In_Decl_Part,
- Analyze_Global_In_Decl_Part): Bring back task discriminants for
- analysis of the Global/Depends contracts; add comments.
-
-2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (Return_Applies_To): Document special usage for E_Block.
- * einfo.adb (Write_Field8_Name): Write it for E_Block too.
- * exp_ch4.adb (Expand_N_Type_Conversion): Remove implementation of
- the check prescribed by AI05-0073.
- * exp_ch6.adb (Apply_CW_Accessibility_Check): New procedure to apply
- the check prescribed by AI95-344 extracted from...
- (Expand_N_Extended_Return_Statement): Apply the check prescribed by
- AI95-344 to the expression, if present. Suppress only access checks
- when analyzing the rewritten result.
- (Expand_Simple_Function_Return): ...here. Rename local variable.
- Call Apply_CW_Accessibility_Check to apply the check prescribed by
- AI95-344, but do not do it for the simple return statement generated
- by the expansion of an extended return statement. Apply the check
- prescribed by AI05-0073 to all functions returning anonymous access
- type designating a specific tagged type, but not if the expression
- was null or tag checks are suppressed for the type, and use Not In
- operator rather than comparing the tags explicitly.
- * sem.adb (Analyze): Handle all Suppress values.
- * sem_ch6.adb (Analyze_Function_Return): Do not explicitly apply
- predicate checks in the case of an extended return statement.
- Do not apply an implicit conversion to the anonymous access result
- type in the case of the simple return statement generated by the
- expansion of an extended return statement.
- (New_Overloaded_Entity): Small comment tweak.
- * treepr.adb (Print_Node): Fix typo in flag string.
-
-2020-06-15 Bob Duff <duff@adacore.com>
-
- * exp_put_image.ads, exp_put_image.adb
- (Image_Should_Call_Put_Image): New function to determine whether
- the call to Put_Image should be generated.
- (Build_Image_Call): New procedure to generate the call to
- Put_Image.
- * exp_imgv.adb (Expand_Image_Attribute): Use underlying types to
- bypass privacy (only in Ada 2020). If
- Image_Should_Call_Put_Image is True (which happens only in Ada
- 2020), then call Build_Image_Call.
- * rtsfind.ads, rtsfind.adb: Add the necessary declarations in
- Ada.Strings.Text_Output.Buffers.
- * sem_attr.adb (Check_Image_Type): Enable the Ada 2020 case.
- * libgnat/a-stoufo.ads, libgnat/a-stoufo.adb: Use the less
- restrictive type that allows newline characters.
-
-2020-06-15 Gary Dismukes <dismukes@adacore.com>
-
- * exp_ch9.ads (Build_Master_Declaration): Add commas.
- * exp_ch9.adb (Build_Master_Entity): Spelling fix ("build" =>
- "built").
- (Build_Task_Activation_Call): Fix word order.
-
-2020-06-15 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nbnbin.ads (Big_Positive, Big_Natural): Fix
- predicate.
-
-2020-06-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Fix
- dealing with scopes on subprogram bodies that act as specs.
- * sem_util.adb (Has_Relaxed_Initialization): Fix trivial
- mistake.
-
-2020-06-15 Javier Miranda <miranda@adacore.com>
-
- * restrict.ads (Set_Global_No_Tasking, Global_No_Tasking): New
- subprograms.
- * restrict.adb (Set_Global_No_Tasking, Global_No_Tasking): New
- subprograms.
- * sem_ch3.adb (Access_Definition): Do not skip building masters
- since they may be required for BIP calls.
- (Analyze_Subtype_Declaration): Propagate attribute
- Is_Limited_Record in class-wide subtypes and subtypes with
- cloned subtype attribute; propagate attribute
- Is_Limited_Interface.
- * sem_ch6.adb (Check_Anonymous_Return): Do not skip building
- masters since they may be required for BIP calls. Use
- Build_Master_Declaration to declare the _master variable.
- (Create_Extra_Formals): Add decoration of Has_Master_Entity when
- the _master formal is added.
- * exp_ch3.adb (Init_Formals): Adding formal to decorate it with
- attribute Has_Master_Entity when the _master formal is added.
- (Build_Master): Do not skip building masters since they may be
- required for BIP calls.
- (Expand_N_Object_Declaration): Ensure activation chain and
- master entity for objects initialized with BIP function calls.
- * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
- Adding support to detect and save restriction No_Tasking when
- set in the run-time package System or in a global configuration
- pragmas file.
- * sem_util.adb (Current_Entity_In_Scope): Overload this
- subprogram to allow searching for an entity by its Name.
- * sem_util.ads (Current_Entity_In_Scope): Update comment.
- * exp_ch4.adb (Expand_N_Allocator): Do not skip building masters
- since they may be required for BIP calls.
- * exp_ch6.ads (Might_Have_Tasks): New subprogram.
- * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Add
- support for BIP calls returning objects that may have tasks.
- (Make_Build_In_Place_Call_In_Allocator): Build the activation
- chain if the result might have tasks.
- (Make_Build_In_Place_Iface_Call_In_Allocator): Build the class
- wide master for the result type.
- (Might_Have_Tasks): New subprogram.
- (Needs_BIP_Task_Actuals): Returns False when restriction
- No_Tasking is globally set.
- * exp_ch9.ads (Build_Master_Declaration): New subprogram.
- * exp_ch9.adb (Build_Activation_Chain_Entity): No action
- performed when restriction No_Tasking is globally set.
- (Build_Class_Wide_Master): No action performed when restriction
- No_Tasking is globally set; use Build_Master_Declaration to
- declare the _master variable.
- (Build_Master_Declaration): New subprogram.
- (Build_Master_Entity): No action performed when restriction
- No_Tasking is globally set; added support to handle transient
- scopes and _finalizer routines.
- (Build_Master_Renaming): No action performed when restriction
- No_Tasking is globally set.
- (Build_Task_Activation_Call): Skip generating the call when
- the chain is an ignored ghost entity.
- (Find_Master_Scope): Generalize the code that detects transient
- scopes with master entity.
- * einfo.ads (Has_Nested_Subprogram): Minor comment reformatting.
-
-2020-06-15 Arnaud Charlet <charlet@adacore.com>
-
- * sem_attr.adb (Eval_Attribute): Protect against previous
- errors.
- * sem_ch13.adb (Analyze_Aspect_Default_Value): Remove redundant
- error checking, handling in Analyze_Aspect_Specifications.
- (Analyze_Aspect_Specifications): Refine error messages on
- Default_[Component_]Value.
- (Check_Aspect_Too_Late): New procedure.
- (Rep_Item_Too_Late.Is_Derived_Type_With_Constraint): Remove,
- dead code.
- * aspects.ads (Is_Representation_Aspect): Default_Value is a
- representation aspect.
-
-2020-06-15 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-wichha.ads, libgnat/a-wichha.adb,
- libgnat/a-wichun.ads, libgnat/a-wichun.adb (Is_Basic, To_Basic):
- New.
- * libgnat/s-utf_32.ads, libgnat/s-utf_32.adb (Is_UTF_32_Basic,
- To_UTF_32_Basic, Decomposition_Search): New subprograms.
- (Unicode_Decomposition): New table.
-
-2020-06-15 Gary Dismukes <dismukes@adacore.com>
-
- * exp_ch6.adb (Add_Call_By_Copy_Code): In the case of a view
- conversion passed to a scalar out-mode parameter where the
- formal has Default_Value set, declare the copy temp with the
- base type of the formal's subtype and initialize the copy temp
- with the actual's value.
-
-2020-06-15 Justin Squirek <squirek@adacore.com>
-
- * exp_ch4.adb (Expand_N_Case_Expression): Set default value for
- Target to silence potential warnings.
- (Expand_N_If_Expression): Add calculation to check when the if
- expression is used directly in the context of an actual of an
- anonymous access type and add a special path to force expansion
- of the if expression in this case.
- * exp_ch6.adb (Expand_Branch): Generate an assignment to the
- level temporary for a given branch.
- (Expand_Call_Helper): Add expansion to allow for creating a
- temporary to store associated accessiblity levels on each branch
- of the conditional expression. Also perform expansion of
- function calls into expressions with actions, and fixup
- references to N with Call_Node.
- (Insert_Level_Assign): Move through nested conditional
- expressions to each branch.
- * sem_util.ads, sem_util.adb (Is_Anonymous_Access_Actual): Added
- to detect when to force expansion of if expressions.
-
-2020-06-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Analyze_Depends_In_Decl_Part,
- Analyze_Global_In_Decl_Part): Do not install task discriminants
- for analysis of the Global/Depends contracts.
-
-2020-06-15 Piotr Trojanek <trojanek@adacore.com>
-
- * contracts.adb (Analyze_Object_Contract): Do not expect
- Global/Depends on single protected units.
-
-2020-06-15 Justin Squirek <squirek@adacore.com>
-
- * sem_res.adb (Valid_Conversion): Add missing condition to
- trigger proper static accessiblity failiures when the target
- type is an anonymous access.
-
-2020-06-15 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch6.adb (Expand_Call_Helper): Replace repeated Ekind with
- Ekind_In.
-
-2020-06-15 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch6.adb, sem_util.adb: Remove excessive parents,
- especially since they don't make the code any easier to read.
-
-2020-06-15 Piotr Trojanek <trojanek@adacore.com>
-
- * aspects.ads (Aspect_Id): Add Aspect_Relaxed_Initialization.
- (Implementation_Defined_Aspect): Add new aspect.
- (Aspect_Argument): Add new aspect with Optional_Expression
- argument.
- (Is_Representation_Aspect): Add new aspect as a
- non-representation one.
- (Aspect_Names): Add name for the new aspect.
- (Aspect_Delay): Add new aspect as a non-delayed one.
- * sem_ch3.adb: Minor reformatting.
- * einfo.ads, einfo.adb (Is_Relaxed_Initialization_State): New
- query; reuses existing code for querying abstract state options.
- * exp_attr.adb (Expand_N_Attribute_Reference): For now ignore
- attribute 'Initialized.
- * sem_attr.adb (Analyze_Attribute_Old_Result): Allow attribute
- 'Result to be used in the aspect Relaxed_Initialization
- expression.
- (Analyze_Attribute): Analyze attribute 'Initialized; based on
- existing code for attribute 'Valid_Scalars.
- (Eval_Attribute): Do not expect attribute 'Initialized, just
- like attribute 'Valid_Scalars is not expected.
- * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): New
- routine.
- (Analyze_Aspect_Specifications): Analyze new aspect in a
- dedicated routine.
- (Check_Aspect_At_Freeze_Point): Do not expect new aspect.
- * sem_prag.adb (Analyze_Abstract_State): Support option
- Relaxed_Initialization on abstract states.
- * sem_util.ads, sem_util.adb (Has_Relaxed_Initialization): New
- query for the GNATprove backend.
- * snames.ads-tmpl (Snames): Add Name_Ids for the new aspect and
- attribute; add an Attribute_Id for the new attribute.
-
-2020-06-15 Bob Duff <duff@adacore.com>
-
- * exp_put_image.adb, libgnat/s-putima.adb, libgnat/s-putima.ads,
- rtsfind.ads: Enable Put_Image if Is_Access_Subprogram_Type (Typ).
- Remove comment saying it's disabled in that case. Rename
- Put_Image_Access_Prot to be Put_Image_Access_Prot_Subp to
- clarify that we're talking about access-to-subprogram, not
- access-to-protected-object.
-
-2020-06-15 Bob Duff <duff@adacore.com>
-
- * sem_attr.adb (Check_Image_Type): New procedure for checking
- the type, depending on language version. Disable the Ada 2020
- support until the corresponding expander work is done.
- (Analyze_Image_Attribute): Call Check_Image_Type. Rearrange the
- code to be simplier and more logical. When P_Type is modified,
- modify P_Base_Type accordingly.
- * sem_util.adb (Is_Object_Image): Do not return False if the
- prefix is a type. X'Image should be considered an image of an
- object iff X is an object (albeit illegal pre-2020 if
- nonscalar).
-
-2020-06-15 Bob Duff <duff@adacore.com>
-
- * libgnat/s-putima.ads, libgnat/s-putima.adb
- (Put_Image_Access_Subp, Put_Image_Access_Prot): New procedures
- for printing access-to-subprogram objects. Remove an explicit
- " ", because Put_Image includes the annoying leading blank.
- * rtsfind.ads: Add new procedures in s-putima.
- * exp_put_image.adb: Call new procedures as appropriate.
-
-2020-06-15 Bob Duff <duff@adacore.com>
-
- * exp_imgv.adb (Expand_Image_Attribute): Allow private types.
- Put_Image generates Image for numeric types, and private types
- whose full type is numeric. This requires the Conversion_OK flag
- for integer and floating-point types. For fixed point, we need
- the extra conversion.
- * exp_put_image.adb (Build_Elementary_Put_Image_Call): Remove
- special handling of real types.
- (Enable_Put_Image): Enable for reals.
-
-2020-06-15 Bob Duff <duff@adacore.com>
-
- * exp_attr.adb (Put_Image): Use underlying type for strings.
- Remove unchecked union processing.
- * exp_put_image.adb (Tagged_Put_Image_Enabled): Use -gnatd_z to
- enable default Put_Image for tagged types. This allows testing
- that feature.
- (Build_String_Put_Image_Call): Set Conversion_OK flag.
- (Make_Component_List_Attributes): Remove unchecked union
- processing.
- (Enable_Put_Image): Disable for unchecked unions. Enable for
- nonscalar types (which were mistakenly disabled in earlier
- changes).
- * debug.adb: Document -gnatd_z switch.
- * libgnat/s-putima.adb (Put_Image_String, Put_Image_Wide_String,
- Put_Image_Wide_Wide_String): Double double-quote characters.
- Forget about special handling of control characters for now --
- that's rare enough to not be a priority, and it's not clear what
- the right thing to do is anyway.
- * namet.adb: Minor: Improve debugger-friendliness.
- * sinfo.ads: Minor: Add "???" comment.
-
-2020-06-15 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_util.ads, sem_util.adb (Is_Renaming_Declaration): Remove.
-
-2020-06-15 Ed Schonberg <schonberg@adacore.com>
-
- * freeze.adb (Freeze_Expression): When traversing the tree
- looking for the proper insertion point for the freeze node of an
- entity that is declared in an outer scope, set the candidate
- subprogram body node properly. Previous code has an off-by-one
- error.
-
-2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference) <Has_Same_Storage>:
- Do not do superfluous work. Add the condition (X'Size /= 0) on
- both paths and turn binary AND into short-circuit AND THEN.
-
-2020-06-15 Steve Baird <baird@adacore.com>
-
- * sem_attr.adb (Analyze_Attribute): In the Loop_Entry case,
- replace a call to Statically_Denotes_Object with a call to
- Statically_Names_Object and clean up the preceding comment.
-
-2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_res.adb (Resolve_Set_Membership): Remove local variable.
- In the non-overloaded case, call Intersect_Types on the left
- operand and the first alternative to get the resolution type.
- But test the subtype of the left operand to give the warning.
-
-2020-06-12 Steve Baird <baird@adacore.com>
-
- * sem_res.adb (Valid_Conversion): The simpler cases of
- violations of the aforementioned 8.6 rule are already handled
- correctly. These include cases where the operand of the type
- conversion is an access parameter or a stand-alone object of an
- anonymous access type. Add code to detect violations where the
- operand of the type conversion is an access discriminant whose
- accessibility level is tied to one of the other simpler cases.
- This is implemented in a new function,
- Valid_Conversion.Is_Discrim_Of_Bad_Access_Conversion_Argument,
- which is called in place of the previous test.
-
-2020-06-12 Bob Duff <duff@adacore.com>
-
- * exp_attr.adb (Put_Image): Remove assertion. This assertion is
- False in mixed-Ada-version programs.
- * exp_put_image.adb (Tagged_Put_Image_Enabled): New flag to make
- it easy to experiment with Put_Image on tagged types. False in
- this version.
- (Enable_Put_Image): Enable in pre-2020. Workarounds: Disable
- for tagged types if Tagged_Put_Image_Enabled is False. Disable
- for access-to-subprogram types. Disable if errors have been
- detected, or Sink is unavailable.
- (Preload_Sink): Move all conditionals here, from Sem_Ch10, so
- they can be nearby related code in Enable_Put_Image. Load Sink
- only if we have seen a tagged type. This removes the dilemma
- about calling Preload_Sink when compiling the compiler, which
- caused unwanted dependences.
- * exp_put_image.ads (Preload_Sink): New formal Compilation_Unit,
- needed to move all conditionals here, from Sem_Ch10.
- * libgnat/a-stouut.adb (Put_UTF_8): Make this suitable for
- inlining, so we don't get warnings about inlining in some tests.
- And so it can be inlined!
- * opt.ads (Tagged_Seen): New flag (see Preload_Sink).
- * scng.adb (Scan): Set new Tagged_Seen flag.
- * sem_ch10.adb (Analyze_Compilation_Unit): Move conditionals and
- comments regarding Preload_Sink into Preload_Sink.
-
-2020-06-12 Arnaud Charlet <charlet@adacore.com>
-
- * sem_res.adb (Resolve_Actuals): Check for AI12-0074.
-
-2020-06-12 Olivier Hainque <hainque@adacore.com>
-
- * libgnat/s-secsta.ads (Memory_Alignment): New constant, memory
- alignment for chunks and allocated blocks. Initialize to
- Standard'Maximum_Alignment * 2.
- (Chunk_Memory): Use it.
- * libgnat/s-secsta.adb (Round_Up): Likewise.
-
-2020-06-12 Piotr Trojanek <trojanek@adacore.com>
-
- * par-prag.adb: Fix ordering.
- * snames.ads-tmpl (Name_Test_Case, Pragma_Test_Case): Likewise.
- * sem_prag.adb (Sig_Flags): Likewise.
-
-2020-06-12 Arnaud Charlet <charlet@adacore.com>
-
- * sem_res.adb (Resolve_Entity_Name): Fix handling of expressions
- containing array attributes wrt Ada 83 detection.
-
-2020-06-12 Steve Baird <baird@adacore.com>
-
- * sem_util.ads, sem_util.adb: Define 3 new Boolean-valued
- functions - Statically_Denotes_Entity,
- Statically_Denotes_Object, and Statically_Names_Object. The
- first two were taken from sem_attr.adb. The term "statically
- names" is defined in the Ada RM and the new function
- Statically_Names_Object is intended to reflect that definition,
- or more precisely, as described in a comment in the code, to
- reflect the expected future definition of that term.
- * sem_attr.adb: Delete functions Statically_Denotes_Object and
- Statically_Denotes_Entity; these two functions have been moved
- to package Sem_Util. Replace call to Statically_Denotes_Object
- with a call to Statically_Names_Object as per AI12-0217 (a
- binding interpretation, so no Ada_Version check).
- * exp_ch9.adb (Expand_Entry_Barrier.Is_Simple_Barrier): Change
- name of function (it was previously Is_Simple_Barrier_Name)
- because the function should return True in the case of a static
- expression; implement this requirement. Change function to
- include a call to Statically_Names_Object so that, for Ada_2020
- and later, it will return True for appropriate subcomponent
- names.
- (Expand_Entry_Barrier.Is_Pure_Barrier): Handle
- N_Indexed_Component and N_Selected_Component cases by calling
- Statically_Names_Object.
- (Expand_Entry_Barrier): Reorganize to treat Simple_Barriers and
- Pure_Barriers more uniformly. Prevent cascaded errors.
-
-2020-06-12 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch12.adb (Find_Matching_Actual): Add guard on search loops
- to detect a compilation error when using a compiler built
- without assertions.
- (Instantiate_Formal_Subprogram): Create a new subprogram name
- for the actual only if formal has contract aspects and expansion
- is enabled.
-
-2020-06-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_aggr.adb: Add with and use clauses for Sem_Mech.
- (Get_Base_Object): New function to get the base object of a node.
- (In_Place_Assign_OK): Add Target_Object parameter. Deal with a
- qualified expression on entry. Remove short-circuit for array
- aggregates with a single "others" choice. Do not look into the
- components of the aggregate if the parent is an allocator.
- (Check_Component): Add T_OK parameter and rewrite.
- (Safe_Component): Invoke Check_Component with T_OK set to False.
- (Convert_To_Assignments): Try to use an in-place assignment for
- any target; for that, call Get_Base_Object on the target and pass
- the result to In_Place_Assign_OK.
- (Expand_Array_Aggregate): Use Parent_Kind and Parent_Node more
- consistently. For an assignment, call Get_Base_Object on the
- target and pass the result to In_Place_Assign_OK.
-
-2020-06-12 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * socket.c (__gnat_minus_500ms): Use GetVersionEx to detect
- Windows Server version.
- * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): Remade to
- Boolean constant.
- * libgnat/g-socket.adb (Set_Socket_Option): Use
- Minus_500ms_Windows_Timeout constant instead of function call.
-
-2020-06-12 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-coinho.ads, libgnat/a-coinho.adb,
- libgnat/a-coinho__shared.ads, libgnat/a-coinho__shared.adb
- (Swap): New procedure.
-
-2020-06-12 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch6.adb (Expand_N_Subprogram_Declaration): Do nothing for
- a subprogram declared in a protected body.
- * exp_ch9.ads, exp_ch9.adb
- (Build_Private_Protected_Declaration): Moved to sem_ch6.adb.
- (Expand_N_Protected_Body): Do nothing for a subprogram declared
- in a protected body.
- * sem_ch6.adb (Build_Internal_Protected_Declaration): Moved from
- exp_ch9.adb and renamed and fixed to ensure in particular that
- such subprograms have convention Intrinsic and have no protected
- version.
- (Analyze_Subprogram_Body_Helper): Call
- Build_Internal_Protected_Declaration.
- (Move_Pragmas): Moved up and merged with the more general
- version from Build_Private_Protected_Declaration. We only want
- to copy selected pragmas, most pragmas are not suitable for a
- copy on the spec.
-
-2020-06-12 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch6.adb (Check_Overriding_Indicatior): Reject an
- overriding indicator on a subprogram declared within a protected
- body.
-
-2020-06-12 Piotr Trojanek <trojanek@adacore.com>
-
- * contracts.adb, einfo.adb, sem_ch4.adb, sem_ch6.adb,
- sem_res.adb, sem_util.adb: Replace Ekind_In with Is_Entry.
-
-2020-06-12 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_res.adb (Resolve_Entry_Call): Add call to
- Warn_On_Overlapping_Actuals.
-
-2020-06-12 Arnaud Charlet <charlet@adacore.com>
-
- * aspects.ads (Is_Representation_Aspect): New array.
- * sem_ch13.adb (Analyze_Aspect_Specifications): Check
- 13.1(9.2/5) for representation aspects.
-
-2020-06-12 Bob Duff <duff@adacore.com>
-
- * exp_put_image.ads, exp_put_image.adb (Preload_Sink): Procedure
- for preloading type Sink. This has the side effect of loading
- various dependents, including Ada.Strings.UTF_Encoding.
- (Enable_Put_Image): Disable Put_Image in pre-2020 versions of
- Ada. This limitation can probably be lifted later. Enable for
- tagged types except in predefined units. Disable for CPP types;
- Put_Image is legal, just prints the type name.
- * sem_attr.adb (Check_Put_Image_Attribute): Don't complain about
- Put_Image of CPP types; instead call the "unknown" version of
- Put_Image.
- * sem_ch10.adb (Analyze_Compilation_Unit): Call Preload_Sink.
-
-2020-06-12 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify.
-
-2020-06-12 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_warn.adb (Warn_On_Overlapping_Actuals): Remove suppression
- for internal units.
-
-2020-06-12 Arnaud Charlet <charlet@adacore.com>
-
- * exp_strm.adb (Build_Elementary_Input_Call): Add support for 24
- bits elementary types.
- * rtsfind.ads: Add 24 bits integer streaming routines.
- * sem_ch13.adb (Analyze_Attribute_Definition_Clause
- [Attribute_Stream_Size]): Add support for 24 bits elementary
- types.
- * libgnat/s-stratt.ads, libgnat/s-stratt.adb,
- libgnat/s-stratt__xdr.adb: Add support for signed and unsigned
- 24 bits integers.
-
-2020-06-12 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Get_Discr_Value): Cleanup.
-
-2020-06-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * rtsfind.ads (RTU_Id): Add System_Address_To_Access_Conversions.
- * sem_elab.adb (Elaboration_Phase_Active): Alphabetize.
- (Finalize_All_Data_Structures): Likewise.
- (Error_Preelaborated_Call): New procedure.
- (Build_Call_Marker): Set Is_Preelaborable_Call flag in marker.
- (Build_Access_Marker): Likewise.
- (Build_Subprogram_Invocation): Likewise.
- (Build_Task_Activation): Likewise.
- (Check_Preelaborated_Call): Return when the call is preelaborable.
- Call Error_Preelaborated_Call to give the error otherwise.
- (Check_Elab_Call): Likewise.
- * sem_util.adb (Is_Preelaborable_Function): New predicate.
- (Is_Non_Preelaborable_Construct.Visit): Recurse on the
- Explicit_Actual_Parameter field of N_Parameter_Association.
- (Is_Non_Preelaborable_Construct.Visit_Subexpression): In Ada 2020,
- for a call to a preelaborable function, visit the parameter list;
- otherwise, raise Non_Preelaborable exception.
- (Is_Preelaborable_Construct): Likewise, but recursively check the
- parameters instead and return false upon failure, otherwise true.
- * sinfo.ads (Is_Preelaborable_Call): New flag in call marker nodes.
- (Is_Preelaborable_Call): New inline function.
- (Set_Is_Preelaborable_Call): New inline procedure.
- * sinfo.adb (Is_Preelaborable_Call): New inline function.
- (Set_Is_Preelaborable_Call): New inline procedure.
-
-2020-06-12 Bob Duff <duff@adacore.com>
-
- * stringt.ads: Remove "use System;".
-
-2020-06-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch4.adb (Try_Container_Indexing): Replace call to
- First_Discriminant by Get_Reference_Discriminant to get the
- reference discriminant.
- * sem_ch13.adb (Check_Indexing_Functions): Likewise.
- * sem_ch5.adb (Preanalyze_Range): Call Get_Reference_Discriminant
- to get the reference discriminant.
- * sem_util.adb (Is_OK_Variable_For_Out_Formal): Treat all
- Ada 2012 implicit dereferences in only one place.
- (Is_Variable): Minor tweak.
-
-2020-06-12 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch12.adb (Has_Contracts): New predicate to check whether a
- formal subprogram carries an aspect specification for a pre- or
- postcondition.
- (Build_Subprogram_Wrappers): If actual is overloaded, create a
- new name to be used in call inside wrapper body. This names
- carries the interpretations of the actual, and is resolved when
- the body is analyzed.
- (Build_Subprogram_Body_Wrapper): Use this generated name in
- call.
- (Build_Subprogram_Decl_Wrapper): Build profile of wrapper from
- the profile of formal, and reset type entities for subsequent
- analysis.
-
-2020-06-12 Bob Duff <duff@adacore.com>
-
- * debug.adb: Remove usage of -gnatd_z.
- * exp_attr.adb, exp_put_image.ads, exp_put_image.adb: Clean up
- the enable/disable code. If Put_Image is disabled for a type,
- systematically call the "unknown" version. Improve comments.
- Consolidate workarounds. Remove usage of -gnatd_z.
-
-2020-06-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_elab.adb: Fix typos in comments.
-
-2020-06-12 Justin Squirek <squirek@adacore.com>
-
- * sem_util.adb (Object_Access_Level): Add processing of implicit
- dereferences.
-
-2020-06-12 Bob Duff <duff@adacore.com>
-
- * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
- libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb,
- libgnat/a-nbnbre.ads: Update Put_Image, and uncomment the aspect
- specification. Add pragmas Ada_2020.
- * libgnat/a-stouut.ads, libgnat/a-stteou.ads: Add Preelaborate,
- because the Big_Numbers packages have Preelaborate, and now
- depend on these Text_Output packages.
-
-2020-06-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (No_Return): Document it for all subprograms.
- * einfo.adb (Set_No_Return): Adjust assertion accordingly.
- * sem_ch3.adb (Check_Abstract_Overriding): Implement the
- check prescribed by RM 6.5.1(6/2) here instead of...
- (Derive_Subprogram): Adjust comment accordingly.
- * sem_disp.adb (Override_Dispatching_Operation): ...here.
- Remove superfluous return statement.
- * sem_ch6.adb (Check_No_Return_Expression): New procedure.
- (Analyze_Function_Return): Call it to implement the check
- prescribed by AI12-0269 for simple return statements of
- No_Return functions, and also checks extended statements.
- (Analyze_Return_Statement): Only give an error on a return
- statement in No_Return procedures. Use idiomatic form.
- * sem_ch8.adb (Analyze_Subprogram_Renaming): Adjust error
- message for No_Return renaming subprogram.
- * sem_prag.adb (Analyze_Pragma) <Pragma_No_Return>: Accept
- it on functions and generic functions in Ada 2020.
-
-2020-06-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_res.adb (Resolve_Implicit_Dereference): In an instance,
- reset the type of the prefix if it is private before building
- the dereference.
-
-2020-06-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_util.adb (Safe_Unchecked_Type_Conversion): Add missing
- Is_Type guard before calling Has_Discriminants on Etype.
-
-2020-06-11 Bob Duff <duff@adacore.com>
-
- * libgnat/a-nbnbin__gmp.adb: There's no Optional_Big_Integer
- anymore. Invalid_Big_Integer is not used.
- Greatest_Common_Divisor returns Big_Positive.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Get_Value): Refine type of the Compon parameter.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Resolve_Record_Aggregate): Refine type of
- Others_Box.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * checks.adb, exp_ch7.adb, exp_ch9.adb, exp_smem.adb, lib.adb,
- nlists.adb, sem.adb, sem_aggr.adb, sem_ch3.adb, sem_ch6.adb,
- sem_ch8.adb, sem_dim.adb, sem_res.adb, sem_util.adb,
- sem_warn.adb: Replace uses of Next function with procedure.
-
-2020-06-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_pakd.ads: Add paragraph about scalar storage order.
- * exp_pakd.adb (Install_PAT): Do not set the scalar storage
- order of the PAT here but...
- (Set_PB_Type): ...here instead and...
- (Create_Packed_Array_Impl_Type): ...here as well.
- * rtsfind.ads (RE_Id): Add RE_Rev_Packed_Bytes{1,2,4}.
- (RE_Unit_Table): Likewise.
- * libgnat/s-unstyp.ads (Rev_Packed_Bytes1): New derived type.
- (Rev_Packed_Bytes2): Likewise.
- (Rev_Packed_Bytes4): Likewise.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch4.adb, sem_ch6.adb, sem_res.adb, sem_util.ads: Fix
- references to SPARK RM 7.1.3 rule numbers.
-
-2020-06-11 Ed Schonberg <schonberg@adacore.com>
-
- * sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify code,
- remove inner predicate Is_Covered_Formal, preserve warning for
- two overlapping composite types when only one is writable, and
- for two overlapping and writable elementary types.
-
-2020-06-11 Steve Baird <baird@adacore.com>
-
- * contracts.adb (Add_Contract_Item): Support specifying
- volatility refinement aspects for types.
- (Analyze_Contracts): Add call to Analyze_Type_Contract in the
- case of a contract for a type.
- (Freeze_Contracts): Add call to Analyze_Type_Contract in the
- case of a contract for a type.
- (Check_Type_Or_Object_External_Properties): A new procedure
- which performs the work that needs to be done for both object
- declarations and types.
- (Analyze_Object_Contract): Add a call to
- Check_Type_Or_Object_External_Properties and remove the code in
- this procedure which did much of the work that is now performed
- by that call.
- (Analyze_Type_Contract): Implement this new routine as nothing
- more than a call to Check_Type_Or_Object_External_Properties.
- * contracts.ads: Update comment for Add_Contract_To_Item because
- types can have contracts. Follow (questionable) precedent and
- declare new routine Analyze_Type_Contract as visible (following
- example of Analyze_Object_Contract), despite the fact that it is
- never called from outside of the package where it is declared.
- * einfo.adb (Contract, Set_Contract): Id argument can be a type;
- support this case.
- (Write_Field34_Name): Field name is "contract" for a type.
- * einfo.ads: Update comment describing Contract attribute.
- * sem_ch3.adb (Build_Derived_Numeric_Type): Is_Volatile should
- return same answer for all subtypes of a given type. Thus, when
- building the base type for something like type Volatile_1_To_10
- is range 1 .. 10 with Volatile; that basetype should be marked
- as being volatile.
- (Access_Type_Declaration): Add SPARK-specific legality check
- that the designated type of an access type shall be compatible
- with respect to volatility with the access type.
- * sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Add
- SPARK-specific legality check that an actual type parameter in
- an instantiation shall be compatible with respect to volatility
- with the corresponding formal type.
- * sem_ch13.adb (Analyze_Aspect_Specifications): Perform checks
- for aspect specs for the 4 volatility refinement aspects that
- were already being performed for all language-defined aspects.
- * sem_prag.adb (Analyze_External_Property_In_Decl_Part,
- Analyze_Pragma): External properties (other than No_Caching) may
- be specified for a type, including a generic formal type.
- * sem_util.ads: Declare new subprograms - Async_Readers_Enabled,
- Async_Writers_Enabled, Effective_Reads, Effective_Writes, and
- Check_Volatility_Compatibility.
- * sem_util.adb (Async_Readers_Enabled, Async_Writers_Enabled,
- Effective_Reads, Effective_Writes): Initial implementation of
- new functions for querying aspect values.
- (Check_Volatility_Compatibility): New procedure intended for use
- in checking all SPARK legality rules of the form "<> shall be
- compatible with respect to volatility with <>".
- (Has_Enabled_Property): Update comment because Item_Id can be a
- type. Change name of nested Variable_Has_Enabled_Property
- function to Type_Or_Variable_Has_Enabled_Property; add a
- parameter to that function because recursion may be needed,
- e.g., in the case of a derived typ). Cope with the case where
- the argument to Has_Enabled_Property is a type.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Add_Association): Add assertion about the formal
- parameters.
- (Propagate_Discriminants): Always add an explicit component
- association, so that an "others => <>" association is never
- needed.
-
-2020-06-11 Bob Duff <duff@adacore.com>
-
- * exp_put_image.adb (Build_Elementary_Put_Image_Call): If the
- underlying type is real, call Put_Image_Unknown.
- (Build_Unknown_Put_Image_Call): Pass the type name to
- Put_Image_Unknown.
- * libgnat/s-putima.ads, libgnat/s-putima.adb
- (Put_Image_Unknown): Add Type_Name parameter. Remove
- overly-detailed documentation of what it does; better to leave
- it open.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch3.adb (Build_Constrained_Array_Type,
- Build_Constrained_Discriminated_Type): Skip unnecessary loop
- iterations.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Build_Constrained_Itype): Move to Sem_Util.
- * sem_ch3.adb (Build_Subtype, Inherit_Predicate_Flags): Move...
- * sem_util.adb (Build_Subtype): Here. Add parameters for
- references to objects previously declared in enclosing scopes.
- (Inherit_Predicate_Flags): And here, because it is called by
- Build_Subtype.
- * sem_util.ads (Build_Overriding_Spec): Reorder alphabetically.
- (Build_Subtype): Moved from Sem_Ch3; comments updated.
- (Build_Constrained_Itype): Moved from Sem_Aggr; comments
- updated.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Case_Table_Type): Change index type from Nat to
- Pos.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Build_Constrained_Itype): Previously a declare
- block, now a separate procedure; the only change is that now
- New_Assoc_List might include components and an others clause,
- which we ignore (while we deal with discriminants exactly as we
- did before); extend a ??? comment about how this routine is
- different from the Build_Subtype
- (Resolve_Record_Aggregate): Create a constrained itype not just
- for the outermost record aggregate, but for its inner record
- aggregates as well.
-
-2020-06-11 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.adb (Build_Discriminant_Checks): Build an explicit
- dereference when the type is an access type.
- * exp_atag.adb (Build_CW_Membership): Add explicit dereferences.
- (Build_Get_Access_Level): Likewise.
- (Build_Get_Alignment): Likewise.
- (Build_Inherit_Prims): Likewise.
- (Build_Get_Transportable): Likewise.
- (Build_Set_Size_Function): Likewise.
- * exp_ch3.adb (Build_Offset_To_Top_Function): Likewise.
- * exp_ch4.adb (Expand_Allocator_Expression): Likewise.
- (Expand_N_Indexed_Component ): Remove code dealing with implicit
- dereferences.
- (Expand_N_Selected_Component): Likewise.
- (Expand_N_Slice): Likewise.
- * exp_ch9.adb (Add_Formal_Renamings): Add explicit dereference.
- (Expand_Accept_Declarations): Likewise.
- (Build_Simple_Entry_Call): Remove code dealing with implicit
- dereferences.
- (Expand_N_Requeue_Statement): Likewise.
- * exp_disp.adb (Expand_Dispatching_Call): Build an explicit
- dereference when the controlling type is an access type.
- * exp_spark.adb (Expand_SPARK_N_Selected_Component): Delete.
- (Expand_SPARK_N_Slice_Or_Indexed_Component): Likewise.
- (Expand_SPARK): Do not call them.
- * sem_ch4.adb (Process_Implicit_Dereference_Prefix): Delete.
- (Process_Indexed_Component): Call Implicitly_Designated_Type
- to get the designated type for an implicit dereference.
- (Analyze_Overloaded_Selected_Component): Do not insert an
- explicit dereference here.
- (Analyze_Selected_Component): Likewise.
- (Analyze_Slice): Call Implicitly_Designated_Type to get the
- designated type for an implicit dereference.
- * sem_ch8.adb (Has_Components): New predicate extracted from...
- (Is_Appropriate_For_Record): ...this. Delete.
- (Is_Appropriate_For_Entry_Prefix): Likewise.
- (Analyze_Renamed_Entry): Deal with implicit dereferences.
- (Find_Selected_Component): Do not insert an explicit dereference
- here. Call Implicitly_Designated_Type to get the designated type
- for an implicit dereference. Call Has_Components, Is_Task_Type
- and Is_Protected_Type directly. Adjust test for error.
- * sem_res.adb (Resolve_Implicit_Dereference): New procedure.
- (Resolve_Call): Call Resolve_Indexed_Component last.
- (Resolve_Entry): Call Resolve_Implicit_Dereference on the prefix.
- (Resolve_Indexed_Component): Call Implicitly_Designated_Type to
- get the designated type for an implicit dereference and
- Resolve_Implicit_Dereference on the prefix at the end.
- (Resolve_Selected_Component): Likewise.
- (Resolve_Slice): Likewise. Do not apply access checks here.
- * sem_util.ads (Implicitly_Designated_Type): Declare.
- * sem_util.adb (Copy_And_Maybe_Dereference): Simplify.
- (Implicitly_Designated_Type): New function.
- (Object_Access_Level): Fix typo.
- * sem_warn.adb (Check_Unset_Reference): Test Comes_From_Source
- on the original node.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_disp.adb: Minor reformatting.
- * exp_aggr.adb (Is_Static_Dispatch_Table_Aggregate): Recognize
- aggregates of the Ada.Tags.Object_Specific_Data type as static.
- * sem_aggr.adb (Check_Static_Discriminated_Subtype): Deconstruct
- and do not call it from Build_Constrained_Itype.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_disp.adb (Make_Secondary_DT): Internally generated OSD
- tables are now constant.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_aggr.adb (Backend_Processing_Possible): Remove useless
- call.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * opt.ads (Building_Static_Dispatch_Tables): Fix punctuation in
- comment.
-
-2020-06-11 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-stposu.ads (Root_Storage_Pool_With_Subpools,
- Root_Subpool): Mark with Preelaborable_Initialization.
-
-2020-06-11 Javier Miranda <miranda@adacore.com>
-
- * exp_ch9.adb (Expand_N_Conditional_Entry_Call): Replace call to
- New_Copy_List by calls to the new routine
- New_Copy_Separate_List.
- * sem_util.ads (New_Copy_Separate_List, New_Copy_Separate_Tree):
- New routines.
- * sem_util.adb (New_Copy_Separate_List, New_Copy_Separate_Tree):
- New routines.
- (New_Copy_Tree): Extend the machinery that detects syntactic
- nodes to handle lists of indentifiers with field More_Ids;
- otherwise such nodes are erroneously handled as semantic nodes.
- Copy aspect specifications attached to nodes.
- * sem_ch12.adb (Copy_Generic_Node): Protect reading attribute
- Etype.
-
-2020-06-11 Bob Duff <duff@adacore.com>
-
- * sem_ch13.adb (Analyze_Aspect_Specifications): Do not set the
- Has_Predicates flag when the Predicate_Failure aspect is seen.
- It is legal (but pointless) to use this aspect without a
- predicate. If we set the flag, we generate a half-baked
- Predicate procedure, and if that procedure is nested, it causes
- unnesting to crash.
-
-2020-06-11 Bob Duff <duff@adacore.com>
-
- * exp_put_image.adb (Build_Record_Put_Image_Procedure): Remove
- special processing of protected types, because those are handled
- by Build_Protected_Put_Image_Call.
- (Enable_Put_Image): Use the switch -gnatd_z to control enabling
- of Put_Image. Disable Put_Image for types in Remote_Types
- packages.
- * debug.adb: Document -gnatd_z switch.
- * exp_imgv.adb, libgnat/a-stteou.ads, opt.ads: Minor cleanups.
-
-2020-06-11 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_warn.adb (Warn_On_Overlapping_Actuals): Add label to the
- outer loop and use it in the exit statement.
-
-2020-06-11 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * exp_ch3.adb (Build_Assignment): Generate predicate check if
- subtype mark has predicate.
-
-2020-06-11 Justin Squirek <squirek@adacore.com>
-
- * sem_util.adb (Expand_N_Attribute_Reference): Use original
- nodes where required to avoid looking at the expanded tree.
-
-2020-06-11 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-catizo.ads, libgnat/a-nbnbin.ads,
- libgnat/a-nbnbre.ads, libgnat/a-nubinu.ads,
- libgnat/s-aoinar.ads, libgnat/s-aomoar.ads,
- libgnat/s-aotase.ads, libgnat/s-stopoo.ads: Remove aspects that
- we will not implement.
-
-2020-06-11 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-aoinar.adb (Atomic_Fetch_And_Add,
- Atomic_Fetch_And_Subtract): Add fallback using
- compare-and-exchange, in case the integer type does not map to a
- machine type.
-
-2020-06-10 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-aomoar.ads, libgnat/s-aomoar.adb: New files.
- * libgnat/s-atopar.ads: Move...
- * libgnat/s-aoinar.ads: Here.
- * libgnat/s-atopar.adb: Move...
- * libgnat/s-aoinar.adb: Here.
- * impunit.adb: Update list of runtime files.
- * Makefile.rtl (GNATRTL_NONTASKING_OBJS=): Adjust.
-
-2020-06-10 Arnaud Charlet <charlet@adacore.com>
-
- * snames.ads-tmpl (Name_Characters_Assertion_Check,
- Name_Containers_Assertion_Check,
- Name_Interfaces_Assertion_Check, Name_IO_Assertion_Check,
- Name_Numerics_Assertion_Check, Name_Strings_Assertion_Check,
- Name_System_Assertion_Check): New constants.
- * types.ads (Characters_Assertion_Check,
- Containers_Assertion_Check, Interfaces_Assertion_Check,
- IO_Assertion_Check, Numerics_Assertion_Check,
- Strings_Assertion_Check, System_Assertion_Check): New constants.
- (All_Checks): Update accordingly.
-
-2020-06-10 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * exp_ch3.adb (Build_Equivalent_Record_Aggregate): Return Empty
- if Etype of record component has predicates.
-
-2020-06-10 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch3.adb (Build_Init_Statements): Implement the notion of
- "require late initialization".
-
-2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_util.adb (Copy_And_Maybe_Dereference): Temporarily copy
- the parent node of the original tree when dereferencing.
-
-2020-06-10 Ed Schonberg <schonberg@adacore.com>
-
- * sem_warn.adb (Warn_On_Overlapping_Actuals): Add a warning when
- two actuals in a call overlap, both are composite types that may
- be passed by reference, and only one of them is writable.
-
-2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Expand_N_In): Use an expression with actions to
- insert the PE raise statement for the Unchecked_Union case.
-
-2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch4.adb (Analyze_Call): Use idiomatic condition.
- * sem_res.adb (Resolve_Call): Remove obsolete code.
-
-2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_util.adb (Copy_And_Maybe_Dereference): New function.
- (Build_Access_Record_Constraint): Use it to copy the prefix.
- (Build_Actual_Array_Constraint): Likewise.
- (Build_Actual_Record_Constraint): Likewise.
-
-2020-06-10 Bob Duff <duff@adacore.com>
-
- * sem_prag.adb (Invariant): Remove the pragma removing code. It
- doesn't work to remove the pragma, because various flags are set
- during Build_Invariant_Procedure_Declaration and
- Build_Invariant_Procedure_Body that need to be set to avoid the
- spurious warnings.
- * exp_util.adb (Make_Invariant_Call): Avoid calling the
- invariant-checking procedure if the body is empty. This is an
- optimization.
-
-2020-06-10 Vasiliy Fofanov <fofanov@adacore.com>
-
- * doc/gnat_ugn/gnat_utility_programs.rst: Fix gnatmetric
- switches description.
-
-2020-06-10 Arnaud Charlet <charlet@adacore.com>
-
- * repinfo-input.ads, repinfo-input.adb, repinfo.adb,
- repinfo.ads: Update header.
-
-2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_aggr.adb (In_Place_Assign_OK): Do not necessarily return
- false for a type with discriminants.
- (Convert_To_Assignments): Use Parent_Node and Parent_Kind more
- consistently. In the in-place assignment case, first apply a
- discriminant check if need be, and be prepared for a rewritten
- aggregate as a result.
-
-2020-06-10 Arnaud Charlet <charlet@adacore.com>
-
- * atree.adb, contracts.adb, debug.adb, freeze.adb,
- repinfo-input.adb, repinfo.adb, sem_attr.adb, sem_ch10.adb,
- sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb,
- sem_ch8.adb, sem_ch9.adb, sem_disp.adb, sem_eval.adb,
- sem_prag.adb: Remove more references to ASIS.
-
-2020-06-10 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-secsta.adb (Round_Up): Fix typo in exception
- message.
-
-2020-06-10 Piotr Trojanek <trojanek@adacore.com>
-
- * par-ch4.adb (P_Membership_Test): Fix typo in a grammar rule.
-
-2020-06-10 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove
- expansion of First and Last attributes.
-
-2020-06-10 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): Remove folding
- for Enum_Rep attribute.
- * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove
- duplicated code for folding Enum_Rep attribute.
- * sem_attr.adb (Eval_Attribute): Relax condition for folding
- Enum_Rep attribute; previously dead code is now executed when
- the attribute prefix is an enumeration literal; refine type in
- processing of Enum_Val.
-
-2020-06-10 Javier Miranda <miranda@adacore.com>
-
- * sem_ch3.adb (Analyze_Declarations): Adjust the machinery that
- takes care of late body overriding of initialize, adjust,
- finalize. Remove ASIS mode code.
-
-2020-06-10 Ed Schonberg <schonberg@adacore.com>
-
- * einfo.ads (Access_Subprogram_Wrapper): New attribute of
- Subprogram_Type entities. Denotes subprogram constructed for
- Access_To_Subprogram types that include pre- and postconditions.
- * einfo.adb: Subprogram bodies for Access_Subprogram_Wrapper.
- * exp_ch6.adb (Expand_Call): An indirect call through an
- Access_To_subprogram that includes contracts is rewritten as a
- call to the corresponding Access_ ubprogram_Wrapper. Handle
- derived types that inherit contract from parent.
- * sem_prag.adb (Build_Access_Subprogram_Wrapper): Build
- subprogram declaration for subprogram that incorporates the
- contracts of an Access_To_Subprogram type declaration. Build
- corresponding body and attach it to freeze actions for type.
- * sem_util.ads, sem_util.adb (Is_Access_Subprogram_Wrapper):
- Utility that uses signature of the subprogram to determine
- whether it is a generated wrapper for an Access_To_Subprogram
- type.
-
-2020-06-10 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * par-ch6.adb (P_Subprogram): Make sure the specification
- belongs to a procedure.
-
-2020-06-10 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (All_Membership_Choices_Static): Assert an AST
- property documented in sinfo.ads and simplify an excessive
- condition.
-
-2020-06-10 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): Fix a copy-paste
- mistake in comment.
- * sem_res.adb (Flag_Effectively_Volatile_Objects): Fix a type in
- the SPARK RM rule number.
- * exp_ch4.adb, sem_util.adb: Fix style in single line comments.
-
-2020-06-10 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aux.ads, sem_aux.adb (Get_Low_Bound): Remove.
-
-2020-06-10 Arnaud Charlet <charlet@adacore.com>
-
- * scn.adb (Determine_License): Remove.
-
-2020-06-10 Justin Squirek <squirek@adacore.com>
-
- * exp_ch3.adb (Expand_N_Object_Declaration): Add condition to
- handle processing of objects initialized by a call to a function
- return an anonymous access type.
- * exp_ch6.adb, exp_ch6.ads
- (Has_Unconstrained_Access_Discriminants): Moved to sem_util.adb
- (Needs_Result_Accessibility_Level): Moved to sem_util.adb
- * sem_util.adb, sem_util.ads
- (Has_Unconstrained_Access_Discriminants): Moved from exp_ch6.adb
- (Needs_Result_Accessibility_Level): Moved from exp_ch6.adb
- * sem_res.adb (Valid_Conversion): Add condition for the special
- case where the operand of a conversion is the result of an
- anonymous access type
-
-2020-06-10 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * par-ch6.adb (P_Subprogram): Reject duplicate subprogram
- declarations.
-
-2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch6.adb (Insert_Post_Call_Actions): Deal with the context
- of an if-expression and with a call written in prefixed notation.
-
-2020-06-10 Gary Dismukes <dismukes@adacore.com>
-
- * einfo.ads: Minor reformatting of a comment.
- * exp_aggr.adb: Minor reformatting and a grammar correction.
- * exp_attr.adb: Minor reformatting and a typo fix in some
- comments.
- * sem_ch12.adb: Fix three typos in comments.
-
-2020-06-09 Javier Miranda <miranda@adacore.com>
-
- * sem_ch6.adb (New_Overloaded_Entity): Add missing call to check
- subtype conformance of overriding dispatching primitive.
- * sem_eval.adb (Subtypes_Statically_Match): Handle derivations
- of private subtypes.
- * libgnat/g-exptty.adb, libgnat/g-exptty.ads
- (Set_Up_Communications): Fix the profile since null-exclusion is
- missing in the access type formals.
- * sem_disp.ads (Check_Operation_From_Private_View): Adding
- documentation.
-
-2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (XEINFO section): Update format description.
- (Is_Subprogram_Or_Entry): Move pragma to regular section.
- (Is_Subprogram_Or_Generic_Subprogram): Likewise.
- * xeinfo.adb (Get_B4): Rename to...
- (Get_B0): ...this.
- (Translate_Expr): New procedure extracted from...
- (XEinfo): ...here. Try to apply Get_B0 first and then
- call Translate_Expr to translate supported constructs.
-
-2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch6.adb (Freeze_Subprogram): Deal with convention C_Family.
- * freeze.adb (Freeze_Profile): Likewise. Add missing guard.
- * sem_mech.adb (Set_Mechanisms): Likewise.
- * lib-xref.adb (Output_Import_Export_Info): Ditto for C_Variadic.
- * repinfo.adb (List_Subprogram_Info): Likewise.
- * sem_prag.adb (Set_Convention_From_Pragma): Move main checks for
- Stdcall to...
- (Process_Convention): ...here. Add checks for C_Variadic.
- * snames.ads-tmpl: Add Name_C_Variadic_0 .. Name_C_Variadic_16.
- Use consistent format for subtype declarations.
- (Convention_Id): Add Convention_C_Variadic_0 .. C_Variadic_16
- and move Convention_CPP up.
- (Convention_C_Family): New subtype of Convention_Id.
- (Convention_C_Variadic): Likewise.
- (Foreign_Convention): Use explicit upper bound.
- Add pragma Inline for Is_Configuration_Pragma_Name,
- Is_Function_Attribute_Name, Is_Internal_Attribute_Name
- and Is_Procedure_Attribute_Name.
- * snames.adb-tmpl (Get_Convention_Id): Deal with Name_Variadic_n.
- (Get_Convention_Name): Deal with Convention_Variadic_n.
- * types.h (Convention_Id): New typedef.
- * xsnamest.adb (Name2): New variable.
- (Is_Conv): New pattern.
- (Get_Subt1): Likewise.
- (Get_Subt2): Likewise.
- Output subtypes of Convention_Id into the C header file.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch3.adb, exp_ch4.adb, exp_ch6.adb, exp_ch9.adb,
- exp_disp.adb, exp_util.adb: Add comments related to errors that
- should be moved to semantic analysis. Also replace "?" with "??"
- in warning messages.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-strunb__shared.ads, libgnat/a-strunb__shared.adb
- (Reference, Unreference): No-op for Empty_Shared_String.
- Remove unneeded calls to Reference.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch5.adb (Expand_N_Assignment): Remove kludge for
- AI05-0087.
- * sem_ch12.adb (Validate_Derived_Type_Instance): Implement
- AI05-0087 retroactively since it's a binding interpretation.
-
-2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (Has_Foreign_Convention): Fix description.
- (Component_Alignment): Move around.
- (Has_DIC): Likewise.
- (Has_Interrupt_Handler): Likewise.
- (Has_Invariants): Likewise.
- (Is_Atomic_Or_VFA): Likewise.
- (Next_Index): Likewise.
- (Scope_Depth): Likewise.
- (Init_Component_Size): Likewise.
- (Init_Component_Location): Likewise.
- (Init_Size): Likewise.
- (Inline Pragmas for functions): Add Corresponding_Function,
- Corresponding_Procedure, Entry_Max_Queue_Lengths_Array,
- Finalize_Storage_Only, Has_DIC, Has_Invariants,
- Initialization_Statements, Is_Anonymous_Access_Type,
- Next_Stored_Discriminant, Address_Clause, Alignment_Clause,
- Float_Rep, Has_Foreign_Convention, Has_Non_Limited_View,
- Is_Constant_Object, Is_Discriminal, Is_Finalizer, Is_Null_State,
- Is_Prival, Is_Protected_Component, Is_Protected_Record_Type,
- Is_Subprogram_Or_Entry, Is_Task_Record_Type, Size_Clause,
- Stream_Size_Clause, Type_High_Bound, Type_Low_Bound, Known_*,
- Unknown_*.
- (Inline Pragmas for procedures): Add Set_Corresponding_Function,
- Set_Corresponding_Procedure, Set_Finalize_Storage_Only,
- Set_Float_Rep, Set_Initialization_Statements,
- Init_Normalized_First_Bit, Init_Normalized_Position,
- Init_Normalized_Position_Max.
- * einfo.adb (Was_Hidden): Move around.
- (Is_Packed_Array): Likewise.
- (Model_Emin_Value): Likewise.
- (Model_Epsilon_Value): Likewise.
- (Model_Mantissa_Value): Likewise.
- (Model_Small_Value): Likewise.
-
-2020-06-09 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Require
- exact match between formal and actual for aspects Atomic and
- Volatile only for formal derived types.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * exp_util.adb (Side_Effect_Free): Improve handling of
- N_Aggregate.
-
-2020-06-09 Ghjuvan Lacambre <lacambre@adacore.com>
-
- * sem_res.adb (Resolve_Qualified_Expression): Use Subtype_Mark
- type.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * exp_aggr.adb (Max_Aggregate_Size): New function to factorize
- code.
- (Convert_To_Positional, Aggr_Size_OK): Use Max_Aggregate_Size.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * sem_util.ads, sem_util.adb (Set_Debug_Info_Defining_Id): New.
- * exp_ch3.adb, exp_ch8.adb: Call Set_Debug_Info_Defining_Id when
- relevant.
-
-2020-06-09 Justin Squirek <squirek@adacore.com>
-
- * einfo.ads (Returns_By_Ref): Modify documentation to reflect
- that Returns_By_Ref can be applied to E_Subprogram_Type
- entities.
-
-2020-06-09 Justin Squirek <squirek@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference): Modify expansion
- of 'Overlaps_Storage to take into account zero sized arrays.
-
-2020-06-09 Bob Duff <duff@adacore.com>
-
- * bindo-graphs.adb, bindo-graphs.ads: For each invocation graph,
- record the corresponding library graph.
- * bindo-writers.adb (Write_Invocation_Graph_Vertex): Print the
- lib item name. Remove library graph parameters.
- * bindo-augmentors.adb, bindo-augmentors.ads,
- bindo-builders.adb, bindo-diagnostics.adb,
- bindo-diagnostics.ads, bindo-elaborators.adb: Remove library
- graph parameters.
-
-2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.adb (Apply_Predicate_Check): Extend trick used for
- aggregates to qualified aggregates and object declarations
- * einfo.ads (Has_Own_DIC): Mention the underlying full view.
- (Has_Own_Invariants): Likewise.
- (Has_Predicates): Likewise.
- * exp_util.adb (Build_DIC_Procedure_Declaration): Do not deal
- with base types explicitly but with underlying full views.
- (Build_Invariant_Procedure_Declaration): Likewise.
- * sem_ch13.adb (Build_Predicate_Functions): Do not deal with
- the full view manually but call Propagate_Predicate_Attributes
- to propagate attributes to views.
- (Build_Predicate_Function_Declaration): Likewise.
- * sem_ch3.adb (Build_Assertion_Bodies_For_Type): Build bodies
- for private full views with an underlying full view.
- (Build_Derived_Private_Type): Small comment tweak.
- (Complete_Private_Subtype): Call Propagate_Predicate_Attributes.
- (Process_Full_View): Do not deal with base types explicitly for
- DIC and Invariant attributes. Deal with underlying full views
- for them. Call Propagate_Predicate_Attributes and deal with
- underlying full views for them.
- * sem_ch7.adb (Preserve_Full_Attributes): Do not cross propagate
- DIC and Invariant attributes between full type and its base type.
- Propagate Predicate attributes from the full to the private view.
- * sem_ch9.adb (Analyze_Protected_Type_Declaration): Likewise.
- (Analyze_Task_Type_Declaration): Likewise.
- * sem_util.ads (Get_Views): Remove Full_Base parameter and add
- UFull_Typ parameter.
- (Propagate_Predicate_Attributes): New procedure.
- * sem_util.adb (Get_Views): Remove Full_Base parameter and add
- UFull_Typ parameter. Retrieve the Corresponding_Record_Type
- from the underlying full view, if any.
- (Propagate_DIC_Attributes): Remove useless tests.
- (Propagate_Invariant_Attributes): Likewise.
- (Propagate_Predicate_Attributes): New procedure.
-
-2020-06-09 Justin Squirek <squirek@adacore.com>
-
- * exp_ch5.adb (Expand_Predicated_Loop): Perserve the original
- loop identifier within the expansion.
-
-2020-06-09 Bob Duff <duff@adacore.com>
-
- * bindo-graphs.ads (Library_Graph_Edge_Kind): Reorder enumerals
- to reflect the order of adding edges. Clarify comments.
- * bindo-graphs.adb (Add_Edge_Kind_Check): Correct the
- assertions. Reorder the "when"s to match the order of adding
- edges, and therefore the order of enumerals in type
- Library_Graph_Edge_Kind. Change names to "Old_" and "New_" to
- clarify what's what. Combine Invocation_Edge into the "<="
- test. Fix the "raise Program_Error" message, which was
- backwards.
-
-2020-06-09 Bob Duff <duff@adacore.com>
-
- * bindo-graphs.adb (Add_Edge_Kind_Check): Add the Image of the
- old and new Kinds to the raise Program_Error message.
-
-2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch3.adb (Is_Visible_Component): Do not special-case
- bodies of instances.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * exp_ch4.adb (Expand_N_In): Fix handling of null exclusion.
-
-2020-06-09 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Require
- exact match between formal and actual for aspects Atomic,
- Atomic_Component, Volatile, and Volatile_Components.
-
-2020-06-09 Bob Duff <duff@adacore.com>
-
- * doc/gnat_ugn/gnat_utility_programs.rst: Add documentation for
- the --no-separate-return switch of gnatpp.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * sem_warn.adb (Warn_On_Constant_Valid_Condition): Add proper
- warning tag.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * sem_type.adb (Covers): Fix implementation of AI05-0149.
- * sem_res.adb: Fix typo.
-
-2020-06-09 Ed Schonberg <schonberg@adacore.com>
-
- * exp_ch9.adb (Build_Master_Renaming): Make name in renaming
- declaration unique by adding a numeric suffix, to prevent
- accidental name conflict when several instantiations of a
- package containing an access_to_incomplete type that designate
- tasks appear in the same scope.
-
-2020-06-09 Piotr Trojanek <trojanek@adacore.com>
-
- * libgnarl/a-synbar.ads, libgnarl/a-synbar.adb,
- libgnarl/a-synbar__posix.ads, libgnarl/a-synbar__posix.adb
- (Ada.Synchronous_Barriers): Annotate with SPARK_Mode => Off.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * sem_eval.adb (Eval_Relational_Op, Eval_String_Literal,
- Eval_Type_Conversion): Relax rules on relational operators and
- type conversions of static string types.
-
-2020-06-09 Arnaud Charlet <charlet@adacore.com>
-
- * sem_util.ads, sem_util.adb (Is_Partially_Initialized_Type):
- Take Default_Value and Default_Component_Value into account.
- * sem_ch3.adb (Analyze_Object_Declaration): Update comment.
-
-2020-06-09 Bob Duff <duff@adacore.com>
-
- * bindo-graphs.adb (Add_Edge_Kind_Check): Disable failing part
- of the assertion.
-
-2020-06-08 Steve Baird <baird@adacore.com>
-
- * sem_prag.adb (Analyze_Pragma.Set_Ravenscar_Profile): Add
- appropriate call to Set_Restriction_No_Dependence if Ada_Version
- >= Ada2012 and Profile is either Ravenscar or a GNAT-defined
- Ravenscar variant (i.e., not Jorvik).
-
-2020-06-08 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch5.adb: Fix typo.
- * sem_ch8.adb (Analyze_Renamed_Primitive_Operation): Check that
- the prefix of a prefixed view must be renamable as an object.
-
-2020-06-08 Arnaud Charlet <charlet@adacore.com>
-
- * sem_cat.ads: Fix typo.
- * sem_cat.adb (Validate_Remote_Access_To_Class_Wide_Type): Add
- handling of N_Attribute_Definition_Clause.
- * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Call
- Validate_Remote_Access_To_Class_Wide_Type for Storage_Size and
- Storage_Pool.
- * sem_attr.adb, exp_ch4.adb: Update comments.
-
-2020-06-08 Justin Squirek <squirek@adacore.com>
-
- * sem_ch4.adb (Analyze_One_Call): Add extra condition to the
- predicate for deciding when a given controlled call is visible.
-
-2020-06-08 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Port
- changes in frontend expander.
-
-2020-06-08 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_ch13.adb (All_Membership_Choices_Static): Fix style.
-
-2020-06-08 Steve Baird <baird@adacore.com>
-
- * libgnat/s-rident.ads: Add Jorvik to the Profile_Name
- enumeration type. Add an element for Jorvik to the array
- aggregate that is the initial value of the constant
- Profile_Info.
- * targparm.adb (Get_Target_Parameters): Handle "pragma Profile
- (Jorvik);" similarly to "pragma Profile (Ravenscar);".
- * snames.ads-tmpl: Declare Name_Jorvik Name_Id. Unlike
- Ravenscar, Jorvik is not a pragma name and has no corresponding
- element in the Pragma_Id enumeration type; this means that its
- declaration must not occur between those of First_Pragma_Name
- and Last_Pragma_Name.
- * sem_prag.adb (Analyze_Pragma): Add call to
- Set_Ravenscar_Profile for Jorvik, similar to the existing calls
- for Ravenscar and the GNAT Ravenscar variants.
-
-2020-06-08 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch8.adb (Analyze_Object_Renaming): Update Get_Object_Name
- to go through N_Qualified_Expression and N_Type_Conversion. Fix
- another case of wrong usage of E_Anonymous_Access_Type instead
- of Anonymous_Access_Kind.
- * sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Work
- on the original node.
- (Is_Aliased_View): Take into account N_Qualified_Expression.
-
-2020-06-08 Arnaud Charlet <charlet@adacore.com>
-
- * sem_eval.adb (Eval_Type_Conversion): Fix handling of
- enumeration to integer conversions.
- * exp_attr.adb (Expand_N_Attribute_Reference
- [Attribute_Enum_Rep]): Remove special casing for first-level
- renaming, best left to the general folding mechanism via
- Eval_Type_Conversion.
-
-2020-06-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * atree.adb (New_Copy): Do not clear Has_Dynamic_Range_Check.
- * checks.ads (Append_Range_Checks): Remove Flag_Node parameter.
- (Insert_Range_Checks): Likewise and remove default value of
- Static_Loc parameter.
- * checks.adb (Append_Range_Checks): Remove Flag_Node parameter.
- Do not test and set Has_Dynamic_Range_Check.
- (Insert_Range_Checks): Likewise and remove default value of
- Static_Loc parameter.
- * csinfo.adb (CSinfo): Remove 'L' from [NEUB]_Fields pattern and
- do not handle Has_Dynamic_Range_Check.
- * exp_ch5.adb (Expand_N_Assignment_Statement): Remove argument
- in call to Insert_Range_Checks.
- * sem_ch3.adb (Analyze_Subtype_Declaration): Do not fiddle
- with Has_Dynamic_Range_Check.
- (Process_Range_Expr_In_Decl): Remove argument in calls to
- Insert_Range_Checks and Append_Range_Checks.
- * sinfo.ads (Has_Dynamic_Range_Check): Delete.
- (Set_Has_Dynamic_Range_Check): Likewise.
- * sinfo.adb (Has_Dynamic_Range_Check): Delete.
- (Set_Has_Dynamic_Range_Check): Likewise.
- * treepr.adb (Print_Node): Do not print Has_Dynamic_Range_Check.
-
-2020-06-08 Steve Baird <baird@adacore.com>
-
- * sem_ch13.ads: Export new function
- All_Membership_Choices_Static.
- * sem_ch13.adb: Implement new function
- All_Membership_Choices_Static. This involves moving the
- functions Is_Static_Choice and All_Membership_Choices_Static,
- which were previously declared within the function
- Is_Predicate_Static, out to library level so that they can be
- called by the new function. The already-exisiting code in
- Is_Predicate_Static which became the body of
- All_Membership_Choices_Static is replaced with a call to the new
- function in order to avoid duplication.
- * exp_ch9.adb (Is_Pure_Barrier): Several changes needed to
- implement rules of AI12-0290 and RM D.7's definition of
- "pure-barrier-eligible". These changes include adding a call to
- the new function Sem_13.All_Membership_Choices_Static, as per
- the "see 4.9" in RM D.7(1.6/5).
-
-2020-06-08 Richard Kenner <kenner@adacore.com>
-
- * exp_unst.adb (Visit_Node): When visiting array attribute
- nodes, in addition to checking the type of Get_Referenced_Object
- of the prefix, also check the actual type of the prefix.
-
-2020-06-08 Gary Dismukes <dismukes@adacore.com>
-
- * checks.adb (Apply_Predicate_Check): Refine test for being in a
- subprogram body to account for no Corresponding_Body case,
- avoiding blowups arising due to other changes here.
- * exp_ch4.adb (Expand_N_Qualified_Expression): Apply predicate
- checks, if any, after constraint checks are applied.
- * sem_eval.ads (Check_Expression_Against_Static_Predicate): Add
- Check_Failure_Is_Error formal for conditionalizing warning vs.
- error messages.
- * sem_eval.adb (Check_Expression_Against_Static_Predicate):
- Issue an error message rather than a warning when the new
- Check_Failure_Is_Error formal is True. In the nonstatic or
- Dynamic_Predicate case where the predicate is known to fail,
- emit the check to ensure that folded cases get checks applied.
- * sem_res.adb (Resolve_Qualified_Expression): Call
- Check_Expression_Against_Static_Predicate, passing True for
- Check_Failure_Is_Error, to ensure we reject static predicate
- violations. Remove code that was conditionally calling
- Apply_Predicate_Check, which is no longer needed, and that check
- procedure shouldn't be called from a resolution routine in any
- case. Also remove associated comment about preventing infinite
- recursion and consistency with Resolve_Type_Conversion, since
- that handling was already similarly removed from
- Resolve_Type_Convesion at some point.
- (Resolve_Type_Conversion): Add passing of True for
- Check_Failure_Is_Error parameter on call to
- Check_Expression_Against_Static_Predicate, to ensure that static
- conversion cases that violate a predicate are rejected as
- errors.
-
-2020-06-08 Piotr Trojanek <trojanek@adacore.com>
-
- * snames.ads-tmpl (Name_SPARK): Restore after being deleted.
-
-2020-06-08 Arnaud Charlet <charlet@adacore.com>
-
- * exp_aggr.adb, exp_ch6.adb, par-ch11.adb, par-ch6.adb,
- par-ch7.adb, par-prag.adb, restrict.adb, restrict.ads,
- scans.ads, scng.adb, sem_aggr.adb, sem_attr.adb, sem_ch11.adb,
- sem_ch12.adb, sem_ch3.adb, sem_ch3.ads, sem_ch4.adb,
- sem_ch5.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_ch9.adb,
- sem_res.adb, sem_util.adb, sem_util.ads, snames.ads-tmpl,
- gnatbind.adb, libgnat/s-rident.ads,
- doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
- Remove processing of SPARK_05 restriction.
- * gnat_rm.texi: Regenerate.
- * opt.ads: Remove processing of old checksum which is now
- handled by gprbuild directly.
-
-2020-06-08 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch12.adb (Instantiate_Object): Relax rules related to null
- exclusions and generic objects. Handle all anonymous types
- consistently and not just E_Anonymous_Access_Type.
- * sem_ch8.adb (Analyze_Object_Renaming): Change wording so that
- it applies to both renamings and instantiations to avoid
- confusion.
-
-2020-06-08 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-textio.ads (File_Mode): Fix typo in comment.
-
-2020-06-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_res.adb (Resolve_Indexed_Component): Do not give a warning
- for a nonatomic component of an atomic array which is subject to
- an address clause in Ada 2020 mode.
- (Resolve_Selected_Component): Likewise for an atomic record.
-
-2020-06-08 Philippe Gil <gil@adacore.com>
-
- * doc/gnat_ugn/the_gnat_compilation_model.rst: in "Handling
- Files with Multiple Units" part documents gnatname use for
- unmodified files handling and gnatchop use for files
- refactoring.
- * gnat_ugn.texi: Regenerate.
-
-2020-06-08 Arnaud Charlet <charlet@adacore.com>
-
- * doc/gnat_rm/implementation_defined_attributes.rst:
- Enum_Rep/Enum_Val are standard Ada 202x attributes.
- * gnat_rm.texi: Regenerate.
-
-2020-06-08 Javier Miranda <miranda@adacore.com>
-
- * exp_aggr.adb (Safe_Component): Remove code that considers as
- unsafe components that are aggregates; such removal allows the
- frontend to proceed and evaluate if they are safe by means of
- invoking Safe_Aggregate.
-
-2020-06-08 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Apply
- standard expansion to attributes First and Last.
-
-2020-06-08 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_attr.adb, exp_util.ads, exp_util.adb (Get_Index_Subtype):
- Move from the body of Exp_Attr to Exp_Util and expose from the
- spec.
- * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Replace
- duplicated code with a call to Get_Index_Subtype.
-
-2020-06-08 Arnaud Charlet <charlet@adacore.com>
-
- * sem_ch8.adb (Analyze_Object_Renaming): Simplify code by moving
- many special cases to Is_Object_Reference and removing others by
- only checking renamings coming from sources.
- * sem_util.adb (Is_Object_Reference): Update for AI12-0226 and
- add more regular handling of 'Priority. Remove special cases no
- longer needed now that we are only checking renamings coming
- from sources.
-
-2020-06-08 Claire Dross <dross@adacore.com>
-
- * libgnat/a-cofove.adb (Insert_Space): The computation of Index
- generates a spurious compiler warning about a value not being in
- range for a statically dead branch. Silence it using pragma
- Warnings.
-
-2020-06-08 Bob Duff <duff@adacore.com>
-
- * bindo-graphs.adb (function Add_Edge): Rename
- Add_Edge_With_Return to Add_Edge; we can tell it returns because
- it's a function, and overloading seems appropriate in this case.
- If Activates_Task=True, and we're not going to add a new edge
- because an existing Pred-->Succ edge already exists, then set
- Activates_Task to True on the preexisting edge. This ensures
- that the message:
- info: use pragma Restrictions (No_Entry_Calls_In_Elaboration_Code)
- appears when appropriate, no matter in what order the edges
- happened to be processed.
- (procedure Add_Edge): Remove redundant assertions.
- (Activates_Task): Other kinds of edges can have
- Activates_Task=True. For example, if we had a With_Edge and
- then an Invocation_Edge with Activates_Task=True, then the
- With_Edge has Activates_Task set to True.
- (Add_Edge_Kind_Check): New procedure to prevent other bugs of
- this nature. For example, if we were to sometimes call Add_Edge
- for a Spec_Before_Body_Edge followed by Add_Edge for a
- With_Edge, and sometimes in the other order, that would cause a
- similar bug to what we're fixing here.
- (Set_Is_Recorded_Edge): Val parameter is not used. Get rid of
- it.
- (Set_Activates_Task): New procedure to set the Activates_Task flag.
- * bindo-graphs.ads (Library_Graph_Edge_Kind): Reorder the
- enumeration literals to facilitate Add_Edge_Kind_Check.
- * ali.adb (Known_ALI_Lines): The comment about "still available"
- was wrong. Fix that by erasing the comment, and encoding the
- relevant information in real code. Take advantage of Ada's full
- coverage rules by removing "others =>". Also DRY.
-
-2020-06-08 Ed Schonberg <schonberg@adacore.com>
-
- * par-ch12.adb (P_Formal_Derived_Type_Definition): Handle
- properly formal derived types that include aspect
- specifications, so that the "with" keyword appears twice in the
- formal type declaration.
- * sem_ch13.adb (Has_Generic_Parent): Return true if the type
- itself is a generic formal.
-
-2020-06-08 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * socket.c (__gnat_minus_500ms): Remove
- IsWindowsVersionOrGreater from condition.
-
-2020-06-08 Claire Dross <dross@adacore.com>
-
- * libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
- libgnat/a-cfhase.ads, libgnat/a-cforma.ads, libgnat/a-cforse.ads
- (Delete): Add Depends contract.
-
-2020-06-08 Arnaud Charlet <charlet@adacore.com>
-
- * snames.ads-tmpl (Name_Program_Error_Check,
- Name_Tasking_Check): New constants.
- * types.ads (Program_Error_Check, Tasking_Check): New constants.
- (All_Checks): Update accordingly.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * sem_prag.adb (Validate_Compile_Time_Warning_Or_Error): Use ??.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * cstand.adb (Create_Standard): Update comments.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * scng.adb (Scan): Fix typo to take into account all future
- versions of Ada.
- * sem_attr.ads (Attribute_Impl_Def): Add Attribute_Reduce for
- now.
- * sem_attr.adb (Analyze_Attribute): Only allow 'Reduce under
- -gnatX.
- * snames.ads-tmpl (Name_Reduce): Update comment.
-
-2020-06-05 Thomas Quinot <quinot@adacore.com>
-
- * exp_disp.adb (Expand_Interface_Thunk): Add comment about
- gnatcov reliance on specific name used for thunks.
-
-2020-06-05 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch3.adb (Analyze_Subtype_Declaration): For scalar types,
- and for subtype declarations without a constraint, subtype
- inherits Atomic flag from base type.
-
-2020-06-05 Piotr Trojanek <trojanek@adacore.com>
-
- * doc/gnat_rm/implementation_defined_attributes.rst (Enum_Rep):
- Remove extra colon.
- * gnat_rm.texi: Regenerate.
-
-2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
-
- * atree.adb (New_Copy): Clear Has_Dynamic_Range_Check on
- subexpression nodes.
- * checks.adb (Append_Range_Checks): Assert that the node
- doesn't have the Has_Dynamic_Range_Check flag set.
- (Insert_Range_Checks): Likewise.
- * exp_ch3.adb (Expand_N_Subtype_Indication): Do not apply
- range checks for a full type or object declaration.
- * sem_ch3.ads: Move with and use clauses for Nlists to...
- (Process_Range_Expr_In_Decl): Change default to No_List for
- the Check_List parameter.
- * sem_ch3.adb: ...here.
- (Process_Range_Expr_In_Decl): Likewise. When the insertion
- node is a declaration, only insert on the list if is present
- when the declaration involves discriminants, and only insert
- on the node when there is no list otherwise.
-
-2020-06-05 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_aggr.adb (Resolve_Record_Aggregate): Create the
- N_Aggregate node with its Expressions field set to No_List and
- not to an empty list.
-
-2020-06-05 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * libgnat/s-os_lib.adb (Is_Dirsep): Moved from Build_Path to
- package level to reuse.
- (Normalize_Pathname.Final_Value): Reduce 2 'if' statements to
- one.
- (Normalize_Pathname.Fill_Directory): New procedure instead of
- function Get_Directory. Remove slash to backslash conversion and
- drive letter uppercasing on Windows.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * sem.adb (Assert_Done): Relax check for main unit, as it was
- overzealous in the case of the main unit itself.
-
-2020-06-05 Piotr Trojanek <trojanek@adacore.com>
-
- * exp_ch3.adb, sem_ch8.adb, sem_util.adb: Use Is_Incomplete_Type
- to make the code easier to read.
-
-2020-06-05 Piotr Trojanek <trojanek@adacore.com>
-
- * einfo.adb: Minor reformatting.
- * sem_util.adb (Has_Full_Default_Initialization,
- Is_Partially_Initialized_Type, Caller_Known_Size_Record,
- Large_Max_Size_Mutable): Iterate with
- First_Component/Next_Component; rename Ent to Comp.
-
-2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use
- Expr_Rep_Value instead of Expr_Value to obtain the equivalent
- integer value.
- * sem_eval.ads (Expr_Value): Document more supported cases.
- * sem_eval.adb (Expr_Rep_Value): Copy missing cases from
- Exp_Value.
-
-2020-06-05 Bob Duff <duff@adacore.com>
-
- * rtsfind.adb, rtsfind.ads: Move subtypes of RTU_Id into package
- body, because they are not needed by clients. Change "Child_" to
- "Descendant", because grandchildren and great grandchildren are
- involved. Replace all the repetitive comments with a single
- concise one. Change the parent subtypes to be more consistent;
- use the most specific parent.
-
-2020-06-05 Piotr Trojanek <trojanek@adacore.com>
-
- * rtsfind.ads, rtsfind.adb (Is_Text_IO_Special_Package): Moved
- from the GNATprove backend to the frontend.
-
-2020-06-05 Yannick Moy <moy@adacore.com>
-
- * sem_util.ads: Add comment about function only used in
- CodePeer.
-
-2020-06-05 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch9.adb, (Analyze_Task_Body): After analying the task
- body, indicate that all local variables have no delayed aspects.
- This prevents improper later calls to
- Check_Aspect_At_End_Of_Declarations, that would happen when the
- constructed task_procedure body (generated during expansion) is
- analyzed. The legality of aspect specifications that may appear
- on local declarations has already been established, and it is in
- general not possible to recheck them properly during expansion,
- when visibility may not be fully established.
-
-2020-06-05 Piotr Trojanek <trojanek@adacore.com>
-
- * libgnat/a-cofuve.ads (First): Add Global contract.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * sem_prag.adb (Set_Convention_From_Pragma): Set the convention
- of anonymous access array components.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-calfor.ads, libgnat/a-catizo.ads,
- libgnat/a-catizo.adb (Local_Time_Offset, Local_Image): New.
- (UTC_Time_Offset): Now a renaming of Local_Time_Offset.
-
-2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch3.adb (Available_Full_View): New function returning
- either the full or the underlying full view.
- (Build_Full_Derivation): Add guard for the full view.
- (Copy_And_Build): Retrieve the underlying full view, if any,
- also if deriving a completion.
- (Build_Derived_Private_Type): Use Available_Full_View throughout
- to decide whether a full derivation must be done.
-
-2020-06-05 Bob Duff <duff@adacore.com>
-
- * exp_attr.adb, exp_ch11.adb, exp_imgv.adb, exp_tss.ads,
- par-ch4.adb, sem_attr.adb, sem_util.ads: Misc cleanup.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nudira.ads, libgnat/a-nudira.adb (Random): New
- function.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * sem_attr.ads (Attribute_Impl_Def): Remove Enum_Rep/Val.
- * sem_attr.adb (Attribute_20): New, move Enum_Rep/Val here.
- (Analyze_Attribute): Take Attribute_20 into account.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * restrict.ads (Unit_Array): Add a-direct.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-stopoo.ads: Mark package Pure and leave room for
- Nonblocking once this aspect is supported.
-
-2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference) <Valid_Scalars>:
- Set the No_Truncation flag on the unchecked conversion built for
- scalar types.
-
-2020-06-05 Bob Duff <duff@adacore.com>
-
- * einfo.adb, einfo.ads, exp_util.adb: Remove Invariants_Ignored
- flag.
- * sem_prag.adb (Invariant): Instead of setting a flag to be
- checked elsewhere, remove the pragma as soon as it is analyzed
- and checked for legality.
-
-2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.ads (Apply_Length_Check): Rename Ck_Node parameter to
- Expr.
- (Apply_Range_Check): Likewise.
- (Get_Range_Checks): Likewise.
- * checks.adb (Apply_Float_Conversion_Check): Likewise.
- (Apply_Selected_Length_Checks): Likewise.
- (Apply_Selected_Range_Checks): Likewise.
- (Guard_Access): Likewise.
- (Selected_Length_Checks): Likewise. Also avoid shadowing in
- child procedures.
- (Selected_Range_Checks): Likewise.
-
-2020-06-05 Arnaud Charlet <charlet@adacore.com>
-
- * par-ch3.adb, par-ch4.adb, scng.adb, sem_aggr.adb,
- sem_ch10.adb, sem_ch12.adb, sem_prag.adb: Update wording: change
- Ada_2020 to Ada 2020 in comments and mention -gnat2020 instead
- of -gnatX switch.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/i-c.ads (long_long, unsigned_long_long): New
- definitions.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * Makefile.rtl: add a-tasini object
- * impunit.adb (Non_Imp_File_Names_95): Add s-tasini.
- * libgnarl/a-tasini.ads, libgnarl/a-tasini.adb: New files.
- * libgnarl/s-taskin.ads (Global_Initialization_Handler): New.
- * libgnarl/s-tassta.adb (Task_Wrapper): Call
- Global_Initialization_Handler if non null.
-
-2020-06-04 Ed Schonberg <schonberg@adacore.com>
-
- * sem_ch12.adb (Build_Suprogram_Body_Wrapper,
- Build_Subprogram_Decl_Wrapper): New suprograms, to create the
- wrappers needed to implement contracts on formsl subprograms at
- the point of instantiation.
- (Build_Subprogram_Wrappers): New subprogram within
- Analyze_Associations, calls the above when the formal subprogram
- has contracts, and expansion is enabled.
- (Instantiate_Formal_Subprogram): If the actual is not an entity,
- such as a function attribute, or a synchronized operation,
- create a function with an internal name and call it within the
- wrapper.
- (Analyze_Generic_Formal_Part): Analyze contracts at the end of
- the list of formal declarations.
- * sem_prag.adb (Analyze_Pre_Post_Condtion): In Ada_2020 the
- aspect and corresponding pragma can appear on a formal
- subprogram declaration.
- (Find_Related_Declaration_Or_Body): Ditto.
-
-2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch7.adb (Make_Final_Call): Set the type of the object, if
- it is unanalyzed, before calling Convert_View on it.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * adabkend.adb, back_end.ads, opt.ads, sem_ch6.adb: Get rid of
- Disable_FE_Inline_Always.
-
-2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch7.adb (Make_Final_Call): Add missing guard.
- * sem_ch3.adb (Copy_And_Build): Adjust recursive call for
- private types.
- (Build_Derived_Private_Type): Deal with underlying full views.
-
-2020-06-04 Bob Duff <duff@adacore.com>
-
- * libgnat/a-stobbu.adb, libgnat/a-stobbu.ads,
- libgnat/a-stobfi.adb, libgnat/a-stobfi.ads,
- libgnat/a-stoubu.adb, libgnat/a-stoubu.ads,
- libgnat/a-stoufi.adb, libgnat/a-stoufi.ads,
- libgnat/a-stoufo.adb, libgnat/a-stoufo.ads,
- libgnat/a-stouut.adb, libgnat/a-stouut.ads,
- libgnat/a-stteou.ads, libgnat/s-putaim.adb,
- libgnat/s-putaim.ads, libgnat/s-putima.adb, libgnat/s-putima.ads
- (Ada.Strings.Text_Output and children, System.Put_Images): New
- runtime support for Put_Image.
- * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
- exp_put_image.o.
- * exp_put_image.adb, exp_put_image.ads: New compiler package
- that generates calls to runtime routines that implement
- Put_Image.
- * Makefile.rtl: Add object files for Ada.Strings.Text_Output and
- children and System.Put_Images.
- * aspects.adb: Simplify initialization of Canonical_Aspect.
- * aspects.ads: Improve documentation. Add Aspect_Put_Image.
- * exp_attr.adb: Add support for Put_Image, by calling routines
- in Exp_Put_Image.
- * sem_util.adb (Is_Predefined_Dispatching_Operation): Return
- True for new TSS_Put_Image operation.
- * exp_ch3.adb: For tagged types, build a dispatching
- TSS_Put_Image operation by calling routines in Exp_Put_Image.
- * exp_disp.adb, exp_disp.ads: Make TSS_Put_Image be number 10,
- adjusting other operations' numbers after 10. We choose 10
- because that's the last number shared by all runtimes.
- * exp_strm.adb: Use named notation as appropriate.
- * exp_cg.adb, exp_tss.ads: Add TSS_Put_Image.
- * libgnat/a-tags.ads: Modify Max_Predef_Prims for the new
- TSS_Put_Image.
- * impunit.adb: Add new runtime packages.
- * rtsfind.adb, rtsfind.ads: Add support for
- Ada.Strings.Text_Output, Ada.Strings.Text_Output.Utils, and
- System.Put_Images.
- * sem_attr.adb: Error checking for Put_Image calls.
- * sem_ch12.adb (Valid_Default_Attribute): Support for passing
- Put_Image as a generic formal parameter.
- * sem_ch13.adb: Analysis of Put_Image aspect. Turn it into a
- Put_Image attribute definition clause.
- * sem_ch8.adb (Analyze_Subprogram_Renaming): Support for
- renaming of the Put_Image attribute.
- * snames.adb-tmpl: Fix comments.
- * snames.ads-tmpl (Name_Put_Image): New Name_Id.
- (Attribute_Put_Image): New Attribute_Id.
- * tbuild.adb, tbuild.ads (Make_Increment): New utility.
-
-2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (xpand_N_Attribute_Reference) <Input>: Call
- Find_Inherited_TSS to look up the Stream_Read TSS.
- <Output>: Likewise for the Stream_Write TSS.
- * exp_ch7.adb (Make_Final_Call): Call Underlying_Type on
- private types to account for underlying full views.
- * exp_strm.ads (Build_Record_Or_Elementary_Input_Function):
- Remove Use_Underlying parameter.
- * exp_strm.adb (Build_Record_Or_Elementary_Input_Function):
- Likewise and adjust accordingly.
- * exp_tss.adb (Find_Inherited_TSS): Deal with full views.
- Call Find_Inherited_TSS recursively on the parent type if
- the base type is a derived type.
- * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Take
- into account underlying full views for derived types.
- * sem_ch3.adb (Copy_And_Build): Look up the underlying full
- view only for a completion. Be prepared for private types.
- (Build_Derived_Private_Type): Build an underlying full view
- for a completion in the general case too.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * back_end.adb, opt.ads, par-prag.adb, sem_ch5.adb,
- sem_prag.adb, sinfo.adb, sinfo.ads, snames.ads-tmpl,
- doc/gnat_rm/implementation_defined_pragmas.rst: Remove
- experimental support for OpenACC.
- * gcc-interface/misc.c, gcc-interface/trans.c,
- gcc-interface/lang.opt: Ditto.
- * gnat_rm.texi: Regenerate.
-
-2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.adb (Generate_Discriminant_Check): Remove obsolete
- comment.
-
-2020-06-04 Gary Dismukes <dismukes@adacore.com>
-
- * par-ch3.adb (P_Identifier_Declarations): Add parsing of object
- renamings that have neither a subtype_mark nor an
- access_definition. Issue an error if the version is earlier than
- Ada_2020, and suggest using -gnatX.
- * sem_ch8.adb (Analyze_Object_Renaming): Handle
- object_renaming_declarations that don't have an explicit
- subtype. Errors are issued when the name is inappropriate or
- ambiguous, and otherwise the Etype of the renaming entity is set
- from the Etype of the renamed object.
- * sem_util.adb (Has_Null_Exclusion): Allow for the case of no
- subtype given in an N_Object_Renaming_Declaration.
- * sprint.adb (Sprint_Node_Actual): Handle printing of
- N_Object_Renaming_Declarations that are specified without an
- explicit subtype.
-
-2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * sinfo.ads (N_Delta_Aggregate): Document Etype field.
- (N_Case_Expression): Likewise.
- (Is_Syntactic_Field) <N_Quantified_Expression>: Adjust.
- <N_Case_Expression>: Likewise.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * adaint.c: Avoid redefining IS_DIR_SEPARATOR macro.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * sem.adb (Walk_Library_Items): Defer processing of main spec
- after all other specs and before processing bodies.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * bindgen.adb (Gen_Adafinal): Adafinal is convention Ada, not C.
-
-2020-06-04 Ed Schonberg <schonberg@adacore.com>
-
- * sinput.adb (Sloc_Range): Ignore node in the tree if it appears
- in a unit different from that of the node whose Sloc range we
- are computing. This is necessary when computing the source range
- of a subprogram body whose declaration includes a pre- or
- postcondition, because declaration and body may appear in
- different units, and the expanded code for the body includes
- copies of the contract code.
-
-2020-06-04 Alexandre Oliva <oliva@adacore.com>
-
- * switch.adb (Is_Internal_GCC_Switch): Recognize dumpdir and
- dumpbase-ext. Mark auxbase and auxbase-strip for removal.
-
-2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_attr.adb (Resolve_Attribute) <Access>: Do not generate
- the secondary message about a missing pragma if the convention
- of the prefix is Intrinsic.
- * sem_ch12.adb (Instantiate_Formal_Subprogram): Only set the
- Convention and the Is_Inlined flag on a null procedure.
-
-2020-06-04 Justin Squirek <squirek@adacore.com>
-
- * sem_ch6.adb (Check_Return_Obj_Accessibility): Change to
- Check_Return_Construct_Accessibility to better reflect its
- purpose. Add loop to properly obtain the object declaration
- from an expanded extended return statement and add calls to get
- the original node for associated values. Also, avoid checks when
- the return statement being examined comes from an internally
- generated function.
-
-2020-06-04 Dmitriy Anisimkov <anisimko@adacore.com>
-
- * adaint.c (__gnat_is_absolute_path): Check for directory
- separator after drive and colon.
- (IS_DIR_SEPARATOR): Define new inline substitution.
-
-2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.ads: Update documentation about range checks and fix
- minor other things.
-
-2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch3.adb (Array_Type_Declaration): Apply special handling
- of private index types to generic packages and restrict it to
- index types defined in the current scope.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-exextr.adb (Global_Unhandled_Action): New global
- variable.
- (Notify_Exception): Take into account Global_Unhandled_Action
- and fix latent race condition.
- (Exception_Action): Mark Favor_Top_Level so that variables can
- be atomic.
- (Global_Action): Mark atomic to remove the need for a lock.
- * libgnat/g-excact.ads, libgnat/g-excact.adb
- (Register_Global_Unhandled_Action): New procedure.
- (Register_Global_Action): Remove lock.
- * libgnat/s-stalib.ads (Raise_Action): Mark Favor_Top_Level to
- be compatible with Exception_Action.
- * sem_warn.adb (Warn_On_Unreferenced_Entity): Fix logic wrt
- Volatile entities and entities with an address clause: the code
- did not match the comment/intent.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * comperr.adb (Compiler_Abort): Update URL and bug report
- instructions.
-
-2020-06-04 Steve Baird <baird@adacore.com>
-
- * libgnat/s-imgrea.ads: Declare a named number
- Max_Real_Image_Length with value 5200. Provide a comment
- explaining why this value was chosen.
- * libgnat/s-imgrea.adb (Set_Image_Real): Increase the upper
- bound of the local String variable Digs to
- Max_Real_Image_Length.
- * libgnat/a-tiflau.adb (Put): Increase the upper bound of the
- local String variable Buf to Max_Real_Image_Length.
- (Puts): Increase the upper bound of the local String variable
- Buf to Max_Real_Image_Length.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * libgnarl/a-dynpri.adb, libgnarl/a-taside.adb,
- libgnarl/a-taster.adb, libgnarl/s-interr.adb,
- libgnarl/s-interr__sigaction.adb, libgnarl/s-taasde.adb,
- libgnarl/s-taenca.adb, libgnarl/s-taenca.ads,
- libgnarl/s-taprop.ads, 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-tasque.adb, libgnarl/s-tasque.ads,
- libgnarl/s-tasren.adb, libgnarl/s-tasren.ads,
- libgnarl/s-tassta.adb, libgnarl/s-tasuti.adb,
- libgnarl/s-tasuti.ads, libgnarl/s-tpoben.adb,
- libgnarl/s-tpobop.adb, libgnarl/s-tpopmo.adb,
- libgnarl/s-tposen.adb, libgnat/s-parame.ads,
- libgnat/s-parame__ae653.ads, libgnat/s-parame__hpux.ads,
- libgnat/s-parame__vxworks.ads: Remove references to Single_Lock
- and Global_Lock.
-
-2020-06-04 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-atopar.adb, libgnat/s-atopex.adb: Use Object_Size
- instead of Size, otherwise many derived types will be rejected
- (e.g. a type with a 14 bits 'Size and a 16 bits 'Object_Size).
-
-2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch12.adb (Copy_Generic_Node): Add special handling for a
- conversion between access types.
-
-2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch12.adb (Check_Generic_Actuals): Also restore the proper
- views of the actuals of the parent instances if the formals are
- used as actuals of the children.
- (Instantiate_Type): Add comment.
-
-2020-06-04 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch12.adb: Minor editorial fixes.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch12.adb (Denotes_Previous_Actual): Delete.
- (Check_Generic_Actuals): Do not special case array types whose
- component type denotes a previous actual. Do not special case
- access types whose base type is private.
- (Check_Private_View): Remove code dealing with secondary types.
- Do not switch the views of an array because of its component.
- (Copy_Generic_Node): Add special handling for a comparison
- operator on array types.
- (Instantiate_Type): Do not special case access types whose
- designated type is private.
- (Set_Global_Type): Do not special case array types whose
- component type is private.
-
-2020-06-03 Justin Squirek <squirek@adacore.com>
-
- * sem_ch10.adb (Process_Body_Clauses): Add loop to interate
- through all prefixes in a use_type clause so that all packages
- in the expanded name get examined for effectiveness.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch12.adb (Check_Private_View): Clean up implementation of
- second main case, when the generic sees the private declaration.
-
-2020-06-03 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/a-nbnbin.ads: Minor reformatting.
- * libgnat/a-nbnbre.ads, libgnat/a-nbnbre.adb (Is_Valid): Add
- convention Intrinsic. Add detection of uninitialized big reals.
-
-2020-06-03 Arnaud Charlet <charlet@adacore.com>
-
- * sem_util.ads, sem_util.adb (Side_Effect_Free_Statements,
- Side_Effect_Free_Loop): New functions.
- (Has_Non_Null_Statements): Consider N_Call_Marker as a null
- statement.
- * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Call
- Set_Is_Null_Loop even inside a generic instantiation.
- (Analyze_Loop_Statement): Mark for removal loops with no side
- effects.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * opt.ads (Allow_Integer_Address): Fix typo in comment.
- * stand.ads (Standard_Address): New entity.
- * cstand.adb (Create_Standard): Create it.
- * sem_ch4.adb (Operator_Check): Convert the operands of an
- operation with addresses and integers to Standard_Address
- if pragma Allow_Integer_Address is in effect.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/s-atopar.adb (Atomic_Fetch_And_Add): Make use of an
- equivalent static expression.
- (Atomic_Fetch_And_Subtract): Likewise.
- (Is_Lock_Free): Likewise.
- * libgnat/s-atopex.adb (Atomic_Exchange): Likewise.
- (Atomic_Compare_And_Exchange): Likewise.
- (Is_Lock_Free): Likewise.
-
-2020-06-03 Vadim Godunko <godunko@adacore.com>
-
- * libgnat/s-parame.ads, libgnat/s-parame__ae653.ads,
- libgnat/s-parame__hpux.ads: Fix typos.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_util.adb (Remove_Side_Effects): For a type conversion, do
- not remove the side effects of the expression only if it is of
- universal integer type.
-
-2020-06-03 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-aotase.ads, libgnat/s-atoope.ads,
- libgnat/s-atopar.ads, libgnat/s-atopex.ads: Update header.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Also fold the
- conversion for literals of enumeration types.
-
-2020-06-03 Yannick Moy <moy@adacore.com>
-
- * rtsfind.adb (Load_RTU): Correctly set/reset global variable to
- ignore SPARK_Mode in instances around loading.
- * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Accept Off
- without prior On.
- * sem_ch7.adb (Analyze_Package_Body_Helper): Likewise.
- * sem_prag.adb (Analyze_Pragma): Always take into account
- SPARK_Mode Off.
-
-2020-06-03 Arnaud Charlet <charlet@adacore.com>
-
- * frontend.adb (Frontend): Call (dummy for now) tree checker.
- * debug.adb: Reserve -gnatd_V for the tree checker.
- * vast.ads, vast.adb: New files.
- * gcc-interface/Make-lang.in: Add vast.o.
-
-2020-06-03 Justin Squirek <squirek@adacore.com>
-
- * libgnat/a-cborse.adb, libgnat/a-cihase.adb,
- libgnat/a-ciorse.adb, libgnat/a-coorse.adb: Modified to use
- 'Unrestricted_Access in certain cases where static accessibility
- errors were triggered.
- * exp_ch6.adb (Expand_Simple_Return_Statement): Add generation
- of dynamic accessibility checks as determined by
- Is_Special_Aliased_Formal_Access.
- * sem_attr.adb (Resolve_Attribute): Add call to
- Is_Special_Aliased_Formal_Access to avoid performing static
- checks where dynamic ones are required.
- * sem_ch6.adb (Check_Return_Obj_Accessibility): Handle renamed
- objects within component associations requiring special
- accessibility checks.
- * sem_util.adb, sem_util.ads (Is_Special_Aliased_Formal_Access):
- Created to detect the special case where an aliased formal is
- being compared against the level of an anonymous access return
- object.
- (Object_Access_Level): Remove incorrect condition leading to
- overly permissive accessibility levels being returned on
- explicitly aliased parameters.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (Enum_Pos_To_Rep): Adjust description.
- * exp_attr.adb (Expand_N_Attribute_Reference) <Pred>:
- Reimplement in the case of an enumeration type with non-standard
- but contiguous representation.
- <Succ>: Likewise.
- <Val>: Likewise.
- * exp_ch3.adb (Expand_Freeze_Enumeration_Type): Count the
- literals in the first loop. If the representation is
- contiguous, just build the index type of the array type and set
- Enum_Pos_To_Rep to it.
-
-2020-06-03 Gary Dismukes <dismukes@adacore.com>
-
- * exp_attr.adb (Expand_Loop_Entry_Attribute): Revise loop that
- resets the scopes of entities associated with Loop_Id to the
- scope of the new function, so the resetting is not restricted to
- itypes, but excludes loop parameters and the function entity
- itself. However, this fix is believed to be incomplete and a ???
- comment is added to indicate that.
-
-2020-06-03 Bob Duff <duff@adacore.com>
-
- * libgnat/s-regexp.ads: Fix comment
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference) <Enum_Rep>:
- In the case of an enumeration type, do an intermediate
- conversion to a small integer type. Remove useless stuff.
- <Finalization_Size>: Do not hardcode Universal_Integer and
- fix a type mismatch in the assignment to the variable.
- <Max_Size_In_Storage_Elements>: Likewise.
- <From_Any>: Do not redefine the Ptyp local variable.
- <To_Any>: Likewise.
- <TypeCode>: Likewise.
- <Pos>: Small tweaks.
- <Val>: For an enumeration type with standard representation,
- apply the range check to the expression of a convertion to
- Universal_Integer, if any. For an integer type, expand to
- a mere conversion.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * libgnat/s-rannum.adb (Random_Discrete): In the 32-bit case,
- use the same linear implementation as in the 64-bit case when
- the type has a contiguous representation.
-
-2020-06-03 Gary Dismukes <dismukes@adacore.com>
-
- * sem_util.adb (Build_Class_Wide_Clone_Decl): Call
- Set_Debug_Info_Needed to set the Needs_Debug_Info flag on
- Clone_Id if the flag is set on Spec_Id.
-
-2020-06-03 Yannick Moy <moy@adacore.com>
-
- * inline.adb (Expand_Inlined_Call): Do not suppress checks on
- inlined code in GNATprove mode.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * einfo.ads (Has_Contiguous_Rep): Fix typo in comment.
-
-2020-06-03 Piotr Trojanek <trojanek@adacore.com>
-
- * checks.adb, einfo.adb, exp_aggr.adb, exp_ch4.adb, exp_ch6.adb,
- exp_unst.adb, exp_util.adb, freeze.adb, inline.adb, repinfo.adb,
- sem_aggr.adb, sem_attr.adb, sem_aux.adb, sem_ch13.adb,
- sem_ch3.adb, sem_ch4.adb, sem_ch8.adb, sem_elab.adb,
- sem_eval.adb, sem_prag.adb, sem_res.adb, sem_smem.adb,
- sem_util.adb, treepr.adb: Replace uses of Next_ functions with
- corresponding procedures.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Attribute_Valid): Use Standard_Long_Long_Integer
- in lieu of Universal_Integer as large integer type.
- * exp_ch3.adb (Expand_Freeze_Enumeration_Type): Likewise.
-
-2020-06-03 Arnaud Charlet <charlet@adacore.com>
-
- * libgnat/s-auxdec.ads (Address_Int): New.
-
-2020-06-03 Arnaud Charlet <charlet@adacore.com>
-
- * aspects.adb, aspects.ads, atree.adb, atree.ads, elists.adb,
- elists.ads, fname.adb, fname.ads, gnat1drv.adb, lib.adb,
- lib.ads, namet.adb, namet.ads, nlists.adb, nlists.ads, opt.adb,
- opt.ads, osint-c.adb, osint-c.ads, repinfo.adb, repinfo.ads,
- sem_aux.adb, sem_aux.ads, sinput.adb, sinput.ads, stand.ads,
- stringt.adb, stringt.ads, switch-c.adb, table.adb, table.ads,
- uintp.adb, uintp.ads, urealp.adb, urealp.ads (Tree_Read,
- Tree_Write): Remove generation of ASIS trees.
- * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
- Remove -gnatt and -gnatct documentation.
- * gnat_ugn.texi: Regenerate.
- * tree_in.ads, tree_in.adb, tree_io.ads, tree_io.adb,
- tree_gen.ads, tree_gen.adb, stand.adb: Remove.
- * gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Remove
- references to tree_gen.o tree_in.o tree_io.o.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * opt.ads (Disable_FE_Inline): Move around.
- (Disable_FE_Inline_Always): Likewise.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * checks.adb (Is_Single_Attribute_Reference): New predicate.
- (Generate_Range_Check): Do not force the evaluation if the
- node is a single attribute reference.
- * exp_util.adb (Side_Effect_Free_Attribute): New predicate.
- (Side_Effect_Free) <N_Attribute_Reference>: Call it.
- (Remove_Side_Effects): Remove the side effects of the prefix
- for an attribute reference whose prefix is not a name.
-
-2020-06-03 Arnaud Charlet <charlet@adacore.com>
-
- * switch-c.adb (Scan_Front_End_Switches): Remove processing of
- -gnatt.
- * usage.adb (Usage): Remove mention of -gnatt.
-
-2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
-
- * sinfo.ads: Minor tweaks in commentary.
-
-2020-06-02 Alexandre Oliva <oliva@adacore.com>
-
- * lib.ads (Compilation_Switches): Remove -auxbase from
- comments.
- * switch.ads (Is_Internal_GCC_Switch): Likewise.
-
-2020-06-02 Arnaud Charlet <charlet@adacore.com>
-
- * atree.ads, checks.adb, contracts.adb, debug.adb, einfo.ads,
- exp_ch3.adb, exp_util.adb, expander.ads, expander.adb,
- frontend.adb, gnat1drv.adb, itypes.adb, lib.ads, namet.ads,
- opt.adb, opt.ads, par-prag.adb, repinfo.ads, sem_aggr.adb,
- sem_aux.ads, sem_case.ads, sem_ch10.adb, sem_ch12.adb,
- sem_ch13.adb, sem_ch3.adb, sem_ch4.adb, sem_ch6.adb,
- sem_dim.adb, sem_elab.adb, sem_prag.adb, sem_prag.ads,
- sem_res.adb, sem_type.adb, sem_util.adb, sinfo.ads, stand.ads,
- tree_io.ads: Remove references to ASIS_Mode.
-
-2020-06-02 Javier Miranda <miranda@adacore.com>
-
- * exp_ch4.adb (Generate_Temporary): New subprogram of
- Discrete_Range_Check that generates a temporary to facilitate
- the C backend the code generation of the unchecked conversion
- since the size of the source type may differ from the size of
- the target type.
-
-2020-06-02 Arnaud Charlet <charlet@adacore.com>
-
- * ada_get_targ.adb: Bump copyright year.
- * adabkend.adb: Likewise.
- * adabkend.ads: Likewise.
- * adadecode.c: Likewise.
- * adadecode.h: Likewise.
- * adaint.c: Likewise.
- * adaint.h: Likewise.
- * affinity.c: Likewise.
- * ali-util.adb: Likewise.
- * ali-util.ads: Likewise.
- * ali.adb: Likewise.
- * ali.ads: Likewise.
- * alloc.ads: Likewise.
- * argv-lynxos178-raven-cert.c: Likewise.
- * argv.c: Likewise.
- * aspects.adb: Likewise.
- * aspects.ads: Likewise.
- * atree.adb: Likewise.
- * atree.ads: Likewise.
- * atree.h: Likewise.
- * aux-io.c: Likewise.
- * back_end.adb: Likewise.
- * back_end.ads: Likewise.
- * bcheck.adb: Likewise.
- * bcheck.ads: Likewise.
- * binde.adb: Likewise.
- * binde.ads: Likewise.
- * binderr.adb: Likewise.
- * binderr.ads: Likewise.
- * bindgen.adb: Likewise.
- * bindgen.ads: Likewise.
- * bindo-augmentors.adb: Likewise.
- * bindo-augmentors.ads: Likewise.
- * bindo-builders.adb: Likewise.
- * bindo-builders.ads: Likewise.
- * bindo-diagnostics.adb: Likewise.
- * bindo-diagnostics.ads: Likewise.
- * bindo-elaborators.adb: Likewise.
- * bindo-elaborators.ads: Likewise.
- * bindo-graphs.adb: Likewise.
- * bindo-graphs.ads: Likewise.
- * bindo-units.adb: Likewise.
- * bindo-units.ads: Likewise.
- * bindo-validators.adb: Likewise.
- * bindo-validators.ads: Likewise.
- * bindo-writers.adb: Likewise.
- * bindo-writers.ads: Likewise.
- * bindo.adb: Likewise.
- * bindo.ads: Likewise.
- * bindusg.adb: Likewise.
- * bindusg.ads: Likewise.
- * butil.adb: Likewise.
- * butil.ads: Likewise.
- * cal.c: Likewise.
- * casing.adb: Likewise.
- * casing.ads: Likewise.
- * ceinfo.adb: Likewise.
- * checks.adb: Likewise.
- * checks.ads: Likewise.
- * cio.c: Likewise.
- * clean.adb: Likewise.
- * clean.ads: Likewise.
- * comperr.adb: Likewise.
- * comperr.ads: Likewise.
- * contracts.adb: Likewise.
- * contracts.ads: Likewise.
- * csets.adb: Likewise.
- * csets.ads: Likewise.
- * csinfo.adb: Likewise.
- * cstand.adb: Likewise.
- * cstand.ads: Likewise.
- * cstreams.c: Likewise.
- * ctrl_c.c: Likewise.
- * debug.adb: Likewise.
- * debug.ads: Likewise.
- * debug_a.adb: Likewise.
- * debug_a.ads: Likewise.
- * einfo.adb: Likewise.
- * einfo.ads: Likewise.
- * elists.adb: Likewise.
- * elists.ads: Likewise.
- * elists.h: Likewise.
- * env.c: Likewise.
- * env.h: Likewise.
- * err_vars.ads: Likewise.
- * errno.c: Likewise.
- * errout.adb: Likewise.
- * errout.ads: Likewise.
- * erroutc.adb: Likewise.
- * erroutc.ads: Likewise.
- * errutil.adb: Likewise.
- * errutil.ads: Likewise.
- * eval_fat.adb: Likewise.
- * eval_fat.ads: Likewise.
- * exit.c: Likewise.
- * exp_aggr.adb: Likewise.
- * exp_aggr.ads: Likewise.
- * exp_atag.adb: Likewise.
- * exp_atag.ads: Likewise.
- * exp_attr.adb: Likewise.
- * exp_attr.ads: Likewise.
- * exp_cg.adb: Likewise.
- * exp_cg.ads: Likewise.
- * exp_ch10.ads: Likewise.
- * exp_ch11.adb: Likewise.
- * exp_ch11.ads: Likewise.
- * exp_ch12.adb: Likewise.
- * exp_ch12.ads: Likewise.
- * exp_ch13.adb: Likewise.
- * exp_ch13.ads: Likewise.
- * exp_ch2.adb: Likewise.
- * exp_ch2.ads: Likewise.
- * exp_ch3.adb: Likewise.
- * exp_ch3.ads: Likewise.
- * exp_ch4.adb: Likewise.
- * exp_ch4.ads: Likewise.
- * exp_ch5.adb: Likewise.
- * exp_ch5.ads: Likewise.
- * exp_ch6.adb: Likewise.
- * exp_ch6.ads: Likewise.
- * exp_ch7.adb: Likewise.
- * exp_ch7.ads: Likewise.
- * exp_ch8.adb: Likewise.
- * exp_ch8.ads: Likewise.
- * exp_ch9.adb: Likewise.
- * exp_ch9.ads: Likewise.
- * exp_code.adb: Likewise.
- * exp_code.ads: Likewise.
- * exp_dbug.adb: Likewise.
- * exp_dbug.ads: Likewise.
- * exp_disp.adb: Likewise.
- * exp_disp.ads: Likewise.
- * exp_dist.adb: Likewise.
- * exp_dist.ads: Likewise.
- * exp_fixd.adb: Likewise.
- * exp_fixd.ads: Likewise.
- * exp_imgv.adb: Likewise.
- * exp_imgv.ads: Likewise.
- * exp_intr.adb: Likewise.
- * exp_intr.ads: Likewise.
- * exp_pakd.adb: Likewise.
- * exp_pakd.ads: Likewise.
- * exp_prag.adb: Likewise.
- * exp_prag.ads: Likewise.
- * exp_sel.adb: Likewise.
- * exp_sel.ads: Likewise.
- * exp_smem.adb: Likewise.
- * exp_smem.ads: Likewise.
- * exp_spark.adb: Likewise.
- * exp_spark.ads: Likewise.
- * exp_strm.adb: Likewise.
- * exp_strm.ads: Likewise.
- * exp_tss.adb: Likewise.
- * exp_tss.ads: Likewise.
- * exp_unst.adb: Likewise.
- * exp_unst.ads: Likewise.
- * exp_util.adb: Likewise.
- * exp_util.ads: Likewise.
- * expander.adb: Likewise.
- * expander.ads: Likewise.
- * expect.c: Likewise.
- * fe.h: Likewise.
- * final.c: Likewise.
- * fmap.adb: Likewise.
- * fmap.ads: Likewise.
- * fname-sf.adb: Likewise.
- * fname-sf.ads: Likewise.
- * fname-uf.adb: Likewise.
- * fname-uf.ads: Likewise.
- * fname.adb: Likewise.
- * fname.ads: Likewise.
- * freeze.adb: Likewise.
- * freeze.ads: Likewise.
- * frontend.adb: Likewise.
- * frontend.ads: Likewise.
- * get_scos.adb: Likewise.
- * get_scos.ads: Likewise.
- * get_targ.adb: Likewise.
- * get_targ.ads: Likewise.
- * ghost.adb: Likewise.
- * ghost.ads: Likewise.
- * gnat1drv.adb: Likewise.
- * gnat1drv.ads: Likewise.
- * gnatbind.adb: Likewise.
- * gnatbind.ads: Likewise.
- * gnatchop.adb: Likewise.
- * gnatclean.adb: Likewise.
- * gnatcmd.adb: Likewise.
- * gnatcmd.ads: Likewise.
- * gnatdll.adb: Likewise.
- * gnatfind.adb: Likewise.
- * gnatkr.adb: Likewise.
- * gnatkr.ads: Likewise.
- * gnatlink.adb: Likewise.
- * gnatlink.ads: Likewise.
- * gnatls.adb: Likewise.
- * gnatls.ads: Likewise.
- * gnatmake.adb: Likewise.
- * gnatmake.ads: Likewise.
- * gnatname.adb: Likewise.
- * gnatname.ads: Likewise.
- * gnatprep.adb: Likewise.
- * gnatprep.ads: Likewise.
- * gnatvsn.adb: Likewise.
- * gnatxref.adb: Likewise.
- * gprep.adb: Likewise.
- * gprep.ads: Likewise.
- * gsocket.h: Likewise.
- * hostparm.ads: Likewise.
- * impunit.adb: Likewise.
- * impunit.ads: Likewise.
- * indepsw-aix.adb: Likewise.
- * indepsw-darwin.adb: Likewise.
- * indepsw-gnu.adb: Likewise.
- * indepsw.adb: Likewise.
- * indepsw.ads: Likewise.
- * init.c: Likewise.
- * initialize.c: Likewise.
- * inline.adb: Likewise.
- * inline.ads: Likewise.
- * itypes.adb: Likewise.
- * itypes.ads: Likewise.
- * krunch.adb: Likewise.
- * krunch.ads: Likewise.
- * layout.adb: Likewise.
- * layout.ads: Likewise.
- * lib-list.adb: Likewise.
- * lib-load.adb: Likewise.
- * lib-load.ads: Likewise.
- * lib-sort.adb: Likewise.
- * lib-util.adb: Likewise.
- * lib-util.ads: Likewise.
- * lib-writ.adb: Likewise.
- * lib-writ.ads: Likewise.
- * lib-xref-spark_specific.adb: Likewise.
- * lib-xref.adb: Likewise.
- * lib-xref.ads: Likewise.
- * lib.adb: Likewise.
- * lib.ads: Likewise.
- * libgnarl/a-astaco.adb: Likewise.
- * libgnarl/a-dispat.adb: Likewise.
- * libgnarl/a-dynpri.adb: Likewise.
- * libgnarl/a-etgrbu.ads: Likewise.
- * libgnarl/a-exetim__darwin.adb: Likewise.
- * libgnarl/a-exetim__default.ads: Likewise.
- * libgnarl/a-exetim__mingw.adb: Likewise.
- * libgnarl/a-exetim__mingw.ads: Likewise.
- * libgnarl/a-exetim__posix.adb: Likewise.
- * libgnarl/a-interr.adb: Likewise.
- * libgnarl/a-interr.ads: Likewise.
- * libgnarl/a-intnam.ads: Likewise.
- * libgnarl/a-intnam__aix.ads: Likewise.
- * libgnarl/a-intnam__darwin.ads: Likewise.
- * libgnarl/a-intnam__dragonfly.ads: Likewise.
- * libgnarl/a-intnam__dummy.ads: Likewise.
- * libgnarl/a-intnam__freebsd.ads: Likewise.
- * libgnarl/a-intnam__hpux.ads: Likewise.
- * libgnarl/a-intnam__linux.ads: Likewise.
- * libgnarl/a-intnam__lynxos.ads: Likewise.
- * libgnarl/a-intnam__mingw.ads: Likewise.
- * libgnarl/a-intnam__qnx.ads: Likewise.
- * libgnarl/a-intnam__rtems.ads: Likewise.
- * libgnarl/a-intnam__solaris.ads: Likewise.
- * libgnarl/a-intnam__vxworks.ads: Likewise.
- * libgnarl/a-reatim.adb: Likewise.
- * libgnarl/a-reatim.ads: Likewise.
- * libgnarl/a-retide.adb: Likewise.
- * libgnarl/a-retide.ads: Likewise.
- * libgnarl/a-rttiev.adb: Likewise.
- * libgnarl/a-rttiev.ads: Likewise.
- * libgnarl/a-synbar.adb: Likewise.
- * libgnarl/a-synbar.ads: Likewise.
- * libgnarl/a-synbar__posix.adb: Likewise.
- * libgnarl/a-synbar__posix.ads: Likewise.
- * libgnarl/a-sytaco.adb: Likewise.
- * libgnarl/a-sytaco.ads: Likewise.
- * libgnarl/a-tasatt.adb: Likewise.
- * libgnarl/a-tasatt.ads: Likewise.
- * libgnarl/a-taside.adb: Likewise.
- * libgnarl/a-taside.ads: Likewise.
- * libgnarl/a-taster.adb: Likewise.
- * libgnarl/g-boubuf.adb: Likewise.
- * libgnarl/g-boubuf.ads: Likewise.
- * libgnarl/g-boumai.ads: Likewise.
- * libgnarl/g-semaph.adb: Likewise.
- * libgnarl/g-semaph.ads: Likewise.
- * libgnarl/g-signal.adb: Likewise.
- * libgnarl/g-signal.ads: Likewise.
- * libgnarl/g-tastus.ads: Likewise.
- * libgnarl/g-thread.adb: Likewise.
- * libgnarl/g-thread.ads: Likewise.
- * libgnarl/i-vxinco.adb: Likewise.
- * libgnarl/i-vxinco.ads: Likewise.
- * libgnarl/s-inmaop.ads: Likewise.
- * libgnarl/s-inmaop__dummy.adb: Likewise.
- * libgnarl/s-inmaop__posix.adb: Likewise.
- * libgnarl/s-inmaop__vxworks.adb: Likewise.
- * libgnarl/s-interr.adb: Likewise.
- * libgnarl/s-interr.ads: Likewise.
- * libgnarl/s-interr__dummy.adb: Likewise.
- * libgnarl/s-interr__hwint.adb: Likewise.
- * libgnarl/s-interr__sigaction.adb: Likewise.
- * libgnarl/s-interr__vxworks.adb: Likewise.
- * libgnarl/s-intman.ads: Likewise.
- * libgnarl/s-intman__android.adb: Likewise.
- * libgnarl/s-intman__dummy.adb: Likewise.
- * libgnarl/s-intman__lynxos.adb: Likewise.
- * libgnarl/s-intman__mingw.adb: Likewise.
- * libgnarl/s-intman__posix.adb: Likewise.
- * libgnarl/s-intman__qnx.adb: Likewise.
- * libgnarl/s-intman__solaris.adb: Likewise.
- * libgnarl/s-intman__susv3.adb: Likewise.
- * libgnarl/s-intman__vxworks.adb: Likewise.
- * libgnarl/s-intman__vxworks.ads: Likewise.
- * libgnarl/s-linux.ads: Likewise.
- * libgnarl/s-linux__alpha.ads: Likewise.
- * libgnarl/s-linux__android.ads: Likewise.
- * libgnarl/s-linux__hppa.ads: Likewise.
- * libgnarl/s-linux__mips.ads: Likewise.
- * libgnarl/s-linux__riscv.ads: Likewise.
- * libgnarl/s-linux__sparc.ads: Likewise.
- * libgnarl/s-linux__x32.ads: Likewise.
- * libgnarl/s-mudido.adb: Likewise.
- * libgnarl/s-mudido__affinity.adb: Likewise.
- * libgnarl/s-osinte__aix.adb: Likewise.
- * libgnarl/s-osinte__aix.ads: Likewise.
- * libgnarl/s-osinte__android.adb: Likewise.
- * libgnarl/s-osinte__android.ads: Likewise.
- * libgnarl/s-osinte__darwin.adb: Likewise.
- * libgnarl/s-osinte__darwin.ads: Likewise.
- * libgnarl/s-osinte__dragonfly.adb: Likewise.
- * libgnarl/s-osinte__dragonfly.ads: Likewise.
- * libgnarl/s-osinte__dummy.ads: Likewise.
- * libgnarl/s-osinte__freebsd.adb: Likewise.
- * libgnarl/s-osinte__freebsd.ads: Likewise.
- * libgnarl/s-osinte__gnu.adb: Likewise.
- * libgnarl/s-osinte__gnu.ads: Likewise.
- * libgnarl/s-osinte__hpux-dce.adb: Likewise.
- * libgnarl/s-osinte__hpux-dce.ads: Likewise.
- * libgnarl/s-osinte__hpux.ads: Likewise.
- * libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise.
- * libgnarl/s-osinte__linux.ads: Likewise.
- * libgnarl/s-osinte__lynxos178.adb: Likewise.
- * libgnarl/s-osinte__lynxos178e.ads: Likewise.
- * libgnarl/s-osinte__mingw.ads: Likewise.
- * libgnarl/s-osinte__posix.adb: Likewise.
- * libgnarl/s-osinte__qnx.adb: Likewise.
- * libgnarl/s-osinte__qnx.ads: Likewise.
- * libgnarl/s-osinte__rtems.adb: Likewise.
- * libgnarl/s-osinte__rtems.ads: Likewise.
- * libgnarl/s-osinte__solaris.adb: Likewise.
- * libgnarl/s-osinte__solaris.ads: Likewise.
- * libgnarl/s-osinte__vxworks.adb: Likewise.
- * libgnarl/s-osinte__vxworks.ads: Likewise.
- * libgnarl/s-osinte__x32.adb: Likewise.
- * libgnarl/s-proinf.adb: Likewise.
- * libgnarl/s-proinf.ads: Likewise.
- * libgnarl/s-qnx.ads: Likewise.
- * libgnarl/s-solita.adb: Likewise.
- * libgnarl/s-solita.ads: Likewise.
- * libgnarl/s-stusta.adb: Likewise.
- * libgnarl/s-stusta.ads: Likewise.
- * libgnarl/s-taasde.adb: Likewise.
- * libgnarl/s-taasde.ads: Likewise.
- * libgnarl/s-tadeca.adb: Likewise.
- * libgnarl/s-tadeca.ads: Likewise.
- * libgnarl/s-tadert.adb: Likewise.
- * libgnarl/s-tadert.ads: Likewise.
- * libgnarl/s-taenca.adb: Likewise.
- * libgnarl/s-taenca.ads: Likewise.
- * libgnarl/s-taprob.adb: Likewise.
- * libgnarl/s-taprob.ads: Likewise.
- * libgnarl/s-taprop.ads: Likewise.
- * libgnarl/s-taprop__dummy.adb: Likewise.
- * libgnarl/s-taprop__hpux-dce.adb: Likewise.
- * libgnarl/s-taprop__linux.adb: Likewise.
- * libgnarl/s-taprop__mingw.adb: Likewise.
- * libgnarl/s-taprop__posix.adb: Likewise.
- * libgnarl/s-taprop__qnx.adb: Likewise.
- * libgnarl/s-taprop__solaris.adb: Likewise.
- * libgnarl/s-taprop__vxworks.adb: Likewise.
- * libgnarl/s-tarest.adb: Likewise.
- * libgnarl/s-tarest.ads: Likewise.
- * libgnarl/s-tasdeb.adb: Likewise.
- * libgnarl/s-tasdeb.ads: Likewise.
- * libgnarl/s-tasinf.adb: Likewise.
- * libgnarl/s-tasinf.ads: Likewise.
- * libgnarl/s-tasinf__linux.adb: Likewise.
- * libgnarl/s-tasinf__linux.ads: Likewise.
- * libgnarl/s-tasinf__mingw.adb: Likewise.
- * libgnarl/s-tasinf__mingw.ads: Likewise.
- * libgnarl/s-tasinf__solaris.adb: Likewise.
- * libgnarl/s-tasinf__solaris.ads: Likewise.
- * libgnarl/s-tasinf__vxworks.ads: Likewise.
- * libgnarl/s-tasini.adb: Likewise.
- * libgnarl/s-tasini.ads: Likewise.
- * libgnarl/s-taskin.adb: Likewise.
- * libgnarl/s-taskin.ads: Likewise.
- * libgnarl/s-taspri__dummy.ads: Likewise.
- * libgnarl/s-taspri__hpux-dce.ads: Likewise.
- * libgnarl/s-taspri__lynxos.ads: Likewise.
- * libgnarl/s-taspri__mingw.ads: Likewise.
- * libgnarl/s-taspri__posix-noaltstack.ads: Likewise.
- * libgnarl/s-taspri__posix.ads: Likewise.
- * libgnarl/s-taspri__solaris.ads: Likewise.
- * libgnarl/s-taspri__vxworks.ads: Likewise.
- * libgnarl/s-tasque.adb: Likewise.
- * libgnarl/s-tasque.ads: Likewise.
- * libgnarl/s-tasren.adb: Likewise.
- * libgnarl/s-tasren.ads: Likewise.
- * libgnarl/s-tasres.ads: Likewise.
- * libgnarl/s-tassta.adb: Likewise.
- * libgnarl/s-tassta.ads: Likewise.
- * libgnarl/s-tasuti.adb: Likewise.
- * libgnarl/s-tasuti.ads: Likewise.
- * libgnarl/s-tataat.adb: Likewise.
- * libgnarl/s-tataat.ads: Likewise.
- * libgnarl/s-tpinop.adb: Likewise.
- * libgnarl/s-tpinop.ads: Likewise.
- * libgnarl/s-tpoaal.adb: Likewise.
- * libgnarl/s-tpoben.adb: Likewise.
- * libgnarl/s-tpoben.ads: Likewise.
- * libgnarl/s-tpobmu.adb: Likewise.
- * libgnarl/s-tpobmu.ads: Likewise.
- * libgnarl/s-tpobop.adb: Likewise.
- * libgnarl/s-tpobop.ads: Likewise.
- * libgnarl/s-tpopmo.adb: Likewise.
- * libgnarl/s-tpopsp__posix-foreign.adb: Likewise.
- * libgnarl/s-tpopsp__posix.adb: Likewise.
- * libgnarl/s-tpopsp__solaris.adb: Likewise.
- * libgnarl/s-tpopsp__tls.adb: Likewise.
- * libgnarl/s-tpopsp__vxworks-rtp.adb: Likewise.
- * libgnarl/s-tpopsp__vxworks-tls.adb: Likewise.
- * libgnarl/s-tpopsp__vxworks.adb: Likewise.
- * libgnarl/s-tporft.adb: Likewise.
- * libgnarl/s-tposen.adb: Likewise.
- * libgnarl/s-tposen.ads: Likewise.
- * libgnarl/s-vxwext.adb: Likewise.
- * libgnarl/s-vxwext.ads: Likewise.
- * libgnarl/s-vxwext__kernel-smp.adb: Likewise.
- * libgnarl/s-vxwext__kernel.adb: Likewise.
- * libgnarl/s-vxwext__kernel.ads: Likewise.
- * libgnarl/s-vxwext__noints.adb: Likewise.
- * libgnarl/s-vxwext__rtp-smp.adb: Likewise.
- * libgnarl/s-vxwext__rtp.adb: Likewise.
- * libgnarl/s-vxwext__rtp.ads: Likewise.
- * libgnarl/s-vxwext__vthreads.ads: Likewise.
- * libgnarl/s-vxwork__aarch64.ads: Likewise.
- * libgnarl/s-vxwork__arm.ads: Likewise.
- * libgnarl/s-vxwork__ppc.ads: Likewise.
- * libgnarl/s-vxwork__x86.ads: Likewise.
- * libgnarl/thread.c: Likewise.
- * libgnat/a-assert.adb: Likewise.
- * libgnat/a-assert.ads: Likewise.
- * libgnat/a-btgbso.adb: Likewise.
- * libgnat/a-btgbso.ads: Likewise.
- * libgnat/a-calari.adb: Likewise.
- * libgnat/a-calari.ads: Likewise.
- * libgnat/a-calcon.adb: Likewise.
- * libgnat/a-calcon.ads: Likewise.
- * libgnat/a-caldel.adb: Likewise.
- * libgnat/a-caldel.ads: Likewise.
- * libgnat/a-calend.adb: Likewise.
- * libgnat/a-calend.ads: Likewise.
- * libgnat/a-calfor.adb: Likewise.
- * libgnat/a-calfor.ads: Likewise.
- * libgnat/a-catizo.adb: Likewise.
- * libgnat/a-cbdlli.adb: Likewise.
- * libgnat/a-cbdlli.ads: Likewise.
- * libgnat/a-cbhama.adb: Likewise.
- * libgnat/a-cbhama.ads: Likewise.
- * libgnat/a-cbhase.adb: Likewise.
- * libgnat/a-cbhase.ads: Likewise.
- * libgnat/a-cbmutr.adb: Likewise.
- * libgnat/a-cbmutr.ads: Likewise.
- * libgnat/a-cborma.adb: Likewise.
- * libgnat/a-cborma.ads: Likewise.
- * libgnat/a-cborse.adb: Likewise.
- * libgnat/a-cborse.ads: Likewise.
- * libgnat/a-cbprqu.adb: Likewise.
- * libgnat/a-cbprqu.ads: Likewise.
- * libgnat/a-cbsyqu.adb: Likewise.
- * libgnat/a-cbsyqu.ads: Likewise.
- * libgnat/a-cdlili.adb: Likewise.
- * libgnat/a-cdlili.ads: Likewise.
- * libgnat/a-cfdlli.adb: Likewise.
- * libgnat/a-cfdlli.ads: Likewise.
- * libgnat/a-cfhama.adb: Likewise.
- * libgnat/a-cfhama.ads: Likewise.
- * libgnat/a-cfhase.adb: Likewise.
- * libgnat/a-cfhase.ads: Likewise.
- * libgnat/a-cfinve.adb: Likewise.
- * libgnat/a-cfinve.ads: Likewise.
- * libgnat/a-cforma.adb: Likewise.
- * libgnat/a-cforma.ads: Likewise.
- * libgnat/a-cforse.adb: Likewise.
- * libgnat/a-cforse.ads: Likewise.
- * libgnat/a-cgaaso.adb: Likewise.
- * libgnat/a-cgaaso.ads: Likewise.
- * libgnat/a-cgarso.adb: Likewise.
- * libgnat/a-cgcaso.adb: Likewise.
- * libgnat/a-chacon.adb: Likewise.
- * libgnat/a-chacon.ads: Likewise.
- * libgnat/a-chahan.adb: Likewise.
- * libgnat/a-chahan.ads: Likewise.
- * libgnat/a-chlat9.ads: Likewise.
- * libgnat/a-chtgbk.adb: Likewise.
- * libgnat/a-chtgbk.ads: Likewise.
- * libgnat/a-chtgbo.adb: Likewise.
- * libgnat/a-chtgbo.ads: Likewise.
- * libgnat/a-chtgke.adb: Likewise.
- * libgnat/a-chtgke.ads: Likewise.
- * libgnat/a-chtgop.adb: Likewise.
- * libgnat/a-chtgop.ads: Likewise.
- * libgnat/a-chzla1.ads: Likewise.
- * libgnat/a-chzla9.ads: Likewise.
- * libgnat/a-cidlli.adb: Likewise.
- * libgnat/a-cidlli.ads: Likewise.
- * libgnat/a-cihama.adb: Likewise.
- * libgnat/a-cihama.ads: Likewise.
- * libgnat/a-cihase.adb: Likewise.
- * libgnat/a-cihase.ads: Likewise.
- * libgnat/a-cimutr.adb: Likewise.
- * libgnat/a-cimutr.ads: Likewise.
- * libgnat/a-ciorma.adb: Likewise.
- * libgnat/a-ciorma.ads: Likewise.
- * libgnat/a-ciormu.adb: Likewise.
- * libgnat/a-ciormu.ads: Likewise.
- * libgnat/a-ciorse.adb: Likewise.
- * libgnat/a-ciorse.ads: Likewise.
- * libgnat/a-clrefi.adb: Likewise.
- * libgnat/a-clrefi.ads: Likewise.
- * libgnat/a-coboho.adb: Likewise.
- * libgnat/a-coboho.ads: Likewise.
- * libgnat/a-cobove.adb: Likewise.
- * libgnat/a-cobove.ads: Likewise.
- * libgnat/a-cofove.adb: Likewise.
- * libgnat/a-cofove.ads: Likewise.
- * libgnat/a-cofuba.adb: Likewise.
- * libgnat/a-cofuba.ads: Likewise.
- * libgnat/a-cofuma.adb: Likewise.
- * libgnat/a-cofuma.ads: Likewise.
- * libgnat/a-cofuse.adb: Likewise.
- * libgnat/a-cofuse.ads: Likewise.
- * libgnat/a-cofuve.adb: Likewise.
- * libgnat/a-cofuve.ads: Likewise.
- * libgnat/a-cogeso.adb: Likewise.
- * libgnat/a-cogeso.ads: Likewise.
- * libgnat/a-cohama.adb: Likewise.
- * libgnat/a-cohama.ads: Likewise.
- * libgnat/a-cohase.adb: Likewise.
- * libgnat/a-cohase.ads: Likewise.
- * libgnat/a-cohata.ads: Likewise.
- * libgnat/a-coinho.adb: Likewise.
- * libgnat/a-coinho.ads: Likewise.
- * libgnat/a-coinho__shared.adb: Likewise.
- * libgnat/a-coinho__shared.ads: Likewise.
- * libgnat/a-coinve.adb: Likewise.
- * libgnat/a-coinve.ads: Likewise.
- * libgnat/a-colien.adb: Likewise.
- * libgnat/a-colien.ads: Likewise.
- * libgnat/a-colire.adb: Likewise.
- * libgnat/a-colire.ads: Likewise.
- * libgnat/a-comlin.adb: Likewise.
- * libgnat/a-comlin.ads: Likewise.
- * libgnat/a-comutr.adb: Likewise.
- * libgnat/a-comutr.ads: Likewise.
- * libgnat/a-conhel.adb: Likewise.
- * libgnat/a-conhel.ads: Likewise.
- * libgnat/a-convec.adb: Likewise.
- * libgnat/a-convec.ads: Likewise.
- * libgnat/a-coorma.adb: Likewise.
- * libgnat/a-coorma.ads: Likewise.
- * libgnat/a-coormu.adb: Likewise.
- * libgnat/a-coormu.ads: Likewise.
- * libgnat/a-coorse.adb: Likewise.
- * libgnat/a-coorse.ads: Likewise.
- * libgnat/a-coprnu.adb: Likewise.
- * libgnat/a-coprnu.ads: Likewise.
- * libgnat/a-crbltr.ads: Likewise.
- * libgnat/a-crbtgk.adb: Likewise.
- * libgnat/a-crbtgk.ads: Likewise.
- * libgnat/a-crbtgo.adb: Likewise.
- * libgnat/a-crbtgo.ads: Likewise.
- * libgnat/a-crdlli.adb: Likewise.
- * libgnat/a-crdlli.ads: Likewise.
- * libgnat/a-csquin.ads: Likewise.
- * libgnat/a-cuprqu.adb: Likewise.
- * libgnat/a-cuprqu.ads: Likewise.
- * libgnat/a-cusyqu.adb: Likewise.
- * libgnat/a-cusyqu.ads: Likewise.
- * libgnat/a-cwila1.ads: Likewise.
- * libgnat/a-cwila9.ads: Likewise.
- * libgnat/a-decima.adb: Likewise.
- * libgnat/a-decima.ads: Likewise.
- * libgnat/a-dhfina.adb: Likewise.
- * libgnat/a-dhfina.ads: Likewise.
- * libgnat/a-diocst.adb: Likewise.
- * libgnat/a-diocst.ads: Likewise.
- * libgnat/a-direct.adb: Likewise.
- * libgnat/a-direct.ads: Likewise.
- * libgnat/a-direio.adb: Likewise.
- * libgnat/a-direio.ads: Likewise.
- * libgnat/a-dirval.adb: Likewise.
- * libgnat/a-dirval.ads: Likewise.
- * libgnat/a-dirval__mingw.adb: Likewise.
- * libgnat/a-einuoc.adb: Likewise.
- * libgnat/a-einuoc.ads: Likewise.
- * libgnat/a-elchha.adb: Likewise.
- * libgnat/a-elchha.ads: Likewise.
- * libgnat/a-elchha__vxworks-ppc-full.adb: Likewise.
- * libgnat/a-envvar.adb: Likewise.
- * libgnat/a-excach.adb: Likewise.
- * libgnat/a-except.adb: Likewise.
- * libgnat/a-except.ads: Likewise.
- * libgnat/a-excpol.adb: Likewise.
- * libgnat/a-excpol__abort.adb: Likewise.
- * libgnat/a-exctra.adb: Likewise.
- * libgnat/a-exctra.ads: Likewise.
- * libgnat/a-exexda.adb: Likewise.
- * libgnat/a-exexpr.adb: Likewise.
- * libgnat/a-exextr.adb: Likewise.
- * libgnat/a-exstat.adb: Likewise.
- * libgnat/a-finali.adb: Likewise.
- * libgnat/a-finali.ads: Likewise.
- * libgnat/a-locale.adb: Likewise.
- * libgnat/a-locale.ads: Likewise.
- * libgnat/a-nbnbin.adb: Likewise.
- * libgnat/a-nbnbin__gmp.adb: Likewise.
- * libgnat/a-nbnbre.adb: Likewise.
- * libgnat/a-ngcefu.adb: Likewise.
- * libgnat/a-ngcoar.adb: Likewise.
- * libgnat/a-ngcoty.adb: Likewise.
- * libgnat/a-ngcoty.ads: Likewise.
- * libgnat/a-ngelfu.adb: Likewise.
- * libgnat/a-ngelfu.ads: Likewise.
- * libgnat/a-ngrear.adb: Likewise.
- * libgnat/a-ngrear.ads: Likewise.
- * libgnat/a-nudira.adb: Likewise.
- * libgnat/a-nudira.ads: Likewise.
- * libgnat/a-nuflra.adb: Likewise.
- * libgnat/a-nuflra.ads: Likewise.
- * libgnat/a-numaux.ads: Likewise.
- * libgnat/a-numaux__darwin.adb: Likewise.
- * libgnat/a-numaux__darwin.ads: Likewise.
- * libgnat/a-numaux__libc-x86.ads: Likewise.
- * libgnat/a-numaux__vxworks.ads: Likewise.
- * libgnat/a-numaux__x86.adb: Likewise.
- * libgnat/a-numaux__x86.ads: Likewise.
- * libgnat/a-rbtgbk.adb: Likewise.
- * libgnat/a-rbtgbk.ads: Likewise.
- * libgnat/a-rbtgbo.adb: Likewise.
- * libgnat/a-rbtgbo.ads: Likewise.
- * libgnat/a-rbtgso.adb: Likewise.
- * libgnat/a-rbtgso.ads: Likewise.
- * libgnat/a-sbecin.adb: Likewise.
- * libgnat/a-sbecin.ads: Likewise.
- * libgnat/a-sbhcin.adb: Likewise.
- * libgnat/a-sbhcin.ads: Likewise.
- * libgnat/a-sblcin.adb: Likewise.
- * libgnat/a-sblcin.ads: Likewise.
- * libgnat/a-secain.adb: Likewise.
- * libgnat/a-secain.ads: Likewise.
- * libgnat/a-sequio.adb: Likewise.
- * libgnat/a-sequio.ads: Likewise.
- * libgnat/a-sfecin.ads: Likewise.
- * libgnat/a-sfhcin.ads: Likewise.
- * libgnat/a-sflcin.ads: Likewise.
- * libgnat/a-shcain.adb: Likewise.
- * libgnat/a-shcain.ads: Likewise.
- * libgnat/a-siocst.adb: Likewise.
- * libgnat/a-siocst.ads: Likewise.
- * libgnat/a-slcain.adb: Likewise.
- * libgnat/a-slcain.ads: Likewise.
- * libgnat/a-ssicst.adb: Likewise.
- * libgnat/a-ssicst.ads: Likewise.
- * libgnat/a-stboha.adb: Likewise.
- * libgnat/a-stmaco.ads: Likewise.
- * libgnat/a-storio.adb: Likewise.
- * libgnat/a-strbou.adb: Likewise.
- * libgnat/a-strbou.ads: Likewise.
- * libgnat/a-stream.adb: Likewise.
- * libgnat/a-stream.ads: Likewise.
- * libgnat/a-strfix.adb: Likewise.
- * libgnat/a-strhas.adb: Likewise.
- * libgnat/a-strmap.adb: Likewise.
- * libgnat/a-strmap.ads: Likewise.
- * libgnat/a-strsea.adb: Likewise.
- * libgnat/a-strsea.ads: Likewise.
- * libgnat/a-strsup.adb: Likewise.
- * libgnat/a-strsup.ads: Likewise.
- * libgnat/a-strunb.adb: Likewise.
- * libgnat/a-strunb.ads: Likewise.
- * libgnat/a-strunb__shared.adb: Likewise.
- * libgnat/a-strunb__shared.ads: Likewise.
- * libgnat/a-ststio.adb: Likewise.
- * libgnat/a-ststio.ads: Likewise.
- * libgnat/a-stunau.adb: Likewise.
- * libgnat/a-stunau.ads: Likewise.
- * libgnat/a-stunau__shared.adb: Likewise.
- * libgnat/a-stunha.adb: Likewise.
- * libgnat/a-stuten.adb: Likewise.
- * libgnat/a-stwibo.adb: Likewise.
- * libgnat/a-stwibo.ads: Likewise.
- * libgnat/a-stwifi.adb: Likewise.
- * libgnat/a-stwiha.adb: Likewise.
- * libgnat/a-stwima.adb: Likewise.
- * libgnat/a-stwima.ads: Likewise.
- * libgnat/a-stwise.adb: Likewise.
- * libgnat/a-stwise.ads: Likewise.
- * libgnat/a-stwisu.adb: Likewise.
- * libgnat/a-stwisu.ads: Likewise.
- * libgnat/a-stwiun.adb: Likewise.
- * libgnat/a-stwiun.ads: Likewise.
- * libgnat/a-stwiun__shared.adb: Likewise.
- * libgnat/a-stwiun__shared.ads: Likewise.
- * libgnat/a-stzbou.adb: Likewise.
- * libgnat/a-stzbou.ads: Likewise.
- * libgnat/a-stzfix.adb: Likewise.
- * libgnat/a-stzhas.adb: Likewise.
- * libgnat/a-stzmap.adb: Likewise.
- * libgnat/a-stzmap.ads: Likewise.
- * libgnat/a-stzsea.adb: Likewise.
- * libgnat/a-stzsea.ads: Likewise.
- * libgnat/a-stzsup.adb: Likewise.
- * libgnat/a-stzsup.ads: Likewise.
- * libgnat/a-stzunb.adb: Likewise.
- * libgnat/a-stzunb.ads: Likewise.
- * libgnat/a-stzunb__shared.adb: Likewise.
- * libgnat/a-stzunb__shared.ads: Likewise.
- * libgnat/a-suecin.adb: Likewise.
- * libgnat/a-suecin.ads: Likewise.
- * libgnat/a-suenco.adb: Likewise.
- * libgnat/a-suenst.adb: Likewise.
- * libgnat/a-suewst.adb: Likewise.
- * libgnat/a-suezst.adb: Likewise.
- * libgnat/a-suhcin.adb: Likewise.
- * libgnat/a-suhcin.ads: Likewise.
- * libgnat/a-sulcin.adb: Likewise.
- * libgnat/a-sulcin.ads: Likewise.
- * libgnat/a-suteio.adb: Likewise.
- * libgnat/a-suteio.ads: Likewise.
- * libgnat/a-suteio__shared.adb: Likewise.
- * libgnat/a-swbwha.adb: Likewise.
- * libgnat/a-swmwco.ads: Likewise.
- * libgnat/a-swunau.adb: Likewise.
- * libgnat/a-swunau.ads: Likewise.
- * libgnat/a-swunau__shared.adb: Likewise.
- * libgnat/a-swuwha.adb: Likewise.
- * libgnat/a-swuwti.adb: Likewise.
- * libgnat/a-swuwti.ads: Likewise.
- * libgnat/a-swuwti__shared.adb: Likewise.
- * libgnat/a-szbzha.adb: Likewise.
- * libgnat/a-szmzco.ads: Likewise.
- * libgnat/a-szunau.adb: Likewise.
- * libgnat/a-szunau.ads: Likewise.
- * libgnat/a-szunau__shared.adb: Likewise.
- * libgnat/a-szuzha.adb: Likewise.
- * libgnat/a-szuzti.adb: Likewise.
- * libgnat/a-szuzti.ads: Likewise.
- * libgnat/a-szuzti__shared.adb: Likewise.
- * libgnat/a-tags.adb: Likewise.
- * libgnat/a-tags.ads: Likewise.
- * libgnat/a-teioed.adb: Likewise.
- * libgnat/a-teioed.ads: Likewise.
- * libgnat/a-textio.adb: Likewise.
- * libgnat/a-textio.ads: Likewise.
- * libgnat/a-tiboio.adb: Likewise.
- * libgnat/a-ticoau.adb: Likewise.
- * libgnat/a-ticoau.ads: Likewise.
- * libgnat/a-ticoio.adb: Likewise.
- * libgnat/a-ticoio.ads: Likewise.
- * libgnat/a-tideau.adb: Likewise.
- * libgnat/a-tideau.ads: Likewise.
- * libgnat/a-tideio.adb: Likewise.
- * libgnat/a-tideio.ads: Likewise.
- * libgnat/a-tienau.adb: Likewise.
- * libgnat/a-tienau.ads: Likewise.
- * libgnat/a-tienio.adb: Likewise.
- * libgnat/a-tifiio.adb: Likewise.
- * libgnat/a-tiflau.adb: Likewise.
- * libgnat/a-tiflau.ads: Likewise.
- * libgnat/a-tiflio.adb: Likewise.
- * libgnat/a-tiflio.ads: Likewise.
- * libgnat/a-tigeau.adb: Likewise.
- * libgnat/a-tigeau.ads: Likewise.
- * libgnat/a-tigeli.adb: Likewise.
- * libgnat/a-tiinau.adb: Likewise.
- * libgnat/a-tiinau.ads: Likewise.
- * libgnat/a-tiinio.adb: Likewise.
- * libgnat/a-tiinio.ads: Likewise.
- * libgnat/a-timoau.adb: Likewise.
- * libgnat/a-timoau.ads: Likewise.
- * libgnat/a-timoio.adb: Likewise.
- * libgnat/a-timoio.ads: Likewise.
- * libgnat/a-tiocst.adb: Likewise.
- * libgnat/a-tiocst.ads: Likewise.
- * libgnat/a-tirsfi.adb: Likewise.
- * libgnat/a-tirsfi.ads: Likewise.
- * libgnat/a-titest.adb: Likewise.
- * libgnat/a-undesu.adb: Likewise.
- * libgnat/a-wichha.adb: Likewise.
- * libgnat/a-wichun.adb: Likewise.
- * libgnat/a-wichun.ads: Likewise.
- * libgnat/a-witeio.adb: Likewise.
- * libgnat/a-witeio.ads: Likewise.
- * libgnat/a-wrstfi.adb: Likewise.
- * libgnat/a-wrstfi.ads: Likewise.
- * libgnat/a-wtcoau.adb: Likewise.
- * libgnat/a-wtcoau.ads: Likewise.
- * libgnat/a-wtcoio.adb: Likewise.
- * libgnat/a-wtcstr.adb: Likewise.
- * libgnat/a-wtcstr.ads: Likewise.
- * libgnat/a-wtdeau.adb: Likewise.
- * libgnat/a-wtdeau.ads: Likewise.
- * libgnat/a-wtdeio.adb: Likewise.
- * libgnat/a-wtedit.adb: Likewise.
- * libgnat/a-wtedit.ads: Likewise.
- * libgnat/a-wtenau.adb: Likewise.
- * libgnat/a-wtenau.ads: Likewise.
- * libgnat/a-wtenio.adb: Likewise.
- * libgnat/a-wtfiio.adb: Likewise.
- * libgnat/a-wtflau.adb: Likewise.
- * libgnat/a-wtflau.ads: Likewise.
- * libgnat/a-wtflio.adb: Likewise.
- * libgnat/a-wtgeau.adb: Likewise.
- * libgnat/a-wtgeau.ads: Likewise.
- * libgnat/a-wtinau.adb: Likewise.
- * libgnat/a-wtinau.ads: Likewise.
- * libgnat/a-wtinio.adb: Likewise.
- * libgnat/a-wtmoau.adb: Likewise.
- * libgnat/a-wtmoau.ads: Likewise.
- * libgnat/a-wtmoio.adb: Likewise.
- * libgnat/a-wtmoio.ads: Likewise.
- * libgnat/a-wttest.adb: Likewise.
- * libgnat/a-wwboio.adb: Likewise.
- * libgnat/a-zchhan.adb: Likewise.
- * libgnat/a-zchuni.adb: Likewise.
- * libgnat/a-zchuni.ads: Likewise.
- * libgnat/a-zrstfi.adb: Likewise.
- * libgnat/a-zrstfi.ads: Likewise.
- * libgnat/a-ztcoau.adb: Likewise.
- * libgnat/a-ztcoio.adb: Likewise.
- * libgnat/a-ztcstr.adb: Likewise.
- * libgnat/a-ztcstr.ads: Likewise.
- * libgnat/a-ztdeau.adb: Likewise.
- * libgnat/a-ztdeau.ads: Likewise.
- * libgnat/a-ztdeio.adb: Likewise.
- * libgnat/a-ztedit.adb: Likewise.
- * libgnat/a-ztedit.ads: Likewise.
- * libgnat/a-ztenau.adb: Likewise.
- * libgnat/a-ztenau.ads: Likewise.
- * libgnat/a-ztenio.adb: Likewise.
- * libgnat/a-ztexio.adb: Likewise.
- * libgnat/a-ztexio.ads: Likewise.
- * libgnat/a-ztfiio.adb: Likewise.
- * libgnat/a-ztflau.adb: Likewise.
- * libgnat/a-ztflau.ads: Likewise.
- * libgnat/a-ztflio.adb: Likewise.
- * libgnat/a-ztgeau.adb: Likewise.
- * libgnat/a-ztgeau.ads: Likewise.
- * libgnat/a-ztinau.adb: Likewise.
- * libgnat/a-ztinau.ads: Likewise.
- * libgnat/a-ztinio.adb: Likewise.
- * libgnat/a-ztmoau.adb: Likewise.
- * libgnat/a-ztmoau.ads: Likewise.
- * libgnat/a-ztmoio.adb: Likewise.
- * libgnat/a-zttest.adb: Likewise.
- * libgnat/a-zzboio.adb: Likewise.
- * libgnat/g-allein.ads: Likewise.
- * libgnat/g-alleve.adb: Likewise.
- * libgnat/g-alleve.ads: Likewise.
- * libgnat/g-alleve__hard.adb: Likewise.
- * libgnat/g-alleve__hard.ads: Likewise.
- * libgnat/g-altcon.adb: Likewise.
- * libgnat/g-altcon.ads: Likewise.
- * libgnat/g-altive.ads: Likewise.
- * libgnat/g-alveop.adb: Likewise.
- * libgnat/g-alveop.ads: Likewise.
- * libgnat/g-alvety.ads: Likewise.
- * libgnat/g-alvevi.ads: Likewise.
- * libgnat/g-arrspl.adb: Likewise.
- * libgnat/g-arrspl.ads: Likewise.
- * libgnat/g-awk.adb: Likewise.
- * libgnat/g-awk.ads: Likewise.
- * libgnat/g-binenv.adb: Likewise.
- * libgnat/g-binenv.ads: Likewise.
- * libgnat/g-brapre.ads: Likewise.
- * libgnat/g-bubsor.adb: Likewise.
- * libgnat/g-bubsor.ads: Likewise.
- * libgnat/g-busora.adb: Likewise.
- * libgnat/g-busora.ads: Likewise.
- * libgnat/g-busorg.adb: Likewise.
- * libgnat/g-busorg.ads: Likewise.
- * libgnat/g-byorma.adb: Likewise.
- * libgnat/g-byorma.ads: Likewise.
- * libgnat/g-bytswa.adb: Likewise.
- * libgnat/g-bytswa.ads: Likewise.
- * libgnat/g-calend.adb: Likewise.
- * libgnat/g-calend.ads: Likewise.
- * libgnat/g-casuti.adb: Likewise.
- * libgnat/g-casuti.ads: Likewise.
- * libgnat/g-catiio.adb: Likewise.
- * libgnat/g-catiio.ads: Likewise.
- * libgnat/g-cgi.adb: Likewise.
- * libgnat/g-cgi.ads: Likewise.
- * libgnat/g-cgicoo.adb: Likewise.
- * libgnat/g-cgicoo.ads: Likewise.
- * libgnat/g-cgideb.adb: Likewise.
- * libgnat/g-cgideb.ads: Likewise.
- * libgnat/g-comlin.adb: Likewise.
- * libgnat/g-comlin.ads: Likewise.
- * libgnat/g-comver.adb: Likewise.
- * libgnat/g-comver.ads: Likewise.
- * libgnat/g-cppexc.adb: Likewise.
- * libgnat/g-cppexc.ads: Likewise.
- * libgnat/g-crc32.adb: Likewise.
- * libgnat/g-crc32.ads: Likewise.
- * libgnat/g-ctrl_c.adb: Likewise.
- * libgnat/g-ctrl_c.ads: Likewise.
- * libgnat/g-curexc.ads: Likewise.
- * libgnat/g-debpoo.adb: Likewise.
- * libgnat/g-debpoo.ads: Likewise.
- * libgnat/g-debuti.adb: Likewise.
- * libgnat/g-debuti.ads: Likewise.
- * libgnat/g-decstr.adb: Likewise.
- * libgnat/g-decstr.ads: Likewise.
- * libgnat/g-deutst.ads: Likewise.
- * libgnat/g-diopit.adb: Likewise.
- * libgnat/g-diopit.ads: Likewise.
- * libgnat/g-dirope.adb: Likewise.
- * libgnat/g-dirope.ads: Likewise.
- * libgnat/g-dynhta.adb: Likewise.
- * libgnat/g-dynhta.ads: Likewise.
- * libgnat/g-dyntab.adb: Likewise.
- * libgnat/g-dyntab.ads: Likewise.
- * libgnat/g-eacodu.adb: Likewise.
- * libgnat/g-encstr.adb: Likewise.
- * libgnat/g-encstr.ads: Likewise.
- * libgnat/g-enutst.ads: Likewise.
- * libgnat/g-excact.adb: Likewise.
- * libgnat/g-excact.ads: Likewise.
- * libgnat/g-except.ads: Likewise.
- * libgnat/g-exctra.adb: Likewise.
- * libgnat/g-exctra.ads: Likewise.
- * libgnat/g-expect.adb: Likewise.
- * libgnat/g-expect.ads: Likewise.
- * libgnat/g-exptty.adb: Likewise.
- * libgnat/g-exptty.ads: Likewise.
- * libgnat/g-flocon.ads: Likewise.
- * libgnat/g-forstr.adb: Likewise.
- * libgnat/g-forstr.ads: Likewise.
- * libgnat/g-graphs.adb: Likewise.
- * libgnat/g-graphs.ads: Likewise.
- * libgnat/g-heasor.adb: Likewise.
- * libgnat/g-heasor.ads: Likewise.
- * libgnat/g-hesora.adb: Likewise.
- * libgnat/g-hesora.ads: Likewise.
- * libgnat/g-hesorg.adb: Likewise.
- * libgnat/g-hesorg.ads: Likewise.
- * libgnat/g-htable.adb: Likewise.
- * libgnat/g-htable.ads: Likewise.
- * libgnat/g-io-put__vxworks.adb: Likewise.
- * libgnat/g-io.adb: Likewise.
- * libgnat/g-io.ads: Likewise.
- * libgnat/g-io_aux.adb: Likewise.
- * libgnat/g-io_aux.ads: Likewise.
- * libgnat/g-lists.adb: Likewise.
- * libgnat/g-lists.ads: Likewise.
- * libgnat/g-locfil.adb: Likewise.
- * libgnat/g-locfil.ads: Likewise.
- * libgnat/g-mbdira.adb: Likewise.
- * libgnat/g-mbdira.ads: Likewise.
- * libgnat/g-mbflra.adb: Likewise.
- * libgnat/g-mbflra.ads: Likewise.
- * libgnat/g-md5.adb: Likewise.
- * libgnat/g-md5.ads: Likewise.
- * libgnat/g-memdum.adb: Likewise.
- * libgnat/g-memdum.ads: Likewise.
- * libgnat/g-moreex.adb: Likewise.
- * libgnat/g-moreex.ads: Likewise.
- * libgnat/g-os_lib.adb: Likewise.
- * libgnat/g-os_lib.ads: Likewise.
- * libgnat/g-pehage.adb: Likewise.
- * libgnat/g-pehage.ads: Likewise.
- * libgnat/g-rannum.adb: Likewise.
- * libgnat/g-rannum.ads: Likewise.
- * libgnat/g-regexp.adb: Likewise.
- * libgnat/g-regexp.ads: Likewise.
- * libgnat/g-regist.adb: Likewise.
- * libgnat/g-regist.ads: Likewise.
- * libgnat/g-regpat.adb: Likewise.
- * libgnat/g-regpat.ads: Likewise.
- * libgnat/g-rewdat.adb: Likewise.
- * libgnat/g-rewdat.ads: Likewise.
- * libgnat/g-sechas.adb: Likewise.
- * libgnat/g-sechas.ads: Likewise.
- * libgnat/g-sehamd.adb: Likewise.
- * libgnat/g-sehamd.ads: Likewise.
- * libgnat/g-sehash.adb: Likewise.
- * libgnat/g-sehash.ads: Likewise.
- * libgnat/g-sercom.adb: Likewise.
- * libgnat/g-sercom.ads: Likewise.
- * libgnat/g-sercom__linux.adb: Likewise.
- * libgnat/g-sercom__mingw.adb: Likewise.
- * libgnat/g-sestin.ads: Likewise.
- * libgnat/g-sets.adb: Likewise.
- * libgnat/g-sets.ads: Likewise.
- * libgnat/g-sha1.adb: Likewise.
- * libgnat/g-sha1.ads: Likewise.
- * libgnat/g-sha224.ads: Likewise.
- * libgnat/g-sha256.ads: Likewise.
- * libgnat/g-sha384.ads: Likewise.
- * libgnat/g-sha512.ads: Likewise.
- * libgnat/g-shsh32.adb: Likewise.
- * libgnat/g-shsh32.ads: Likewise.
- * libgnat/g-shsh64.adb: Likewise.
- * libgnat/g-shsh64.ads: Likewise.
- * libgnat/g-shshco.adb: Likewise.
- * libgnat/g-shshco.ads: Likewise.
- * libgnat/g-soccon.ads: Likewise.
- * libgnat/g-socket.adb: Likewise.
- * libgnat/g-socket.ads: Likewise.
- * libgnat/g-socket__dummy.adb: Likewise.
- * libgnat/g-socket__dummy.ads: Likewise.
- * libgnat/g-socthi.adb: Likewise.
- * libgnat/g-socthi.ads: Likewise.
- * libgnat/g-socthi__dummy.adb: Likewise.
- * libgnat/g-socthi__dummy.ads: Likewise.
- * libgnat/g-socthi__mingw.adb: Likewise.
- * libgnat/g-socthi__mingw.ads: Likewise.
- * libgnat/g-socthi__vxworks.adb: Likewise.
- * libgnat/g-socthi__vxworks.ads: Likewise.
- * libgnat/g-soliop.ads: Likewise.
- * libgnat/g-soliop__lynxos.ads: Likewise.
- * libgnat/g-soliop__mingw.ads: Likewise.
- * libgnat/g-soliop__qnx.ads: Likewise.
- * libgnat/g-soliop__solaris.ads: Likewise.
- * libgnat/g-sothco.adb: Likewise.
- * libgnat/g-sothco.ads: Likewise.
- * libgnat/g-sothco__dummy.adb: Likewise.
- * libgnat/g-sothco__dummy.ads: Likewise.
- * libgnat/g-souinf.ads: Likewise.
- * libgnat/g-spchge.adb: Likewise.
- * libgnat/g-spchge.ads: Likewise.
- * libgnat/g-speche.adb: Likewise.
- * libgnat/g-speche.ads: Likewise.
- * libgnat/g-spipat.adb: Likewise.
- * libgnat/g-spipat.ads: Likewise.
- * libgnat/g-spitbo.adb: Likewise.
- * libgnat/g-spitbo.ads: Likewise.
- * libgnat/g-sptabo.ads: Likewise.
- * libgnat/g-sptain.ads: Likewise.
- * libgnat/g-sptavs.ads: Likewise.
- * libgnat/g-sse.ads: Likewise.
- * libgnat/g-ssvety.ads: Likewise.
- * libgnat/g-sthcso.adb: Likewise.
- * libgnat/g-stheme.adb: Likewise.
- * libgnat/g-strhas.ads: Likewise.
- * libgnat/g-string.adb: Likewise.
- * libgnat/g-string.ads: Likewise.
- * libgnat/g-strspl.ads: Likewise.
- * libgnat/g-stseme.adb: Likewise.
- * libgnat/g-stsifd__sockets.adb: Likewise.
- * libgnat/g-table.adb: Likewise.
- * libgnat/g-table.ads: Likewise.
- * libgnat/g-tasloc.adb: Likewise.
- * libgnat/g-tasloc.ads: Likewise.
- * libgnat/g-timsta.adb: Likewise.
- * libgnat/g-timsta.ads: Likewise.
- * libgnat/g-traceb.adb: Likewise.
- * libgnat/g-traceb.ads: Likewise.
- * libgnat/g-trasym.adb: Likewise.
- * libgnat/g-trasym.ads: Likewise.
- * libgnat/g-tty.adb: Likewise.
- * libgnat/g-tty.ads: Likewise.
- * libgnat/g-u3spch.adb: Likewise.
- * libgnat/g-u3spch.ads: Likewise.
- * libgnat/g-utf_32.adb: Likewise.
- * libgnat/g-utf_32.ads: Likewise.
- * libgnat/g-wispch.adb: Likewise.
- * libgnat/g-wispch.ads: Likewise.
- * libgnat/g-wistsp.ads: Likewise.
- * libgnat/g-zspche.adb: Likewise.
- * libgnat/g-zspche.ads: Likewise.
- * libgnat/g-zstspl.ads: Likewise.
- * libgnat/gnat.ads: Likewise.
- * libgnat/i-c.adb: Likewise.
- * libgnat/i-cexten.ads: Likewise.
- * libgnat/i-cobol.adb: Likewise.
- * libgnat/i-cobol.ads: Likewise.
- * libgnat/i-cpoint.adb: Likewise.
- * libgnat/i-cpoint.ads: Likewise.
- * libgnat/i-cstrea.adb: Likewise.
- * libgnat/i-cstrea.ads: Likewise.
- * libgnat/i-cstrin.adb: Likewise.
- * libgnat/i-cstrin.ads: Likewise.
- * libgnat/i-fortra.adb: Likewise.
- * libgnat/i-pacdec.adb: Likewise.
- * libgnat/i-pacdec.ads: Likewise.
- * libgnat/i-vxwoio.adb: Likewise.
- * libgnat/i-vxwoio.ads: Likewise.
- * libgnat/i-vxwork.ads: Likewise.
- * libgnat/i-vxwork__x86.ads: Likewise.
- * libgnat/interfac.ads: Likewise.
- * libgnat/memtrack.adb: Likewise.
- * libgnat/s-addima.adb: Likewise.
- * libgnat/s-addima.ads: Likewise.
- * libgnat/s-addope.adb: Likewise.
- * libgnat/s-addope.ads: Likewise.
- * libgnat/s-aotase.adb: Likewise.
- * libgnat/s-aotase.ads: Likewise.
- * libgnat/s-arit64.adb: Likewise.
- * libgnat/s-arit64.ads: Likewise.
- * libgnat/s-assert.adb: Likewise.
- * libgnat/s-assert.ads: Likewise.
- * libgnat/s-atacco.adb: Likewise.
- * libgnat/s-atacco.ads: Likewise.
- * libgnat/s-atocou.adb: Likewise.
- * libgnat/s-atocou.ads: Likewise.
- * libgnat/s-atocou__builtin.adb: Likewise.
- * libgnat/s-atocou__x86.adb: Likewise.
- * libgnat/s-atoope.ads: Likewise.
- * libgnat/s-atopar.adb: Likewise.
- * libgnat/s-atopar.ads: Likewise.
- * libgnat/s-atopex.adb: Likewise.
- * libgnat/s-atopex.ads: Likewise.
- * libgnat/s-atopri.adb: Likewise.
- * libgnat/s-atopri.ads: Likewise.
- * libgnat/s-auxdec.adb: Likewise.
- * libgnat/s-auxdec.ads: Likewise.
- * libgnat/s-bignum.adb: Likewise.
- * libgnat/s-bignum.ads: Likewise.
- * libgnat/s-bitfie.ads: Likewise.
- * libgnat/s-bitops.adb: Likewise.
- * libgnat/s-bitops.ads: Likewise.
- * libgnat/s-bituti.adb: Likewise.
- * libgnat/s-bituti.ads: Likewise.
- * libgnat/s-boarop.ads: Likewise.
- * libgnat/s-boustr.adb: Likewise.
- * libgnat/s-boustr.ads: Likewise.
- * libgnat/s-bytswa.ads: Likewise.
- * libgnat/s-carsi8.adb: Likewise.
- * libgnat/s-carsi8.ads: Likewise.
- * libgnat/s-carun8.adb: Likewise.
- * libgnat/s-carun8.ads: Likewise.
- * libgnat/s-casi16.adb: Likewise.
- * libgnat/s-casi16.ads: Likewise.
- * libgnat/s-casi32.adb: Likewise.
- * libgnat/s-casi32.ads: Likewise.
- * libgnat/s-casi64.adb: Likewise.
- * libgnat/s-casi64.ads: Likewise.
- * libgnat/s-casuti.adb: Likewise.
- * libgnat/s-casuti.ads: Likewise.
- * libgnat/s-caun16.adb: Likewise.
- * libgnat/s-caun16.ads: Likewise.
- * libgnat/s-caun32.adb: Likewise.
- * libgnat/s-caun32.ads: Likewise.
- * libgnat/s-caun64.adb: Likewise.
- * libgnat/s-caun64.ads: Likewise.
- * libgnat/s-chepoo.ads: Likewise.
- * libgnat/s-commun.adb: Likewise.
- * libgnat/s-commun.ads: Likewise.
- * libgnat/s-conca2.adb: Likewise.
- * libgnat/s-conca2.ads: Likewise.
- * libgnat/s-conca3.adb: Likewise.
- * libgnat/s-conca3.ads: Likewise.
- * libgnat/s-conca4.adb: Likewise.
- * libgnat/s-conca4.ads: Likewise.
- * libgnat/s-conca5.adb: Likewise.
- * libgnat/s-conca5.ads: Likewise.
- * libgnat/s-conca6.adb: Likewise.
- * libgnat/s-conca6.ads: Likewise.
- * libgnat/s-conca7.adb: Likewise.
- * libgnat/s-conca7.ads: Likewise.
- * libgnat/s-conca8.adb: Likewise.
- * libgnat/s-conca8.ads: Likewise.
- * libgnat/s-conca9.adb: Likewise.
- * libgnat/s-conca9.ads: Likewise.
- * libgnat/s-crc32.adb: Likewise.
- * libgnat/s-crc32.ads: Likewise.
- * libgnat/s-crtl.ads: Likewise.
- * libgnat/s-dfmkio.ads: Likewise.
- * libgnat/s-dfmopr.ads: Likewise.
- * libgnat/s-dgmgop.ads: Likewise.
- * libgnat/s-diflio.adb: Likewise.
- * libgnat/s-diflio.ads: Likewise.
- * libgnat/s-diflmk.ads: Likewise.
- * libgnat/s-digemk.ads: Likewise.
- * libgnat/s-diinio.adb: Likewise.
- * libgnat/s-diinio.ads: Likewise.
- * libgnat/s-dilomk.ads: Likewise.
- * libgnat/s-dim.ads: Likewise.
- * libgnat/s-dimkio.ads: Likewise.
- * libgnat/s-dimmks.ads: Likewise.
- * libgnat/s-direio.adb: Likewise.
- * libgnat/s-direio.ads: Likewise.
- * libgnat/s-dlmkio.ads: Likewise.
- * libgnat/s-dlmopr.ads: Likewise.
- * libgnat/s-dmotpr.ads: Likewise.
- * libgnat/s-dsaser.ads: Likewise.
- * libgnat/s-dwalin.adb: Likewise.
- * libgnat/s-dwalin.ads: Likewise.
- * libgnat/s-elaall.adb: Likewise.
- * libgnat/s-elaall.ads: Likewise.
- * libgnat/s-excdeb.adb: Likewise.
- * libgnat/s-excdeb.ads: Likewise.
- * libgnat/s-except.adb: Likewise.
- * libgnat/s-except.ads: Likewise.
- * libgnat/s-excmac__arm.adb: Likewise.
- * libgnat/s-excmac__arm.ads: Likewise.
- * libgnat/s-excmac__gcc.adb: Likewise.
- * libgnat/s-excmac__gcc.ads: Likewise.
- * libgnat/s-exctab.adb: Likewise.
- * libgnat/s-exctab.ads: Likewise.
- * libgnat/s-exctra.adb: Likewise.
- * libgnat/s-exctra.ads: Likewise.
- * libgnat/s-exnint.adb: Likewise.
- * libgnat/s-exnint.ads: Likewise.
- * libgnat/s-exnllf.adb: Likewise.
- * libgnat/s-exnllf.ads: Likewise.
- * libgnat/s-exnlli.adb: Likewise.
- * libgnat/s-exnlli.ads: Likewise.
- * libgnat/s-expint.adb: Likewise.
- * libgnat/s-expint.ads: Likewise.
- * libgnat/s-explli.adb: Likewise.
- * libgnat/s-explli.ads: Likewise.
- * libgnat/s-expllu.adb: Likewise.
- * libgnat/s-expllu.ads: Likewise.
- * libgnat/s-expmod.adb: Likewise.
- * libgnat/s-expmod.ads: Likewise.
- * libgnat/s-expuns.adb: Likewise.
- * libgnat/s-expuns.ads: Likewise.
- * libgnat/s-fatflt.ads: Likewise.
- * libgnat/s-fatgen.adb: Likewise.
- * libgnat/s-fatgen.ads: Likewise.
- * libgnat/s-fatlfl.ads: Likewise.
- * libgnat/s-fatllf.ads: Likewise.
- * libgnat/s-fatsfl.ads: Likewise.
- * libgnat/s-ficobl.ads: Likewise.
- * libgnat/s-filatt.ads: Likewise.
- * libgnat/s-fileio.adb: Likewise.
- * libgnat/s-fileio.ads: Likewise.
- * libgnat/s-finmas.adb: Likewise.
- * libgnat/s-finmas.ads: Likewise.
- * libgnat/s-finroo.adb: Likewise.
- * libgnat/s-finroo.ads: Likewise.
- * libgnat/s-flocon.adb: Likewise.
- * libgnat/s-flocon.ads: Likewise.
- * libgnat/s-flocon__none.adb: Likewise.
- * libgnat/s-fore.adb: Likewise.
- * libgnat/s-fore.ads: Likewise.
- * libgnat/s-gearop.adb: Likewise.
- * libgnat/s-gearop.ads: Likewise.
- * libgnat/s-genbig.adb: Likewise.
- * libgnat/s-genbig.ads: Likewise.
- * libgnat/s-geveop.adb: Likewise.
- * libgnat/s-geveop.ads: Likewise.
- * libgnat/s-gloloc.adb: Likewise.
- * libgnat/s-gloloc.ads: Likewise.
- * libgnat/s-gloloc__mingw.adb: Likewise.
- * libgnat/s-htable.adb: Likewise.
- * libgnat/s-htable.ads: Likewise.
- * libgnat/s-imenne.adb: Likewise.
- * libgnat/s-imenne.ads: Likewise.
- * libgnat/s-imgbiu.adb: Likewise.
- * libgnat/s-imgbiu.ads: Likewise.
- * libgnat/s-imgboo.adb: Likewise.
- * libgnat/s-imgboo.ads: Likewise.
- * libgnat/s-imgcha.adb: Likewise.
- * libgnat/s-imgcha.ads: Likewise.
- * libgnat/s-imgdec.adb: Likewise.
- * libgnat/s-imgdec.ads: Likewise.
- * libgnat/s-imgenu.adb: Likewise.
- * libgnat/s-imgenu.ads: Likewise.
- * libgnat/s-imgint.adb: Likewise.
- * libgnat/s-imgint.ads: Likewise.
- * libgnat/s-imgllb.adb: Likewise.
- * libgnat/s-imgllb.ads: Likewise.
- * libgnat/s-imglld.adb: Likewise.
- * libgnat/s-imglld.ads: Likewise.
- * libgnat/s-imglli.adb: Likewise.
- * libgnat/s-imglli.ads: Likewise.
- * libgnat/s-imgllu.adb: Likewise.
- * libgnat/s-imgllu.ads: Likewise.
- * libgnat/s-imgllw.adb: Likewise.
- * libgnat/s-imgllw.ads: Likewise.
- * libgnat/s-imgrea.adb: Likewise.
- * libgnat/s-imgrea.ads: Likewise.
- * libgnat/s-imguns.adb: Likewise.
- * libgnat/s-imguns.ads: Likewise.
- * libgnat/s-imgwch.adb: Likewise.
- * libgnat/s-imgwch.ads: Likewise.
- * libgnat/s-imgwiu.adb: Likewise.
- * libgnat/s-imgwiu.ads: Likewise.
- * libgnat/s-io.adb: Likewise.
- * libgnat/s-io.ads: Likewise.
- * libgnat/s-llflex.ads: Likewise.
- * libgnat/s-maccod.ads: Likewise.
- * libgnat/s-mantis.adb: Likewise.
- * libgnat/s-mantis.ads: Likewise.
- * libgnat/s-mastop.adb: Likewise.
- * libgnat/s-mastop.ads: Likewise.
- * libgnat/s-memcop.ads: Likewise.
- * libgnat/s-memory.adb: Likewise.
- * libgnat/s-memory.ads: Likewise.
- * libgnat/s-mmap.adb: Likewise.
- * libgnat/s-mmap.ads: Likewise.
- * libgnat/s-mmauni__long.ads: Likewise.
- * libgnat/s-mmosin__mingw.adb: Likewise.
- * libgnat/s-mmosin__mingw.ads: Likewise.
- * libgnat/s-mmosin__unix.adb: Likewise.
- * libgnat/s-mmosin__unix.ads: Likewise.
- * libgnat/s-multip.adb: Likewise.
- * libgnat/s-objrea.adb: Likewise.
- * libgnat/s-objrea.ads: Likewise.
- * libgnat/s-optide.adb: Likewise.
- * libgnat/s-os_lib.adb: Likewise.
- * libgnat/s-os_lib.ads: Likewise.
- * libgnat/s-osprim.ads: Likewise.
- * libgnat/s-osprim__darwin.adb: Likewise.
- * libgnat/s-osprim__lynxos.ads: Likewise.
- * libgnat/s-osprim__mingw.adb: Likewise.
- * libgnat/s-osprim__posix.adb: Likewise.
- * libgnat/s-osprim__posix2008.adb: Likewise.
- * libgnat/s-osprim__rtems.adb: Likewise.
- * libgnat/s-osprim__solaris.adb: Likewise.
- * libgnat/s-osprim__unix.adb: Likewise.
- * libgnat/s-osprim__vxworks.adb: Likewise.
- * libgnat/s-osprim__x32.adb: Likewise.
- * libgnat/s-osvers__vxworks-653.ads: Likewise.
- * libgnat/s-pack03.adb: Likewise.
- * libgnat/s-pack03.ads: Likewise.
- * libgnat/s-pack05.adb: Likewise.
- * libgnat/s-pack05.ads: Likewise.
- * libgnat/s-pack06.adb: Likewise.
- * libgnat/s-pack06.ads: Likewise.
- * libgnat/s-pack07.adb: Likewise.
- * libgnat/s-pack07.ads: Likewise.
- * libgnat/s-pack09.adb: Likewise.
- * libgnat/s-pack09.ads: Likewise.
- * libgnat/s-pack10.adb: Likewise.
- * libgnat/s-pack10.ads: Likewise.
- * libgnat/s-pack11.adb: Likewise.
- * libgnat/s-pack11.ads: Likewise.
- * libgnat/s-pack12.adb: Likewise.
- * libgnat/s-pack12.ads: Likewise.
- * libgnat/s-pack13.adb: Likewise.
- * libgnat/s-pack13.ads: Likewise.
- * libgnat/s-pack14.adb: Likewise.
- * libgnat/s-pack14.ads: Likewise.
- * libgnat/s-pack15.adb: Likewise.
- * libgnat/s-pack15.ads: Likewise.
- * libgnat/s-pack17.adb: Likewise.
- * libgnat/s-pack17.ads: Likewise.
- * libgnat/s-pack18.adb: Likewise.
- * libgnat/s-pack18.ads: Likewise.
- * libgnat/s-pack19.adb: Likewise.
- * libgnat/s-pack19.ads: Likewise.
- * libgnat/s-pack20.adb: Likewise.
- * libgnat/s-pack20.ads: Likewise.
- * libgnat/s-pack21.adb: Likewise.
- * libgnat/s-pack21.ads: Likewise.
- * libgnat/s-pack22.adb: Likewise.
- * libgnat/s-pack22.ads: Likewise.
- * libgnat/s-pack23.adb: Likewise.
- * libgnat/s-pack23.ads: Likewise.
- * libgnat/s-pack24.adb: Likewise.
- * libgnat/s-pack24.ads: Likewise.
- * libgnat/s-pack25.adb: Likewise.
- * libgnat/s-pack25.ads: Likewise.
- * libgnat/s-pack26.adb: Likewise.
- * libgnat/s-pack26.ads: Likewise.
- * libgnat/s-pack27.adb: Likewise.
- * libgnat/s-pack27.ads: Likewise.
- * libgnat/s-pack28.adb: Likewise.
- * libgnat/s-pack28.ads: Likewise.
- * libgnat/s-pack29.adb: Likewise.
- * libgnat/s-pack29.ads: Likewise.
- * libgnat/s-pack30.adb: Likewise.
- * libgnat/s-pack30.ads: Likewise.
- * libgnat/s-pack31.adb: Likewise.
- * libgnat/s-pack31.ads: Likewise.
- * libgnat/s-pack33.adb: Likewise.
- * libgnat/s-pack33.ads: Likewise.
- * libgnat/s-pack34.adb: Likewise.
- * libgnat/s-pack34.ads: Likewise.
- * libgnat/s-pack35.adb: Likewise.
- * libgnat/s-pack35.ads: Likewise.
- * libgnat/s-pack36.adb: Likewise.
- * libgnat/s-pack36.ads: Likewise.
- * libgnat/s-pack37.adb: Likewise.
- * libgnat/s-pack37.ads: Likewise.
- * libgnat/s-pack38.adb: Likewise.
- * libgnat/s-pack38.ads: Likewise.
- * libgnat/s-pack39.adb: Likewise.
- * libgnat/s-pack39.ads: Likewise.
- * libgnat/s-pack40.adb: Likewise.
- * libgnat/s-pack40.ads: Likewise.
- * libgnat/s-pack41.adb: Likewise.
- * libgnat/s-pack41.ads: Likewise.
- * libgnat/s-pack42.adb: Likewise.
- * libgnat/s-pack42.ads: Likewise.
- * libgnat/s-pack43.adb: Likewise.
- * libgnat/s-pack43.ads: Likewise.
- * libgnat/s-pack44.adb: Likewise.
- * libgnat/s-pack44.ads: Likewise.
- * libgnat/s-pack45.adb: Likewise.
- * libgnat/s-pack45.ads: Likewise.
- * libgnat/s-pack46.adb: Likewise.
- * libgnat/s-pack46.ads: Likewise.
- * libgnat/s-pack47.adb: Likewise.
- * libgnat/s-pack47.ads: Likewise.
- * libgnat/s-pack48.adb: Likewise.
- * libgnat/s-pack48.ads: Likewise.
- * libgnat/s-pack49.adb: Likewise.
- * libgnat/s-pack49.ads: Likewise.
- * libgnat/s-pack50.adb: Likewise.
- * libgnat/s-pack50.ads: Likewise.
- * libgnat/s-pack51.adb: Likewise.
- * libgnat/s-pack51.ads: Likewise.
- * libgnat/s-pack52.adb: Likewise.
- * libgnat/s-pack52.ads: Likewise.
- * libgnat/s-pack53.adb: Likewise.
- * libgnat/s-pack53.ads: Likewise.
- * libgnat/s-pack54.adb: Likewise.
- * libgnat/s-pack54.ads: Likewise.
- * libgnat/s-pack55.adb: Likewise.
- * libgnat/s-pack55.ads: Likewise.
- * libgnat/s-pack56.adb: Likewise.
- * libgnat/s-pack56.ads: Likewise.
- * libgnat/s-pack57.adb: Likewise.
- * libgnat/s-pack57.ads: Likewise.
- * libgnat/s-pack58.adb: Likewise.
- * libgnat/s-pack58.ads: Likewise.
- * libgnat/s-pack59.adb: Likewise.
- * libgnat/s-pack59.ads: Likewise.
- * libgnat/s-pack60.adb: Likewise.
- * libgnat/s-pack60.ads: Likewise.
- * libgnat/s-pack61.adb: Likewise.
- * libgnat/s-pack61.ads: Likewise.
- * libgnat/s-pack62.adb: Likewise.
- * libgnat/s-pack62.ads: Likewise.
- * libgnat/s-pack63.adb: Likewise.
- * libgnat/s-pack63.ads: Likewise.
- * libgnat/s-parame.adb: Likewise.
- * libgnat/s-parame.ads: Likewise.
- * libgnat/s-parame__ae653.ads: Likewise.
- * libgnat/s-parame__hpux.ads: Likewise.
- * libgnat/s-parame__rtems.adb: Likewise.
- * libgnat/s-parame__vxworks.adb: Likewise.
- * libgnat/s-parame__vxworks.ads: Likewise.
- * libgnat/s-parint.adb: Likewise.
- * libgnat/s-parint.ads: Likewise.
- * libgnat/s-pooglo.adb: Likewise.
- * libgnat/s-pooglo.ads: Likewise.
- * libgnat/s-pooloc.adb: Likewise.
- * libgnat/s-pooloc.ads: Likewise.
- * libgnat/s-poosiz.adb: Likewise.
- * libgnat/s-poosiz.ads: Likewise.
- * libgnat/s-powtab.ads: Likewise.
- * libgnat/s-purexc.ads: Likewise.
- * libgnat/s-rannum.adb: Likewise.
- * libgnat/s-rannum.ads: Likewise.
- * libgnat/s-ransee.adb: Likewise.
- * libgnat/s-ransee.ads: Likewise.
- * libgnat/s-regexp.adb: Likewise.
- * libgnat/s-regexp.ads: Likewise.
- * libgnat/s-regpat.adb: Likewise.
- * libgnat/s-regpat.ads: Likewise.
- * libgnat/s-resfil.adb: Likewise.
- * libgnat/s-resfil.ads: Likewise.
- * libgnat/s-restri.adb: Likewise.
- * libgnat/s-restri.ads: Likewise.
- * libgnat/s-rident.ads: Likewise.
- * libgnat/s-rpc.adb: Likewise.
- * libgnat/s-rpc.ads: Likewise.
- * libgnat/s-scaval.adb: Likewise.
- * libgnat/s-scaval.ads: Likewise.
- * libgnat/s-secsta.adb: Likewise.
- * libgnat/s-secsta.ads: Likewise.
- * libgnat/s-sequio.adb: Likewise.
- * libgnat/s-sequio.ads: Likewise.
- * libgnat/s-shasto.adb: Likewise.
- * libgnat/s-shasto.ads: Likewise.
- * libgnat/s-soflin.adb: Likewise.
- * libgnat/s-soflin.ads: Likewise.
- * libgnat/s-soliin.adb: Likewise.
- * libgnat/s-soliin.ads: Likewise.
- * libgnat/s-sopco3.adb: Likewise.
- * libgnat/s-sopco3.ads: Likewise.
- * libgnat/s-sopco4.adb: Likewise.
- * libgnat/s-sopco4.ads: Likewise.
- * libgnat/s-sopco5.adb: Likewise.
- * libgnat/s-sopco5.ads: Likewise.
- * libgnat/s-spsufi.adb: Likewise.
- * libgnat/s-spsufi.ads: Likewise.
- * libgnat/s-stache.adb: Likewise.
- * libgnat/s-stache.ads: Likewise.
- * libgnat/s-stalib.adb: Likewise.
- * libgnat/s-stalib.ads: Likewise.
- * libgnat/s-stausa.adb: Likewise.
- * libgnat/s-stausa.ads: Likewise.
- * libgnat/s-stchop.adb: Likewise.
- * libgnat/s-stchop.ads: Likewise.
- * libgnat/s-stchop__limit.ads: Likewise.
- * libgnat/s-stchop__rtems.adb: Likewise.
- * libgnat/s-stchop__vxworks.adb: Likewise.
- * libgnat/s-stoele.adb: Likewise.
- * libgnat/s-stoele.ads: Likewise.
- * libgnat/s-stopoo.adb: Likewise.
- * libgnat/s-stopoo.ads: Likewise.
- * libgnat/s-stposu.adb: Likewise.
- * libgnat/s-stposu.ads: Likewise.
- * libgnat/s-stratt.adb: Likewise.
- * libgnat/s-stratt.ads: Likewise.
- * libgnat/s-stratt__xdr.adb: Likewise.
- * libgnat/s-strcom.adb: Likewise.
- * libgnat/s-strcom.ads: Likewise.
- * libgnat/s-strhas.adb: Likewise.
- * libgnat/s-strhas.ads: Likewise.
- * libgnat/s-string.adb: Likewise.
- * libgnat/s-string.ads: Likewise.
- * libgnat/s-strops.adb: Likewise.
- * libgnat/s-strops.ads: Likewise.
- * libgnat/s-ststop.adb: Likewise.
- * libgnat/s-ststop.ads: Likewise.
- * libgnat/s-tasloc.adb: Likewise.
- * libgnat/s-tasloc.ads: Likewise.
- * libgnat/s-thread.ads: Likewise.
- * libgnat/s-thread__ae653.adb: Likewise.
- * libgnat/s-traceb.adb: Likewise.
- * libgnat/s-traceb.ads: Likewise.
- * libgnat/s-traceb__hpux.adb: Likewise.
- * libgnat/s-traceb__mastop.adb: Likewise.
- * libgnat/s-traent.adb: Likewise.
- * libgnat/s-traent.ads: Likewise.
- * libgnat/s-trasym.adb: Likewise.
- * libgnat/s-trasym.ads: Likewise.
- * libgnat/s-trasym__dwarf.adb: Likewise.
- * libgnat/s-tsmona.adb: Likewise.
- * libgnat/s-tsmona__linux.adb: Likewise.
- * libgnat/s-tsmona__mingw.adb: Likewise.
- * libgnat/s-unstyp.ads: Likewise.
- * libgnat/s-utf_32.adb: Likewise.
- * libgnat/s-utf_32.ads: Likewise.
- * libgnat/s-valboo.adb: Likewise.
- * libgnat/s-valboo.ads: Likewise.
- * libgnat/s-valcha.adb: Likewise.
- * libgnat/s-valcha.ads: Likewise.
- * libgnat/s-valdec.adb: Likewise.
- * libgnat/s-valdec.ads: Likewise.
- * libgnat/s-valenu.adb: Likewise.
- * libgnat/s-valenu.ads: Likewise.
- * libgnat/s-valint.adb: Likewise.
- * libgnat/s-valint.ads: Likewise.
- * libgnat/s-vallld.adb: Likewise.
- * libgnat/s-vallld.ads: Likewise.
- * libgnat/s-vallli.adb: Likewise.
- * libgnat/s-vallli.ads: Likewise.
- * libgnat/s-valllu.adb: Likewise.
- * libgnat/s-valllu.ads: Likewise.
- * libgnat/s-valrea.adb: Likewise.
- * libgnat/s-valrea.ads: Likewise.
- * libgnat/s-valuns.adb: Likewise.
- * libgnat/s-valuns.ads: Likewise.
- * libgnat/s-valuti.adb: Likewise.
- * libgnat/s-valuti.ads: Likewise.
- * libgnat/s-valwch.adb: Likewise.
- * libgnat/s-valwch.ads: Likewise.
- * libgnat/s-veboop.adb: Likewise.
- * libgnat/s-veboop.ads: Likewise.
- * libgnat/s-vector.ads: Likewise.
- * libgnat/s-vercon.adb: Likewise.
- * libgnat/s-vercon.ads: Likewise.
- * libgnat/s-wchcnv.adb: Likewise.
- * libgnat/s-wchcnv.ads: Likewise.
- * libgnat/s-wchcon.adb: Likewise.
- * libgnat/s-wchcon.ads: Likewise.
- * libgnat/s-wchjis.adb: Likewise.
- * libgnat/s-wchjis.ads: Likewise.
- * libgnat/s-wchstw.adb: Likewise.
- * libgnat/s-wchstw.ads: Likewise.
- * libgnat/s-wchwts.adb: Likewise.
- * libgnat/s-wchwts.ads: Likewise.
- * libgnat/s-widboo.adb: Likewise.
- * libgnat/s-widboo.ads: Likewise.
- * libgnat/s-widcha.adb: Likewise.
- * libgnat/s-widcha.ads: Likewise.
- * libgnat/s-widenu.adb: Likewise.
- * libgnat/s-widenu.ads: Likewise.
- * libgnat/s-widlli.adb: Likewise.
- * libgnat/s-widlli.ads: Likewise.
- * libgnat/s-widllu.adb: Likewise.
- * libgnat/s-widllu.ads: Likewise.
- * libgnat/s-widwch.adb: Likewise.
- * libgnat/s-widwch.ads: Likewise.
- * libgnat/s-win32.ads: Likewise.
- * libgnat/s-winext.ads: Likewise.
- * libgnat/s-wwdcha.adb: Likewise.
- * libgnat/s-wwdcha.ads: Likewise.
- * libgnat/s-wwdenu.adb: Likewise.
- * libgnat/s-wwdenu.ads: Likewise.
- * libgnat/s-wwdwch.adb: Likewise.
- * libgnat/s-wwdwch.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.
- * libgnat/system.ads: Likewise.
- * link.c: Likewise.
- * live.adb: Likewise.
- * live.ads: Likewise.
- * locales.c: Likewise.
- * make.adb: Likewise.
- * make.ads: Likewise.
- * make_util.adb: Likewise.
- * make_util.ads: Likewise.
- * makeusg.adb: Likewise.
- * makeusg.ads: Likewise.
- * mdll-fil.adb: Likewise.
- * mdll-fil.ads: Likewise.
- * mdll-utl.adb: Likewise.
- * mdll-utl.ads: Likewise.
- * mdll.adb: Likewise.
- * mdll.ads: Likewise.
- * mingw32.h: Likewise.
- * mkdir.c: Likewise.
- * namet-sp.adb: Likewise.
- * namet-sp.ads: Likewise.
- * namet.adb: Likewise.
- * namet.ads: Likewise.
- * namet.h: Likewise.
- * nlists.adb: Likewise.
- * nlists.ads: Likewise.
- * nlists.h: Likewise.
- * opt.adb: Likewise.
- * opt.ads: Likewise.
- * osint-b.adb: Likewise.
- * osint-b.ads: Likewise.
- * osint-c.adb: Likewise.
- * osint-c.ads: Likewise.
- * osint-l.adb: Likewise.
- * osint-l.ads: Likewise.
- * osint-m.adb: Likewise.
- * osint-m.ads: Likewise.
- * osint.adb: Likewise.
- * osint.ads: Likewise.
- * output.adb: Likewise.
- * output.ads: Likewise.
- * par-ch10.adb: Likewise.
- * par-ch11.adb: Likewise.
- * par-ch12.adb: Likewise.
- * par-ch13.adb: Likewise.
- * par-ch2.adb: Likewise.
- * par-ch3.adb: Likewise.
- * par-ch4.adb: Likewise.
- * par-ch5.adb: Likewise.
- * par-ch6.adb: Likewise.
- * par-ch7.adb: Likewise.
- * par-ch8.adb: Likewise.
- * par-ch9.adb: Likewise.
- * par-endh.adb: Likewise.
- * par-labl.adb: Likewise.
- * par-load.adb: Likewise.
- * par-prag.adb: Likewise.
- * par-sync.adb: Likewise.
- * par-tchk.adb: Likewise.
- * par-util.adb: Likewise.
- * par.adb: Likewise.
- * par.ads: Likewise.
- * par_sco.adb: Likewise.
- * par_sco.ads: Likewise.
- * pprint.adb: Likewise.
- * pprint.ads: Likewise.
- * prep.adb: Likewise.
- * prep.ads: Likewise.
- * prepcomp.adb: Likewise.
- * prepcomp.ads: Likewise.
- * put_scos.adb: Likewise.
- * put_scos.ads: Likewise.
- * raise-gcc.c: Likewise.
- * raise.c: Likewise.
- * raise.h: Likewise.
- * repinfo-input.adb: Likewise.
- * repinfo-input.ads: Likewise.
- * repinfo.adb: Likewise.
- * repinfo.ads: Likewise.
- * repinfo.h: Likewise.
- * restrict.adb: Likewise.
- * restrict.ads: Likewise.
- * rident.ads: Likewise.
- * rtfinal.c: Likewise.
- * rtinit.c: Likewise.
- * rtsfind.adb: Likewise.
- * rtsfind.ads: Likewise.
- * runtime.h: Likewise.
- * s-oscons-tmplt.c: Likewise.
- * sa_messages.adb: Likewise.
- * sa_messages.ads: Likewise.
- * scans.adb: Likewise.
- * scans.ads: Likewise.
- * scil_ll.adb: Likewise.
- * scil_ll.ads: Likewise.
- * scn.adb: Likewise.
- * scn.ads: Likewise.
- * scng.adb: Likewise.
- * scng.ads: Likewise.
- * scos.adb: Likewise.
- * scos.ads: Likewise.
- * scos.h: Likewise.
- * sdefault.ads: Likewise.
- * seh_init.c: Likewise.
- * sem.adb: Likewise.
- * sem.ads: Likewise.
- * sem_aggr.adb: Likewise.
- * sem_aggr.ads: Likewise.
- * sem_attr.adb: Likewise.
- * sem_attr.ads: Likewise.
- * sem_aux.adb: Likewise.
- * sem_aux.ads: Likewise.
- * sem_case.adb: Likewise.
- * sem_case.ads: Likewise.
- * sem_cat.adb: Likewise.
- * sem_cat.ads: Likewise.
- * sem_ch10.adb: Likewise.
- * sem_ch10.ads: Likewise.
- * sem_ch11.adb: Likewise.
- * sem_ch11.ads: Likewise.
- * sem_ch12.adb: Likewise.
- * sem_ch12.ads: Likewise.
- * sem_ch13.adb: Likewise.
- * sem_ch13.ads: Likewise.
- * sem_ch2.adb: Likewise.
- * sem_ch2.ads: Likewise.
- * sem_ch3.adb: Likewise.
- * sem_ch3.ads: Likewise.
- * sem_ch4.adb: Likewise.
- * sem_ch4.ads: Likewise.
- * sem_ch5.adb: Likewise.
- * sem_ch5.ads: Likewise.
- * sem_ch6.adb: Likewise.
- * sem_ch6.ads: Likewise.
- * sem_ch7.adb: Likewise.
- * sem_ch7.ads: Likewise.
- * sem_ch8.adb: Likewise.
- * sem_ch8.ads: Likewise.
- * sem_ch9.adb: Likewise.
- * sem_ch9.ads: Likewise.
- * sem_dim.adb: Likewise.
- * sem_dim.ads: Likewise.
- * sem_disp.adb: Likewise.
- * sem_disp.ads: Likewise.
- * sem_dist.adb: Likewise.
- * sem_dist.ads: Likewise.
- * sem_elab.adb: Likewise.
- * sem_elab.ads: Likewise.
- * sem_elim.adb: Likewise.
- * sem_elim.ads: Likewise.
- * sem_eval.adb: Likewise.
- * sem_eval.ads: Likewise.
- * sem_intr.adb: Likewise.
- * sem_intr.ads: Likewise.
- * sem_mech.adb: Likewise.
- * sem_mech.ads: Likewise.
- * sem_prag.adb: Likewise.
- * sem_prag.ads: Likewise.
- * sem_res.adb: Likewise.
- * sem_res.ads: Likewise.
- * sem_scil.adb: Likewise.
- * sem_scil.ads: Likewise.
- * sem_smem.adb: Likewise.
- * sem_smem.ads: Likewise.
- * sem_type.adb: Likewise.
- * sem_type.ads: Likewise.
- * sem_util.adb: Likewise.
- * sem_util.ads: Likewise.
- * sem_warn.adb: Likewise.
- * sem_warn.ads: Likewise.
- * set_targ.adb: Likewise.
- * set_targ.ads: Likewise.
- * sfn_scan.adb: Likewise.
- * sfn_scan.ads: Likewise.
- * sigtramp-armdroid.c: Likewise.
- * sigtramp-ios.c: Likewise.
- * sigtramp-qnx.c: Likewise.
- * sigtramp-vxworks.c: Likewise.
- * sigtramp.h: Likewise.
- * sinfo-cn.adb: Likewise.
- * sinfo-cn.ads: Likewise.
- * sinfo.adb: Likewise.
- * sinfo.ads: Likewise.
- * sinput-c.adb: Likewise.
- * sinput-c.ads: Likewise.
- * sinput-d.adb: Likewise.
- * sinput-d.ads: Likewise.
- * sinput-l.adb: Likewise.
- * sinput-l.ads: Likewise.
- * sinput.adb: Likewise.
- * sinput.ads: Likewise.
- * socket.c: Likewise.
- * spark_xrefs.adb: Likewise.
- * spark_xrefs.ads: Likewise.
- * sprint.adb: Likewise.
- * sprint.ads: Likewise.
- * stand.adb: Likewise.
- * stand.ads: Likewise.
- * stringt.adb: Likewise.
- * stringt.ads: Likewise.
- * stringt.h: Likewise.
- * style.adb: Likewise.
- * style.ads: Likewise.
- * styleg.adb: Likewise.
- * styleg.ads: Likewise.
- * stylesw.adb: Likewise.
- * stylesw.ads: Likewise.
- * switch-b.adb: Likewise.
- * switch-b.ads: Likewise.
- * switch-c.adb: Likewise.
- * switch-c.ads: Likewise.
- * switch-m.adb: Likewise.
- * switch-m.ads: Likewise.
- * switch.adb: Likewise.
- * switch.ads: Likewise.
- * symbols.adb: Likewise.
- * symbols.ads: Likewise.
- * sysdep.c: Likewise.
- * table.adb: Likewise.
- * table.ads: Likewise.
- * targext.c: Likewise.
- * targparm.adb: Likewise.
- * targparm.ads: Likewise.
- * tbuild.adb: Likewise.
- * tbuild.ads: Likewise.
- * tempdir.adb: Likewise.
- * tempdir.ads: Likewise.
- * terminals.c: Likewise.
- * tracebak.c: Likewise.
- * tree_gen.adb: Likewise.
- * tree_gen.ads: Likewise.
- * tree_in.adb: Likewise.
- * tree_in.ads: Likewise.
- * tree_io.adb: Likewise.
- * tree_io.ads: Likewise.
- * treepr.adb: Likewise.
- * treepr.ads: Likewise.
- * ttypes.ads: Likewise.
- * types.adb: Likewise.
- * types.ads: Likewise.
- * types.h: Likewise.
- * uintp.adb: Likewise.
- * uintp.ads: Likewise.
- * uintp.h: Likewise.
- * uname.adb: Likewise.
- * uname.ads: Likewise.
- * urealp.adb: Likewise.
- * urealp.ads: Likewise.
- * urealp.h: Likewise.
- * usage.adb: Likewise.
- * usage.ads: Likewise.
- * validsw.adb: Likewise.
- * validsw.ads: Likewise.
- * warnsw.adb: Likewise.
- * warnsw.ads: Likewise.
- * widechar.adb: Likewise.
- * widechar.ads: Likewise.
- * xeinfo.adb: Likewise.
- * xnmake.adb: Likewise.
- * xoscons.adb: Likewise.
- * xr_tabls.adb: Likewise.
- * xr_tabls.ads: Likewise.
- * xref_lib.adb: Likewise.
- * xref_lib.ads: Likewise.
- * xsinfo.adb: Likewise.
- * xsnamest.adb: Likewise.
- * xtreeprs.adb: Likewise.
- * xutil.adb: Likewise.
- * xutil.ads: Likewise.
-
-2020-06-02 Javier Miranda <miranda@adacore.com>
-
- * sem_ch3.adb (Analyze_Object_Declaration): Set attribute
- Expansion_Delayed on aggregates that initialize an object that
- has aspect alignment or address clause. Done to allow ther
- initialization by means of multiple assignments.
- * exp_ch3.adb (Expand_N_Object_Declaration): Resolve delayed
- aggregates. This patch complements the patch applied to
- sem_ch3.adb
-
-2020-06-02 Javier Miranda <miranda@adacore.com>
-
- * sem_util.adb (Ensure_Minimum_Decoration): New subprogram that
- ensures the minimum decoration required by
- Requires_Transient_Scope() to provide its functionality when the
- entity is not frozen.
-
-2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_ch4.adb (Expand_N_Op_Divide): Remove code dealing with
- the Treat_Fixed_As_Integer flag.
- (Expand_N_Op_Multiply): Likewise.
- * exp_fixd.adb (Build_Divide): Do the division in an integer
- type long enough to hold both operands and convert the result
- to the type of the LHS. Do not set Treat_Fixed_As_Integer.
- (Build_Multiply): Do not set Treat_Fixed_As_Integer.
- (Build_Rem): Likewise.
- * sem_ch4.adb (Analyze_Arithmetic_Op): Remove code dealing with
- the Treat_Fixed_As_Integer flag.
- (Check_Arithmetic_Pair): Likewise.
- * sinfo.ads (Treat_Fixed_As_Integer): Delete.
- (N_Has_Treat_Fixed_As_Integer): Likewise.
- (Set_Treat_Fixed_As_Integer): Likewise.
- * sinfo.adb (Treat_Fixed_As_Integer): Likewise.
- (Set_Treat_Fixed_As_Integer): Likewise.
- * sprint.ads (Syntax Extensions): Remove '#' special character.
- * sprint.adb (Process_TFAI_RR_Flags): Delete.
- (Sprint_Node_Actual) <N_Op_Divide>: Print '@' manually.
- <N_Op_Multiply>: Likewise.
- <N_Op_Mod>: Do not print '#'.
- <N_Op_Rem>: Likewise.
-
-2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_aggr.adb (Others_Check): In the positional case, use the
- general expression for the comparison only when needed.
- * exp_attr.adb (Expand_Fpt_Attribute;): Use a simple conversion
- to the target type instead of an unchecked conversion to the
- base type to do the range check, as in the other cases.
- (Expand_N_Attribute_Reference) <Attribute_Storage_Size>: Do the
- Max operation in the type of the storage size variable, and use
- Convert_To as in the other cases.
- * tbuild.adb (Convert_To): Do not get rid of an intermediate
- conversion to Universal_Integer here...
- * sem_res.adb (Simplify_Type_Conversion): ...but here instead.
-
-2020-06-02 Bob Duff <duff@adacore.com>
-
- * doc/gnat_ugn/gnat_utility_programs.rst: Update documentation
- for --RM-style-spacing.
-
-2020-06-02 Bob Duff <duff@adacore.com>
-
- * doc/gnat_ugn/gnat_utility_programs.rst: Add documentation for
- --[no-]compact switch.
-
-2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_aggr.adb (Build_Array_Aggr_Code): Set the type of the PAT
- on the zero used to clear the array.
- * exp_attr.adb (Expand_N_Attribute_Reference)
- <Attribute_Alignment>: In the CW case, directly convert from the
- alignment's type to the target type if the parent is an
- unchecked conversion.
- * sem_res.adb (Set_String_Literal_Subtype): In the dynamic case,
- use the general expression for the upper bound only when needed.
- Set the base type of the index as the type of the low bound.
- (Simplify_Type_Conversion): Do an intermediate conversion to the
- root type of the target type if the operand is an integer
- literal.
- * tbuild.adb (Convert_To): Get rid of an intermediate conversion
- to Universal_Integer if the inner expression has integer tyoe.
- * libgnat/a-sequio.adb (Byte_Swap): Make use of an equivalent
- static expression in the case statement.
-
-2020-06-02 Thomas Quinot <quinot@adacore.com>
-
- * par_sco.adb (Traverse_Degenerate_Subprogram): Set statement
- code to 'X'.
- * scos.ads: Update comment documenting SCO data.
-
-2020-06-02 Gary Dismukes <dismukes@adacore.com>
-
- * exp_unst.adb (Register_Subprogram): Test for Address_Taken (in
- addition to the existing test for In_Synchonized_Unit) when
- deciding whether to reset the Reachable flag on all subprograms
- enclosing the subprogram being registered.
-
-2020-06-02 Justin Squirek <squirek@adacore.com>
-
- * sem_ch6.adb (Check_Return_Obj_Accessibility): Avoid use of
- parent node pointers so we are not relying on expansion done in
- GNATprove mode.
-
-2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_attr.adb (Expand_N_Attribute_Reference)
- <Attribute_Alignment>: Adjust comment and compare against proper
- type.
-
-2020-06-02 Gary Dismukes <dismukes@adacore.com>
-
- * exp_unst.adb (Visit_Node): When visiting array attribute
- nodes, apply Get_Referenced_Object to the attribute prefix, to
- handle prefixes denoting renamed objects by picking up the Etype
- of the renamed object rather than the possibly unconstrained
- nominal subtype of the renaming declaration's Entity.
- * sem_util.ads (Get_Referenced_Object): Update comment to
- clearly indicate that any kind of node can be passed to this
- function.
- * sem_util.adb (Get_Referenced_Object): Add test of Is_Object to
- the condition, to allow for passing names that denote types and
- subtypes.
-
-2020-06-02 Bob Duff <duff@adacore.com>
-
- * snames.ads-tmpl: Add comments explaining that enumeration
- types have to be kept in synch with subtypes of Name_Id.
-
-2020-06-02 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_util.adb (Check_No_Hidden_State): Remove dead code.
-
-2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_pakd.adb (Expand_Packed_Bit_Reference): Change type of
- reference from Universal_Integer to Standard_Natural.
-
-2020-06-02 Piotr Trojanek <trojanek@adacore.com>
-
- * sem_prag.adb (Collect_States_And_Objects): Call itself on
- declaration of nested packages; append abstract states
- one-by-one, so that in recursive call we do not overwrite the
- ones that have been already collected.
-
-2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * exp_atag.ads (Build_Inherit_Predefined_Prims): Change type
- of Num_Predef_Prim parameter from Int to Nat.
- * exp_atag.adb (Build_Range): New procedure.
- (Build_Val): Likewise.
- (Build_CW_Membership): Call Build_Val.
- (Build_Get_Predefined_Prim_Op_Address): Likewise.
- (Build_Inherit_CPP_Prims): Likewise.
- (Build_Get_Prim_Op_Address): Likewise.
- (Build_Set_Predefined_Prim_Op_Address): Likewise.
- (Build_Inherit_Prims): Call Build_Range.
- (Build_Inherit_Predefined_Prims): Likewise. Change type of
- Num_Predef_Prim parameter from Int to Nat.
-
-2020-06-02 Gary Dismukes <dismukes@adacore.com>
-
- * sem_ch3.adb: Two typo fixes.
-
-2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch3.adb (Replace_Discriminants): Preserve the Etype of the
- Name of N_Variant_Part nodes when rewriting it.
-
-2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch3.adb (Signed_Integer_Type_Declaration): Change the type
- of the bounds from Universal_Integer to Implicit_Base.
-
-2020-06-02 Arnaud Charlet <charlet@adacore.com>
-
- * bcheck.adb, binde.adb, bindo-diagnostics.adb, checks.adb,
- exp_aggr.adb, exp_ch3.adb, exp_ch4.adb, exp_ch7.adb,
- exp_ch9.adb, gnatname.adb, sem_case.adb, sem_ch13.adb,
- sem_ch5.adb, sem_prag.adb, sem_util.adb, uintp.adb, urealp.adb,
- xoscons.adb, xr_tabls.adb, xref_lib.adb: Initialize objects more
- explicitly and add corresponding assertions. Remove dead code.
- Also add a few Annotate pragmas to help static analysis.
- * libgnat/a-caldel.adb, libgnat/a-calend.adb,
- libgnat/a-ngcoty.adb, libgnat/a-ngelfu.adb,
- libgnat/a-ngrear.adb, libgnat/a-strfix.adb,
- libgnat/g-calend.adb, libgnat/g-catiio.adb,
- libgnat/g-comlin.adb, libgnat/g-debpoo.adb,
- libgnat/g-dirope.adb, libgnat/g-hesorg.adb,
- libgnat/g-pehage.adb, libgnat/g-socket.adb, libgnat/i-cobol.adb,
- libgnat/s-dwalin.adb, libgnat/s-dwalin.ads,
- libgnat/s-fatgen.adb, libgnat/s-gearop.adb,
- libgnat/s-genbig.adb, libgnat/s-imgrea.adb,
- libgnat/s-os_lib.adb, libgnat/s-rannum.adb,
- libgnat/s-regpat.adb, libgnat/s-trasym__dwarf.adb,
- libgnat/s-valrea.adb: Ditto.
-
-2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_ch3.adb (Replace_Components): Rename into...
- (Replace_Discriminants): ...this. Replace girder discriminants
- with non-girder ones. Do not replace components.
- * sem_ch13.adb (Check_Record_Representation_Clause): Deal with
- non-girder discriminants correctly.
-
-2020-06-02 Piotr Trojanek <trojanek@adacore.com>
-
- * lib-xref-spark_specific.adb (Create_Heap): use a new variant
- of Name_Enter to directly converts String to Make_Id.
-
-2020-06-02 Gary Dismukes <dismukes@adacore.com>
-
- * exp_attr.adb, par-ch4.adb, par-util.adb, scans.ads, scng.adb,
- sem_attr.adb, sem_ch4.adb, sinfo.ads: Typo corrections and minor
- reformatting.
-
-2020-06-02 Arnaud Charlet <charlet@adacore.com>
-
- * snames.ads-tmpl (Name_Img, Attribute_Img): Make it an
- attribute returning renamable functions.
-
-2020-06-02 Yannick Moy <moy@adacore.com>
-
- * sem_prag.adb, sem_prag.ads (Set_Overflow_Mode): New procedure
- to set overflow mode.
-
-2020-06-02 Piotr Trojanek <trojanek@adacore.com>
-
- * contracts.adb, einfo.adb, exp_ch9.adb, sem_ch12.adb,
- sem_ch4.adb, sem_ch7.adb, sem_ch8.adb, sem_elab.adb,
- sem_type.adb, sem_util.adb: Reuse Is_Package_Or_Generic_Package
- where possible (similarly, reuse Is_Concurrent_Type if it was
- possible in the same expressions).
-
-2020-05-30 Arnaud Charlet <charlet@adacore.com>
-
- * Makefile.rtl (ADA_INCLUDE_SRCS): Replace Makefile.adalib by
- libada.gpr and associated project files.
- (g-debpoo.o): Add missing rule to ensure subprograms are not reordered.
- (setup-rts): Add generation of libgnat/libgnarl.lst.
- (LIBGNAT_SRCS): Remove thread.c which is part of libgnarl.
- * tracebak.c, tb-gcc.c: Merged the two files to simplify dependencies.
- * libgnarl/libgnarl.gpr, libgnat/libada.gpr,
- libgnat/libgnat.gpr, libgnat/libgnat_common.gpr: New files.
- * doc/gnat_ugn/the_gnat_compilation_model.rst: Makefile.adalib
- replaced by libada.gpr.
- * libgnat/system-mingw.ads: Remove obsolete comment.
- * gcc-interface/Makefile.in: Remove dependency on tb-gcc.c.
-
-2020-05-27 Martin Liska <mliska@suse.cz>
-
- * gnatvsn.ads: Bump Library_Version to 11.
-
-2020-05-26 Eric Botcazou <ebotcazou@adacore.com>
-
- PR ada/95333
- * gcc-interface/decl.c (gnat_to_gnu_param): Never make a variant of
- the type.
-
-2020-05-26 Alexandre Oliva <oliva@adacore.com>
-
- * gcc-interface/lang-specs.h (ADA_DUMPS_OPTIONS): Define in
- terms of DUMPS_OPTIONS. Replace occurrences of %{d*} %:dumps
- with it.
-
-2020-05-26 Alexandre Oliva <oliva@adacore.com>
-
- * gcc-interface/lang-specs.h: Drop auxbase and auxbase-strip.
- Use %:dumps instead of -dumpbase. Add %w for implicit .s
- primary output.
- * switch.adb (Is_Internal_GCC_Switch): Recognize dumpdir and
- dumpbase-ext. Drop auxbase and auxbase-strip.
-
-2020-05-25 Yannick Moy <moy@adacore.com>
-
- * sem_util.adb (Check_No_Hidden_State): Stop propagation at
- first block/task/entry.
-
-2020-05-25 Yannick Moy <moy@adacore.com>
-
- * doc/gnat_rm/implementation_defined_pragmas.rst: Document
- changes to pragmas Compile_Time_Error/Compile_Time_Warning.
- * gnat_rm.texi: Regenerate.
- * libgnat/g-bytswa.adb: Change uses of Compile_Time_Error to
- Compile_Time_Warning, as the actual expression may not always be
- known statically.
- * sem_prag.adb (Analyze_Pragma): Handle differently pragma
- Compile_Time_Error in both compilation and in GNATprove mode.
- (Validate_Compile_Time_Warning_Or_Error): Issue an error or
- warning when the expression is not known at compile time.
- * usage.adb: Add missing documentation for warning switches _c
- and _r.
- * warnsw.ads: Update comment.
-
-2020-05-25 Justin Squirek <squirek@adacore.com>
-
- * sem_ch6.adb (Check_Return_Obj_Accessibility): Use original
- node to avoid looking at expansion done in GNATprove mode.
-
-2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity): Add new local variable
- and use it throughout the function.
- <E_Variable>: Rename local variable and adjust accordingly. In the
- case of a renaming, materialize the entity if the renamed object is
- an N_Expression_With_Actions node.
- <E_Procedure>: Use Alias accessor function consistently.
-
-2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/misc.c (get_array_bit_stride): Get to the debug type,
- if any, before calling gnat_get_array_descr_info.
-
-2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Tidy up.
- (build_variant_list): Add GNAT_VARIANT_PART parameter and annotate its
- variants if it is present. Adjust the recursive call by passing the
- variant subpart of variants, if any.
- (copy_and_substitute_in_layout): Rename GNU_SUBST_LIST to SUBST_LIST
- and adjust throughout. For a type, pass the variant part in the
- call to build_variant_list.
-
-2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_component_type): Cap the alignment
- of the component type according to the component size.
-
-2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Add a
- description of the various types associated with the unconstrained
- type. Declare the fat pointer earlier. Set the current function
- as context on the template type, and the fat pointer type on the
- array type. Always mark the fat pointer type as artificial and set
- it as the context for the pointer type to the array. Also reuse
- GNU_ENTITY_NAME. Finish up the unconstrained type at the very end.
- * gcc-interface/misc.c (gnat_get_array_descr_info): Do not handle
- fat pointer types and tidy up accordingly.
- * gcc-interface/utils.c (build_unc_object_type): Do not set the
- context on the template type.
- (gnat_pushdecl): Mark the canonical fat pointer types as artificial.
-
-2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/gigi.h (operand_type): New static inline function.
- * gcc-interface/trans.c (gnat_to_gnu): Do not suppress conversion
- to the resulty type at the end for array types.
- * gcc-interface/utils2.c (build_binary_op) <MODIFY_EXPR>: Do not
- remove conversions between array types on the LHS.
-
-2020-05-12 Eric Botcazou <ebotcazou@adacore.com>
-
- * sem_aggr.ads (Is_Single_Aggregate): New function.
- * sem_aggr.adb (Is_Others_Aggregate): Use local variable.
- (Is_Single_Aggregate): New function to recognize an aggregate with
- a single association containing a single choice.
- * fe.h (Is_Others_Aggregate): Delete.
- (Is_Single_Aggregate): New declaration.
- * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Call
- Is_Single_Aggregate instead of Is_Others_Aggregate.
-
-2020-05-12 Eric Botcazou <ebotcazou@adacore.com>
-
- PR ada/95035
- * gcc-interface/utils.c (packable_type_hasher::equal): Also compare
- the scalar storage order.
- (hash_packable_type): Also hash the scalar storage order.
- (hash_pad_type): Likewise.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/*.[ch]: Update copyright year.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (Attribute_to_gnu) <Attr_Access>: Assert that
- the prefix is not a type.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Rename into...
- (TYPE_BIT_PACKED_ARRAY_TYPE_P): ...this.
- (TYPE_IS_PACKED_ARRAY_TYPE_P): Rename into...
- (BIT_PACKED_ARRAY_TYPE_P): ...this.
- (TYPE_IMPL_PACKED_ARRAY_P): Adjust to above renaming.
- * gcc-interface/gigi.h (maybe_pad_type): Remove IS_USER_TYPE parameter.
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Adjust call
- to maybe_pad_type.
- <E_Ordinary_Fixed_Point_Type>: Remove const qualifiers for tree.
- <E_Signed_Integer_Subtype>: Remove redundant test and redundant call
- to associate_original_type_to_packed_array. Turn test into assertion.
- Call associate_original_type_to_packed_array and modify gnu_entity_name
- accordingly. Explicitly set the parallel type for GNAT encodings.
- Call create_type_decl in the misaligned case before maybe_pad_type.
- <E_Array_Type>: Do not use the name of the implementation type for a
- packed array when not using GNAT encodings.
- <E_Array_Subtype>: Move around setting flags. Use the result of the
- call to associate_original_type_to_packed_array for gnu_entity_name.
- <E_Record_Subtype>: Create XVS type and XVZ variable only if debug
- info is requested for the type.
- Call create_type_decl if a padded type was created for a type entity.
- (gnat_to_gnu_component_type): Use local variable and adjust calls to
- maybe_pad_type.
- (gnat_to_gnu_subprog_type): Adjust call to maybe_pad_type.
- (gnat_to_gnu_field): Likewise.
- (validate_size): Adjust to renaming of macro.
- (set_rm_size): Likewise.
- (associate_original_type_to_packed_array): Adjust return type and
- return the name of the original type if GNAT encodings are not used.
- * gcc-interface/misc.c (gnat_get_debug_typ): Remove obsolete stuff.
- (gnat_get_fixed_point_type_info): Remove const qualifiers for tree.
- (gnat_get_array_descr_info): Likewise and set variables lazily.
- Remove call to maybe_debug_type. Simplify a few computations.
- (enumerate_modes): Remove const qualifier for tree.
- * gcc-interface/utils.c (make_type_from_size): Adjust to renaming.
- (maybe_pad_type): Remove IS_USER_TYPE parameter and adjust. Remove
- specific code for implementation types for packed arrays.
- (compute_deferred_decl_context): Remove const qualifier for tree.
- (convert): Adjust call to maybe_pad_type.
- (unchecked_convert): Likewise.
- * gcc-interface/utils2.c (is_simple_additive_expressio): Likewise.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Use
- build_nonshared_array_type to build the common type and declare it.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/misc.c (gnat_init_gcc_eh): Do not override the user
- for -fnon-call-exceptions in default mode.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (lvalue_required_p) <N_Selected_Component>:
- Merge with N_Slice.
- <N_Allocator>: Move to...
- (lvalue_for_aggregate_p): ...here. New function.
- (Identifier_to_gnu): For an identifier with aggregate type, also
- call lvalue_for_aggregate_p if lvalue_required_p returned false
- before substituting the identifier with the constant.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (gnat_to_gnu): Do not wrap boolean values if
- they appear in any kind of attribute references.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Deal
- with qualified "others" aggregates in the memset case.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_param): Also back-annotate the
- mechanism in the case of an Out parameter only passed by copy-out.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/gigi.h (change_qualified_type): Move around.
- (maybe_vector_array): Likewise.
- (maybe_padded_object): New static line function.
- * gcc-interface/trans.c (Attribute_to_gnu) <Attr_Component_Size>:
- Remove useless code.
- <Attr_Null_Parameter>: Remove obsolete code.
- (Call_to_gn): Likewise. Use maybe_padded_object to remove padding.
- (gnat_to_gnu): Likewise.
- <N_String_Literal>: Do not add a useless null character at the end.
- <N_Indexed_Component>: Likewise and remove obsolete code.
- (add_decl_expr): Likewise.
- (maybe_implicit_deref): Likewise.
- * gcc-interface/utils.c (maybe_unconstrained_array): Likewise.
- * gcc-interface/utils2.c (gnat_invariant_expr): Likewise.
-
-2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/utils2.c: Include builtins.h.
- (known_alignment) <ADDR_EXPR>: Use DECL_ALIGN for DECL_P operands
- and get_object_alignment for the rest.
-
-2020-05-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Force at
- least the unit size for an aliased object of a constrained nominal
- subtype whose size is variable.
-
-2020-05-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Deal
- with artificial maximally-sized types designed by access types.
- * gcc-interface/utils.c (packable_type_hash): New structure.
- (packable_type_hasher): Likewise.
- (packable_type_hash_table): New hash table.
- (init_gnat_utils): Initialize it.
- (destroy_gnat_utils): Destroy it.
- (packable_type_hasher::equal): New method.
- (hash_packable_type): New static function.
- (canonicalize_packable_type): Likewise.
- (make_packable_type): Make sure not to use too small a type for the
- size of the new fields. Canonicalize the type if it is named.
-
-2020-05-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/trans.c (Raise_Error_to_gnu): Always compute a lower
- bound and an upper bound for use by the -gnateE switch for range and
- comparison operators.
-
-2020-05-08 Eric Botcazou <ebotcazou@adacore.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_param): Do not make a variant of
- the type in LTO mode.
-
-2020-05-04 Mikael Pettersson <mikpelinux@gmail.com>
-
- PR bootstrap/94918
- * mingw32.h: Prevent windows.h from including emmintrin.h on Cygwin64.
- * s-oscons-tmplt.c (Serial_Port_Descriptor): Use System.Win32.HANDLE
- also on Cygwin.
-
-2020-03-11 Richard Wai <richard@annexi-strayline.com>
-
- * gcc-interface/decl.c (gnat_to_gnu_entity): Also test Is_Public on
- the Alias of the entitiy, if it is present, in the main assertion.
-
-2020-02-06 Alexandre Oliva <oliva@adacore.com>
-
- * raise-gcc.c (personality_body) [__ARM_EABI_UNWINDER__]:
- Initialize barrier_cache.sp when ending phase1.
+ * gnatvsn.ads: Bump copyright year.
-2020-01-04 Eric Botcazou <ebotcazou@adacore.com>
+2021-01-01 Jakub Jelinek <jakub@redhat.com>
- * gnatvsn.ads: Bump copyright year.
+ * gnat_ugn.texi: Bump @copying's copyright year.
+ * gnat_rm.texi: Likewise.
-2020-01-01 Jakub Jelinek <jakub@redhat.com>
+2021-01-01 Jakub Jelinek <jakub@redhat.com>
- Update copyright years.
+ * ChangeLog-2020: Rotate ChangeLog. New file.
- * gnat_ugn.texi: Bump @copying's copyright year.
- * gnat_rm.texi: Likewise.
-Copyright (C) 2020 Free Software Foundation, Inc.
+Copyright (C) 2021 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
diff --git a/gcc/ada/ChangeLog-2020 b/gcc/ada/ChangeLog-2020
new file mode 100644
index 0000000..5ce188d
--- /dev/null
+++ b/gcc/ada/ChangeLog-2020
@@ -0,0 +1,13978 @@
+2020-12-17 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-tags.ads, libgnat/a-tags.adb (CW_Membership): Move
+ to spec to allow inlining.
+
+2020-12-17 Arnaud Charlet <charlet@adacore.com>
+
+ * 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 Arnaud Charlet <charlet@adacore.com>
+
+ * symbols.ads, symbols.adb: Removed no longer used.
+
+2020-12-17 Arnaud Charlet <charlet@adacore.com>
+
+ * 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 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-valrea.adb (Need_Extra): Fix comment.
+
+2020-12-17 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch5.adb (Analyze_Case_Statement): Move modification of
+ Unblocked_Exit_Count after early return statements; fix typo in
+ comment.
+
+2020-12-17 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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 Piotr Trojanek <trojanek@adacore.com>
+
+ * opt.ads (Multiple_Unit_Index): Refine type from Int to Nat.
+
+2020-12-17 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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 Bob Duff <duff@adacore.com>
+
+ * 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 Arnaud Charlet <charlet@adacore.com>
+
+ * 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 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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 Arnaud Charlet <charlet@adacore.com>
+
+ * 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 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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 Eric Botcazou <ebotcazou@adacore.com>
+
+ * 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 Erwan Le Guillou <leguillou@adacore.com>
+
+ * libgnat/system-lynxos178-ppc.ads,
+ libgnat/system-lynxos178-x86.ads: Fix small typo in comments.
+
+2020-12-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_dbug.adb (Get_Encoded_Name): Generate encodings for fixed
+ point types only if -fgnat-encodings=all is specified.
+
+2020-12-17 Justin Squirek <squirek@adacore.com>
+
+ * 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 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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 Ed Schonberg <schonberg@adacore.com>
+
+ * 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 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_util.adb (Inherit_Predicate_Flags): No-op before Ada 2012.
+
+2020-12-17 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch7.adb (Make_Final_Call, Make_Init_Call): Take protected
+ types into account.
+ * sem_util.ads: Fix typo.
+
+2020-12-17 Yannick Moy <moy@adacore.com>
+
+ * 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.
+
+2020-12-17 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_attr.adb (OK_Self_Reference): Return True if node does not
+ come from source (e.g. a rewritten aggregate).
+
+2020-12-17 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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-16 Arnaud Charlet <charlet@adacore.com>
+
+ * ali.ads, ali.adb, bindo-writers.adb, lib-writ.adb (Scope):
+ Renamed to IS_Scope.
+
+2020-12-16 Joffrey Huguet <huguet@adacore.com>
+
+ * libgnat/a-strfix.ads: Add postconditions and contract cases to
+ subprograms.
+
+2020-12-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch5.adb (Analyze_Iterator_Specification): If iterator
+ filter is present, preanalyze filter without expansion.
+ (Analyze_Loop_Parameter_Specification): When
+ loop_Parameter_Specification is rewritten as
+ Iterator_Specification, transfer Iterator_Filter if present.
+
+2020-12-16 Doug Rupp <rupp@adacore.com>
+
+ * libgnat/s-objrea.ads (Object_Arch): Add ARM enum
+ * libgnat/s-objrea.adb (Initialize): Add EM_ARM case.
+ (Read_Address): Add ARM case to 32bit read.
+ * Makefile.rtl: Add trasym units to the runtime for armhf-linux.
+
+2020-12-16 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * libgnat/g-expect.adb (Non_Blocking_Spawn): Deallocate elements
+ on Arg_List after calling Set_Up_Child_Communications.
+
+2020-12-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch3.adb (P_Modular_Type_Definition): Remove colon from
+ error message.
+ * sem_ch11.adb (Check_Duplication): Likewise.
+ * sem_ch3.adb (Derived_Type_Declaration): Likewise.
+
+2020-12-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch12.adb (P_Formal_Object_Declarations): Refine types to
+ Pos.
+
+2020-12-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * impunit.adb (Not_Impl_Defined_Unit): Fix typo in iteration
+ over Non_Imp_File_Names_12 array.
+
+2020-12-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch9.adb, sem_warn.adb: Simplify membership test.
+
+2020-12-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch6.adb, exp_util.adb, sem_ch4.adb, sem_disp.adb,
+ sem_elab.adb: Simplify membership test.
+
+2020-12-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-powtab.ads (Maxpow): Use explicit formula in comment.
+
+2020-12-16 Philippe Gil <gil@adacore.com>
+
+ * libgnarl/s-tporft.adb (Register_Foreign_Thread): Set
+ Global_Task_Lock_Nesting before using allocator.
+
+2020-12-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-valrea.adb (Maxexp32): New constant array.
+ (Maxexp64): Likewise.
+ (Maxexp80): Likewise.
+ (Integer_to_Real): New local constants Maxexp and B.
+ When the exponent is too negative, do the divison in two steps.
+
+2020-12-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst
+ (Test_Case): Change integer to float literals.
+ * gnat_rm.texi: Regenerate.
+
+2020-12-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Specifications): Add a codefix
+ for extra parentheses around aspect Annotate expression; reject
+ "(null record)" aggregate and extra parentheses around aspect
+ Test_Case expression.
+ * sem_prag.adb (Analyze_Pragma): Reject "null", "(null record)"
+ and extra parentheses around pragma Contract_Cases; likewise for
+ pragma Subprogram_Variant.
+
+2020-12-16 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * adaint.h (__gnat_in_child_after_fork): New flag to express
+ child process side after fork call.
+ * adaint.c (__gnat_portable_spawn): Set flag
+ __gnat_in_child_after_fork.
+ * expect.c (__gnat_expect_fork): Set __gnat_in_child_after_fork
+ to one on child side.
+ * libgnat/memtrack.adb
+ (In_Child_After_Fork): Flag to disable memory tracking.
+ (Allow_Trace): New routine defining if memory should be tracked.
+ (Alloc, Realloc, Free): Use Allow_Trace in "if" condition
+ instead of First_Call.
+
+2020-12-16 Yannick Moy <moy@adacore.com>
+
+ * libgnat/a-tifiio.adb: Mark body not in SPARK.
+ * libgnat/a-tifiio.ads: Mark spec in SPARK.
+ * libgnat/a-tifiio__128.adb: Mark body not in SPARK.
+
+2020-12-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-valuer.adb (Scan_Decimal_Digits): Tweak overflow test.
+ (Scan_Integral_Digits): Likewise.
+
+2020-12-16 Pascal Obry <obry@adacore.com>
+
+ * s-oscons-tmplt.c: Add some OS constants.
+
+2020-12-15 Pascal Obry <obry@adacore.com>
+
+ * libgnat/g-sercom__linux.adb (Set): Use cfsetospeed and
+ cfsetispeed to set the baud rate. Clear non-blocking serial port
+ status when blocking is requested.
+
+2020-12-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-valrea.adb (Integer_to_Real): Always use Extra.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch5.adb (P_Condition): Simplify condition for warning
+ about extra parens and make it easier to understand.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * errout.ads (Error_Msg_Ada_2005_Extension): New routine (spec).
+ * errout.adb (Error_Msg_Ada_2005_Extension): New routine (body).
+ * par-ch10.adb: Reuse new routine; correct casing for "LIMITED
+ WITH".
+ * par-ch11.adb: Likewise.
+ * par-ch12.adb: Likewise.
+ * par-ch3.adb: Likewise.
+ * par-ch4.adb: Likewise; replace "box" with "<>".
+ * par-ch6.adb: Likewise.
+ * par-ch9.adb: Likewise; correct casing for "THEN ABORT".
+
+2020-12-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_ugn/gnat_and_program_execution.rst: Minor fix.
+ * gnat_ugn.texi: Regenerate.
+ * libgnat/s-valuer.ads (Precision_Limit): New formal parameter.
+ * libgnat/s-valuer.adb (Precision_Limit): Remove.
+ (Scan_Decimal_Digits): Robustify overflow check.
+ (Scan_Integral_Digits): Likewise.
+ * libgnat/s-valrea.adb: Add assertion on the size of the unsigned
+ type and instantiate System.Value_R with the mantissa limit.
+ (Integer_to_Real): Add Extra parameter and take it into account.
+ (Scan_Real): Pass Extra to Integer_to_Real.
+ (Value_Real): Likewise.
+ * libgnat/s-valued.adb: Add assertion on the size of the unsigned
+ type and instantiate System.Value_R with the mantissa limit.
+ * libgnat/s-valuef.adb: Likewise.
+
+2020-12-15 Justin Squirek <squirek@adacore.com>
+
+ * contracts.adb, contracts.ads (Build_Postconditions_Procedure):
+ Add declarations for Postcond_Enabled,
+ Result_Object_For_Postcondition, and
+ Return_Success_For_Postcond, and place all postconditions within
+ an if statement to control their execution for interactions when
+ cleanup actions get generated.
+ (Get_Postcond_Enabled): Created to fetch object declared to
+ handle new expansion of postconditions.
+ (Get_Result_Object_For_Postcond): Created to fetch object
+ declared to handle new expansion of postconditions.
+ (Get_Return_Success_For_Postcond): Created to fetch object
+ declared to handle new expansion of postconditions.
+ * einfo.adb, einfo.ads: Modify flag Stores_Attribute_Old_Prefix
+ to apply to constants, variables, and types.
+ * exp_ch6.adb (Add_Return): Add assignment to
+ Return_Success_For_Postcond.
+ (Expand_Non_Function_Return): Add assignment to
+ Return_Success_For_Postcond
+ (Expand_Simple_Function_Return): Add assignment to
+ Result_Object_For_Postcond and Return_Success_For_Postcond.
+ * exp_ch7.adb (Build_Finalization_Master): Mark finalization
+ masters which finalize types created store 'Old objects as
+ storing 'Old objects.
+ (Build_Finalizer): Created to generated a unified and special
+ expansion for finalization when postconditions are present.
+ (Build_Finalizer_Helper): Renamed Build_Finalizer and added
+ parameter to facilitate the creation of separate finalization
+ routines for 'Old objects and general objects.
+ (Create_Finalizer): Add condition for the insertion of the
+ finalizer spec to avoid malformed trees.
+ (Expand_Cleanup_Actions): Move _postconditions and related
+ declarations to the new declarative section. Fix the loop to
+ properly stop at the subprogram declaration for the
+ postconditions procedure and exclude its body from being moved
+ to the new list of declarations to avoid freezing issues.
+ * exp_prag.adb (Expand_Attributes): Mark temporary created to
+ store 'Old objects as storing a 'Old attribute.
+ * sem_ch6.adb (Find_What_Applies_To): Remove strange exception
+ to postconditions when traversing the scope stack.
+ * sem_prag.adb (Find_Related_Declaration_Or_Body): Use the newly
+ created Enclosing_HSS function to find the HSS for a potentially
+ nested statement.
+ * sem_util.adb, sem_util.ads (Declare_Indirect_Temp): Mark types
+ created to store 'Old objects as storing 'Old attributes.
+ (Enclosing_HSS): Created to find the enclosing handled sequence
+ of statements for a given statement.
+ * snames.ads-tmpl: Add multiple names to aid in the expansion of
+ finalization and to control the evaluation of postconditions.
+ Including _finalization_controller, a new routine to centralize
+ finalization actions and postcondition evaluation.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch5.adb (P_Loop_Parameter_Specification): Complain about
+ missing -gnat2020 switch.
+ (P_Iterator_Specification): Likewise.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch4.adb (P_Aggregate_Or_Paren_Expr): Simplify with
+ Append_New.
+
+2020-12-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Remove s-fatsfl$(objext)
+ and add s-valflt$(objext), s-vallfl$(objext), s-valllf$(objext).
+ * exp_attr.adb (Find_Fat_Info): Merge Short_Float and Float cases.
+ * exp_imgv.adb (Expand_Value_Attribute): Replace RE_Value_Real with
+ RE_Value_Long_Long_Float for fixed-point types and use appropriate
+ base type for floating-point types.
+ * rtsfind.ads (RTU_Id): Remove System_Fat_IEEE_Long_Float,
+ System_Fat_IEEE_Short_Float and System_Val_Real, add System_Val_Flt,
+ System_Val_LFlt and System_Val_LLF.
+ (RE_Id): Remove RE_Attr_IEEE_Long, RE_Fat_IEEE_Long,
+ RE_Attr_IEEE_Short, RE_Fat_IEEE_Short, RE_Attr_Short_Float, add
+ RE_Value_Float, RE_Value_Long_Float, RE_Value_Long_Long_Float,
+ (RE_Unit_Table): Likewise.
+ * libgnat/a-ticoau.ads: Add with clause for Float_Aux and make the
+ package generic.
+ (Get): Change parameter types to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-ticoau.adb: Remove clause and renaming for Float_Aux.
+ (Get): Change parameter types to Num.
+ (Gets): Likewise.
+ (Put): Likewise.
+ (Puts): Likewise. Add conversion to Long_Long_Float.
+ * libgnat/a-ticoio.adb: Remove with clause for Ada.Text_IO, add with
+ clause for Float_Aux, add with and use clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux and
+ Complex_Aux on Float, Long_Float, and Long_Long_Float.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package.
+ (Get): Call appropriate Gets routine from auxiliary package.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-tideau.adb: Remove with and use clause for Float_Aux.
+ * libgnat/a-tifiau.adb: Likewise.
+ * libgnat/a-tifiio.adb: Add with and use clause for System.Val_LLF.
+ Instantiate Float_Aux on Long_Long_Float.
+ (Get): Adjust call to Get routine from auxiliary package.
+ (Get): Adjust call to Gets routine from auxiliary package.
+ (Put): Adjust call to Put routine from auxiliary package.
+ (Put): Adjust call to Puts routine from auxiliary package.
+ * libgnat/a-tifiio__128.adb: Likewise.
+ (Get): Likewise.
+ (Get): Likewise.
+ (Put): Likewise.
+ (Put): Likewise.
+ * libgnat/a-tiflau.ads: Make the package generic.
+ (Get): Change parameter type to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-tiflau.adb: Remove clauses for System.Val_Real.
+ (Get): Change parameter type to Num and call Scan routine.
+ (Gets): Likewise.
+ (Load_Real): Move to...
+ (Put): Change parameter type and add conversion to Long_Long_Float.
+ (Puts): Likewise.
+ * libgnat/a-tiflio.adb: Add with and use clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
+ Long_Float and Long_Long_Float.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package.
+ (Get): Call previous variant.
+ (Get): Call appropriate Gets routine from auxiliary package.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call previous variant.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-tigeau.ads (Load_Real): New procedure.
+ * libgnat/a-tigeau.adb (Load_Real): ...here.
+ * libgnat/a-wtcoau.ads: Add with clause for Float_Aux and make the
+ package generic.
+ (Get): Change parameter types to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-wtcoau.adb: Remove clause and renaming for Float_Aux.
+ (Get): Change parameter types to Num.
+ (Gets): Likewise.
+ (Put): Likewise.
+ (Puts): Likewise. Add conversion to Long_Long_Float.
+ * libgnat/a-wtcoio.ads: Remove use clause for Complex_Types and use
+ qualified names throughout accordingly.
+ * libgnat/a-wtcoio.adb: Remove clause for Ada.Unchecked_Conversion,
+ add with clause for Float_Aux, add clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Add clause for Complex_Types.
+ Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and
+ Long_Long_Float. Remove LLF subtype and TFT instantiation.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package.
+ (Get): Call appropriate Gets routine from auxiliary package.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-wtdeau.adb: Remove with and use clause for Float_Aux.
+ * libgnat/a-wtfiau.adb: Likewise.
+ * libgnat/a-wtfiio.adb: Add with and use clause for System.Val_LLF.
+ Instantiate Float_Aux on Long_Long_Float.
+ (Get): Adjust call to Get routine from auxiliary package.
+ (Get): Adjust call to Gets routine from auxiliary package.
+ (Put): Adjust call to Put routine from auxiliary package.
+ (Put): Adjust call to Puts routine from auxiliary package.
+ * libgnat/a-wtfiio__128.adb: Likewise.
+ (Get): Likewise.
+ (Get): Likewise.
+ (Put): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtflau.ads: Make the package generic.
+ (Get): Change parameter type to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-wtflau.adb: Remove clauses for System.Val_Real.
+ (Get): Change parameter type to Num and call Scan routine. Set
+ Ptr parameter lazily.
+ (Gets): Likewise.
+ (Load_Real): Move to...
+ (Put): Change parameter type and add conversion to Long_Long_Float.
+ Bump buffer length to Max_Real_Image_Length.
+ (Puts): Likewise.
+ * libgnat/a-wtflio.adb: Add with and use clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
+ Long_Float and Long_Long_Float.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package. Add
+ pragma Unsuppress (Range_Check) and manual validity check.
+ (Get): Call appropriate Gets routine from auxiliary package. Add
+ pragma Unsuppress (Range_Check) and manual validity check.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-wtgeau.ads (Load_Real): New procedure.
+ * libgnat/a-wtgeau.adb (Load_Real): ...here.
+ * libgnat/a-ztcoau.ads: Add with clause for Float_Aux and make the
+ package generic.
+ (Get): Change parameter types to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-ztcoau.adb: Remove clause and renaming for Float_Aux.
+ (Get): Change parameter types to Num.
+ (Gets): Likewise.
+ (Put): Likewise.
+ (Puts): Likewise. Add conversion to Long_Long_Float.
+ * libgnat/a-ztcoio.ads: Remove use clause for Complex_Types and use
+ qualified names throughout accordingly.
+ * libgnat/a-ztcoio.adb: Remove clause for Ada.Unchecked_Conversion,
+ add with clause for Float_Aux, add clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Add clause for Complex_Types.
+ Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and
+ Long_Long_Float. Remove LLF subtype and TFT instantiation.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package.
+ (Get): Call appropriate Gets routine from auxiliary package.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-ztdeau.adb: Remove with and use clause for Float_Aux.
+ * libgnat/a-ztfiau.adb: Likewise.
+ * libgnat/a-ztfiio.adb: Add with and use clause for System.Val_LLF.
+ Instantiate Float_Aux on Long_Long_Float.
+ (Get): Adjust call to Get routine from auxiliary package.
+ (Get): Adjust call to Gets routine from auxiliary package.
+ (Put): Adjust call to Put routine from auxiliary package.
+ (Put): Adjust call to Puts routine from auxiliary package.
+ * libgnat/a-ztfiio__128.adb: Likewise.
+ (Get): Likewise.
+ (Get): Likewise.
+ (Put): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztflau.ads: Make the package generic.
+ (Get): Change parameter type to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-ztflau.adb: Remove clauses for System.Val_Real.
+ (Get): Change parameter type to Num and call Scan routine. Set
+ Ptr parameter lazily.
+ (Gets): Likewise.
+ (Load_Real): Move to...
+ (Put): Change parameter type and add conversion to Long_Long_Float.
+ Bump buffer length to Max_Real_Image_Length.
+ (Puts): Likewise.
+ * libgnat/a-ztflio.adb: Add with and use clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
+ Long_Float and Long_Long_Float.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package. Add
+ pragma Unsuppress (Range_Check) and manual validity check.
+ (Get): Call appropriate Gets routine from auxiliary package. Add
+ pragma Unsuppress (Range_Check) and manual validity check.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-ztgeau.ads (Load_Real): New procedure.
+ * libgnat/a-ztgeau.adb (Load_Real): ...here.
+ * libgnat/s-fatsfl.ads: Delete.
+ * libgnat/s-valflt.ads: New package.
+ * libgnat/s-vallfl.ads: Likewise.
+ * libgnat/s-valllf.ads: Likewise.
+ * libgnat/s-valrea.ads: Make generic. Add assertions, defensive
+ code and clarify intent.
+ (Scan_Real): Change parameter type to Num.
+ (Value_Real): Likewise.
+ * libgnat/s-valrea.adb: Instantiate Value_R on Uns.
+ (Integer_to_Real): Change parameter and result to Num.
+ Call Float_Control.Reset only if the mantissa is 64 bits. Use
+ a divide to compute the final value if the scale is negative.
+ (Scan_Real): Change result to Num.
+ (Value_Real): Likewise.
+ * libgnat/s-valuer.adb: Add assertions, defensive code and
+ clarify intent.
+ (F_Limit): Delete.
+ (I_Limit): Likewise.
+ (Precision_Limit): Always use the integer limit.
+ * libgnat/s-fatgen.adb: Add pragma Annotate.
+
+2020-12-15 Yannick Moy <moy@adacore.com>
+
+ * libgnat/a-tiflio.adb: Mark body not in SPARK.
+ * libgnat/a-tiflio.ads: Mark spec in SPARK.
+
+2020-12-15 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch6.adb (Build_Procedure_Body_Form): Adjust, the
+ declaration of the procedure form is now insert before the
+ original function body rather than after.
+ (Expand_N_Subprogram_Declaration): Deal with private types whose
+ full views are arrays.
+ * exp_unst.adb (Unnest_Subprogram): Deal with private types.
+ (Needs_Fat_Pointer): Code cleanup.
+ * freeze.adb (Freeze_Subprogram): Ditto.
+ * exp_util.adb (Build_Procedure_Form): Insert the procedure form
+ decl before and not after.
+ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Build missing
+ spec when needed for Transform_Function_Array.
+ * sem_util.adb (Get_Fullest_View): Deal with null entity.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Specifications): Simplify code
+ for aspect Priority.
+ * sem_prag.adb (Analyze_Pragma): Simplify code for pragma
+ Priority.
+
+2020-12-15 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch7.adb (Reset_Scopes_To_Block_Elab_Proc): Do not crash on
+ a block with no Identifier. Code cleanups.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Reuse existing code for
+ attribute Value when analyzing attributes Wide_Value and
+ Wide_Wide_Value.
+
+2020-12-15 Pascal Obry <obry@adacore.com>
+
+ * libgnat/g-diopit.adb (Find): Fix possible infinite recursion
+ in Find iterator.
+ * libgnat/g-diopit.ads (Find): Update comments accordingly.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Callable and Terminated attributes; refactor calls to Set_Etype
+ occurring in both THEN and ELSE branches of an IF statement for
+ attribute Storage_Size.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Wide_Wide_Width, Wide_Width and Width attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Pred and Succ attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Size, Object_Size and Value_Size attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Consistently call
+ Check_Fixed_Point_Type before checking the number of attribute
+ expressions (like it is done for floating point types); reuse
+ Check_Fixed_Point_Type_0.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_disp.adb (Make_Tags): Remove call to UI_To_Int.
+ * sem_attr.adb (Check_Array_Type): Likewise; also, refine type
+ of a local variable.
+ (Analyze_Attribute): Likewise.
+ (Get_Enclosing_Object): Likewise.
+ * sem_util.adb (Get_Enum_Lit_From_Pos): Likewise.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ First_Bit/Last_Bit and Position attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Machine_Radix and Mantissa attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Machine_Overflows and Machine_Rounds attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Large, Small, Safe_Large and Safe_Small attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Epsilon, Model_Epsilon, Model_Small, Safe_First and Safe_Las
+ attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Emax, Machine_Emax, Machine_Emin, Machine_Mantissa, Model_Emin,
+ Model_Mantissa and Safe_Emax attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Denorm and Signed_Zeros attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Adjacent, Copy_Sign and Remainder attributes.
+ (Check_Floating_Point_Type_2): Fix style in comment.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Compose, Leading_Part and Scaling attributes.
+
+2020-12-14 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Resolve second parameter of
+ attribute Scaling just like it is resolved for a similar
+ attribute Compose.
+
+2020-12-14 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ First/Last, First_Bit/Last_Bit and First_Valid/Last_Valid
+ attributes.
+
+2020-12-14 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge similar code for
+ Truncation and other floating point attributes.
+
+2020-12-14 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Ceiling, Floor, Fraction, Machine, Machine_Rounding, Model,
+ Rounding and Unbiased_Rounding.
+
+2020-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/a-tifiio.adb: Adjust documentation.
+ (OK_Get_32): Compare the object size of the base type.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise.
+ * libgnat/a-tifiio__128.adb: Adjust documentation.
+ (OK_Get_32): Compare the object size of the base type.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise.
+ (OK_Get_128): Likewise.
+ (OK_Put_128): Likewise.
+ * libgnat/a-wtfiio.adb (OK_Get_32): Likewise.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise
+ * libgnat/a-wtfiio__128.adb (OK_Get_32): Likewise.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise.
+ (OK_Get_128): Likewise.
+ (OK_Put_128): Likewise.
+ * libgnat/a-ztfiio.adb (OK_Get_32): Likewise.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise
+ * libgnat/a-ztfiio__128.adb (OK_Get_32): Likewise.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise.
+ (OK_Get_128): Likewise.
+ (OK_Put_128): Likewise.
+
+2020-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/a-tifiio.adb (Get): Replace Current_Input with Current_In.
+ * libgnat/a-tifiio__128.adb: (Get): Likewise.
+ * libgnat/a-wtcoio.adb (Get): Likewise.
+ (Put): Replace Current_Output with Current_Out.
+ * libgnat/a-wtdeio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtdeio__128.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtenio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtfiio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtfiio__128.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtflio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtinio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtinio__128.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtmoio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtmoio__128.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztcoio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztdeio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztdeio__128.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztenio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztfiio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztfiio__128.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztflio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztinio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztinio__128.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztmoio.adb (Get): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztmoio__128.adb (Get): Likewise.
+ (Put): Likewise.
+
+2020-12-14 Justin Squirek <squirek@adacore.com>
+
+ * sem_util.adb, sem_util.ads (In_Generic_Formal_Package):
+ Created to identify type declarations occurring within generic
+ formal packages.
+ * sem_res.adb (Resolve_Allocator): Add condition to avoid
+ emitting an error for allocators when the type being allocated
+ is class-wide and from a generic formal package.
+
+2020-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-fatgen.adb (Tiny80): Add alignment clause.
+
+2020-12-14 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_util.adb (Process_Current_Value_Condition): Add assertion.
+ * libgnat/s-fatgen.adb (Scaling): Add annotation.
+
+2020-12-14 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_eval.adb (Fold_Shift): Compute values using the base type.
+
+2020-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-fatgen.adb: Add with clause for Interfaces and use
+ type clause for Interfaces.Unsigned_64.
+ (Small): Comment out.
+ (Tiny): Likewise.
+ (Tiny16): New integer constant.
+ (Tiny32): Likewise.
+ (Tiny64): Likewise.
+ (Tiny80): New integer array constant.
+ (Pred): Declare a local overlay for Tiny.
+ (Succ): Likewise.
+
+2020-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Fix again packed
+ array type in complex cases where array is Volatile.
+ * exp_util.adb (Remove_Side_Effects): Do not force a renaming to
+ be handled by the back-end.
+
+2020-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-fatgen.adb: Remove use clause for
+ System.Unsigned_Types.
+ (Scaling): Add renaming of System.Unsigned_Types and use type
+ clause for Long_Long_Unsigned.
+
+2020-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-fatgen.ads (Compose): Add pragma Inline.
+ (Copy_Sign): Likewise.
+ (Exponent): Likewise.
+ (Fraction): Likewise.
+ * libgnat/s-fatgen.adb: Remove with clause for System, add
+ with and use clauses for System.Unsigned_Types.
+ Add pragma Warnings (Off) for non-static constants.
+ Remove precomputed tables of powers of radix and add a few
+ constants describing the floating-point format.
+ (Gradual_Scaling): Delete.
+ (Copy_Sign): Reimplement directly.
+ (Decompose): Likewise.
+ (Scaling): Likewise.
+ (Pred): Speed up.
+ (Succ): Likewise.
+ (Truncation): Tidy up.
+ (Valid): Move constants to library level.
+
+2020-12-14 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_eval.adb (CV_Cache): Remove initialization at elaboration.
+
+2020-12-14 Gary Dismukes <dismukes@adacore.com>
+
+ * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ Correct documentation of the -gnatw.K switch to say that it
+ disables rather than activates the warning.
+ * gnat_ugn.texi: Regenerate.
+
+2020-12-14 Doug Rupp <rupp@adacore.com>
+
+ * tracebak.c: Add a section for ARM Linux.
+
+2020-12-14 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * par-ch3.adb (P_Discriminant_Part_Opt): Parse aspects, update
+ documentation.
+ * par-ch6.adb (P_Return_Statement): Likewise.
+ * par-ch9.adb (P_Entry_Index_Specification): Likewise.
+
+2020-12-14 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_aggr.adb (Build_Array_Aggr_Code.Gen_Assign): Move
+ generation of the call for DIC check past the optional
+ generation of calls to controlled Initialize procedures.
+ * exp_ch3.adb
+ (Build_Array_Init_Proc.Init_One_Dimension.Possible_DIC_Call):
+ Suppress generation of a DIC call when the array component type
+ is controlled. The call will now be generated later inside the
+ array's DI (Deep_Initialize) procedure.
+ * exp_ch7.adb
+ (Make_Deep_Array_Body.Build_Initialize_Statements): Generate a
+ DIC call (when needed by the array component type) after any
+ call to the component type's controlled Initialize procedure, or
+ generate the DIC call by itself if there's no Initialize to
+ call.
+ * sem_aggr.adb (Resolve_Record_Aggregate.Add_Association):
+ Simplify condition to only test Is_Box_Init_By_Default (previous
+ condition was overkill, as well as incorrect in some cases).
+ * sem_elab.adb (Active_Scenarios.Output_Call): For
+ Default_Initial_Condition, suppress call to
+ Output_Verification_Call when the subprogram is a partial DIC
+ procedure.
+
+2020-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Round>:
+ Adjust commentary and set the Rounded_Result flag on the type
+ conversion node when the node is needed.
+ * exp_ch4.adb (Expand_N_Type_Conversion): Minor tweak.
+ (Fixup_Universal_Fixed_Operation): Look through the type conversion
+ only when it is to Universal_Real.
+ * exp_fixd.adb: Remove with and use clauses for Snames.
+ (Build_Divide): Remove redundant test.
+ (Expand_Convert_Float_To_Fixed): Use Rounded_Result flag on the
+ node to set the truncation parameter.
+
+2020-12-14 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Analyze_Refinement_Clause): Simplify recently
+ added code for preventing cascaded errors.
+
+2020-12-14 Bob Duff <duff@adacore.com>
+
+ * exp_ch6.adb (Is_Build_In_Place_Result_Type): Further narrow
+ the conditions under which we enable build-in-place for
+ controlled types.
+
+2020-12-14 Yannick Moy <moy@adacore.com>
+
+ * sem_warn.adb (Output_Non_Modified_In_Out_Warnings): Use right
+ warning control character 'k' in both comment and call to
+ Errout_Msg_N.
+
+2020-12-14 Yannick Moy <moy@adacore.com>
+
+ * sem_prag.adb (Analyze_Refined_State_In_Decl_Part): Refine the
+ error message for missing Part_Of on constituent. Avoid
+ cascading error.
+
+2020-12-14 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Analyze_Depends_In_Decl_Part): Replace early
+ returns with goto Leave.
+ (Collect_Subprogram_Inputs_Outputs): Fix style in comment.
+
+2020-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-fatgen.ads (Valid): Add again pragma Inline.
+ * libgnat/s-fatgen.adb (Valid): Improve commentary, tidy up left
+ and right, and remove superfluous trick for denormalized numbers.
+
+2020-12-14 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Find_Role): Constant object of
+ access-to-constant and access-to-subprogram types are not
+ writable.
+ (Collect_Subprogram_Inputs_Outputs): In-parameters of
+ access-to-variable type can act as outputs of the Depends
+ contracts.
+
+2020-12-14 Piotr Trojanek <trojanek@adacore.com>
+
+ * sa_messages.ads: Reference Subprogram_Variant in the comment
+ for Assertion_Check.
+ * sem_prag.adb (Analyze_Pragma): Add Subprogram_Variant as an
+ ID_ASSERTION_KIND; move Default_Initial_Condition as an
+ RM_ASSERTION_KIND.
+
+2020-12-14 Yannick Moy <moy@adacore.com>
+
+ * inline.adb (Cannot_Inline): Add No_Info parameter to disable
+ info message.
+ * inline.ads (Cannot_Inline): When No_Info is set to True, do
+ not issue info message in GNATprove mode, but still mark the
+ subprogram as not always inlined.
+ * sem_res.adb (Resolve_Call): Always call Cannot_Inline inside
+ an assertion expression.
+
+2020-12-14 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-imguti.ads (Set_Decimal_Digits): Adjust documentation.
+
+2020-12-10 Ed Schonberg <schonberg@adacore.com>
+
+ PR ada/98230
+ * exp_attr.adb (Expand_N_Attribute_Reference, case Mod): Use base
+ type of argument to obtain static bound and required size.
+
+2020-12-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/Make-lang.in: Remove ^L characters.
+ * gcc-interface/decl.c (create_concat_name): Add cast.
+
+2020-12-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (maybe_make_gnu_thunk): Return false if the
+ target is local and thunk and target do not have the same context.
+
+2020-12-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (lvalue_for_aggregate_p): Also return true
+ for return statements.
+ * gcc-interface/utils.c (gnat_write_global_declarations): Use the
+ maximum index for the dummy object to avoid a name collision.
+
+2020-12-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <Fixed_Point_Type>: Put
+ back the "else" unduly removed.
+
+2020-12-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (Call_to_gnu): Also create a temporary for
+ the return value if the LHS is a bit-field and the return type is
+ a type padding a self-referential type.
+ (gnat_to_gnu): Do not remove the padding on the result if it is too
+ small with regard to the natural padding size.
+
+2020-12-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils.c (convert) <INTEGER_TYPE>: Call fold_convert
+ in the cases where convert_to_integer is not called.
+ <BOOLEAN_TYPE>: Call fold_convert instead of convert_to_integer.
+
+2020-12-07 Matthias Klose <doko@ubuntu.com>
+
+ PR ada/97504
+ * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <mips*-*-linux*>: Use wraplf
+ version of Aux_Long_Long_Float.
+
+2020-11-30 Pierre-Marie de Rodat <derodat@adacore.com>
+
+ * libgnat/s-trasym.ads: Update the list of supported platforms.
+
+2020-11-30 Arnaud Charlet <charlet@adacore.com>
+
+ * gcc-interface/Makefile.in, gcc-interface/trans.c: Remove ^L
+ characters.
+
+2020-11-30 Arnaud Charlet <charlet@adacore.com>
+
+ * gcc-interface/Makefile.in (GNATLIBFLAGS): Enable checks by
+ default.
+ * libgnat/s-bitfie.ads: Suppress alignment checks.
+ * libgnat/s-bituti.adb: Minor reformatting.
+ * libgnat/s-secsta.adb (SS_Allocate): Support Size = 0.
+
+2020-11-30 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch3.adb (Replace_Discr_Ref): Removed, no longer needed.
+
+2020-11-30 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch5.adb (Process_Statements): Replace low-level membership
+ test with a high-level wrapper.
+
+2020-11-30 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch5.adb (Set_Assignment_Type): Combine calls to Ekind
+ using membership test.
+ (Should_Transform_BIP_Assignment): Replace assignment to a
+ "Result" variable with simple return statements; avoid repeated
+ calls to Unqual_Conv by declaring a local constant.
+
+2020-11-30 Piotr Trojanek <trojanek@adacore.com>
+
+ * lib-xref.adb (Generate_Reference): Fix reference to
+ Analyze_Assignment.
+ * sem_ch5.adb (Diagnose_Non_Variable_Lhs): Reuse existing
+ utility function.
+
+2020-11-30 Eric Botcazou <ebotcazou@adacore.com>
+
+ * contracts.adb (Check_Type_Or_Object_External_Properties): Make
+ sure to exclude all return objects from the SPARK legality rule
+ on effectively volatile variables.
+ * exp_ch6.adb (Expand_N_Extended_Return_Statement): Use the fast
+ track only when the declaration of the return object can be
+ dropped.
+
+2020-11-30 Gary Dismukes <dismukes@adacore.com>
+
+ * einfo.ads (Is_Partial_DIC_Procedure): New function.
+ (Partial_DIC_Procedure): New procedure.
+ * einfo.adb (Is_Partial_DIC_Procedure): New function to return
+ whether a subprogram is a partial Default_Initial_Condition
+ procedure by checking the name (to avoid adding a new field).
+ (DIC_Procedure): Add a test that excludes partial DIC procedures
+ from being returned.
+ (Partial_DIC_Procedure): New procedure to return the partial DIC
+ procedure of a type, if it has one (otherwise returns Empty).
+ (Set_DIC_Procedure): Remove check for duplicate DIC procedures.
+ * exp_aggr.adb (Gen_Assign): Generate a call to the type's DIC
+ procedure in the case where an array component is default
+ initialized (due to an association with a box).
+ (Build_Record_Aggr_Code): For an extension aggregate, generate a
+ call to the ancestor type's DIC procedure (if any) when the
+ ancestor part is a subtype mark. For a record component
+ association that was specified with a box (tested for by
+ checking the new flag Was_Default_Init_Box_Association),
+ generate a call to the component type's DIC procedure (if it has
+ one).
+ * exp_ch4.adb (Expand_N_Allocator): When the allocated object is
+ default initialized and the designated type has a DIC aspect,
+ generate a call to the DIC procedure.
+ * exp_util.ads (Build_DIC_Call): Change the formal Obj_Id to
+ name Obj_Name, and change its type from Entity_Id to Node_Id
+ (and update comment).
+ (Build_DIC_Procedure_Body): Add formal Partial_DIC, remove
+ formal For_Freeze, and update comment accordingly.
+ (Build_DIC_Procedure_Declaration): Add formal Partial_DIC and
+ update comment.
+ * exp_util.adb
+ (Build_DIC_Call): Revised to use its Obj_Name (formerly Obj_Id)
+ formal directly rather than calling New_Occurrence_Of on it, to
+ allow arbitrary names to be passed rather than being limited to
+ Entity_Ids.
+ (Build_DIC_Procedure_Body): Call Add_Parent_DICs to generate
+ checks for DICs associated with any parent types, implementing
+ the required "additive" semantics for DICs. When building a DIC
+ procedure body for a partial view (when Partial_DIC is True),
+ call Add_Own_DIC when the type has its own DIC. In the case of
+ "full" DIC procedures, a call is generated to any partial DIC
+ procedure of the type (unless the procedure has a null body),
+ along with checks for any DICs inherited by the full view.
+ (Build_DIC_Procedure_Declaration): Add handling for partial DIC
+ procedures. For the suffix of a regular DIC procedure's name,
+ use "DIC" (instead of "Default_Initial_Condition"), and for the
+ suffix of a partial DIC procedure's name, use "Partial_DIC".
+ (Add_DIC_Check): Add the DIC pragma to the list of seen pragmas
+ (Pragmas_Seen).
+ (Add_Inherited_Tagged_DIC): Remove the formals Par_Typ,
+ Deriv_Typ, and Obj_Id, and add formal Expr, which denotes DIC's
+ expression. Remove the call to Replace_References (which is now
+ done in Add_Inherited_DICs).
+ (Add_Inherited_DICs): New procedure to locate a DIC pragma
+ associated with a parent type, replace its references
+ appropriately (such as any current instance references), and add
+ a check for the DIC.
+ (Add_Own_DIC): Add an Obj_Id formal to allow caller to pass the
+ _init formal of the generated DIC procedure.
+ (Add_Parent_DICs): New procedure to traverse a type's parents,
+ looking for DICs associated with those and calling
+ Add_Inherited_DICs to apply the appropriate DIC checks.
+ (Is_Verifiable_DIC_Pragma): Treat pragmas that have an Empty
+ first argument the same as a pragma without any arguments
+ (returning False for that case).
+ * exp_ch3.adb (Init_One_Dimension): Generate calls to the
+ component's DIC procedure when needed.
+ (Possible_DIC_Call): New function nested in Init_One_Dimension
+ to build a call to the array component type's DIC-checking
+ function when appropriate.
+ (Build_Array_Init_Proc): The presence of a DIC on the component
+ type is an additional condition for generating an init proc for
+ an array type.
+ (Build_Init_Statements): When the record component's type has a
+ DIC, and the component declaration does not have an
+ initialization expression, generate a call to the component
+ type's DIC procedure.
+ (Expand_N_Object_Declaration): Modify the call to Build_DIC_Call
+ to pass a new occurrence of the object's defining id rather than
+ the id itself.
+ (Freeze_Type): Only build a type's DIC procedure (if it has one)
+ for types that are not interfaces.
+ * exp_spark.adb (Expand_SPARK_N_Freeze_Type): Remove From_Freeze
+ actual and add a ??? comment.
+ (Expand_SPARK_N_Object_Declaration): Modify call to
+ Build_DIC_Call to pass a new occurrence of the object id rather
+ than the object id itself.
+ * sem_aggr.adb (Resolve_Record_Aggregate): Declare local flag
+ Is_Box_Init_By_Default and set it in cases where the component
+ association has a box and the component is being initialized by
+ default (as opposed to initialized by an initialization
+ expression associated with the component's declaration).
+ (Add_Association): If the association has a box for a component
+ initialized by default, the flag
+ Was_Default_Init_Box_Association is set on the new component
+ association (for later testing during expansion).
+ (Get_Value): Reset Is_Box_Init_By_Default to False.
+ * sem_ch3.adb (Build_Assertion_Bodies_For_Type): Rearrange code
+ to build DIC procedure bodies for a (noninterface) type that
+ Has_Own_DIC (for partial type views) or Has_DIC (for full type
+ views) as appropriate.
+ * sem_ch13.adb (Analyze_Aspect_Specifications,
+ Aspect_Default_Initial_Condition): Add an extra argument to the
+ DIC pragma to denote the type associated with the pragma (for
+ use in Build_DIC_Procedure_Body).
+ * sem_prag.adb (Analyze_Pragma): Allow two arguments for pragma
+ Default_Initial_Condition. If not already present, add an extra
+ argument denoting the type that the pragma is associated with.
+ * sem_util.adb (Propagate_DIC_Attributes): Retrieve any partial
+ DIC procedure associated with the type and add it to the type's
+ list of subprograms (Subprograms_For_Type).
+ * sinfo.ads (Was_Default_Init_Box_Association): New flag on
+ N_Component_Association nodes. Add subprograms to get and set
+ flag, as well as updating the documentation.
+ * sinfo.adb (Was_Default_Init_Box_Association): New function to
+ retrieve the corresponding flag (Flag14).
+ (Set_Was_Default_Init_Box_Association): New procedure to set the
+ corresponding flag (Flag14).
+
+2020-11-30 Arnaud Charlet <charlet@adacore.com>
+
+ * par-ch6.adb (P_Formal_Part): Remove extra call to Scan.
+ * par-tchk.adb: Minor reformatting.
+
+2020-11-30 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/a-nbnbre.adb (Float_Conversions): Instantiate Conv
+ package only once in the body.
+ (Fixed_Conversions.Float_Aux): New instance.
+ (Fixed_Conversions.Conv_I): Likewise.
+ (Fixed_Conversions.Conv_U): Likewise.
+ (Fixed_Conversions.LLLI): New subtype.
+ (Fixed_Conversions.LLLU): Likewise.
+ (Fixed_Conversions.Too_Large): New constant.
+ (Fixed_Conversions.To_Big_Real): Reimplement.
+ (Fixed_Conversions.From_Big_Real): Likewise.
+
+2020-11-30 Bob Duff <duff@adacore.com>
+
+ * exp_ch3.adb (Expand_N_Object_Declaration): Avoid crash in case
+ of conditional expression.
+
+2020-11-30 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_attributes.rst (Pool_Address):
+ Fix pasto.
+ (Small_Denominator): New entry.
+ (Small_Numerator): Likewise.
+ * doc/gnat_rm/implementation_defined_characteristics.rst (3.5.9):
+ Relax conditions on 128-bit smalls and integer-only implementation.
+ * gnat_rm.texi: Regenerate.
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Fore>:
+ Relax conditions on integer implementation for ordinary fixed-point
+ types and pass a third parameter to the routine.
+ <Attribute_Small_Denominator>: Raise Program_Error.
+ <Attribute_Small_Numerator>: Likewise.
+ * exp_fixd.adb (Expand_Convert_Fixed_To_Fixed): Use a scaled divide
+ if the numerator and denominator of the small ratio are sufficiently
+ small integers.
+ (Expand_Convert_Fixed_To_Integer): Use a scaled divide if numerator
+ and denominator of the small value are sufficiently small integers.
+ (Expand_Convert_Integer_To_Fixed): Likewise.
+ * exp_imgv.adb (Expand_Image_Attribute): Relax the conditions on the
+ integer implementation for ordinary fixed-point types.
+ (Expand_Value_Attribute): Likewise.
+ * freeze.adb (Freeze_Fixed_Point_Type): Relax conditions on 128-bit
+ smalls.
+ * sem_attr.adb (Analyze_Attribute) <Attribute_Small_Denominator>:
+ Check no arguments, fixed-point and set type to Universal_Integer.
+ <Attribute_Small_Numerator>: Likewise.
+ (Eval_Attribute) <Attribute_Small_Denominator>: Fold statically.
+ <Attribute_Small_Numerator>: Likewise.
+ * snames.ads-tmpl (Name_Small_Denominator): New attribute name.
+ (Name_Small_Numerator): Likewise.
+ (Attribute_Id): Add Attribute_Small_{Denominator,Numerator}.
+ * libgnat/a-tifiio.adb (Exact): Delete.
+ (Need_64): Likewise.
+ (OK_Get_32): New boolean constant.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise.
+ (E): Adjust.
+ (Get procedures): Likewise.
+ (Put procedures): Likewise.
+ * libgnat/a-tifiio__128.adb (Exact): Delete.
+ (Need_64): Likewise.
+ (Need_128): Likewise.
+ (OK_Get_32): New boolean constant.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise.
+ (OK_Get_128): Likewise.
+ (OK_Put_128): Likewise.
+ (E): Adjust.
+ (Get procedures): Likewise.
+ (Put procedures): Likewise.
+ * libgnat/a-wtfiio.adb (Exact): Delete.
+ (Need_64): Likewise.
+ (OK_Get_32): New boolean constant.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise.
+ (E): Adjust.
+ (Get procedures): Likewise.
+ (Put procedures): Likewise.
+ * libgnat/a-wtfiio__128.adb (Exact): Delete.
+ (Need_64): Likewise.
+ (Need_128): Likewise.
+ (OK_Get_32): New boolean constant.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise.
+ (OK_Get_128): Likewise.
+ (OK_Put_128): Likewise.
+ (E): Adjust.
+ (Get procedures): Likewise.
+ (Put procedures): Likewise.
+ * libgnat/a-ztfiio.adb (Exact): Delete.
+ (Need_64): Likewise.
+ (OK_Get_32): New boolean constant.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise.
+ (E): Adjust.
+ (Get procedures): Likewise.
+ (Put procedures): Likewise.
+ * libgnat/a-ztfiio__128.adb (Exact): Delete.
+ (Need_64): Likewise.
+ (Need_128): Likewise.
+ (OK_Get_32): New boolean constant.
+ (OK_Put_32): Likewise.
+ (OK_Get_64): Likewise.
+ (OK_Put_64): Likewise.
+ (OK_Get_128): Likewise.
+ (OK_Put_128): Likewise.
+ (E): Adjust.
+ (Get procedures): Likewise.
+ (Put procedures): Likewise.
+ * libgnat/s-fore_f.ads (Fore_Fixed): Adjust signature.
+ * libgnat/s-fore_f.adb (Fore_Fixed): Reimplement.
+ * libgnat/s-fofi32.ads (Fore_Fixed32): Adjust signature.
+ * libgnat/s-fofi64.ads (Fore_Fixed64): Likewise.
+ * libgnat/s-fofi128.ads (Fore_Fixed128): Likewise.
+ * libgnat/s-imagef.ads: Adjust description.
+ * libgnat/s-imagef.adb (Maxdigs): Move around.
+ (Set_Image_Integer): Remove assertion.
+ * libgnat/s-valuef.ads: Adjust description.
+ * libgnat/s-valuef.adb (Integer_To_Fixed): Minor tweak.
+
+2020-11-30 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ Describe -gnateb switch.
+ * doc/gnat_ugn/the_gnat_compilation_model.rst: Mention -gnateb
+ switch in configuration pragma files section.
+ * gnat_ugn.texi: Regenerate.
+ * lib-writ.adb (Write_ALI): Strip directories from configuration
+ files path if needed.
+ * opt.ads: Declare Config_Files_Store_Basename option.
+ * par.adb (Par): Save configuration file checksum.
+ * switch-c.adb (Scan_Front_End_Switches): Set
+ Config_Files_Store_Basename true if -gnateb is present.
+
+2020-11-30 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_dist.adb (RCI_Cache): Initialize.
+
+2020-11-30 Arnaud Charlet <charlet@adacore.com>
+
+ * terminals.c (allocate_pty_desc): Copy one less byte since the
+ last byte will always be set to 0.
+
+2020-11-30 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_ugn/building_executable_programs_with_gnat.rst (-xdr):
+ Document that XDR is not supported for 128-bit integer types.
+ * gnat_ugn.texi: Regenerate.
+ * exp_strm.adb (Build_Elementary_Input_Call): Deal with types
+ larger than Long_Long_Integer.
+ (Build_Elementary_Write_Call): Likewise.
+ * rtsfind.ads (RE_Id): Add RE_I_LLL{I,U] and RE_W_LLL{I,U}.
+ (RE_Unit_Table): Add entries for them.
+ * libgnat/s-stratt.ads (I_LLLI): New inline function.
+ (I_LLLU): Likewise.
+ (W_LLLI): New inline procedure.
+ (W_LLLU): Likewise.
+ * libgnat/s-stratt.adb (S_LLLI): New subtype of SEA.
+ (S_LLLU): Likewise.
+ (From_LLLI): New instance of Unchecked_Conversion.
+ (From_LLLU): Likewise.
+ (To_LLLI): Likewise.
+ (To_LLLU): Likewise.
+ (I_LLLI): Implement.
+ (I_LLLU): Likewise.
+ (W_LLLI): Likewise.
+ (W_LLLU): Likewise.
+
+2020-11-30 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch5.adb (Expand_Iterator_Loop_Over_Container): Check the
+ signature of the private operation Get_Element_Access to prevent
+ accidental use of a user-defined homonym subprogram.
+
+2020-11-30 Yannick Moy <moy@adacore.com>
+
+ * spark_xrefs.ads: Add comment for Heap that it may remain
+ Empty.
+
+2020-11-30 Pascal Obry <obry@adacore.com>
+
+ * libgnat/g-sercom__linux.adb (Set): Fix control flags of the
+ serial port setting.
+
+2020-11-30 Pascal Obry <obry@adacore.com>
+
+ * libgnat/g-sercom__linux.adb: Minor style fixes.
+
+2020-11-30 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_util.adb (Get_Current_Value_Condition): Don't use current
+ value tracking in GNATprove mode.
+ * sem_res.adb (Resolve_Comparison_Op): Remove incomplete
+ special-casing for folding in GNATprove mode.
+
+2020-11-30 Bob Duff <duff@adacore.com>
+
+ * errout.adb (Error_Msg_NEL): Do not call Set_Posted if errors
+ are being ignored.
+ (Error_Msg): Change Errors_Must_Be_Ignored to use the getter.
+ * sem_ch8.adb (Find_Direct_Name): Do not skip all the error
+ checks when ignoring errors, but instead do not add an entry to
+ the Urefs table if errors are being ignored.
+ * exp_ch5.adb: Minor comment fix.
+
+2020-11-30 Yannick Moy <moy@adacore.com>
+
+ * sem_aggr.adb (Resolve_Array_Aggregate): Improve error message.
+
+2020-11-30 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-valuef.adb (Integer_To_Fixed): Do not modify numerator
+ or denominator in order to reduce the exponent.
+
+2020-11-30 Arnaud Charlet <charlet@adacore.com>
+
+ * ali-util.adb (Get_File_Checksum): Remove dead code.
+ * exp_ch4.adb (Expand_Boolean_Operator, Expand_N_Op_Not,
+ Make_Boolean_Array_Op): Take Transform_Function_Array into
+ account.
+ * exp_ch6.adb (Expand_Call_Helper): Update comment. Code
+ cleanup.
+ * exp_util.adb (Build_Procedure_Form): Use new predefined name
+ Name_UP_RESULT.
+ * snames.ads-tmpl (Name_UP_RESULT): New predefined name. Code
+ cleanup: remove unused names from the project parser, moved to
+ gprbuild sources.
+ * xsnamest.adb: Add support for uppercase names.
+
+2020-11-30 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_util.adb (Enter_Name): When an inherited operation for a
+ local derived type is hidden by an explicit declaration of a
+ non-overloadable entity in the same scope, make the inherited
+ operation non-visible to prevent its accidental use elsewhere.
+
+2020-11-29 John David Anglin <danglin@gcc.gnu.org>
+
+ PR ada/97504
+ * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <hppa*-*-hpux*>: Use wraplf
+ version of Aux_Long_Long_Float.
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-valuef.adb (Integer_To_Fixed): Take into account the
+ extra digit when scaling up the input.
+ * libgnat/s-valuer.adb (Scan_Decimal_Digits): Restrict previous
+ change to fixed-point types.
+ (Scan_Integral_Digits): Likewise.
+
+2020-11-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_res.adb (Parent_Is_Boolean): Simplify.
+ (Resolve_Op_Not): Reduce scope of a local variable.
+
+2020-11-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * cstand.adb: Simplify with Append_New_Elmt.
+ * sem_util.adb: Likewise.
+
+2020-11-27 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_eval.adb (Fold_Shift): Fix evaluation of Shift_Right on
+ negative values.
+
+2020-11-27 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch6.adb (Expand_Call): Properly split
+ Transform_Function_Array and Modify_Tree_For_C.
+
+2020-11-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_eval.ads (Compile_Time_Compare): Restore parameter Diff to
+ be of an access type.
+ * sem_eval.adb (Compile_Time_Compare): Adapt body and callers.
+ * sem_attr.adb (Eval_Attribute): Adapt callers.
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-valuer.adb (Scan_Decimal_Digits): Round Extra.
+ (Scan_Integral_Digits): Likewise.
+
+2020-11-27 Yannick Moy <moy@adacore.com>
+
+ * checks.adb (Selected_Range_Checks): Adapt the condition for
+ applying range checks so that it is not done inside generics.
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_fixd.adb (Build_Double_Divide): Only use a 128-bit
+ division if one of the operands is larger than 64 bits.
+ (Build_Double_Divide_Code): Likewise.
+ (Build_Scaled_Divide): Likewise.
+ (Build_Scaled_Divide_Code): Likewise.
+
+2020-11-27 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-os_lib.adb (To_GM_Time): Return valid and consistent
+ values for Invalid_Time.
+
+2020-11-27 Steve Baird <baird@adacore.com>
+
+ * snames.ads-tmpl: Define new Name_Stable_Properties Name_Id
+ value.
+ * aspects.ads, aspects.adb: Add new Aspect_Stable_Properties
+ enumeration literal to Aspect_Id type. Add Class_Present
+ parameter to Find_Aspect and related
+ functions (Find_Value_Of_Aspect and Has_Aspect).
+ * sem_util.adb (Has_Nontrivial_Precondition): Fix
+ previously-latent bug uncovered by adding Class_Present
+ parameter to Aspect.Find_Aspect. The code was wrong before, but
+ with the change the bug was more likely to make a user-visible
+ difference.
+ * sem_ch6.adb (Analyze_Operator_Symbol): If a string literal
+ like "abs" or "-" occurs in a Stable_Properties aspect
+ specification, then it is to be interpreted as an operator
+ symbol and not as a string literal.
+ * sem_ch13.ads: Export new Parse_Aspect_Stable_Properties
+ function, analogous to the existing Parse_Aspect_Aggregate
+ exported procedure.
+ * sem_ch13.adb: (Parse_Aspect_Stable_Properties): New function;
+ analogous to existing Parse_Aspect_Aggregate.
+ (Validate_Aspect_Stable_Properties): New procedure; analogous to
+ existing Validate_Aspect_Aggregate. Called from the same case
+ statement (casing on an Aspect_Id value) where
+ Validate_Aspect_Aggregate is called.
+ (Resolve_Aspect_Stable_Properties): New procedure; analogous to
+ existing Resolve_Aspect_Aggregate. Called from the same two case
+ statements (each casing on an Aspect_Id value) where
+ Resolve_Aspect_Aggregate is called.
+ (Analyze_Aspect_Specifications): Set Has_Delayed_Aspects and
+ Is_Delayed_Aspect attributes for Aspect_Stable_Properties aspect
+ specifications.
+ (Check_Aspect_At_End_Of_Declarations): The syntactic
+ "expression" for a Stable_Properties aspect specification is not
+ semantically an expression; it doesn't have a type. Thus, force
+ T to be empty in this case.
+ * contracts.adb (Expand_Subprogram_Contract): Add call to new
+ local procedure,
+ Expand_Subprogram_Contract.Add_Stable_Property_Contracts, which
+ generates Postcondition pragmas corresponding to stable property
+ checks.
+
+2020-11-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst:
+ (Assertion_Policy): Move "Default_Initial_Condition" from
+ ID_ASSERTION_KIND to RM_ASSERTION_KIND section.
+ * gnat_rm.texi: Regenerate.
+
+2020-11-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst
+ (Assertion_Policy): Add "Default_Initial_Condition",
+ "Initial_Condition" and "Subprogram_Variant".
+ * gnat_rm.texi: Regenerate.
+
+2020-11-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Is_Valid_Assertion_Kind): Return False on
+ "Assertion_Policy"
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * make.adb (GNAT_Flag): Change to "-gnatg".
+ (Compile): Adjust comments accordingly.
+
+2020-11-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch4.adb (Rewrite_Comparison): Add assertion to confirm
+ that evaluation folds comparisons with static operands; when
+ folding comparison with non-static operands, the resulting
+ literal is non-static.
+ * sem_eval.adb (Eval_Relational_Op): Refactor nested IF
+ statement for the special case in the THEN branch; move code for
+ the "general case" out of the ELSE branch.
+ * sem_res.adb (Resolve_Comparison_Op): Only apply a dubious
+ special-case for GNATprove in the GNATprove_Mode.
+
+2020-11-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_eval.ads (Compile_Time_Compare): Change parameter Diff
+ from access to mode out.
+ * sem_eval.adb (Compile_Time_Compare): Adapt body and callers.
+ * sem_attr.adb (Eval_Attribute): Adapt callers.
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Op_Multiply): Move down block calling
+ Narrow_Large_Operation if the type is Universal_Integer.
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/a-nbnbre.adb: Remove clauses for System.Img_Real and
+ add them for System.Unsigned_Types.
+ (Float_Conversions.To_Big_Real): Reimplement.
+ (Float_Conversions.From_Big_Real): Likewise.
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.ads (Determine_Range_To_Discrete): New procedure.
+ * checks.adb (Apply_Scalar_Range_Check): Call it to determine
+ a range for the expression when the target type is discrete.
+ And also apply the tests for discrete types to fixed-point
+ types when they are treated as integers.
+ (Apply_Type_Conversion_Checks): Apply checks to conversions
+ involving fixed-point types when they are treated as integers.
+ (Determine_Range) <N_Type_Conversion>: Factor out code into...
+ (Determine_Range_To_Discrete): ...this new procedure and add
+ support for fixed-point types when they are treated as integers.
+ * einfo.ads (Type_High_Bound): Remove obsolete sentence.
+ (Type_Low_Bound): Likewise.
+ * exp_ch4.adb (Discrete_Range_Check): Remove obsolete code.
+ (Real_Range_Check): Likewise.
+ (Expand_N_Type_Conversion): In case of a no-op conversion, clear
+ the Do_Range_Check flag on the operand before substituting it.
+ Remove calls to Real_Range_Check and Discrete_Range_Check that
+ are not guarded by the Do_Range_Check flag, and an assertion.
+ * sem_res.adb (Resolve_Type_Conversion): Always apply range
+ checks in GNATprove mode; in normal mode, use the updated type
+ of the operand in the test against Universal_Fixed. Remove
+ obsolete code setting the Do_Range_Check flag at the end.
+
+2020-11-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Analyze_Pragma): Change "Ref Manual" to RM;
+ replace uses of an unnecessary "Ok" variable with RETURN
+ statements; replace nested IF with ELSIF.
+
+2020-11-27 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnarl/s-tasren.adb (Local_Complete_Rendezvous): Always call
+ Defer_Abort.
+ * libgnat/a-except.adb: Abort does not need to be deferred.
+ * libgnarl/s-tpobop.adb (Exceptional_Complete_Entry_Body): Abort
+ never needs to be undeferred here.
+ * exp_ch11.adb (Expand_Exception_Handlers): Remove difference
+ between ZCX and SJLJ.
+ * exp_ch9.adb (Expand_N_Asynchronous_Select): Remove different
+ handling for sjlj.
+ * exp_sel.ads, exp_sel.adb (Build_Abort_Block,
+ Build_Abort_Block_Handler): Ditto.
+
+2020-11-27 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_prag.adb (Analyze_Pragma): declare new Check_No_Return
+ function and call it.
+
+2020-11-27 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch12.adb (Instantiate_Object): Consistently use
+ New_Copy_Tree instead of New_Copy.
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_fixd.adb (Build_Conversion): Adjust head comment.
+ (Build_Divide): Likewise.
+ (Build_Double_Divide): Likewise.
+ (Build_Multiply): Likewise.
+ (Build_Rem): Likewise.
+ (Build_Scaled_Divide): Likewise.
+
+2020-11-27 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-genbig.ads, libgnat/s-genbig.adb (To_Bignum): New
+ variant taking an Unsigned_128.
+ * libgnat/a-nbnbin.adb (To_Big_Integer): Add support for 128
+ bits signed and unsigned types.
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-imagef.adb (Set_Image_Fixed): Pass the full value
+ of the quotient to Set_Image_Integer during the first round and
+ adjust the handling of the minus sign.
+
+2020-11-27 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbre.adb ("=", "<"): Fix.
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-valuer.adb (Scan_Raw_Real): Move pragma Annotate around
+ and adjust its parameters.
+
+2020-11-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_fixd.adb (Build_Double_Divide): Use the RM size of types and
+ a more precise estimate for the size of the denominator.
+ (Build_Double_Divide_Code): Likewise.
+ (Build_Multiply): Use a more precise estimate for the size of the
+ result.
+ (Build_Scaled_Divide): Use the RM size of types and a more precise
+ estimate for the size of the numerator.
+ (Build_Scaled_Divide_Code): Likewise.
+
+2020-11-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * Makefile.rtl <sparc*-sun-solaris*> (THREADSLIB): Remove.
+ (MISCLIB): Remove -lposix4.
+ <*86-*-solaris2*>: Likewise.
+ * libgnarl/s-osinte__solaris.ads (System.OS_Interface): Remove
+ -lposix4 -lthread.
+
+2020-11-26 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbre.adb (To_Big_Real): Do not loose precision.
+
+2020-11-26 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch8.adb (Analyze_Object_Renaming): Check for AI12-0401.
+
+2020-11-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Likewise.
+ (GNATRTL_128BIT_OBJS): Likewise.
+ (GNATRTL_128BIT_PAIRS): Add new 128-bit variants.
+ * cstand.adb (Create_Standard): Create Standard_Integer_128.
+ * doc/gnat_rm/implementation_defined_characteristics.rst: Document
+ new limits on 64-bit platforms in entry for 3.5.9(10).
+ * gnat_rm.texi: Regenerate.
+ * exp_attr.adb: Add with and use clauses for Urealp.
+ (Expand_N_Attribute_Reference) <Attribute_Fore>: Call new routines
+ for decimal fixed-point types and common ordinary fixed-point types.
+ * exp_ch4.adb (Real_Range_Check): Extend conversion trick to all
+ ordinary fixed-point types and use Small_Integer_Type_For.
+ * exp_fixd.adb: Add with and use clauses for Ttypes.
+ (Build_Divide): Add special case for 32-bit values and deal with
+ 128-bit types.
+ (Build_Double_Divide): Deal with 128-bit types.
+ (Build_Double_Divide_Code): Likewise. Do not apply conversions
+ before calling Build_Multiply.
+ (Build_Multiply): Likewise. Add special case for 32-bit values.
+ (Build_Scaled_Divide): Deal with 128-bit types.
+ (Build_Scaled_Divide_Code): Likewise. Fix size computation. Do not
+ apply conversions before calling Build_Multiply.
+ (Do_Multiply_Fixed_Fixed): Minor tweak.
+ (Integer_Literal): Deal with 128-bit values.
+ * exp_imgv.adb (Has_Decimal_Small): Delete.
+ (Expand_Image_Attribute): Call new routines for common ordinary
+ fixed-point types.
+ (Expand_Value_Attribute): Likewise.
+ (Expand_Width_Attribute): Add new expansion for fixed-point types.
+ * freeze.adb (Freeze_Entity): Move error checks for ordinary
+ fixed-point types to...
+ (Freeze_Fixed_Point_Type): ...here. Deal with 128-bit types and
+ adjust limitations for 32-bnt and 64-bit types.
+ * rtsfind.ads (RTU_Id): Add entries for new System_Fore, System_Img,
+ and System_Val units and remove them for obsolete units.
+ (RE_Id): Add entries for Double_Divide128, Scaled_Divide128, the new
+ Fore, Image, Value routines and remove them for obsolete units.
+ (RE_Unit_Table): Likewise.
+ * sem_ch3.adb (Decimal_Fixed_Point_Type_Declaration): Deal with
+ 128-bit types.
+ * stand.ads (Standard_Entity_Type): Add Standard_Integer_128.
+ * uintp.ads (Uint_31): New deferred constant.
+ (Uint_Minus_18): Likewise.
+ (Uint_Minus_31): Likewise.
+ (Uint_Minus_76): Likewise.
+ (Uint_Minus_127): Likewise.
+ * urealp.ads (Ureal_2_31): New function.
+ (Ureal_2_63): Likewise.
+ (Ureal_2_127): Likewise.
+ (Ureal_2_M_127): Likewise.
+ (Ureal_2_10_18): Likewise.
+ (Ureal_M_2_10_18): Likewise.
+ (Ureal_9_10_36): Likewise.
+ (Ureal_M_9_10_36): Likewise.
+ (Ureal_10_76): Likewise.
+ (Ureal_M_10_76): Likewise.
+ (Ureal_10_36): Delete.
+ (Ureal_M_10_36): Likewise.
+ * urealp.adb (UR_2_10_18): New variable.
+ (UR_9_10_36): Likewise.
+ (UR_10_76): Likewise.
+ (UR_M_2_10_18): Likewise.
+ (UR_M_9_10_36): Likewise.
+ (UR_M_10_76): Likewise.
+ (UR_2_31): Likewise.
+ (UR_2_63): Likewise.
+ (UR_2_127): Likewise.
+ (UR_2_M_127): Likewise.
+ (UR_10_36): Delete.
+ (UR_M_10_36): Likewise.
+ (Initialize): Initialize them.
+ (UR_Write): Do not use awkward Ada literal style.
+ (Ureal_2_10_18): New function.
+ (Ureal_9_10_36): Likewise.
+ (Ureal_10_76): Likewise.
+ (Ureal_2_31): Likewise.
+ (Ureal_2_63): Likewise.
+ (Ureal_2_127): Likewise.
+ (Ureal_2_M_127): Likewise.
+ (Ureal_M_2_10_18): Likewise.
+ (Ureal_M_9_10_36): Likewise.
+ (Ureal_10_76): Likewise.
+ (Ureal_M_10_76): Likewise.
+ (Ureal_10_36): Delete.
+ (Ureal_M_10_36): Likewise.
+ * libgnat/a-decima__128.ads: New file.
+ * libgnat/a-tideau.ads, libgnat/a-tideau.adb: Reimplement as
+ generic unit.
+ * libgnat/a-tideio.adb: Reimplement.
+ * libgnat/a-tideio__128.adb: New file.
+ * libgnat/a-tifiau.ads, libgnat/a-tifiau.adb: New generic unit.
+ * libgnat/a-tifiio.adb: Move bulk of implementation to s-imagef
+ and reimplement.
+ * libgnat/a-tifiio__128.adb: New file.
+ * libgnat/a-tiflau.adb (Get): Minor consistency fix.
+ (Gets): Likewise.
+ * libgnat/a-wtdeau.ads, libgnat/a-wtdeau.adb: Reimplement as
+ generic unit.
+ * libgnat/a-wtdeio.adb: Reimplement.
+ * libgnat/a-wtdeio__128.adb: New file.
+ * libgnat/a-wtfiau.ads, libgnat/a-wtfiau.adb: New generic unit.
+ * libgnat/a-wtfiio.adb: Reimplement.
+ * libgnat/a-wtfiio__128.adb: New file.
+ * libgnat/a-ztdeau.ads, libgnat/a-ztdeau.adb: Reimplement as
+ generic unit.
+ * libgnat/a-ztdeio.adb: Reimplement.
+ * libgnat/a-ztdeio__128.adb: New file.
+ * libgnat/a-ztfiau.ads, libgnat/a-ztfiau.adb: New generic unit.
+ * libgnat/a-ztfiio.adb: Reimplement.
+ * libgnat/a-ztfiio__128.adb: New file.
+ * libgnat/g-rannum.adb (Random_Decimal_Fixed): Use a subtype of the
+ appropiate size for the instantiation.
+ (Random_Ordinary_Fixed): Likewise.
+ * libgnat/s-arit32.ads, libgnat/s-arit32.adb: New support unit.
+ * libgnat/s-fode128.ads: New instantiation.
+ * libgnat/s-fode32.ads: Likewise.
+ * libgnat/s-fode64.ads: Likewise.
+ * libgnat/s-fofi128.ads: Likewise.
+ * libgnat/s-fofi32.ads: Likewise.
+ * libgnat/s-fofi64.ads: Likewise.
+ * libgnat/s-fore_d.ads, libgnat/s-fore_d.adb: New generic unit.
+ * libgnat/s-fore_f.ads, libgnat/s-fore_f.adb: Likewise.
+ * libgnat/s-fore.ads, libgnat/s-fore.adb: Rename into...
+ * libgnat/s-forrea.ads, libgnat/s-forrea.adb: ...this.
+ * libgnat/s-imaged.ads, libgnat/s-imaged.adb: New generic unit.
+ * libgnat/s-imagef.ads, libgnat/s-imagef.adb: Likewise, taken
+ from a-tifiio.adb.
+ * libgnat/s-imde128.ads: New instantiation.
+ * libgnat/s-imde32.ads: Likewise.
+ * libgnat/s-imde64.ads: Likewise.
+ * libgnat/s-imfi128.ads: Likewise.
+ * libgnat/s-imfi32.ads: Likewise.
+ * libgnat/s-imfi64.ads: Likewise.
+ * libgnat/s-imgdec.ads, libgnat/s-imgdec.adb: Delete.
+ * libgnat/s-imglld.ads, libgnat/s-imglld.adb: Likewise.
+ * libgnat/s-imgrea.adb (Set_Image_Real): Replace Sign local variable
+ with Minus local variable for the sake of consistency.
+ * libgnat/s-imguti.ads, libgnat/s-imguti.adb: New support unit.
+ * libgnat/s-vade128.ads: New instantiation.
+ * libgnat/s-vade32.ads: Likewise.
+ * libgnat/s-vade64.ads: Likewise.
+ * libgnat/s-vafi128.ads: Likewise.
+ * libgnat/s-vafi32.ads: Likewise.
+ * libgnat/s-vafi64.ads: Likewise.
+ * libgnat/s-valdec.ads, libgnat/s-valdec.adb: Delete.
+ * libgnat/s-vallld.ads, libgnat/s-vallld.adb: Likewise.
+ * libgnat/s-valued.ads, libgnat/s-valued.adb: New generic unit.
+ * libgnat/s-valuef.ads, libgnat/s-valuef.adb: Likewise.
+ * libgnat/s-valuei.adb: Minor rewording.
+ * libgnat/s-valrea.adb: Move bulk of implementation to...
+ * libgnat/s-valuer.ads, libgnat/s-valuer.adb: ...here. New
+ generic unit.
+ * libgnat/system-aix.ads (Max_Mantissa): Adjust.
+ * libgnat/system-darwin-arm.ads (Max_Mantissa): Likewise.
+ * libgnat/system-darwin-ppc.ads (Max_Mantissa): Likewise.
+ * libgnat/system-darwin-x86.ads (Max_Mantissa): Likewise.
+ * libgnat/system-djgpp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-dragonfly-x86_64.ads (Max_Mantissa): Likewise.
+ * libgnat/system-freebsd.ads (Max_Mantissa): Likewise.
+ * libgnat/system-hpux-ia64.ads (Max_Mantissa): Likewise.
+ * libgnat/system-hpux.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-alpha.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-arm.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-hppa.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-ia64.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-m68k.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-mips.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-ppc.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-riscv.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-s390.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-sh4.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-sparc.ads (Max_Mantissa): Likewise.
+ * libgnat/system-linux-x86.ads (Max_Mantissa): Likewise.
+ * libgnat/system-lynxos178-ppc.ads (Max_Mantissa): Likewise.
+ * libgnat/system-lynxos178-x86.ads (Max_Mantissa): Likewise.
+ * libgnat/system-mingw.ads (Max_Mantissa): Likewise.
+ * libgnat/system-qnx-aarch64.ads (Max_Mantissa): Likewise.
+ * libgnat/system-rtems.ads (Max_Mantissa): Likewise.
+ * libgnat/system-solaris-sparc.ads (Max_Mantissa): Likewise.
+ * libgnat/system-solaris-x86.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-arm-rtp-smp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-arm-rtp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-arm.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-e500-kernel.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-e500-rtp-smp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-e500-rtp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-e500-vthread.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-ppc-kernel.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-ppc-ravenscar.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-ppc-rtp-smp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-ppc-rtp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-ppc-vthread.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-ppc.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-x86-kernel.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-x86-rtp-smp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-x86-rtp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-x86-vthread.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks-x86.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-aarch64-rtp-smp.ads (Max_Mantissa):
+ Likewise.
+ * libgnat/system-vxworks7-aarch64.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-arm-rtp-smp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-arm.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-e500-kernel.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-e500-rtp-smp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-e500-rtp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-ppc-kernel.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-ppc-rtp-smp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-ppc-rtp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-ppc64-kernel.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-ppc64-rtp-smp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-x86-kernel.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-x86-rtp-smp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-x86-rtp.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-x86_64-kernel.ads (Max_Mantissa): Likewise.
+ * libgnat/system-vxworks7-x86_64-rtp-smp.ads (Max_Mantissa): Likewise.
+
+2020-11-26 Liaiss Merzougue <merzougue@adacore.com>
+
+ * libgnat/s-imgrea.ads (Image_Ordinary_Fixed_Point): Add a
+ remark concerning the irrelevant use of Inf and -0.0
+
+2020-11-26 Arnaud Charlet <charlet@adacore.com>
+
+ * osint-c.adb (Set_Output_Object_File_Name): Add support for
+ .c output file.
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * lib-writ.adb, sem_ch8.adb, sem_prag.adb: Use
+ Is_Generic_Subprogram instead of low-level membership tests.
+
+2020-11-26 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch6.adb (Analyze_Call_And_Resolve): Reformatted a comment.
+ * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ Fixed a typo.
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_res.adb (Resolve_Membership_Op): Replace pragma Warnings
+ with pragma Assert.
+
+2020-11-26 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch6.adb (Analyze_Call_And_Resolve): Add information to the
+ error message on an illegal procedure call, when the illegality
+ is due to the presence of a component of the full view of the
+ target object, as well as a procedure with the same name (See RM
+ 4.1.3 (9.2/3)).
+
+2020-11-26 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ when the restriction is a configuration pragma and specifies
+ No_Tasking, a global flag is set to reject task declarations,
+ and to prevent the construction of Master entities. The flag
+ must not be set if the pragma is a Restriction_Warning, in which
+ case task declarationns are allowed.
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * libgnat/a-stzhas.adb (Wide_Wide_Hash): Instantiate inside a
+ wrapper function.
+ * libgnat/a-stzhas.ads (Wide_Wide_Hash): Likewise; remove wrong
+ comment, because this is indeed a RM unit, as described in Ada
+ RM A.4.8 (1/3).
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_eval.adb (Eval_Slice): Refactor repeated calls to Prefix
+ with a local constant (named just like in Resolve_Slice).
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_eval.adb (Eval_Slice): Emit warning not just for
+ constants, but for any objects.
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch4.adb (Indicate_Name_And_Type): Fix whitespace in
+ comment.
+ * sem_res.adb (Resolve_Call): Remove redundant parens.
+ * sem_util.adb (Set_Entity_With_Checks): Remove extra call to
+ Set_Entity.
+
+2020-11-26 Bob Duff <duff@adacore.com>
+
+ * exp_ch4.adb (Expand_Concatenate): Call Set_No_Initialization
+ on the N_Allocator node that is supposed to allocate on the
+ secondary stack.
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch13.adb, exp_ch9.adb, sem_ch8.adb, sem_util.adb: Replace
+ a combination of Is_Protected_Type and Is_Task_Type by
+ Is_Concurrent_Type.
+
+2020-11-26 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnarl/s-tassta.adb (Task_Wrapper): Fix computation of
+ Pattern_Size.
+
+2020-11-26 Bob Duff <duff@adacore.com>
+
+ * freeze.adb (Freeze_Array_Type): Remove propagation of
+ Has_Own_Invariants to the first subtype. This is a no-op,
+ because the current (incorrect) version of Has_Own_Invariants
+ calls Base_Type.
+ * sem_prag.adb, sem_util.adb: Pass the base type to
+ Set_Has_Own_Invariants.
+
+2020-11-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (Aft_Value): Adjust documentation.
+ (Scale_Value): Likewise.
+
+2020-11-26 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Type_Conversion): Use the unexpanded
+ operand when generating accessibility checks.
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * libgnat/a-cbhase.adb (Read): Remove extra whitespace.
+ * libgnat/a-cbmutr.ads (Read): Likewise.
+ * libgnat/a-cborse.adb (Read): Likewise.
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch7.adb, exp_util.adb, freeze.adb: Rewrite with
+ Is_Access_Object_Type.
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Check_Valid_Library_Unit_Pragma): Raise
+ exception.
+ (Analyze_Pragma): Remove detection of rewritten pragmas.
+
+2020-11-26 Joffrey Huguet <huguet@adacore.com>
+
+ * libgnat/a-strmap.ads: Add preconditions and postconditions to
+ all subprograms.
+
+2020-11-26 Yannick Moy <moy@adacore.com>
+
+ * sem_res.adb (Resolve_Equality_Op): Warn when -gnatwq is used
+ (the default) and the problematic case is encountered.
+
+2020-11-26 Yannick Moy <moy@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Issue a continuation message
+ to give proper recommendation here.
+
+2020-11-26 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_util.adb (Expand_Subtype_From_Expr): A typo correction,
+ plus other minor reformatting.
+
+2020-11-26 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Instantiate_Formal_Package): If previous matched
+ entity is overloadable, advance in the list of actuals of the
+ actual package, to prevent an erroneous match of two adjacent
+ overloadable homonyms with the same entity.
+
+2020-11-26 Justin Squirek <squirek@adacore.com>
+
+ * sem_ch6.adb (First_Selector): Utility routine to return the
+ first selector or choice in an association.
+ (Check_Return_Construct_Accessibility): Modify loop to handle
+ named associations when iterating through discriminants.
+
+2020-11-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch12.adb: Fix casing from "Instantiation" to
+ "instantiation".
+
+2020-11-25 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb (Is_Uninitialized_Aggregate): Move...
+ * exp_util.adb (Is_Uninitialized_Aggregate): ... here.
+ (Expand_Subtype_From_Expr): If the expression is an
+ uninitialized aggregate, capture subtype for declared object and
+ remove expression to suppress further superfluous expansion.
+
+2020-11-25 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_eval.adb (Subtypes_Statically_Compatible): Scalar types
+ with compatible static bounds are statically compatible if
+ predicates are compatible, even if they are not static subtypes.
+ Same for private types without discriminants.
+
+2020-11-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch11.adb (Expand_N_Raise_Statement): Use Is_Entity_Name
+ consistently in tests on the name of the statement.
+ * exp_prag.adb (Expand_Pragma_Check): In the local propagation
+ case, wrap the raise statement in a block statement.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch8.adb (Expand_N_Exception_Renaming_Declaration): Move
+ "Nam" constant after the body of a nested subprogram; change "T"
+ from variable to constant.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * make.adb (Scan_Make_Arg): Merge ELSIF branches for -u and -U.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_attributes.rst
+ (Has_Tagged_Values): Document based on the existing description
+ of Has_Access_Type and the comment for Has_Tagged_Component,
+ which is where frontend evaluates this attribute.
+ * gnat_rm.texi: Regenerate.
+ * sem_attr.adb (Analyze_Attribute): Merge processing of
+ Has_Access_Type and Has_Tagged_Component attributes.
+ * sem_util.adb (Has_Access_Type): Fix casing in comment.
+ * sem_util.ads (Has_Tagged_Component): Remove wrong (or
+ outdated) comment about the use of this routine to implement the
+ equality operator.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb (Expand_Size_Attribute): Remove whitespace;
+ simplify with a membership test, which are now allowed in the
+ frontend code.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Analyze_One_Aspect): Fix inconsistent calls to
+ Make_Aitem_Pragma.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Check_Expr_Constants): Simplify with
+ Is_Named_Number.
+ * sem_prag.adb (Process_Convention): Likewise.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Analyze_One_Aspect): Detect aspect identifiers
+ with membership tests.
+ (Check_Aspect_At_End_Of_Declarations): Likewise.
+ (Freeze_Entity_Checks): Likewise; a local constant is no longer
+ needed.
+ (Is_Operational_Item): Similar simplification for attribute
+ identifiers.
+ (Is_Type_Related_Rep_Item): Likewise.
+ (Resolve_Iterable_Operation): Detect names with a membership
+ test.
+ (Validate_Independence): Replace repeated Ekind with a
+ membership test.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Analyze_One_Aspect): Replace duplicate of
+ Effective_Reads.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.adb: Use composite wrappers (e.g.
+ Is_Subprogram_Or_Entry) and membership tests where it appears to
+ improve clarity.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.adb (Is_Standard_Character_Type,
+ Is_Standard_String_Type): Simplify.
+ (Last_Formal): Use procedural variant of Next_Formal.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.adb: Replace "E" with Entity_Id in local object
+ declarations.
+
+2020-11-25 Steve Baird <baird@adacore.com>
+
+ * exp_ch2.adb (Expand_Entity_Reference): A new local predicate
+ Is_Object_Renaming_Name indicates whether a given expression
+ occurs (after looking through qualified expressions and type
+ conversions) as the name of an object renaming declaration. If
+ Current_Value is available but this new predicate is True, then
+ ignore the availability of Current_Value.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch12.adb (Instantiate_Type): Remove extra whitespace.
+ (Validate_Access_Type_Instance): Remove dead (and duplicated)
+ code.
+
+2020-11-25 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_util.adb (Possible_Side_Effect_In_SPARK): Replace hyphen
+ with a space in "side-effect" (two instances).
+
+2020-11-25 Justin Squirek <squirek@adacore.com>
+
+ * doc/gnat_rm/intrinsic_subprograms.rst (Shifts and Rotates):
+ Document behavior on negative numbers
+ * gnat_rm.texi: Regenerate.
+ * sem_eval.adb (Fold_Shift): Set modulus to be based on the RM
+ size for non-modular integer types.
+
+2020-11-25 Olivier Hainque <hainque@adacore.com>
+
+ * adaint.c (__gnat_copy_attribs): Reinstate code based on utime
+ for timestamp processing on VxWorks 6.
+
+2020-11-25 Yannick Moy <moy@adacore.com>
+
+ * exp_util.adb (Remove_Side_Effects): Only remove side-effects
+ in GNATprove mode when this is useful.
+ * sem_res.adb (Set_Slice_Subtype): Make sure in GNATprove mode
+ to define the Itype when needed, so that run-time errors can be
+ analyzed.
+ * sem_util.adb (Enclosing_Declaration): Correctly take into
+ account renaming declarations.
+
+2020-11-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-rannum.adb (Random_Discrete): Specifically deal with
+ the case where the size of the base type is larger than 64 bits.
+
+2020-11-25 Yannick Moy <moy@adacore.com>
+
+ * sem_ch3.adb (Access_Type_Declaration): Set Etype before
+ checking for volatility compatibility.
+
+2020-11-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/g-rannum.ads (Random): New functions returning 128-bit.
+ * libgnat/g-rannum.adb (Random): Implement them and alphabetize.
+ (To_Signed): New unchecked conversion function for 128-bit.
+
+2020-11-25 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch7.adb (Build_Finalization_Master, Build_Finalizer,
+ Build_Object_Declarations, Make_Deep_Array_Body,
+ Wrap_Transient_Expression): Call Set_Debug_Info_Needed on
+ temporaries when Debug_Generated_Code is True.
+
+2020-11-25 Liaiss Merzougue <merzougue@adacore.com>
+
+ * libgnat/s-imagei.adb
+ (Set_Digits): Rewrite the procedure to remove recursion.
+ (Image_Integer, Set_Image_Integer): Update assertions and remove
+ redundant ones.
+ * libgnat/s-imageu.adb
+ (Set_Image_Unsigned): Rewrite the procedure to remove recursion.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_util.adb (Attribute_Constrained_Static_Value): Fix body
+ box.
+ * sem_attr.adb (Eval_Attribute): Replace repeated calls to
+ Attribute_Name with a captured value of the Attribute_Id; also,
+ remove extra parens around Is_Generic_Type.
+
+2020-11-25 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_prag.adb (Analyze_Pragma): Emit error on wrong argument
+ nkind.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb, sem_prag.adb: Use Is_Named_Number.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb, exp_util.adb: Fix style and typos in comments.
+
+2020-11-25 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): A variable that
+ is only incremented in the code has now type Nat; conversion is
+ now unnecessary.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Analyze_Global_Item): Call SPARK_Msg_NE with the
+ entity, not with its identifier.
+
+2020-11-24 Arnaud Charlet <charlet@adacore.com>
+
+ * opt.ads (Generate_Asm): New flag.
+ * osint-c.adb (Set_Output_Object_File_Name): Accept any
+ extension when generating assembly.
+ * adabkend.adb (Scan_Compiler_Args): Recognize -S.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb, exp_ch4.adb, exp_intr.adb, sem_ch8.adb,
+ sem_res.adb, sem_type.adb, sem_util.adb: Reuse Is_Packed_Array.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * checks.adb (Apply_Access_Check): Remove unbalanced paren.
+ * exp_attr.adb (Expand_N_Attribute_Reference): Fix typo in
+ comment.
+
+2020-11-24 Justin Squirek <squirek@adacore.com>
+
+ * sem_prag.adb (Analyze_Pragma): Mark relevant pragmas as ghost
+ when they are within a ghost region.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * contracts.adb, freeze.adb, sem_ch12.adb, sem_prag.adb: Reuse
+ In_Same_List.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Is_Loop_Pragma): Avoid repeated calls to
+ Original_Node; remove unnecessary IF statement.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Rewrite
+ with a CASE statement.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Replace calls to
+ Sloc with a local constant Loc; remove call to
+ Analyze_And_Resolve and return, which is exactly what happens
+ anyway (and other branches in the Constrained declare block
+ appear to rely on analysis, resolution and returning happening
+ in all cases).
+ * sem_util.adb: Remove useless parens.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.adb (Is_Object_Reference): Delta and extension
+ aggregates are objects.
+
+2020-11-24 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * libgnat/s-rident.ads (System.Rident): Register new restriction
+ IDs.
+ * par-ch13.adb (Get_Aspect_Specifications): Add restriction check.
+ * par-prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ Register No_Unrecognized_Aspects restriction.
+ * sem_prag.adb (Analyze_Pragma): Add restriction check.
+ * snames.ads-tmpl: Create restriction names.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Declared_Within): Return True for objects
+ declared within the attribute Loop_Entry prefix itself.
+
+2020-11-24 Yannick Moy <moy@adacore.com>
+
+ * sem_ch3.adb (Process_Discriminants): Correctly set right
+ context for analyzing default value of discriminant.
+
+2020-11-24 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_type.adb (Add_One_Interp.Is_Universal_Operation): Account
+ for universal_access = operator.
+ (Disambiguate): Take into account preference on universal_access
+ = operator when relevant.
+ (Disambiguate.Is_User_Defined_Anonymous_Access_Equality): New.
+
+2020-11-24 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_util.adb (Is_Finalizable_Transient): Take into account return
+ statements containing N_Expression_With_Actions. Also clean up a
+ condition to make it more readable.
+ * exp_ch6.adb: Fix typo.
+
+2020-11-24 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/a-wtdeio.adb (TFT): Delete and adjust throughout.
+ * libgnat/a-wtenau.adb (TFT): Likewise.
+ * libgnat/a-wtfiio.adb (TFT): Likewise.
+ * libgnat/a-wtflio.adb (TFT): Likewise.
+ * libgnat/a-wtinio.adb (TFT): Likewise.
+ * libgnat/a-wtinio__128.adb (TFT): Likewise.
+ * libgnat/a-wtmoio.adb (TFT): Likewise.
+ * libgnat/a-wtmoio__128.adb (TFT): Likewise.
+ * libgnat/a-ztdeio.adb (TFT): Likewise.
+ * libgnat/a-ztenau.adb (TFT): Likewise.
+ * libgnat/a-ztfiio.adb (TFT): Likewise.
+ * libgnat/a-ztflio.adb (TFT): Likewise.
+ * libgnat/a-ztinio.adb (TFT): Likewise.
+ * libgnat/a-ztinio__128.adb (TFT): Likewise.
+ * libgnat/a-ztmoio.adb (TFT): Likewise.
+ * libgnat/a-ztmoio__128.adb (TFT): Likewise.
+
+2020-11-24 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch13.adb (Validate_Literal_Aspect): Add support for named
+ numbers and in particular overload of the Real_Literal function.
+ * sem_res.adb (Resolve): Add support for named numbers in
+ Real_Literal and Integer_Literal resolution.
+ * einfo.adb, einfo.ads (Related_Expression,
+ Set_Related_Expression): Allow E_Function.
+ * uintp.ads (UI_Image_Max): Bump size of buffer to avoid loosing
+ precision.
+ * sem_eval.adb: Fix typo in comment.
+ * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads (From_String):
+ Return a Valid_Big_Integer.
+ * libgnat/a-nbnbre.adb, libgnat/a-nbnbre.ads (From_String): New
+ variant taking two strings. Return a Valid_Big_Real.
+
+2020-11-24 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch12.adb (Analyze_Associations) <Explicit_Freeze_Check>: Test
+ that the instance is in a statement sequence instead of local scope.
+ (Freeze_Subprogram_Body): Use the special delayed placement with
+ regard to the parent instance only if its Sloc is strictly greater.
+ (Install_Body): Likewise.
+
+2020-11-24 Steve Baird <baird@adacore.com>
+
+ * sem_ch13.adb (Validate_Literal_Aspect): Call to Base_Type
+ needed in order to correctly check result type of String_Literal
+ function when the first named subtype differs from the base
+ type (e.g.:
+ type T is range 1 .. 10 with String_Literal => ... ;
+ ).
+
+2020-11-24 Yannick Moy <moy@adacore.com>
+
+ * sem_prag.adb (Analyze_Global_Item): Handle specially the
+ current instance of a PO.
+ * sem_util.ads (Is_Effectively_Volatile,
+ Is_Effectively_Volatile_For_Reading): Add parameter
+ Ignore_Protected.
+ * sem_util.adb (Is_Effectively_Volatile,
+ Is_Effectively_Volatile_For_Reading): Add parameter
+ Ignore_Protected to compute the query results ignoring protected
+ objects/types.
+ (Is_Effectively_Volatile_Object,
+ Is_Effectively_Volatile_Object_For_Reading): Adapt to new
+ signature.
+
+2020-11-24 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ Update documentation on -gnatyk.
+ * gnat_ugn.texi: Regenerate.
+
+2020-11-24 Yannick Moy <moy@adacore.com>
+
+ * sem_ch10.adb (Analyze_Compilation_Unit): Move aspects from
+ body to the newly created spec.
+
+2020-11-24 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch6.adb (Add_Cond_Expression_Extra_Actual): Simplify
+ handling of function calls and remove bug in handling of
+ transient objects. Minor reformatting along the way.
+
+2020-11-24 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbin.adb (From_String): Implement fully.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Resolve_Delta_Array_Aggregate): If the choice is
+ a subtype_indication then call
+ Resolve_Discrete_Subtype_Indication; both for choices
+ immediately inside array delta aggregates and inside
+ iterated_component_association within array delta aggregates.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * lib-load.adb, lib-writ.adb, lib.adb, par-load.adb,
+ rtsfind.adb, sem_ch10.adb: Use Present where possible.
+
+2020-11-24 Yannick Moy <moy@adacore.com>
+
+ * sem_prag.adb (Analyze_Depends_Global): Reject Global and
+ Depends on null procedure.
+
+2020-11-24 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbre.adb (From_String): Handle properly '_'
+ characters.
+
+2020-11-24 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_Array_Aggregate,
+ Expand_SPARK_N_Aggregate): Remove, no longer needed.
+ * sem_aggr.adb (Resolve_Iterated_Component_Association): Only
+ remove references in the analyzed expression when generating
+ code and the expression needs to be analyzed anew after being
+ rewritten into a loop.
+
+2020-11-24 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_characteristics.rst: Complete
+ entry of 3.5.9(10).
+ * gnat_rm.texi: Regenerate.
+
+2020-11-20 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * adaint.c (__gnat_number_of_cpus): Check for the presence of
+ _SC_NPROCESSORS_ONLN rather than a list of OS-specific macros
+ to decide whether to use `sysconf'.
+
+2020-11-20 Jakub Jelinek <jakub@redhat.com>
+
+ PR other/97911
+ * gcc-interface/Make-lang.in (ada.serial): Change from goal to a
+ variable.
+ (.PHONY): Drop ada.serial and ada.prev.
+ (gnat1$(exeext)): Depend on $(ada.serial) rather than ada.serial.
+
+2020-11-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR ada/97805
+ * adaint.c: Include climits in C++ and limits.h otherwise.
+
+2020-11-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_dbug.adb (Is_Handled_Scale_Factor): Delete.
+ (Get_Encoded_Name): Do not call it.
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <Fixed_Point_Type>:
+ Tidy up and always use a meaningful description for arbitrary
+ scale factors.
+ * gcc-interface/misc.c (gnat_get_fixed_point_type_info): Remove
+ obsolete block and adjust the description of the scale factor.
+
+2020-11-18 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc-interface/Make-lang.in (ada.serial): New goal.
+ (.PHONY): Add ada.serial ada.prev.
+ (gnat1$(exeext)): Depend on ada.prev. Call LINK_PROGRESS.
+
+2020-11-18 Matthias Klose <doko@ubuntu.com>
+
+ PR ada/97859
+ * Makefile.rtl (powerpc% linux%): Also match powerpc64le cpu.
+
+2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/gigi.h: Remove ^L characters throughout.
+ * gcc-interface/decl.c: Likewise.
+ * gcc-interface/utils.c: Likewise.
+ * gcc-interface/utils2.c: Likewise.
+ * gcc-interface/trans.c (gnat_to_gnu) <N_Allocator>: Do not explicitly
+ go to the base type for the Has_Constrained_Partial_View flag.
+
+2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (build_binary_op_trapv): Convert operands
+ to the result type before doing generic overflow checking.
+
+2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (can_be_lower_p): Remove.
+ (Regular_Loop_to_gnu): Add ENTRY_COND unconditionally if
+ BOTTOM_COND is non-zero.
+
+2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Constant>: In case
+ the constant is not being defined, get the expression in type
+ annotation mode only if its type is elementary.
+
+2020-11-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (gnat_to_gnu) <N_Op_Shift>: Also convert
+ GNU_MAX_SHIFT if the type of the operation has been changed.
+ * gcc-interface/utils.c (can_materialize_object_renaming_p): Add
+ pair of missing parentheses.
+
+2020-11-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/Makefile.in: Force target_cpu to powerpc if the
+ nominal target is powerpc64-suse-linux.
+
+2020-11-07 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc-interface/misc.c (gnat_printable_name): Change
+ DECL_IS_BUILTIN -> DECL_IS_UNDECLARED_BUILTIN.
+
+2020-10-28 Alexandre Oliva <oliva@adacore.com>
+
+ PR ada/97504
+ * Makefile.rtl (LIBGNAT_TARGET_PAIRS> <riscv*-*-*>: Use wraplf
+ version of Aux_Long_Long_Float.
+
+2020-10-27 Doug Rupp <rupp@adacore.com>
+
+ * Makefile.rtl: Add vx7r2cert spec file to ARM, PowerPC and x86
+ targets.
+ * vxworks7-cert-rtp-link.spec: New spec file.
+
+2020-10-27 Arnaud Charlet <charlet@adacore.com>
+
+ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-spogwa object.
+ * libgnat/g-spogwa.adb: Fix style errors.
+
+2020-10-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_Array_Aggregate): Dedicated
+ routine for array aggregates; mostly reuses existing code, but
+ calls itself recursively for multi-dimensional array aggregates.
+ (Expand_SPARK_N_Aggregate): Call Expand_SPARK_Array_Aggregate to
+ do the actual expansion, starting from the first index of the
+ array type.
+
+2020-10-27 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_aggr.adb (Resolve_Iterated_Component_Association): new
+ internal subprogram Remove_References, to reset semantic
+ information on each reference to the index variable of the
+ association, so that Collect_Aggregate_Bounds can work properly
+ on multidimensional arrays with nested associations, and
+ subsequent expansion into loops can verify that dimensions of
+ each subaggregate are compatible.
+
+2020-10-27 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * exp_prag.adb (Append_Copies): Handle N_Parameter_Associations.
+
+2020-10-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * ada_get_targ.adb (Digits_From_Size): Delete.
+ (Width_From_Size): Likewise.
+ * get_targ.adb (Digits_From_Size): Likewise.
+ (Width_From_Size): Likewise.
+ * get_targ.ads (Digits_From_Size): Likewise.
+ (Width_From_Size): Likewise.
+ * ttypes.ads: Remove with clause for Get_Targ.
+ (Standard_Short_Short_Integer_Width): Delete.
+ (Standard_Short_Integer_Width): Likewise.
+ (Standard_Integer_Width): Likewise.
+ (Standard_Long_Integer_Width): Likewise.
+ (Standard_Long_Long_Integer_Width): Likewise.
+ (Standard_Long_Long_Long_Integer_Width): Likewise.
+ (Standard_Short_Float_Digits): Likewise.
+ (Standard_Float_Digits): Likewise.
+ (Standard_Long_Float_Digits): Likewise.
+ (Standard_Long_Long_Float_Digits): Likewise.
+ * gnat1drv.adb (Adjust_Global_Switches): Adjust.
+
+2020-10-27 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch6.adb, freeze.adb, gnat1drv.adb, opt.ads, sem_ch6.adb
+ (Transform_Function_Array): New flag, split from Modify_Tree_For_C.
+ * exp_unst.adb: Minor reformatting.
+
+2020-10-27 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * libgnat/g-socpol.adb (Wait): Do not exit from loop on EINTR
+ error and timeout is over.
+
+2020-10-26 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_aggr.adb (Build_Array_Aggr_Code): If the aggregate
+ includes an Others_Choice in an association that is an
+ Iterated_Component_Association, generate a proper loop for it.
+
+2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/a-tifiio.adb: Add missing sign in documentation.
+ * libgnat/s-imgrea.ads: Minor fixes in commentary.
+
+2020-10-26 Pat Rogers <rogers@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst: Include
+ "Jorvik" in pragma Profile description.
+ * gnat_rm.texi: Regenerate.
+
+2020-10-26 Bob Duff <duff@adacore.com>
+
+ * sem_attr.adb (Check_Image_Type): Remove "|", so the compiler
+ will not crash.
+ * errout.ads: Improve comment. This has nothing to do with
+ -gnatQ.
+
+2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/a-tifiio.adb: Minor editions to documentation.
+
+2020-10-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * contracts.adb (Causes_Contract_Freezing): Extend condition to
+ match the one in Analyze_Subprogram_Body_Helper. This routine is
+ used both as an assertion at the very start of
+ Freeze_Previous_Contracts and to detect previous declaration for
+ which Freeze_Previous_Contracts has been executed.
+
+2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/a-tifiio.adb: Move around documentaton paragraph.
+
+2020-10-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * inline.adb (Establish_Actual_Mapping_For_Inlined_Call): Add
+ guard for a call to Set_Last_Assignment with the same condition
+ as the assertion in that routine and explain why this guard
+ fails in GNATprove mode.
+
+2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_characteristics.rst: Adjust
+ the entries of 3.5.9(8) and 3.5.9(10).
+ * gnat_rm.texi: Regenerate.
+
+2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/a-tifiio.adb: Change the range of supported Small
+ values.
+ (E0, E1, E2): Adjust factors.
+ (Exact): Return false if the Small does not fit in 64 bits.
+
+2020-10-26 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * libgnat/g-socket.adb (Wait_On_Socket): Boolean parameter
+ For_Read changed to Event parameter of type
+ GNAT.Sockets.Poll.Wait_Event_Set. Implementation is simplified
+ and based on call to GNAT.Sockets.Poll.Wait now.
+
+2020-10-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/a-tifiio.adb: Minor editions to documentation.
+
+2020-10-26 Yannick Moy <moy@adacore.com>
+
+ * sem_ch12.adb (Restore_Private_Views): Do not lose the
+ information provided by Is_Generic_Actual_Type in GNATprove
+ mode.
+
+2020-10-26 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning
+ on formal parameters of all dispatching operations.
+
+2020-10-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Resolve_Delta_Array_Aggregate): Fix typos in
+ error message.
+
+2020-10-26 Olivier Hainque <hainque@adacore.com>
+
+ * libgnat/s-dwalin.adb (Symbolic_Traceback): Always emit the hex
+ address at the beginning of an entry if suppression is not
+ requested. Consistently output a "???" for the subprogram name
+ when it is unknown.
+
+2020-10-26 Doug Rupp <rupp@adacore.com>
+
+ * s-oscons-tmplt.c (_nfds_t): Use sizeof (unsigned long int).
+
+2020-10-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch4.adb (P_Iterated_Component_Association): Move code for
+ iterated_element_association to
+ Build_Iterated_Element_Association.
+
+2020-10-26 Yannick Moy <moy@adacore.com>
+
+ * sem_ch12.adb (Needs_Body_Instantiated): In GNATprove mode, do
+ not instantiate bodies outside of the main unit.
+
+2020-10-26 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_aggr.adb (Resolve_Delta_Array_Aggregate): For an
+ association that is an iterated component association, attach
+ the copy of the expression to the tree prior to analysis, in
+ order to preserve its context. This is needed when verifying
+ static semantic rules that depend on context, for example that a
+ use of 'Old appears only within a postcondition.
+
+2020-10-26 Bob Duff <duff@adacore.com>
+
+ * doc/gnat_ugn/gnat_utility_programs.rst: Document that
+ --no-comments-fill is now the default.
+
+2020-10-26 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_aggr.adb (Resolve_Extension_Aggregate): When testing for
+ an aggregate that is illegal due to having an ancestor type that
+ has unknown discriminants, add an "or else" condition testing
+ whether the aggregate type has unknown discriminants and that
+ Partial_View_Has_Unknown_Discr is also set on the ancestor type.
+ Extend the comment, including adding ??? about a possible
+ simpler test.
+
+2020-10-26 Bob Duff <duff@adacore.com>
+
+ * libgnat/a-cihama.adb, libgnat/a-cohama.adb,
+ libgnat/a-cohase.adb (Delete): Set Position.Position, and
+ assert.
+
+2020-10-26 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch8.adb (Find_Direct_Name.Undefined): Handle known unit
+ names with 3 selectors.
+
+2020-10-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_Delta_Or_Update): Add missing call
+ to Enter_Name, just like it is called for
+ iterated_component_association in Expand_SPARK_N_Aggregate.
+
+2020-10-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_Delta_Or_Update): Reuse local
+ constant Expr and the Choice_List routine.
+ (Expand_SPARK_N_Aggregate): Reuse local constant Expr.
+
+2020-10-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch4.adb (P_Iterated_Component_Association): Fix typos in
+ comments.
+
+2020-10-26 Arnaud Charlet <charlet@adacore.com>
+
+ * par-ch6.adb (P_Formal_Part): Ada 2020 supports scanning
+ aspects on formal parameters.
+ * doc/gnat_rm/implementation_defined_aspects.rst (Aspect
+ Unreferenced): Update documentation.
+ * gnat_rm.texi: Regenerate.
+
+2020-10-26 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb (Freeze_Type_Refs): When an entity in an expression
+ function is a type, freeze the entity and not just its type,
+ which would be incomplete when the type is derived and/or
+ tagged.
+
+2020-10-26 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb (Expand_Update_Attribute): Handle
+ subtype_indication just like in Expand_Delta_Array_Aggregate.
+
+2020-10-25 Iain Sandoe <iain@sandoe.co.uk>
+
+ * Makefile.rtl: Add GNATRTL_128BIT_PAIRS/OBJS for 64bit
+ PowerPC Darwin cases.
+
+2020-10-23 Iain Sandoe <iain@sandoe.co.uk>
+
+ * adaint.c: On Darwin platforms, define st_atim to
+ st_atimespec. Likwise st_mtim to st_mtimespec.
+
+2020-10-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (EXTRA_GNATRTL_NONTASKING_OBJS) [IA64/Linux]: Fix typo.
+
+2020-10-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (EXTRA_GNATRTL_NONTASKING_OBJS) [IA64/Linux]: Fix typo.
+
+2020-10-23 Alexandre Oliva <oliva@adacore.com>
+
+ PR ada/97504
+ * Makefile.rtl (LIBGNAT_TARGET_PAIRS): Select wraplf version
+ of Aux_Long_Long_Float for s390 and remaining sparc and
+ powerpc targets.
+
+2020-10-23 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * Makefile.rtl (GNATRTL_SOCKETS_OBJS): New object
+ g-socpol$(objext) New source files noted: g-socpol.adb,
+ g-socpol.ads, g-socpol__dummy.adb, g-socpol__dummy.ads,
+ g-sopowa.adb, g-sopowa__posix.adb, g-sopowa__mingw.adb,
+ g-spogwa.adb, g-spogwa.ads.
+ * impunit.adb (Non_Imp_File_Names_95): New base filename
+ g-socpol in "GNAT Library Units" section for GNAT.Sockets.Poll
+ unit.
+ * libgnat/g-socket.ads, libgnat/g-socket.adb:
+ (Raise_Socket_Error): Moved from body to private part of
+ specification to use in GNAT.Sockets.Poll.
+ * libgnat/g-socpol.ads, libgnat/g-socpol.adb: Main unit of the
+ implementation.
+ * libgnat/g-socpol__dummy.ads, libgnat/g-socpol__dummy.adb:
+ Empty unit for the systems without sockets support.
+ * libgnat/g-spogwa.ads, libgnat/g-spogwa.adb: Generic unit
+ implementing sockets poll on top of select system call.
+ * libgnat/g-sopowa.adb (Wait): Separate implementation for
+ operation systems with poll system call support.
+ * libgnat/g-sopowa__posix.adb (Wait): Separate implementation
+ for POSIX select system call.
+ * libgnat/g-sopowa__mingw.adb (Wait): Separate implementation
+ for Windows select system call.
+ * gsocket.h (_WIN32_WINNT): Increase to 0x0600 for winsock2.h to
+ allow WSAPoll related definitions.
+ * s-oscons-tmplt.c: Fix comment next to #endif for
+ #if defined (__linux__) || defined (__ANDROID__) line. Include
+ <poll.h> for all except VxWorks and Windows.
+ (SIZEOF_nfds_t): New definition.
+ (SIZEOF_fd_type): New definition.
+ (SIZEOF_pollfd_events): New definition.
+ (POLLIN, POLLPRI, POLLOUT, POLLERR, POLLHUP, POLLNVAL): New
+ definitions for VxWorks to be able to emulate poll on top of
+ select in it. Define POLLPRI as zero on Windows as it is not
+ supported there.
+ (Poll_Linkname): New definition, because the poll system call
+ has different name in Windows and POSIX.
+
+2020-10-23 Justin Squirek <squirek@adacore.com>
+
+ * checks.adb (Apply_Accessibility_Check): Skip checks against
+ the extra accessibility of a function result when in Ada 2005
+ mode or earlier.
+ * exp_ch3.adb (Build_Initialization_Call): Modify accessibility
+ level calls to use Accessibility_Level.
+ (Expand_N_Object_Declaration): Modify accessibility level calls
+ to use Accessibility_Level.
+ * exp_ch4.adb (Expand_Allocator_Expression): Add static check
+ for anonymous access discriminants. Remove unneeded propagation
+ of accessibility actual.
+ (Expand_N_In): Modify accessibility level calls to use
+ Accessibility_Level.
+ (Expand_N_Type_Conversion): Modify accessibility level calls to
+ use Accessibility_Level.
+ * exp_ch5.adb (Expand_N_Assignment_Statement): Modify
+ accessibility level calls to use Accessibility_Level.
+ * exp_ch6.adb (Expand_Call_Helper): Rewrite accessibility
+ calculation for the extra accessibility of result actual in
+ function calls, and modify accessibility level calls to use
+ Accessibility_Level.
+ (Check_Against_Result_Level): Removed.
+ * exp_ch9.adb (Expand_N_Requeue_Statement): Add dynamic
+ accessibility check for requeues
+ * sem_attr.adb (Resolve_Attribute): Modify accessibility level
+ calls to use Accessibility_Level.
+ * sem_ch13.adb (Associate_Storage_Pool): Modify accessibility
+ level calls to use Accessibility_Level.
+ * sem_ch4.adb (Analyze_Call): Add static check for explicitly
+ aliased formals in function calls within return statements.
+ * sem_ch6.adb (Check_Return_Construct_Accessibility): Rewrite
+ routine to account for non-aggregate return objects.
+ (Generate_Minimum_Accessibility): Created.
+ (Analyze_Call): Modify accessibility level calls to use
+ Accessibility_Level.
+ (Analyze_Subprogram_Body_Helper): Add generation of minimum
+ accessibility for the extra accessibility of the function
+ result.
+ * sem_ch9.adb (Analyze_Requeue): Modify accessibility level
+ calls to use Accessibility_Level.
+ * sem_res.adb: (Check_Aliased_Parameters): Modify accessibility
+ level calls to use Accessibility_Level.
+ (Valid_Conversion): Modify accessibility level calls to use
+ Accessibility_Level.
+ * sem_util.adb, sem_util.ads (Accessibility_Level_Helper):
+ Renamed to Accessibility_Level, add detection for functions in
+ prefix notation, and add cases where to return zero when
+ specified. Modified to take new, more descriptive, parameters.
+ (Accessibility_Level): Created.
+ (Function_Call_Level): Removed.
+ (Function_Call_Or_Allocator_Level): Created to centralize the
+ calculation accessibility levels for function calls and
+ allocators.
+ (Static_Accessibility_Level): Removed.
+ (Dynamic_Accessibility_Level): Removed.
+ (Get_Dynamic_Accessibility): Renamed from Get_Accessibility.
+ (In_Return_Value): Created to determine if a given expression
+ contributes to the current function's return value.
+ (Is_Master): Created.
+ (Is_Explicitly_Aliased): Created
+
+2020-10-23 Bob Duff <duff@adacore.com>
+
+ * doc/gnat_ugn/gnat_utility_programs.rst: Document
+ --no-comments-fill.
+
+2020-10-23 Piotr Trojanek <trojanek@adacore.com>
+
+ * contracts.adb (Analyze_Entry_Or_Subprogram_Contract,
+ Analyze_Subprogram_Body_Stub_Contract): Fix missing references
+ to Subprogram_Variant where similar references to Contract_Cases
+ are present.
+ * sem_prag.adb (Analyze_Contract_Case, Analyze_Variant): Check
+ that aggregate parameter has no expressions.
+ (Analyze_Pragma): Replace Contract_Cases with Subprogram_Variant
+ in a copy-pasted comment.
+
+2020-10-23 Philippe Gil <gil@adacore.com>
+
+ * libgnat/g-socket.ads: Fix comment typo.
+
+2020-10-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst (VFA): Remove uage
+ restrictions in conjunction with Atomic and Aliased.
+ * gnat_rm.texi: Regenerate.
+ * aspects.ads (Aspect_Id): Add Aspect_Full_Access_Only.
+ (Is_Representation_Aspect): Likewise.
+ (Aspect_Names): Likewise.
+ (Aspect_Delay): Likewise.
+ * einfo.ads (Is_Atomic_Or_VFA): Rename into...
+ (Is_Full_Access): ...this.
+ (Is_Volatile_Full_Access): Document new usage for Full_Access_Only.
+ * einfo.adb (Is_Atomic_Or_VFA): Rename into...
+ (Is_Full_Access): ...this.
+ * freeze.ads (Is_Atomic_VFA_Aggregate): Rename into...
+ (Is_Full_Access_Aggregate): ...this.
+ * freeze.adb (Is_Atomic_VFA_Aggregate): Rename into...
+ (Is_Full_Access_Aggregate): ...this. Adjust to above renaming.
+ (Freeze_Array_Type): Likewise.
+ (Freeze_Entity): Likewise.
+ * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Likewise.
+ (Expand_Record_Aggregate): Likewise.
+ * exp_ch4.adb (Expand_N_Op_Eq): Likewise.
+ * exp_ch5.adb (Expand_Assign_Array): Likewise.
+ * exp_ch8.adb (Evaluation_Required): Likewise.
+ * layout.adb (Layout_Type): Likewise.
+ (Set_Composite_Alignment): Likewise.
+ * sem_aux.ads (Has_Rep_Item): Delete.
+ * sem_aux.adb (Has_Rep_Item): Likewise.
+ * sem_attr.adb (Resolve_Attribute) <Attribute_Access>: Implement
+ new legality rules in C.6(12).
+ * sem_ch12.adb (Instantiate_Object): Likewise.
+ * sem_res.adb (Resolve_Actuals): Likewise.
+ * sem_ch13.adb (Inherit_Delayed_Rep_Aspects): Deal with aspect
+ Full_Access_Only.
+ (Check_False_Aspect_For_Derived_Type): Likewise.
+ (Make_Pragma_From_Boolean_Aspect): Test for the presence of Expr.
+ Deal with aspect Full_Access_Only.
+ (Analyze_Aspects_At_Freeze_Point): Likewise.
+ (Analyze_One_Aspect): Do not set Delay_Required to true even for
+ Always_Delay boolean aspects if they have no expression. Force
+ Delay_Required to true for aspect Full_Access_Only in all cases.
+ Reject aspect Full_Access_Only if not in Ada 2020 mode.
+ (Check_Aspect_At_End_Of_Declarations): Deal with empty expression.
+ (Check_Aspect_At_Freeze_Point): Likewise.
+ (Rep_Item_Entity): Delete.
+ (Inherit_Aspects_At_Freeze_Point): Align handling for Bit_Order
+ with that for Scalar_Storage_Order.
+ * sem_prag.adb (Check_Atomic_VFA): Delete.
+ (Check_VFA_Conflicts): Likewise.
+ (Check_Full_Access_Only): New procedure.
+ (Process_Atomic_Independent_Shared_Volatile): Call to implement
+ the new legality checks in C.6(8/2) and mark the entity last.
+ (Analyze_Pragma) <Pragma_Atomic_Components>: Remove obsolete check.
+ * sem_util.ads (Is_Atomic_Or_VFA_Object): Rename into...
+ (Is_Full_Access_Object): ...this.
+ (Is_Subcomponent_Of_Atomic_Object): Rename into...
+ (Is_Subcomponent_Of_Full_Access_Object): ...this.
+ * sem_util.adb (Inherit_Rep_Item_Chain): Use Present_In_Rep_Item.
+ (Is_Atomic_Or_VFA_Object): Rename into...
+ (Is_Full_Access_Object): ...this.
+ (Is_Subcomponent_Of_Atomic_Object): Rename into...
+ (Is_Subcomponent_Of_Full_Access_Object): ...this and adjust.
+ * snames.ads-tmpl (Name_Full_Access_Only): New name of aspect.
+ * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust for renaming.
+ (promote_object_alignment): Likewise.
+ (gnat_to_gnu_field): Likewise. Rename local variable and use
+ specific qualifier in error message for Volatile_Full_Access.
+ * gcc-interface/trans.c (lvalue_required_p): Likewise.
+
+2020-10-23 Arnaud Charlet <charlet@adacore.com>
+
+ * lib-writ.ads, lib-writ.adb (Write_ALI): No longer read
+ existing ALI files in -gnatc mode.
+
+2020-10-23 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/g-socthi__mingw.adb (C_Select): Fix logic in code and
+ make it explicit that we are checking against null values before
+ dereferencing them.
+
+2020-10-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_imgv.adb (Expand_Image_Attribute): For an enumeration type
+ subject to pragma Discard_Names, convert 'Pos to Long_Long_Integer
+ before applying 'Img to the result.
+
+2020-10-23 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb (Freeze_Type_Refs): Add guard on freezing of the
+ designated type of an access type appearing in the expression,
+ when expression includes an explicit dereference whose prefix
+ includes a function call.
+
+2020-10-23 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_Delta_Or_Update): Handle
+ subtype_indication; do not apply range checks for ranges; add
+ comment saying that others_choices is not allowed.
+
+2020-10-23 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_N_Aggregate,
+ Expand_SPARK_Delta_Or_Update): Expand
+ Iterated_Component_Association occurring within delta
+ aggregates.
+ (Expand_SPARK): Apply SPARK-specific expansion to ordinary
+ aggregates.
+
+2020-10-23 Johannes Kanig <kanig@adacore.com>
+
+ * exp_util.adb, exp_util.ads
+ (Containing_Package_With_Ext_Axioms,
+ Has_Annotate_Pragma_For_External_Axiomatizations): Removed.
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): Removed code
+ related to external axiomatizations.
+ * einfo.ads
+ (Is_Generic_Actual_Subprogram): Removed comment about external
+ axiomatization.
+
+2020-10-23 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_aggr.adb (Resolve_Aggregate): Do not call
+ Resolve_Container_Aggregate if compilation version is earlier
+ than Ada_2020.
+
+2020-10-23 Arnaud Charlet <charlet@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst: Improve
+ documentation of pragma Abort_Defer.
+ * gnat_rm.texi: Regenerate.
+
+2020-10-23 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * exp_prag.adb (Etype_Or_Dim3): New function.
+ (Expand_Pragma_Cuda_Execute): Use Etype_Or_Dim3 for temporary
+ decls.
+
+2020-10-23 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-fileio.adb (Open): Fix setting of Tempfile.
+
+2020-10-23 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * exp_prag.adb (Get_Launch_Kernel_Arg_Type): Renamed to
+ Get_Nth_Arg_Type and made more generic.
+ (Build_Dim3_Declaration): Now builds a CUDA.Internal.Dim3
+ instead of a CUDA.Vector_Types.Dim3.
+ (Build_Shared_Memory_Declaration): Now infers needed type from
+ Launch_Kernel instead of using a hard-coded type.
+ (Expand_Pragma_CUDA_Execute): Build additional temporaries to
+ store Grids and Blocks.
+ * rtsfind.ads: Move Launch_Kernel from public to internal
+ package.
+
+2020-10-23 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch4.adb (Complete_Object_Operation): Only mark entities
+ referenced if we are compiling the extended main unit.
+ * sem_attr.adb (Analyze_Attribute [Attribute_Tag]): Record a
+ reference on the type and its scope.
+
+2020-10-23 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb (Is_Uninitialized_Aggregate): Recognize an array
+ aggregate with box initialization, scalar components, and no
+ component default values.
+ (Freeze_Entity, Check_Address_Clause): Call it, and simplify
+ freeze code for entity by removing useless assignment.
+
+2020-10-23 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch3.adb (Check_Abstract_Overriding): Subprogram renamings
+ cannot be overridden.
+ (Derive_Subprogram): Enable setting attribute
+ Requires_Overriding on functions with controlling access results
+ of record extensions with a null extension part require
+ overriding (AI95-00391/06).
+
+2020-10-23 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Resolve_Delta_Array_Aggregate): Push scope of
+ the implicit loop before entering name of the index parameter,
+ not after; enter name no matter if the identifier has been
+ decorated before.
+
+2020-10-23 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch4.adb (Analyze_Call): In the case where the call is not
+ overloaded, check for a call to an abstract nondispatching
+ operation and flag an error.
+
+2020-10-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnat1drv.adb (Adjust_Global_Switches): Rewrite again code enabling
+ or disabling the support for 128-bit integer types.
+
+2020-10-23 Arnaud Charlet <charlet@adacore.com>
+
+ * alloc.ads, aspects.adb, aspects.ads, atree.adb, atree.ads,
+ casing.adb, casing.ads, csets.adb, csets.ads, debug.adb, debug.ads,
+ einfo.adb, einfo.ads, elists.adb, elists.ads, fname.adb, fname.ads,
+ gnatvsn.adb, gnatvsn.ads, hostparm.ads, indepsw-aix.adb,
+ indepsw-darwin.adb, indepsw-gnu.adb, indepsw.adb, indepsw.ads,
+ krunch.adb, krunch.ads, lib-list.adb, lib-sort.adb, lib.adb, lib.ads,
+ namet-sp.adb, namet-sp.ads, namet.adb, namet.ads, nlists.adb,
+ nlists.ads, opt.adb, opt.ads, output.adb, output.ads, rident.ads,
+ scans.adb, scans.ads, scil_ll.adb, scil_ll.ads, sem_aux.ads,
+ sem_aux.adb, sfn_scan.adb, sinfo.adb, sinfo.ads, sinput.adb,
+ sinput.ads, snames.adb-tmpl, snames.ads-tmpl, stand.ads,
+ stringt.adb, stringt.ads, table.adb, table.ads, types.adb,
+ types.ads, uintp.adb, uintp.ads, uname.adb, uname.ads,
+ urealp.adb, urealp.ads, vast.adb, vast.ads, widechar.adb,
+ widechar.ads: Update header.
+
+2020-10-23 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbin.adb (From_String): Take advantage of
+ Long_Long_Long_Integer.
+ * libgnat/s-genbig.ads, libgnat/s-genbig.adb (To_Bignum): New
+ function taking a Long_Long_Long_Integer.
+
+2020-10-23 Justin Squirek <squirek@adacore.com>
+
+ * sem_util.adb (Accessibility_Call_Helper): In the selected
+ component case, test if a prefix is a function call and whether
+ the subprogram call is not being used in its entirety and use
+ the Innermost_Master_Scope_Depth in that case.
+ (Innermost_Master_Scope_Depth): Test against the node_par
+ instead of its identifier to avoid misattributing unnamed blocks
+ as not being from source.
+ (Function_Call_Level): Add calculation for whether a subprogram
+ call is initializing an object in its entirety.
+ (Subprogram_Call_Level): Renamed to Function_Call_Level.
+
+2020-10-23 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Check_External_Properties): Rewrite to match the
+ SPARK RM description.
+
+2020-10-23 Piotr Trojanek <trojanek@adacore.com>
+
+ * contracts.adb (Check_Type_Or_Object_External_Properties):
+ Cleanup.
+
+2020-10-23 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Analyze_External_Property_In_Decl_Part): Set the
+ output parameter Expr_Val to the (implicit) pragma argument even
+ when returning early.
+
+2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (GNATRTL_128BIT_PAIRS): Add i-cexten.ads.
+ * debug.adb (d.H): Document new usage.
+ * doc/gnat_rm/representation_clauses_and_pragmas.rst (Size Clauses):
+ Document new limit on 64-bit platforms.
+ (Component_Size Clauses): Likewise.
+ (Pragma Pack for Arrays): Likewise.
+ (Pragma Pack for Records): Likewise.
+ (Record Representation Clauses): Likewise.
+ * gnat_rm.texi: Regenerate.
+ * gnat1drv.adb (Adjust_Global_Switches): Rewrite code enabling or
+ disabling the support for 128-bit integer types.
+ * switch-c.adb (Scan_Front_End_Switches): Do not deal with e128.
+ * usage.adb (Write_Switch_Char): Do not print -gnate128 switch.
+ * libgnat/i-cexten__128.ads: New file.
+
+2020-10-22 Javier Miranda <miranda@adacore.com>
+
+ * einfo.ads (Has_Limited_View): New synthesized attribute.
+ * einfo.adb (Has_Limited_View): New synthesized attribute.
+ (Set_Limited_View): Complete assertion.
+ * sem_ch10.ads (Is_Visible_Through_Renamings): Make this routine
+ public to invoke it from Find_Expanded_Name and avoid reporting
+ spurious errors on renamings of limited-with packages.
+ (Load_Needed_Body): Moved to have this spec alphabetically
+ ordered.
+ * sem_ch10.adb (Is_Visible_Through_Renamings): Moved to library
+ level.
+ (Is_Limited_Withed_Unit): New subprogram.
+ * sem_ch3.adb (Access_Type_Declaration): Adding protection to
+ avoid reading attribute Entity() when not available.
+ * sem_ch8.adb (Analyze_Package_Renaming): Report error on
+ renamed package not visible through context clauses.
+ (Find_Expanded_Name): Report error on renamed package not
+ visible through context clauses; handle special case where the
+ prefix is a renaming of a (now visible) shadow package.
+
+2020-10-22 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * exp_prag.adb (Get_Launch_Kernel_Arg_Type): New function.
+ (Build_Shared_Memory_Declaration): Use
+ Get_Launch_Kernel_Arg_Type.
+ (Build_Stream_Declaration): Use Get_Launch_Kernel_Arg_Type.
+ * rtsfind.ads: Remove RO_IC_Unsigned_Long_Long.
+
+2020-10-22 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-imenne.adb, libgnat/s-imgrea.adb: Add assertions.
+
+2020-10-22 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-imgrea.adb (Set_Image_Real): Update annotations.
+
+2020-10-22 Steve Baird <baird@adacore.com>
+
+ * aspects.ads: Introduce the subtype Nonoverridable_Aspect_Id,
+ whose Static_Predicate reflects the list of nonoverridable
+ aspects given in Ada RM 13.1.1(18.7).
+ * sem_util.ads, sem_util.adb: Add two new visible subprograms,
+ Check_Inherited_Nonoverridable_Aspects and Is_Confirming. The
+ former is used to check the consistency of inherited
+ nonoverridable aspects from multiple sources. The latter
+ indicates whether two aspect specifications for a nonoverridable
+ aspect are confirming. Because of compatibility concerns in
+ compiling QGen, Is_Confirming always returns True if
+ Relaxed_RM_Semantics (i.e., -gnatd.M) is specified.
+ * sem_ch3.adb (Derived_Type_Declaration): Call new
+ Check_Inherited_Nonoverridable_Aspects procedure if interface
+ list is non-empty.
+ * sem_ch9.adb (Check_Interfaces): Call new
+ Check_Inherited_Nonoverridable_Aspects procedure if interface
+ list is non-empty.
+ * sem_ch13.adb (Analyze_Aspect_Specifications): When an explicit
+ aspect specification overrides an inherited nonoverridable
+ aspect, check that the explicit specification is confirming.
+
+2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * freeze.ads (Check_Compile_Time_Size): Adjust size limit.
+
+2020-10-22 Richard Kenner <kenner@adacore.com>
+
+ * sprint.adb (pg, po, ps): Use {Push,Pop}_Output.
+ * treepr.adb (pl, pn): Likewise.
+
+2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_rm/implementation_advice.rst: Minor fix.
+ * gnat_rm.texi: Regenerate.
+
+2020-10-22 Steve Baird <baird@adacore.com>
+
+ * sem_util.adb (Is_Container_Aggregate): A new local predicates
+ which indicates whether a given expression is a container
+ aggregate. The implementation of this function is incomplete; in
+ the unusual case of a record aggregate (i.e., not a container
+ aggregate) of a type whose Aggregate aspect is specified, the
+ function will incorrectly return True.
+ (Immediate_Context_Implies_Is_Potentially_Unevaluated): Improve
+ handling of aggregate components.
+ (Is_Repeatedly_Evaluated): Test for container aggregate
+ components along with existing test for array aggregate
+ components.
+
+2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_fixd.adb (Fpt_Value): Fold if-then-else with identical arms.
+
+2020-10-22 Ed Schonberg <schonberg@adacore.com>
+
+ * par-ch4.adb (P_Iterated_Component_Association): If the
+ construct includes an iterator filter it corresponds to an
+ Iterated_Element_Association, so build the proper node for it.
+ * exp_aggr.adb (Expand_Container_Aggregate, Aggregate_Size): If
+ the component is an Iterated_Element_Association, treat it as
+ having a non-static size.
+
+2020-10-22 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * scng.adb (Scan): Check if any letter of the token is
+ uppercase.
+
+2020-10-22 Justin Squirek <squirek@adacore.com>
+
+ * sem_util.adb (Accessibility_Level_Helper): Conversions to
+ named access types get the level associated with the named
+ access type.
+
+2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (Has_Constrained_Partial_View): Add "base type" marker.
+
+2020-10-22 Gary Dismukes <dismukes@adacore.com>
+
+ * einfo.adb (Has_Constrained_Partial_View): Apply Base_Type to Id.
+ * sem_res.adb (Resolve_Actuals.Check_Aliased_Parameter): Remove
+ "not Is_Generic_Type" test and call
+ Object_Type_Has_Constrained_Partial_View instead of
+ Has_Constrained_Partial_View. Improve related error message to
+ say "does not statically match" instead of just "does not
+ match".
+
+2020-10-22 Steve Baird <baird@adacore.com>
+
+ * sem_util.ads, sem_util.adb: Declare and implement a new
+ predicate, Derivation_Too_Early_To_Inherit. This function
+ indicates whether a given derived type fails to inherit a given
+ streaming-related attribute from its parent type because the
+ declaration of the derived type precedes the corresponding
+ attribute_definition_clause of the parent.
+ * exp_tss.adb (Find_Inherited_TSS): Call
+ Derivation_Too_Early_To_Inherit instead of unconditionally
+ assuming that a parent type's streaming attribute is available
+ for inheritance by an immediate descendant type.
+ * sem_attr.adb (Stream_Attribute_Available): Call
+ Derivation_Too_Early_To_Inherit instead of unconditionally
+ assuming that a parent type's streaming attribute is available
+ for inheritance by an immediate descendant type.
+ * exp_attr.adb (Default_Streaming_Unavailable): A new predicate;
+ given a type, indicates whether predefined (as opposed to
+ user-defined) streaming operations for the type should be
+ implemented by raising Program_Error.
+ (Expand_N_Attribute_Reference): For each of the 4
+ streaming-related attributes (i.e., Read, Write, Input, Output),
+ after determining that no user-defined implementation is
+ available (including a Stream_Convert pragma), call
+ Default_Streaming_Unavailable; if that call returns True, then
+ implement the streaming operation as "raise Program_Error;".
+
+2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.adb (Apply_Float_Conversion_Check): Saturate the bounds
+ of the check to those of the base type of the expression.
+
+2020-10-22 Justin Squirek <squirek@adacore.com>
+
+ * checks.adb (Apply_Accessibility_Check): Modify condition to
+ avoid flawed optimization and use Get_Accessibility over
+ Extra_Accessibility.
+ * exp_attr.adb: Remove inclusion of Exp_Ch2.adb.
+ * exp_ch2.adb, exp_ch2.ads (Param_Entity): Moved to sem_util.
+ * exp_ch3.ads (Init_Proc_Level_Formal): New function.
+ * exp_ch3.adb (Build_Init_Procedure): Add extra accessibility
+ formal for init procs when the associated type is a limited
+ record.
+ (Build_Initialization_Call): Add condition to handle propagation
+ of the new extra accessibility paramter actual needed for init
+ procs.
+ (Init_Proc_Level_Formal): Created to fetch a the extra
+ accessibility parameter associated with init procs if one
+ exists.
+ * exp_ch4.adb (Build_Attribute_Reference): Modify static check
+ to be dynamic.
+ * exp_ch6.adb (Add_Cond_Expression_Extra_Actual): Move logic
+ used to expand conditional expressions used as actuals for
+ anonymous access formals.
+ (Expand_Call_Helper): Remove extranious accessibility
+ calculation logic.
+ * exp_util.adb: Remove inclusion of Exp_Ch2.adb.
+ * par-ch3.adb (P_Array_Type_Definition): Properly set
+ Aliased_Present on access definitions
+ * sem_attr.adb (Resolve_Attribute): Replace instances for
+ Object_Access_Level with Static_Accessibility_Level.
+ * sem_ch13.adb (Storage_Pool): Replace instances for
+ Object_Access_Level with Static_Accessibility_Level.
+ * sem_ch6.adb (Check_Return_Construct_Accessibility): Replace
+ instances for Object_Access_Level with
+ Static_Accessibility_Level.
+ * sem_ch9.adb (Analyze_Requeue): Replace instances for
+ Object_Access_Level with Static_Accessibility_Level.
+ * sem_res.adb (Check_Aliased_Parameter,
+ Check_Allocator_Discrim_Accessibility, Valid_Conversion):
+ Replace instances for Object_Access_Level with
+ Static_Accessibility_Level.
+ * sem_util.adb, sem_util.ads (Accessibility_Level_Helper):
+ Created to centralize calculation of accessibility levels.
+ (Build_Component_Subtype): Replace instances for
+ Object_Access_Level with Static_Accessibility_Level.
+ (Defining_Entity): Add extra parameter to dictate whether an
+ error is raised or empty is return in the case of an irrelevant
+ N.
+ (Dynamic_Accessibility_Level): Rewritten to use
+ Accessibility_Level_Helper.
+ (Is_View_Conversion): Check membership against Etype to capture
+ nodes like explicit dereferences which have types but are not
+ expanded names or identifers.
+ (Object_Access_LeveL): Removed.
+ (Param_Entity): Moved from sem_util.
+ (Static_Accessibility_Level): Created as a replacement to
+ Object_Access_Level, it also uses Accessibility_Level_Helper for
+ its implementation.
+ * snames.ads-tmpl: Added new name for extra accessibility
+ parameter in init procs.
+
+2020-10-22 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_prag.adb (Expand_Pragma_Contract_Cases,
+ Expand_Pragma_Loop_Variant): Reuse Append_New_To.
+ * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
+ (Analyze_Pre_Post_Condition): Refactor repeated calls to
+ Defining_Entity.
+
+2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_characteristics.rst: Minor
+ fixes.
+ * gnat_rm.texi: Regenerate.
+
+2020-10-22 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_warn.adb (Check_Unused_Withs): Move local variables from
+ to a nested procedure; Lunit is passed as a parameter to
+ Check_System_Aux and its type is refined from Node_Id to
+ Entity_Id; Cnode is now a constant.
+
+2020-10-22 Patrick Bernardi <bernardi@adacore.com>
+
+ * libgnat/s-rident.ads (Profile_Info): Use a common profile
+ definition for Jorvik and GNAT Extended Ravenscar, using the
+ GNAT Extended Ravenscar definition.
+
+2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (64-bit platforms): Add GNATRTL_128BIT_PAIRS to
+ the LIBGNAT_TARGET_PAIRS list and also GNATRTL_128BIT_OBJS to
+ the EXTRA_GNATRTL_NONTASKING_OBJS list.
+
+2020-10-22 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_prag.adb (Process_Convention,
+ Process_Import_Or_Interface): Fix error message.
+
+2020-10-22 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_ch13.adb (Make_Aitem_Pragma): Turn into function. This
+ removes a side-effect on the Aitem variable.
+ (Analyze_Aspect_Specifications): Handle Suppress and Unsuppress
+ aspects differently from the Linker_Section aspect.
+ (Ceck_Aspect_At_Freeze_Point): Don't expect Suppress/Unsuppress
+ to be delayed anymore.
+
+2020-10-22 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_aggr.adb: (Resolve_Container_Aggregate): For an indexed
+ container, verify that expressions and component associations
+ are not both present.
+ * exp_aggr.adb: Code reorganization, additional comments.
+ (Expand_Container_Aggregate): Use Aggregate_Size for Iterated_
+ Component_Associations for indexed aggregates. If present, the
+ default value of the formal in the constructor function is used
+ when the size of the aggregate cannot be determined statically.
+
+2020-10-22 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_attr.adb (Eval_Attribute): Fix oversight for Bit_Position.
+
+2020-10-22 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Check_Ambiguous_Aggregate): When a
+ subprogram call is found to be ambiguous, check whether
+ ambiguity is caused by an aggregate actual. and indicate that
+ it should carry a type qualification.
+ * sem_ch4.adb (Traverse_Hoonyms, Try_Primitive_Operation): Call
+ it.
+ * sem_res.adb (Report_Ambiguous_Argument): Call it.
+
+2020-10-22 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_warn.adb (Check_One_Unit): Avoid repeated calls by using a
+ local variable Lunit; remove local constant Eitem, which was
+ identical to Lunit.
+
+2020-10-22 Alexandre Oliva <oliva@adacore.com>
+
+ * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <x86*-vxworks*>: Select
+ nolibm and wraplf variants like other vxworks ports.
+
+2020-10-22 Martin Liska <mliska@suse.cz>
+
+ PR c/94722
+ * gcc-interface/utils.c (handle_no_stack_protect_attribute):
+ New.
+ (handle_stack_protect_attribute): Add error message for a
+ no_stack_protector function.
+
+2020-10-22 Alexandre Oliva <oliva@adacore.com>
+
+ * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <lynxos178>: Rely on
+ Aux_Long_Float for all real types.
+
+2020-10-22 Alexandre Oliva <oliva@adacore.com>
+
+ * Makefile.rtl (LIBGNAT_TARGET_PAIRS): Use Long Float-based
+ variant of Aux_Short_Float and Aux_Float on vxworks targets.
+ * libgnat/a-nashfl__wraplf.ads: New.
+ * libgnat/a-nuaufl__wraplf.ads: New.
+
+2020-10-22 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
+ * Makefile.rtl (LIBGNAT_TARGET_PAIRS) <sparc*-sun-solaris>:
+ Use wraplf version of a-nallfl.
+
+2020-10-22 Alexandre Oliva <oliva@adacore.com>
+
+ * Makefile.rtl (LIBGNAT_TARGET_PAIRS): Use
+ a-nallfl__wraplf.ads on aarch64-* and ppc*-linux-gnu targets.
+ * libgnat/a-nallfl__wraplf.ads: New.
+
+2020-10-22 Jan Hubicka <hubicka@ucw.cz>
+
+ * gcc-interface/trans.c: Include tree-nested.h
+ (walk_nesting_tree): Update for new nested function info.
+
+2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add a-llltio, a-lllwti,
+ a-lllzti and remove a-timoau, a-wtmoau and a-ztmoau.
+ (GNATRTL_128BIT_PAIRS): Add a-tiinio.adb, a-timoio.adb, a-wtinio.adb,
+ a-wtmoio.adb, a-ztinio.adb and a-ztmoio.adb.
+ * impunit.adb (Non_Imp_File_Names_95): Add a-llltio, a-lllwti and
+ a-lllzti.
+ * krunch.ads: Document trick for Ada.Long_Long_Long_Integer_*_IO.
+ * krunch.adb (Krunch): Add trick for Ada.Long_Long_Long_Integer_*_IO.
+ * libgnat/a-llltio.ads: Instantiate Ada.Text_IO.Integer_IO.
+ * libgnat/a-lllwti.ads: Instantiate Ada.Wide_Text_IO.Integer_IO.
+ * libgnat/a-lllzti.ads: Instantiate Ada.Wide_Wide_Text_IO.Integer_IO.
+ * libgnat/a-tigeau.ads (Load_Integer): New procedure.
+ * libgnat/a-tigeau.adb (Load_Integer): Likewise.
+ * libgnat/a-tiinau.ads, libgnat/a-tiinau.adb: Change to generic
+ package.
+ * libgnat/a-tiinio.adb: Instantiate it.
+ * libgnat/a-tiinio__128.adb: Likewise.
+ * libgnat/a-timoau.ads, libgnat/a-timoau.adb: Change to generic
+ package.
+ * libgnat/a-timoio.adb: Instantiate it.
+ * libgnat/a-timoio__128.adb: Likewise.
+ * libgnat/a-wtgeau.ads (Load_Integer): New procedure.
+ * libgnat/a-wtgeau.adb (Load_Integer): Likewise.
+ * libgnat/a-wtinau.ads, libgnat/a-wtinau.adb: Change to generic
+ package.
+ * libgnat/a-wtinio.adb: Instantiate it.
+ * libgnat/a-wtinio__128.adb: Likewise.
+ * libgnat/a-wtmoau.ads, libgnat/a-wtmoau.adb: Change to generic
+ package.
+ * libgnat/a-wtmoio.adb: Instantiate it.
+ * libgnat/a-wtmoio__128.adb: Likewise.
+ * libgnat/a-ztgeau.ads (Load_Integer): New procedure.
+ * libgnat/a-ztgeau.adb (Load_Integer): Likewise.
+ * libgnat/a-ztinau.ads, libgnat/a-ztinau.adb: Change to generic
+ package.
+ * libgnat/a-ztinio.adb: Instantiate it.
+ * libgnat/a-ztinio__128.adb: Likewise.
+ * libgnat/a-ztmoau.ads, libgnat/a-ztmoau.adb: Change to generic
+ package.
+ * libgnat/a-ztmoio.adb: Instantiate it.
+ * libgnat/a-ztmoio__128.adb: Likewise.
+
+2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch12.adb (Freeze_Subprogram_Body): Do not move the freeze
+ node of the package body enclosing the instance when its parent
+ is in the same declarative part as the freeze node of the parent.
+
+2020-10-21 Steve Baird <baird@adacore.com>
+
+ * exp_ch6.adb (Insert_Post_Call_Actions): When a function's
+ result type requires finalization and we decide to make copy of
+ a call to the function and subsequently refer only to the copy,
+ then don't forget to finalize the original function result
+ object.
+
+2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-widint,
+ s-widthi, s-widuns, s-widuns.
+ (GNATRTL_128BIT_OBJS): Add s-imglllb, s-imgllli, s-imglllu, s-imglllw,
+ s-valllli, s-vallllu, s-widllli, s-widlllu.
+ * exp_imgv.adb (Expand_Image_Attribute): Deal with 128-bit types.
+ (Expand_Value_Attribute): Likewise.
+ (Expand_Width_Attribute): Likewise.
+ * exp_put_image.adb (Build_Elementary_Put_Image_Call): Likewise.
+ * krunch.adb (Krunch): Deal with s-img, s-val and s-wid prefixes.
+ * rtsfind.ads (RTU_Id): Add System_Img_LLLI, System_Img_LLLU,
+ System_Val_LLLI, System_Val_LLL, System_Wid_Int, System_Wid_LLLI,
+ System_Wid_LLLU, System_Wid_Uns).
+ (RE_Id): Add RE_Image_Long_Long_Long_Integer,
+ RE_Image_Long_Long_Long_Unsigned,
+ RE_Put_Image_Long_Long_Long_Integer,
+ RE_Put_Image_Long_Long_Long_Unsigned,
+ RE_Long_Long_Long_Unsigned, RE_Value_Long_Long_Long_Integer,
+ RE_Value_Long_Long_Long_Unsigned, RE_Width_Integer,
+ RE_Width_Long_Long_Long_Integer, RE_Width_Long_Long_Long_Unsigned,
+ RE_Width_Unsigned, RE_Image_Long_Long_Long_Integer,
+ RE_Image_Long_Long_Long_Unsigned, RE_Put_Image_Long_Long_Long_Integer,
+ RE_Put_Image_Long_Long_Long_Unsigned, RE_Long_Long_Long_Unsigned,
+ RE_Value_Long_Long_Long_Integer, RE_Value_Long_Long_Long_Unsigned,
+ RE_Width_Integer, RE_Width_Long_Long_Long_Integer,
+ RE_Width_Long_Long_Long_Unsigned, RE_Width_Unsigned.
+ * libgnat/s-imageb.ads, libgnat/s-imageb.adb: New generic
+ package.
+ * libgnat/s-imagei.ads, libgnat/s-imagei.adb: Likewise.
+ * libgnat/s-imageu.ads, libgnat/s-imageu.adb: Likewise.
+ * libgnat/s-imagew.ads, libgnat/s-imagew.adb: Likewise.
+ * libgnat/s-imgbiu.ads: Instantiate System.Image_B.
+ * libgnat/s-imgbiu.adb: Add pragma No_Body.
+ * libgnat/s-imgint.ads: Instantiate System.Image_I.
+ * libgnat/s-imgint.adb: Add pragma No_Body.
+ * libgnat/s-imgllb.ads: Instantiate System.Image_B.
+ * libgnat/s-imgllb.adb: Add pragma No_Body0
+ * libgnat/s-imglli.ads: Instantiate System.Image_I.
+ * libgnat/s-imglli.adb: Add pragma No_Body.
+ * libgnat/s-imglllb.ads: Instantiate System.Image_B.
+ * libgnat/s-imgllli.ads: Instantiate System.Image_I.
+ * libgnat/s-imglllu.ads: Instantiate System.Image_U.
+ * libgnat/s-imglllw.ads: Instantiate System.Image_W.
+ * libgnat/s-imgllu.ads: Instantiate System.Image_U.
+ * libgnat/s-imgllu.adb: Add pragma No_Body.
+ * libgnat/s-imgllw.ads: Instantiate System.Image_W.
+ * libgnat/s-imgllw.adb: Add pragma No_Body.
+ * libgnat/s-imgrea.adb: Remove clauses for System.Unsigned_Types.
+ * libgnat/s-imguns.ads: Instantiate System.Image_U.
+ * libgnat/s-imguns.adb: Add pragma No_Body.
+ * libgnat/s-imgwiu.ads: Instantiate System.Image_W.
+ * libgnat/s-imgwiu.adb: Add pragma No_Body.
+ * libgnat/s-putima.ads (Long_Long_Long_Unsigned): New subtype.
+ (Put_Image_Long_Long_Long_Unsigned): New procedure.
+ * libgnat/s-putima.adb (Small): Rename to Integer_Images.
+ (Large): Rename to LL_Integer_Images.
+ (LLL_Integer_Images): New instantiation.
+ (Put_Image_Long_Long_Long_Integer): New renaming.
+ (Put_Image_Long_Long_Long_Unsigned): Likewise.
+ * libgnat/s-valint.ads: Instantiate System.Value_I.
+ * libgnat/s-valint.adb: Add pragma No_Body.
+ * libgnat/s-vallli.ads: Instantiate System.Value_I.
+ * libgnat/s-vallli.adb: Add pragma No_Body.
+ * libgnat/s-valllli.ads: Instantiate System.Value_I.
+ * libgnat/s-vallllu.ads: Instantiate System.Value_U.
+ * libgnat/s-valllu.ads: Instantiate System.Value_U.
+ * libgnat/s-valllu.adb: Add pragma No_Body.
+ * libgnat/s-valuei.ads, libgnat/s-valuei.adb: New generic
+ package.
+ * libgnat/s-valueu.ads, libgnat/s-valueu.adb: Likewise.
+ * libgnat/s-valuns.ads: Instantiate System.Value_U.
+ * libgnat/s-valuns.adb: Add pragma No_Body.
+ * libgnat/s-widint.ads: Instantiate System.Width_I.
+ * libgnat/s-widlli.ads: Likewise.
+ * libgnat/s-widlli.adb: Add pragma No_Body.
+ * libgnat/s-widllli.ads: Instantiate System.Width_I.
+ * libgnat/s-widlllu.ads: Instantiate System.Width_U.
+ * libgnat/s-widllu.ads: Likewise.
+ * libgnat/s-widllu.adb: Add pragma No_Body.
+ * libgnat/s-widthi.ads, libgnat/s-widthi.adb: New generic
+ package.
+ * libgnat/s-widthu.ads, libgnat/s-widthu.adb: Likewise.
+ * libgnat/s-widuns.ads: Instantiate System.Width_U.
+
+2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * set_targ.adb (DTN): Fix oversight.
+ (Read_Target_Dependent_Values): Do not error out on missing
+ Long_Long_Long_Size entry and reuse Long_Long_Size for it.
+
+2020-10-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_aggr.adb (Gen_Loop): Analyze copy of the expression in the
+ scope of the implicit loop with name of the index parameter
+ visible.
+
+2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (GNATRTL_128BIT_PAIRS): New variable.
+ (GNATRTL_128BIT_OBJS): Likewise.
+ (Windows): In 64-bit mode, add the former to LIBGNAT_TARGET_PAIRS and
+ the latter to EXTRA_GNATRTL_NONTASKING_OBJS.
+ (x86_64/linux): Likewise, but unconditionally.
+ (GNATRTL_NONTASKING_OBJS): Add s-aridou, s-exponn, s-expont,
+ s-exponu.
+ * ada_get_targ.adb (Get_Long_Long_Long_Size): New function.
+ * checks.adb (Apply_Arithmetic_Overflow_Strict): Use Integer_Type_For
+ to find an appropriate integer type; if it does not exist and the max
+ integer size is larger than 64, use the 128-bit arithmetic routines.
+ * cstand.adb (Create_Standard): Build Standard_Long_Long_Long_Integer
+ and its base type. Use it for Etype of Any_Integer, Any_Modular and
+ Any_Numeric. Use its size for Build Standard_Long_Long_Long_Unsigned
+ and Universal_Integer.
+ (Print_Standard): Print Long_Long_Long_Integer.
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Mod>: Adjust
+ comment.
+ * exp_ch3.adb (Simple_Init_Initialize_Scalars_Type): Deal with 128-bit
+ types.
+ * exp_ch4.adb (Expand_Array_Comparison): Likewise.
+ (Expand_N_Op_Expon): Likewise.
+ (Narrow_Large_Operation): Likewise.
+ * exp_dbug.adb (Bounds_Match_Size): Handle 128-bit size.
+ * exp_fixd.adb (Build_Double_Divide_Code): Use RE_Double_Divide64.
+ * exp_intr.adb (Expand_Binary_Operator_Call): Handle 128-bit size.
+ * exp_pakd.ads (E_Array): Extend range to 127.
+ (Bits_Id): Fill in up to 127.
+ (Get_Id): Likewise.
+ (GetU_Id): Likewise.
+ (Set_Id): Likewise.
+ (SetU_Id): Likewise.
+ * exp_pakd.adb (Revert_Storage_Order): Handle 128-bit size.
+ * exp_util.adb (Integer_Type_For): Likewise.
+ (Small_Integer_Type_For): Likewise.
+ * fname.adb (Is_Predefined_File_Name): Do not return False for names
+ larger than 12 characters if they start with "s-".
+ * freeze.adb (Adjust_Esize_For_Alignment): Change the maximum value
+ to System_Max_Integer_Size.
+ (Check_Suspicious_Modulus): Adjust comment.
+ (Freeze_Entity): Likewise.
+ * get_targ.ads (Get_Long_Long_Long_Size): New function.
+ * get_targ.adb (Get_Long_Long_Long_Size): Likewise.
+ (Width_From_Size): Deal with 128-bit size.
+ * gnat1drv.adb (Adjust_Global_Switches): Deal with 128-bit types.
+ * impunit.adb (Get_Kind_Of_File): Bump buffer size. Accept files with
+ 13 characters if they start with 's'. Compare slice of Buffer.
+ (Not_Impl_Defined_Unit): Accept files with 13 characters if they start
+ with 's'.
+ * krunch.ads: Document length for 128-bit support units.
+ * krunch.adb (Krunch): Set length to 9 for 128-bit support units.
+ * layout.adb (Layout_Type): Use System_Max_Integer_Size as alignment
+ limit.
+ * rtsfind.ads (RTU_Id): Add System_Arith_128,
+ System_Compare_Array_Signed_128, System_Compare_Array_Unsigned_128,
+ System_Exn_LLLI, System_Exp_LLLU, System_Pack_[65..127].
+ (RE_Id): Add RE_Integer_128, RE_Unsigned_128, RE_Add_With_Ovflo_Check128
+ RE_Multiply_With_Ovflo_Check128, RE_Subtract_With_Ovflo_Check128,
+ RE_Bswap_128, RE_Compare_Array_S128, RE_Compare_Array_U128,
+ RE_Exn_Long_Long_Long_Integer, RE_Exp_Long_Long_Long_Integer,
+ RE_Exp_Long_Long_Long_Unsigned, RE_Bits_[65-127], RE_Get_[65-127],
+ RE_Set_[65-127], RE_IS_Is16, RE_IS_Iu16, RE_Integer_128 and
+ RE_Unsigned_128. Rename RE_Add_With_Ovflo_Check, RE_Double_Divide,
+ RE_Multiply_With_Ovflo_Check, RE_Scaled_Divide and
+ RE_Subtract_With_Ovflo_Check. Remove RE_IS_Iz1, RE_IS_Iz2, RE_IS_Iz4,
+ RE_IS_Iz8, RE_Long_Unsigned, RE_Short_Unsigned, RE_Short_Short_Unsigned
+ (RE_Unit_Table): Likewise.
+ * sem_aux.adb (Corresponding_Unsigned_Type): Deal with a size equal to
+ that of Standard_Long_Long_Long_Integer.
+ (First_Subtype): Deal with Standard_Long_Long_Long_Integer'Base.
+ * sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Attribute_Size>:
+ Check the size against powers of 2 and System_Max_Integer_Size for
+ objects as well.
+ (Set_Enum_Esize): Deal with 128-bit bounds.
+ * sem_ch3.adb (Set_Modular_Size): Handle 128-bit size.
+ (Modular_Type_Declaration): Deal with 128-bit types.
+ (Signed_Integer_Type_Declaration): Support derivation from
+ Standard_Long_Long_Long_Integer.
+ * sem_ch4.adb (Analyze_Mod): Handle 128-bit modulus.
+ * sem_intr.adb: Add with and use clauses for Ttypes.
+ (Check_Shift): Handle 128-bit size and modulus.
+ * sem_prag.adb (Analyze_Pragma) <Pragma_Initialize_Scalars>: Deal
+ with Signed_128 and Unsigned_128.
+ (Analyze_Integer_Value): Handle 128-bit size.
+ * sem_util.ads (Addressable): Adjust description.
+ * sem_util.adb (Addressable): Return true for 128 if the system
+ supports 128 bits.
+ (Set_Invalid_Binder_Values): Deal with Signed_128 and Unsigned_128.
+ * set_targ.ads (Long_Long_Long_Size): New variable.
+ * set_targ.adb (S_Long_Long_Long_Size): New constant.
+ (DTN): Add entry for S_Long_Long_Long_Size.
+ (DTV): Add entry for Long_Long_Long_Size.
+ (Set_Targ): Set Long_Long_Long_Size.
+ * snames.ads-tmpl (Name_Max_Integer_Size): New attribute name.
+ (Name_Signed_128): New scalar name.
+ (Name_Unsigned_128): Likewise.
+ (Scalar_Id): Adjust.
+ (Integer_Scalar_Id): Likewise.
+ (Attribute_Id): Add Attribute_Max_Integer_Size.
+ * stand.ads (Standard_Entity_Type): Add S_Long_Long_Long_Integer.
+ (Standard_Long_Long_Long_Integer): New renaming.
+ (Universal_Integer): Adjust description.
+ (Standard_Long_Long_Long_Unsigned): New variable.
+ * switch-c.adb (Scan_Front_End_Switches): Deal with -gnate128.
+ * ttypes.ads (Standard_Long_Long_Long_Integer_Size): New variable.
+ (Standard_Long_Long_Long_Integer_Width): Likewise.
+ (System_Max_Integer_Size): Turn into variable.
+ (System_Max_Binary_Modulus_Power): Likewise.
+ * uintp.ads (Uint_127): New constant.
+ * uintp.adb (UI_Power_2): Extednd to 128.
+ (UI_Power_10): Likewise.
+ (UI_Expon): Deal with exponent up to 128 specially.
+ * usage.adb (Write_Switch_Char): Print -gnate128 switch.
+ * libgnat/a-tifiio.adb (Put_Scaled): Call Scaled_Divide64.
+ * libgnat/interfac__2020.ads (Integer_128): New integer type.
+ (Unsigned_128): New modular type.
+ (Shift_Left, Shift_Right, Shift_Right_Arithmetic, Rotate_Left,
+ Rotate_Right): New intrinsic functions operating on it.
+ * libgnat/s-aridou.ads, libgnat/s-aridou.adb: New generic
+ package.
+ * libgnat/s-arit64.ads, libgnat/s-arit64.adb: Instantiate
+ System.Arithmetic_Double.
+ * libgnat/s-arit128.ads, libgnat/s-arit128.adb: Likewise.
+ * libgnat/s-bytswa.ads: Add with clause for Interfaces, use subtypes
+ of unsigned types defined in Interfaces and add Bswap_128.
+ * libgnat/s-casi128.ads, libgnat/s-casi128.adb: New package.
+ * libgnat/s-caun128.ads, libgnat/s-caun128.adb: Likewise.
+ * libgnat/s-exnint.ads: Instantiate System.Exponn.
+ * libgnat/s-exnint.adb: Add pragma No_Body.
+ * libgnat/s-exnlli.ads: Instantiate System.Exponn.
+ * libgnat/s-exnlli.adb: Add pragma No_Body.
+ * libgnat/s-exnllli.ads: Instantiate System.Exponn.
+ * libgnat/s-expint.ads: Likewise.
+ * libgnat/s-expint.adb: Add pragma No_Body.
+ * libgnat/s-explli.ads: Instantiate System.Exponn.
+ * libgnat/s-explli.adb: Add pragma No_Body.
+ * libgnat/s-expllli.ads: Instantiate System.Exponn.
+ * libgnat/s-explllu.ads: Instantiate System.Exponu.
+ * libgnat/s-expllu.ads: Likewise.
+ * libgnat/s-expllu.adb: Add pragma No_Body.
+ * libgnat/s-exponn.ads, libgnat/s-exponn.adb: New generic
+ function.
+ * libgnat/s-expont.ads, libgnat/s-expont.adb: Likewise.
+ * libgnat/s-exponu.ads, libgnat/s-exponu.adb: Likewise.
+ * libgnat/s-expuns.ads, libgnat/s-expuns.adb: Likewise.
+ * libgnat/s-pack65.ads, libgnat/s-pack65.adb: New package.
+ * libgnat/s-pack66.ads, libgnat/s-pack66.adb: New package.
+ * libgnat/s-pack67.ads, libgnat/s-pack67.adb: New package.
+ * libgnat/s-pack68.ads, libgnat/s-pack68.adb: New package.
+ * libgnat/s-pack69.ads, libgnat/s-pack69.adb: New package.
+ * libgnat/s-pack70.ads, libgnat/s-pack70.adb: New package.
+ * libgnat/s-pack71.ads, libgnat/s-pack71.adb: New package.
+ * libgnat/s-pack72.ads, libgnat/s-pack72.adb: New package.
+ * libgnat/s-pack73.ads, libgnat/s-pack73.adb: New package.
+ * libgnat/s-pack74.ads, libgnat/s-pack74.adb: New package.
+ * libgnat/s-pack75.ads, libgnat/s-pack75.adb: New package.
+ * libgnat/s-pack76.ads, libgnat/s-pack76.adb: New package.
+ * libgnat/s-pack77.ads, libgnat/s-pack77.adb: New package.
+ * libgnat/s-pack78.ads, libgnat/s-pack78.adb: New package.
+ * libgnat/s-pack79.ads, libgnat/s-pack79.adb: New package.
+ * libgnat/s-pack80.ads, libgnat/s-pack80.adb: New package.
+ * libgnat/s-pack81.ads, libgnat/s-pack81.adb: New package.
+ * libgnat/s-pack82.ads, libgnat/s-pack82.adb: New package.
+ * libgnat/s-pack83.ads, libgnat/s-pack83.adb: New package.
+ * libgnat/s-pack84.ads, libgnat/s-pack84.adb: New package.
+ * libgnat/s-pack85.ads, libgnat/s-pack85.adb: New package.
+ * libgnat/s-pack86.ads, libgnat/s-pack86.adb: New package.
+ * libgnat/s-pack87.ads, libgnat/s-pack87.adb: New package.
+ * libgnat/s-pack88.ads, libgnat/s-pack88.adb: New package.
+ * libgnat/s-pack89.ads, libgnat/s-pack89.adb: New package.
+ * libgnat/s-pack90.ads, libgnat/s-pack90.adb: New package.
+ * libgnat/s-pack91.ads, libgnat/s-pack91.adb: New package.
+ * libgnat/s-pack92.ads, libgnat/s-pack92.adb: New package.
+ * libgnat/s-pack93.ads, libgnat/s-pack93.adb: New package.
+ * libgnat/s-pack94.ads, libgnat/s-pack94.adb: New package.
+ * libgnat/s-pack95.ads, libgnat/s-pack95.adb: New package.
+ * libgnat/s-pack96.ads, libgnat/s-pack96.adb: New package.
+ * libgnat/s-pack97.ads, libgnat/s-pack97.adb: New package.
+ * libgnat/s-pack98.ads, libgnat/s-pack98.adb: New package.
+ * libgnat/s-pack99.ads, libgnat/s-pack99.adb: New package.
+ * libgnat/s-pack100.ads, libgnat/s-pack100.adb: New package.
+ * libgnat/s-pack101.ads, libgnat/s-pack101.adb: New package.
+ * libgnat/s-pack102.ads, libgnat/s-pack102.adb: New package.
+ * libgnat/s-pack103.ads, libgnat/s-pack103.adb: New package.
+ * libgnat/s-pack104.ads, libgnat/s-pack104.adb: New package.
+ * libgnat/s-pack105.ads, libgnat/s-pack105.adb: New package.
+ * libgnat/s-pack106.ads, libgnat/s-pack106.adb: New package.
+ * libgnat/s-pack107.ads, libgnat/s-pack107.adb: New package.
+ * libgnat/s-pack108.ads, libgnat/s-pack108.adb: New package.
+ * libgnat/s-pack109.ads, libgnat/s-pack109.adb: New package.
+ * libgnat/s-pack110.ads, libgnat/s-pack110.adb: New package.
+ * libgnat/s-pack111.ads, libgnat/s-pack111.adb: New package.
+ * libgnat/s-pack112.ads, libgnat/s-pack112.adb: New package.
+ * libgnat/s-pack113.ads, libgnat/s-pack113.adb: New package.
+ * libgnat/s-pack114.ads, libgnat/s-pack114.adb: New package.
+ * libgnat/s-pack115.ads, libgnat/s-pack115.adb: New package.
+ * libgnat/s-pack116.ads, libgnat/s-pack116.adb: New package.
+ * libgnat/s-pack117.ads, libgnat/s-pack117.adb: New package.
+ * libgnat/s-pack118.ads, libgnat/s-pack118.adb: New package.
+ * libgnat/s-pack119.ads, libgnat/s-pack119.adb: New package.
+ * libgnat/s-pack120.ads, libgnat/s-pack120.adb: New package.
+ * libgnat/s-pack121.ads, libgnat/s-pack121.adb: New package.
+ * libgnat/s-pack122.ads, libgnat/s-pack122.adb: New package.
+ * libgnat/s-pack123.ads, libgnat/s-pack123.adb: New package.
+ * libgnat/s-pack124.ads, libgnat/s-pack124.adb: New package.
+ * libgnat/s-pack125.ads, libgnat/s-pack125.adb: New package.
+ * libgnat/s-pack126.ads, libgnat/s-pack126.adb: New package.
+ * libgnat/s-pack127.ads, libgnat/s-pack127.adb: New package.
+ * libgnat/s-rannum.ads (Random): New function returning 128-bit.
+ * libgnat/s-rannum.adb (Random): Implement it.
+ * libgnat/s-scaval.ads: Add with clause for Interfaces, use subtypes
+ of unsigned types defined in Interfaces.
+ * libgnat/s-scaval.adb: Add use clause for Interfaces.
+ * libgnat/s-scaval__128.ads, libgnat/s-scaval__128.adb: New
+ package.
+ * libgnat/s-unstyp.ads (Long_Long_Long_Unsigned): New modular type.
+ (Shift_Left, Shift_Right, Shift_Right_Arithmetic, Rotate_Left,
+ Rotate_Right): New intrinsic functions operating on it.
+
+2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_characteristics.rst: Add
+ Long_Long_Long_Integer to the list of predefined integer types.
+ * gnat_rm.texi: Regenerate.
+
+2020-10-21 Yannick Moy <moy@adacore.com>
+
+ * ada_get_targ.adb (Width_From_Size): Add case for 128 bits.
+ Reorder declarations in the same order as get_targ.adb to
+ facilitate diffs.
+
+2020-10-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_aggr.adb (Expand_N_Aggregate): Refactor repeated calls to
+ Etype (N).
+ (Build_Array_Aggr_Code): Fix whitespace.
+
+2020-10-21 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * adaint.c (__gnat_file_time): Use regular arithmetic instead of
+ __builtin_*_overflow routines if GCC version 4 or less and
+ compiler is g++.
+
+2020-10-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Resolve_Array_Aggregate): Use Choice_List, which
+ internally calls either Choice or Discrete_Choices, depending on
+ the context.
+
+2020-10-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Resolve_Iterated_Component_Association): Use
+ existing defining identifier for index parameter.
+
+2020-10-21 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch9.adb (Build_Task_Activation_Call): Do not generate a
+ call to activate tasks if we are within the scope of a protected
+ type and pragma Detect_Blocking is active.
+
+2020-10-21 Liaiss Merzougue <merzougue@adacore.com>
+
+ * libgnat/s-carsi8.adb (Compare_Array_S8): Add pragma Assert to
+ avoid warning concerning Left_Len and RighLen value regarding
+ Bytes_Compared_As_Words.
+ * libgnat/s-carun8.adb (Compare_Array_U8): Likewise.
+ * libgnat/s-geveop.adb (Binary_Operation, Unary_Operation): Add
+ pragma Assert concerning divide by 0 warning.
+ * libgnat/s-imgcha.adb (Image_Character): Code update to prevent
+ constant operation warning.
+ (Image_Character): Add pragma Assert concerning the unchecked
+ String size.
+ * libgnat/s-imgdec.adb
+ (Round): Upate loop code to prevent warning concerning
+ Digs'First access.
+ (Round): Add pragma assert.
+ (Set): Add pragma Assert for the unchecked string size.
+ (Set_Digits): Add pragma Assert for the input range.
+ (Set_Decimal_Digits): Add pragma Assert.
+ (Set_Blank_And_Sign): Add pragma Assert for the input range.
+ * libgnat/s-arit64.adb (DoubleDivide): Add pragma Assert
+ concerning Du /= 0.
+ (Multiply_With_Ovflo_Check): Add pragma Annotate to avoid
+ warning concerning unsigned -> signed conversion.
+ * libgnat/s-imguns.adb (Set_Image_Unsigned): Add pragma Assert
+ to prevent overflow check warning. Add pragma Assert for
+ controlling S'First = 1.
+ * libgnat/s-imgrea.adb (Image_Floating_Point, Set, Set_Digs,
+ Set_Special_Fill, Convert_Integer): Add pragma Annotate to
+ prevent overflow check warning.
+ (Set_Image_Real): Add pragma Annotate to avoid dead code warning
+ on float check. Add pragma Assert to prevent overflow check
+ warning.
+ * libgnat/s-imgwiu.adb (Set_Digits, Set_Image_Width_Unsigned):
+ Add pragma assert to prevent overflow check warning.
+ * libgnat/s-imgllu.adb (Set_Image_Long_Long_Unsigned): Add
+ pragma assert to prevent overflow check warning.
+ * libgnat/s-imgint.adb (Set_Digits): Add Assert for input
+ constraint and to prevent overflow check warning, create
+ Non_Positive subtype, and change the T parameter as Non_Positive
+ instead Integer.
+ (Set_Image_Integer): Add pragma assert to prevent overflow check
+ warning.
+ * libgnat/s-imglli.adb (Set_Digits): Add Assert for input
+ constraint and to prevent overflow check warning, create
+ Non_Positive subtype, and change the T parameter as Non_Positive
+ instead Integer.
+ (Set_Image_Long_Long_Integer): Add pragma assert to prevent
+ overflow check warning.
+ * libgnat/s-fatgen.adb (Decompose, Pred, Succ): Add pragma
+ Annotate to prevent dead code due to invalid float check.
+ * libgnat/s-imenne.adb (Image_Enumeration_8,
+ Image_Enumeration_16, Image_Enumeration_32): Add pragma Assert
+ to prevent overflow check warning. Add Names_Index subtype for
+ restricting Index_table content.
+
+2020-10-21 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch6.adb (Insert_Post_Call_Actions): Test for
+ N_Explicit_Dereference as part of the existing test for function
+ calls.
+
+2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * freeze.adb (Check_Strict_Alignment): Do not set the flag for
+ a bit-packed array type, even if it is a by-reference type.
+
+2020-10-21 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * adaint.c (__gnat_file_time): New routine.
+ (__gnat_copy_attribs): Copy timestamps in nanoseconds.
+ * libgnat/a-direct.adb (C_Modification_Time): Bind to
+ __gnat_file_time.
+ (Modification_Time): Call to C_Modification_Time.
+
+2020-10-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Resolve_Iterated_Component_Association):
+ Expression's copy and now has the same parent as the original
+ expression.
+ (Resolve_Array_Aggregate): Add ??? comment about a still
+ existing minor issue that led to discovery of the above crash.
+
+2020-10-21 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch12.adb (Install_Parents_Of_Generic_Context): Simplify
+ functionality; collect and install parents of generic child
+ package.
+ (Remove_Parents_Of_Generic_Context): Code cleanup.
+ (Instantiate_Package_Body): Hide parents of generic context from
+ visibility before installing the parent instance; restore their
+ visibility when the instance is analyzed
+
+2020-10-21 Doug Rupp <rupp@adacore.com>
+
+ * libgnarl/s-osinte__lynxos178e.ads: Remove -mthreads switch.
+
+2020-10-21 Patrick Bernardi <bernardi@adacore.com>
+
+ * env.c (__gnat_setenv): call setenv for VxWorks 7 kernel mode.
+ (__gnat_environ): envGet takes an int instead of a NULL pointer.
+ (__gnat_unsetenv): call unsetenv for VxWorks 7 kernel mode.
+ (__gnat_clearenv): use __gnat_unsetenv to clear environment
+ variables.
+
+2020-10-21 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch12.adb (Freeze_Subprogram_Body): Call
+ Package_Freeze_Node to retrieve the freeze node for the
+ enclosing body of the generic.
+
+2020-10-21 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch6.adb (Expand_Call_Helper): Modify calls to
+ Add_Extra_Actual to use Extra_Accessibility instead of
+ Get_Accessibility for the EF parameter.
+
+2020-10-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch6.adb (Expand_Actuals): Whitespace cleanup.
+ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Make minimum
+ accessibility a constant object.
+
+2020-10-21 Patrick Bernardi <bernardi@adacore.com>
+
+ * env.c (__gnat_environ): For VxWorks kernel simply return the
+ result of the envGet call. Do this for VxWorks 6 and 7 as they
+ both support the same API.
+
+2020-10-21 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * exp_ch7.adb (Build_Finalizer): Disable warnings on referenced
+ entity.
+
+2020-10-21 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.ads, sem_ch3.adb, sem_util.adb: Fix comments.
+
+2020-10-21 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch3.adb (Build_Derived_Type): Propagate convention of
+ class-wide parent.
+
+2020-10-21 Claire Dross <dross@adacore.com>
+
+ * libgnat/a-cofove.adb (Copy): Add explanation in case of
+ Capacity_Error.
+ (Insert_Space): Raise Capacity_Error if the new length is
+ greater than the capacity.
+ (Reserve_Capacity): Raise Capacity_Error instead of
+ Constraint_Error.
+
+2020-10-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Constrain_Decimal, Constrain_Enumeration,
+ Constrain_Float, Constrain_Integer, Constrain_Ordinary_Fixed):
+ Refine parameter type from Node_Id to Entity_Id.
+
+2020-10-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * sprint.adb (po): Set Dump_Freeze_Null to False; align colons.
+ (ps): Likewise.
+
+2020-10-20 Ed Schonberg <schonberg@adacore.com>
+
+ * sinfo.ads, sinfo.adb: The flag Box_Present can appear in
+ Iterated_Element_Association nodes.
+ * sem_aggr.adb (Resolve_Aggregate): Call
+ Resolve_Container_Aggregate when type of context has
+ corresponding aspect.
+ * sem_type.adb (Covers): In Ada_2020 an aggregate is compatible
+ with a type that carries the corresponding aspect.
+ * exp_ch3.adb (Make_Controlling_Function_Wrappers): Do not
+ create declarations and bodies for inherited primitive functions
+ of null extensions that dispatch on result, when current scope
+ includes an immediately visible non-overloadable homonym of the
+ function.
+ * libgnat/a-cborse.adb, libgnat/a-cborse.ads,
+ libgnat/a-cbhase.ads, libgnat/a-cbhase.adb,
+ libgnat/a-cborma.adb, libgnat/a-cborma.ads,
+ libgnat/a-cbhama.adb, libgnat/a-cbhama.ads,
+ libgnat/a-cbdlli.adb, libgnat/a-cbdlli.ads,
+ libgnat/a-convec.ads, libgnat/a-ciorse.ads,
+ libgnat/a-cihase.ads, libgnat/a-cihase.adb,
+ libgnat/a-ciorma.ads, libgnat/a-cihama.ads,
+ libgnat/a-cihama.adb, libgnat/a-cidlli.ads,
+ libgnat/a-cidlli.adb, libgnat/a-coinve.adb,
+ libgnat/a-cobove.adb, libgnat/a-cobove.ads,
+ libgnat/a-convec.adb, libgnat/a-coinve.ads,
+ libgnat/a-coorse.ads, libgnat/a-cohase.adb,
+ libgnat/a-cohase.ads, libgnat/a-coorma.ads,
+ libgnat/a-cohama.adb, libgnat/a-cohama.ads,
+ libgnat/a-cdlili.ads: Add primitive function Empty for use in
+ aspect Aggregate, and add corresponding body or expression
+ function.
+
+2020-10-20 Arnaud Charlet <charlet@adacore.com>
+
+ * aspects.adb (Has_Aspect_Specifications_Flag): Add
+ N_Parameter_Specification.
+ * par-ch13.adb (Aspect_Specifications_Present): Also handle case
+ of an unknown aspect on the last formal parameter (terminated by
+ a Tok_Right_Paren). Minor reformatting.
+ * par-ch6.adb (P_Formal_Part): Scan aspects on formal
+ parameters.
+ * par.adb: Fix typos.
+ * sem_ch6.adb (Process_Formals): Add processing of aspects and
+ in particular Unreferenced aspect for now.
+ * sinfo.ads: Allow ASPECT_SPECIFICATIONS on a
+ PARAMETER_SPECIFICATION.
+ * doc/gnat_rm/implementation_defined_aspects.rst
+ (Aspect Unreferenced): Update documentation.
+ * gnat_rm.texi: Regenerate.
+
+2020-10-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Get_Accessibility): Refine result
+ type from Node_Id to Entity_Id.
+
+2020-10-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.adb, exp_attr.adb, sem_ch13.adb, sem_util.adb: Use
+ Is_Formal where possible.
+
+2020-10-20 Steve Baird <baird@adacore.com>
+
+ * sem_util.ads: Declare a new package, Old_Attr_Util, which in
+ turn declares two more packages, Conditional_Evaluation and
+ Indirect_Temps. Conditional_Evaluation provides a predicate for
+ deciding whether a given 'Old attribute reference is eligible
+ for conditional evaluation and, in the case where it is
+ eligible, a function that constructs the Boolean-valued
+ condition that is to be evaluated at run time in deciding
+ whether to evaluate the attribute prefix. Indirect_Temps
+ provides support for declaring a temporary which is only
+ initialized conditionally; more specifically, an access type and
+ a variable of that type are declared (unconditionally) and then
+ the variable is (conditionally) initialized with an allocator.
+ The existence of the access type and the pointer variable is
+ hidden from clients, except that a predicate,
+ Is_Access_Type_For_Indirect_Temp, is provided for identifying
+ such access types. This is needed because we want such an access
+ type to be treated like a "normal" access type (specifically
+ with respect to finalization of allocated objects). Other parts
+ of the compiler treat access types differently if
+ Comes_From_Source is False, or if the secondary stack storage
+ pool is used; this predicate is used to disable this special
+ treatment.
+ * sem_attr.adb (Uneval_Old_Msg): Improve message text to reflect
+ Ada202x changes.
+ (Analyze_Attribute): A previously-illegal 'Old attribute
+ reference is accepted in Ada2020 if it is eligible for
+ conditional evaluation.
+ * sem_res.adb (Valid_Conversion): Do not treat a rewritten 'Old
+ attribute like other rewrite substitutions. This makes a
+ difference, for example, in the case where we are generating the
+ expansion of a membership test of the form "Saooaaat'Old in
+ Named_Access_Type"; in this case Valid_Conversion needs to
+ return True (otherwise the expansion will be False - see the
+ call site in exp_ch4.adb).
+ * exp_attr.adb (Expand_N_Attribute_Reference): When expanding a
+ 'Old attribute reference, test for the case where the reference
+ is eligible for conditional evaluation. In that case, use the
+ new "indirect temporary" mechanism provided by Sem_Util.
+ * exp_prag.adb
+ (Expand_Attributes_In_Consequence.Expand_Attributes): If
+ Sem_Util.Indirect_Temp_Needed indicates that there could be
+ correctness problems associated with the old expansion scheme
+ for dealing with 'Old attributes in contract cases consequences,
+ then we use the new "indirect temporary" mechanism provided by
+ Sem_Util instead. We do not want to do this unconditionally.
+ * sem_util.adb: Provide a body for the new Old_Attr_Util
+ package. Further work is needed in several areas for
+ correctness:
+ - The function Is_Repeatedly_Evaluated does not deal with
+ container aggregates yet.
+ - The function Is_Known_On_Entry does not deal with interactions
+ with the Global aspect.
+ Each area where more work is needed is indicated with a "???"
+ comment in the code; a more detailed description can be found
+ there. Some optimization opportunties are similarly indicated
+ with a "???" comment.
+ * exp_ch3.adb (Freeze_Type): In deciding whether to generate
+ expansion for the list controller of an access type, take the
+ predicate Is_Access_Type_For_Indirect_Temp into account. If the
+ predicate yields True, then generate the expansion.
+ * exp_util.adb (Build_Allocate_Deallocate_Proc): We don't
+ normally finalize allocated objects that are allocated on the
+ secondary stack. Add an exception to this rule if the predicate
+ Is_Access_Type_For_Indirect_Temp yields True. As a result of
+ this exception, we have to deal with the fact that gigi expects
+ a different parameter profile if we are using the secondary
+ stack pool; the Pool and Alignment parameters must be omitted in
+ this case.
+
+2020-10-20 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch12.adb (Install_Parents_Of_Generic_Context,
+ Remove_Parents_Of_Generic_Context): New subprograms.
+ (Instantiate_Package_Body): Adding assertions to ensure that
+ installed parents are properly removed.
+
+2020-10-20 Claire Dross <dross@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Emit a warning on 'Update
+ when Warn_On_Obsolescent_Feature is set to True.
+
+2020-10-20 Richard Kenner <kenner@adacore.com>
+
+ * gnat_cuda.adb (Build_Register_Function_Call): Make procedure
+ call instead of function, rename to
+ Build_Register_Procedure_Call.
+ (Build_CUDA_Init_Proc): Make procedure call instead of function.
+
+2020-10-20 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch6.adb (Expand_Branch): Properly anticipate expansion of
+ conditional expressions producing object declarations in
+ addition to assignment statements, and rename formal.
+
+2020-10-20 Yannick Moy <moy@adacore.com>
+
+ * errout.adb (Write_Source_Code_Line): Adopt display closer to
+ GCC format.
+ (Output_Messages): Deal specially with info messages.
+ * erroutc.adb (Prescan_Message): Fix bug leading to check
+ messages being considered as error messages in pretty output
+ mode.
+
+2020-10-20 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch6.adb (Expand_Call_Helper): Properly handle the case
+ where the condition of a conditional expression has been
+ optimized out when calculating the value of an extra
+ accessibility parameter.
+
+2020-10-20 Bob Duff <duff@adacore.com>
+
+ * doc/gnat_ugn/gnat_utility_programs.rst: Change "_" to "-".
+
+2020-10-20 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_aggr.adb (Resolve_Aggregate): Warn on not fully
+ initialized box aggregate.
+ * sem_aggr.ads: Fix typo.
+ * sem_res.adb (Resolve_Actuals): Fix typo in error message
+ format marking it incorrectly as a continuation message.
+ * sem_elab.adb (Check_Internal_Call_Continue): Similarly, add
+ missing primary message in case of a call to an actual generic
+ subprogram.
+ * sem_warn.adb (Check_References): Do not warn on read but never
+ assigned variables if the type is partially initialized.
+ * libgnat/a-except.ads, libgnat/a-ststun.ads,
+ libgnat/g-sechas.ads, libgnat/a-cbdlli.ads,
+ libgnat/a-cfdlli.ads, libgnat/a-cobove.ads,
+ libgnat/a-cohata.ads, libgnat/a-crbltr.ads,
+ libgnat/a-cbmutr.ads, libgnat/a-crdlli.ads,
+ libgnat/a-cbsyqu.ads: Address new warning.
+ * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ Update doc on -gnatwv.
+ * gnat_ugn.texi: Regenerate.
+
+2020-10-20 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch6.adb (Analyze_Expression_Function): Mark static
+ expression functions as inlined.
+
+2020-10-20 Arnaud Charlet <charlet@adacore.com>
+
+ * contracts.adb (Is_Prologue_Renaming): This function was
+ missing support for E_Constant which can also be generated in
+ protected objects.
+
+2020-10-20 Arnaud Charlet <charlet@adacore.com>
+
+ * bindgen.adb (Gen_Bind_Env_String): Generate Ada 2012 compatible
+ strings. Code cleanup.
+
+2020-10-20 Yannick Moy <moy@adacore.com>
+
+ * sem_util.adb, sem_util.ads: Comment fix.
+
+2020-10-20 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch8.adb (Check_Constrained_Object): Suppress discriminant
+ checks when the type has default discriminants and comes from
+ expansion of a "for of" loop.
+
+2020-10-20 Bob Duff <duff@adacore.com>
+
+ * atree.ads: Make Default_Node a constant. Remove the
+ modification of Comes_From_Source, and use a separate flag for
+ that. Change Sloc to 0; it always overwritten, and never left
+ as the No_Location value.
+ (Print_Statistics): Move to spec so we can call it from
+ gnat1drv.
+ (Num_Nodes): Rename to clarify that this is approximate.
+ Correct comment: nodes and entities are never deleted, the count
+ is never decremented, and this is not used by Xref.
+ (Initialize): Correct comment: Error_List is not created here.
+ Other minor naming and comment changes.
+ * atree.adb (Extend_Node, New_Copy, New_Entity, New_Node):
+ Streamline these. Simplify and improve efficiency. Move code
+ from Allocate_Initialize_Node to these, where it can be executed
+ unconditionally. Take advantage of automatic zeroing of the
+ Nodes table.
+ (Allocate_Initialize_Node): Remove this. It was an efficiency
+ bottleneck, and somewhat complicated, because it was called from
+ 4 places, and had all sorts of conditionals to check where it
+ was called from. Better to move most of that code to the call
+ sites, where it can be executed (or not) unconditionally.
+ (Allocate_New_Node): New procedure to partly replace
+ Allocate_Initialize_Node (called from just 2 of those 4 places).
+ (Comes_From_Source_Default): New flag written/read by
+ Set_Comes_From_Source_Default/Get_Comes_From_Source_Default.
+ This allows us to make Default_Node into a constant with
+ all-zeros value.
+ (Set_Paren_Count_Of_Copy): New procedure to avoid duplicated
+ code.
+ (Report): New procedure to encapsulate the call to the reporting
+ procedure.
+ (Atree_Private_Part): We now need a body for this package, to
+ contain package body Nodes.
+ (Approx_Num_Nodes_And_Entities): Was Num_Nodes. For efficiency,
+ compute the answer from Nodes.Last. That way we don't need to
+ increment a counter on every node creation. Other minor naming
+ and comment changes.
+ * gnat1drv.adb: Call Atree.Print_Statistics if -gnatd.A switch
+ was given. Add comment documenting the new order dependency (we
+ must process the command line before calling Atree.Initialize).
+ * debug.adb: Document -gnatd.A.
+ * einfo.adb, sinfo.adb: Remove useless Style_Checks pragmas.
+ * nlists.ads (Allocate_List_Tables): Inline makes node creation
+ a little faster.
+ * nlists.adb (Initialize): Remove local constant E, which didn't
+ seem to add clarity.
+ * treepr.adb (Print_Init): Use renamed
+ Approx_Num_Nodes_And_Entities function.
+ * types.ads: Change the Low and High bounds as described above.
+ * types.h: Change Low and High bounds to match types.ads.
+ * sem_ch8.adb, namet.adb, namet.ads: Move the computation of
+ Last_Name_Id from sem_ch8 to namet, and correct it to not assume
+ Name_Ids are positive.
+ * ali.adb, ali-util.adb, bindo-writers.adb, exp_dist.adb,
+ fmap.adb, fname-uf.adb, osint.adb: Fix various hash functions to
+ avoid assuming the various ranges are positive. Note that "mod"
+ returns a nonnegative result when the second operand is
+ positive. "rem" can return negative values in that case (in
+ particular, if the first operand is negative, which it now is).
+ * switch-c.adb: Allow switch -gnaten to control the value of
+ Nodes_Size_In_Meg.
+ * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ Remove traling whitespaces.
+ * opt.ads (Nodes_Size_In_Meg): New Variable.
+
+2020-10-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_util.adb (Remove_Side_Effects): Always generate a renaming
+ that is handled by the front-end in the case of an indexed or a
+ selected component whose prefix has a nonstandard representation.
+
+2020-10-20 Pat Rogers <rogers@adacore.com>
+
+ * doc/gnat_rm/the_gnat_library.rst: Add Ada.Task_Initialization.
+ * gnat_rm.texi: Regenerate.
+
+2020-10-20 Yannick Moy <moy@adacore.com>
+
+ * errout.adb: (Error_Msg-Internal): Pass the location for a line
+ insertion if any in the message.
+ (Output_Messages: Add display of source code lines if -gnatdF is
+ set.
+ (Write_Source_Code_Line): Code clean up.
+ * erroutc.adb (Prescan_Message): Apply prescan for continuation
+ lines when -gnatdF is set, and record presence of line
+ insertion.
+ * erroutc.ads (Has_Insertion_Line): New global for prescan.
+ (Error_Msg_Object): Add field to record line insertion if
+ present.
+ * errutil.adb (Error_Msg): Pass no location for Insertion_Sloc.
+
+2020-10-20 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch5.adb (Expand_N_Case_Statement): Do not generate
+ validity check when possible.
+
+2020-10-20 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_aggr.adb (Expand_Iterated_Component): Reorganize code to
+ ensure that Loop_Id is properly initialized on all paths, and
+ remove code duplication.
+
+2020-10-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Analyze_Subtype_Declaration): Propagate predicate
+ function to full view of the created type as well, if it was
+ created.
+
+2020-10-20 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Merge handling of
+ Simple_Storage_Pool and Storage_Pool.
+
+2020-10-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * aspects.ads: Introduce Subprogram_Variant aspect with the
+ following properties: GNAT-specific, with mandatory expression,
+ not a representation aspect, never delayed.
+ * contracts.adb (Expand_Subprogram_Contract): Mention new aspect
+ in the comment.
+ (Add_Contract_Item): Support addition of pragma
+ Subprogram_Variant to N_Contract node.
+ (Analyze_Entry_Or_Subprogram_Contract): Mention new aspect in
+ the comment; add pragma Subprogram_Variant to N_Contract node.
+ (Build_Postconditions_Procedure): Adapt call to
+ Insert_Before_First_Source_Declaration, which is now reused in
+ expansion of new aspect.
+ (Process_Contract_Cases_For): Also process Subprogram_Variant,
+ which is stored in N_Contract node together with Contract_Cases.
+ * contracts.ads (Analyze_Entry_Or_Subprogram_Contract): Mention
+ new aspect in the comment.
+ (Analyze_Entry_Or_Subprogram_Body_Contract): Likewise.
+ * einfo.adb (Get_Pragma): Support retrieval of new pragma.
+ * einfo.ads (Get_Pragma): Likewise.
+ * exp_ch6.adb (Check_Subprogram_Variant): New routine for
+ emitting call to check Subprogram_Variant expressions at run
+ time.
+ (Expand_Call_Helper): Check Subprogram_Variant expressions at
+ recursive calls.
+ * exp_prag.adb (Make_Op): Moved from expansion of pragma
+ Loop_Variant to Exp_Util, so it is now reused for expansion of
+ pragma Subprogram_Variant.
+ (Process_Variant): Adapt call to Make_Op after moving it to
+ Exp_Util.
+ (Expand_Pragma_Subprogram_Variant): New routine.
+ * exp_prag.ads (Expand_Pragma_Subprogram_Variant): Likewise.
+ * exp_util.adb (Make_Variant_Comparison): Moved from Exp_Prag
+ (see above).
+ * exp_util.ads (Make_Variant_Comparison): Likewise.
+ * inline.adb (Remove_Aspects_And_Pragmas): Handle aspect/pragma
+ Subprogram_Variant just like similar contracts.
+ * par-prag.adb (Prag): Likewise.
+ * sem.adb (Insert_Before_First_Source_Declaration): Moved from
+ Contracts (see above).
+ * sem.ads (Insert_Before_First_Source_Declaration): Likewise.
+ * sem_ch12.adb: Mention new aspect in the comment about
+ "Implementation of Generic Contracts", just like similar aspects
+ are mentioned there.
+ * sem_ch13.adb (Insert_Pragma): Mention new aspect in the
+ comment, because this routine is now used for Subprogram_Variant
+ just like for other similar aspects.
+ (Analyze_Aspect_Specifications): Mention new aspect in comments;
+ it is handled just like aspect Contract_Cases.
+ (Check_Aspect_At_Freeze_Point): Do not expect aspect
+ Subprogram_Variant just like we don't expect aspect
+ Contract_Cases.
+ * sem_prag.adb (Ensure_Aggregate_Form): Now also used for pragma
+ Subprogram_Variant, so update comment.
+ (Analyze_Pragma): Add initial checks for pragma
+ Subprogram_Variant.
+ (Analyze_Subprogram_Variant_In_Decl_Part): New routine with
+ secondary checks on the new pragma.
+ (Sig_Flags): Handle references within pragma Subprogram_Variant
+ expression just like references in similar pragma
+ Contract_Cases.
+ (Is_Valid_Assertion_Kind): Handle Subprogram_Variant just like
+ other similar contracts.
+ * sem_prag.ads (Analyze_Subprogram_Variant_In_Decl_Part): New
+ routine.
+ * sem_res.adb (Same_Or_Aliased_Subprograms): Moved to Sem_Util,
+ so it can be reused for detection of recursive calls where
+ Subprogram_Variant needs to be verified.
+ * sem_util.adb (Is_Subprogram_Contract_Annotation): Handle new
+ Subprogram_Variant annotation just like other similar
+ annotations.
+ (Same_Or_Aliased_Subprograms): Moved from Sem_Res (see above).
+ * sem_util.ads (Is_Subprogram_Contract_Annotation): Mention new
+ aspect in the comment.
+ (Same_Or_Aliased_Subprograms): Moved from Sem_Res (see above).
+ * sinfo.ads (N_Contract): Document handling of
+ Subprogram_Variant.
+ * snames.ads-tmpl: Add name for the internally generated
+ procedure with checks for Subprogram_Variant expression, name
+ for the new aspect and new pragma corresponding to aspect
+ Subprogram_Variant.
+
+2020-10-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_util.ads: Reorder declaration.
+
+2020-10-19 Ed Schonberg <schonberg@adacore.com>
+
+ * 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.
+
+2020-10-19 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch4.adb (Expand_Concatenate): Enable needed range checks.
+
+2020-10-19 Bob Duff <duff@adacore.com>
+
+ * 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.
+
+2020-10-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (PowerPC/Linux): Use s-taspri__posix.ads instead
+ of s-taspri__posix-noaltstack.ads for s-taspri.ads.
+
+2020-10-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Add_Call): Remove excessive condition and
+ unnecessary call to Set_Has_Predicates.
+
+2020-10-19 Yannick Moy <moy@adacore.com>
+
+ * 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.
+
+2020-10-19 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch6.adb (Check_Untagged_Equality): Check for AI12-0352.
+
+2020-10-19 Ed Schonberg <schonberg@adacore.com>
+
+ * 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.
+
+2020-10-19 Arnaud Charlet <charlet@adacore.com>
+
+ * contracts.adb (Process_Preconditions_For): Do not exclude
+ instances.
+ * sem_ch4.adb (Analyze_Quantified_Expression): Disable spurious
+ warning on internally generated variables.
+
+2020-10-19 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * 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.
+
+2020-10-19 Bob Duff <duff@adacore.com>
+
+ * 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.
+
+2020-10-19 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Check if type
+ depends on discriminant.
+
+2020-10-19 Bob Duff <duff@adacore.com>
+
+ * libgnat/a-coinve.adb, libgnat/a-cidlli.adb (Put_Image): Call
+ Iterate.
+
+2020-10-19 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_aggr.adb (Resolve_Record_Aggregate): Properly apply
+ subtype constraints when using a Default_Value.
+ * freeze.adb: Fix typo.
+
+2020-10-19 Yannick Moy <moy@adacore.com>
+
+ * 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.
+
+2020-10-19 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-19 Yannick Moy <moy@adacore.com>
+
+ * libgnat/a-textio.ads: Update top-level comment.
+
+2020-10-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Analyze_Contract_Cases_In_Decl_Part): Fix typo.
+
+2020-10-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch6.adb (Expand_Actuals): Simplify condition for by-copy
+ types.
+
+2020-10-19 Yannick Moy <moy@adacore.com>
+
+ * errout.ads: Add comment regarding lack of preservation of
+ Errout state across successive calls to the API.
+
+2020-10-19 Bob Duff <duff@adacore.com>
+
+ * 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.
+
+2020-10-19 Bob Duff <duff@adacore.com>
+
+ * 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 ].
+
+2020-10-19 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch8.adb (Find_Direct_Name): Do not trust in the decoration
+ of the Entity attribute in constants associated with
+ discriminals of protected types.
+
+2020-10-19 Gary Dismukes <dismukes@adacore.com>
+
+ * 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.
+
+2020-10-19 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch7.adb (Uninstall_Declarations): Uninstall the
+ declaration of a subtype declaration defined in the private part
+ of a package.
+
+2020-10-19 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch6.adb (Expand_Call_Helper): Cleanup.
+
+2020-10-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch6.adb (Is_Direct_Deep_Call): Refine type from Node_Id to
+ Entity_Id.
+
+2020-10-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch6.adb (May_Fold): Detect all operators, i.e. both binary
+ and unary ones.
+
+2020-10-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * inline.adb (Expand_Inlined_Call): Simplify repeated calls to
+ Nkind.
+
+2020-10-18 Alexandre Oliva <oliva@adacore.com>
+
+ * 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.
+
+2020-10-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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.
+
+2020-10-16 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_cat.adb (Is_Primary): Handle N_Range properly.
+
+2020-10-16 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * 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.
+
+2020-10-16 Bob Duff <duff@adacore.com>
+
+ * 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.
+
+2020-10-16 Javier Miranda <miranda@adacore.com>
+
+ * 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.
+
+2020-10-16 Bob Duff <duff@adacore.com>
+
+ * libgnat/a-numeri.ads: Remove the greek letter.
+
+2020-10-16 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_imgv.adb (Expand_Image_Attribute): Refine previous patch
+ to use root type (and not base type) on enumeration types.
+
+2020-10-16 Ed Schonberg <schonberg@adacore.com>
+
+ * 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.
+
+2020-10-16 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-16 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-16 Gary Dismukes <dismukes@adacore.com>
+
+ * 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.
+
+2020-10-16 Bob Duff <duff@adacore.com>
+
+ * exp_ch6.adb (Expand_Simple_Function_Return): Remove obsolete
+ comment and code.
+
+2020-10-16 Arnaud Charlet <charlet@adacore.com>
+
+ PR ada/95953
+ * libgnat/a-suenco.adb (Convert): Fix handling of third UTF-8
+ byte.
+
+2020-10-16 Steve Baird <baird@adacore.com>
+
+ * exp_util.adb (Is_Related_To_Func_Return): Cope with the case
+ where the FE introduces a type conversion.
+
+2020-10-16 Chris Martin <cmartin@adacore.com>
+
+ * 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.
+
+2020-10-16 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.adb (Is_View_Conversion): Detect qualified types.
+ * sem_util.ads (Is_Actual_In_Out_Parameter): Fix style in
+ comment.
+
+2020-10-16 Arnaud Charlet <charlet@adacore.com>
+
+ * scil_ll.adb, sem_scil.adb: Update assertions.
+
+2020-10-16 Ed Schonberg <schonberg@adacore.com>
+
+ * 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
+
+2020-10-16 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch4.adb (Expand_Concatenate): Allocate result of string
+ concatenation on secondary stack when relevant.
+
+2020-10-16 Ed Schonberg <schonberg@adacore.com>
+
+ * 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.
+
+2020-10-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * 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.
+
+2020-10-16 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Array_Type_Declaration): Create itype with unique
+ name.
+
+2020-10-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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.
+
+2020-10-16 Yannick Moy <moy@adacore.com>
+
+ * 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.
+
+2020-10-16 Gary Dismukes <dismukes@adacore.com>
+
+ * 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.
+
+2020-10-16 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_prag.adb (Check_OK_Stream_Convert_Function): Check for
+ abstract subprograms.
+
+2020-10-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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.
+
+2020-10-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * 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.
+
+2020-10-15 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-15 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-15 Javier Miranda <miranda@adacore.com>
+
+ * 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.
+
+2020-10-15 Javier Miranda <miranda@adacore.com>
+
+ * 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.
+
+2020-10-15 Steve Baird <baird@adacore.com>
+
+ * 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.
+
+2020-10-15 Ed Schonberg <schonberg@adacore.com>
+
+ * 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.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.adb (Bad_Predicated_Subtype_Use): Emit an
+ unconditional error, not a conditional warning.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Process_Subtype): Combine guards for
+ Null_Exclusion_Present in May_Have_Null_Exclusion; use this
+ combined guard when checking AI-231.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Process_Subtype): Sync May_Have_Null_Exclusion
+ with assertion in Null_Exclusion_Present; clarify the scope of
+ local variables.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Analyze_Subtype_Declaration): Fix style.
+ (Make_Index): Refactor to avoid repeated detection of subtype
+ indication; add comment.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Is_Acceptable_Dim3): Use Is_RTE to not pull CUDA
+ package unless necessary; rename local Tmp variable; iterate
+ with procedural Next.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Access_Subprogram_Declaration): Remove extra
+ parens.
+ (Make_Index): Remove excessive calls to Is_Type.
+
+2020-10-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_util.adb (Enter_Name): Remove unnecessary conditions in
+ Enter_Name that come from the beginning of times.
+
+2020-10-15 Bob Duff <duff@adacore.com>
+
+ * exp_ch6.adb (Expand_Simple_Function_Return): Remove DSP part
+ of comment, and reformat.
+
+2020-10-15 Boris Yakobowski <yakobowski@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Do not expand
+ 'Initialized in CodePeer mode.
+
+2020-10-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch12.adb (Reset_Entity): Protect against malformed tree.
+
+2020-10-15 Arnaud Charlet <charlet@adacore.com>
+
+ * 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).
+
+2020-10-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * 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.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch12.adb: Replace list of N_Defining_... enumerations with
+ N_Entity.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * 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.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Analyze_Subtype_Declaration): Recognize both
+ identifiers and expanded names; use high-level Is_Scalar_Type
+ instead of low-level membership test.
+
+2020-10-15 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-15 Bob Duff <duff@adacore.com>
+
+ * 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.
+
+2020-10-15 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_res.adb (Resolve_Call): Do not try to inline intrinsic
+ calls.
+
+2020-10-15 Ed Schonberg <schonberg@adacore.com>
+
+ * 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.
+
+2020-10-15 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/g-arrspl.ads, libgnat/g-arrspl.adb (Create,
+ First_Cursor, Advance, Has_Element): New.
+
+2020-10-15 Arnaud Charlet <charlet@adacore.com>
+
+ * 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.
+
+2020-10-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_util.adb (Remove_Side_Effects): Move special-casing for
+ GNATprove to be applied to all object declarations.
+
+2020-10-12 Alexandre Oliva <oliva@adacore.com>
+
+ * libgnat/a-ngelfu.ads (Sin, Cos): Make the single-argument
+ functions inline.
+
+2020-10-11 Alexandre Oliva <oliva@adacore.com>
+
+ * libgnat/a-numaux.ads: Make all imports Intrinsic.
+ * libgnat/a-numaux__darwin.ads: Likewise.
+ * libgnat/a-numaux__libc-x86.ads: Likewise.
+ * libgnat/a-numaux__vxworks.ads: Likewise.
+
+2020-09-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (Subprogram_Body_to_gnu): Set the end locus
+ of body and declaration earlier.
+
+2020-09-28 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (maybe_saturate_size): Add ALIGN parameter
+ and round down the result to ALIGN.
+ (gnat_to_gnu_entity): Adjust calls to maybe_saturate_size.
+
+2020-09-14 Jakub Jelinek <jakub@redhat.com>
+
+ * gcc-interface/trans.c (gigi): Adjust build_optimization_node
+ caller.
+
+2020-09-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * fe.h: Fix pilot error in previous change.
+ * gcc-interface/gigi.h (enum standard_datatypes): Add ADT_mulv128_decl.
+ (mulv128_decl): New macro.
+ (get_target_long_long_long_size): Declare.
+ * gcc-interface/decl.c (gnat_to_gnu_entity): Use a maximum size of
+ 128 bits for discrete types if Enable_128bit_Types is true.
+ * gcc-interface/targtyps.c: Include target.h.
+ (get_target_long_long_long_size): New function.
+ * gcc-interface/trans.c (gigi): Initialize mulv128_decl if need be.
+ (build_binary_op_trapv): Call it for 128-bit multiplication.
+ * gcc-interface/utils.c (make_type_from_size): Enforce a maximum
+ size of 128 bits if Enable_128bit_Types is true.
+
+2020-09-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (lvalue_for_aggr_p) <N_Object_Declaration>:
+ Return false unconditionally.
+
+2020-09-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (gnat_to_gnu) <N_Object_Declaration>: Clear
+ the SLOC of the expression of a tag.
+
+2020-09-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Only give
+ a warning for the overlay of an aliased array with an unconstrained
+ nominal subtype if the address is absolute.
+
+2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils.c (type_has_variable_size): New function.
+ (create_field_decl): In the packed case, also force byte alignment
+ when the type of the field has variable size.
+
+2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/misc.c (get_array_bit_stride): Return TYPE_ADA_SIZE
+ for record and union types.
+
+2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/misc.c (gnat_get_fixed_point_type): Bail out only
+ when the GNAT encodings are specifically used.
+
+2020-09-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Only
+ create extra subtypes for discriminants if the RM size of the base
+ type of the index type is lower than that of the index type.
+
+2020-09-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (set_rm_size): Do not take into account the
+ Value_Size clause if it is not for the entity itself.
+
+2020-09-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (build_subst_list): For a definition, make
+ sure to instantiate the SAVE_EXPRs generated by the elaboration of
+ the constraints in front of the elaboration of the type itself.
+
+2020-09-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/misc.c: Include tree-pass.h.
+ (internal_error_function): Call emergency_dump_function.
+
+2020-09-03 Arnaud Charlet <charlet@adacore.com>
+
+ * fe.h, opt.ads (Enable_128bit_Types): New.
+ * stand.ads (Standard_Long_Long_Long_Integer,
+ S_Long_Long_Long_Integer): New.
+
+2020-09-03 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Get_Fullest_View): New procedure.
+ * exp_unst.adb (Check Static_Type): Do all processing on fullest
+ view of specified type.
+
+2020-08-27 Martin Liska <mliska@suse.cz>
+
+ * gcc-interface/trans.c (gigi): Set exact argument of a vector
+ growth function to true.
+ (Attribute_to_gnu): Likewise.
+
+2020-07-27 Alexandre Oliva <oliva@adacore.com>
+
+ * switch.adb (Is_Internal_GCC_Switch): Revert accidental
+ reintroduction of auxbase and auxbase-strip.
+
+2020-07-27 Javier Miranda <miranda@adacore.com>
+
+ * sem_res.adb (Resolve_Actuals): Restrict the check on matching
+ aliased components to view conversions of array types that are
+ not placed in an instance. In such case at runtime an object is
+ created.
+ * sem_util.ads (Is_Actual_In_Out_Parameter, Is_View_Conversion):
+ New subprograms.
+ * sem_util.adb (Is_Actual_In_Out_Parameter, Is_View_Conversion):
+ New subprograms.
+
+2020-07-27 Arnaud Charlet <charlet@adacore.com>
+
+ * lib-xref.adb (Generate_Reference): Protect against malformed
+ tree in case of severe errors.
+ * sem_ch8.adb (Add_Implicit_Operator): Ditto.
+
+2020-07-27 Arnaud Charlet <charlet@adacore.com>
+
+ * opt.ads (Ada_Version_Runtime): Set to Ada_2020.
+ * sem_ch3.adb (Analyze_Subtype_Declaration): Propagate
+ Is_Independent flag to subtypes.
+ * libgnarl/s-taprop__linux.adb: Adapt to Ada 2020 warning.
+ * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
+ libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb,
+ libgnat/a-nbnbre.ads, libgnat/a-stobbu.adb,
+ libgnat/a-stobbu.ads, libgnat/a-stobfi.adb,
+ libgnat/a-stobfi.ads, libgnat/a-stoubu.adb,
+ libgnat/a-stoubu.ads, libgnat/a-stoufi.adb,
+ libgnat/a-stoufi.ads, libgnat/a-stoufo.adb,
+ libgnat/a-stoufo.ads, libgnat/a-stouut.adb,
+ libgnat/a-stouut.ads, libgnat/a-strsto.ads,
+ libgnat/a-ststbo.adb, libgnat/a-ststbo.ads,
+ libgnat/a-ststun.adb, libgnat/a-ststun.ads,
+ libgnat/a-stteou.ads, libgnat/s-aoinar.ads,
+ libgnat/s-aomoar.ads, libgnat/s-atopex.ads,
+ libgnat/s-putaim.adb, libgnat/s-putaim.ads,
+ libgnat/s-putima.adb, libgnat/s-putima.ads: Remove pragma
+ Ada_2020, now redundant.
+
+2020-07-27 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch6.adb (Expand_Call_Helper): Modify addition of the extra
+ accessibility parameter to take into account the extra
+ accessibility of formals within the calling subprogram.
+
+2020-07-27 Bob Duff <duff@adacore.com>
+
+ * exp_imgv.adb (Expand_Image_Attribute): Add Root_Type, so
+ constrained subtypes work.
+
+2020-07-27 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * exp_prag.adb (Arg1, Arg2, Arg3): Removed.
+ (Arg_N): New function.
+
+2020-07-27 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch8.adb (Analyze_Object_Renaming): Allow values in Ada
+ 2020 mode.
+
+2020-07-27 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_res.adb (Resolve_Actuals): Refine 6.4.1 rules as per
+ AI12-0377.
+
+2020-07-27 Bob Duff <duff@adacore.com>
+
+ * errout.ads, errout.adb (Error_Msg_Ada_2020_Feature): New
+ procedure analogous to Error_Msg_Ada_2012_Feature.
+ * sem_attr.adb (Analyze_Image_Attribute): Use
+ Error_Msg_Ada_2012_Feature and Error_Msg_Ada_2020_Feature to
+ indicate that Object'Image is allowed in Ada 2012, and that
+ 'Image is allowed for any type in Ada 2020.
+
+2020-07-27 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * libgnat/a-strunb.adb (Sum, Mul, Saturated_Sum, Saturated_Mul):
+ New routines. Use them when resulting string size more that
+ length of the strings in parameters.
+ (Unbounded_Slice): Use "- 1" instead of "+ 1" in opposite side
+ of condition to avoid overflow.
+ * libgnat/a-strunb__shared.adb (Sum, Mul): New routines.
+ (Allocate): New routine with 2 parameters. Use routine above
+ when resulting string size more that length of the strings in
+ parameters.
+ (Aligned_Max_Length): Do not try to align to more than Natural'Last.
+ (Unbounded_Slice): Use "- 1" instead of "+ 1" in opposite side
+ of condition to avoid overflow.
+
+2020-07-27 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_attr.adb (Resolve_Attribute): Remove dead code.
+
+2020-07-27 Arnaud Charlet <charlet@adacore.com>
+
+ * aspects.adb, atree.adb, atree.ads, checks.adb, contracts.adb,
+ einfo.adb, errout.adb, exp_aggr.adb, exp_attr.adb, exp_cg.adb,
+ exp_ch11.adb, exp_ch2.adb, exp_ch3.adb, exp_ch4.adb,
+ exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_ch8.adb, exp_ch9.adb,
+ exp_dbug.adb, exp_disp.adb, exp_intr.adb, exp_pakd.adb,
+ exp_prag.adb, exp_put_image.adb, exp_smem.adb, exp_tss.adb,
+ exp_unst.adb, exp_util.adb, freeze.adb, ghost.adb, gnat1drv.adb,
+ inline.adb, lib-writ.adb, lib-xref-spark_specific.adb,
+ lib-xref.adb, namet.adb, namet.ads, nlists.adb, par-ch10.adb,
+ par-ch2.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb, par-ch6.adb,
+ par-prag.adb, par-util.adb, par_sco.adb, pprint.adb,
+ repinfo.adb, restrict.adb, rtsfind.adb, scil_ll.adb, sem.adb,
+ sem_aggr.adb, sem_attr.adb, sem_aux.adb, sem_cat.adb,
+ sem_ch10.adb, sem_ch11.adb, sem_ch12.adb, sem_ch13.adb,
+ sem_ch3.adb, sem_ch4.adb, sem_ch5.adb, sem_ch6.adb, sem_ch7.adb,
+ sem_ch8.adb, sem_ch9.adb, sem_dim.adb, sem_disp.adb,
+ sem_dist.adb, sem_elab.adb, sem_elim.adb, sem_eval.adb,
+ sem_intr.adb, sem_mech.adb, sem_prag.adb, sem_res.adb,
+ sem_scil.adb, sem_type.adb, sem_util.adb, sem_warn.adb,
+ sinfo.adb, sinfo.ads, sprint.adb, styleg.adb, tbuild.adb,
+ treepr.adb (Nkind_In, Nam_In, Ekind_In): Removed, replaced by
+ membership tests.
+
+2020-07-27 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_prag.adb (Analyze_Pragma, Pragma_Max_Entry_Queue_Length):
+ Refine error message to indicate that the pragma must apply to
+ an entry declaration, not just an entry.
+
+2020-07-27 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch6.adb (Make_Build_In_Place_Iface_Call_In_Allocator):
+ Revert previous patch, and add a missing type conversion to
+ displace the pointer to the allocated object to reference the
+ target dispatch table.
+
+2020-07-27 Javier Miranda <miranda@adacore.com>
+
+ * sem_res.adb (Resolve_Actuals): Restore restrictive check on
+ view conversions which required matching value of
+ Has_Aliased_Components of formals and actuals. Required to avoid
+ the regression of ACATS b460005.
+
+2020-07-27 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch12.adb (Instantiate_Package_Body): Add commentary for a
+ nesting issue with parent handling and private view switching.
+ (Switch_View): Do not skip specific private-dependent subtypes.
+
+2020-07-27 Patrick Bernardi <bernardi@adacore.com>
+
+ * Makefile.rtl: Remove X86_TARGET_PAIRS for x86-lynx178elf.
+
+2020-07-27 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch13.adb (Analyze_Address_Specification_Clause): Do not
+ emit a warning when a constant declaration in a generic unit
+ overlays a generic In_Parameter.
+
+2020-07-27 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch3.adb (Check_Abstract_Overriding): Remove Scope
+ comparison test from test related to initial implementation of
+ AI12-0042, plus remove the related ??? comment.
+ (Derive_Subprogram): Add test requiring that the type extension
+ appear in the visible part of its enclosing package when
+ checking the overriding requirement of 7.3.2(6.1/4), as
+ clarified by AI12-0382.
+
+2020-07-27 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference) Extend
+ existing workaround to 'Pos.
+
+2020-07-27 Bob Duff <duff@adacore.com>
+
+ * libgnat/s-rannum.ads, libgnat/s-rannum.adb: Add Put_Image.
+ This will be inherited by the language-defined packages
+ Ada.Numerics.Discrete_Random and Ada.Numerics.Float_Random.
+ * libgnat/a-convec.ads, libgnat/a-convec.adb: Add Put_Image.
+ * libgnat/s-putima.ads: Add pragma Preelaborate, so this can be
+ imported into containers packages.
+ * libgnat/s-putima.adb: Move Digit to private part; otherwise
+ reference to Base is illegal in Preelaborate generic.
+ * exp_put_image.adb (Build_Record_Put_Image_Procedure): Use the
+ base type.
+
+2020-07-23 Arnaud Charlet <charlet@adacore.com>
+
+ * aspects.ads: Declare CUDA_Global as aspect.
+ * einfo.ads: Use Flag118 for the Is_CUDA_Kernel flag.
+ (Set_Is_CUDA_Kernel): New function.
+ (Is_CUDA_Kernel): New function.
+ * einfo.adb (Set_Is_CUDA_Kernel): New function.
+ (Is_CUDA_Kernel): New function.
+ * par-prag.adb (Prag): Ignore Pragma_CUDA_Execute and
+ Pragma_CUDA_global.
+ * rtsfind.ads: Define CUDA.Driver_Types.Stream_T and
+ CUDA.Vector_Types.Dim3 entities
+ * rtsfind.adb: Define CUDA_Descendant subtype.
+ (Get_Unit_Name): Handle CUDA_Descendant packages.
+ * sem_prag.ads: Mark CUDA_Global as aspect-specifying pragma.
+ * sem_prag.adb (Analyze_Pragma): Validate Pragma_CUDA_Execute and
+ Pragma_CUDA_Global.
+ * snames.ads-tmpl: Define Name_CUDA_Execute and Name_CUDA_Global.
+
+2020-07-23 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch13.ads (Same_Representation): Renamed as
+ Has_Compatible_Representation because now the order of the arguments
+ are taken into account; its formals are also renamed as Target_Type
+ and Operand_Type.
+ * sem_ch13.adb (Same_Representation): Renamed and moved to place the
+ routine in alphabetic order.
+ * sem_attr.adb (Prefix_With_Safe_Accessibility_Level): New subprogram.
+ (Resolve_Attribute): Check that the prefix of attribute Access
+ does not have a value conversion of an array type.
+ * sem_res.adb (Resolve_Actuals): Remove restrictive check on view
+ conversions which required matching value of Has_Aliased_Components of
+ formals and actuals.
+ * exp_ch4.adb (Handle_Changed_Representation): Update call to
+ Same_Representation.
+ (Expand_N_Type_Conversion): Update call to Same_Representation.
+ * exp_ch5.adb (Change_Of_Representation): Update call to
+ Same_Representation.
+ * exp_ch6.adb (Add_Call_By_Copy_Code): Update call to
+ Same_Representation.
+ (Expand_Actuals): Update call to Same_Representation.
+ (Expand_Call_Helper): Update call to Same_Representation.
+
+2020-07-23 Arnaud Charlet <charlet@adacore.com>
+
+ * output.ads (Push_Output, Pop_Output): New procedures.
+ * output.adb (FD_Array, FD_Stack, FD_Stack_Idx): New type and vars.
+ (Push_Output, Pop_Output): New procedures.
+
+2020-07-16 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch3.adb (Expand_N_Full_Type_Declaration): Ensure a _master
+ declaration on limited types that might have tasks.
+ * exp_ch9.adb (Build_Master_Renaming): For private types, if we
+ are processing declarations in the private part, ensure that
+ master is inserted before its full declaration; otherwise the
+ master renaming may be inserted in the public part of the
+ package (and hence before the declaration of its _master
+ variable).
+
+2020-07-16 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): A renames-as-body
+ freezes the expression of any expression function that it
+ renames.
+
+2020-07-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_aggr.adb (Resolve_Container_Aggregate): Add semantic
+ checks for indexed aggregates, including component associations
+ and iterated component associations.
+ * exp_aggr.adb (Expand_Iterated_Component): New subprogram,
+ subsidiary of Expand_Container_Aggreggate, used for positional,
+ named, and indexed aggregates.
+ (Aggregate_Size): New subprogram to precompute the size of an
+ indexed aggregate prior to call to allocate it.
+ (Expand_Range_Component): New subprogram so generate loop for a
+ component association given by a range or a subtype name in an
+ indexed aggregate.
+
+2020-07-16 Bob Duff <duff@adacore.com>
+
+ * bindo-diagnostics.adb (Output_Invocation_Related_Suggestions):
+ Use Cumulative_Restrictions.Set, because Restriction_Active only
+ works at compile time.
+
+2020-07-16 Bob Duff <duff@adacore.com>
+
+ * gnatbind.adb (Gnatbind): For No_Tasks_Unassigned_To_CPU, check
+ that CPU has been set on the main subprogram.
+ (Restriction_Could_Be_Set): Don't print
+ No_Tasks_Unassigned_To_CPU if it would violate the
+ above-mentioned rule. Up to now, all restrictions were checked
+ by the compiler, with the binder just checking for consistency.
+ But the compiler can't know which subprogram is the main, so
+ it's impossible to check this one at compile time.
+ * restrict.ads, restrict.adb: Misc refactoring. Change Warning
+ to Warn, for consistency, since most already use Warn.
+ (Set_Restriction): New convenience routine.
+ * sem_ch13.adb (Attribute_CPU): Check
+ No_Tasks_Unassigned_To_CPU.
+ * sem_prag.adb (Pragma_CPU): Check No_Tasks_Unassigned_To_CPU.
+ Misc refactoring.
+ * tbuild.ads, tbuild.adb (Sel_Comp): New functions for building
+ selected components.
+
+2020-07-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * impunit.adb (Non_Imp_File_Names_95): Remove duplicate entry.
+
+2020-07-16 Arnaud Charlet <charlet@adacore.com>
+
+ * Makefile.rtl: replace a-numaux__x86.ads by
+ a-numaux__libc-x86.ads and a-numaux__x86.adb by
+ a-numaux__dummy.adb.
+ * libgnat/a-numaux__x86.ads, libgnat/a-numaux__x86.adb: Removed.
+ * libgnat/a-numaux__dummy.adb: New.
+
+2020-07-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Load_Parent_Of_Generic): If an ancestor is an
+ instance whose source appears within a formal package of the
+ current unit, there is no body of the ancestor needed to
+ complete the current generic compilation.
+
+2020-07-16 Doug Rupp <rupp@adacore.com>
+
+ * libgnat/s-thread__ae653.adb (taskVarAdd): Defunct, so remove.
+ (Current_ATSD): Make it a TLS variable.
+ (OK): Move to package scope.
+ (System.Storage_Elements): Import and Use.
+
+2020-07-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch9.adb (Expand_N_Accept_Statement): Set Parent of the
+ created block entity to the created block statement.
+
+2020-07-16 Arnaud Charlet <charlet@adacore.com>
+
+ * scng.adb (Scan): Detect wide characters not in NFKC.
+ * libgnat/a-chahan.adb, libgnat/a-chahan.ads,
+ libgnat/a-wichha.adb, libgnat/a-wichha.ads,
+ libgnat/a-wichun.adb, libgnat/a-wichun.ads,
+ libgnat/a-zchhan.adb, libgnat/a-zchhan.ads,
+ libgnat/a-zchuni.adb, libgnat/a-zchuni.ads (Is_NFKC): New.
+ * libgnat/s-utf_32.ads, libgnat/s-utf_32.adb (Is_UTF_32_NFKC):
+ New.
+
+2020-07-16 Bob Duff <duff@adacore.com>
+
+ * libgnat/s-rident.ads (Restriction_Id): Add
+ No_Tasks_Unassigned_To_CPU.
+
+2020-07-16 Bob Duff <duff@adacore.com>
+
+ * exp_aggr.adb (Max_Aggregate_Size): Use the small size of 64
+ when copying is needed (for example, for the initialization of a
+ local variable, and for assignment statements). Use the larger
+ size when static allocation can be done without copying.
+
+2020-07-16 Bob Duff <duff@adacore.com>
+
+ * libgnat/s-rident.ads (No_Dynamic_CPU_Assignment): New
+ restriction. Add it to all relevant profiles.
+ * sem_ch13.adb (Attribute_CPU): Check No_Dynamic_CPU_Assignment
+ restriction.
+ (Attribute_CPU, Attribute_Dispatching_Domain,
+ Attribute_Interrupt_Priority): Remove error checks -- these are
+ checked in the parser.
+ * sem_prag.adb (Pragma_CPU): Check No_Dynamic_CPU_Assignment
+ restriction. We've got a little violation of DRY here.
+ * sem.ads, sem_ch3.ads: Minor comment fix.
+
+2020-07-16 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch4.adb (Try_Container_Indexing): When the prefix type is
+ an access type, change it to the designated type, change the
+ prefix to an explicit dereference, and emit a ?d? warning for
+ the implicit dereference. Include a ??? comment questioning
+ whether this is the right context in which to perform the
+ implicit dereferencing.
+
+2020-07-16 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch13.adb (Validate_Literal_Aspect): Ensure that the
+ parameter is not aliased. Minor reformatting.
+ * sem_util.adb (Statically_Names_Object): Update comment.
+
+2020-07-16 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_case.adb (Build_Choice): Set Is_Static_Expression flag.
+ (Lit_Of): Update specification to mention Is_Static_Expression
+ flag.
+ * sem_ch13.adb (Membership_Entry): Check for N_Others_Choice.
+
+2020-07-16 Bob Duff <duff@adacore.com>
+
+ * sem_ch6.adb (Null_Exclusions_Match): New function to check
+ that the null exclusions match, including in the case addressed
+ by this AI.
+ (Check_Conformance): Remove calls to Comes_From_Source
+ when calling Null_Exclusions_Match. These are not
+ needed, as indicated by an ancient "???" comment.
+
+2020-07-16 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Type_Conversion): Remove flawed test for
+ whether "statically deeper" accessibility rules apply to a given
+ target type and instead use the new routine
+ Statically_Deeper_Relation_Applies.
+ (Statically_Deeper_Relation_Applies): Created to centralize the
+ calculation of whether a target type within a conversion must
+ have static accessibility checks.
+ * sem_ch13.adb (Check_One_Function): Minor comment revision.
+
+2020-07-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * fe.h (Is_OK_Static_Expression): Delete.
+ * sem_eval.ads (Is_OK_Static_Expression): Remove WARNING note.
+
+2020-07-16 Justin Squirek <squirek@adacore.com>
+
+ * einfo.adb, einfo.ads (Is_Named_Access_Type): Created for
+ readability.
+ * sem_ch6.adb (Check_Return_Construct_Accessibility): Add
+ special cases for formals.
+ * sem_util.adb (Object_Access_Level): Add handling of access
+ attributes and named access types in the general case.
+
+2020-07-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_case.adb (Build_Choice): Simplify.
+
+2020-07-16 Arnaud Charlet <charlet@adacore.com>
+
+ * frontend.adb: Disable Initialize_Scalars on runtime files.
+
+2020-07-16 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_ch3.adb (Analyze_Object_Declaration): Add
+ Comes_From_Source call.
+
+2020-07-16 Javier Miranda <miranda@adacore.com>
+
+ * exp_attr.adb (Expand_Access_To_Protected_Op): Initialize
+ variable Sub to Empty to avoid false positive reported by
+ Codepeer.
+
+2020-07-16 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch8.adb (Note_Redundant_Use): Add missing warning tag.
+ Do not check for redundant use clauses in predefined units to avoid
+ misleading warnings that may occur as part of a rtsfind load.
+
+2020-07-16 Javier Miranda <miranda@adacore.com>
+
+ * exp_attr.adb (Has_By_Protected_Procedure_Prefixed_View): New
+ subprogram.
+ (Expand_Access_To_Protected_Op): Adding support for prefixed
+ class-wide view with By_Protected_Procedure convention.
+ * sem_attr.adb (Get_Convention): New subprogram.
+ (Get_Kind): Adapted to use Get_Convention.
+ * sem_ch4.adb (Try_By_Protected_Procedure_Prefixed_View): New
+ subprogram.
+ (Analyze_Selected_Component): Invoke
+ Try_By_Protected_Procedure_Prefixed_View.
+ * sem_util.ads (Is_By_Protected_Procedure): New subprogram.
+ * sem_util.adb (Is_By_Protected_Procedure): New subprogram.
+
+2020-07-16 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-ststop.ads: Fix typo.
+ * libgnat/s-ststop.adb (Read, Write): Fix block number
+ computation to avoid overflows in case of large strings.
+
+2020-07-16 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-genbig.adb ("**"): Remove capacity limit check.
+ Improve code by using an extended return.
+ (Normalize): Perform capacity limit check here instead which is
+ the centralized place where (potentially large) big integers are
+ allocated.
+
+2020-07-16 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Type_Conversion): Handle the case of
+ applying an invariant check for a conversion to a class-wide
+ type whose root type has a type invariant, when the conversion
+ appears within the immediate scope of the type and the
+ expression is of a specific tagged type.
+ * sem_ch3.adb (Is_Private_Primitive): New function to determine
+ whether a primitive subprogram is a private operation.
+ (Check_Abstract_Overriding): Enforce the restriction imposed by
+ AI12-0042 of requiring overriding of an inherited nonabstract
+ private operation when the ancestor has a class-wide type
+ invariant and the ancestor's private operation is visible.
+ (Derive_Subprogram): Set Requires_Overriding on a subprogram
+ inherited from a visible private operation of an ancestor to
+ which a Type_Invariant'Class expression applies.
+
+2020-07-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.adb (Find_Overlaid_Entity): Fix style in comment.
+ (Note_Possible_Modification): Simplify repeated calls to Ekind.
+
+2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_aggr.adb (Flatten): Adjust description.
+ (Convert_To_Positional): Remove obsolete ??? comment and use
+ Compile_Time_Known_Value in the final test.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * par-ch4.adb (P_Iterated_Component_Association): Extended to
+ recognzize the similar Iterated_Element_Association. This node
+ is only generated when an explicit Key_Expression is given.
+ Otherwise the distinction between the two iterated forms is done
+ during semantic analysis.
+ * sinfo.ads: New node N_Iterated_Element_Association, for
+ Ada202x container aggregates. New field Key_Expression.
+ * sinfo.adb: Subprograms for new node and newn field.
+ * sem_aggr.adb (Resolve_Iterated_Component_Association): Handle
+ the case where the Iteration_Scheme is an
+ Iterator_Specification.
+ * exp_aggr.adb (Wxpand_Iterated_Component): Handle a component
+ with an Iterated_Component_Association, generate proper loop
+ using given Iterator_Specification.
+ * exp_util.adb (Insert_Axtions): Handle new node as other
+ aggregate components.
+ * sem.adb, sprint.adb: Handle new node.
+ * tbuild.adb (Make_Implicit_Loop_Statement): Handle properly a
+ loop with an Iterator_ specification.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-stposu.adb (Allocate_Any_Controlled): Fix logic in
+ lock/unlock.
+
+2020-07-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.adb (Is_Object_Reference): Return True on
+ N_Target_Name.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Add proper
+ handling of Aspect_Predicate_Failure, consistent with
+ Check_Aspect_At_Freeze_Point.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch13.adb (Check_Aspect_Too_Late): Mention -gnat2020 switch
+ in error message.
+
+2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (Delayed Freezing and Elaboration): Adjust description.
+ * freeze.adb (Freeze_Object_Declaration): Likewise.
+ * sem_ch3.adb (Delayed_Aspect_Present): Likewise. Do not return
+ true for Alignment.
+ * sem_ch13.adb (Analyze_Aspect_Specifications): Do not always delay
+ for Alignment. Moreover, for Alignment and various Size aspects,
+ do not delay if the expression is an attribute whose prefix is the
+ Standard package.
+
+2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch6.adb (Requires_Atomic_Or_Volatile_Copy): Return false
+ inside an initialization procedure.
+
+2020-07-15 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_util.adb (Is_Renaming): Add ekind checks.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * doc/gnat_ugn/gnat_utility_programs.rst: Remove doc on obsolete
+ tools.
+ * gnat_ugn.texi: Regenerate.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_res.adb (Resolve_Type_Conversion): Protect against null
+ entity. Add proper tag for -gnatwr warning.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch6.adb (Analyze_Procedure_Call): Detect use of operators
+ in a procedure call.
+ * sem_util.adb: Minor edit.
+
+2020-07-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_Delta_Or_Update): Apply scalar
+ range checks against the base type of an index type, not against
+ the index type itself.
+
+2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (Delayed Freezing and Elaboration): Minor tweaks.
+ Document the discrepancy between the aspect and the non-aspect
+ cases for alignment settings in object declarations.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch3.adb (Freeze_Type): Remove warning in expander,
+ replaced by a corresponding error in sem_ch13.adb. Replace
+ RTE_Available by RTU_Loaded to avoid adding unnecessary
+ dependencies.
+ * sem_ch13.adb (Associate_Storage_Pool): New procedure.
+ (Analyze_Attribute_Definition_Clause
+ [Attribute_Simple_Storage_Pool| Attribute_Storage_Pool]): Call
+ Associate_Storage_Pool to add proper legality checks on
+ subpools.
+
+2020-07-15 Yannick Moy <moy@adacore.com>
+
+ * 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-cbprqu.adb, libgnat/a-cbprqu.ads,
+ libgnat/a-cbsyqu.adb, libgnat/a-cbsyqu.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-cohama.adb, libgnat/a-cohama.ads,
+ libgnat/a-cohase.adb, libgnat/a-cohase.ads,
+ libgnat/a-coinve.adb, libgnat/a-coinve.ads,
+ libgnat/a-comutr.adb, libgnat/a-comutr.ads,
+ libgnat/a-convec.adb, libgnat/a-convec.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: Add SPARK_Mode =>
+ Off.
+
+2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch3.adb (Delayed_Aspect_Present): Fix oversight in loop.
+ * freeze.adb (Freeze_Object_Declaration): Use Declaration_Node
+ instead of Parent for the sake of consistency.
+
+2020-07-15 Javier Miranda <miranda@adacore.com>
+
+ * sem_attr.adb (Resolve_Attribute): Resolve overloaded
+ N_Selected_Component prefix of 'Access. Required to handle
+ overloaded prefixed view of protected subprograms.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * doc/gnat_ugn/about_this_guide.rst: Remove old section and
+ update for Ada 202x.
+ * doc/gnat_ugn/getting_started_with_gnat.rst: Add a system
+ requirements section. Remove obsolete section and minimal
+ rewording on the getting started section.
+ * gnat_ugn.texi: Regenerate.
+
+2020-07-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch5.adb (Expand_Assign_Array): Use short-circuit operator
+ (style).
+ * sem_res.adb (Resolve_Indexed_Component): Fix style in comment.
+ * sem_util.adb (Is_Effectively_Volatile_Object): Handle slices
+ just like indexed components; handle qualified expressions and
+ type conversions lie in Is_OK_Volatile_Context.
+ (Is_OK_Volatile_Context): Handle qualified expressions just like
+ type conversions.
+
+2020-07-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Atomic_Components): Simplify with Ekind_In.
+ (Complex_Representation): Fix type of E_Id, which just like when
+ for pragma Atomic_Components will hold an N_Identifier node, not
+ an entity.
+ * sem_util.adb (Is_Effectively_Volatile): Refactor to avoid
+ unnecessary computation.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * inline.adb, inline.ads
+ (Inline_Static_Expression_Function_Call): Renamed
+ Inline_Static_Function_Call.
+ * sem_ch13.adb (Analyze_Aspect_Static): Allow static intrinsic
+ imported functions under -gnatX.
+ * sem_util.ads, sem_util.adb (Is_Static_Expression_Function):
+ Renamed Is_Static_Function.
+ (Is_Static_Expression_Function_Call): Renamed
+ Is_Static_Function_Call.
+ * sem_ch6.adb, sem_elab.adb, sem_res.adb: Update calls to
+ Is_Static_Function*.
+ * sem_eval.adb (Fold_Dummy, Eval_Intrinsic_Call, Fold_Shift):
+ New.
+ (Eval_Call): Add support for intrinsic calls, code refactoring.
+ (Eval_Entity_Name): Code refactoring.
+ (Eval_Logical_Op): Update comment.
+ (Eval_Shift): Call Fold_Shift. Update comments.
+ * par-prag.adb (Par [Pragma_Extensions_Allowed]): Set
+ Ada_Version to Ada_Version_Type'Last to handle
+ Extensions_Allowed (On) consistently.
+ * opt.ads (Extensions_Allowed): Update documentation.
+ * sem_attr.adb: Update comment.
+ * doc/gnat_rm/implementation_defined_pragmas.rst: Update
+ documentation of Extensions_Allowed.
+ * gnat_rm.texi: Regenerate.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_aggr.adb (Resolve_Iterated_Component_Association): Ensure
+ Typ is never accessed uninitialized.
+
+2020-07-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * doc/gnat_rm/representation_clauses_and_pragmas.rst: Fix typo.
+ * gnat_rm.texi: Regenerate.
+ * libgnat/s-secsta.ads (Memory_Alignment): Likewise.
+
+2020-07-15 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch6.adb: Add a comma and fix a typo (machinary =>
+ machinery) in comment.
+ * exp_aggr.adb: Reformat, fix capitalization, and add a couple
+ of commas in a comment. Adjust columns in several code
+ fragments.
+ * sem_aggr.adb: Reformat and add a comma in a comment.
+
+2020-07-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch9.adb (Expand_N_Timed_Entry_Call): Use the Sloc of
+ the delay statement in the expansion.
+
+2020-07-15 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_aggr.adb (Resolve_Iterated_Component_Association): New
+ procedure, internal to Resolve_Container_Aggregate, to complete
+ semantic analysis of Iterated_Component_Associations.
+ * exp_aggr.adb (Expand_Iterated_Component): New procedure,
+ internal to Expand_Container_Aggregate, to expand the construct
+ into an implicit loop that performs individual insertions into
+ the target aggregate.
+
+2020-07-15 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch6.adb (Make_Build_In_Place_Call_Allocator): Normalize
+ the associated node for internally generated objects to be like
+ their SOAAT counter-parts.
+
+2020-07-15 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/g-socket.adb (Wait_On_Socket): Fix potentially
+ uninitialized variable.
+
+2020-07-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch8.adb (Find_Direct_Name): Fix code to match the comment.
+
+2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch13.adb (Analyze_Attribute_Definition_Clause) <Address>:
+ Issue an unconditional warning for an overlay that changes the
+ scalar storage order.
+
+2020-07-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch8.adb (Is_Actual_Parameter): Fix processing when parent
+ is a procedure call statement; extend comment.
+
+2020-07-10 Bob Duff <duff@adacore.com>
+
+ * sem_res.adb (Resolve_Expression_With_Actions): Check the rules
+ of AI12-0368, and mark the declare expression as static or known
+ at compile time as appropriate.
+ * sem_ch4.adb: Minor reformatting.
+ * libgnat/a-stoufo.ads, libgnat/a-stoufo.adb: Allow up to 9
+ replacement parameters. I'm planning to use this in the test
+ case for this ticket.
+
+2020-07-10 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Create a
+ proper signature when the access type denotes a parameterless
+ subprogram.
+ * exp_ch6.adb (Expand_Call): Handle properly a parameterless
+ indirect call when the corresponding access type has contracts.
+
+2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_aggr.adb
+ (Convert_To_Positional): Add Dims local variable
+ and pass it in calls to Is_Flat and Flatten.
+ (Check_Static_Components): Pass Dims in call to
+ Is_Static_Element.
+ (Nonflattenable_Next_Aggr): New predicate.
+ (Flatten): Add Dims parameter and Expr local variable. Call
+ Nonflattenable_Next_Aggr in a couple of places. In the case
+ when an Others choice is present, check that the element is
+ either static or a nested aggregate that can be flattened,
+ before disregarding the replication limit for elaboration
+ purposes. Check that a nested array is flattenable in the case
+ of a multidimensional array in any position. Remove redundant
+ check in the Others case and pass Dims in call to
+ Is_Static_Element. Use Expr variable.
+ (Is_Flat): Change type of Dims parameter from Int to Nat.
+ (Is_Static_Element): Add Dims parameter. Replace tests on
+ literals with call to Compile_Time_Known_Value. If everything
+ else failed and the dimension is 1, preanalyze the expression
+ before calling again Compile_Time_Known_Value on it. Return
+ true for null.
+ (Late_Expansion): Do not expand further if the assignment to the
+ target can be done directly by the back end.
+
+2020-07-10 Arnaud Charlet <charlet@adacore.com>
+
+ * osint-c.adb (Set_File_Name): Preserve casing of file.
+ * osint.adb (File_Names_Equal): New.
+ (Executable_Name): Use File_Equal instead of
+ Canonical_Case_File_Name.
+
+2020-07-10 Pascal Obry <obry@adacore.com>
+
+ * libgnat/g-socket.adb (Wait_On_Socket): Fix memory leaks and
+ file descriptor leaks. A memory leak was created each time the
+ routine was called without a selector (Selector = Null). Also,
+ in case of exception in the routine a memory leak and descriptor
+ leak was created as the created file selector was not closed.
+
+2020-07-10 Pascal Obry <obry@adacore.com>
+
+ * libgnat/g-socket.adb: Minor style fixes.
+
+2020-07-10 Javier Miranda <miranda@adacore.com>
+
+ * sem_util.adb
+ (Immediate_Context_Implies_Is_Potentially_Unevaluated): New
+ subprogram.
+ (Is_Potentially_Unevaluated): Do not stop climbing the tree on
+ the first candidate subexpression; required to handle nested
+ expressions.
+
+2020-07-10 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_aggr.adb, exp_spark.adb, sem_ch13.ads, sem_ch13.adb,
+ snames.ads-tmpl: Minor reformatting and typo fixes.
+
+2020-07-10 Yannick Moy <moy@adacore.com>
+
+ * sem_util.adb (Has_Enabled_Property): Add handling of
+ non-variable objects.
+
+2020-07-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Check_Completion): Refactor chained
+ if-then-elsif-... statement to be more like a case
+ statement (note: we can't simply use case statement because of
+ Is_Intrinsic_Subprogram in the first condition).
+
+2020-07-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.ads (E_Protected_Object): Enumeration literal removed.
+ * lib-xref.ads (Xref_Entity_Letters): Remove reference to
+ removed literal.
+ * sem_ch3.adb (Check_Completion): Likewise.
+ * sem_util.adb (Has_Enabled_Property): Likewise.
+
+2020-07-10 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_aggr.adb (Max_Aggregate_Size): Use small limit for
+ aggregate inside subprograms.
+ * sprint.adb (Sprint_Node_Actual [N_Object_Declaration]): Do not
+ print the initialization expression if the No_Initialization
+ flag is set.
+ * sem_util.ads, sem_util.adb (Predicate_Enabled): New.
+ * exp_ch4.adb (Expand_N_Type_Conversion): Code cleanup and apply
+ predicate check consistently.
+ * exp_ch6.adb (Expand_Actuals.By_Ref_Predicate_Check): Ditto.
+ * sem_ch3.adb (Analyze_Object_Declaration): Ditto.
+ * exp_ch3.adb (Build_Assignment): Revert handling of predicate
+ check for allocators with qualified expressions, now handled in
+ Freeze_Expression directly.
+ * sem_aggr.adb: Fix typos.
+ * checks.adb: Code refactoring: use Predicate_Enabled.
+ (Apply_Predicate_Check): Code cleanup.
+ * freeze.adb (Freeze_Expression): Freeze the subtype mark before
+ a qualified expression on an allocator.
+ * exp_util.ads, exp_util.adb (Within_Internal_Subprogram):
+ Renamed Predicate_Check_In_Scope to clarify usage, refine
+ handling of predicates within init procs which should be enabled
+ when the node comes from source.
+ * sem_ch13.adb (Freeze_Entity_Checks): Update call to
+ Predicate_Check_In_Scope.
+
+2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_Array_Comparison): Reformat.
+ (Expand_Concatenate): Use standard size values directly and use
+ Standard_Long_Long_Unsigned instead of RE_Long_Long_Unsigned.
+ (Expand_Modular_Op): Use Standard_Long_Long_Integer in case the
+ modulus is larger than Integer.
+ (Expand_N_Op_Expon): Use standard size value directly.
+ (Narrow_Large_Operation): Use Uint instead of Nat for sizes and
+ use a local variable for the size of the type.
+ (Get_Size_For_Range): Return Uint instead of Nat.
+ (Is_OK_For_Range): Take Uint instead of Nat.
+
+2020-07-10 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch6.adb (Make_Build_In_Place_Iface_Call_In_Allocator):
+ Build the internal anonymous access type using as a reference
+ the designated type imposed by the context (instead of using the
+ return type of the called function).
+
+2020-07-10 Yannick Moy <moy@adacore.com>
+
+ * sem_res.adb (Resolve_Actuals): Protect call to
+ Is_Valued_Procedure.
+
+2020-07-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Process_Discriminants): Revert recent change to
+ location of Set_Ekind; detect effectively volatile discriminants
+ by their type only.
+
+2020-07-10 Joffrey Huguet <huguet@adacore.com>
+
+ * libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Add global
+ contract (Global => null) to all functions.
+
+2020-07-10 Ed Schonberg <schonberg@adacore.com>
+
+ * aspects.ads: Add Aspect_Aggregate.
+ * exp_aggr.adb (Expand_Container_Aggregate): Expand positional
+ container aggregates into separate initialization and insertion
+ operations.
+ * sem_aggr.ads (Resolve_Container_Aggregate): New subprogram.
+ * sem_aggr.adb (Resolve_Container_Aggregate): Parse aspect
+ aggregate, establish element types and key types if present, and
+ resolve aggregate components.
+ * sem_ch13.ads (Parse_Aspect_Aggregate): Public subprogram used
+ in validation, resolution and expansion of container aggregates
+ * sem_ch13.adb
+ (Parse_Aspect_Aggregate): Retrieve names of primitives specified
+ in aspect specification.
+ (Validate_Aspect_Aggregate): Check legality of specified
+ operations given in aspect specification, before nane
+ resolution.
+ (Resolve_Aspect_Aggregate): At freeze point resolve operations
+ and verify that given operations have the required profile.
+ * sem_res.adb (Resolve): Call Resolve_Aspect_Aggregate if aspect
+ is present for type.
+ * snames.ads-tmpl: Add names used in aspect Aggregate: Empty,
+ Add_Named, Add_Unnamed, New_Indexed, Assign_Indexed.
+
+2020-07-10 Arnaud Charlet <charlet@adacore.com>
+
+ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-shabig.o.
+ * libgnat/s-shabig.ads: New file to share definitions.
+ * libgnat/s-genbig.ads, libgnat/s-genbig.adb: Reorganized to
+ make it more generic and flexible in terms of memory allocation
+ and data structure returned.
+ (To_String): Moved to System.Generic_Bignums to allow sharing
+ this code.
+ (Big_And, Big_Or, Big_Shift_Left, Big_Shift_Right): New.
+ * libgnat/s-bignum.adb, libgnat/s-bignum.ads: Adapt to new
+ System.Generic_Bignums spec.
+ * libgnat/a-nbnbin.adb: Likewise.
+ (To_String): Moved to System.Generic_Bignums to allow sharing
+ this code.
+ * libgnat/a-nbnbre.adb (Normalize): Fix handling of Num = 0
+ leading to an exception.
+
+2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * freeze.adb (Freeze_Expr_Types): Replace call to Find_Aspect
+ with call to Find_Value_Of_Aspect and adjust accordingly.
+
+2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.adb (Write_Field24_Name): Handle E_Loop_Parameter.
+ * freeze.adb (Freeze_Expr_Types): Freeze the iterator type used as
+ Default_Iterator of the name of an N_Iterator_Specification node.
+
+2020-07-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.adb (Determine_Range): Deal with Min and Max attributes.
+ * exp_ch6.adb (Expand_Call_Helper): When generating code to pass
+ the accessibility level to the caller in the case of an actual
+ which is an if-expression, also remove the nodes created after
+ the declaration of the dummy temporary.
+ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Use Natural as
+ the type of the minimum accessibility level object.
+
+2020-07-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Process_Discriminants): Set Ekind of the
+ processed discriminant entity before passing to
+ Is_Effectively_Volatile, which was crashing on a failed
+ assertion.
+ * sem_prag.adb (Analyze_External_Property_In_Decl_Part): Prevent
+ call to No_Caching_Enabled with entities other than variables,
+ which was crashing on a failed assertion.
+ (Analyze_Pragma): Style cleanups.
+ * sem_util.adb (Is_Effectively_Volatile): Enforce comment with
+ an assertion; prevent call to No_Caching_Enabled with entities
+ other than variables.
+ (Is_Effectively_Volatile_Object): Only call
+ Is_Effectively_Volatile on objects, not on types.
+ (No_Caching_Enabled): Enforce comment with an assertion.
+
+2020-07-10 Yannick Moy <moy@adacore.com>
+
+ * debug.adb: Update comments to free usage of -gnatdF.
+
+2020-07-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_Delta_Or_Update): Refactored from
+ Expand_SPARK_N_Attribute_Reference; rewrite into N_Aggregate or
+ N_Delta_Aggregate depending on what is being rewritten.
+ (Expand_SPARK_N_Delta_Aggregate): New routine to expand
+ delta_aggregate.
+ (Expand_SPARK_N_Attribute_Reference): Call the refactored
+ routine.
+
+2020-07-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Fix
+ expansion of attribute Update.
+
+2020-07-10 Arnaud Charlet <charlet@adacore.com>
+
+ * sem.adb (Walk_Library_Items): Fix handling of Ghost units.
+
+2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * tracebak.c [generic implementation]: Add pragma GCC diagnostic
+ to disable warning about __builtin_frame_address.
+
+2020-07-08 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * socket.c [_WIN32] (__gnat_minus_500ms): Parentheses around &&
+ operations. Remove notes about TN in comment.
+
+2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * adaint.h (__gnat_expect_portable_execvp): Fix prototype.
+ (__gnat_expect_poll): Likewise.
+ * expect.c [_WIN32]: Include adaint.h file.
+ (__gnat_waitpid): Remove useless variable.
+ (__gnat_expect_portable_execvp): Add ATTRIBUTE_UNUSED on parameter.
+ * raise-gcc.c [SEH] (__gnat_personality_v0): Add ATTRIBUTE_UNUSED.
+ * socket.c [_WIN32] (__gnat_getservbyport): Add ATTRIBUTE_UNUSED on
+ a couple of parameters.
+ (__gnat_gethostbyname): Likewise.
+ (__gnat_gethostbyaddr): Likewise.
+ (__gnat_getservbyname): Likewise.
+ (__gnat_last_socket_in_set): Use variables local to loops.
+ (__gnat_socket_ioctl): Cast 3rd parameter to proper type if _WIN32.
+ (__gnat_inet_pton): Cast 2nd parameter to proper type if _WIN32.
+ * sysdep.c (__gnat_localtime_tzoff): Remove superfluous test.
+ * terminals.c [_WIN32]: Include io.h file.
+ (is_gui_app): Remove useless variables and fix unsigned comparison.
+ (nt_spawnve): Add ATTRIBUTE_UNUSED on first parameter. Initialize a
+ local variable and remove others that are useless. Add missing cast
+ (__gnat_setup_child_communication): Remove useless variable and call
+ Use proper formatting string in call to sprintf.
+ (__gnat_setup_parent_communication): Cast to proper type.
+ (find_child_console): Fix prototype and remove useless variable.
+ (find_process_handle): Likewise.
+ (_gnat_interrupt_process): Move to after __gnat_interrupt_pid.
+ (__gnat_reset_tty): Add ATTRIBUTE_UNUSED on parameter, remove return
+ (__gnat_setup_winsize): Add ATTRIBUTE_UNUSED on all parameters.
+
+2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Allocator): In the subtype mark case, do
+ not apply constraint checks if the No_Initialization flag is set.
+
+2020-07-08 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch9.adb
+ (Build_Class_Wide_Master): Insert the declaration of _Master
+ before its use; required to avoid assertion failure in the
+ backend.
+
+2020-07-08 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/i-cexten.ads (long_long, unsigned_long_long): Now
+ subtypes of Interfaces.C types.
+ * libgnat/a-calcon.ads, libgnat/a-calcon.adb
+ (To_Unix_Nano_Time): Use Interfaces.C.long_long instead of
+ Interfaces.C.Extensions.long_long.
+
+2020-07-08 Vasiliy Fofanov <fofanov@adacore.com>
+
+ * debug.adb: Document new switch.
+ * exp_ch6.adb (Warn_BIP): New function that warns if the switch
+ is on. Call it from Make_Build_In_Place_* functions. Warn_BIP
+ is not needed in Make_Build_In_Place_Iface_*, because those call
+ Make_Build_In_Place_Call_In_Object_Declaration or similar.
+
+2020-07-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * erroutc.adb (Matches): Fix comments.
+
+2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * freeze.adb (Has_Decl_In_List): New predicate to check that an
+ entity is declared in a list of nodes.
+ (Freeze_Expression): Use it to deal with Expression_With_Actions,
+ short-circuit expression, if- and case-expression and ensure that
+ the freeze node is put onto their Actions list if the entity is
+ declared locally.
+
+2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * freeze.adb (In_Expanded_Body): Return true for the body of a
+ generated predicate function.
+
+2020-07-08 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_attr.adb: Remove hyphens in comments, plus minor code
+ reformatting.
+ * sem_ch13.adb: Fix typo (that => than).
+ * sem_util.adb: Add hyphen in comment ("class-wide").
+
+2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * freeze.adb (Freeze_Array_Type): Add comment on implementation
+ choice for byte-packed array types.
+
+2020-07-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Correct prefix of 'Result
+ this prefix is a generic function but the enclosing aspect or
+ pragma is attached to its instance.
+ * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Analyze
+ generic subprogram formal parameters (including the implicit
+ result of a generic function) and only then analyse its aspects,
+ because with Relaxed_Initialization the aspect expression might
+ refer to those formal parameters.
+ * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Accept
+ aspect on generic subprograms; install formal parameters of a
+ generic subprogram but not formal parameters of the generic unit
+ itself (the previous code was inspired by aspects Post and
+ Depends, where both kinds of formals are allowed).
+ * sem_util.ads (Enter_Name): Fix name of a subprogram referenced
+ in comment.
+
+2020-07-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch12.adb (Analyze_Generic_Subprogram_Declaration): Call
+ Analyze_Aspect_Specifications after setting Ekind of the
+ analyzed entity.
+ * sem_ch13.adb (Analyze_Aspect_Yield): Remove minimal decoration
+ of generic subprograms.
+
+2020-07-08 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_prag.adb (Process_Inline): Check for duplicate
+ pragma+aspect Inline. Minor code cleanup.
+ (Check_Duplicate_Pragma): Add warning for duplicate
+ pragma [No_]Inline under -gnatwr.
+ * sinfo.ads, sinfo.adb (Next_Rep_Item): Allow N_Null_Statement
+ which can appear when a pragma is rewritten.
+ * sem_util.ads, sem_util.adb, bindo-writers.adb: Fix bad
+ copy/paste now flagged.
+ * libgnat/s-mmap.ads: Remove redundant pragma Inline.
+
+2020-07-08 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_util.adb (Build_Class_Wide_Clone_Body): Update entities to
+ refer to the right spec.
+
+2020-07-08 Bob Duff <duff@adacore.com>
+
+ * sem_ch13.adb (Predicate_Failure): Check that the type has
+ predicates. Remove the setting of Has_Delayed_Aspects and
+ Freeze_Node, because (if the code is legal) it should have
+ already been done by the predicate aspect.
+
+2020-07-08 Gary Dismukes <dismukes@adacore.com>
+
+ * par-ch4.adb (P_Iterated_Component_Association): Typo
+ corrections.
+
+2020-07-08 Ed Schonberg <schonberg@adacore.com>
+
+ * par.adb (P_Iterator_Specification): Make public for use in
+ other parser subprograms.
+ * par-ch4.adb (P_Iterated_Component_Association): In Ada_2020,
+ recognize use of Iterator_Specification in an element iterator.
+ To simplify disambiguation between the two iterator forms, mark
+ the component association as carrying an Iterator_Specification
+ only when the element iterator (using "OF") is used.
+ * par-ch5.adb (P_Loop_Parameter_Specification): In Ada_2020,
+ parse iterator filter when present.
+ (P_Iterator_Specification): Ditto. Remove declaration of
+ P_Iterator_Specification, now in parent unit.
+ * exp_ch5.adb (Expand_N_Loop_Statement): Apply Iterator filter
+ when present.
+ (Expand_Iterator_Loop_Over_Array): Ditto.
+ (Expand_Iterator_Loop_Over_Container): Ditto.
+ * sem_aggr.adb (Resolve_Array_Aggregate): Emit error nessage if
+ an iterated component association includes a iterator
+ specificcation with an element iterator, i.e. one that uses the
+ OF keyword.
+ * sem_ch5.adb (Analyze_Iterator_Specification): Analyze Iterator
+ filter when present.
+ (Analyze_Loop_Parameter_Specification): Ditto.
+ * sinfo.adb: Suprogram bodies for new syntactic element
+ Iterator_Filter.
+ * sinfo.ads: Add Iterator_Filter to relevant nodes. Structure
+ of Component_Association and Iteroted_Component_Association
+ nodes is modified to take into account the possible presence of
+ an iterator specification in the latter.
+
+2020-07-08 Yannick Moy <moy@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Is_Attribute_Loop_Entry): New
+ function for GNATProve.
+
+2020-07-08 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_ch13.adb (Analyze_Record_Representation_Clause,
+ Check_Record_Representation_Clause): Add expected and actual
+ size to error message.
+
+2020-07-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Safe_To_Capture_Value): Return
+ True for in-parameters.
+
+2020-07-08 Justin Squirek <squirek@adacore.com>
+
+ * exp_attr.adb (Expand_Attribute): Set
+ Stores_Attribute_Old_Prefix to generated renamings of 'Old
+ constants for later use in generating finalization routines.
+ * exp_ch7.adb (Build_Finalizer): Minor reformatting. Use "or
+ else" operators.
+
+2020-07-08 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch6.adb (Expand_Simple_Function_Return): Remove ugly code
+ that was copying the return expression, resetting Analyzed
+ flags, etc. for the return expression of static expression
+ functions.
+ * inline.adb (Inline_Static_Expression_Function_Call): Set the
+ Parent of the copied expression to that of the call. This avoids
+ a blowup in Insert_Actions when GNATprove_Mode is set and there
+ are nested SEF calls. Add ??? comment.
+ * sem_ch6.adb (Analyze_Expression_Function): In the case of a
+ static expression function, create a new copy of the expression
+ and replace the function's expression with the copy; the
+ original expression is used in the expression function's body
+ and will be analyzed and rewritten, and we need to save a clean
+ copy for later use in processing static calls to the function.
+ This allows removing the kludgy code that was in
+ Expand_Simple_Function_Return.
+ * sem_eval.adb (Eval_Qualified_Expression): Return immediately
+ if any errors have been posted on the qualified expression, to
+ avoid blowups when GNATprove_Mode is enabled (or with -gnatd.F),
+ since illegal static expressions are handled differently in that
+ case and attempting to fold such expressions would fail.
+
+2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * repinfo.adb (Compute_Max_Length): Skip hidden discriminants.
+ (List_Record_Layout): Likewise.
+ (List_Structural_Record_Layout): Use First_Discriminant instead
+ of First_Stored_Discriminant and Next_Discriminant instead of
+ Next_Stored_Discriminant to walk the list of discriminants.
+
+2020-07-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Analyze
+ optional boolean expressions.
+ * sem_util.ads, sem_util.adb (Has_Relaxed_Initialization): Adapt
+ query; update comment.
+
+2020-07-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.ads (Current_Value): Fix typo in comment.
+ * exp_ch2.adb (Expand_Current_Value): Remove unnecessary "Start
+ of processing ..." comment.
+ * exp_util.adb (Set_Entity_Current_Value): Fix unbalanced paren
+ in comment.
+ (Get_Current_Value_Condition): Fix layout in comment.
+ * sem_ch5.adb (Analyze_Cond_Then): Replace commented condition
+ with pragma Assert.
+
+2020-07-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch5.adb (Expand_N_If_Statement): Detect True/False
+ prefixed with Standard.
+
+2020-07-08 Bob Duff <duff@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Specifications): Add freeze node
+ for the Underlying_Full_View if it exists. The freeze node is
+ what triggers the generation of the predicate function.
+ * freeze.adb: Minor reformatting.
+
+2020-07-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Narrow_Large_Operation): Use the base type instead
+ of the first subtype of standard integer types as narrower type.
+
+2020-07-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * freeze.adb (Freeze_Array_Type): Use Ctyp more consistently.
+ Move code setting the alignment in the non-packed case to...
+ * layout.adb (Layout_Type): ...here.
+
+2020-07-07 Bob Duff <duff@adacore.com>
+
+ * treepr.adb (Print_Node): Add code to test Is_Extension.
+
+2020-07-07 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch4.adb (Try_Container_Indexing): Add ??? comment. Protect
+ against malformed tree in case of errors.
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.adb, sem_ch10.adb, sem_ch12.adb, sem_ch8.adb: Use
+ Is_Generic_Subprogram.
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch8.adb (Analyze_Use_Package): Replace low-level,
+ error-prone Ekind_In tests with high-level Is_Generic_Subprogram
+ and Is_Subprogram.
+
+2020-07-07 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch6.adb (Check_Formal_Subprogram_Conformance): New
+ subprogram to handle checking without systematically emitting an
+ error.
+ (Check_Conformance): Update call to
+ Check_Formal_Subprogram_Conformance and fix handling of Conforms
+ and Errmsg parameters.
+
+2020-07-07 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch4.adb (Tagged_Membership): Generate a call to
+ CW_Membership instead of using Build_CW_Membership.
+ (Expand_N_In): Remove wrong handling of null access types and
+ corresponding comment.
+ * exp_intr.adb (Expand_Dispatching_Constructor_Call): Generate a
+ call to CW_Membership instead of using Build_CW_Membership.
+ * rtsfind.ads: Add CW_Membership.
+ * exp_atag.ads, exp_atag.adb (Build_CW_Membership): Removed.
+ * einfo.ads: Fix typo.
+ * libgnat/a-tags.ads, libgnat/a-tags.adb (CW_Membership): Moved
+ back to spec.
+
+2020-07-07 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Create
+ proper subprogram specification for body, using names in the
+ subprogram declaration but distinct entities.
+ * exp_ch6.adb (Expand_Call): If this is an indirect call
+ involving a subprogram wrapper, insert pointer parameter in list
+ of actuals with a parameter association, not as a positional
+ parameter.
+
+2020-07-07 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch6.adb (Expand_Branch): Verify the original node is a
+ conditional expression before recursing further.
+ (Insert_Level_Assign): Transform assertion into an explicit
+ raise.
+
+2020-07-07 Steve Baird <baird@adacore.com>
+
+ * sem_attr.adb (Eval_Attribute): Generalize static evaluation of
+ Size attribute references to also handle
+ Max_Size_In_Storage_Elements references.
+
+2020-07-07 Javier Miranda <miranda@adacore.com>
+
+ * sem_util.adb (Is_Potentially_Unevaluated): Code cleanup.
+
+2020-07-07 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.ads (Expander Routines): Update the description of the
+ Do_Range_Check mechanism.
+ * checks.adb (Selected_Range_Checks): Fix typo.
+ * exp_ch9.adb: Add with and use clause for Checks.
+ (Actual_Index_Expression): Generate a range check if requested.
+ (Entry_Index_Expression): Likewise.
+ * sem_attr.adb (Resolve_Attribute) <Attribute_Count>: Call
+ Apply_Scalar_Range_Check instead of Apply_Range_Check.
+ * sem_ch9.adb (Analyze_Accept_Statement): Likewise.
+ * sem_res.adb (Resolve_Entry): Likewise, after having set the
+ actual index type on the prefix of the indexed component.
+ (Resolve_Indexed_Component): Remove useless conditional construct.
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * contracts.adb (Analyze_Entry_Or_Subprogram_Contract,
+ Process_Preconditions_For): Freeze expression that has been
+ relocated to pragma Precondition, not the expression which is
+ still in the aspect.
+
+2020-07-07 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch6.adb (Check_Conformance): Remove unnecessary (and
+ wrong) code.
+ * sem_ch8.adb (Check_Null_Exclusion): Post error at proper
+ location. Introduce new helper Null_Exclusion_Mismatch and fix
+ implementation wrt formal subprograms used in generic bodies.
+ (Analyze_Subprogram_Renaming): Fix missing setting of
+ Error_Msg_Sloc.
+ (Analyze_Object_Renaming): Replace "in Anonymous_Access_Kind" by
+ Is_Anonymous_Access_Type.
+ * sem_util.adb (Has_Null_Exclusion): Fix handling of
+ N_Parameter_Specification.
+ * sem_ch12.adb (Instantiate_Object): Replace "in
+ Anonymous_Access_Kind" by Is_Anonymous_Access_Type.
+
+2020-07-07 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb (Freeze_Expr_Types): Freeze the designated type of
+ the explicit dereference.
+
+2020-07-07 Javier Miranda <miranda@adacore.com>
+
+ * sem_util.adb (Is_Potentially_Unevaluated): Protect reading
+ attribute Etype.
+
+2020-07-07 Bob Duff <duff@adacore.com>
+
+ * libgnat/g-catiio.adb (Value, Parse_ISO_8601): Unsuppress
+ checks, and don't rely on 'Valid.
+
+2020-07-07 Arnaud Charlet <charlet@adacore.com>
+
+ * Makefile.rtl: Remove dead code.
+ * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ Document gnatbind -xdr switch.
+ * gnat_ugn.texi: Regenerate.
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * doc/gnat_ugn/building_executable_programs_with_gnat.rst
+ (Validity Checking): Add "p" to the list of switches enabled by
+ -gnatVa.
+ * gnat_ugn.texi: Regenerate.
+
+2020-07-07 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Add call
+ to Check_Restriction_No_Specification_Of_Aspect.
+ * sem_prag.adb (Analyze_Pragma): Likewise.
+ * restrict.ads (Check_Restriction_No_Specification_Of_Aspect):
+ Mention possible new node kinds in documentation.
+ * restrict.adb (Check_Restriction_No_Specification_Of_Aspect):
+ Retrieve aspect id from different fields if given node is an
+ N_Pragma or an N_Attribute_Definition_Clause.
+
+2020-07-07 Gary Dismukes <dismukes@adacore.com>
+
+ * contracts.adb (Add_Invariant_And_Predicate_Checks): Relax the
+ condition for doing invariant checks so that in-mode parameters
+ of procedures are also checked (required by AI05-0289, and
+ restricted to procedures by AI12-0044). This is done in a
+ procedure's nested postconditions procedure.
+ * exp_ch6.adb (Expand_Actuals): Also perform postcall invariant
+ checks for in parameters of procedures (but not functions).
+ Moved invariant-checking code to end of Expand_Actuals
+ (including the nested function Is_Public_Subp).
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Resolve_Delta_Array_Aggregate): Make Index_Type
+ a constant.
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_aggr.adb (Expand_N_Delta_Aggregate): Use type of the delta
+ base expression for the anonymous object of the delta aggregate.
+
+2020-07-07 Javier Miranda <miranda@adacore.com>
+
+ * sem_util.ads (Interval_Lists): Reordering routine.
+ * sem_util.adb (Interval_Lists): Reordering routines to keep
+ them alphabetically ordered.
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Resolve_Attribute): Do not call
+ Check_Non_Static_Context.
+
+2020-07-07 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_elab.adb (Is_Guaranteed_ABE): Take into account null
+ procedures.
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch5.adb (Analyze_Assignment): Reuse Is_Assignable.
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Add scalar
+ range checks for 'Update on arrays just like for 'Update on
+ records.
+ * sem_attr.adb (Analyze_Array_Component_Update): Do not set
+ range checks for single-dimensional arrays.
+ (Resolve_Attribute): Do not set range checks for both single-
+ and multi- dimensional arrays.
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem.ads (Sem): Fix description.
+
+2020-07-07 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Analyze_Relaxed_Parameter): Fix for protected
+ entries.
+
+2020-07-06 Piotr Trojanek <trojanek@adacore.com>
+
+ * checks.adb (Apply_Scalar_Range_Check): Use Is_RTE.
+
+2020-07-06 Bob Duff <duff@adacore.com>
+
+ * libgnat/g-catiio.ads: Document newly supported format. Add
+ ISO_Time constant, for convenience.
+ * libgnat/g-catiio.adb (Image_Helper): New helper function to do
+ all the formatting work, called by the two exported Image
+ functions. Add support for "%:::z" here. Add a Time_Zone
+ parameter used by the "%:::z" processing. This parameter is not
+ used for the actual time zone computations; local time is always
+ used for that, for ease of implementation reasons. It would
+ make sense to use Append throughout this function, but that's a
+ cleanup for another day.
+ (Image): Modify these to pass the local time zone, or the
+ specified time zone, as appropriate.
+
+2020-07-06 Bob Duff <duff@adacore.com>
+
+ * libgnat/g-catiio.ads: Change the regular expression that
+ documents the allowed format to match what ISO-8601 allows.
+ * libgnat/g-catiio.adb (Scan_Subsecond): Rewrite so it doesn't
+ assume the subsecond comes last.
+ (Parse_ISO_8601): Parse an optional subsecond, followed by an
+ optional time zone, rather than making these alternatives to
+ each other.
+
+2020-07-06 Bob Duff <duff@adacore.com>
+
+ * libgnat/g-catiio.adb (Parse_ISO_8601): Minor cleanups:
+ Give some objects clearer names.
+ Make some objects more local to where they are used.
+ Remove some validity checks that can't fail, because some of
+ the variables tested have been moved so they're not visible here.
+ Anyway, Wrong_Syntax is about errors in the input, not data
+ validity.
+ Use Time_Zone_Seen instead of Local_Sign = ' ' to determine
+ that a time zone indication was seen.
+ We don't need to distinguish two different kinds of
+ syntax error (End_Of_Source_Reached and Wrong_Syntax),
+ so use Wrong_Syntax always.
+ Remove comment, "Certain scanning scenarios may handle
+ this exception on their own."; there are no such scenarios.
+
+2020-07-06 Bob Duff <duff@adacore.com>
+
+ * libgnat/g-catiio.ads, libgnat/g-catiio.adb (Image): New
+ function. It might seem like the local-time Image should be
+ implemented in terms of the Time_Zone Image, but that would be
+ far harder to implement, so we do it the other way around.
+
+2020-07-06 Thomas Quinot <quinot@adacore.com>
+
+ * libgnat/g-sechas.ads, libgnat/g-sechas.adb: Refactor to use
+ Stream_Element_Array as the internal buffer type.
+ * libgnat/g-shshco.adb: Adjust to use Stream_Element_Offset
+ instead of Integer as the index in the internal state buffer.
+
+2020-07-06 Gary Dismukes <dismukes@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst, errout.ads,
+ erroutc.adb, exp_ch4.adb, exp_ch6.adb, freeze.adb: Comment
+ rewording/reformatting/typo fixes. Replace "ie." with "that is"
+ in comment; "can not" -> "cannot", and remove an extraneous
+ underscore in another comment.
+ * gnat_rm.texi, gnat_ugn.texi: Regenerate.
+
+2020-07-06 Javier Miranda <miranda@adacore.com>
+
+ * sem_util.ads (Interval_Lists.Aggregate_Intervals): New
+ subprogram.
+ * sem_util.adb (Has_Null_Others_Choice,
+ Non_Static_Or_Null_Range, Interval_Lists.Aggregate_Intervals):
+ New subprograms.
+ (Is_Potentially_Unevaluated): Adding support to detect
+ potentially unevaluated components of array aggregates.
+
+2020-07-06 Bob Duff <duff@adacore.com>
+
+ * libgnat/g-catiio.adb (Parse_ISO_8601): New name for
+ Parse_ISO_8861_UTC. 8601 is the correct ISO standard number.
+ Also, "UTC" was confusing. All Time values are represented in
+ UTC, but the ISO 8601 date strings include a time zone.
+ If a time zone was specified, call
+ Ada.Calendar.Formatting.Time_Of instead of
+ GNAT.Calendar.Time_Of, because the latter adjusts to the current
+ time zone, whereas we want to use (just) the time zone specified
+ in the ISO string. This allows us to pass Time_Zone instead to
+ Time_Of, instead of adjusting by Local_Disp by hand.
+ If no time zone was specified, call GNAT.Calendar.Time_Of as
+ before.
+ Use expanded names to clarify which Time_Of is being called.
+ Remove redundant comment, and move nonredundant part of the
+ commment to the spec.
+ (Value): Minor: use "not in" instead of "or else".
+ * libgnat/g-catiio.ads: Comment moved here. Correct the ISO
+ standard number.
+ * libgnat/g-calend.adb: Add ??? comments.
+ * libgnat/a-calend.ads, libgnat/a-calend.adb: Update obsolete
+ comments regarding the representation of type Time. Move the
+ information about the epoch (year 2150) to the spec, and avoid
+ uttering "2150" more than once.
+ * libgnat/a-catizo.ads (Time_Offset): Add comment.
+
+2020-07-06 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch5.adb (Find_Component): If the target type is a derived
+ record type and the required component is a discriminant that is
+ renamed in the derived type declaration, use the name of the
+ original discriminant to locate the intended target component.
+
+2020-07-06 Justin Squirek <squirek@adacore.com>
+
+ * sem_ch12.adb (Analyze_Associations): Add check for errors on
+ the generic formal before continuing with instantiation.
+
+2020-07-06 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbin.ads, libgnat/a-nbnbin.adb,
+ libgnat/a-nbnbin__gmp.adb: Use more Valid_Big_Integer.
+
+2020-07-06 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_util.ads (Get_Index_Subtype): Fix duplicate "Last".
+
+2020-07-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sinfo.ads: Indicate that Field 1 of an N_Delta_Aggregate is
+ unused. Previously it was erroneously labelled as holding an
+ Expressions list, in analogy with other aggregate constructs,
+ but there are no Expressions attached to this node syntactically
+ or semantically.
+
+2020-07-06 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Eval_Attribute): Check if constant has an
+ initialization expression.
+
+2020-07-06 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Apply
+ scalar range checks.
+ * sem_attr.adb (Resolve_Attribute): Do not set scalar range
+ checks when resolving attribute Update.
+
+2020-07-06 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute, Attribute_Constrained): Issue
+ a warning if the attribute prefix is a current instance
+ reference within an aspect of a type or subtype.
+ (Address_Checks): Replace test of Is_Object (Ent) with
+ Is_Object_Reference (P) so that testing for current instances
+ will be done.
+ (Eval_Attribute): Add test for current instance reference, to
+ ensure that we still fold array attributes when current
+ instances are involved, since value prefixes are allowed for
+ array attributes, and will now be excluded by
+ Is_Object_Reference.
+ * sem_util.ads (Is_Current_Instance_Reference_In_Type_Aspect):
+ New exported query function.
+ * sem_util.adb (Is_Object_Reference): Return False for the case
+ where N is a current instance reference within an
+ aspect_specification of a type or subtype (basically if the
+ reference occurs within a predicate, invariant, or DIC aspect
+ expression).
+ (Is_Current_Instance_Reference_In_Type_Aspect): New function
+ that tests whether a node is a reference to a current instance
+ formal of a predicate, invariant, or
+ Default_Initial_Condition (DIC) subprogram.
+
+2020-07-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_res.adb (Resolve_Declare_Expression): New subprogram, to
+ install the scope holding local declarations of the expression,
+ before completing its resolution.
+ (Resolve): For an Expression_With_Actions that comes from a
+ source occurrence of a Declare_Expression, call new subprogram.
+
+2020-07-06 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Reuse SPARK_Implicit_Load.
+
+2020-07-06 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Propagate
+ exception when switch -gnatdk is used and no previous errors are
+ present.
+ * sem_eval.adb (Compile_Time_Known_Value, Is_In_Range):
+ Likewise.
+ * sem_warn.adb (Operand_Has_Warnings_Suppressed): Likewise.
+
+2020-07-06 Richard Kenner <kenner@adacore.com>
+
+ * exp_unst.adb (Needs_Fat_Pointer): Don't check for formal.
+ (Unnest_Subprogram): Use 'Unchecked_Access instead of 'Access
+ when populating activation record.
+
+2020-07-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Rename parameter
+ from Bit_Packed_Array to Force.
+ (Expand_Actuals): Do not apply BIP processing if the subprogram
+ is intrinsic. Adjust calls to Add_Simple_Call_By_Copy_Code and
+ add one for In parameters whose actual is a CPP constructor call.
+
+2020-07-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_attr.adb (Eval_Attribute): Do not apply range checks in
+ the case of 'Pos applied to an integer type here.
+
+2020-07-06 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Analyze_Object_Declaration): If the type is an
+ Unchecked_Union, and the expression is an aggregate. complete
+ the analysis and resolution of the aggregate, and treat like a
+ regular object declaration, instead of as a renaming
+ declarattion.
+
+2020-07-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch9.adb (Is_Potentially_Large_Family): Add documentation.
+ (Actual_Index_Expression): Use Entry_Index_Type.
+ (Build_Entry_Count_Expression): Likewise.
+ (Build_Find_Body_Index): Likewise.
+ (Collect_Entry_Families): Likewise. Use directly the bounds of
+ the index type to find out whether the family is large.
+ (Entry_Index_Expression): Likewise.
+
+2020-07-06 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_res.adb (Resolve_Range): Resolve both low and high bounds
+ with the range type.
+
+2020-07-06 Arnaud Charlet <charlet@adacore.com>
+
+ * aspects.ads (Is_Representation_Aspect):
+ Default_Component_Value is a representation aspect.
+ * sem_ch13.adb (Check_Aspect_Too_Late, Rep_Item_Too_Late): Relax
+ RM 13.1(10) rule wrt primitive operations for Ada 202x.
+
+2020-07-06 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Move to library
+ level and use a new predicate Is_OK_Aggregate to recognize the
+ aggregates suitable for direct assignment by the back-end.
+ (Convert_Array_Aggr_In_Allocator): If neither in CodePeer mode nor
+ generating C code, generate a direct assignment instead of further
+ expanding if Aggr_Assignment_OK_For_Backend returns true.
+
+2020-07-06 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_aux.adb: Add a with clause for Nlists.
+ (Nearest_Ancestor): Test for the case of concurrent
+ types (testing for both Is_Concurrent_Type and
+ Is_Concurrent_Record_Type), and return the first ancestor in the
+ Interfaces list if present (otherwise will return Empty if no
+ interfaces).
+ * sem_ch13.adb (Build_Predicate_Functions): Add a ??? comment
+ about missing handling for adding predicates when they can be
+ inherited from multiple progenitors.
+
+2020-07-06 Arnaud Charlet <charlet@adacore.com>
+
+ * par-ch6.adb (P_Return_Object_Declaration): Set
+ Has_Init_Expression flag.
+
+2020-07-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * debug.adb (d.K): Document new usage.
+ * fe.h (Debug_Flag_Dot_KK): Declare.
+ * gcc-interface/decl.c (gnat_to_gnu_field): Give an error when the
+ component overlaps with the parent subtype, except with -gnatd.K.
+
+2020-06-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_Set_Membership): Expand the membership test
+ using left associativity instead of right associativity.
+
+2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils2.c (build_binary_op): Remove space.
+
+2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (gnat_to_gnu) <N_Allocator>: Minor tweaks.
+ Call Has_Constrained_Partial_View on base type of designated type.
+
+2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils.c (gnat_write_global_declarations): Output
+ integral global variables first and the imported functions later.
+
+2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (elaborate_expression_1): When GNAT encodings
+ are not used, do not create a variable for debug info purposes if
+ the expression is itself a user-declared variable.
+
+2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/ada-tree.h (DECL_RENAMED_OBJECT): Delete.
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Always use
+ the stabilized reference directly for renaming and create a variable
+ pointing to it separately if requested.
+ * gcc-interface/misc.c (gnat_print_decl): Adjust for deletion.
+ * gcc-interface/trans.c (Identifier_to_gnu): Likewise.
+ (gnat_to_gnu) <N_Object_Renaming_Declaration>:
+ Do not deal with side-effects here.
+ <N_Exception_Renaming_Declaration>: Likewise.
+
+2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (elaborate_expression): Replace calls to
+ Is_OK_Static_Expression with Compile_Time_Known_Value.
+
+2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Set
+ debug type to the base type and only if the subtype is artificial.
+
+2020-06-23 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Do
+ not test Is_Bit_Packed_Array in the memset path.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (lvalue_required_for_attribute_p): Do not deal
+ with 'Pos or 'Val.
+ (Attribute_to_gnu): Likewise.
+ * gcc-interface/utils.c (create_field_decl): Small formatting fix.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (adjust_for_implicit_deref): Delete.
+ (maybe_implicit_deref): Likewise.
+ (Attribute_to_gnu): Replace calls to maybe_implicit_deref by calls
+ to maybe_padded_object.
+ (Call_to_gnu): Likewise.
+ (gnat_to_gnu) <N_Indexed_Component>: Likewise.
+ <N_Slice>: Likewise.
+ <N_Selected_Component>: Likewise.
+ <N_Free_Statement>: Remove call to adjust_for_implicit_deref and
+ manually make sure that the designated type is complete.
+ * gcc-interface/utils2.c (build_simple_component_ref): Add comment.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_param): Tidy up.
+ (gnat_to_gnu_subprog_type): For a variadic C function, do not
+ build unnamed parameters and do not add final void node.
+ * gcc-interface/misc.c: Include snames.h.
+ * gcc-interface/trans.c (Attribute_to_gnu): Tidy up.
+ (Call_to_gnu): Implement support for unnamed parameters in a
+ variadic C function.
+ * gcc-interface/utils.c: Include snames.h.
+ (copy_type): Tidy up.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch5.adb (Expand_N_Assignment_Statement): Do not apply
+ range checks to allocators here.
+
+2020-06-19 Justin Squirek <squirek@adacore.com>
+
+ * lib.adb (Check_Same_Extended_Unit): Add check to determine if
+ the body for the subunits exist in the same file as their
+ specifications.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_aggr.adb (In_Place_Assign_OK): In an allocator context,
+ check the bounds of an array aggregate against those of the
+ designated type, except if the latter is unconstrained.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch3.adb (Is_Visible_Component): Reason only on the private
+ status of the original type in an instance body.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_res.adb (Resolve_Qualified_Expression): Do not override the
+ type of the node when it is unconstrained if it is for an allocator.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_res.adb (Resolve_Allocator): Call Resolve_Qualified_Expression
+ on the qualified expression, if any, instead of doing an incomplete
+ type resolution manually.
+ (Resolve_Qualified_Expression): Apply predicate check to operand.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch4.adb (Analyze_Selected_Component): In an instance body,
+ also invoke Find_Component_In_Instance on the parent subtype of
+ a derived tagged type immediately visible. Remove obsolete case.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Get_Integer_Type): Return the largest supported
+ unsigned integer type if need be.
+
+2020-06-19 Justin Squirek <squirek@adacore.com>
+
+ * sem_warn.adb (Warn_On_Known_Condition): Add general sanity
+ check that asserts the original source node being checked
+ contains an entity. If not, it could be the result of special
+ case expansion for type conversions.
+
+2020-06-19 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch6.adb (Analyze_Expression_Function): Do not indicate
+ that the function has a completion if it appears within a Ghost
+ generic package.
+
+2020-06-19 Bob Duff <duff@adacore.com>
+
+ * libgnat/a-ststbo.adb (Write): Replace pragma Assert with "if
+ ... raise Constraint_Error".
+
+2020-06-19 Justin Squirek <squirek@adacore.com>
+
+ * widechar.adb, widechar.ads (Skip_Wide): Catch validity check
+ failure when skipping over characters, and update comment to
+ reflect Skip_Wide's usage in error printing.
+
+2020-06-19 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch3.ads (Ensure_Activation_Chain_And_Master): New
+ subprogram.
+ * exp_ch3.adb (Ensure_Activation_Chain_And_Master): New
+ subprogram that factorizes code.
+ (Expand_N_Object_Declaration): Call new subprogram.
+ * sem_ch6.adb (Analyze_Function_Return): Returning a
+ build-in-place unconstrained array type defer the full analysis
+ of the returned object to avoid generating the corresponding
+ constrained subtype; otherwise the bounds would be created in
+ the stack and a dangling reference would be returned pointing to
+ the bounds.
+
+2020-06-19 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
+ libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb,
+ libgnat/a-nbnbre.ads: Update spec according to AI12-0366.
+
+2020-06-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * checks.ads: Remove excessive whitespace in declarations of
+ functions for check suppression.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch7.adb (Hide_Public_Entities): Split handling of objects
+ and subprograms, and do not reject the latter upfront in nested
+ instance specs if there are no referencer subprograms at all.
+ (Analyze_Package_Body_Helper): Also call Hide_Public_Entities on
+ nested generic instances.
+
+2020-06-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Reject illegal positional
+ component associations; fix syntax in comment about named
+ component associations.
+
+2020-06-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Resolve_Delta_Record_Aggregate): Modify a nested
+ Get_Component_Type routine to return a component and not just
+ its type; use this routine to decorate the identifier within the
+ delta aggregate.
+
+2020-06-19 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch4.adb (Find_Equality_Types.Check_Access_Attribute): New.
+ (Find_Equality_Types): Move universal_access related checks at
+ the end of the processing and add call to
+ Check_Access_Attribute.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_prag.adb (Process_Convention): Revert previous change.
+
+2020-06-19 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.ads (Apply_Static_Length_Check): Move up.
+ (Apply_Range_Check): Add parameter Insert_Node.
+ * checks.adb (Apply_Selected_Range_Checks): Merge into...
+ (Apply_Range_Check): ...this. Add parameter Insert_Node,
+ pass it as Warn_Node to Selected_Range_Checks and use it
+ as insertion point for the checks.
+ * sem_ch3.adb (Analyze_Subtype_Declaration): Rewrite block
+ dealing with the range checks for the subtype indication.
+ Use local variable and call Apply_Range_Check in both cases.
+
+2020-06-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Call Ensure_Valid
+ on the expression of an object declaration that captures the
+ value of 'Old prefix.
+
+2020-06-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Add comment.
+ * sem_attr.adb (Analyze_Attribute): Add ??? comment.
+ * sem_util.ads (Valid_Scalars): This routine is only used for
+ 'Valid_Scalars and not for 'Valid.
+
+2020-06-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Do not call
+ Scalar_Part_Present on the array component's type.
+ (Build_Array_VS_Func): Remove Comp_Typ parameter, because it can
+ be easily computed from the Array_Top parameter *and redundant
+ parameters are confusing and error-prone).
+
+2020-06-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb (Build_Record_VS_Func): Strip privacy and type
+ derivation from the root type when 'Valid_Scalars is applied to
+ a class-wide type.
+
+2020-06-19 Piotr Trojanek <trojanek@adacore.com>
+
+ * checks.adb (Apply_Parameter_Validity_Checks): Remove testing
+ of Check_Validity_Of_Parameters for every formal parameter and
+ function result.
+
+2020-06-19 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_warn.adb (Warn_On_Overlapping_Actuals): Add missing
+ warning tag.
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Get_Size_For_Range): Only make sure to return a
+ size lower than that of the original type if possible.
+ * libgnat/s-rannum.adb (Random_Discrete): Back out optimization
+ added for 32-bit types.
+
+2020-06-18 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch6.ads, sem_ch6.adb (Check_Formal_Conformance): New
+ subprogram.
+ (Check_Conformance): Move code to Check_Formal_Conformance.
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): Check for formal
+ conformance when needed.
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Narrow_Large_Operation): New procedure to try
+ and narrow large arithmetic and comparison operations.
+ (Expand_N_In): Call it.
+ (Expand_N_Op_Abs): Likewise.
+ (Expand_N_Op_Add): Likewise.
+ (Expand_N_Op_Divide): Likewise.
+ (Expand_N_Op_Eq): Likewise.
+ (Expand_N_Op_Ge): Likewise.
+ (Expand_N_Op_Gt): Likewise.
+ (Expand_N_Op_Le): Likewise.
+ (Expand_N_Op_Lt): Likewise.
+ (Expand_N_Op_Minus): Likewise.
+ (Expand_N_Op_Mod): Likewise.
+ (Expand_N_Op_Multiply): Likewise.
+ (Expand_N_Op_Ne): Likewise.
+ (Expand_N_Op_Plus): Likewise.
+ (Expand_N_Op_Rem): Likewise.
+ (Expand_N_Op_Subtract): Likewise.
+ (Expand_N_Type_Conversion): Use Convert_To procedure.
+ * exp_ch9.adb (Is_Pure_Barrier) <N_Identifier>: Skip all
+ numeric types.
+ <N_Type_Conversion>: Use explicit criterion.
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_Allocator_Expression): Apply constraint
+ and predicate checks for the qualified expression on entry,
+ followed by constraint and predicate checks for the allocator
+ itself, and return early if this results in a static error.
+ (Expand_N_Allocator): Do not do the same here. Instead apply
+ constraint and predicate checks for arrays in the subtype
+ indication case.
+ * exp_ch5.adb (Expand_N_Assignment_Statement): Do not apply
+ range checks to allocators here.
+
+2020-06-18 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch6.adb (BIP_Suffix_Kind, Is_Build_In_Place_Entity): Move
+ declarations...
+ * exp_ch6.ads: Here.
+ * exp_util.adb (Is_Secondary_Stack_BIP_Func_Call): Do not rely
+ on the name of the scope to locate the extra formal BIPalloc
+ since they are copied when the pointer type associated with
+ dispatching calls is built; rely on routines
+ Is_Build_In_Place_Entity and BIP_Suffix_Kind.
+ * exp_disp.adb (Expand_Dispatching_Call): Set the scope of the
+ first extra formal of the internally built pointer type.
+ * sem_ch3.adb (Derive_Subprogram): Do not inherit extra formals
+ from a limited interface parent since limitedness is not
+ inherited in such case (AI-419) and this affects the extra
+ formals.
+ * sprint.adb (Write_Itype): Output extra formals of subprogram
+ types.
+
+2020-06-18 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * errout.adb (Write_Error_Summary): Display number of warnings
+ treated as errors.
+ * errutil.ads: Update comment.
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Analyze_Attribute) <Asm_{In,Out}put>: Alphabetize.
+ <Component_Size>: Add check for universal integer attribute.
+ <Aft>, <Bit_Order>, <Definite>, <Max_Alignment_For_Allocation>,
+ <Scalar_Storage_Order>: Raise Program_Error on them.
+ * sem_attr.adb (Eval_Attribute) <Component_Size>: Add comment on
+ the packed array case.
+
+2020-06-18 Steve Baird <baird@adacore.com>
+
+ * sem_util.adb (Object_Access_Level): Treat a 'Old attribute
+ reference like an aggregate in determining its static
+ accessibility level; after the evaluation of the relevant
+ post-condition, the implicitly declared constant associated with
+ an Old attribute reference ceases to exist. Similarly for
+ Loop_Entry attribute.
+ * exp_ch6.adb (Expand_Call_Helper): For an attribute reference
+ that is expanded into a reference to an implicitly declared
+ constant (e.g., a 'Old or 'Loop_Entry attribute), compute the
+ dynamic accessibility level of that constant by looking at the
+ declaration of the constant (as opposed to looking at the
+ attribute reference).
+
+2020-06-18 Steve Baird <baird@adacore.com>
+
+ * exp_ch3.adb (Expand_N_Object_Declaration): Do not generate a
+ default initial condition check for the declaration of an
+ imported object.
+
+2020-06-18 Arnaud Charlet <charlet@adacore.com>
+
+ * Makefile.rtl: Add s-statxd.o.
+ * bindgen.adb (Gen_Adainit): Add support for XDR_Stream.
+ * bindusg.adb (Display): Add mention of -xdr.
+ * gnatbind.adb: Process -xdr switch.
+ * init.c (__gl_xdr_stream): New.
+ * opt.ads (XDR_Stream): New.
+ * libgnat/s-stratt__xdr.adb: Rename to...
+ * libgnat/s-statxd.adb: this and adjust.
+ * libgnat/s-statxd.ads: New.
+ * libgnat/s-stratt.ads, libgnat/s-stratt.adb: Choose between
+ default and XDR implementation at runtime.
+ * libgnat/s-ststop.ads: Update comments.
+ * doc/gnat_rm/implementation_advice.rst: Update doc on XDR
+ streaming.
+ * gnat_rm.texi: Regenerate.
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute) <To_Address>: Use the address
+ size of the target instead of the host when checking the value of
+ a static expression. Also use standard idiom for exponentiation.
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_prag.adb (Process_Convention): Give a warning on C_Variadic_n
+ being applied to a subprogram with exactly n parameters.
+
+2020-06-18 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnarl/s-osinte__linux.ads, libgnat/g-io.adb,
+ libgnat/g-socket.adb, libgnat/g-socthi.adb,
+ libgnat/g-socthi.ads, libgnat/g-socthi__vxworks.adb,
+ libgnat/g-socthi__vxworks.ads, libgnat/g-sothco.ads,
+ libgnat/s-io.adb, libgnat/a-except.adb: Fix function profile
+ mismatch with imported C functions.
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch6.adb (Expand_Call_Helper): Remove superfluous calls
+ to Relocate_Node and merge calls to Analyze and Resolve in a
+ couple of places. Do not attempt to generate a range check
+ for an actual parameter against the formal's type of a derived
+ subprogram after generating a conversion to the formal's type
+ of the parent subprogram.
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.adb (Compute_Range_For_Arithmetic_Op): New procedure to
+ compute a range for an arithmetical operation extracted from...
+ (Minimize_Eliminate_Overflows): ...here. Call it.
+ (Determine_Range_Cache_O): New cache for Original_Node nodes.
+ (Determine_Range): Call Compute_Range_For_Arithmetic_Op for all
+ arithmetic expressions. Use Attribute_Id in lieu of Attribute_Name
+ for attributes. Add handling for Range_Length alongside Length.
+ Add specific handling for Alignment, Bit, First_Bit, Last_Bit,
+ Max_Size_In_Storage_Elements, Position, Bit_Position,
+ Component_Size, Object_Size, Size, Value_Size, Descriptor_Size.
+ (Enable_Overflow_Check): Omit the check for Abs and Minus if the
+ operand cannot be the largest negative number.
+ (Selected_Length_Checks): Use Pos for Number_Dimensions.
+ * exp_attr.adb (Expand_N_Attribute_Reference): Move compile-time
+ handling of Bit_Position, Descriptor_Size, First_Bit, Last_Bit
+ and Position to...
+ * sem_attr.adb (Eval_Attribute): ...here. Move up Alignment for
+ objects and use Compile_Time_Known_Attribute in this case too.
+
+2020-06-18 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * erroutc.ads: Declare new Is_Compile_Time_Msg boolean,
+ add new Compile_Time_Pragma field to Error_Msg_Object type.
+ (Count_Compile_Time_Pragma_Warnings): New function.
+ * erroutc.adb (Count_Compile_Time_Pragma_Warnings): New
+ function.
+ (Compilation_Errors): Take Compile_Time warnings into account
+ when tallying Errors/Warnings.
+ * errout.ads (Error_Msg): New procedure.
+ * errout.adb (Error_Msg): New procedure.
+ (Error_Msg_Internal): Set new Compile_Time_Pragma field in
+ Error_Msg_Object.
+ * errutil.adb (Error_Msg): Set new Compile_Time_Pragma field in
+ Error_Msg_Object.
+ * sem_prag.adb (Validate_Compile_Time_Warning_Or_Error): Pass
+ True to new Error_Msg procedure.
+ * doc/gnat_rm/implementation_defined_pragmas.rst: Update doc for
+ the Compile_Time_Warning pragma.
+ * gnat_rm.texi: Regenerate.
+ * opt.ads: Update comment.
+
+2020-06-18 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch4.adb (Check_Compatible_Profiles): Add explicit
+ initialization.
+
+2020-06-18 Piotr Trojanek <trojanek@adacore.com>
+
+ * checks.adb (Generate_Index_Checks): Handle
+ N_Subtype_Indication returned from Scalar_Range.
+
+2020-06-18 Piotr Trojanek <trojanek@adacore.com>
+
+ * checks.adb, sem_ch3.adb: Minor refactorings.
+ * sem_eval.adb (Eval_Qualified_Expression): Fix reference to RM
+ rule in comment; only set a local variable Hex in the branch
+ where it is used.
+
+2020-06-18 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_eval.adb (Check_Non_Static_Context): Use Is_RTE.
+
+2020-06-18 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch4.adb (Find_Equality_Types.Check_Access_Object_Types):
+ New function, used to implement RM 4.5.2 (9.6/2).
+ (Find_Equality_Types.Check_Compatible_Profiles): New function,
+ used to implement RM 4.5.2(9.7/2).
+ (Find_Equality_Types.Reference_Anonymous_Access_Type): New
+ function.
+ (Find_Equality_Types.Try_One_Interp): Fix handling of anonymous
+ access types which was accepting both too much and too little.
+ Remove accumulated special and incomplete cases for
+ instantiations, replaced by Has_Compatible_Type.
+ (Analyze_Overloaded_Selected_Component): Use
+ Is_Anonymous_Access_Type instead of Ekind_In.
+ * sem_res.adb: Code cleanup and bug fix: use
+ Is_Anonymous_Access_Type instead of Ekind_In. Relax checking of
+ anonymous access parameter when universal_access "=" is
+ involved.
+ * sem_type.adb: Likewise.
+ (Find_Unique_Type): Move code from here...
+ (Specific_Type): ...to here. Also add missing handling of access
+ to class wide types.
+ * einfo.ads, einfo.adb (Is_Access_Object_Type): New.
+
+2020-06-18 Bob Duff <duff@adacore.com>
+
+ * libgnat/a-strsto.ads, libgnat/a-ststbo.adb,
+ libgnat/a-ststbo.ads, libgnat/a-ststun.adb,
+ libgnat/a-ststun.ads: New files, containing packages
+ Ada.Streams.Storage, Ada.Streams.Storage.Bounded, and
+ Ada.Streams.Storage.Unbounded.
+ * impunit.adb, Makefile.rtl: Add new file names.
+
+2020-06-18 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch13.adb (Has_Good_Profile): Enforce strictness in the
+ check. Required to detect wrong profiles for Input and Output.
+ (Analyze_Stream_TSS_Definition): Minor enhancement in the text
+ of the error for class-wide attributes.
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Get_Integer_Type): Pick an unsigned type based
+ on the Esize of the base type of the input type.
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_Array_Equality): For the optimization of
+ the 2-element case, build new expression lists for the indices.
+
+2020-06-18 Richard Kenner <kenner@adacore.com>
+
+ * sem_util.adb (Enclosing_Subprogram): No longer need
+ Convention_Protected.
+
+2020-06-18 Claire Dross <dross@adacore.com>
+
+ * sem_util.adb (Is_OK_Volatile_Context): Return False on
+ definitions of constants declared in declare expressions.
+
+2020-06-18 Piotr Trojanek <trojanek@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_aspects.rst
+ (Relaxed_Initialization): New implementation-defined aspect.
+ * doc/gnat_rm/implementation_defined_attributes.rst
+ (Initialized): New implementation-defined attribute.
+ * gnat_rm.texi: Regenerate.
+
+2020-06-18 Javier Miranda <miranda@adacore.com>
+
+ * exp_disp.adb (Expand_Dispatching_Call): Add missing decoration
+ of attribute Extra_Accessibility_Of_Result.
+ * freeze.adb (Check_Extra_Formals): No check required if
+ expansion is disabled; Adding check on
+ Extra_Accessibilty_Of_Result.
+ (Freeze_Subprogram): Fix decoration of
+ Extra_Accessibility_Of_Result.
+ * sem_ch3.adb (Derive_Subprogram): Fix decoration of
+ Extra_Accessibility_Of_Result
+
+2020-06-18 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Optimize_Length_Comparison): Accept 32-bit values
+ in the full unsigned range.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.adb (Apply_Universal_Integer_Attribute_Checks): Do not do
+ anything when the type of the node is already Universal_Integer.
+
+2020-06-17 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch10.adb (Expand_With_Clause): Add missing handling of
+ N_Generic_Subprogram_Declaration, N_Subprogram_Declaration,
+ N_Subprogram_Body.
+
+2020-06-17 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch13.adb: (Check_Inherited_Indexing): Check that a type
+ derived from an indexable container type cannot specify an
+ indexing aspect if the same aspect is not specified for the
+ parent type (RM 4.1.6 (6/5), AI12-160). Add a check that a
+ specified indexing aspect for a derived type is confirming.
+
+2020-06-17 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch9.adb (Build_Protected_Subp_Specification): Add ???
+ comment about the flag Has_Nested_Subprogram not being set here.
+ (Expand_N_Protected_Body): If the original body for a protected
+ subprogram has the flag Has_Nested_Subprogram set, then set that
+ flag on the new unprotected subprogram body that's created for
+ it, and reset the Scope fields of its top level declarations,
+ which have been effectively taken from the original protected
+ subprogram body. Add ??? comment about unclear testing of
+ Corresponding_Spec.
+
+2020-06-17 Javier Miranda <miranda@adacore.com>
+
+ * aspects.ads (type Aspect_Id): Add Aspect_Yield as a Boolean
+ aspect, and update the Is_Representation_Aspect, Aspect_Names,
+ and Aspect_Delay arrays.
+ * einfo.ads, einfo.adb (Has_Yield_Aspect, Yield_Aspect): New
+ subprograms.
+ * exp_ch6.adb (Add_Return, Expand_Non_Function_Return,
+ Expand_Simple_Function_Return): Add calls to Yield.
+ * exp_ch9.adb (Build_Accept_Body, Expand_N_Accept_Statement):
+ Add calls to Yield.
+ * rtsfind.ads (RE_Yield): Adding support to generate calls to
+ the runtime service Ada.Dispatching.Yield
+ * sem_ch13.adb (Analyze_Aspect_Yield): New subprogram.
+ * sem_ch3.adb (Derive_Subprogram): Inherit attribute
+ Has_Yield_Aspect.
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): Check consistency
+ of Has_Yield in the actual subprogram of a generic
+ instantiation.
+ * sem_disp.adb (Check_Dispatching_Operation): Check that if the
+ Yield aspect is specified for a dispatching subprogram that
+ inherits the aspect, the specified value shall be confirming.
+ * sem_prag.adb (Analyze_Pragma [Pragma_Implemented]): Check that
+ the implementation kind By_Protected_Procedure cannot be applied
+ to a procedure that has aspect Yield.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Op_Expon): Replace all occurrences of
+ the original right operand with the relocated version.
+
+2020-06-17 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch6.adb (Has_BIP_Extra_Formal): New subprogram.
+ (Needs_BIP_Task_Actuals): Add support for the subprogram type
+ internally generated for dispatching calls.
+ * exp_disp.adb (Expand_Dispatching_Call): Adding code to
+ explicitly duplicate the extra formals of the target subprogram.
+ * freeze.adb (Check_Extra_Formals): New subprogram.
+ (Freeze_Subprogram): Fix decoration of Extra_Formals.
+ * sem_ch3.adb (Derive_Subprogram): Fix decoration of
+ Extra_Formals.
+
+2020-06-17 Bob Duff <duff@adacore.com>
+
+ * par.adb (P_Basic_Declarative_Items): Update comment about
+ Declare_Expression.
+ * par-ch3.adb (P_Declarative_Items): Pass in Declare_Expression
+ flag, and if True, skip the call to Style.Check_Indentation.
+ * par-ch4.adb (P_Declare_Expression): Fix incorrect comment.
+
+2020-06-17 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_res.adb (Valid_Conversion): Change error message to make
+ it more user-friendly.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.ads (Apply_Length_Check_On_Assignment): Declare.
+ * checks.adb (Apply_Length_Check_On_Assignment): New procedure
+ to apply a length check to an expression in an assignment.
+ * exp_ch5.adb (Expand_Assign_Array): Call it instead of calling
+ Apply_Length_Check to generate a length check.
+ * sem_ch5.adb (Analyze_Assignment): Likewise.
+
+2020-06-17 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.adb (Is_Relaxed_Initialization_State): Add reference to
+ SPARK RM.
+ * sem_attr.adb (Analyze_Attribute_Old_Result): Likewise.
+ * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Reject
+ aspect on completions of private types and deferred constants.
+ * sem_util.ads, sem_util.adb (Has_Relaxed_Initialization):
+ Adjust comments; support queries for constants.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * cstand.adb (Stloc): Change to a renaming.
+ (Staloc): Likewise.
+ (Build_Unsigned_Integer_Type): Remove Nam parameter, use local
+ constants and do not call Make_Name.
+ (Make_Dummy_Index): Use local constants.
+ (Create_Standard): Pass the name of entities as parameter in
+ calls to New_Standard_Entity and remove calls to Make_Name.
+ Adjust calls to Build_Unsigned_Integer_Type.
+ (Identifier_For): Use local constant.
+ (Make_Component): Pass the name of the component as parameter
+ in call to New_Standard_Entity and remove call to Make_Name.
+ (Make_Formal): Likewise. Rename Formal_Name parameter into
+ Nam and use local constant.
+ (Make_Name): Delete.
+ (New_Operator): Use local constant.
+ (New_Standard_Entity): Rename S parameter into Nam and build
+ the name here. Remove call to Make_Name.
+ (Register_Float_Type): Pass the name of the type as parameter
+ in call to New_Standard_Entity and remove call to Make_Name.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
+ Remove condition added for scalar types.
+
+2020-06-17 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Adjust
+ colon columns; reformat comment.
+ * exp_ch3.adb
+ (Build_Access_Subprogram_Wrapper_Body): Likewise.
+ * sem_ch3.adb (Build_Access_Subprogram_Wrapper): Reformat spec
+ comment and reformat comment in body.
+ (Analyze_Full_Type_Declaration): Reformat comment.
+ (Replace_Type_Name): Fixed three typos, plus reformatting of
+ comment.
+ * sem_prag.adb (Analyze_Pre_Post_Condition): Fix typos.
+ * sem_warn.adb (Warn_On_Overlapping_Actuals): Edit comments:
+ remove hyphen, add missing word.
+
+2020-06-17 Bob Duff <duff@adacore.com>
+
+ * libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb,
+ libgnat/a-cbhase.adb, libgnat/a-cbmutr.adb,
+ libgnat/a-cborma.adb, libgnat/a-cborse.adb,
+ libgnat/a-cdlili.adb, libgnat/a-chtgbk.adb,
+ libgnat/a-chtgke.adb, libgnat/a-cidlli.adb,
+ libgnat/a-cihama.adb, libgnat/a-cihase.adb,
+ libgnat/a-cimutr.adb, libgnat/a-ciorma.adb,
+ libgnat/a-ciorse.adb, libgnat/a-cobove.adb,
+ libgnat/a-cohama.adb, libgnat/a-cohase.adb,
+ libgnat/a-coinve.adb, libgnat/a-comutr.adb,
+ libgnat/a-convec.adb, libgnat/a-coorma.adb,
+ libgnat/a-coorse.adb, libgnat/a-crbtgk.adb,
+ libgnat/a-crbtgo.adb, libgnat/a-rbtgso.adb: Move tampering
+ checks earlier.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Get_Integer_Type): Use standard types without
+ a specific size.
+ * sem_res.adb (Resolve_Unchecked_Type_Conversion): Remove a
+ redundant intermediate conversion to Universal_Integer.
+
+2020-06-17 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Get_Iterable_Type_Primitive): Fix
+ comment and enforce it with an assertion in the body.
+
+2020-06-17 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Analyze_Full_Type_Declaration): For an
+ access_to_subprogram declaration that has aspect specifications,
+ call Build_Access_ Subprogram_Wrapper at once, so that pre- and
+ postcondition aspects are analyzed in the context of a
+ subprogram declaration.
+ (Build_Access_Subprogram_Wrapper): Examine aspect specifications
+ of an Access_To_Subprogram declaration. If pre- or
+ postconditions are declared for it, create declaration for
+ subprogram wrapper and add the corresponding aspect
+ specifications to it. Replace occurrences of the type name by
+ that of the generated subprogram, so that attributes 'Old and
+ 'Result can appear in a postcondition.
+ * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Moved
+ here from sem_prag.adb.
+ * exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Visible
+ subprogram.
+ * sem_prag.adb (Build_Access_Subprogram_Wrapper / _Body): Moved
+ to sem_ch3.adb and exp_ch3.adb.
+
+2020-06-17 Piotr Trojanek <trojanek@adacore.com>
+
+ * atree.adb (Preserve_Comes_From_Source): Rewrite using
+ Set_Comes_From_Source and Comes_From_Source, which enforce that
+ the parameters are valid.
+ * exp_ch4.adb, exp_ch5.adb, sem_ch12.adb, sem_ch6.adb,
+ sem_res.adb: Rewrite using Preserve_Comes_From_Source.
+
+2020-06-17 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Remove obsolete
+ comments.
+
+2020-06-17 Gary Dismukes <dismukes@adacore.com>
+
+ * aspects.ads (type Aspect_Id): Add Aspect_Static as a Boolean
+ aspect, and update the Is_Representation_Aspect, Aspect_Names,
+ and Aspect_Delay arrays.
+ * exp_ch6.adb (Expand_Simple_Function_Return): In the case of a
+ return for a static expression function, capture a copy of the
+ expression of the return statement before it's expanded and
+ reset its Analyzed flags. Then, just before leaving this
+ procedure, if the expression was rewritten, set the
+ Original_Node of the rewritten expression to the new copy and
+ also set the Expression of the associated static expression
+ function to designate that copy. This ensures that later copies
+ of the expression made via New_Copy_Tree will fully copy all
+ nodes of the expression tree.
+ * inline.ads (Inline_Static_Expression_Function_Call): New
+ procedure to evaluate and produce the result of a static call to
+ a static expression function.
+ * inline.adb: Add with and use for Sem_Res.
+ (Establish_Actual_Mapping_For_Inlined_Call): New procedure
+ extracted from code in Expand_Inlined_Call that traverses the
+ actuals and formals of an inlined call and in some cases creates
+ temporaries for holding the actuals, plus establishes an
+ association between formals and actuals (via the Renamed_Object
+ fields of the formals).
+ (Formal_Is_Used_Once): Function removed from Expand_Inlined_Call
+ and now nested in the above procedure.
+ (Expand_Inlined_Call): Code for doing the formal/actual
+ traversal is moved to Create_Actual_Temporaries and replaced
+ with a call to that new procedure.
+ (Inline_Static_Expression_Function_Call): New procedure to
+ evaluate a static call to a static expression function,
+ substituting actuals for their corresponding formals and
+ producing a fully folded and static result expression. The
+ function has subsidiary functions Replace_Formal and Reset_Sloc
+ that take care of doing the mapping of formals to actuals and
+ resetting the Slocs of subnodes of the mapped expression to that
+ of the call so errors will be flagged on the call rather than
+ function.
+ * sem_ch6.adb (Analyze_Expression_Function): In the case of a
+ static expression function, perform an additional preanalysis of
+ the function's expression to ensure that it's a potentially
+ static expression (according to the requirements of
+ 6.8(3.2/5-3.4/5)), and issue an error if it's not. The global
+ flag Checking_Potentially_Static_Expression is set and unset
+ around this checking.
+ * sem_ch13.adb (Analyze_Aspect_Static): New procedure to enforce
+ selected requirements of the new aspect Static on expression
+ functions, including checking that the language version is
+ Ada_2020 and that the entity to which it applies is an
+ expression function whose formal parameters are of a static
+ subtype and have mode 'in', its result subtype is a static
+ subtype, and it has no pre- or postcondition aspects. A ???
+ comment is added to indicate the need for adding checking that
+ type invariants don't apply to the result type if the function
+ is a boundary entity.
+ (Analyze_One_Aspect): Call Analyze_Aspect_Static for aspect
+ Static.
+ * sem_elab.adb (Build_Call_Marker): Return without creating a
+ call marker when the subprogram is a static expression function,
+ since no ABE checking is needed for such functions.
+ * sem_eval.ads (Checking_Potentially_Static_Expression): New
+ function to return whether the checking for potentially static
+ expressions is enabled.
+ (Set_Checking_Potentially_Static_Expression): New procedure to
+ enable or disable checking of potentially static expressions.
+ * sem_eval.adb (Checking_For_Potentially_Static_Expression): New
+ global flag for determining whether preanalysis of potentially
+ static expression is being done, which affects the behavior of
+ certain static evaluation routines.
+ (Checking_Potentially_Static_Expression): New function to return
+ whether the checking for potentially static expressions is
+ enabled.
+ (Eval_Call): When evaluating a call within a static expression
+ function with checking of potentially static expression
+ functions enabled, substitutes a static value in place of the
+ call to allow folding of the expression.
+ (Eval_Entity_Name): When evaluating a formal parameter of a
+ static expression function with checking of potentially static
+ expression functions enabled, substitutes a static value in
+ place of the reference to the formal to allow folding of the
+ expression.
+ (Set_Checking_Potentially_Static_Expression): New procedure to
+ enable or disable checking of potentially static expressions.
+ * sem_res.adb (Resolve_Call): Test for a recursive call
+ occurring within a static expression function and issue an error
+ for such a call. Prevent the establishment of a transient scope
+ in the case this is a call to a (string-returning) static
+ expression function. When calling a static expression function,
+ if no error has been posted on the function, call
+ Inline_Static_Expression_Function_Call to convert the call into
+ its equivalent static value.
+ * sem_util.ads (Is_Static_Expression_Function): New function
+ returning whether the subprogram entity passed to it is a static
+ expression function.
+ (Is_Static_Expression_Function_Call): New function to determine
+ whether the call node passed to it is a static call to a static
+ expression function.
+ * sem_util.adb (Compile_Time_Constraint_Error): Suppress
+ compile-time Constraint_Error reporting when checking for a
+ potentially static expression.
+ (Is_Static_Expression_Function): New function returning whether
+ the subprogram entity passed to it is a static expression
+ function by testing for the presence of aspect Static.
+ (Has_All_Static_Actuals): New function in
+ Is_Static_Expression_Function_Call that traverses the actual
+ parameters of a function call and returns True only when all of
+ the actuals are given by static expressions. In the case of a
+ string-returning function, we call Resolve on each actual to
+ ensure that their Is_Static_Expression flag properly reflects
+ whether they're static, to allow suppressing creation of a
+ transient scope within Resolve_Call. A prominent ??? comment is
+ added to explain this rather unconventional call to Resolve.
+ (Is_Static_Expression_Function_Call): New function that
+ determines whether a node passed to it is a call to a static
+ expression function all of whose actual parameters are given by
+ static expressions.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Optimize_Length_Comparison): New local variable to
+ record whether this may be a dynamic superflat case.
+ (Is_Optimizable): Accept 0 as lower bound and set it in this case,
+ but return false if the operand is not a length too.
+ (Rewrite_For_Equal_Lengths): New procedure.
+ Optimize the comparison of two lengths in the superflat case when
+ the arrays have the same bounds.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_attributes.rst (Bit): Sharpen
+ the comparison with System.Storage_Unit.
+ (Descriptor_Size): Clear confusion about alignment and padding.
+ * gnat_rm.texi: Regenerate.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
+ Do not replace the bound for an array type if it is public.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Optimize_Length_Comparison): Make sure the base
+ types are the same when comparing Y'Last and X'Last directly.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>:
+ Replace it with a direct reference to an entity which is not a
+ discriminant for constrained array types. Add same condition
+ for scalar types.
+ <Attribute_Last>: Merge with above implementation.
+ * exp_ch4.adb (Optimize_Length_Comparison): Be prepared for a
+ second entity whose length is compared. Rename Prepare_64 to
+ Convert_To_Long_Long_Integer. If the second entity is present,
+ compute the difference of the 'First attributes and compare the
+ sum of 'Last of the second entity with this difference against
+ 'Last of the first entity. Add a special case when the 'First
+ attributes are equal. Suppress overflow checks in all cases.
+
+2020-06-17 Piotr Trojanek <trojanek@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst, lib-writ.ads,
+ par-prag.adb, sem_ch12.adb, sem_ch8.adb, sem_prag.adb: Fix
+ casing of GNATprove.
+ * gnat_rm.texi: Regenerate.
+
+2020-06-17 Piotr Trojanek <trojanek@adacore.com>
+
+ * checks.adb (Generate_Range_Check): Simplify redundant
+ condition.
+ * sem_ch3.adb (Check_Initialization, Process_Discriminants):
+ Likewise.
+ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Likewise.
+
+2020-06-17 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_fixd.adb (Build_Conversion): Also preserve the
+ Conversion_OK flag of an inner conversion.
+
+2020-06-17 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch5.adb (Analyze_Iterator_Specification): Enable expansion
+ that creates a renaming that removes side effects from the
+ iterated object in the GNATprove mode; then analyze reference to
+ this renaming (it is required for GNATprove and harmless for
+ GNAT).
+
+2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sinfo.ads (Conversion_OK): Document use for 'Pos and 'Val.
+ * exp_attr.adb (Get_Integer_Type): New function returning a
+ small integer type appropriate for an enumeration type.
+ (Expand_N_Attribute_Reference) <Attribute_Enum_Rep>: Call it.
+ <Attribute_Pos>: For an enumeration type with a standard
+ representation, expand to a conversion with Conversion_OK.
+ <Attribute_Val>: Likewise.
+ * exp_ch4.adb (Expand_N_Type_Conversion): Do not expand when
+ the target is an enumeration type and Conversion_OK is set.
+
+2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch4.adb (Common_Type): Go to Underlying_Full_View, if any.
+
+2020-06-16 Richard Kenner <kenner@adacore.com>
+
+ * exp_unst.adb (Subp_Index): Change way we detect internal
+ protected subprograms.
+
+2020-06-16 Richard Kenner <kenner@adacore.com>
+
+ * comperr.adb (Compiler_Abort): Clarify message displayed to
+ customers.
+
+2020-06-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * checks.adb, doc/gnat_ugn/the_gnat_compilation_model.rst,
+ einfo.ads, exp_ch5.adb, exp_ch7.adb, lib-xref.ads,
+ libgnat/g-spitbo.ads, make.adb, sem_aux.adb, sem_ch3.adb,
+ sem_ch4.adb, sem_ch5.adb, urealp.adb: Fix wrong casing.
+ * gnat_ugn.texi: Regenerate.
+
+2020-06-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.adb, exp_spark.adb, exp_util.adb, sem_eval.adb: Replace
+ "Ekind ... in Object_Kind" with "Is_Object (...)".
+
+2020-06-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_warn.adb (Warn_On_Overlapping_Actuals): Fix typo in
+ comment.
+
+2020-06-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_util.adb (Evaluate_Name): Force evaluation of aggregates;
+ recursively evaluate expression of a qualified expression; fix
+ location of the comment for an attribute referenced and an
+ indexed component.
+
+2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * freeze.adb (Freeze_Expression): Use consistent style and
+ formatting in a couple of cases.
+
+2020-06-16 Steve Baird <baird@adacore.com>
+
+ * libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Uncomment the
+ commented-out Integer_Literal aspect specification for type
+ Big_Integer.
+
+2020-06-16 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch6.adb (BIP_Suffix_Kind, Check_BIP_Actuals,
+ Is_Build_In_Place_Entity): New subprograms.
+ (Make_Build_In_Place_Call_In_Allocator,
+ Make_Build_In_Place_Call_In_Anonymous_Context,
+ Make_Build_In_Place_Call_In_Assignment,
+ Make_Build_In_Place_Call_In_Object_Declaration): Add assertions.
+ (Needs_BIP_Task_Actuals): Add missing support for thunks.
+ (Expand_Actuals): Ensure that the BIP call has available an
+ activation chain and the _master variable.
+ * exp_ch9.adb (Find_Enclosing_Context): Initialize the list of
+ declarations of empty blocks when the _master variable must be
+ declared and the list was not available.
+
+2020-06-16 Bob Duff <duff@adacore.com>
+
+ * par-ch4.adb (P_Case_Expression): Move to be local.
+ (P_Declare_Expression): New parsing routine.
+ (P_Unparen_Cond_Expr_Etc): New name for
+ P_Unparen_Cond_Case_Quant_Expression which was missing one case
+ in its name (iterated component association), and we're adding a
+ new case (declare expression), so lets use "Etc" instead of
+ trying to pack all those things into the name. Add call to
+ P_Declare_Expression, and check for missing parens.
+ (P_Expression_If_OK, P_Expression_Or_Range_Attribute_If_OK): Add
+ Tok_Declare.
+ * par.adb (P_Basic_Declarative_Items): Add parameter
+ Declare_Expression so we can tailor the error message about
+ incorrect bodies.
+ (P_Case_Expression): Move to body.
+ * par-ch3.adb (P_Basic_Declarative_Items): Tailor the error
+ message about incorrect bodies.
+ * par-ch7.adb (P_Package): Pass Declare_Expression => False to
+ P_Basic_Declarative_Items.
+ * sem.ads (In_Declare_Expr): Counter used to determine whether
+ we are analyzing a declare_expression. Needed to give errors
+ about things that are not allowed in declare_expression, such as
+ the 'Access attribute.
+ * sem.adb (Do_Analyze): Save/restore In_Declare_Expr.
+ * sem_ch4.adb (Analyze_Expression_With_Actions): Give this node
+ its own scope. That seems better in general, but it is
+ necessary for declare_expressions. For example, an identifier
+ declared in a declare_expression should not clash with the same
+ identifier in an outer scope. If this is a declare_expression,
+ indicated by Comes_From_Source, then check legality rules, and
+ incr/decr In_Declare_Expr.
+ * sem_aggr.adb (Resolve_Aggregate): Allow an applicable index
+ constraint for a declare_expression, so if its expression is an
+ array aggregate, it can have "others => ...".
+ * sem_attr.adb (Analyze_Access_Attribute): Disallow these
+ attributes in declare_expressions. Add comment to make it clear
+ that Unrestricted_Access is included.
+ * sinfo.ads, sinfo.adb, atree.ads, atree.adb: Remove the
+ now-incorrect comment in sinfo.ads that says
+ N_Expression_With_Actions has no proper scope. Add 17-parameter
+ versions of Nkind_In. Remove the 16-parameter versions of
+ Nkind_In.
+
+2020-06-16 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_aux.ads, sem_aux.adb (Is_Record_Or_Limited_Type): New
+ function.
+ * exp_ch4.adb, sem_ch4.adb (Analyze_Membership_Op,
+ Expand_Set_Membership.Make_Cond): Choose between primitive and
+ predefined equality for membership tests.
+
+2020-06-16 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify code and
+ implement AI12-0216 which clarifies the conditions under which
+ overlapping actuals in a call are illegal. If proper warnings
+ are enabled, GNAT also emits warnings in legal cases of
+ overlopping actuals.
+
+2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * freeze.adb (Freeze_Expression): Stop climbing the parent chain
+ at a N_{Case,If}_Expression node for a type or an entity that
+ does not come from source.
+
+2020-06-16 Steve Baird <baird@adacore.com>
+
+ * snames.ads-tmpl: Define names of the three new aspects.
+ * aspects.ads: Define the three new aspects.
+ * sem_util.ads, sem_util.adb, sem_dim.adb: Move the function
+ String_From_Numeric_Literal from being declared in the body of
+ package Sem_Dim to being declared in the visible part of package
+ Sem_Util.
+ * sem_ch13.ads, sem_ch13.adb: Declare new visible procedure
+ Validate_Literal_Aspect. This is where most of the legality
+ checking occurs for an aspect specification for one of the three
+ new aspects, as well as resolution of the subprogram named in
+ the aspect specification. Follow example of other aspects (e.g.,
+ Validate_Literal_Aspect is called in much the same way as
+ Validate_Iterable_Aspect in Analyze_Aspects_At_Freeze_Point; a
+ small amount of legality checking is performed in
+ Analyze_One_Aspect in much the same way as for Default_Value or
+ Default_Component_Value aspects). Most of the work is done in
+ Validate_Literal_Aspect.
+ * contracts.adb (Add_Contract_Item): Call
+ Validate_Literal_Aspect in much the same way that
+ Validate_Iterable_Aspect was already being called.
+ * sem_res.adb (Resolve): Rewrite a literal as a call if it is a
+ user-defined literal. This is where the dynamic semantics of
+ the 3 new aspects are implemented.
+ * sem_ch6.adb (Fully_Conformant_Expressions): Two numeric
+ literals that have different text but the same value (e.g.,
+ 12345 and 12_345) do not conform if they are user-defined
+ literals. Introduce a new function
+ User_Defined_Numeric_Literal_Mismatch to avoid duplication in
+ making this check.
+ * sem_type.adb (Has_Compatible_Type): A numeric literal can be
+ compatible with a non-numeric type (and a string literal can be
+ compatible with a non-string type) if it can be interpreted as a
+ user-defined literal.
+
+2020-06-16 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_aggr.adb (Resolve_Extension_Aggregate): Fix implementation
+ of AI05-0115 by checking the correct type.
+
+2020-06-16 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch6.adb (Analyze_Subprogram_Specification): Generate error
+ message for functions returning interfaces.
+
+2020-06-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Membership_Entry): Relax assertion to also
+ recognize qualified identifiers.
+
+2020-06-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_util.adb (Evaluate_Name): Force evaluation of operators.
+
+2020-06-16 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch4.adb (Analyze_Membership_Op): Reset entity of equality
+ nodes for membership tests with singletons.
+ (Analyze_User_Defined_Binary_Op): Always perform the analysis
+ since nodes coming from the expander also may refer to non
+ standard operators as part of membership expansion.
+ * exp_ch4.adb (Expand_Set_Membership.Make_Cond): Reset entity of
+ equality node.
+ * sem_type.ads: Fix typo in comment.
+
+2020-06-16 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Add
+ Check_Not_Incomplete_Type call.
+
+2020-06-16 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch6.adb: Add closing paren in a comment.
+ * sem_util.adb: Correct comment typo (aggreate => aggregate).
+
+2020-06-16 Javier Miranda <miranda@adacore.com>
+
+ * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ Code cleanup.
+
+2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * freeze.adb (In_Expanded_Body): Remove unreachable code.
+ (Freeze_Expression): Rename a couple of local variables.
+ In the case of an expanded body, also freeze locally the
+ entities declared in a nested block.
+
+2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch4.adb (Transform_Object_Operation): Document that it
+ may be partially destructive for the parent of the node.
+ (Try_Object_Operation): Undo the changes made above on failure.
+
+2020-06-16 Javier Miranda <miranda@adacore.com>
+
+ * restrict.adb (Global_No_Tasking): Adding
+ Targparm.Restrictions_On_Target Fixes regressions with zfp.
+
+2020-06-16 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb: (Freeze_Expression, In_Expanded_Body): Treat the
+ generated body of an expression function like other bodies
+ generated during expansion (e.g. stream subprograms) so that
+ those bodies are not treated as freezing points. Handle properly
+ other global references in such completions.
+
+2020-06-16 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch8.adb (Analyze_Object_Renaming): Remove trivially
+ useless initialization of Is_Object_Reference.
+ * sem_util.adb (Is_Object_Reference): Simplify detection of
+ binary and unary operators; literally implement rules about
+ aggregates and qualified expressions; recognize string literals
+ as object references.
+
+2020-06-16 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch12.adb (Validate_Derived_Type_Instance): Reword error
+ message for 12.5.1(8) subclause and add secondary message if
+ the incompatibility comes from the predicates.
+ * sem_ch3.adb (Check_Constraining_Discriminant): New procedure
+ to give the error required by the 3.7(15) subclause. Mention
+ "statically" in the error message and add secondary message
+ if the incompatibility comes from the predicates.
+ (Build_Derived_Concurrent_Type): Call it when a new discriminant
+ constrains an old one.
+ (Build_Derived_Record_Type): Likewise.
+ * sem_eval.ads (Predicates_Compatible): Declare.
+ * sem_eval.adb (Predicates_Compatible): New function to implement
+ the compatibility of predicates specified by the 4.9.1 clause.
+ (Subtypes_Statically_Compatible): Call it.
+
+2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_eval.ads (Predicates_Match): Fix description.
+ * sem_eval.adb (Predicates_Match): Rewrite.
+
+2020-06-15 Ed Falis <falis@adacore.com>
+
+ * Makefile.rtl: Change name of hie/g-io__vxworks-ppc-cert.adb.
+
+2020-06-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch8.adb (Premature_Usage): Add support for subtype
+ references and replace set of if-then-else by a case statement.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Analyze_Depends_In_Decl_Part,
+ Analyze_Global_In_Decl_Part): Bring back task discriminants for
+ analysis of the Global/Depends contracts; add comments.
+
+2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (Return_Applies_To): Document special usage for E_Block.
+ * einfo.adb (Write_Field8_Name): Write it for E_Block too.
+ * exp_ch4.adb (Expand_N_Type_Conversion): Remove implementation of
+ the check prescribed by AI05-0073.
+ * exp_ch6.adb (Apply_CW_Accessibility_Check): New procedure to apply
+ the check prescribed by AI95-344 extracted from...
+ (Expand_N_Extended_Return_Statement): Apply the check prescribed by
+ AI95-344 to the expression, if present. Suppress only access checks
+ when analyzing the rewritten result.
+ (Expand_Simple_Function_Return): ...here. Rename local variable.
+ Call Apply_CW_Accessibility_Check to apply the check prescribed by
+ AI95-344, but do not do it for the simple return statement generated
+ by the expansion of an extended return statement. Apply the check
+ prescribed by AI05-0073 to all functions returning anonymous access
+ type designating a specific tagged type, but not if the expression
+ was null or tag checks are suppressed for the type, and use Not In
+ operator rather than comparing the tags explicitly.
+ * sem.adb (Analyze): Handle all Suppress values.
+ * sem_ch6.adb (Analyze_Function_Return): Do not explicitly apply
+ predicate checks in the case of an extended return statement.
+ Do not apply an implicit conversion to the anonymous access result
+ type in the case of the simple return statement generated by the
+ expansion of an extended return statement.
+ (New_Overloaded_Entity): Small comment tweak.
+ * treepr.adb (Print_Node): Fix typo in flag string.
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * exp_put_image.ads, exp_put_image.adb
+ (Image_Should_Call_Put_Image): New function to determine whether
+ the call to Put_Image should be generated.
+ (Build_Image_Call): New procedure to generate the call to
+ Put_Image.
+ * exp_imgv.adb (Expand_Image_Attribute): Use underlying types to
+ bypass privacy (only in Ada 2020). If
+ Image_Should_Call_Put_Image is True (which happens only in Ada
+ 2020), then call Build_Image_Call.
+ * rtsfind.ads, rtsfind.adb: Add the necessary declarations in
+ Ada.Strings.Text_Output.Buffers.
+ * sem_attr.adb (Check_Image_Type): Enable the Ada 2020 case.
+ * libgnat/a-stoufo.ads, libgnat/a-stoufo.adb: Use the less
+ restrictive type that allows newline characters.
+
+2020-06-15 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch9.ads (Build_Master_Declaration): Add commas.
+ * exp_ch9.adb (Build_Master_Entity): Spelling fix ("build" =>
+ "built").
+ (Build_Task_Activation_Call): Fix word order.
+
+2020-06-15 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbin.ads (Big_Positive, Big_Natural): Fix
+ predicate.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Fix
+ dealing with scopes on subprogram bodies that act as specs.
+ * sem_util.adb (Has_Relaxed_Initialization): Fix trivial
+ mistake.
+
+2020-06-15 Javier Miranda <miranda@adacore.com>
+
+ * restrict.ads (Set_Global_No_Tasking, Global_No_Tasking): New
+ subprograms.
+ * restrict.adb (Set_Global_No_Tasking, Global_No_Tasking): New
+ subprograms.
+ * sem_ch3.adb (Access_Definition): Do not skip building masters
+ since they may be required for BIP calls.
+ (Analyze_Subtype_Declaration): Propagate attribute
+ Is_Limited_Record in class-wide subtypes and subtypes with
+ cloned subtype attribute; propagate attribute
+ Is_Limited_Interface.
+ * sem_ch6.adb (Check_Anonymous_Return): Do not skip building
+ masters since they may be required for BIP calls. Use
+ Build_Master_Declaration to declare the _master variable.
+ (Create_Extra_Formals): Add decoration of Has_Master_Entity when
+ the _master formal is added.
+ * exp_ch3.adb (Init_Formals): Adding formal to decorate it with
+ attribute Has_Master_Entity when the _master formal is added.
+ (Build_Master): Do not skip building masters since they may be
+ required for BIP calls.
+ (Expand_N_Object_Declaration): Ensure activation chain and
+ master entity for objects initialized with BIP function calls.
+ * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ Adding support to detect and save restriction No_Tasking when
+ set in the run-time package System or in a global configuration
+ pragmas file.
+ * sem_util.adb (Current_Entity_In_Scope): Overload this
+ subprogram to allow searching for an entity by its Name.
+ * sem_util.ads (Current_Entity_In_Scope): Update comment.
+ * exp_ch4.adb (Expand_N_Allocator): Do not skip building masters
+ since they may be required for BIP calls.
+ * exp_ch6.ads (Might_Have_Tasks): New subprogram.
+ * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Add
+ support for BIP calls returning objects that may have tasks.
+ (Make_Build_In_Place_Call_In_Allocator): Build the activation
+ chain if the result might have tasks.
+ (Make_Build_In_Place_Iface_Call_In_Allocator): Build the class
+ wide master for the result type.
+ (Might_Have_Tasks): New subprogram.
+ (Needs_BIP_Task_Actuals): Returns False when restriction
+ No_Tasking is globally set.
+ * exp_ch9.ads (Build_Master_Declaration): New subprogram.
+ * exp_ch9.adb (Build_Activation_Chain_Entity): No action
+ performed when restriction No_Tasking is globally set.
+ (Build_Class_Wide_Master): No action performed when restriction
+ No_Tasking is globally set; use Build_Master_Declaration to
+ declare the _master variable.
+ (Build_Master_Declaration): New subprogram.
+ (Build_Master_Entity): No action performed when restriction
+ No_Tasking is globally set; added support to handle transient
+ scopes and _finalizer routines.
+ (Build_Master_Renaming): No action performed when restriction
+ No_Tasking is globally set.
+ (Build_Task_Activation_Call): Skip generating the call when
+ the chain is an ignored ghost entity.
+ (Find_Master_Scope): Generalize the code that detects transient
+ scopes with master entity.
+ * einfo.ads (Has_Nested_Subprogram): Minor comment reformatting.
+
+2020-06-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_attr.adb (Eval_Attribute): Protect against previous
+ errors.
+ * sem_ch13.adb (Analyze_Aspect_Default_Value): Remove redundant
+ error checking, handling in Analyze_Aspect_Specifications.
+ (Analyze_Aspect_Specifications): Refine error messages on
+ Default_[Component_]Value.
+ (Check_Aspect_Too_Late): New procedure.
+ (Rep_Item_Too_Late.Is_Derived_Type_With_Constraint): Remove,
+ dead code.
+ * aspects.ads (Is_Representation_Aspect): Default_Value is a
+ representation aspect.
+
+2020-06-15 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-wichha.ads, libgnat/a-wichha.adb,
+ libgnat/a-wichun.ads, libgnat/a-wichun.adb (Is_Basic, To_Basic):
+ New.
+ * libgnat/s-utf_32.ads, libgnat/s-utf_32.adb (Is_UTF_32_Basic,
+ To_UTF_32_Basic, Decomposition_Search): New subprograms.
+ (Unicode_Decomposition): New table.
+
+2020-06-15 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch6.adb (Add_Call_By_Copy_Code): In the case of a view
+ conversion passed to a scalar out-mode parameter where the
+ formal has Default_Value set, declare the copy temp with the
+ base type of the formal's subtype and initialize the copy temp
+ with the actual's value.
+
+2020-06-15 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Case_Expression): Set default value for
+ Target to silence potential warnings.
+ (Expand_N_If_Expression): Add calculation to check when the if
+ expression is used directly in the context of an actual of an
+ anonymous access type and add a special path to force expansion
+ of the if expression in this case.
+ * exp_ch6.adb (Expand_Branch): Generate an assignment to the
+ level temporary for a given branch.
+ (Expand_Call_Helper): Add expansion to allow for creating a
+ temporary to store associated accessiblity levels on each branch
+ of the conditional expression. Also perform expansion of
+ function calls into expressions with actions, and fixup
+ references to N with Call_Node.
+ (Insert_Level_Assign): Move through nested conditional
+ expressions to each branch.
+ * sem_util.ads, sem_util.adb (Is_Anonymous_Access_Actual): Added
+ to detect when to force expansion of if expressions.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Analyze_Depends_In_Decl_Part,
+ Analyze_Global_In_Decl_Part): Do not install task discriminants
+ for analysis of the Global/Depends contracts.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * contracts.adb (Analyze_Object_Contract): Do not expect
+ Global/Depends on single protected units.
+
+2020-06-15 Justin Squirek <squirek@adacore.com>
+
+ * sem_res.adb (Valid_Conversion): Add missing condition to
+ trigger proper static accessiblity failiures when the target
+ type is an anonymous access.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch6.adb (Expand_Call_Helper): Replace repeated Ekind with
+ Ekind_In.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch6.adb, sem_util.adb: Remove excessive parents,
+ especially since they don't make the code any easier to read.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * aspects.ads (Aspect_Id): Add Aspect_Relaxed_Initialization.
+ (Implementation_Defined_Aspect): Add new aspect.
+ (Aspect_Argument): Add new aspect with Optional_Expression
+ argument.
+ (Is_Representation_Aspect): Add new aspect as a
+ non-representation one.
+ (Aspect_Names): Add name for the new aspect.
+ (Aspect_Delay): Add new aspect as a non-delayed one.
+ * sem_ch3.adb: Minor reformatting.
+ * einfo.ads, einfo.adb (Is_Relaxed_Initialization_State): New
+ query; reuses existing code for querying abstract state options.
+ * exp_attr.adb (Expand_N_Attribute_Reference): For now ignore
+ attribute 'Initialized.
+ * sem_attr.adb (Analyze_Attribute_Old_Result): Allow attribute
+ 'Result to be used in the aspect Relaxed_Initialization
+ expression.
+ (Analyze_Attribute): Analyze attribute 'Initialized; based on
+ existing code for attribute 'Valid_Scalars.
+ (Eval_Attribute): Do not expect attribute 'Initialized, just
+ like attribute 'Valid_Scalars is not expected.
+ * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): New
+ routine.
+ (Analyze_Aspect_Specifications): Analyze new aspect in a
+ dedicated routine.
+ (Check_Aspect_At_Freeze_Point): Do not expect new aspect.
+ * sem_prag.adb (Analyze_Abstract_State): Support option
+ Relaxed_Initialization on abstract states.
+ * sem_util.ads, sem_util.adb (Has_Relaxed_Initialization): New
+ query for the GNATprove backend.
+ * snames.ads-tmpl (Snames): Add Name_Ids for the new aspect and
+ attribute; add an Attribute_Id for the new attribute.
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * exp_put_image.adb, libgnat/s-putima.adb, libgnat/s-putima.ads,
+ rtsfind.ads: Enable Put_Image if Is_Access_Subprogram_Type (Typ).
+ Remove comment saying it's disabled in that case. Rename
+ Put_Image_Access_Prot to be Put_Image_Access_Prot_Subp to
+ clarify that we're talking about access-to-subprogram, not
+ access-to-protected-object.
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * sem_attr.adb (Check_Image_Type): New procedure for checking
+ the type, depending on language version. Disable the Ada 2020
+ support until the corresponding expander work is done.
+ (Analyze_Image_Attribute): Call Check_Image_Type. Rearrange the
+ code to be simplier and more logical. When P_Type is modified,
+ modify P_Base_Type accordingly.
+ * sem_util.adb (Is_Object_Image): Do not return False if the
+ prefix is a type. X'Image should be considered an image of an
+ object iff X is an object (albeit illegal pre-2020 if
+ nonscalar).
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * libgnat/s-putima.ads, libgnat/s-putima.adb
+ (Put_Image_Access_Subp, Put_Image_Access_Prot): New procedures
+ for printing access-to-subprogram objects. Remove an explicit
+ " ", because Put_Image includes the annoying leading blank.
+ * rtsfind.ads: Add new procedures in s-putima.
+ * exp_put_image.adb: Call new procedures as appropriate.
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * exp_imgv.adb (Expand_Image_Attribute): Allow private types.
+ Put_Image generates Image for numeric types, and private types
+ whose full type is numeric. This requires the Conversion_OK flag
+ for integer and floating-point types. For fixed point, we need
+ the extra conversion.
+ * exp_put_image.adb (Build_Elementary_Put_Image_Call): Remove
+ special handling of real types.
+ (Enable_Put_Image): Enable for reals.
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * exp_attr.adb (Put_Image): Use underlying type for strings.
+ Remove unchecked union processing.
+ * exp_put_image.adb (Tagged_Put_Image_Enabled): Use -gnatd_z to
+ enable default Put_Image for tagged types. This allows testing
+ that feature.
+ (Build_String_Put_Image_Call): Set Conversion_OK flag.
+ (Make_Component_List_Attributes): Remove unchecked union
+ processing.
+ (Enable_Put_Image): Disable for unchecked unions. Enable for
+ nonscalar types (which were mistakenly disabled in earlier
+ changes).
+ * debug.adb: Document -gnatd_z switch.
+ * libgnat/s-putima.adb (Put_Image_String, Put_Image_Wide_String,
+ Put_Image_Wide_Wide_String): Double double-quote characters.
+ Forget about special handling of control characters for now --
+ that's rare enough to not be a priority, and it's not clear what
+ the right thing to do is anyway.
+ * namet.adb: Minor: Improve debugger-friendliness.
+ * sinfo.ads: Minor: Add "???" comment.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Is_Renaming_Declaration): Remove.
+
+2020-06-15 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb (Freeze_Expression): When traversing the tree
+ looking for the proper insertion point for the freeze node of an
+ entity that is declared in an outer scope, set the candidate
+ subprogram body node properly. Previous code has an off-by-one
+ error.
+
+2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Has_Same_Storage>:
+ Do not do superfluous work. Add the condition (X'Size /= 0) on
+ both paths and turn binary AND into short-circuit AND THEN.
+
+2020-06-15 Steve Baird <baird@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): In the Loop_Entry case,
+ replace a call to Statically_Denotes_Object with a call to
+ Statically_Names_Object and clean up the preceding comment.
+
+2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_res.adb (Resolve_Set_Membership): Remove local variable.
+ In the non-overloaded case, call Intersect_Types on the left
+ operand and the first alternative to get the resolution type.
+ But test the subtype of the left operand to give the warning.
+
+2020-06-12 Steve Baird <baird@adacore.com>
+
+ * sem_res.adb (Valid_Conversion): The simpler cases of
+ violations of the aforementioned 8.6 rule are already handled
+ correctly. These include cases where the operand of the type
+ conversion is an access parameter or a stand-alone object of an
+ anonymous access type. Add code to detect violations where the
+ operand of the type conversion is an access discriminant whose
+ accessibility level is tied to one of the other simpler cases.
+ This is implemented in a new function,
+ Valid_Conversion.Is_Discrim_Of_Bad_Access_Conversion_Argument,
+ which is called in place of the previous test.
+
+2020-06-12 Bob Duff <duff@adacore.com>
+
+ * exp_attr.adb (Put_Image): Remove assertion. This assertion is
+ False in mixed-Ada-version programs.
+ * exp_put_image.adb (Tagged_Put_Image_Enabled): New flag to make
+ it easy to experiment with Put_Image on tagged types. False in
+ this version.
+ (Enable_Put_Image): Enable in pre-2020. Workarounds: Disable
+ for tagged types if Tagged_Put_Image_Enabled is False. Disable
+ for access-to-subprogram types. Disable if errors have been
+ detected, or Sink is unavailable.
+ (Preload_Sink): Move all conditionals here, from Sem_Ch10, so
+ they can be nearby related code in Enable_Put_Image. Load Sink
+ only if we have seen a tagged type. This removes the dilemma
+ about calling Preload_Sink when compiling the compiler, which
+ caused unwanted dependences.
+ * exp_put_image.ads (Preload_Sink): New formal Compilation_Unit,
+ needed to move all conditionals here, from Sem_Ch10.
+ * libgnat/a-stouut.adb (Put_UTF_8): Make this suitable for
+ inlining, so we don't get warnings about inlining in some tests.
+ And so it can be inlined!
+ * opt.ads (Tagged_Seen): New flag (see Preload_Sink).
+ * scng.adb (Scan): Set new Tagged_Seen flag.
+ * sem_ch10.adb (Analyze_Compilation_Unit): Move conditionals and
+ comments regarding Preload_Sink into Preload_Sink.
+
+2020-06-12 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_res.adb (Resolve_Actuals): Check for AI12-0074.
+
+2020-06-12 Olivier Hainque <hainque@adacore.com>
+
+ * libgnat/s-secsta.ads (Memory_Alignment): New constant, memory
+ alignment for chunks and allocated blocks. Initialize to
+ Standard'Maximum_Alignment * 2.
+ (Chunk_Memory): Use it.
+ * libgnat/s-secsta.adb (Round_Up): Likewise.
+
+2020-06-12 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-prag.adb: Fix ordering.
+ * snames.ads-tmpl (Name_Test_Case, Pragma_Test_Case): Likewise.
+ * sem_prag.adb (Sig_Flags): Likewise.
+
+2020-06-12 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_res.adb (Resolve_Entity_Name): Fix handling of expressions
+ containing array attributes wrt Ada 83 detection.
+
+2020-06-12 Steve Baird <baird@adacore.com>
+
+ * sem_util.ads, sem_util.adb: Define 3 new Boolean-valued
+ functions - Statically_Denotes_Entity,
+ Statically_Denotes_Object, and Statically_Names_Object. The
+ first two were taken from sem_attr.adb. The term "statically
+ names" is defined in the Ada RM and the new function
+ Statically_Names_Object is intended to reflect that definition,
+ or more precisely, as described in a comment in the code, to
+ reflect the expected future definition of that term.
+ * sem_attr.adb: Delete functions Statically_Denotes_Object and
+ Statically_Denotes_Entity; these two functions have been moved
+ to package Sem_Util. Replace call to Statically_Denotes_Object
+ with a call to Statically_Names_Object as per AI12-0217 (a
+ binding interpretation, so no Ada_Version check).
+ * exp_ch9.adb (Expand_Entry_Barrier.Is_Simple_Barrier): Change
+ name of function (it was previously Is_Simple_Barrier_Name)
+ because the function should return True in the case of a static
+ expression; implement this requirement. Change function to
+ include a call to Statically_Names_Object so that, for Ada_2020
+ and later, it will return True for appropriate subcomponent
+ names.
+ (Expand_Entry_Barrier.Is_Pure_Barrier): Handle
+ N_Indexed_Component and N_Selected_Component cases by calling
+ Statically_Names_Object.
+ (Expand_Entry_Barrier): Reorganize to treat Simple_Barriers and
+ Pure_Barriers more uniformly. Prevent cascaded errors.
+
+2020-06-12 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Find_Matching_Actual): Add guard on search loops
+ to detect a compilation error when using a compiler built
+ without assertions.
+ (Instantiate_Formal_Subprogram): Create a new subprogram name
+ for the actual only if formal has contract aspects and expansion
+ is enabled.
+
+2020-06-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_aggr.adb: Add with and use clauses for Sem_Mech.
+ (Get_Base_Object): New function to get the base object of a node.
+ (In_Place_Assign_OK): Add Target_Object parameter. Deal with a
+ qualified expression on entry. Remove short-circuit for array
+ aggregates with a single "others" choice. Do not look into the
+ components of the aggregate if the parent is an allocator.
+ (Check_Component): Add T_OK parameter and rewrite.
+ (Safe_Component): Invoke Check_Component with T_OK set to False.
+ (Convert_To_Assignments): Try to use an in-place assignment for
+ any target; for that, call Get_Base_Object on the target and pass
+ the result to In_Place_Assign_OK.
+ (Expand_Array_Aggregate): Use Parent_Kind and Parent_Node more
+ consistently. For an assignment, call Get_Base_Object on the
+ target and pass the result to In_Place_Assign_OK.
+
+2020-06-12 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * socket.c (__gnat_minus_500ms): Use GetVersionEx to detect
+ Windows Server version.
+ * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): Remade to
+ Boolean constant.
+ * libgnat/g-socket.adb (Set_Socket_Option): Use
+ Minus_500ms_Windows_Timeout constant instead of function call.
+
+2020-06-12 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-coinho.ads, libgnat/a-coinho.adb,
+ libgnat/a-coinho__shared.ads, libgnat/a-coinho__shared.adb
+ (Swap): New procedure.
+
+2020-06-12 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch6.adb (Expand_N_Subprogram_Declaration): Do nothing for
+ a subprogram declared in a protected body.
+ * exp_ch9.ads, exp_ch9.adb
+ (Build_Private_Protected_Declaration): Moved to sem_ch6.adb.
+ (Expand_N_Protected_Body): Do nothing for a subprogram declared
+ in a protected body.
+ * sem_ch6.adb (Build_Internal_Protected_Declaration): Moved from
+ exp_ch9.adb and renamed and fixed to ensure in particular that
+ such subprograms have convention Intrinsic and have no protected
+ version.
+ (Analyze_Subprogram_Body_Helper): Call
+ Build_Internal_Protected_Declaration.
+ (Move_Pragmas): Moved up and merged with the more general
+ version from Build_Private_Protected_Declaration. We only want
+ to copy selected pragmas, most pragmas are not suitable for a
+ copy on the spec.
+
+2020-06-12 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch6.adb (Check_Overriding_Indicatior): Reject an
+ overriding indicator on a subprogram declared within a protected
+ body.
+
+2020-06-12 Piotr Trojanek <trojanek@adacore.com>
+
+ * contracts.adb, einfo.adb, sem_ch4.adb, sem_ch6.adb,
+ sem_res.adb, sem_util.adb: Replace Ekind_In with Is_Entry.
+
+2020-06-12 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_res.adb (Resolve_Entry_Call): Add call to
+ Warn_On_Overlapping_Actuals.
+
+2020-06-12 Arnaud Charlet <charlet@adacore.com>
+
+ * aspects.ads (Is_Representation_Aspect): New array.
+ * sem_ch13.adb (Analyze_Aspect_Specifications): Check
+ 13.1(9.2/5) for representation aspects.
+
+2020-06-12 Bob Duff <duff@adacore.com>
+
+ * exp_put_image.ads, exp_put_image.adb (Preload_Sink): Procedure
+ for preloading type Sink. This has the side effect of loading
+ various dependents, including Ada.Strings.UTF_Encoding.
+ (Enable_Put_Image): Disable Put_Image in pre-2020 versions of
+ Ada. This limitation can probably be lifted later. Enable for
+ tagged types except in predefined units. Disable for CPP types;
+ Put_Image is legal, just prints the type name.
+ * sem_attr.adb (Check_Put_Image_Attribute): Don't complain about
+ Put_Image of CPP types; instead call the "unknown" version of
+ Put_Image.
+ * sem_ch10.adb (Analyze_Compilation_Unit): Call Preload_Sink.
+
+2020-06-12 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify.
+
+2020-06-12 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_warn.adb (Warn_On_Overlapping_Actuals): Remove suppression
+ for internal units.
+
+2020-06-12 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_strm.adb (Build_Elementary_Input_Call): Add support for 24
+ bits elementary types.
+ * rtsfind.ads: Add 24 bits integer streaming routines.
+ * sem_ch13.adb (Analyze_Attribute_Definition_Clause
+ [Attribute_Stream_Size]): Add support for 24 bits elementary
+ types.
+ * libgnat/s-stratt.ads, libgnat/s-stratt.adb,
+ libgnat/s-stratt__xdr.adb: Add support for signed and unsigned
+ 24 bits integers.
+
+2020-06-12 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Get_Discr_Value): Cleanup.
+
+2020-06-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * rtsfind.ads (RTU_Id): Add System_Address_To_Access_Conversions.
+ * sem_elab.adb (Elaboration_Phase_Active): Alphabetize.
+ (Finalize_All_Data_Structures): Likewise.
+ (Error_Preelaborated_Call): New procedure.
+ (Build_Call_Marker): Set Is_Preelaborable_Call flag in marker.
+ (Build_Access_Marker): Likewise.
+ (Build_Subprogram_Invocation): Likewise.
+ (Build_Task_Activation): Likewise.
+ (Check_Preelaborated_Call): Return when the call is preelaborable.
+ Call Error_Preelaborated_Call to give the error otherwise.
+ (Check_Elab_Call): Likewise.
+ * sem_util.adb (Is_Preelaborable_Function): New predicate.
+ (Is_Non_Preelaborable_Construct.Visit): Recurse on the
+ Explicit_Actual_Parameter field of N_Parameter_Association.
+ (Is_Non_Preelaborable_Construct.Visit_Subexpression): In Ada 2020,
+ for a call to a preelaborable function, visit the parameter list;
+ otherwise, raise Non_Preelaborable exception.
+ (Is_Preelaborable_Construct): Likewise, but recursively check the
+ parameters instead and return false upon failure, otherwise true.
+ * sinfo.ads (Is_Preelaborable_Call): New flag in call marker nodes.
+ (Is_Preelaborable_Call): New inline function.
+ (Set_Is_Preelaborable_Call): New inline procedure.
+ * sinfo.adb (Is_Preelaborable_Call): New inline function.
+ (Set_Is_Preelaborable_Call): New inline procedure.
+
+2020-06-12 Bob Duff <duff@adacore.com>
+
+ * stringt.ads: Remove "use System;".
+
+2020-06-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch4.adb (Try_Container_Indexing): Replace call to
+ First_Discriminant by Get_Reference_Discriminant to get the
+ reference discriminant.
+ * sem_ch13.adb (Check_Indexing_Functions): Likewise.
+ * sem_ch5.adb (Preanalyze_Range): Call Get_Reference_Discriminant
+ to get the reference discriminant.
+ * sem_util.adb (Is_OK_Variable_For_Out_Formal): Treat all
+ Ada 2012 implicit dereferences in only one place.
+ (Is_Variable): Minor tweak.
+
+2020-06-12 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Has_Contracts): New predicate to check whether a
+ formal subprogram carries an aspect specification for a pre- or
+ postcondition.
+ (Build_Subprogram_Wrappers): If actual is overloaded, create a
+ new name to be used in call inside wrapper body. This names
+ carries the interpretations of the actual, and is resolved when
+ the body is analyzed.
+ (Build_Subprogram_Body_Wrapper): Use this generated name in
+ call.
+ (Build_Subprogram_Decl_Wrapper): Build profile of wrapper from
+ the profile of formal, and reset type entities for subsequent
+ analysis.
+
+2020-06-12 Bob Duff <duff@adacore.com>
+
+ * debug.adb: Remove usage of -gnatd_z.
+ * exp_attr.adb, exp_put_image.ads, exp_put_image.adb: Clean up
+ the enable/disable code. If Put_Image is disabled for a type,
+ systematically call the "unknown" version. Improve comments.
+ Consolidate workarounds. Remove usage of -gnatd_z.
+
+2020-06-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_elab.adb: Fix typos in comments.
+
+2020-06-12 Justin Squirek <squirek@adacore.com>
+
+ * sem_util.adb (Object_Access_Level): Add processing of implicit
+ dereferences.
+
+2020-06-12 Bob Duff <duff@adacore.com>
+
+ * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads,
+ libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb,
+ libgnat/a-nbnbre.ads: Update Put_Image, and uncomment the aspect
+ specification. Add pragmas Ada_2020.
+ * libgnat/a-stouut.ads, libgnat/a-stteou.ads: Add Preelaborate,
+ because the Big_Numbers packages have Preelaborate, and now
+ depend on these Text_Output packages.
+
+2020-06-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (No_Return): Document it for all subprograms.
+ * einfo.adb (Set_No_Return): Adjust assertion accordingly.
+ * sem_ch3.adb (Check_Abstract_Overriding): Implement the
+ check prescribed by RM 6.5.1(6/2) here instead of...
+ (Derive_Subprogram): Adjust comment accordingly.
+ * sem_disp.adb (Override_Dispatching_Operation): ...here.
+ Remove superfluous return statement.
+ * sem_ch6.adb (Check_No_Return_Expression): New procedure.
+ (Analyze_Function_Return): Call it to implement the check
+ prescribed by AI12-0269 for simple return statements of
+ No_Return functions, and also checks extended statements.
+ (Analyze_Return_Statement): Only give an error on a return
+ statement in No_Return procedures. Use idiomatic form.
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): Adjust error
+ message for No_Return renaming subprogram.
+ * sem_prag.adb (Analyze_Pragma) <Pragma_No_Return>: Accept
+ it on functions and generic functions in Ada 2020.
+
+2020-06-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_res.adb (Resolve_Implicit_Dereference): In an instance,
+ reset the type of the prefix if it is private before building
+ the dereference.
+
+2020-06-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_util.adb (Safe_Unchecked_Type_Conversion): Add missing
+ Is_Type guard before calling Has_Discriminants on Etype.
+
+2020-06-11 Bob Duff <duff@adacore.com>
+
+ * libgnat/a-nbnbin__gmp.adb: There's no Optional_Big_Integer
+ anymore. Invalid_Big_Integer is not used.
+ Greatest_Common_Divisor returns Big_Positive.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Get_Value): Refine type of the Compon parameter.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Resolve_Record_Aggregate): Refine type of
+ Others_Box.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * checks.adb, exp_ch7.adb, exp_ch9.adb, exp_smem.adb, lib.adb,
+ nlists.adb, sem.adb, sem_aggr.adb, sem_ch3.adb, sem_ch6.adb,
+ sem_ch8.adb, sem_dim.adb, sem_res.adb, sem_util.adb,
+ sem_warn.adb: Replace uses of Next function with procedure.
+
+2020-06-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_pakd.ads: Add paragraph about scalar storage order.
+ * exp_pakd.adb (Install_PAT): Do not set the scalar storage
+ order of the PAT here but...
+ (Set_PB_Type): ...here instead and...
+ (Create_Packed_Array_Impl_Type): ...here as well.
+ * rtsfind.ads (RE_Id): Add RE_Rev_Packed_Bytes{1,2,4}.
+ (RE_Unit_Table): Likewise.
+ * libgnat/s-unstyp.ads (Rev_Packed_Bytes1): New derived type.
+ (Rev_Packed_Bytes2): Likewise.
+ (Rev_Packed_Bytes4): Likewise.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch4.adb, sem_ch6.adb, sem_res.adb, sem_util.ads: Fix
+ references to SPARK RM 7.1.3 rule numbers.
+
+2020-06-11 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify code,
+ remove inner predicate Is_Covered_Formal, preserve warning for
+ two overlapping composite types when only one is writable, and
+ for two overlapping and writable elementary types.
+
+2020-06-11 Steve Baird <baird@adacore.com>
+
+ * contracts.adb (Add_Contract_Item): Support specifying
+ volatility refinement aspects for types.
+ (Analyze_Contracts): Add call to Analyze_Type_Contract in the
+ case of a contract for a type.
+ (Freeze_Contracts): Add call to Analyze_Type_Contract in the
+ case of a contract for a type.
+ (Check_Type_Or_Object_External_Properties): A new procedure
+ which performs the work that needs to be done for both object
+ declarations and types.
+ (Analyze_Object_Contract): Add a call to
+ Check_Type_Or_Object_External_Properties and remove the code in
+ this procedure which did much of the work that is now performed
+ by that call.
+ (Analyze_Type_Contract): Implement this new routine as nothing
+ more than a call to Check_Type_Or_Object_External_Properties.
+ * contracts.ads: Update comment for Add_Contract_To_Item because
+ types can have contracts. Follow (questionable) precedent and
+ declare new routine Analyze_Type_Contract as visible (following
+ example of Analyze_Object_Contract), despite the fact that it is
+ never called from outside of the package where it is declared.
+ * einfo.adb (Contract, Set_Contract): Id argument can be a type;
+ support this case.
+ (Write_Field34_Name): Field name is "contract" for a type.
+ * einfo.ads: Update comment describing Contract attribute.
+ * sem_ch3.adb (Build_Derived_Numeric_Type): Is_Volatile should
+ return same answer for all subtypes of a given type. Thus, when
+ building the base type for something like type Volatile_1_To_10
+ is range 1 .. 10 with Volatile; that basetype should be marked
+ as being volatile.
+ (Access_Type_Declaration): Add SPARK-specific legality check
+ that the designated type of an access type shall be compatible
+ with respect to volatility with the access type.
+ * sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Add
+ SPARK-specific legality check that an actual type parameter in
+ an instantiation shall be compatible with respect to volatility
+ with the corresponding formal type.
+ * sem_ch13.adb (Analyze_Aspect_Specifications): Perform checks
+ for aspect specs for the 4 volatility refinement aspects that
+ were already being performed for all language-defined aspects.
+ * sem_prag.adb (Analyze_External_Property_In_Decl_Part,
+ Analyze_Pragma): External properties (other than No_Caching) may
+ be specified for a type, including a generic formal type.
+ * sem_util.ads: Declare new subprograms - Async_Readers_Enabled,
+ Async_Writers_Enabled, Effective_Reads, Effective_Writes, and
+ Check_Volatility_Compatibility.
+ * sem_util.adb (Async_Readers_Enabled, Async_Writers_Enabled,
+ Effective_Reads, Effective_Writes): Initial implementation of
+ new functions for querying aspect values.
+ (Check_Volatility_Compatibility): New procedure intended for use
+ in checking all SPARK legality rules of the form "<> shall be
+ compatible with respect to volatility with <>".
+ (Has_Enabled_Property): Update comment because Item_Id can be a
+ type. Change name of nested Variable_Has_Enabled_Property
+ function to Type_Or_Variable_Has_Enabled_Property; add a
+ parameter to that function because recursion may be needed,
+ e.g., in the case of a derived typ). Cope with the case where
+ the argument to Has_Enabled_Property is a type.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Add_Association): Add assertion about the formal
+ parameters.
+ (Propagate_Discriminants): Always add an explicit component
+ association, so that an "others => <>" association is never
+ needed.
+
+2020-06-11 Bob Duff <duff@adacore.com>
+
+ * exp_put_image.adb (Build_Elementary_Put_Image_Call): If the
+ underlying type is real, call Put_Image_Unknown.
+ (Build_Unknown_Put_Image_Call): Pass the type name to
+ Put_Image_Unknown.
+ * libgnat/s-putima.ads, libgnat/s-putima.adb
+ (Put_Image_Unknown): Add Type_Name parameter. Remove
+ overly-detailed documentation of what it does; better to leave
+ it open.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Build_Constrained_Array_Type,
+ Build_Constrained_Discriminated_Type): Skip unnecessary loop
+ iterations.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Build_Constrained_Itype): Move to Sem_Util.
+ * sem_ch3.adb (Build_Subtype, Inherit_Predicate_Flags): Move...
+ * sem_util.adb (Build_Subtype): Here. Add parameters for
+ references to objects previously declared in enclosing scopes.
+ (Inherit_Predicate_Flags): And here, because it is called by
+ Build_Subtype.
+ * sem_util.ads (Build_Overriding_Spec): Reorder alphabetically.
+ (Build_Subtype): Moved from Sem_Ch3; comments updated.
+ (Build_Constrained_Itype): Moved from Sem_Aggr; comments
+ updated.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Case_Table_Type): Change index type from Nat to
+ Pos.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Build_Constrained_Itype): Previously a declare
+ block, now a separate procedure; the only change is that now
+ New_Assoc_List might include components and an others clause,
+ which we ignore (while we deal with discriminants exactly as we
+ did before); extend a ??? comment about how this routine is
+ different from the Build_Subtype
+ (Resolve_Record_Aggregate): Create a constrained itype not just
+ for the outermost record aggregate, but for its inner record
+ aggregates as well.
+
+2020-06-11 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.adb (Build_Discriminant_Checks): Build an explicit
+ dereference when the type is an access type.
+ * exp_atag.adb (Build_CW_Membership): Add explicit dereferences.
+ (Build_Get_Access_Level): Likewise.
+ (Build_Get_Alignment): Likewise.
+ (Build_Inherit_Prims): Likewise.
+ (Build_Get_Transportable): Likewise.
+ (Build_Set_Size_Function): Likewise.
+ * exp_ch3.adb (Build_Offset_To_Top_Function): Likewise.
+ * exp_ch4.adb (Expand_Allocator_Expression): Likewise.
+ (Expand_N_Indexed_Component ): Remove code dealing with implicit
+ dereferences.
+ (Expand_N_Selected_Component): Likewise.
+ (Expand_N_Slice): Likewise.
+ * exp_ch9.adb (Add_Formal_Renamings): Add explicit dereference.
+ (Expand_Accept_Declarations): Likewise.
+ (Build_Simple_Entry_Call): Remove code dealing with implicit
+ dereferences.
+ (Expand_N_Requeue_Statement): Likewise.
+ * exp_disp.adb (Expand_Dispatching_Call): Build an explicit
+ dereference when the controlling type is an access type.
+ * exp_spark.adb (Expand_SPARK_N_Selected_Component): Delete.
+ (Expand_SPARK_N_Slice_Or_Indexed_Component): Likewise.
+ (Expand_SPARK): Do not call them.
+ * sem_ch4.adb (Process_Implicit_Dereference_Prefix): Delete.
+ (Process_Indexed_Component): Call Implicitly_Designated_Type
+ to get the designated type for an implicit dereference.
+ (Analyze_Overloaded_Selected_Component): Do not insert an
+ explicit dereference here.
+ (Analyze_Selected_Component): Likewise.
+ (Analyze_Slice): Call Implicitly_Designated_Type to get the
+ designated type for an implicit dereference.
+ * sem_ch8.adb (Has_Components): New predicate extracted from...
+ (Is_Appropriate_For_Record): ...this. Delete.
+ (Is_Appropriate_For_Entry_Prefix): Likewise.
+ (Analyze_Renamed_Entry): Deal with implicit dereferences.
+ (Find_Selected_Component): Do not insert an explicit dereference
+ here. Call Implicitly_Designated_Type to get the designated type
+ for an implicit dereference. Call Has_Components, Is_Task_Type
+ and Is_Protected_Type directly. Adjust test for error.
+ * sem_res.adb (Resolve_Implicit_Dereference): New procedure.
+ (Resolve_Call): Call Resolve_Indexed_Component last.
+ (Resolve_Entry): Call Resolve_Implicit_Dereference on the prefix.
+ (Resolve_Indexed_Component): Call Implicitly_Designated_Type to
+ get the designated type for an implicit dereference and
+ Resolve_Implicit_Dereference on the prefix at the end.
+ (Resolve_Selected_Component): Likewise.
+ (Resolve_Slice): Likewise. Do not apply access checks here.
+ * sem_util.ads (Implicitly_Designated_Type): Declare.
+ * sem_util.adb (Copy_And_Maybe_Dereference): Simplify.
+ (Implicitly_Designated_Type): New function.
+ (Object_Access_Level): Fix typo.
+ * sem_warn.adb (Check_Unset_Reference): Test Comes_From_Source
+ on the original node.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_disp.adb: Minor reformatting.
+ * exp_aggr.adb (Is_Static_Dispatch_Table_Aggregate): Recognize
+ aggregates of the Ada.Tags.Object_Specific_Data type as static.
+ * sem_aggr.adb (Check_Static_Discriminated_Subtype): Deconstruct
+ and do not call it from Build_Constrained_Itype.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_disp.adb (Make_Secondary_DT): Internally generated OSD
+ tables are now constant.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_aggr.adb (Backend_Processing_Possible): Remove useless
+ call.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * opt.ads (Building_Static_Dispatch_Tables): Fix punctuation in
+ comment.
+
+2020-06-11 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-stposu.ads (Root_Storage_Pool_With_Subpools,
+ Root_Subpool): Mark with Preelaborable_Initialization.
+
+2020-06-11 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch9.adb (Expand_N_Conditional_Entry_Call): Replace call to
+ New_Copy_List by calls to the new routine
+ New_Copy_Separate_List.
+ * sem_util.ads (New_Copy_Separate_List, New_Copy_Separate_Tree):
+ New routines.
+ * sem_util.adb (New_Copy_Separate_List, New_Copy_Separate_Tree):
+ New routines.
+ (New_Copy_Tree): Extend the machinery that detects syntactic
+ nodes to handle lists of indentifiers with field More_Ids;
+ otherwise such nodes are erroneously handled as semantic nodes.
+ Copy aspect specifications attached to nodes.
+ * sem_ch12.adb (Copy_Generic_Node): Protect reading attribute
+ Etype.
+
+2020-06-11 Bob Duff <duff@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Specifications): Do not set the
+ Has_Predicates flag when the Predicate_Failure aspect is seen.
+ It is legal (but pointless) to use this aspect without a
+ predicate. If we set the flag, we generate a half-baked
+ Predicate procedure, and if that procedure is nested, it causes
+ unnesting to crash.
+
+2020-06-11 Bob Duff <duff@adacore.com>
+
+ * exp_put_image.adb (Build_Record_Put_Image_Procedure): Remove
+ special processing of protected types, because those are handled
+ by Build_Protected_Put_Image_Call.
+ (Enable_Put_Image): Use the switch -gnatd_z to control enabling
+ of Put_Image. Disable Put_Image for types in Remote_Types
+ packages.
+ * debug.adb: Document -gnatd_z switch.
+ * exp_imgv.adb, libgnat/a-stteou.ads, opt.ads: Minor cleanups.
+
+2020-06-11 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_warn.adb (Warn_On_Overlapping_Actuals): Add label to the
+ outer loop and use it in the exit statement.
+
+2020-06-11 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * exp_ch3.adb (Build_Assignment): Generate predicate check if
+ subtype mark has predicate.
+
+2020-06-11 Justin Squirek <squirek@adacore.com>
+
+ * sem_util.adb (Expand_N_Attribute_Reference): Use original
+ nodes where required to avoid looking at the expanded tree.
+
+2020-06-11 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-catizo.ads, libgnat/a-nbnbin.ads,
+ libgnat/a-nbnbre.ads, libgnat/a-nubinu.ads,
+ libgnat/s-aoinar.ads, libgnat/s-aomoar.ads,
+ libgnat/s-aotase.ads, libgnat/s-stopoo.ads: Remove aspects that
+ we will not implement.
+
+2020-06-11 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-aoinar.adb (Atomic_Fetch_And_Add,
+ Atomic_Fetch_And_Subtract): Add fallback using
+ compare-and-exchange, in case the integer type does not map to a
+ machine type.
+
+2020-06-10 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-aomoar.ads, libgnat/s-aomoar.adb: New files.
+ * libgnat/s-atopar.ads: Move...
+ * libgnat/s-aoinar.ads: Here.
+ * libgnat/s-atopar.adb: Move...
+ * libgnat/s-aoinar.adb: Here.
+ * impunit.adb: Update list of runtime files.
+ * Makefile.rtl (GNATRTL_NONTASKING_OBJS=): Adjust.
+
+2020-06-10 Arnaud Charlet <charlet@adacore.com>
+
+ * snames.ads-tmpl (Name_Characters_Assertion_Check,
+ Name_Containers_Assertion_Check,
+ Name_Interfaces_Assertion_Check, Name_IO_Assertion_Check,
+ Name_Numerics_Assertion_Check, Name_Strings_Assertion_Check,
+ Name_System_Assertion_Check): New constants.
+ * types.ads (Characters_Assertion_Check,
+ Containers_Assertion_Check, Interfaces_Assertion_Check,
+ IO_Assertion_Check, Numerics_Assertion_Check,
+ Strings_Assertion_Check, System_Assertion_Check): New constants.
+ (All_Checks): Update accordingly.
+
+2020-06-10 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * exp_ch3.adb (Build_Equivalent_Record_Aggregate): Return Empty
+ if Etype of record component has predicates.
+
+2020-06-10 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch3.adb (Build_Init_Statements): Implement the notion of
+ "require late initialization".
+
+2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_util.adb (Copy_And_Maybe_Dereference): Temporarily copy
+ the parent node of the original tree when dereferencing.
+
+2020-06-10 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_warn.adb (Warn_On_Overlapping_Actuals): Add a warning when
+ two actuals in a call overlap, both are composite types that may
+ be passed by reference, and only one of them is writable.
+
+2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_N_In): Use an expression with actions to
+ insert the PE raise statement for the Unchecked_Union case.
+
+2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch4.adb (Analyze_Call): Use idiomatic condition.
+ * sem_res.adb (Resolve_Call): Remove obsolete code.
+
+2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_util.adb (Copy_And_Maybe_Dereference): New function.
+ (Build_Access_Record_Constraint): Use it to copy the prefix.
+ (Build_Actual_Array_Constraint): Likewise.
+ (Build_Actual_Record_Constraint): Likewise.
+
+2020-06-10 Bob Duff <duff@adacore.com>
+
+ * sem_prag.adb (Invariant): Remove the pragma removing code. It
+ doesn't work to remove the pragma, because various flags are set
+ during Build_Invariant_Procedure_Declaration and
+ Build_Invariant_Procedure_Body that need to be set to avoid the
+ spurious warnings.
+ * exp_util.adb (Make_Invariant_Call): Avoid calling the
+ invariant-checking procedure if the body is empty. This is an
+ optimization.
+
+2020-06-10 Vasiliy Fofanov <fofanov@adacore.com>
+
+ * doc/gnat_ugn/gnat_utility_programs.rst: Fix gnatmetric
+ switches description.
+
+2020-06-10 Arnaud Charlet <charlet@adacore.com>
+
+ * repinfo-input.ads, repinfo-input.adb, repinfo.adb,
+ repinfo.ads: Update header.
+
+2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_aggr.adb (In_Place_Assign_OK): Do not necessarily return
+ false for a type with discriminants.
+ (Convert_To_Assignments): Use Parent_Node and Parent_Kind more
+ consistently. In the in-place assignment case, first apply a
+ discriminant check if need be, and be prepared for a rewritten
+ aggregate as a result.
+
+2020-06-10 Arnaud Charlet <charlet@adacore.com>
+
+ * atree.adb, contracts.adb, debug.adb, freeze.adb,
+ repinfo-input.adb, repinfo.adb, sem_attr.adb, sem_ch10.adb,
+ sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb,
+ sem_ch8.adb, sem_ch9.adb, sem_disp.adb, sem_eval.adb,
+ sem_prag.adb: Remove more references to ASIS.
+
+2020-06-10 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-secsta.adb (Round_Up): Fix typo in exception
+ message.
+
+2020-06-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch4.adb (P_Membership_Test): Fix typo in a grammar rule.
+
+2020-06-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove
+ expansion of First and Last attributes.
+
+2020-06-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Remove folding
+ for Enum_Rep attribute.
+ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Remove
+ duplicated code for folding Enum_Rep attribute.
+ * sem_attr.adb (Eval_Attribute): Relax condition for folding
+ Enum_Rep attribute; previously dead code is now executed when
+ the attribute prefix is an enumeration literal; refine type in
+ processing of Enum_Val.
+
+2020-06-10 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch3.adb (Analyze_Declarations): Adjust the machinery that
+ takes care of late body overriding of initialize, adjust,
+ finalize. Remove ASIS mode code.
+
+2020-06-10 Ed Schonberg <schonberg@adacore.com>
+
+ * einfo.ads (Access_Subprogram_Wrapper): New attribute of
+ Subprogram_Type entities. Denotes subprogram constructed for
+ Access_To_Subprogram types that include pre- and postconditions.
+ * einfo.adb: Subprogram bodies for Access_Subprogram_Wrapper.
+ * exp_ch6.adb (Expand_Call): An indirect call through an
+ Access_To_subprogram that includes contracts is rewritten as a
+ call to the corresponding Access_ ubprogram_Wrapper. Handle
+ derived types that inherit contract from parent.
+ * sem_prag.adb (Build_Access_Subprogram_Wrapper): Build
+ subprogram declaration for subprogram that incorporates the
+ contracts of an Access_To_Subprogram type declaration. Build
+ corresponding body and attach it to freeze actions for type.
+ * sem_util.ads, sem_util.adb (Is_Access_Subprogram_Wrapper):
+ Utility that uses signature of the subprogram to determine
+ whether it is a generated wrapper for an Access_To_Subprogram
+ type.
+
+2020-06-10 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * par-ch6.adb (P_Subprogram): Make sure the specification
+ belongs to a procedure.
+
+2020-06-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (All_Membership_Choices_Static): Assert an AST
+ property documented in sinfo.ads and simplify an excessive
+ condition.
+
+2020-06-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Fix a copy-paste
+ mistake in comment.
+ * sem_res.adb (Flag_Effectively_Volatile_Objects): Fix a type in
+ the SPARK RM rule number.
+ * exp_ch4.adb, sem_util.adb: Fix style in single line comments.
+
+2020-06-10 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aux.ads, sem_aux.adb (Get_Low_Bound): Remove.
+
+2020-06-10 Arnaud Charlet <charlet@adacore.com>
+
+ * scn.adb (Determine_License): Remove.
+
+2020-06-10 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch3.adb (Expand_N_Object_Declaration): Add condition to
+ handle processing of objects initialized by a call to a function
+ return an anonymous access type.
+ * exp_ch6.adb, exp_ch6.ads
+ (Has_Unconstrained_Access_Discriminants): Moved to sem_util.adb
+ (Needs_Result_Accessibility_Level): Moved to sem_util.adb
+ * sem_util.adb, sem_util.ads
+ (Has_Unconstrained_Access_Discriminants): Moved from exp_ch6.adb
+ (Needs_Result_Accessibility_Level): Moved from exp_ch6.adb
+ * sem_res.adb (Valid_Conversion): Add condition for the special
+ case where the operand of a conversion is the result of an
+ anonymous access type
+
+2020-06-10 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * par-ch6.adb (P_Subprogram): Reject duplicate subprogram
+ declarations.
+
+2020-06-10 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch6.adb (Insert_Post_Call_Actions): Deal with the context
+ of an if-expression and with a call written in prefixed notation.
+
+2020-06-10 Gary Dismukes <dismukes@adacore.com>
+
+ * einfo.ads: Minor reformatting of a comment.
+ * exp_aggr.adb: Minor reformatting and a grammar correction.
+ * exp_attr.adb: Minor reformatting and a typo fix in some
+ comments.
+ * sem_ch12.adb: Fix three typos in comments.
+
+2020-06-09 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch6.adb (New_Overloaded_Entity): Add missing call to check
+ subtype conformance of overriding dispatching primitive.
+ * sem_eval.adb (Subtypes_Statically_Match): Handle derivations
+ of private subtypes.
+ * libgnat/g-exptty.adb, libgnat/g-exptty.ads
+ (Set_Up_Communications): Fix the profile since null-exclusion is
+ missing in the access type formals.
+ * sem_disp.ads (Check_Operation_From_Private_View): Adding
+ documentation.
+
+2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (XEINFO section): Update format description.
+ (Is_Subprogram_Or_Entry): Move pragma to regular section.
+ (Is_Subprogram_Or_Generic_Subprogram): Likewise.
+ * xeinfo.adb (Get_B4): Rename to...
+ (Get_B0): ...this.
+ (Translate_Expr): New procedure extracted from...
+ (XEinfo): ...here. Try to apply Get_B0 first and then
+ call Translate_Expr to translate supported constructs.
+
+2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch6.adb (Freeze_Subprogram): Deal with convention C_Family.
+ * freeze.adb (Freeze_Profile): Likewise. Add missing guard.
+ * sem_mech.adb (Set_Mechanisms): Likewise.
+ * lib-xref.adb (Output_Import_Export_Info): Ditto for C_Variadic.
+ * repinfo.adb (List_Subprogram_Info): Likewise.
+ * sem_prag.adb (Set_Convention_From_Pragma): Move main checks for
+ Stdcall to...
+ (Process_Convention): ...here. Add checks for C_Variadic.
+ * snames.ads-tmpl: Add Name_C_Variadic_0 .. Name_C_Variadic_16.
+ Use consistent format for subtype declarations.
+ (Convention_Id): Add Convention_C_Variadic_0 .. C_Variadic_16
+ and move Convention_CPP up.
+ (Convention_C_Family): New subtype of Convention_Id.
+ (Convention_C_Variadic): Likewise.
+ (Foreign_Convention): Use explicit upper bound.
+ Add pragma Inline for Is_Configuration_Pragma_Name,
+ Is_Function_Attribute_Name, Is_Internal_Attribute_Name
+ and Is_Procedure_Attribute_Name.
+ * snames.adb-tmpl (Get_Convention_Id): Deal with Name_Variadic_n.
+ (Get_Convention_Name): Deal with Convention_Variadic_n.
+ * types.h (Convention_Id): New typedef.
+ * xsnamest.adb (Name2): New variable.
+ (Is_Conv): New pattern.
+ (Get_Subt1): Likewise.
+ (Get_Subt2): Likewise.
+ Output subtypes of Convention_Id into the C header file.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch3.adb, exp_ch4.adb, exp_ch6.adb, exp_ch9.adb,
+ exp_disp.adb, exp_util.adb: Add comments related to errors that
+ should be moved to semantic analysis. Also replace "?" with "??"
+ in warning messages.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-strunb__shared.ads, libgnat/a-strunb__shared.adb
+ (Reference, Unreference): No-op for Empty_Shared_String.
+ Remove unneeded calls to Reference.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch5.adb (Expand_N_Assignment): Remove kludge for
+ AI05-0087.
+ * sem_ch12.adb (Validate_Derived_Type_Instance): Implement
+ AI05-0087 retroactively since it's a binding interpretation.
+
+2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (Has_Foreign_Convention): Fix description.
+ (Component_Alignment): Move around.
+ (Has_DIC): Likewise.
+ (Has_Interrupt_Handler): Likewise.
+ (Has_Invariants): Likewise.
+ (Is_Atomic_Or_VFA): Likewise.
+ (Next_Index): Likewise.
+ (Scope_Depth): Likewise.
+ (Init_Component_Size): Likewise.
+ (Init_Component_Location): Likewise.
+ (Init_Size): Likewise.
+ (Inline Pragmas for functions): Add Corresponding_Function,
+ Corresponding_Procedure, Entry_Max_Queue_Lengths_Array,
+ Finalize_Storage_Only, Has_DIC, Has_Invariants,
+ Initialization_Statements, Is_Anonymous_Access_Type,
+ Next_Stored_Discriminant, Address_Clause, Alignment_Clause,
+ Float_Rep, Has_Foreign_Convention, Has_Non_Limited_View,
+ Is_Constant_Object, Is_Discriminal, Is_Finalizer, Is_Null_State,
+ Is_Prival, Is_Protected_Component, Is_Protected_Record_Type,
+ Is_Subprogram_Or_Entry, Is_Task_Record_Type, Size_Clause,
+ Stream_Size_Clause, Type_High_Bound, Type_Low_Bound, Known_*,
+ Unknown_*.
+ (Inline Pragmas for procedures): Add Set_Corresponding_Function,
+ Set_Corresponding_Procedure, Set_Finalize_Storage_Only,
+ Set_Float_Rep, Set_Initialization_Statements,
+ Init_Normalized_First_Bit, Init_Normalized_Position,
+ Init_Normalized_Position_Max.
+ * einfo.adb (Was_Hidden): Move around.
+ (Is_Packed_Array): Likewise.
+ (Model_Emin_Value): Likewise.
+ (Model_Epsilon_Value): Likewise.
+ (Model_Mantissa_Value): Likewise.
+ (Model_Small_Value): Likewise.
+
+2020-06-09 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Require
+ exact match between formal and actual for aspects Atomic and
+ Volatile only for formal derived types.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_util.adb (Side_Effect_Free): Improve handling of
+ N_Aggregate.
+
+2020-06-09 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_res.adb (Resolve_Qualified_Expression): Use Subtype_Mark
+ type.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_aggr.adb (Max_Aggregate_Size): New function to factorize
+ code.
+ (Convert_To_Positional, Aggr_Size_OK): Use Max_Aggregate_Size.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Set_Debug_Info_Defining_Id): New.
+ * exp_ch3.adb, exp_ch8.adb: Call Set_Debug_Info_Defining_Id when
+ relevant.
+
+2020-06-09 Justin Squirek <squirek@adacore.com>
+
+ * einfo.ads (Returns_By_Ref): Modify documentation to reflect
+ that Returns_By_Ref can be applied to E_Subprogram_Type
+ entities.
+
+2020-06-09 Justin Squirek <squirek@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Modify expansion
+ of 'Overlaps_Storage to take into account zero sized arrays.
+
+2020-06-09 Bob Duff <duff@adacore.com>
+
+ * bindo-graphs.adb, bindo-graphs.ads: For each invocation graph,
+ record the corresponding library graph.
+ * bindo-writers.adb (Write_Invocation_Graph_Vertex): Print the
+ lib item name. Remove library graph parameters.
+ * bindo-augmentors.adb, bindo-augmentors.ads,
+ bindo-builders.adb, bindo-diagnostics.adb,
+ bindo-diagnostics.ads, bindo-elaborators.adb: Remove library
+ graph parameters.
+
+2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.adb (Apply_Predicate_Check): Extend trick used for
+ aggregates to qualified aggregates and object declarations
+ * einfo.ads (Has_Own_DIC): Mention the underlying full view.
+ (Has_Own_Invariants): Likewise.
+ (Has_Predicates): Likewise.
+ * exp_util.adb (Build_DIC_Procedure_Declaration): Do not deal
+ with base types explicitly but with underlying full views.
+ (Build_Invariant_Procedure_Declaration): Likewise.
+ * sem_ch13.adb (Build_Predicate_Functions): Do not deal with
+ the full view manually but call Propagate_Predicate_Attributes
+ to propagate attributes to views.
+ (Build_Predicate_Function_Declaration): Likewise.
+ * sem_ch3.adb (Build_Assertion_Bodies_For_Type): Build bodies
+ for private full views with an underlying full view.
+ (Build_Derived_Private_Type): Small comment tweak.
+ (Complete_Private_Subtype): Call Propagate_Predicate_Attributes.
+ (Process_Full_View): Do not deal with base types explicitly for
+ DIC and Invariant attributes. Deal with underlying full views
+ for them. Call Propagate_Predicate_Attributes and deal with
+ underlying full views for them.
+ * sem_ch7.adb (Preserve_Full_Attributes): Do not cross propagate
+ DIC and Invariant attributes between full type and its base type.
+ Propagate Predicate attributes from the full to the private view.
+ * sem_ch9.adb (Analyze_Protected_Type_Declaration): Likewise.
+ (Analyze_Task_Type_Declaration): Likewise.
+ * sem_util.ads (Get_Views): Remove Full_Base parameter and add
+ UFull_Typ parameter.
+ (Propagate_Predicate_Attributes): New procedure.
+ * sem_util.adb (Get_Views): Remove Full_Base parameter and add
+ UFull_Typ parameter. Retrieve the Corresponding_Record_Type
+ from the underlying full view, if any.
+ (Propagate_DIC_Attributes): Remove useless tests.
+ (Propagate_Invariant_Attributes): Likewise.
+ (Propagate_Predicate_Attributes): New procedure.
+
+2020-06-09 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch5.adb (Expand_Predicated_Loop): Perserve the original
+ loop identifier within the expansion.
+
+2020-06-09 Bob Duff <duff@adacore.com>
+
+ * bindo-graphs.ads (Library_Graph_Edge_Kind): Reorder enumerals
+ to reflect the order of adding edges. Clarify comments.
+ * bindo-graphs.adb (Add_Edge_Kind_Check): Correct the
+ assertions. Reorder the "when"s to match the order of adding
+ edges, and therefore the order of enumerals in type
+ Library_Graph_Edge_Kind. Change names to "Old_" and "New_" to
+ clarify what's what. Combine Invocation_Edge into the "<="
+ test. Fix the "raise Program_Error" message, which was
+ backwards.
+
+2020-06-09 Bob Duff <duff@adacore.com>
+
+ * bindo-graphs.adb (Add_Edge_Kind_Check): Add the Image of the
+ old and new Kinds to the raise Program_Error message.
+
+2020-06-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch3.adb (Is_Visible_Component): Do not special-case
+ bodies of instances.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch4.adb (Expand_N_In): Fix handling of null exclusion.
+
+2020-06-09 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Require
+ exact match between formal and actual for aspects Atomic,
+ Atomic_Component, Volatile, and Volatile_Components.
+
+2020-06-09 Bob Duff <duff@adacore.com>
+
+ * doc/gnat_ugn/gnat_utility_programs.rst: Add documentation for
+ the --no-separate-return switch of gnatpp.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_warn.adb (Warn_On_Constant_Valid_Condition): Add proper
+ warning tag.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_type.adb (Covers): Fix implementation of AI05-0149.
+ * sem_res.adb: Fix typo.
+
+2020-06-09 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_ch9.adb (Build_Master_Renaming): Make name in renaming
+ declaration unique by adding a numeric suffix, to prevent
+ accidental name conflict when several instantiations of a
+ package containing an access_to_incomplete type that designate
+ tasks appear in the same scope.
+
+2020-06-09 Piotr Trojanek <trojanek@adacore.com>
+
+ * libgnarl/a-synbar.ads, libgnarl/a-synbar.adb,
+ libgnarl/a-synbar__posix.ads, libgnarl/a-synbar__posix.adb
+ (Ada.Synchronous_Barriers): Annotate with SPARK_Mode => Off.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_eval.adb (Eval_Relational_Op, Eval_String_Literal,
+ Eval_Type_Conversion): Relax rules on relational operators and
+ type conversions of static string types.
+
+2020-06-09 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Is_Partially_Initialized_Type):
+ Take Default_Value and Default_Component_Value into account.
+ * sem_ch3.adb (Analyze_Object_Declaration): Update comment.
+
+2020-06-09 Bob Duff <duff@adacore.com>
+
+ * bindo-graphs.adb (Add_Edge_Kind_Check): Disable failing part
+ of the assertion.
+
+2020-06-08 Steve Baird <baird@adacore.com>
+
+ * sem_prag.adb (Analyze_Pragma.Set_Ravenscar_Profile): Add
+ appropriate call to Set_Restriction_No_Dependence if Ada_Version
+ >= Ada2012 and Profile is either Ravenscar or a GNAT-defined
+ Ravenscar variant (i.e., not Jorvik).
+
+2020-06-08 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch5.adb: Fix typo.
+ * sem_ch8.adb (Analyze_Renamed_Primitive_Operation): Check that
+ the prefix of a prefixed view must be renamable as an object.
+
+2020-06-08 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_cat.ads: Fix typo.
+ * sem_cat.adb (Validate_Remote_Access_To_Class_Wide_Type): Add
+ handling of N_Attribute_Definition_Clause.
+ * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Call
+ Validate_Remote_Access_To_Class_Wide_Type for Storage_Size and
+ Storage_Pool.
+ * sem_attr.adb, exp_ch4.adb: Update comments.
+
+2020-06-08 Justin Squirek <squirek@adacore.com>
+
+ * sem_ch4.adb (Analyze_One_Call): Add extra condition to the
+ predicate for deciding when a given controlled call is visible.
+
+2020-06-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Port
+ changes in frontend expander.
+
+2020-06-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (All_Membership_Choices_Static): Fix style.
+
+2020-06-08 Steve Baird <baird@adacore.com>
+
+ * libgnat/s-rident.ads: Add Jorvik to the Profile_Name
+ enumeration type. Add an element for Jorvik to the array
+ aggregate that is the initial value of the constant
+ Profile_Info.
+ * targparm.adb (Get_Target_Parameters): Handle "pragma Profile
+ (Jorvik);" similarly to "pragma Profile (Ravenscar);".
+ * snames.ads-tmpl: Declare Name_Jorvik Name_Id. Unlike
+ Ravenscar, Jorvik is not a pragma name and has no corresponding
+ element in the Pragma_Id enumeration type; this means that its
+ declaration must not occur between those of First_Pragma_Name
+ and Last_Pragma_Name.
+ * sem_prag.adb (Analyze_Pragma): Add call to
+ Set_Ravenscar_Profile for Jorvik, similar to the existing calls
+ for Ravenscar and the GNAT Ravenscar variants.
+
+2020-06-08 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch8.adb (Analyze_Object_Renaming): Update Get_Object_Name
+ to go through N_Qualified_Expression and N_Type_Conversion. Fix
+ another case of wrong usage of E_Anonymous_Access_Type instead
+ of Anonymous_Access_Kind.
+ * sem_util.adb (Is_Dependent_Component_Of_Mutable_Object): Work
+ on the original node.
+ (Is_Aliased_View): Take into account N_Qualified_Expression.
+
+2020-06-08 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_eval.adb (Eval_Type_Conversion): Fix handling of
+ enumeration to integer conversions.
+ * exp_attr.adb (Expand_N_Attribute_Reference
+ [Attribute_Enum_Rep]): Remove special casing for first-level
+ renaming, best left to the general folding mechanism via
+ Eval_Type_Conversion.
+
+2020-06-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * atree.adb (New_Copy): Do not clear Has_Dynamic_Range_Check.
+ * checks.ads (Append_Range_Checks): Remove Flag_Node parameter.
+ (Insert_Range_Checks): Likewise and remove default value of
+ Static_Loc parameter.
+ * checks.adb (Append_Range_Checks): Remove Flag_Node parameter.
+ Do not test and set Has_Dynamic_Range_Check.
+ (Insert_Range_Checks): Likewise and remove default value of
+ Static_Loc parameter.
+ * csinfo.adb (CSinfo): Remove 'L' from [NEUB]_Fields pattern and
+ do not handle Has_Dynamic_Range_Check.
+ * exp_ch5.adb (Expand_N_Assignment_Statement): Remove argument
+ in call to Insert_Range_Checks.
+ * sem_ch3.adb (Analyze_Subtype_Declaration): Do not fiddle
+ with Has_Dynamic_Range_Check.
+ (Process_Range_Expr_In_Decl): Remove argument in calls to
+ Insert_Range_Checks and Append_Range_Checks.
+ * sinfo.ads (Has_Dynamic_Range_Check): Delete.
+ (Set_Has_Dynamic_Range_Check): Likewise.
+ * sinfo.adb (Has_Dynamic_Range_Check): Delete.
+ (Set_Has_Dynamic_Range_Check): Likewise.
+ * treepr.adb (Print_Node): Do not print Has_Dynamic_Range_Check.
+
+2020-06-08 Steve Baird <baird@adacore.com>
+
+ * sem_ch13.ads: Export new function
+ All_Membership_Choices_Static.
+ * sem_ch13.adb: Implement new function
+ All_Membership_Choices_Static. This involves moving the
+ functions Is_Static_Choice and All_Membership_Choices_Static,
+ which were previously declared within the function
+ Is_Predicate_Static, out to library level so that they can be
+ called by the new function. The already-exisiting code in
+ Is_Predicate_Static which became the body of
+ All_Membership_Choices_Static is replaced with a call to the new
+ function in order to avoid duplication.
+ * exp_ch9.adb (Is_Pure_Barrier): Several changes needed to
+ implement rules of AI12-0290 and RM D.7's definition of
+ "pure-barrier-eligible". These changes include adding a call to
+ the new function Sem_13.All_Membership_Choices_Static, as per
+ the "see 4.9" in RM D.7(1.6/5).
+
+2020-06-08 Richard Kenner <kenner@adacore.com>
+
+ * exp_unst.adb (Visit_Node): When visiting array attribute
+ nodes, in addition to checking the type of Get_Referenced_Object
+ of the prefix, also check the actual type of the prefix.
+
+2020-06-08 Gary Dismukes <dismukes@adacore.com>
+
+ * checks.adb (Apply_Predicate_Check): Refine test for being in a
+ subprogram body to account for no Corresponding_Body case,
+ avoiding blowups arising due to other changes here.
+ * exp_ch4.adb (Expand_N_Qualified_Expression): Apply predicate
+ checks, if any, after constraint checks are applied.
+ * sem_eval.ads (Check_Expression_Against_Static_Predicate): Add
+ Check_Failure_Is_Error formal for conditionalizing warning vs.
+ error messages.
+ * sem_eval.adb (Check_Expression_Against_Static_Predicate):
+ Issue an error message rather than a warning when the new
+ Check_Failure_Is_Error formal is True. In the nonstatic or
+ Dynamic_Predicate case where the predicate is known to fail,
+ emit the check to ensure that folded cases get checks applied.
+ * sem_res.adb (Resolve_Qualified_Expression): Call
+ Check_Expression_Against_Static_Predicate, passing True for
+ Check_Failure_Is_Error, to ensure we reject static predicate
+ violations. Remove code that was conditionally calling
+ Apply_Predicate_Check, which is no longer needed, and that check
+ procedure shouldn't be called from a resolution routine in any
+ case. Also remove associated comment about preventing infinite
+ recursion and consistency with Resolve_Type_Conversion, since
+ that handling was already similarly removed from
+ Resolve_Type_Convesion at some point.
+ (Resolve_Type_Conversion): Add passing of True for
+ Check_Failure_Is_Error parameter on call to
+ Check_Expression_Against_Static_Predicate, to ensure that static
+ conversion cases that violate a predicate are rejected as
+ errors.
+
+2020-06-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * snames.ads-tmpl (Name_SPARK): Restore after being deleted.
+
+2020-06-08 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_aggr.adb, exp_ch6.adb, par-ch11.adb, par-ch6.adb,
+ par-ch7.adb, par-prag.adb, restrict.adb, restrict.ads,
+ scans.ads, scng.adb, sem_aggr.adb, sem_attr.adb, sem_ch11.adb,
+ sem_ch12.adb, sem_ch3.adb, sem_ch3.ads, sem_ch4.adb,
+ sem_ch5.adb, sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_ch9.adb,
+ sem_res.adb, sem_util.adb, sem_util.ads, snames.ads-tmpl,
+ gnatbind.adb, libgnat/s-rident.ads,
+ doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
+ Remove processing of SPARK_05 restriction.
+ * gnat_rm.texi: Regenerate.
+ * opt.ads: Remove processing of old checksum which is now
+ handled by gprbuild directly.
+
+2020-06-08 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch12.adb (Instantiate_Object): Relax rules related to null
+ exclusions and generic objects. Handle all anonymous types
+ consistently and not just E_Anonymous_Access_Type.
+ * sem_ch8.adb (Analyze_Object_Renaming): Change wording so that
+ it applies to both renamings and instantiations to avoid
+ confusion.
+
+2020-06-08 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-textio.ads (File_Mode): Fix typo in comment.
+
+2020-06-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_res.adb (Resolve_Indexed_Component): Do not give a warning
+ for a nonatomic component of an atomic array which is subject to
+ an address clause in Ada 2020 mode.
+ (Resolve_Selected_Component): Likewise for an atomic record.
+
+2020-06-08 Philippe Gil <gil@adacore.com>
+
+ * doc/gnat_ugn/the_gnat_compilation_model.rst: in "Handling
+ Files with Multiple Units" part documents gnatname use for
+ unmodified files handling and gnatchop use for files
+ refactoring.
+ * gnat_ugn.texi: Regenerate.
+
+2020-06-08 Arnaud Charlet <charlet@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_attributes.rst:
+ Enum_Rep/Enum_Val are standard Ada 202x attributes.
+ * gnat_rm.texi: Regenerate.
+
+2020-06-08 Javier Miranda <miranda@adacore.com>
+
+ * exp_aggr.adb (Safe_Component): Remove code that considers as
+ unsafe components that are aggregates; such removal allows the
+ frontend to proceed and evaluate if they are safe by means of
+ invoking Safe_Aggregate.
+
+2020-06-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Apply
+ standard expansion to attributes First and Last.
+
+2020-06-08 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_attr.adb, exp_util.ads, exp_util.adb (Get_Index_Subtype):
+ Move from the body of Exp_Attr to Exp_Util and expose from the
+ spec.
+ * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Replace
+ duplicated code with a call to Get_Index_Subtype.
+
+2020-06-08 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch8.adb (Analyze_Object_Renaming): Simplify code by moving
+ many special cases to Is_Object_Reference and removing others by
+ only checking renamings coming from sources.
+ * sem_util.adb (Is_Object_Reference): Update for AI12-0226 and
+ add more regular handling of 'Priority. Remove special cases no
+ longer needed now that we are only checking renamings coming
+ from sources.
+
+2020-06-08 Claire Dross <dross@adacore.com>
+
+ * libgnat/a-cofove.adb (Insert_Space): The computation of Index
+ generates a spurious compiler warning about a value not being in
+ range for a statically dead branch. Silence it using pragma
+ Warnings.
+
+2020-06-08 Bob Duff <duff@adacore.com>
+
+ * bindo-graphs.adb (function Add_Edge): Rename
+ Add_Edge_With_Return to Add_Edge; we can tell it returns because
+ it's a function, and overloading seems appropriate in this case.
+ If Activates_Task=True, and we're not going to add a new edge
+ because an existing Pred-->Succ edge already exists, then set
+ Activates_Task to True on the preexisting edge. This ensures
+ that the message:
+ info: use pragma Restrictions (No_Entry_Calls_In_Elaboration_Code)
+ appears when appropriate, no matter in what order the edges
+ happened to be processed.
+ (procedure Add_Edge): Remove redundant assertions.
+ (Activates_Task): Other kinds of edges can have
+ Activates_Task=True. For example, if we had a With_Edge and
+ then an Invocation_Edge with Activates_Task=True, then the
+ With_Edge has Activates_Task set to True.
+ (Add_Edge_Kind_Check): New procedure to prevent other bugs of
+ this nature. For example, if we were to sometimes call Add_Edge
+ for a Spec_Before_Body_Edge followed by Add_Edge for a
+ With_Edge, and sometimes in the other order, that would cause a
+ similar bug to what we're fixing here.
+ (Set_Is_Recorded_Edge): Val parameter is not used. Get rid of
+ it.
+ (Set_Activates_Task): New procedure to set the Activates_Task flag.
+ * bindo-graphs.ads (Library_Graph_Edge_Kind): Reorder the
+ enumeration literals to facilitate Add_Edge_Kind_Check.
+ * ali.adb (Known_ALI_Lines): The comment about "still available"
+ was wrong. Fix that by erasing the comment, and encoding the
+ relevant information in real code. Take advantage of Ada's full
+ coverage rules by removing "others =>". Also DRY.
+
+2020-06-08 Ed Schonberg <schonberg@adacore.com>
+
+ * par-ch12.adb (P_Formal_Derived_Type_Definition): Handle
+ properly formal derived types that include aspect
+ specifications, so that the "with" keyword appears twice in the
+ formal type declaration.
+ * sem_ch13.adb (Has_Generic_Parent): Return true if the type
+ itself is a generic formal.
+
+2020-06-08 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * socket.c (__gnat_minus_500ms): Remove
+ IsWindowsVersionOrGreater from condition.
+
+2020-06-08 Claire Dross <dross@adacore.com>
+
+ * libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads,
+ libgnat/a-cfhase.ads, libgnat/a-cforma.ads, libgnat/a-cforse.ads
+ (Delete): Add Depends contract.
+
+2020-06-08 Arnaud Charlet <charlet@adacore.com>
+
+ * snames.ads-tmpl (Name_Program_Error_Check,
+ Name_Tasking_Check): New constants.
+ * types.ads (Program_Error_Check, Tasking_Check): New constants.
+ (All_Checks): Update accordingly.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_prag.adb (Validate_Compile_Time_Warning_Or_Error): Use ??.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * cstand.adb (Create_Standard): Update comments.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * scng.adb (Scan): Fix typo to take into account all future
+ versions of Ada.
+ * sem_attr.ads (Attribute_Impl_Def): Add Attribute_Reduce for
+ now.
+ * sem_attr.adb (Analyze_Attribute): Only allow 'Reduce under
+ -gnatX.
+ * snames.ads-tmpl (Name_Reduce): Update comment.
+
+2020-06-05 Thomas Quinot <quinot@adacore.com>
+
+ * exp_disp.adb (Expand_Interface_Thunk): Add comment about
+ gnatcov reliance on specific name used for thunks.
+
+2020-06-05 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch3.adb (Analyze_Subtype_Declaration): For scalar types,
+ and for subtype declarations without a constraint, subtype
+ inherits Atomic flag from base type.
+
+2020-06-05 Piotr Trojanek <trojanek@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_attributes.rst (Enum_Rep):
+ Remove extra colon.
+ * gnat_rm.texi: Regenerate.
+
+2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * atree.adb (New_Copy): Clear Has_Dynamic_Range_Check on
+ subexpression nodes.
+ * checks.adb (Append_Range_Checks): Assert that the node
+ doesn't have the Has_Dynamic_Range_Check flag set.
+ (Insert_Range_Checks): Likewise.
+ * exp_ch3.adb (Expand_N_Subtype_Indication): Do not apply
+ range checks for a full type or object declaration.
+ * sem_ch3.ads: Move with and use clauses for Nlists to...
+ (Process_Range_Expr_In_Decl): Change default to No_List for
+ the Check_List parameter.
+ * sem_ch3.adb: ...here.
+ (Process_Range_Expr_In_Decl): Likewise. When the insertion
+ node is a declaration, only insert on the list if is present
+ when the declaration involves discriminants, and only insert
+ on the node when there is no list otherwise.
+
+2020-06-05 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_aggr.adb (Resolve_Record_Aggregate): Create the
+ N_Aggregate node with its Expressions field set to No_List and
+ not to an empty list.
+
+2020-06-05 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * libgnat/s-os_lib.adb (Is_Dirsep): Moved from Build_Path to
+ package level to reuse.
+ (Normalize_Pathname.Final_Value): Reduce 2 'if' statements to
+ one.
+ (Normalize_Pathname.Fill_Directory): New procedure instead of
+ function Get_Directory. Remove slash to backslash conversion and
+ drive letter uppercasing on Windows.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * sem.adb (Assert_Done): Relax check for main unit, as it was
+ overzealous in the case of the main unit itself.
+
+2020-06-05 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch3.adb, sem_ch8.adb, sem_util.adb: Use Is_Incomplete_Type
+ to make the code easier to read.
+
+2020-06-05 Piotr Trojanek <trojanek@adacore.com>
+
+ * einfo.adb: Minor reformatting.
+ * sem_util.adb (Has_Full_Default_Initialization,
+ Is_Partially_Initialized_Type, Caller_Known_Size_Record,
+ Large_Max_Size_Mutable): Iterate with
+ First_Component/Next_Component; rename Ent to Comp.
+
+2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Use
+ Expr_Rep_Value instead of Expr_Value to obtain the equivalent
+ integer value.
+ * sem_eval.ads (Expr_Value): Document more supported cases.
+ * sem_eval.adb (Expr_Rep_Value): Copy missing cases from
+ Exp_Value.
+
+2020-06-05 Bob Duff <duff@adacore.com>
+
+ * rtsfind.adb, rtsfind.ads: Move subtypes of RTU_Id into package
+ body, because they are not needed by clients. Change "Child_" to
+ "Descendant", because grandchildren and great grandchildren are
+ involved. Replace all the repetitive comments with a single
+ concise one. Change the parent subtypes to be more consistent;
+ use the most specific parent.
+
+2020-06-05 Piotr Trojanek <trojanek@adacore.com>
+
+ * rtsfind.ads, rtsfind.adb (Is_Text_IO_Special_Package): Moved
+ from the GNATprove backend to the frontend.
+
+2020-06-05 Yannick Moy <moy@adacore.com>
+
+ * sem_util.ads: Add comment about function only used in
+ CodePeer.
+
+2020-06-05 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch9.adb, (Analyze_Task_Body): After analying the task
+ body, indicate that all local variables have no delayed aspects.
+ This prevents improper later calls to
+ Check_Aspect_At_End_Of_Declarations, that would happen when the
+ constructed task_procedure body (generated during expansion) is
+ analyzed. The legality of aspect specifications that may appear
+ on local declarations has already been established, and it is in
+ general not possible to recheck them properly during expansion,
+ when visibility may not be fully established.
+
+2020-06-05 Piotr Trojanek <trojanek@adacore.com>
+
+ * libgnat/a-cofuve.ads (First): Add Global contract.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_prag.adb (Set_Convention_From_Pragma): Set the convention
+ of anonymous access array components.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-calfor.ads, libgnat/a-catizo.ads,
+ libgnat/a-catizo.adb (Local_Time_Offset, Local_Image): New.
+ (UTC_Time_Offset): Now a renaming of Local_Time_Offset.
+
+2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch3.adb (Available_Full_View): New function returning
+ either the full or the underlying full view.
+ (Build_Full_Derivation): Add guard for the full view.
+ (Copy_And_Build): Retrieve the underlying full view, if any,
+ also if deriving a completion.
+ (Build_Derived_Private_Type): Use Available_Full_View throughout
+ to decide whether a full derivation must be done.
+
+2020-06-05 Bob Duff <duff@adacore.com>
+
+ * exp_attr.adb, exp_ch11.adb, exp_imgv.adb, exp_tss.ads,
+ par-ch4.adb, sem_attr.adb, sem_util.ads: Misc cleanup.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nudira.ads, libgnat/a-nudira.adb (Random): New
+ function.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_attr.ads (Attribute_Impl_Def): Remove Enum_Rep/Val.
+ * sem_attr.adb (Attribute_20): New, move Enum_Rep/Val here.
+ (Analyze_Attribute): Take Attribute_20 into account.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * restrict.ads (Unit_Array): Add a-direct.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-stopoo.ads: Mark package Pure and leave room for
+ Nonblocking once this aspect is supported.
+
+2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Valid_Scalars>:
+ Set the No_Truncation flag on the unchecked conversion built for
+ scalar types.
+
+2020-06-05 Bob Duff <duff@adacore.com>
+
+ * einfo.adb, einfo.ads, exp_util.adb: Remove Invariants_Ignored
+ flag.
+ * sem_prag.adb (Invariant): Instead of setting a flag to be
+ checked elsewhere, remove the pragma as soon as it is analyzed
+ and checked for legality.
+
+2020-06-05 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.ads (Apply_Length_Check): Rename Ck_Node parameter to
+ Expr.
+ (Apply_Range_Check): Likewise.
+ (Get_Range_Checks): Likewise.
+ * checks.adb (Apply_Float_Conversion_Check): Likewise.
+ (Apply_Selected_Length_Checks): Likewise.
+ (Apply_Selected_Range_Checks): Likewise.
+ (Guard_Access): Likewise.
+ (Selected_Length_Checks): Likewise. Also avoid shadowing in
+ child procedures.
+ (Selected_Range_Checks): Likewise.
+
+2020-06-05 Arnaud Charlet <charlet@adacore.com>
+
+ * par-ch3.adb, par-ch4.adb, scng.adb, sem_aggr.adb,
+ sem_ch10.adb, sem_ch12.adb, sem_prag.adb: Update wording: change
+ Ada_2020 to Ada 2020 in comments and mention -gnat2020 instead
+ of -gnatX switch.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/i-c.ads (long_long, unsigned_long_long): New
+ definitions.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * Makefile.rtl: add a-tasini object
+ * impunit.adb (Non_Imp_File_Names_95): Add s-tasini.
+ * libgnarl/a-tasini.ads, libgnarl/a-tasini.adb: New files.
+ * libgnarl/s-taskin.ads (Global_Initialization_Handler): New.
+ * libgnarl/s-tassta.adb (Task_Wrapper): Call
+ Global_Initialization_Handler if non null.
+
+2020-06-04 Ed Schonberg <schonberg@adacore.com>
+
+ * sem_ch12.adb (Build_Suprogram_Body_Wrapper,
+ Build_Subprogram_Decl_Wrapper): New suprograms, to create the
+ wrappers needed to implement contracts on formsl subprograms at
+ the point of instantiation.
+ (Build_Subprogram_Wrappers): New subprogram within
+ Analyze_Associations, calls the above when the formal subprogram
+ has contracts, and expansion is enabled.
+ (Instantiate_Formal_Subprogram): If the actual is not an entity,
+ such as a function attribute, or a synchronized operation,
+ create a function with an internal name and call it within the
+ wrapper.
+ (Analyze_Generic_Formal_Part): Analyze contracts at the end of
+ the list of formal declarations.
+ * sem_prag.adb (Analyze_Pre_Post_Condtion): In Ada_2020 the
+ aspect and corresponding pragma can appear on a formal
+ subprogram declaration.
+ (Find_Related_Declaration_Or_Body): Ditto.
+
+2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch7.adb (Make_Final_Call): Set the type of the object, if
+ it is unanalyzed, before calling Convert_View on it.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * adabkend.adb, back_end.ads, opt.ads, sem_ch6.adb: Get rid of
+ Disable_FE_Inline_Always.
+
+2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch7.adb (Make_Final_Call): Add missing guard.
+ * sem_ch3.adb (Copy_And_Build): Adjust recursive call for
+ private types.
+ (Build_Derived_Private_Type): Deal with underlying full views.
+
+2020-06-04 Bob Duff <duff@adacore.com>
+
+ * libgnat/a-stobbu.adb, libgnat/a-stobbu.ads,
+ libgnat/a-stobfi.adb, libgnat/a-stobfi.ads,
+ libgnat/a-stoubu.adb, libgnat/a-stoubu.ads,
+ libgnat/a-stoufi.adb, libgnat/a-stoufi.ads,
+ libgnat/a-stoufo.adb, libgnat/a-stoufo.ads,
+ libgnat/a-stouut.adb, libgnat/a-stouut.ads,
+ libgnat/a-stteou.ads, libgnat/s-putaim.adb,
+ libgnat/s-putaim.ads, libgnat/s-putima.adb, libgnat/s-putima.ads
+ (Ada.Strings.Text_Output and children, System.Put_Images): New
+ runtime support for Put_Image.
+ * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
+ exp_put_image.o.
+ * exp_put_image.adb, exp_put_image.ads: New compiler package
+ that generates calls to runtime routines that implement
+ Put_Image.
+ * Makefile.rtl: Add object files for Ada.Strings.Text_Output and
+ children and System.Put_Images.
+ * aspects.adb: Simplify initialization of Canonical_Aspect.
+ * aspects.ads: Improve documentation. Add Aspect_Put_Image.
+ * exp_attr.adb: Add support for Put_Image, by calling routines
+ in Exp_Put_Image.
+ * sem_util.adb (Is_Predefined_Dispatching_Operation): Return
+ True for new TSS_Put_Image operation.
+ * exp_ch3.adb: For tagged types, build a dispatching
+ TSS_Put_Image operation by calling routines in Exp_Put_Image.
+ * exp_disp.adb, exp_disp.ads: Make TSS_Put_Image be number 10,
+ adjusting other operations' numbers after 10. We choose 10
+ because that's the last number shared by all runtimes.
+ * exp_strm.adb: Use named notation as appropriate.
+ * exp_cg.adb, exp_tss.ads: Add TSS_Put_Image.
+ * libgnat/a-tags.ads: Modify Max_Predef_Prims for the new
+ TSS_Put_Image.
+ * impunit.adb: Add new runtime packages.
+ * rtsfind.adb, rtsfind.ads: Add support for
+ Ada.Strings.Text_Output, Ada.Strings.Text_Output.Utils, and
+ System.Put_Images.
+ * sem_attr.adb: Error checking for Put_Image calls.
+ * sem_ch12.adb (Valid_Default_Attribute): Support for passing
+ Put_Image as a generic formal parameter.
+ * sem_ch13.adb: Analysis of Put_Image aspect. Turn it into a
+ Put_Image attribute definition clause.
+ * sem_ch8.adb (Analyze_Subprogram_Renaming): Support for
+ renaming of the Put_Image attribute.
+ * snames.adb-tmpl: Fix comments.
+ * snames.ads-tmpl (Name_Put_Image): New Name_Id.
+ (Attribute_Put_Image): New Attribute_Id.
+ * tbuild.adb, tbuild.ads (Make_Increment): New utility.
+
+2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (xpand_N_Attribute_Reference) <Input>: Call
+ Find_Inherited_TSS to look up the Stream_Read TSS.
+ <Output>: Likewise for the Stream_Write TSS.
+ * exp_ch7.adb (Make_Final_Call): Call Underlying_Type on
+ private types to account for underlying full views.
+ * exp_strm.ads (Build_Record_Or_Elementary_Input_Function):
+ Remove Use_Underlying parameter.
+ * exp_strm.adb (Build_Record_Or_Elementary_Input_Function):
+ Likewise and adjust accordingly.
+ * exp_tss.adb (Find_Inherited_TSS): Deal with full views.
+ Call Find_Inherited_TSS recursively on the parent type if
+ the base type is a derived type.
+ * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Take
+ into account underlying full views for derived types.
+ * sem_ch3.adb (Copy_And_Build): Look up the underlying full
+ view only for a completion. Be prepared for private types.
+ (Build_Derived_Private_Type): Build an underlying full view
+ for a completion in the general case too.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * back_end.adb, opt.ads, par-prag.adb, sem_ch5.adb,
+ sem_prag.adb, sinfo.adb, sinfo.ads, snames.ads-tmpl,
+ doc/gnat_rm/implementation_defined_pragmas.rst: Remove
+ experimental support for OpenACC.
+ * gcc-interface/misc.c, gcc-interface/trans.c,
+ gcc-interface/lang.opt: Ditto.
+ * gnat_rm.texi: Regenerate.
+
+2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.adb (Generate_Discriminant_Check): Remove obsolete
+ comment.
+
+2020-06-04 Gary Dismukes <dismukes@adacore.com>
+
+ * par-ch3.adb (P_Identifier_Declarations): Add parsing of object
+ renamings that have neither a subtype_mark nor an
+ access_definition. Issue an error if the version is earlier than
+ Ada_2020, and suggest using -gnatX.
+ * sem_ch8.adb (Analyze_Object_Renaming): Handle
+ object_renaming_declarations that don't have an explicit
+ subtype. Errors are issued when the name is inappropriate or
+ ambiguous, and otherwise the Etype of the renaming entity is set
+ from the Etype of the renamed object.
+ * sem_util.adb (Has_Null_Exclusion): Allow for the case of no
+ subtype given in an N_Object_Renaming_Declaration.
+ * sprint.adb (Sprint_Node_Actual): Handle printing of
+ N_Object_Renaming_Declarations that are specified without an
+ explicit subtype.
+
+2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sinfo.ads (N_Delta_Aggregate): Document Etype field.
+ (N_Case_Expression): Likewise.
+ (Is_Syntactic_Field) <N_Quantified_Expression>: Adjust.
+ <N_Case_Expression>: Likewise.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * adaint.c: Avoid redefining IS_DIR_SEPARATOR macro.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * sem.adb (Walk_Library_Items): Defer processing of main spec
+ after all other specs and before processing bodies.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * bindgen.adb (Gen_Adafinal): Adafinal is convention Ada, not C.
+
+2020-06-04 Ed Schonberg <schonberg@adacore.com>
+
+ * sinput.adb (Sloc_Range): Ignore node in the tree if it appears
+ in a unit different from that of the node whose Sloc range we
+ are computing. This is necessary when computing the source range
+ of a subprogram body whose declaration includes a pre- or
+ postcondition, because declaration and body may appear in
+ different units, and the expanded code for the body includes
+ copies of the contract code.
+
+2020-06-04 Alexandre Oliva <oliva@adacore.com>
+
+ * switch.adb (Is_Internal_GCC_Switch): Recognize dumpdir and
+ dumpbase-ext. Mark auxbase and auxbase-strip for removal.
+
+2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_attr.adb (Resolve_Attribute) <Access>: Do not generate
+ the secondary message about a missing pragma if the convention
+ of the prefix is Intrinsic.
+ * sem_ch12.adb (Instantiate_Formal_Subprogram): Only set the
+ Convention and the Is_Inlined flag on a null procedure.
+
+2020-06-04 Justin Squirek <squirek@adacore.com>
+
+ * sem_ch6.adb (Check_Return_Obj_Accessibility): Change to
+ Check_Return_Construct_Accessibility to better reflect its
+ purpose. Add loop to properly obtain the object declaration
+ from an expanded extended return statement and add calls to get
+ the original node for associated values. Also, avoid checks when
+ the return statement being examined comes from an internally
+ generated function.
+
+2020-06-04 Dmitriy Anisimkov <anisimko@adacore.com>
+
+ * adaint.c (__gnat_is_absolute_path): Check for directory
+ separator after drive and colon.
+ (IS_DIR_SEPARATOR): Define new inline substitution.
+
+2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.ads: Update documentation about range checks and fix
+ minor other things.
+
+2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch3.adb (Array_Type_Declaration): Apply special handling
+ of private index types to generic packages and restrict it to
+ index types defined in the current scope.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-exextr.adb (Global_Unhandled_Action): New global
+ variable.
+ (Notify_Exception): Take into account Global_Unhandled_Action
+ and fix latent race condition.
+ (Exception_Action): Mark Favor_Top_Level so that variables can
+ be atomic.
+ (Global_Action): Mark atomic to remove the need for a lock.
+ * libgnat/g-excact.ads, libgnat/g-excact.adb
+ (Register_Global_Unhandled_Action): New procedure.
+ (Register_Global_Action): Remove lock.
+ * libgnat/s-stalib.ads (Raise_Action): Mark Favor_Top_Level to
+ be compatible with Exception_Action.
+ * sem_warn.adb (Warn_On_Unreferenced_Entity): Fix logic wrt
+ Volatile entities and entities with an address clause: the code
+ did not match the comment/intent.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * comperr.adb (Compiler_Abort): Update URL and bug report
+ instructions.
+
+2020-06-04 Steve Baird <baird@adacore.com>
+
+ * libgnat/s-imgrea.ads: Declare a named number
+ Max_Real_Image_Length with value 5200. Provide a comment
+ explaining why this value was chosen.
+ * libgnat/s-imgrea.adb (Set_Image_Real): Increase the upper
+ bound of the local String variable Digs to
+ Max_Real_Image_Length.
+ * libgnat/a-tiflau.adb (Put): Increase the upper bound of the
+ local String variable Buf to Max_Real_Image_Length.
+ (Puts): Increase the upper bound of the local String variable
+ Buf to Max_Real_Image_Length.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnarl/a-dynpri.adb, libgnarl/a-taside.adb,
+ libgnarl/a-taster.adb, libgnarl/s-interr.adb,
+ libgnarl/s-interr__sigaction.adb, libgnarl/s-taasde.adb,
+ libgnarl/s-taenca.adb, libgnarl/s-taenca.ads,
+ libgnarl/s-taprop.ads, 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-tasque.adb, libgnarl/s-tasque.ads,
+ libgnarl/s-tasren.adb, libgnarl/s-tasren.ads,
+ libgnarl/s-tassta.adb, libgnarl/s-tasuti.adb,
+ libgnarl/s-tasuti.ads, libgnarl/s-tpoben.adb,
+ libgnarl/s-tpobop.adb, libgnarl/s-tpopmo.adb,
+ libgnarl/s-tposen.adb, libgnat/s-parame.ads,
+ libgnat/s-parame__ae653.ads, libgnat/s-parame__hpux.ads,
+ libgnat/s-parame__vxworks.ads: Remove references to Single_Lock
+ and Global_Lock.
+
+2020-06-04 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-atopar.adb, libgnat/s-atopex.adb: Use Object_Size
+ instead of Size, otherwise many derived types will be rejected
+ (e.g. a type with a 14 bits 'Size and a 16 bits 'Object_Size).
+
+2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch12.adb (Copy_Generic_Node): Add special handling for a
+ conversion between access types.
+
+2020-06-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch12.adb (Check_Generic_Actuals): Also restore the proper
+ views of the actuals of the parent instances if the formals are
+ used as actuals of the children.
+ (Instantiate_Type): Add comment.
+
+2020-06-04 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch12.adb: Minor editorial fixes.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch12.adb (Denotes_Previous_Actual): Delete.
+ (Check_Generic_Actuals): Do not special case array types whose
+ component type denotes a previous actual. Do not special case
+ access types whose base type is private.
+ (Check_Private_View): Remove code dealing with secondary types.
+ Do not switch the views of an array because of its component.
+ (Copy_Generic_Node): Add special handling for a comparison
+ operator on array types.
+ (Instantiate_Type): Do not special case access types whose
+ designated type is private.
+ (Set_Global_Type): Do not special case array types whose
+ component type is private.
+
+2020-06-03 Justin Squirek <squirek@adacore.com>
+
+ * sem_ch10.adb (Process_Body_Clauses): Add loop to interate
+ through all prefixes in a use_type clause so that all packages
+ in the expanded name get examined for effectiveness.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch12.adb (Check_Private_View): Clean up implementation of
+ second main case, when the generic sees the private declaration.
+
+2020-06-03 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbin.ads: Minor reformatting.
+ * libgnat/a-nbnbre.ads, libgnat/a-nbnbre.adb (Is_Valid): Add
+ convention Intrinsic. Add detection of uninitialized big reals.
+
+2020-06-03 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Side_Effect_Free_Statements,
+ Side_Effect_Free_Loop): New functions.
+ (Has_Non_Null_Statements): Consider N_Call_Marker as a null
+ statement.
+ * sem_ch5.adb (Analyze_Loop_Parameter_Specification): Call
+ Set_Is_Null_Loop even inside a generic instantiation.
+ (Analyze_Loop_Statement): Mark for removal loops with no side
+ effects.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * opt.ads (Allow_Integer_Address): Fix typo in comment.
+ * stand.ads (Standard_Address): New entity.
+ * cstand.adb (Create_Standard): Create it.
+ * sem_ch4.adb (Operator_Check): Convert the operands of an
+ operation with addresses and integers to Standard_Address
+ if pragma Allow_Integer_Address is in effect.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-atopar.adb (Atomic_Fetch_And_Add): Make use of an
+ equivalent static expression.
+ (Atomic_Fetch_And_Subtract): Likewise.
+ (Is_Lock_Free): Likewise.
+ * libgnat/s-atopex.adb (Atomic_Exchange): Likewise.
+ (Atomic_Compare_And_Exchange): Likewise.
+ (Is_Lock_Free): Likewise.
+
+2020-06-03 Vadim Godunko <godunko@adacore.com>
+
+ * libgnat/s-parame.ads, libgnat/s-parame__ae653.ads,
+ libgnat/s-parame__hpux.ads: Fix typos.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_util.adb (Remove_Side_Effects): For a type conversion, do
+ not remove the side effects of the expression only if it is of
+ universal integer type.
+
+2020-06-03 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-aotase.ads, libgnat/s-atoope.ads,
+ libgnat/s-atopar.ads, libgnat/s-atopex.ads: Update header.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Also fold the
+ conversion for literals of enumeration types.
+
+2020-06-03 Yannick Moy <moy@adacore.com>
+
+ * rtsfind.adb (Load_RTU): Correctly set/reset global variable to
+ ignore SPARK_Mode in instances around loading.
+ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Accept Off
+ without prior On.
+ * sem_ch7.adb (Analyze_Package_Body_Helper): Likewise.
+ * sem_prag.adb (Analyze_Pragma): Always take into account
+ SPARK_Mode Off.
+
+2020-06-03 Arnaud Charlet <charlet@adacore.com>
+
+ * frontend.adb (Frontend): Call (dummy for now) tree checker.
+ * debug.adb: Reserve -gnatd_V for the tree checker.
+ * vast.ads, vast.adb: New files.
+ * gcc-interface/Make-lang.in: Add vast.o.
+
+2020-06-03 Justin Squirek <squirek@adacore.com>
+
+ * libgnat/a-cborse.adb, libgnat/a-cihase.adb,
+ libgnat/a-ciorse.adb, libgnat/a-coorse.adb: Modified to use
+ 'Unrestricted_Access in certain cases where static accessibility
+ errors were triggered.
+ * exp_ch6.adb (Expand_Simple_Return_Statement): Add generation
+ of dynamic accessibility checks as determined by
+ Is_Special_Aliased_Formal_Access.
+ * sem_attr.adb (Resolve_Attribute): Add call to
+ Is_Special_Aliased_Formal_Access to avoid performing static
+ checks where dynamic ones are required.
+ * sem_ch6.adb (Check_Return_Obj_Accessibility): Handle renamed
+ objects within component associations requiring special
+ accessibility checks.
+ * sem_util.adb, sem_util.ads (Is_Special_Aliased_Formal_Access):
+ Created to detect the special case where an aliased formal is
+ being compared against the level of an anonymous access return
+ object.
+ (Object_Access_Level): Remove incorrect condition leading to
+ overly permissive accessibility levels being returned on
+ explicitly aliased parameters.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (Enum_Pos_To_Rep): Adjust description.
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Pred>:
+ Reimplement in the case of an enumeration type with non-standard
+ but contiguous representation.
+ <Succ>: Likewise.
+ <Val>: Likewise.
+ * exp_ch3.adb (Expand_Freeze_Enumeration_Type): Count the
+ literals in the first loop. If the representation is
+ contiguous, just build the index type of the array type and set
+ Enum_Pos_To_Rep to it.
+
+2020-06-03 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_attr.adb (Expand_Loop_Entry_Attribute): Revise loop that
+ resets the scopes of entities associated with Loop_Id to the
+ scope of the new function, so the resetting is not restricted to
+ itypes, but excludes loop parameters and the function entity
+ itself. However, this fix is believed to be incomplete and a ???
+ comment is added to indicate that.
+
+2020-06-03 Bob Duff <duff@adacore.com>
+
+ * libgnat/s-regexp.ads: Fix comment
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Enum_Rep>:
+ In the case of an enumeration type, do an intermediate
+ conversion to a small integer type. Remove useless stuff.
+ <Finalization_Size>: Do not hardcode Universal_Integer and
+ fix a type mismatch in the assignment to the variable.
+ <Max_Size_In_Storage_Elements>: Likewise.
+ <From_Any>: Do not redefine the Ptyp local variable.
+ <To_Any>: Likewise.
+ <TypeCode>: Likewise.
+ <Pos>: Small tweaks.
+ <Val>: For an enumeration type with standard representation,
+ apply the range check to the expression of a convertion to
+ Universal_Integer, if any. For an integer type, expand to
+ a mere conversion.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-rannum.adb (Random_Discrete): In the 32-bit case,
+ use the same linear implementation as in the 64-bit case when
+ the type has a contiguous representation.
+
+2020-06-03 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_util.adb (Build_Class_Wide_Clone_Decl): Call
+ Set_Debug_Info_Needed to set the Needs_Debug_Info flag on
+ Clone_Id if the flag is set on Spec_Id.
+
+2020-06-03 Yannick Moy <moy@adacore.com>
+
+ * inline.adb (Expand_Inlined_Call): Do not suppress checks on
+ inlined code in GNATprove mode.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (Has_Contiguous_Rep): Fix typo in comment.
+
+2020-06-03 Piotr Trojanek <trojanek@adacore.com>
+
+ * checks.adb, einfo.adb, exp_aggr.adb, exp_ch4.adb, exp_ch6.adb,
+ exp_unst.adb, exp_util.adb, freeze.adb, inline.adb, repinfo.adb,
+ sem_aggr.adb, sem_attr.adb, sem_aux.adb, sem_ch13.adb,
+ sem_ch3.adb, sem_ch4.adb, sem_ch8.adb, sem_elab.adb,
+ sem_eval.adb, sem_prag.adb, sem_res.adb, sem_smem.adb,
+ sem_util.adb, treepr.adb: Replace uses of Next_ functions with
+ corresponding procedures.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Attribute_Valid): Use Standard_Long_Long_Integer
+ in lieu of Universal_Integer as large integer type.
+ * exp_ch3.adb (Expand_Freeze_Enumeration_Type): Likewise.
+
+2020-06-03 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/s-auxdec.ads (Address_Int): New.
+
+2020-06-03 Arnaud Charlet <charlet@adacore.com>
+
+ * aspects.adb, aspects.ads, atree.adb, atree.ads, elists.adb,
+ elists.ads, fname.adb, fname.ads, gnat1drv.adb, lib.adb,
+ lib.ads, namet.adb, namet.ads, nlists.adb, nlists.ads, opt.adb,
+ opt.ads, osint-c.adb, osint-c.ads, repinfo.adb, repinfo.ads,
+ sem_aux.adb, sem_aux.ads, sinput.adb, sinput.ads, stand.ads,
+ stringt.adb, stringt.ads, switch-c.adb, table.adb, table.ads,
+ uintp.adb, uintp.ads, urealp.adb, urealp.ads (Tree_Read,
+ Tree_Write): Remove generation of ASIS trees.
+ * doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ Remove -gnatt and -gnatct documentation.
+ * gnat_ugn.texi: Regenerate.
+ * tree_in.ads, tree_in.adb, tree_io.ads, tree_io.adb,
+ tree_gen.ads, tree_gen.adb, stand.adb: Remove.
+ * gcc-interface/Makefile.in, gcc-interface/Make-lang.in: Remove
+ references to tree_gen.o tree_in.o tree_io.o.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * opt.ads (Disable_FE_Inline): Move around.
+ (Disable_FE_Inline_Always): Likewise.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * checks.adb (Is_Single_Attribute_Reference): New predicate.
+ (Generate_Range_Check): Do not force the evaluation if the
+ node is a single attribute reference.
+ * exp_util.adb (Side_Effect_Free_Attribute): New predicate.
+ (Side_Effect_Free) <N_Attribute_Reference>: Call it.
+ (Remove_Side_Effects): Remove the side effects of the prefix
+ for an attribute reference whose prefix is not a name.
+
+2020-06-03 Arnaud Charlet <charlet@adacore.com>
+
+ * switch-c.adb (Scan_Front_End_Switches): Remove processing of
+ -gnatt.
+ * usage.adb (Usage): Remove mention of -gnatt.
+
+2020-06-03 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sinfo.ads: Minor tweaks in commentary.
+
+2020-06-02 Alexandre Oliva <oliva@adacore.com>
+
+ * lib.ads (Compilation_Switches): Remove -auxbase from
+ comments.
+ * switch.ads (Is_Internal_GCC_Switch): Likewise.
+
+2020-06-02 Arnaud Charlet <charlet@adacore.com>
+
+ * atree.ads, checks.adb, contracts.adb, debug.adb, einfo.ads,
+ exp_ch3.adb, exp_util.adb, expander.ads, expander.adb,
+ frontend.adb, gnat1drv.adb, itypes.adb, lib.ads, namet.ads,
+ opt.adb, opt.ads, par-prag.adb, repinfo.ads, sem_aggr.adb,
+ sem_aux.ads, sem_case.ads, sem_ch10.adb, sem_ch12.adb,
+ sem_ch13.adb, sem_ch3.adb, sem_ch4.adb, sem_ch6.adb,
+ sem_dim.adb, sem_elab.adb, sem_prag.adb, sem_prag.ads,
+ sem_res.adb, sem_type.adb, sem_util.adb, sinfo.ads, stand.ads,
+ tree_io.ads: Remove references to ASIS_Mode.
+
+2020-06-02 Javier Miranda <miranda@adacore.com>
+
+ * exp_ch4.adb (Generate_Temporary): New subprogram of
+ Discrete_Range_Check that generates a temporary to facilitate
+ the C backend the code generation of the unchecked conversion
+ since the size of the source type may differ from the size of
+ the target type.
+
+2020-06-02 Arnaud Charlet <charlet@adacore.com>
+
+ * ada_get_targ.adb: Bump copyright year.
+ * adabkend.adb: Likewise.
+ * adabkend.ads: Likewise.
+ * adadecode.c: Likewise.
+ * adadecode.h: Likewise.
+ * adaint.c: Likewise.
+ * adaint.h: Likewise.
+ * affinity.c: Likewise.
+ * ali-util.adb: Likewise.
+ * ali-util.ads: Likewise.
+ * ali.adb: Likewise.
+ * ali.ads: Likewise.
+ * alloc.ads: Likewise.
+ * argv-lynxos178-raven-cert.c: Likewise.
+ * argv.c: Likewise.
+ * aspects.adb: Likewise.
+ * aspects.ads: Likewise.
+ * atree.adb: Likewise.
+ * atree.ads: Likewise.
+ * atree.h: Likewise.
+ * aux-io.c: Likewise.
+ * back_end.adb: Likewise.
+ * back_end.ads: Likewise.
+ * bcheck.adb: Likewise.
+ * bcheck.ads: Likewise.
+ * binde.adb: Likewise.
+ * binde.ads: Likewise.
+ * binderr.adb: Likewise.
+ * binderr.ads: Likewise.
+ * bindgen.adb: Likewise.
+ * bindgen.ads: Likewise.
+ * bindo-augmentors.adb: Likewise.
+ * bindo-augmentors.ads: Likewise.
+ * bindo-builders.adb: Likewise.
+ * bindo-builders.ads: Likewise.
+ * bindo-diagnostics.adb: Likewise.
+ * bindo-diagnostics.ads: Likewise.
+ * bindo-elaborators.adb: Likewise.
+ * bindo-elaborators.ads: Likewise.
+ * bindo-graphs.adb: Likewise.
+ * bindo-graphs.ads: Likewise.
+ * bindo-units.adb: Likewise.
+ * bindo-units.ads: Likewise.
+ * bindo-validators.adb: Likewise.
+ * bindo-validators.ads: Likewise.
+ * bindo-writers.adb: Likewise.
+ * bindo-writers.ads: Likewise.
+ * bindo.adb: Likewise.
+ * bindo.ads: Likewise.
+ * bindusg.adb: Likewise.
+ * bindusg.ads: Likewise.
+ * butil.adb: Likewise.
+ * butil.ads: Likewise.
+ * cal.c: Likewise.
+ * casing.adb: Likewise.
+ * casing.ads: Likewise.
+ * ceinfo.adb: Likewise.
+ * checks.adb: Likewise.
+ * checks.ads: Likewise.
+ * cio.c: Likewise.
+ * clean.adb: Likewise.
+ * clean.ads: Likewise.
+ * comperr.adb: Likewise.
+ * comperr.ads: Likewise.
+ * contracts.adb: Likewise.
+ * contracts.ads: Likewise.
+ * csets.adb: Likewise.
+ * csets.ads: Likewise.
+ * csinfo.adb: Likewise.
+ * cstand.adb: Likewise.
+ * cstand.ads: Likewise.
+ * cstreams.c: Likewise.
+ * ctrl_c.c: Likewise.
+ * debug.adb: Likewise.
+ * debug.ads: Likewise.
+ * debug_a.adb: Likewise.
+ * debug_a.ads: Likewise.
+ * einfo.adb: Likewise.
+ * einfo.ads: Likewise.
+ * elists.adb: Likewise.
+ * elists.ads: Likewise.
+ * elists.h: Likewise.
+ * env.c: Likewise.
+ * env.h: Likewise.
+ * err_vars.ads: Likewise.
+ * errno.c: Likewise.
+ * errout.adb: Likewise.
+ * errout.ads: Likewise.
+ * erroutc.adb: Likewise.
+ * erroutc.ads: Likewise.
+ * errutil.adb: Likewise.
+ * errutil.ads: Likewise.
+ * eval_fat.adb: Likewise.
+ * eval_fat.ads: Likewise.
+ * exit.c: Likewise.
+ * exp_aggr.adb: Likewise.
+ * exp_aggr.ads: Likewise.
+ * exp_atag.adb: Likewise.
+ * exp_atag.ads: Likewise.
+ * exp_attr.adb: Likewise.
+ * exp_attr.ads: Likewise.
+ * exp_cg.adb: Likewise.
+ * exp_cg.ads: Likewise.
+ * exp_ch10.ads: Likewise.
+ * exp_ch11.adb: Likewise.
+ * exp_ch11.ads: Likewise.
+ * exp_ch12.adb: Likewise.
+ * exp_ch12.ads: Likewise.
+ * exp_ch13.adb: Likewise.
+ * exp_ch13.ads: Likewise.
+ * exp_ch2.adb: Likewise.
+ * exp_ch2.ads: Likewise.
+ * exp_ch3.adb: Likewise.
+ * exp_ch3.ads: Likewise.
+ * exp_ch4.adb: Likewise.
+ * exp_ch4.ads: Likewise.
+ * exp_ch5.adb: Likewise.
+ * exp_ch5.ads: Likewise.
+ * exp_ch6.adb: Likewise.
+ * exp_ch6.ads: Likewise.
+ * exp_ch7.adb: Likewise.
+ * exp_ch7.ads: Likewise.
+ * exp_ch8.adb: Likewise.
+ * exp_ch8.ads: Likewise.
+ * exp_ch9.adb: Likewise.
+ * exp_ch9.ads: Likewise.
+ * exp_code.adb: Likewise.
+ * exp_code.ads: Likewise.
+ * exp_dbug.adb: Likewise.
+ * exp_dbug.ads: Likewise.
+ * exp_disp.adb: Likewise.
+ * exp_disp.ads: Likewise.
+ * exp_dist.adb: Likewise.
+ * exp_dist.ads: Likewise.
+ * exp_fixd.adb: Likewise.
+ * exp_fixd.ads: Likewise.
+ * exp_imgv.adb: Likewise.
+ * exp_imgv.ads: Likewise.
+ * exp_intr.adb: Likewise.
+ * exp_intr.ads: Likewise.
+ * exp_pakd.adb: Likewise.
+ * exp_pakd.ads: Likewise.
+ * exp_prag.adb: Likewise.
+ * exp_prag.ads: Likewise.
+ * exp_sel.adb: Likewise.
+ * exp_sel.ads: Likewise.
+ * exp_smem.adb: Likewise.
+ * exp_smem.ads: Likewise.
+ * exp_spark.adb: Likewise.
+ * exp_spark.ads: Likewise.
+ * exp_strm.adb: Likewise.
+ * exp_strm.ads: Likewise.
+ * exp_tss.adb: Likewise.
+ * exp_tss.ads: Likewise.
+ * exp_unst.adb: Likewise.
+ * exp_unst.ads: Likewise.
+ * exp_util.adb: Likewise.
+ * exp_util.ads: Likewise.
+ * expander.adb: Likewise.
+ * expander.ads: Likewise.
+ * expect.c: Likewise.
+ * fe.h: Likewise.
+ * final.c: Likewise.
+ * fmap.adb: Likewise.
+ * fmap.ads: Likewise.
+ * fname-sf.adb: Likewise.
+ * fname-sf.ads: Likewise.
+ * fname-uf.adb: Likewise.
+ * fname-uf.ads: Likewise.
+ * fname.adb: Likewise.
+ * fname.ads: Likewise.
+ * freeze.adb: Likewise.
+ * freeze.ads: Likewise.
+ * frontend.adb: Likewise.
+ * frontend.ads: Likewise.
+ * get_scos.adb: Likewise.
+ * get_scos.ads: Likewise.
+ * get_targ.adb: Likewise.
+ * get_targ.ads: Likewise.
+ * ghost.adb: Likewise.
+ * ghost.ads: Likewise.
+ * gnat1drv.adb: Likewise.
+ * gnat1drv.ads: Likewise.
+ * gnatbind.adb: Likewise.
+ * gnatbind.ads: Likewise.
+ * gnatchop.adb: Likewise.
+ * gnatclean.adb: Likewise.
+ * gnatcmd.adb: Likewise.
+ * gnatcmd.ads: Likewise.
+ * gnatdll.adb: Likewise.
+ * gnatfind.adb: Likewise.
+ * gnatkr.adb: Likewise.
+ * gnatkr.ads: Likewise.
+ * gnatlink.adb: Likewise.
+ * gnatlink.ads: Likewise.
+ * gnatls.adb: Likewise.
+ * gnatls.ads: Likewise.
+ * gnatmake.adb: Likewise.
+ * gnatmake.ads: Likewise.
+ * gnatname.adb: Likewise.
+ * gnatname.ads: Likewise.
+ * gnatprep.adb: Likewise.
+ * gnatprep.ads: Likewise.
+ * gnatvsn.adb: Likewise.
+ * gnatxref.adb: Likewise.
+ * gprep.adb: Likewise.
+ * gprep.ads: Likewise.
+ * gsocket.h: Likewise.
+ * hostparm.ads: Likewise.
+ * impunit.adb: Likewise.
+ * impunit.ads: Likewise.
+ * indepsw-aix.adb: Likewise.
+ * indepsw-darwin.adb: Likewise.
+ * indepsw-gnu.adb: Likewise.
+ * indepsw.adb: Likewise.
+ * indepsw.ads: Likewise.
+ * init.c: Likewise.
+ * initialize.c: Likewise.
+ * inline.adb: Likewise.
+ * inline.ads: Likewise.
+ * itypes.adb: Likewise.
+ * itypes.ads: Likewise.
+ * krunch.adb: Likewise.
+ * krunch.ads: Likewise.
+ * layout.adb: Likewise.
+ * layout.ads: Likewise.
+ * lib-list.adb: Likewise.
+ * lib-load.adb: Likewise.
+ * lib-load.ads: Likewise.
+ * lib-sort.adb: Likewise.
+ * lib-util.adb: Likewise.
+ * lib-util.ads: Likewise.
+ * lib-writ.adb: Likewise.
+ * lib-writ.ads: Likewise.
+ * lib-xref-spark_specific.adb: Likewise.
+ * lib-xref.adb: Likewise.
+ * lib-xref.ads: Likewise.
+ * lib.adb: Likewise.
+ * lib.ads: Likewise.
+ * libgnarl/a-astaco.adb: Likewise.
+ * libgnarl/a-dispat.adb: Likewise.
+ * libgnarl/a-dynpri.adb: Likewise.
+ * libgnarl/a-etgrbu.ads: Likewise.
+ * libgnarl/a-exetim__darwin.adb: Likewise.
+ * libgnarl/a-exetim__default.ads: Likewise.
+ * libgnarl/a-exetim__mingw.adb: Likewise.
+ * libgnarl/a-exetim__mingw.ads: Likewise.
+ * libgnarl/a-exetim__posix.adb: Likewise.
+ * libgnarl/a-interr.adb: Likewise.
+ * libgnarl/a-interr.ads: Likewise.
+ * libgnarl/a-intnam.ads: Likewise.
+ * libgnarl/a-intnam__aix.ads: Likewise.
+ * libgnarl/a-intnam__darwin.ads: Likewise.
+ * libgnarl/a-intnam__dragonfly.ads: Likewise.
+ * libgnarl/a-intnam__dummy.ads: Likewise.
+ * libgnarl/a-intnam__freebsd.ads: Likewise.
+ * libgnarl/a-intnam__hpux.ads: Likewise.
+ * libgnarl/a-intnam__linux.ads: Likewise.
+ * libgnarl/a-intnam__lynxos.ads: Likewise.
+ * libgnarl/a-intnam__mingw.ads: Likewise.
+ * libgnarl/a-intnam__qnx.ads: Likewise.
+ * libgnarl/a-intnam__rtems.ads: Likewise.
+ * libgnarl/a-intnam__solaris.ads: Likewise.
+ * libgnarl/a-intnam__vxworks.ads: Likewise.
+ * libgnarl/a-reatim.adb: Likewise.
+ * libgnarl/a-reatim.ads: Likewise.
+ * libgnarl/a-retide.adb: Likewise.
+ * libgnarl/a-retide.ads: Likewise.
+ * libgnarl/a-rttiev.adb: Likewise.
+ * libgnarl/a-rttiev.ads: Likewise.
+ * libgnarl/a-synbar.adb: Likewise.
+ * libgnarl/a-synbar.ads: Likewise.
+ * libgnarl/a-synbar__posix.adb: Likewise.
+ * libgnarl/a-synbar__posix.ads: Likewise.
+ * libgnarl/a-sytaco.adb: Likewise.
+ * libgnarl/a-sytaco.ads: Likewise.
+ * libgnarl/a-tasatt.adb: Likewise.
+ * libgnarl/a-tasatt.ads: Likewise.
+ * libgnarl/a-taside.adb: Likewise.
+ * libgnarl/a-taside.ads: Likewise.
+ * libgnarl/a-taster.adb: Likewise.
+ * libgnarl/g-boubuf.adb: Likewise.
+ * libgnarl/g-boubuf.ads: Likewise.
+ * libgnarl/g-boumai.ads: Likewise.
+ * libgnarl/g-semaph.adb: Likewise.
+ * libgnarl/g-semaph.ads: Likewise.
+ * libgnarl/g-signal.adb: Likewise.
+ * libgnarl/g-signal.ads: Likewise.
+ * libgnarl/g-tastus.ads: Likewise.
+ * libgnarl/g-thread.adb: Likewise.
+ * libgnarl/g-thread.ads: Likewise.
+ * libgnarl/i-vxinco.adb: Likewise.
+ * libgnarl/i-vxinco.ads: Likewise.
+ * libgnarl/s-inmaop.ads: Likewise.
+ * libgnarl/s-inmaop__dummy.adb: Likewise.
+ * libgnarl/s-inmaop__posix.adb: Likewise.
+ * libgnarl/s-inmaop__vxworks.adb: Likewise.
+ * libgnarl/s-interr.adb: Likewise.
+ * libgnarl/s-interr.ads: Likewise.
+ * libgnarl/s-interr__dummy.adb: Likewise.
+ * libgnarl/s-interr__hwint.adb: Likewise.
+ * libgnarl/s-interr__sigaction.adb: Likewise.
+ * libgnarl/s-interr__vxworks.adb: Likewise.
+ * libgnarl/s-intman.ads: Likewise.
+ * libgnarl/s-intman__android.adb: Likewise.
+ * libgnarl/s-intman__dummy.adb: Likewise.
+ * libgnarl/s-intman__lynxos.adb: Likewise.
+ * libgnarl/s-intman__mingw.adb: Likewise.
+ * libgnarl/s-intman__posix.adb: Likewise.
+ * libgnarl/s-intman__qnx.adb: Likewise.
+ * libgnarl/s-intman__solaris.adb: Likewise.
+ * libgnarl/s-intman__susv3.adb: Likewise.
+ * libgnarl/s-intman__vxworks.adb: Likewise.
+ * libgnarl/s-intman__vxworks.ads: Likewise.
+ * libgnarl/s-linux.ads: Likewise.
+ * libgnarl/s-linux__alpha.ads: Likewise.
+ * libgnarl/s-linux__android.ads: Likewise.
+ * libgnarl/s-linux__hppa.ads: Likewise.
+ * libgnarl/s-linux__mips.ads: Likewise.
+ * libgnarl/s-linux__riscv.ads: Likewise.
+ * libgnarl/s-linux__sparc.ads: Likewise.
+ * libgnarl/s-linux__x32.ads: Likewise.
+ * libgnarl/s-mudido.adb: Likewise.
+ * libgnarl/s-mudido__affinity.adb: Likewise.
+ * libgnarl/s-osinte__aix.adb: Likewise.
+ * libgnarl/s-osinte__aix.ads: Likewise.
+ * libgnarl/s-osinte__android.adb: Likewise.
+ * libgnarl/s-osinte__android.ads: Likewise.
+ * libgnarl/s-osinte__darwin.adb: Likewise.
+ * libgnarl/s-osinte__darwin.ads: Likewise.
+ * libgnarl/s-osinte__dragonfly.adb: Likewise.
+ * libgnarl/s-osinte__dragonfly.ads: Likewise.
+ * libgnarl/s-osinte__dummy.ads: Likewise.
+ * libgnarl/s-osinte__freebsd.adb: Likewise.
+ * libgnarl/s-osinte__freebsd.ads: Likewise.
+ * libgnarl/s-osinte__gnu.adb: Likewise.
+ * libgnarl/s-osinte__gnu.ads: Likewise.
+ * libgnarl/s-osinte__hpux-dce.adb: Likewise.
+ * libgnarl/s-osinte__hpux-dce.ads: Likewise.
+ * libgnarl/s-osinte__hpux.ads: Likewise.
+ * libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise.
+ * libgnarl/s-osinte__linux.ads: Likewise.
+ * libgnarl/s-osinte__lynxos178.adb: Likewise.
+ * libgnarl/s-osinte__lynxos178e.ads: Likewise.
+ * libgnarl/s-osinte__mingw.ads: Likewise.
+ * libgnarl/s-osinte__posix.adb: Likewise.
+ * libgnarl/s-osinte__qnx.adb: Likewise.
+ * libgnarl/s-osinte__qnx.ads: Likewise.
+ * libgnarl/s-osinte__rtems.adb: Likewise.
+ * libgnarl/s-osinte__rtems.ads: Likewise.
+ * libgnarl/s-osinte__solaris.adb: Likewise.
+ * libgnarl/s-osinte__solaris.ads: Likewise.
+ * libgnarl/s-osinte__vxworks.adb: Likewise.
+ * libgnarl/s-osinte__vxworks.ads: Likewise.
+ * libgnarl/s-osinte__x32.adb: Likewise.
+ * libgnarl/s-proinf.adb: Likewise.
+ * libgnarl/s-proinf.ads: Likewise.
+ * libgnarl/s-qnx.ads: Likewise.
+ * libgnarl/s-solita.adb: Likewise.
+ * libgnarl/s-solita.ads: Likewise.
+ * libgnarl/s-stusta.adb: Likewise.
+ * libgnarl/s-stusta.ads: Likewise.
+ * libgnarl/s-taasde.adb: Likewise.
+ * libgnarl/s-taasde.ads: Likewise.
+ * libgnarl/s-tadeca.adb: Likewise.
+ * libgnarl/s-tadeca.ads: Likewise.
+ * libgnarl/s-tadert.adb: Likewise.
+ * libgnarl/s-tadert.ads: Likewise.
+ * libgnarl/s-taenca.adb: Likewise.
+ * libgnarl/s-taenca.ads: Likewise.
+ * libgnarl/s-taprob.adb: Likewise.
+ * libgnarl/s-taprob.ads: Likewise.
+ * libgnarl/s-taprop.ads: Likewise.
+ * libgnarl/s-taprop__dummy.adb: Likewise.
+ * libgnarl/s-taprop__hpux-dce.adb: Likewise.
+ * libgnarl/s-taprop__linux.adb: Likewise.
+ * libgnarl/s-taprop__mingw.adb: Likewise.
+ * libgnarl/s-taprop__posix.adb: Likewise.
+ * libgnarl/s-taprop__qnx.adb: Likewise.
+ * libgnarl/s-taprop__solaris.adb: Likewise.
+ * libgnarl/s-taprop__vxworks.adb: Likewise.
+ * libgnarl/s-tarest.adb: Likewise.
+ * libgnarl/s-tarest.ads: Likewise.
+ * libgnarl/s-tasdeb.adb: Likewise.
+ * libgnarl/s-tasdeb.ads: Likewise.
+ * libgnarl/s-tasinf.adb: Likewise.
+ * libgnarl/s-tasinf.ads: Likewise.
+ * libgnarl/s-tasinf__linux.adb: Likewise.
+ * libgnarl/s-tasinf__linux.ads: Likewise.
+ * libgnarl/s-tasinf__mingw.adb: Likewise.
+ * libgnarl/s-tasinf__mingw.ads: Likewise.
+ * libgnarl/s-tasinf__solaris.adb: Likewise.
+ * libgnarl/s-tasinf__solaris.ads: Likewise.
+ * libgnarl/s-tasinf__vxworks.ads: Likewise.
+ * libgnarl/s-tasini.adb: Likewise.
+ * libgnarl/s-tasini.ads: Likewise.
+ * libgnarl/s-taskin.adb: Likewise.
+ * libgnarl/s-taskin.ads: Likewise.
+ * libgnarl/s-taspri__dummy.ads: Likewise.
+ * libgnarl/s-taspri__hpux-dce.ads: Likewise.
+ * libgnarl/s-taspri__lynxos.ads: Likewise.
+ * libgnarl/s-taspri__mingw.ads: Likewise.
+ * libgnarl/s-taspri__posix-noaltstack.ads: Likewise.
+ * libgnarl/s-taspri__posix.ads: Likewise.
+ * libgnarl/s-taspri__solaris.ads: Likewise.
+ * libgnarl/s-taspri__vxworks.ads: Likewise.
+ * libgnarl/s-tasque.adb: Likewise.
+ * libgnarl/s-tasque.ads: Likewise.
+ * libgnarl/s-tasren.adb: Likewise.
+ * libgnarl/s-tasren.ads: Likewise.
+ * libgnarl/s-tasres.ads: Likewise.
+ * libgnarl/s-tassta.adb: Likewise.
+ * libgnarl/s-tassta.ads: Likewise.
+ * libgnarl/s-tasuti.adb: Likewise.
+ * libgnarl/s-tasuti.ads: Likewise.
+ * libgnarl/s-tataat.adb: Likewise.
+ * libgnarl/s-tataat.ads: Likewise.
+ * libgnarl/s-tpinop.adb: Likewise.
+ * libgnarl/s-tpinop.ads: Likewise.
+ * libgnarl/s-tpoaal.adb: Likewise.
+ * libgnarl/s-tpoben.adb: Likewise.
+ * libgnarl/s-tpoben.ads: Likewise.
+ * libgnarl/s-tpobmu.adb: Likewise.
+ * libgnarl/s-tpobmu.ads: Likewise.
+ * libgnarl/s-tpobop.adb: Likewise.
+ * libgnarl/s-tpobop.ads: Likewise.
+ * libgnarl/s-tpopmo.adb: Likewise.
+ * libgnarl/s-tpopsp__posix-foreign.adb: Likewise.
+ * libgnarl/s-tpopsp__posix.adb: Likewise.
+ * libgnarl/s-tpopsp__solaris.adb: Likewise.
+ * libgnarl/s-tpopsp__tls.adb: Likewise.
+ * libgnarl/s-tpopsp__vxworks-rtp.adb: Likewise.
+ * libgnarl/s-tpopsp__vxworks-tls.adb: Likewise.
+ * libgnarl/s-tpopsp__vxworks.adb: Likewise.
+ * libgnarl/s-tporft.adb: Likewise.
+ * libgnarl/s-tposen.adb: Likewise.
+ * libgnarl/s-tposen.ads: Likewise.
+ * libgnarl/s-vxwext.adb: Likewise.
+ * libgnarl/s-vxwext.ads: Likewise.
+ * libgnarl/s-vxwext__kernel-smp.adb: Likewise.
+ * libgnarl/s-vxwext__kernel.adb: Likewise.
+ * libgnarl/s-vxwext__kernel.ads: Likewise.
+ * libgnarl/s-vxwext__noints.adb: Likewise.
+ * libgnarl/s-vxwext__rtp-smp.adb: Likewise.
+ * libgnarl/s-vxwext__rtp.adb: Likewise.
+ * libgnarl/s-vxwext__rtp.ads: Likewise.
+ * libgnarl/s-vxwext__vthreads.ads: Likewise.
+ * libgnarl/s-vxwork__aarch64.ads: Likewise.
+ * libgnarl/s-vxwork__arm.ads: Likewise.
+ * libgnarl/s-vxwork__ppc.ads: Likewise.
+ * libgnarl/s-vxwork__x86.ads: Likewise.
+ * libgnarl/thread.c: Likewise.
+ * libgnat/a-assert.adb: Likewise.
+ * libgnat/a-assert.ads: Likewise.
+ * libgnat/a-btgbso.adb: Likewise.
+ * libgnat/a-btgbso.ads: Likewise.
+ * libgnat/a-calari.adb: Likewise.
+ * libgnat/a-calari.ads: Likewise.
+ * libgnat/a-calcon.adb: Likewise.
+ * libgnat/a-calcon.ads: Likewise.
+ * libgnat/a-caldel.adb: Likewise.
+ * libgnat/a-caldel.ads: Likewise.
+ * libgnat/a-calend.adb: Likewise.
+ * libgnat/a-calend.ads: Likewise.
+ * libgnat/a-calfor.adb: Likewise.
+ * libgnat/a-calfor.ads: Likewise.
+ * libgnat/a-catizo.adb: Likewise.
+ * libgnat/a-cbdlli.adb: Likewise.
+ * libgnat/a-cbdlli.ads: Likewise.
+ * libgnat/a-cbhama.adb: Likewise.
+ * libgnat/a-cbhama.ads: Likewise.
+ * libgnat/a-cbhase.adb: Likewise.
+ * libgnat/a-cbhase.ads: Likewise.
+ * libgnat/a-cbmutr.adb: Likewise.
+ * libgnat/a-cbmutr.ads: Likewise.
+ * libgnat/a-cborma.adb: Likewise.
+ * libgnat/a-cborma.ads: Likewise.
+ * libgnat/a-cborse.adb: Likewise.
+ * libgnat/a-cborse.ads: Likewise.
+ * libgnat/a-cbprqu.adb: Likewise.
+ * libgnat/a-cbprqu.ads: Likewise.
+ * libgnat/a-cbsyqu.adb: Likewise.
+ * libgnat/a-cbsyqu.ads: Likewise.
+ * libgnat/a-cdlili.adb: Likewise.
+ * libgnat/a-cdlili.ads: Likewise.
+ * libgnat/a-cfdlli.adb: Likewise.
+ * libgnat/a-cfdlli.ads: Likewise.
+ * libgnat/a-cfhama.adb: Likewise.
+ * libgnat/a-cfhama.ads: Likewise.
+ * libgnat/a-cfhase.adb: Likewise.
+ * libgnat/a-cfhase.ads: Likewise.
+ * libgnat/a-cfinve.adb: Likewise.
+ * libgnat/a-cfinve.ads: Likewise.
+ * libgnat/a-cforma.adb: Likewise.
+ * libgnat/a-cforma.ads: Likewise.
+ * libgnat/a-cforse.adb: Likewise.
+ * libgnat/a-cforse.ads: Likewise.
+ * libgnat/a-cgaaso.adb: Likewise.
+ * libgnat/a-cgaaso.ads: Likewise.
+ * libgnat/a-cgarso.adb: Likewise.
+ * libgnat/a-cgcaso.adb: Likewise.
+ * libgnat/a-chacon.adb: Likewise.
+ * libgnat/a-chacon.ads: Likewise.
+ * libgnat/a-chahan.adb: Likewise.
+ * libgnat/a-chahan.ads: Likewise.
+ * libgnat/a-chlat9.ads: Likewise.
+ * libgnat/a-chtgbk.adb: Likewise.
+ * libgnat/a-chtgbk.ads: Likewise.
+ * libgnat/a-chtgbo.adb: Likewise.
+ * libgnat/a-chtgbo.ads: Likewise.
+ * libgnat/a-chtgke.adb: Likewise.
+ * libgnat/a-chtgke.ads: Likewise.
+ * libgnat/a-chtgop.adb: Likewise.
+ * libgnat/a-chtgop.ads: Likewise.
+ * libgnat/a-chzla1.ads: Likewise.
+ * libgnat/a-chzla9.ads: Likewise.
+ * libgnat/a-cidlli.adb: Likewise.
+ * libgnat/a-cidlli.ads: Likewise.
+ * libgnat/a-cihama.adb: Likewise.
+ * libgnat/a-cihama.ads: Likewise.
+ * libgnat/a-cihase.adb: Likewise.
+ * libgnat/a-cihase.ads: Likewise.
+ * libgnat/a-cimutr.adb: Likewise.
+ * libgnat/a-cimutr.ads: Likewise.
+ * libgnat/a-ciorma.adb: Likewise.
+ * libgnat/a-ciorma.ads: Likewise.
+ * libgnat/a-ciormu.adb: Likewise.
+ * libgnat/a-ciormu.ads: Likewise.
+ * libgnat/a-ciorse.adb: Likewise.
+ * libgnat/a-ciorse.ads: Likewise.
+ * libgnat/a-clrefi.adb: Likewise.
+ * libgnat/a-clrefi.ads: Likewise.
+ * libgnat/a-coboho.adb: Likewise.
+ * libgnat/a-coboho.ads: Likewise.
+ * libgnat/a-cobove.adb: Likewise.
+ * libgnat/a-cobove.ads: Likewise.
+ * libgnat/a-cofove.adb: Likewise.
+ * libgnat/a-cofove.ads: Likewise.
+ * libgnat/a-cofuba.adb: Likewise.
+ * libgnat/a-cofuba.ads: Likewise.
+ * libgnat/a-cofuma.adb: Likewise.
+ * libgnat/a-cofuma.ads: Likewise.
+ * libgnat/a-cofuse.adb: Likewise.
+ * libgnat/a-cofuse.ads: Likewise.
+ * libgnat/a-cofuve.adb: Likewise.
+ * libgnat/a-cofuve.ads: Likewise.
+ * libgnat/a-cogeso.adb: Likewise.
+ * libgnat/a-cogeso.ads: Likewise.
+ * libgnat/a-cohama.adb: Likewise.
+ * libgnat/a-cohama.ads: Likewise.
+ * libgnat/a-cohase.adb: Likewise.
+ * libgnat/a-cohase.ads: Likewise.
+ * libgnat/a-cohata.ads: Likewise.
+ * libgnat/a-coinho.adb: Likewise.
+ * libgnat/a-coinho.ads: Likewise.
+ * libgnat/a-coinho__shared.adb: Likewise.
+ * libgnat/a-coinho__shared.ads: Likewise.
+ * libgnat/a-coinve.adb: Likewise.
+ * libgnat/a-coinve.ads: Likewise.
+ * libgnat/a-colien.adb: Likewise.
+ * libgnat/a-colien.ads: Likewise.
+ * libgnat/a-colire.adb: Likewise.
+ * libgnat/a-colire.ads: Likewise.
+ * libgnat/a-comlin.adb: Likewise.
+ * libgnat/a-comlin.ads: Likewise.
+ * libgnat/a-comutr.adb: Likewise.
+ * libgnat/a-comutr.ads: Likewise.
+ * libgnat/a-conhel.adb: Likewise.
+ * libgnat/a-conhel.ads: Likewise.
+ * libgnat/a-convec.adb: Likewise.
+ * libgnat/a-convec.ads: Likewise.
+ * libgnat/a-coorma.adb: Likewise.
+ * libgnat/a-coorma.ads: Likewise.
+ * libgnat/a-coormu.adb: Likewise.
+ * libgnat/a-coormu.ads: Likewise.
+ * libgnat/a-coorse.adb: Likewise.
+ * libgnat/a-coorse.ads: Likewise.
+ * libgnat/a-coprnu.adb: Likewise.
+ * libgnat/a-coprnu.ads: Likewise.
+ * libgnat/a-crbltr.ads: Likewise.
+ * libgnat/a-crbtgk.adb: Likewise.
+ * libgnat/a-crbtgk.ads: Likewise.
+ * libgnat/a-crbtgo.adb: Likewise.
+ * libgnat/a-crbtgo.ads: Likewise.
+ * libgnat/a-crdlli.adb: Likewise.
+ * libgnat/a-crdlli.ads: Likewise.
+ * libgnat/a-csquin.ads: Likewise.
+ * libgnat/a-cuprqu.adb: Likewise.
+ * libgnat/a-cuprqu.ads: Likewise.
+ * libgnat/a-cusyqu.adb: Likewise.
+ * libgnat/a-cusyqu.ads: Likewise.
+ * libgnat/a-cwila1.ads: Likewise.
+ * libgnat/a-cwila9.ads: Likewise.
+ * libgnat/a-decima.adb: Likewise.
+ * libgnat/a-decima.ads: Likewise.
+ * libgnat/a-dhfina.adb: Likewise.
+ * libgnat/a-dhfina.ads: Likewise.
+ * libgnat/a-diocst.adb: Likewise.
+ * libgnat/a-diocst.ads: Likewise.
+ * libgnat/a-direct.adb: Likewise.
+ * libgnat/a-direct.ads: Likewise.
+ * libgnat/a-direio.adb: Likewise.
+ * libgnat/a-direio.ads: Likewise.
+ * libgnat/a-dirval.adb: Likewise.
+ * libgnat/a-dirval.ads: Likewise.
+ * libgnat/a-dirval__mingw.adb: Likewise.
+ * libgnat/a-einuoc.adb: Likewise.
+ * libgnat/a-einuoc.ads: Likewise.
+ * libgnat/a-elchha.adb: Likewise.
+ * libgnat/a-elchha.ads: Likewise.
+ * libgnat/a-elchha__vxworks-ppc-full.adb: Likewise.
+ * libgnat/a-envvar.adb: Likewise.
+ * libgnat/a-excach.adb: Likewise.
+ * libgnat/a-except.adb: Likewise.
+ * libgnat/a-except.ads: Likewise.
+ * libgnat/a-excpol.adb: Likewise.
+ * libgnat/a-excpol__abort.adb: Likewise.
+ * libgnat/a-exctra.adb: Likewise.
+ * libgnat/a-exctra.ads: Likewise.
+ * libgnat/a-exexda.adb: Likewise.
+ * libgnat/a-exexpr.adb: Likewise.
+ * libgnat/a-exextr.adb: Likewise.
+ * libgnat/a-exstat.adb: Likewise.
+ * libgnat/a-finali.adb: Likewise.
+ * libgnat/a-finali.ads: Likewise.
+ * libgnat/a-locale.adb: Likewise.
+ * libgnat/a-locale.ads: Likewise.
+ * libgnat/a-nbnbin.adb: Likewise.
+ * libgnat/a-nbnbin__gmp.adb: Likewise.
+ * libgnat/a-nbnbre.adb: Likewise.
+ * libgnat/a-ngcefu.adb: Likewise.
+ * libgnat/a-ngcoar.adb: Likewise.
+ * libgnat/a-ngcoty.adb: Likewise.
+ * libgnat/a-ngcoty.ads: Likewise.
+ * libgnat/a-ngelfu.adb: Likewise.
+ * libgnat/a-ngelfu.ads: Likewise.
+ * libgnat/a-ngrear.adb: Likewise.
+ * libgnat/a-ngrear.ads: Likewise.
+ * libgnat/a-nudira.adb: Likewise.
+ * libgnat/a-nudira.ads: Likewise.
+ * libgnat/a-nuflra.adb: Likewise.
+ * libgnat/a-nuflra.ads: Likewise.
+ * libgnat/a-numaux.ads: Likewise.
+ * libgnat/a-numaux__darwin.adb: Likewise.
+ * libgnat/a-numaux__darwin.ads: Likewise.
+ * libgnat/a-numaux__libc-x86.ads: Likewise.
+ * libgnat/a-numaux__vxworks.ads: Likewise.
+ * libgnat/a-numaux__x86.adb: Likewise.
+ * libgnat/a-numaux__x86.ads: Likewise.
+ * libgnat/a-rbtgbk.adb: Likewise.
+ * libgnat/a-rbtgbk.ads: Likewise.
+ * libgnat/a-rbtgbo.adb: Likewise.
+ * libgnat/a-rbtgbo.ads: Likewise.
+ * libgnat/a-rbtgso.adb: Likewise.
+ * libgnat/a-rbtgso.ads: Likewise.
+ * libgnat/a-sbecin.adb: Likewise.
+ * libgnat/a-sbecin.ads: Likewise.
+ * libgnat/a-sbhcin.adb: Likewise.
+ * libgnat/a-sbhcin.ads: Likewise.
+ * libgnat/a-sblcin.adb: Likewise.
+ * libgnat/a-sblcin.ads: Likewise.
+ * libgnat/a-secain.adb: Likewise.
+ * libgnat/a-secain.ads: Likewise.
+ * libgnat/a-sequio.adb: Likewise.
+ * libgnat/a-sequio.ads: Likewise.
+ * libgnat/a-sfecin.ads: Likewise.
+ * libgnat/a-sfhcin.ads: Likewise.
+ * libgnat/a-sflcin.ads: Likewise.
+ * libgnat/a-shcain.adb: Likewise.
+ * libgnat/a-shcain.ads: Likewise.
+ * libgnat/a-siocst.adb: Likewise.
+ * libgnat/a-siocst.ads: Likewise.
+ * libgnat/a-slcain.adb: Likewise.
+ * libgnat/a-slcain.ads: Likewise.
+ * libgnat/a-ssicst.adb: Likewise.
+ * libgnat/a-ssicst.ads: Likewise.
+ * libgnat/a-stboha.adb: Likewise.
+ * libgnat/a-stmaco.ads: Likewise.
+ * libgnat/a-storio.adb: Likewise.
+ * libgnat/a-strbou.adb: Likewise.
+ * libgnat/a-strbou.ads: Likewise.
+ * libgnat/a-stream.adb: Likewise.
+ * libgnat/a-stream.ads: Likewise.
+ * libgnat/a-strfix.adb: Likewise.
+ * libgnat/a-strhas.adb: Likewise.
+ * libgnat/a-strmap.adb: Likewise.
+ * libgnat/a-strmap.ads: Likewise.
+ * libgnat/a-strsea.adb: Likewise.
+ * libgnat/a-strsea.ads: Likewise.
+ * libgnat/a-strsup.adb: Likewise.
+ * libgnat/a-strsup.ads: Likewise.
+ * libgnat/a-strunb.adb: Likewise.
+ * libgnat/a-strunb.ads: Likewise.
+ * libgnat/a-strunb__shared.adb: Likewise.
+ * libgnat/a-strunb__shared.ads: Likewise.
+ * libgnat/a-ststio.adb: Likewise.
+ * libgnat/a-ststio.ads: Likewise.
+ * libgnat/a-stunau.adb: Likewise.
+ * libgnat/a-stunau.ads: Likewise.
+ * libgnat/a-stunau__shared.adb: Likewise.
+ * libgnat/a-stunha.adb: Likewise.
+ * libgnat/a-stuten.adb: Likewise.
+ * libgnat/a-stwibo.adb: Likewise.
+ * libgnat/a-stwibo.ads: Likewise.
+ * libgnat/a-stwifi.adb: Likewise.
+ * libgnat/a-stwiha.adb: Likewise.
+ * libgnat/a-stwima.adb: Likewise.
+ * libgnat/a-stwima.ads: Likewise.
+ * libgnat/a-stwise.adb: Likewise.
+ * libgnat/a-stwise.ads: Likewise.
+ * libgnat/a-stwisu.adb: Likewise.
+ * libgnat/a-stwisu.ads: Likewise.
+ * libgnat/a-stwiun.adb: Likewise.
+ * libgnat/a-stwiun.ads: Likewise.
+ * libgnat/a-stwiun__shared.adb: Likewise.
+ * libgnat/a-stwiun__shared.ads: Likewise.
+ * libgnat/a-stzbou.adb: Likewise.
+ * libgnat/a-stzbou.ads: Likewise.
+ * libgnat/a-stzfix.adb: Likewise.
+ * libgnat/a-stzhas.adb: Likewise.
+ * libgnat/a-stzmap.adb: Likewise.
+ * libgnat/a-stzmap.ads: Likewise.
+ * libgnat/a-stzsea.adb: Likewise.
+ * libgnat/a-stzsea.ads: Likewise.
+ * libgnat/a-stzsup.adb: Likewise.
+ * libgnat/a-stzsup.ads: Likewise.
+ * libgnat/a-stzunb.adb: Likewise.
+ * libgnat/a-stzunb.ads: Likewise.
+ * libgnat/a-stzunb__shared.adb: Likewise.
+ * libgnat/a-stzunb__shared.ads: Likewise.
+ * libgnat/a-suecin.adb: Likewise.
+ * libgnat/a-suecin.ads: Likewise.
+ * libgnat/a-suenco.adb: Likewise.
+ * libgnat/a-suenst.adb: Likewise.
+ * libgnat/a-suewst.adb: Likewise.
+ * libgnat/a-suezst.adb: Likewise.
+ * libgnat/a-suhcin.adb: Likewise.
+ * libgnat/a-suhcin.ads: Likewise.
+ * libgnat/a-sulcin.adb: Likewise.
+ * libgnat/a-sulcin.ads: Likewise.
+ * libgnat/a-suteio.adb: Likewise.
+ * libgnat/a-suteio.ads: Likewise.
+ * libgnat/a-suteio__shared.adb: Likewise.
+ * libgnat/a-swbwha.adb: Likewise.
+ * libgnat/a-swmwco.ads: Likewise.
+ * libgnat/a-swunau.adb: Likewise.
+ * libgnat/a-swunau.ads: Likewise.
+ * libgnat/a-swunau__shared.adb: Likewise.
+ * libgnat/a-swuwha.adb: Likewise.
+ * libgnat/a-swuwti.adb: Likewise.
+ * libgnat/a-swuwti.ads: Likewise.
+ * libgnat/a-swuwti__shared.adb: Likewise.
+ * libgnat/a-szbzha.adb: Likewise.
+ * libgnat/a-szmzco.ads: Likewise.
+ * libgnat/a-szunau.adb: Likewise.
+ * libgnat/a-szunau.ads: Likewise.
+ * libgnat/a-szunau__shared.adb: Likewise.
+ * libgnat/a-szuzha.adb: Likewise.
+ * libgnat/a-szuzti.adb: Likewise.
+ * libgnat/a-szuzti.ads: Likewise.
+ * libgnat/a-szuzti__shared.adb: Likewise.
+ * libgnat/a-tags.adb: Likewise.
+ * libgnat/a-tags.ads: Likewise.
+ * libgnat/a-teioed.adb: Likewise.
+ * libgnat/a-teioed.ads: Likewise.
+ * libgnat/a-textio.adb: Likewise.
+ * libgnat/a-textio.ads: Likewise.
+ * libgnat/a-tiboio.adb: Likewise.
+ * libgnat/a-ticoau.adb: Likewise.
+ * libgnat/a-ticoau.ads: Likewise.
+ * libgnat/a-ticoio.adb: Likewise.
+ * libgnat/a-ticoio.ads: Likewise.
+ * libgnat/a-tideau.adb: Likewise.
+ * libgnat/a-tideau.ads: Likewise.
+ * libgnat/a-tideio.adb: Likewise.
+ * libgnat/a-tideio.ads: Likewise.
+ * libgnat/a-tienau.adb: Likewise.
+ * libgnat/a-tienau.ads: Likewise.
+ * libgnat/a-tienio.adb: Likewise.
+ * libgnat/a-tifiio.adb: Likewise.
+ * libgnat/a-tiflau.adb: Likewise.
+ * libgnat/a-tiflau.ads: Likewise.
+ * libgnat/a-tiflio.adb: Likewise.
+ * libgnat/a-tiflio.ads: Likewise.
+ * libgnat/a-tigeau.adb: Likewise.
+ * libgnat/a-tigeau.ads: Likewise.
+ * libgnat/a-tigeli.adb: Likewise.
+ * libgnat/a-tiinau.adb: Likewise.
+ * libgnat/a-tiinau.ads: Likewise.
+ * libgnat/a-tiinio.adb: Likewise.
+ * libgnat/a-tiinio.ads: Likewise.
+ * libgnat/a-timoau.adb: Likewise.
+ * libgnat/a-timoau.ads: Likewise.
+ * libgnat/a-timoio.adb: Likewise.
+ * libgnat/a-timoio.ads: Likewise.
+ * libgnat/a-tiocst.adb: Likewise.
+ * libgnat/a-tiocst.ads: Likewise.
+ * libgnat/a-tirsfi.adb: Likewise.
+ * libgnat/a-tirsfi.ads: Likewise.
+ * libgnat/a-titest.adb: Likewise.
+ * libgnat/a-undesu.adb: Likewise.
+ * libgnat/a-wichha.adb: Likewise.
+ * libgnat/a-wichun.adb: Likewise.
+ * libgnat/a-wichun.ads: Likewise.
+ * libgnat/a-witeio.adb: Likewise.
+ * libgnat/a-witeio.ads: Likewise.
+ * libgnat/a-wrstfi.adb: Likewise.
+ * libgnat/a-wrstfi.ads: Likewise.
+ * libgnat/a-wtcoau.adb: Likewise.
+ * libgnat/a-wtcoau.ads: Likewise.
+ * libgnat/a-wtcoio.adb: Likewise.
+ * libgnat/a-wtcstr.adb: Likewise.
+ * libgnat/a-wtcstr.ads: Likewise.
+ * libgnat/a-wtdeau.adb: Likewise.
+ * libgnat/a-wtdeau.ads: Likewise.
+ * libgnat/a-wtdeio.adb: Likewise.
+ * libgnat/a-wtedit.adb: Likewise.
+ * libgnat/a-wtedit.ads: Likewise.
+ * libgnat/a-wtenau.adb: Likewise.
+ * libgnat/a-wtenau.ads: Likewise.
+ * libgnat/a-wtenio.adb: Likewise.
+ * libgnat/a-wtfiio.adb: Likewise.
+ * libgnat/a-wtflau.adb: Likewise.
+ * libgnat/a-wtflau.ads: Likewise.
+ * libgnat/a-wtflio.adb: Likewise.
+ * libgnat/a-wtgeau.adb: Likewise.
+ * libgnat/a-wtgeau.ads: Likewise.
+ * libgnat/a-wtinau.adb: Likewise.
+ * libgnat/a-wtinau.ads: Likewise.
+ * libgnat/a-wtinio.adb: Likewise.
+ * libgnat/a-wtmoau.adb: Likewise.
+ * libgnat/a-wtmoau.ads: Likewise.
+ * libgnat/a-wtmoio.adb: Likewise.
+ * libgnat/a-wtmoio.ads: Likewise.
+ * libgnat/a-wttest.adb: Likewise.
+ * libgnat/a-wwboio.adb: Likewise.
+ * libgnat/a-zchhan.adb: Likewise.
+ * libgnat/a-zchuni.adb: Likewise.
+ * libgnat/a-zchuni.ads: Likewise.
+ * libgnat/a-zrstfi.adb: Likewise.
+ * libgnat/a-zrstfi.ads: Likewise.
+ * libgnat/a-ztcoau.adb: Likewise.
+ * libgnat/a-ztcoio.adb: Likewise.
+ * libgnat/a-ztcstr.adb: Likewise.
+ * libgnat/a-ztcstr.ads: Likewise.
+ * libgnat/a-ztdeau.adb: Likewise.
+ * libgnat/a-ztdeau.ads: Likewise.
+ * libgnat/a-ztdeio.adb: Likewise.
+ * libgnat/a-ztedit.adb: Likewise.
+ * libgnat/a-ztedit.ads: Likewise.
+ * libgnat/a-ztenau.adb: Likewise.
+ * libgnat/a-ztenau.ads: Likewise.
+ * libgnat/a-ztenio.adb: Likewise.
+ * libgnat/a-ztexio.adb: Likewise.
+ * libgnat/a-ztexio.ads: Likewise.
+ * libgnat/a-ztfiio.adb: Likewise.
+ * libgnat/a-ztflau.adb: Likewise.
+ * libgnat/a-ztflau.ads: Likewise.
+ * libgnat/a-ztflio.adb: Likewise.
+ * libgnat/a-ztgeau.adb: Likewise.
+ * libgnat/a-ztgeau.ads: Likewise.
+ * libgnat/a-ztinau.adb: Likewise.
+ * libgnat/a-ztinau.ads: Likewise.
+ * libgnat/a-ztinio.adb: Likewise.
+ * libgnat/a-ztmoau.adb: Likewise.
+ * libgnat/a-ztmoau.ads: Likewise.
+ * libgnat/a-ztmoio.adb: Likewise.
+ * libgnat/a-zttest.adb: Likewise.
+ * libgnat/a-zzboio.adb: Likewise.
+ * libgnat/g-allein.ads: Likewise.
+ * libgnat/g-alleve.adb: Likewise.
+ * libgnat/g-alleve.ads: Likewise.
+ * libgnat/g-alleve__hard.adb: Likewise.
+ * libgnat/g-alleve__hard.ads: Likewise.
+ * libgnat/g-altcon.adb: Likewise.
+ * libgnat/g-altcon.ads: Likewise.
+ * libgnat/g-altive.ads: Likewise.
+ * libgnat/g-alveop.adb: Likewise.
+ * libgnat/g-alveop.ads: Likewise.
+ * libgnat/g-alvety.ads: Likewise.
+ * libgnat/g-alvevi.ads: Likewise.
+ * libgnat/g-arrspl.adb: Likewise.
+ * libgnat/g-arrspl.ads: Likewise.
+ * libgnat/g-awk.adb: Likewise.
+ * libgnat/g-awk.ads: Likewise.
+ * libgnat/g-binenv.adb: Likewise.
+ * libgnat/g-binenv.ads: Likewise.
+ * libgnat/g-brapre.ads: Likewise.
+ * libgnat/g-bubsor.adb: Likewise.
+ * libgnat/g-bubsor.ads: Likewise.
+ * libgnat/g-busora.adb: Likewise.
+ * libgnat/g-busora.ads: Likewise.
+ * libgnat/g-busorg.adb: Likewise.
+ * libgnat/g-busorg.ads: Likewise.
+ * libgnat/g-byorma.adb: Likewise.
+ * libgnat/g-byorma.ads: Likewise.
+ * libgnat/g-bytswa.adb: Likewise.
+ * libgnat/g-bytswa.ads: Likewise.
+ * libgnat/g-calend.adb: Likewise.
+ * libgnat/g-calend.ads: Likewise.
+ * libgnat/g-casuti.adb: Likewise.
+ * libgnat/g-casuti.ads: Likewise.
+ * libgnat/g-catiio.adb: Likewise.
+ * libgnat/g-catiio.ads: Likewise.
+ * libgnat/g-cgi.adb: Likewise.
+ * libgnat/g-cgi.ads: Likewise.
+ * libgnat/g-cgicoo.adb: Likewise.
+ * libgnat/g-cgicoo.ads: Likewise.
+ * libgnat/g-cgideb.adb: Likewise.
+ * libgnat/g-cgideb.ads: Likewise.
+ * libgnat/g-comlin.adb: Likewise.
+ * libgnat/g-comlin.ads: Likewise.
+ * libgnat/g-comver.adb: Likewise.
+ * libgnat/g-comver.ads: Likewise.
+ * libgnat/g-cppexc.adb: Likewise.
+ * libgnat/g-cppexc.ads: Likewise.
+ * libgnat/g-crc32.adb: Likewise.
+ * libgnat/g-crc32.ads: Likewise.
+ * libgnat/g-ctrl_c.adb: Likewise.
+ * libgnat/g-ctrl_c.ads: Likewise.
+ * libgnat/g-curexc.ads: Likewise.
+ * libgnat/g-debpoo.adb: Likewise.
+ * libgnat/g-debpoo.ads: Likewise.
+ * libgnat/g-debuti.adb: Likewise.
+ * libgnat/g-debuti.ads: Likewise.
+ * libgnat/g-decstr.adb: Likewise.
+ * libgnat/g-decstr.ads: Likewise.
+ * libgnat/g-deutst.ads: Likewise.
+ * libgnat/g-diopit.adb: Likewise.
+ * libgnat/g-diopit.ads: Likewise.
+ * libgnat/g-dirope.adb: Likewise.
+ * libgnat/g-dirope.ads: Likewise.
+ * libgnat/g-dynhta.adb: Likewise.
+ * libgnat/g-dynhta.ads: Likewise.
+ * libgnat/g-dyntab.adb: Likewise.
+ * libgnat/g-dyntab.ads: Likewise.
+ * libgnat/g-eacodu.adb: Likewise.
+ * libgnat/g-encstr.adb: Likewise.
+ * libgnat/g-encstr.ads: Likewise.
+ * libgnat/g-enutst.ads: Likewise.
+ * libgnat/g-excact.adb: Likewise.
+ * libgnat/g-excact.ads: Likewise.
+ * libgnat/g-except.ads: Likewise.
+ * libgnat/g-exctra.adb: Likewise.
+ * libgnat/g-exctra.ads: Likewise.
+ * libgnat/g-expect.adb: Likewise.
+ * libgnat/g-expect.ads: Likewise.
+ * libgnat/g-exptty.adb: Likewise.
+ * libgnat/g-exptty.ads: Likewise.
+ * libgnat/g-flocon.ads: Likewise.
+ * libgnat/g-forstr.adb: Likewise.
+ * libgnat/g-forstr.ads: Likewise.
+ * libgnat/g-graphs.adb: Likewise.
+ * libgnat/g-graphs.ads: Likewise.
+ * libgnat/g-heasor.adb: Likewise.
+ * libgnat/g-heasor.ads: Likewise.
+ * libgnat/g-hesora.adb: Likewise.
+ * libgnat/g-hesora.ads: Likewise.
+ * libgnat/g-hesorg.adb: Likewise.
+ * libgnat/g-hesorg.ads: Likewise.
+ * libgnat/g-htable.adb: Likewise.
+ * libgnat/g-htable.ads: Likewise.
+ * libgnat/g-io-put__vxworks.adb: Likewise.
+ * libgnat/g-io.adb: Likewise.
+ * libgnat/g-io.ads: Likewise.
+ * libgnat/g-io_aux.adb: Likewise.
+ * libgnat/g-io_aux.ads: Likewise.
+ * libgnat/g-lists.adb: Likewise.
+ * libgnat/g-lists.ads: Likewise.
+ * libgnat/g-locfil.adb: Likewise.
+ * libgnat/g-locfil.ads: Likewise.
+ * libgnat/g-mbdira.adb: Likewise.
+ * libgnat/g-mbdira.ads: Likewise.
+ * libgnat/g-mbflra.adb: Likewise.
+ * libgnat/g-mbflra.ads: Likewise.
+ * libgnat/g-md5.adb: Likewise.
+ * libgnat/g-md5.ads: Likewise.
+ * libgnat/g-memdum.adb: Likewise.
+ * libgnat/g-memdum.ads: Likewise.
+ * libgnat/g-moreex.adb: Likewise.
+ * libgnat/g-moreex.ads: Likewise.
+ * libgnat/g-os_lib.adb: Likewise.
+ * libgnat/g-os_lib.ads: Likewise.
+ * libgnat/g-pehage.adb: Likewise.
+ * libgnat/g-pehage.ads: Likewise.
+ * libgnat/g-rannum.adb: Likewise.
+ * libgnat/g-rannum.ads: Likewise.
+ * libgnat/g-regexp.adb: Likewise.
+ * libgnat/g-regexp.ads: Likewise.
+ * libgnat/g-regist.adb: Likewise.
+ * libgnat/g-regist.ads: Likewise.
+ * libgnat/g-regpat.adb: Likewise.
+ * libgnat/g-regpat.ads: Likewise.
+ * libgnat/g-rewdat.adb: Likewise.
+ * libgnat/g-rewdat.ads: Likewise.
+ * libgnat/g-sechas.adb: Likewise.
+ * libgnat/g-sechas.ads: Likewise.
+ * libgnat/g-sehamd.adb: Likewise.
+ * libgnat/g-sehamd.ads: Likewise.
+ * libgnat/g-sehash.adb: Likewise.
+ * libgnat/g-sehash.ads: Likewise.
+ * libgnat/g-sercom.adb: Likewise.
+ * libgnat/g-sercom.ads: Likewise.
+ * libgnat/g-sercom__linux.adb: Likewise.
+ * libgnat/g-sercom__mingw.adb: Likewise.
+ * libgnat/g-sestin.ads: Likewise.
+ * libgnat/g-sets.adb: Likewise.
+ * libgnat/g-sets.ads: Likewise.
+ * libgnat/g-sha1.adb: Likewise.
+ * libgnat/g-sha1.ads: Likewise.
+ * libgnat/g-sha224.ads: Likewise.
+ * libgnat/g-sha256.ads: Likewise.
+ * libgnat/g-sha384.ads: Likewise.
+ * libgnat/g-sha512.ads: Likewise.
+ * libgnat/g-shsh32.adb: Likewise.
+ * libgnat/g-shsh32.ads: Likewise.
+ * libgnat/g-shsh64.adb: Likewise.
+ * libgnat/g-shsh64.ads: Likewise.
+ * libgnat/g-shshco.adb: Likewise.
+ * libgnat/g-shshco.ads: Likewise.
+ * libgnat/g-soccon.ads: Likewise.
+ * libgnat/g-socket.adb: Likewise.
+ * libgnat/g-socket.ads: Likewise.
+ * libgnat/g-socket__dummy.adb: Likewise.
+ * libgnat/g-socket__dummy.ads: Likewise.
+ * libgnat/g-socthi.adb: Likewise.
+ * libgnat/g-socthi.ads: Likewise.
+ * libgnat/g-socthi__dummy.adb: Likewise.
+ * libgnat/g-socthi__dummy.ads: Likewise.
+ * libgnat/g-socthi__mingw.adb: Likewise.
+ * libgnat/g-socthi__mingw.ads: Likewise.
+ * libgnat/g-socthi__vxworks.adb: Likewise.
+ * libgnat/g-socthi__vxworks.ads: Likewise.
+ * libgnat/g-soliop.ads: Likewise.
+ * libgnat/g-soliop__lynxos.ads: Likewise.
+ * libgnat/g-soliop__mingw.ads: Likewise.
+ * libgnat/g-soliop__qnx.ads: Likewise.
+ * libgnat/g-soliop__solaris.ads: Likewise.
+ * libgnat/g-sothco.adb: Likewise.
+ * libgnat/g-sothco.ads: Likewise.
+ * libgnat/g-sothco__dummy.adb: Likewise.
+ * libgnat/g-sothco__dummy.ads: Likewise.
+ * libgnat/g-souinf.ads: Likewise.
+ * libgnat/g-spchge.adb: Likewise.
+ * libgnat/g-spchge.ads: Likewise.
+ * libgnat/g-speche.adb: Likewise.
+ * libgnat/g-speche.ads: Likewise.
+ * libgnat/g-spipat.adb: Likewise.
+ * libgnat/g-spipat.ads: Likewise.
+ * libgnat/g-spitbo.adb: Likewise.
+ * libgnat/g-spitbo.ads: Likewise.
+ * libgnat/g-sptabo.ads: Likewise.
+ * libgnat/g-sptain.ads: Likewise.
+ * libgnat/g-sptavs.ads: Likewise.
+ * libgnat/g-sse.ads: Likewise.
+ * libgnat/g-ssvety.ads: Likewise.
+ * libgnat/g-sthcso.adb: Likewise.
+ * libgnat/g-stheme.adb: Likewise.
+ * libgnat/g-strhas.ads: Likewise.
+ * libgnat/g-string.adb: Likewise.
+ * libgnat/g-string.ads: Likewise.
+ * libgnat/g-strspl.ads: Likewise.
+ * libgnat/g-stseme.adb: Likewise.
+ * libgnat/g-stsifd__sockets.adb: Likewise.
+ * libgnat/g-table.adb: Likewise.
+ * libgnat/g-table.ads: Likewise.
+ * libgnat/g-tasloc.adb: Likewise.
+ * libgnat/g-tasloc.ads: Likewise.
+ * libgnat/g-timsta.adb: Likewise.
+ * libgnat/g-timsta.ads: Likewise.
+ * libgnat/g-traceb.adb: Likewise.
+ * libgnat/g-traceb.ads: Likewise.
+ * libgnat/g-trasym.adb: Likewise.
+ * libgnat/g-trasym.ads: Likewise.
+ * libgnat/g-tty.adb: Likewise.
+ * libgnat/g-tty.ads: Likewise.
+ * libgnat/g-u3spch.adb: Likewise.
+ * libgnat/g-u3spch.ads: Likewise.
+ * libgnat/g-utf_32.adb: Likewise.
+ * libgnat/g-utf_32.ads: Likewise.
+ * libgnat/g-wispch.adb: Likewise.
+ * libgnat/g-wispch.ads: Likewise.
+ * libgnat/g-wistsp.ads: Likewise.
+ * libgnat/g-zspche.adb: Likewise.
+ * libgnat/g-zspche.ads: Likewise.
+ * libgnat/g-zstspl.ads: Likewise.
+ * libgnat/gnat.ads: Likewise.
+ * libgnat/i-c.adb: Likewise.
+ * libgnat/i-cexten.ads: Likewise.
+ * libgnat/i-cobol.adb: Likewise.
+ * libgnat/i-cobol.ads: Likewise.
+ * libgnat/i-cpoint.adb: Likewise.
+ * libgnat/i-cpoint.ads: Likewise.
+ * libgnat/i-cstrea.adb: Likewise.
+ * libgnat/i-cstrea.ads: Likewise.
+ * libgnat/i-cstrin.adb: Likewise.
+ * libgnat/i-cstrin.ads: Likewise.
+ * libgnat/i-fortra.adb: Likewise.
+ * libgnat/i-pacdec.adb: Likewise.
+ * libgnat/i-pacdec.ads: Likewise.
+ * libgnat/i-vxwoio.adb: Likewise.
+ * libgnat/i-vxwoio.ads: Likewise.
+ * libgnat/i-vxwork.ads: Likewise.
+ * libgnat/i-vxwork__x86.ads: Likewise.
+ * libgnat/interfac.ads: Likewise.
+ * libgnat/memtrack.adb: Likewise.
+ * libgnat/s-addima.adb: Likewise.
+ * libgnat/s-addima.ads: Likewise.
+ * libgnat/s-addope.adb: Likewise.
+ * libgnat/s-addope.ads: Likewise.
+ * libgnat/s-aotase.adb: Likewise.
+ * libgnat/s-aotase.ads: Likewise.
+ * libgnat/s-arit64.adb: Likewise.
+ * libgnat/s-arit64.ads: Likewise.
+ * libgnat/s-assert.adb: Likewise.
+ * libgnat/s-assert.ads: Likewise.
+ * libgnat/s-atacco.adb: Likewise.
+ * libgnat/s-atacco.ads: Likewise.
+ * libgnat/s-atocou.adb: Likewise.
+ * libgnat/s-atocou.ads: Likewise.
+ * libgnat/s-atocou__builtin.adb: Likewise.
+ * libgnat/s-atocou__x86.adb: Likewise.
+ * libgnat/s-atoope.ads: Likewise.
+ * libgnat/s-atopar.adb: Likewise.
+ * libgnat/s-atopar.ads: Likewise.
+ * libgnat/s-atopex.adb: Likewise.
+ * libgnat/s-atopex.ads: Likewise.
+ * libgnat/s-atopri.adb: Likewise.
+ * libgnat/s-atopri.ads: Likewise.
+ * libgnat/s-auxdec.adb: Likewise.
+ * libgnat/s-auxdec.ads: Likewise.
+ * libgnat/s-bignum.adb: Likewise.
+ * libgnat/s-bignum.ads: Likewise.
+ * libgnat/s-bitfie.ads: Likewise.
+ * libgnat/s-bitops.adb: Likewise.
+ * libgnat/s-bitops.ads: Likewise.
+ * libgnat/s-bituti.adb: Likewise.
+ * libgnat/s-bituti.ads: Likewise.
+ * libgnat/s-boarop.ads: Likewise.
+ * libgnat/s-boustr.adb: Likewise.
+ * libgnat/s-boustr.ads: Likewise.
+ * libgnat/s-bytswa.ads: Likewise.
+ * libgnat/s-carsi8.adb: Likewise.
+ * libgnat/s-carsi8.ads: Likewise.
+ * libgnat/s-carun8.adb: Likewise.
+ * libgnat/s-carun8.ads: Likewise.
+ * libgnat/s-casi16.adb: Likewise.
+ * libgnat/s-casi16.ads: Likewise.
+ * libgnat/s-casi32.adb: Likewise.
+ * libgnat/s-casi32.ads: Likewise.
+ * libgnat/s-casi64.adb: Likewise.
+ * libgnat/s-casi64.ads: Likewise.
+ * libgnat/s-casuti.adb: Likewise.
+ * libgnat/s-casuti.ads: Likewise.
+ * libgnat/s-caun16.adb: Likewise.
+ * libgnat/s-caun16.ads: Likewise.
+ * libgnat/s-caun32.adb: Likewise.
+ * libgnat/s-caun32.ads: Likewise.
+ * libgnat/s-caun64.adb: Likewise.
+ * libgnat/s-caun64.ads: Likewise.
+ * libgnat/s-chepoo.ads: Likewise.
+ * libgnat/s-commun.adb: Likewise.
+ * libgnat/s-commun.ads: Likewise.
+ * libgnat/s-conca2.adb: Likewise.
+ * libgnat/s-conca2.ads: Likewise.
+ * libgnat/s-conca3.adb: Likewise.
+ * libgnat/s-conca3.ads: Likewise.
+ * libgnat/s-conca4.adb: Likewise.
+ * libgnat/s-conca4.ads: Likewise.
+ * libgnat/s-conca5.adb: Likewise.
+ * libgnat/s-conca5.ads: Likewise.
+ * libgnat/s-conca6.adb: Likewise.
+ * libgnat/s-conca6.ads: Likewise.
+ * libgnat/s-conca7.adb: Likewise.
+ * libgnat/s-conca7.ads: Likewise.
+ * libgnat/s-conca8.adb: Likewise.
+ * libgnat/s-conca8.ads: Likewise.
+ * libgnat/s-conca9.adb: Likewise.
+ * libgnat/s-conca9.ads: Likewise.
+ * libgnat/s-crc32.adb: Likewise.
+ * libgnat/s-crc32.ads: Likewise.
+ * libgnat/s-crtl.ads: Likewise.
+ * libgnat/s-dfmkio.ads: Likewise.
+ * libgnat/s-dfmopr.ads: Likewise.
+ * libgnat/s-dgmgop.ads: Likewise.
+ * libgnat/s-diflio.adb: Likewise.
+ * libgnat/s-diflio.ads: Likewise.
+ * libgnat/s-diflmk.ads: Likewise.
+ * libgnat/s-digemk.ads: Likewise.
+ * libgnat/s-diinio.adb: Likewise.
+ * libgnat/s-diinio.ads: Likewise.
+ * libgnat/s-dilomk.ads: Likewise.
+ * libgnat/s-dim.ads: Likewise.
+ * libgnat/s-dimkio.ads: Likewise.
+ * libgnat/s-dimmks.ads: Likewise.
+ * libgnat/s-direio.adb: Likewise.
+ * libgnat/s-direio.ads: Likewise.
+ * libgnat/s-dlmkio.ads: Likewise.
+ * libgnat/s-dlmopr.ads: Likewise.
+ * libgnat/s-dmotpr.ads: Likewise.
+ * libgnat/s-dsaser.ads: Likewise.
+ * libgnat/s-dwalin.adb: Likewise.
+ * libgnat/s-dwalin.ads: Likewise.
+ * libgnat/s-elaall.adb: Likewise.
+ * libgnat/s-elaall.ads: Likewise.
+ * libgnat/s-excdeb.adb: Likewise.
+ * libgnat/s-excdeb.ads: Likewise.
+ * libgnat/s-except.adb: Likewise.
+ * libgnat/s-except.ads: Likewise.
+ * libgnat/s-excmac__arm.adb: Likewise.
+ * libgnat/s-excmac__arm.ads: Likewise.
+ * libgnat/s-excmac__gcc.adb: Likewise.
+ * libgnat/s-excmac__gcc.ads: Likewise.
+ * libgnat/s-exctab.adb: Likewise.
+ * libgnat/s-exctab.ads: Likewise.
+ * libgnat/s-exctra.adb: Likewise.
+ * libgnat/s-exctra.ads: Likewise.
+ * libgnat/s-exnint.adb: Likewise.
+ * libgnat/s-exnint.ads: Likewise.
+ * libgnat/s-exnllf.adb: Likewise.
+ * libgnat/s-exnllf.ads: Likewise.
+ * libgnat/s-exnlli.adb: Likewise.
+ * libgnat/s-exnlli.ads: Likewise.
+ * libgnat/s-expint.adb: Likewise.
+ * libgnat/s-expint.ads: Likewise.
+ * libgnat/s-explli.adb: Likewise.
+ * libgnat/s-explli.ads: Likewise.
+ * libgnat/s-expllu.adb: Likewise.
+ * libgnat/s-expllu.ads: Likewise.
+ * libgnat/s-expmod.adb: Likewise.
+ * libgnat/s-expmod.ads: Likewise.
+ * libgnat/s-expuns.adb: Likewise.
+ * libgnat/s-expuns.ads: Likewise.
+ * libgnat/s-fatflt.ads: Likewise.
+ * libgnat/s-fatgen.adb: Likewise.
+ * libgnat/s-fatgen.ads: Likewise.
+ * libgnat/s-fatlfl.ads: Likewise.
+ * libgnat/s-fatllf.ads: Likewise.
+ * libgnat/s-fatsfl.ads: Likewise.
+ * libgnat/s-ficobl.ads: Likewise.
+ * libgnat/s-filatt.ads: Likewise.
+ * libgnat/s-fileio.adb: Likewise.
+ * libgnat/s-fileio.ads: Likewise.
+ * libgnat/s-finmas.adb: Likewise.
+ * libgnat/s-finmas.ads: Likewise.
+ * libgnat/s-finroo.adb: Likewise.
+ * libgnat/s-finroo.ads: Likewise.
+ * libgnat/s-flocon.adb: Likewise.
+ * libgnat/s-flocon.ads: Likewise.
+ * libgnat/s-flocon__none.adb: Likewise.
+ * libgnat/s-fore.adb: Likewise.
+ * libgnat/s-fore.ads: Likewise.
+ * libgnat/s-gearop.adb: Likewise.
+ * libgnat/s-gearop.ads: Likewise.
+ * libgnat/s-genbig.adb: Likewise.
+ * libgnat/s-genbig.ads: Likewise.
+ * libgnat/s-geveop.adb: Likewise.
+ * libgnat/s-geveop.ads: Likewise.
+ * libgnat/s-gloloc.adb: Likewise.
+ * libgnat/s-gloloc.ads: Likewise.
+ * libgnat/s-gloloc__mingw.adb: Likewise.
+ * libgnat/s-htable.adb: Likewise.
+ * libgnat/s-htable.ads: Likewise.
+ * libgnat/s-imenne.adb: Likewise.
+ * libgnat/s-imenne.ads: Likewise.
+ * libgnat/s-imgbiu.adb: Likewise.
+ * libgnat/s-imgbiu.ads: Likewise.
+ * libgnat/s-imgboo.adb: Likewise.
+ * libgnat/s-imgboo.ads: Likewise.
+ * libgnat/s-imgcha.adb: Likewise.
+ * libgnat/s-imgcha.ads: Likewise.
+ * libgnat/s-imgdec.adb: Likewise.
+ * libgnat/s-imgdec.ads: Likewise.
+ * libgnat/s-imgenu.adb: Likewise.
+ * libgnat/s-imgenu.ads: Likewise.
+ * libgnat/s-imgint.adb: Likewise.
+ * libgnat/s-imgint.ads: Likewise.
+ * libgnat/s-imgllb.adb: Likewise.
+ * libgnat/s-imgllb.ads: Likewise.
+ * libgnat/s-imglld.adb: Likewise.
+ * libgnat/s-imglld.ads: Likewise.
+ * libgnat/s-imglli.adb: Likewise.
+ * libgnat/s-imglli.ads: Likewise.
+ * libgnat/s-imgllu.adb: Likewise.
+ * libgnat/s-imgllu.ads: Likewise.
+ * libgnat/s-imgllw.adb: Likewise.
+ * libgnat/s-imgllw.ads: Likewise.
+ * libgnat/s-imgrea.adb: Likewise.
+ * libgnat/s-imgrea.ads: Likewise.
+ * libgnat/s-imguns.adb: Likewise.
+ * libgnat/s-imguns.ads: Likewise.
+ * libgnat/s-imgwch.adb: Likewise.
+ * libgnat/s-imgwch.ads: Likewise.
+ * libgnat/s-imgwiu.adb: Likewise.
+ * libgnat/s-imgwiu.ads: Likewise.
+ * libgnat/s-io.adb: Likewise.
+ * libgnat/s-io.ads: Likewise.
+ * libgnat/s-llflex.ads: Likewise.
+ * libgnat/s-maccod.ads: Likewise.
+ * libgnat/s-mantis.adb: Likewise.
+ * libgnat/s-mantis.ads: Likewise.
+ * libgnat/s-mastop.adb: Likewise.
+ * libgnat/s-mastop.ads: Likewise.
+ * libgnat/s-memcop.ads: Likewise.
+ * libgnat/s-memory.adb: Likewise.
+ * libgnat/s-memory.ads: Likewise.
+ * libgnat/s-mmap.adb: Likewise.
+ * libgnat/s-mmap.ads: Likewise.
+ * libgnat/s-mmauni__long.ads: Likewise.
+ * libgnat/s-mmosin__mingw.adb: Likewise.
+ * libgnat/s-mmosin__mingw.ads: Likewise.
+ * libgnat/s-mmosin__unix.adb: Likewise.
+ * libgnat/s-mmosin__unix.ads: Likewise.
+ * libgnat/s-multip.adb: Likewise.
+ * libgnat/s-objrea.adb: Likewise.
+ * libgnat/s-objrea.ads: Likewise.
+ * libgnat/s-optide.adb: Likewise.
+ * libgnat/s-os_lib.adb: Likewise.
+ * libgnat/s-os_lib.ads: Likewise.
+ * libgnat/s-osprim.ads: Likewise.
+ * libgnat/s-osprim__darwin.adb: Likewise.
+ * libgnat/s-osprim__lynxos.ads: Likewise.
+ * libgnat/s-osprim__mingw.adb: Likewise.
+ * libgnat/s-osprim__posix.adb: Likewise.
+ * libgnat/s-osprim__posix2008.adb: Likewise.
+ * libgnat/s-osprim__rtems.adb: Likewise.
+ * libgnat/s-osprim__solaris.adb: Likewise.
+ * libgnat/s-osprim__unix.adb: Likewise.
+ * libgnat/s-osprim__vxworks.adb: Likewise.
+ * libgnat/s-osprim__x32.adb: Likewise.
+ * libgnat/s-osvers__vxworks-653.ads: Likewise.
+ * libgnat/s-pack03.adb: Likewise.
+ * libgnat/s-pack03.ads: Likewise.
+ * libgnat/s-pack05.adb: Likewise.
+ * libgnat/s-pack05.ads: Likewise.
+ * libgnat/s-pack06.adb: Likewise.
+ * libgnat/s-pack06.ads: Likewise.
+ * libgnat/s-pack07.adb: Likewise.
+ * libgnat/s-pack07.ads: Likewise.
+ * libgnat/s-pack09.adb: Likewise.
+ * libgnat/s-pack09.ads: Likewise.
+ * libgnat/s-pack10.adb: Likewise.
+ * libgnat/s-pack10.ads: Likewise.
+ * libgnat/s-pack11.adb: Likewise.
+ * libgnat/s-pack11.ads: Likewise.
+ * libgnat/s-pack12.adb: Likewise.
+ * libgnat/s-pack12.ads: Likewise.
+ * libgnat/s-pack13.adb: Likewise.
+ * libgnat/s-pack13.ads: Likewise.
+ * libgnat/s-pack14.adb: Likewise.
+ * libgnat/s-pack14.ads: Likewise.
+ * libgnat/s-pack15.adb: Likewise.
+ * libgnat/s-pack15.ads: Likewise.
+ * libgnat/s-pack17.adb: Likewise.
+ * libgnat/s-pack17.ads: Likewise.
+ * libgnat/s-pack18.adb: Likewise.
+ * libgnat/s-pack18.ads: Likewise.
+ * libgnat/s-pack19.adb: Likewise.
+ * libgnat/s-pack19.ads: Likewise.
+ * libgnat/s-pack20.adb: Likewise.
+ * libgnat/s-pack20.ads: Likewise.
+ * libgnat/s-pack21.adb: Likewise.
+ * libgnat/s-pack21.ads: Likewise.
+ * libgnat/s-pack22.adb: Likewise.
+ * libgnat/s-pack22.ads: Likewise.
+ * libgnat/s-pack23.adb: Likewise.
+ * libgnat/s-pack23.ads: Likewise.
+ * libgnat/s-pack24.adb: Likewise.
+ * libgnat/s-pack24.ads: Likewise.
+ * libgnat/s-pack25.adb: Likewise.
+ * libgnat/s-pack25.ads: Likewise.
+ * libgnat/s-pack26.adb: Likewise.
+ * libgnat/s-pack26.ads: Likewise.
+ * libgnat/s-pack27.adb: Likewise.
+ * libgnat/s-pack27.ads: Likewise.
+ * libgnat/s-pack28.adb: Likewise.
+ * libgnat/s-pack28.ads: Likewise.
+ * libgnat/s-pack29.adb: Likewise.
+ * libgnat/s-pack29.ads: Likewise.
+ * libgnat/s-pack30.adb: Likewise.
+ * libgnat/s-pack30.ads: Likewise.
+ * libgnat/s-pack31.adb: Likewise.
+ * libgnat/s-pack31.ads: Likewise.
+ * libgnat/s-pack33.adb: Likewise.
+ * libgnat/s-pack33.ads: Likewise.
+ * libgnat/s-pack34.adb: Likewise.
+ * libgnat/s-pack34.ads: Likewise.
+ * libgnat/s-pack35.adb: Likewise.
+ * libgnat/s-pack35.ads: Likewise.
+ * libgnat/s-pack36.adb: Likewise.
+ * libgnat/s-pack36.ads: Likewise.
+ * libgnat/s-pack37.adb: Likewise.
+ * libgnat/s-pack37.ads: Likewise.
+ * libgnat/s-pack38.adb: Likewise.
+ * libgnat/s-pack38.ads: Likewise.
+ * libgnat/s-pack39.adb: Likewise.
+ * libgnat/s-pack39.ads: Likewise.
+ * libgnat/s-pack40.adb: Likewise.
+ * libgnat/s-pack40.ads: Likewise.
+ * libgnat/s-pack41.adb: Likewise.
+ * libgnat/s-pack41.ads: Likewise.
+ * libgnat/s-pack42.adb: Likewise.
+ * libgnat/s-pack42.ads: Likewise.
+ * libgnat/s-pack43.adb: Likewise.
+ * libgnat/s-pack43.ads: Likewise.
+ * libgnat/s-pack44.adb: Likewise.
+ * libgnat/s-pack44.ads: Likewise.
+ * libgnat/s-pack45.adb: Likewise.
+ * libgnat/s-pack45.ads: Likewise.
+ * libgnat/s-pack46.adb: Likewise.
+ * libgnat/s-pack46.ads: Likewise.
+ * libgnat/s-pack47.adb: Likewise.
+ * libgnat/s-pack47.ads: Likewise.
+ * libgnat/s-pack48.adb: Likewise.
+ * libgnat/s-pack48.ads: Likewise.
+ * libgnat/s-pack49.adb: Likewise.
+ * libgnat/s-pack49.ads: Likewise.
+ * libgnat/s-pack50.adb: Likewise.
+ * libgnat/s-pack50.ads: Likewise.
+ * libgnat/s-pack51.adb: Likewise.
+ * libgnat/s-pack51.ads: Likewise.
+ * libgnat/s-pack52.adb: Likewise.
+ * libgnat/s-pack52.ads: Likewise.
+ * libgnat/s-pack53.adb: Likewise.
+ * libgnat/s-pack53.ads: Likewise.
+ * libgnat/s-pack54.adb: Likewise.
+ * libgnat/s-pack54.ads: Likewise.
+ * libgnat/s-pack55.adb: Likewise.
+ * libgnat/s-pack55.ads: Likewise.
+ * libgnat/s-pack56.adb: Likewise.
+ * libgnat/s-pack56.ads: Likewise.
+ * libgnat/s-pack57.adb: Likewise.
+ * libgnat/s-pack57.ads: Likewise.
+ * libgnat/s-pack58.adb: Likewise.
+ * libgnat/s-pack58.ads: Likewise.
+ * libgnat/s-pack59.adb: Likewise.
+ * libgnat/s-pack59.ads: Likewise.
+ * libgnat/s-pack60.adb: Likewise.
+ * libgnat/s-pack60.ads: Likewise.
+ * libgnat/s-pack61.adb: Likewise.
+ * libgnat/s-pack61.ads: Likewise.
+ * libgnat/s-pack62.adb: Likewise.
+ * libgnat/s-pack62.ads: Likewise.
+ * libgnat/s-pack63.adb: Likewise.
+ * libgnat/s-pack63.ads: Likewise.
+ * libgnat/s-parame.adb: Likewise.
+ * libgnat/s-parame.ads: Likewise.
+ * libgnat/s-parame__ae653.ads: Likewise.
+ * libgnat/s-parame__hpux.ads: Likewise.
+ * libgnat/s-parame__rtems.adb: Likewise.
+ * libgnat/s-parame__vxworks.adb: Likewise.
+ * libgnat/s-parame__vxworks.ads: Likewise.
+ * libgnat/s-parint.adb: Likewise.
+ * libgnat/s-parint.ads: Likewise.
+ * libgnat/s-pooglo.adb: Likewise.
+ * libgnat/s-pooglo.ads: Likewise.
+ * libgnat/s-pooloc.adb: Likewise.
+ * libgnat/s-pooloc.ads: Likewise.
+ * libgnat/s-poosiz.adb: Likewise.
+ * libgnat/s-poosiz.ads: Likewise.
+ * libgnat/s-powtab.ads: Likewise.
+ * libgnat/s-purexc.ads: Likewise.
+ * libgnat/s-rannum.adb: Likewise.
+ * libgnat/s-rannum.ads: Likewise.
+ * libgnat/s-ransee.adb: Likewise.
+ * libgnat/s-ransee.ads: Likewise.
+ * libgnat/s-regexp.adb: Likewise.
+ * libgnat/s-regexp.ads: Likewise.
+ * libgnat/s-regpat.adb: Likewise.
+ * libgnat/s-regpat.ads: Likewise.
+ * libgnat/s-resfil.adb: Likewise.
+ * libgnat/s-resfil.ads: Likewise.
+ * libgnat/s-restri.adb: Likewise.
+ * libgnat/s-restri.ads: Likewise.
+ * libgnat/s-rident.ads: Likewise.
+ * libgnat/s-rpc.adb: Likewise.
+ * libgnat/s-rpc.ads: Likewise.
+ * libgnat/s-scaval.adb: Likewise.
+ * libgnat/s-scaval.ads: Likewise.
+ * libgnat/s-secsta.adb: Likewise.
+ * libgnat/s-secsta.ads: Likewise.
+ * libgnat/s-sequio.adb: Likewise.
+ * libgnat/s-sequio.ads: Likewise.
+ * libgnat/s-shasto.adb: Likewise.
+ * libgnat/s-shasto.ads: Likewise.
+ * libgnat/s-soflin.adb: Likewise.
+ * libgnat/s-soflin.ads: Likewise.
+ * libgnat/s-soliin.adb: Likewise.
+ * libgnat/s-soliin.ads: Likewise.
+ * libgnat/s-sopco3.adb: Likewise.
+ * libgnat/s-sopco3.ads: Likewise.
+ * libgnat/s-sopco4.adb: Likewise.
+ * libgnat/s-sopco4.ads: Likewise.
+ * libgnat/s-sopco5.adb: Likewise.
+ * libgnat/s-sopco5.ads: Likewise.
+ * libgnat/s-spsufi.adb: Likewise.
+ * libgnat/s-spsufi.ads: Likewise.
+ * libgnat/s-stache.adb: Likewise.
+ * libgnat/s-stache.ads: Likewise.
+ * libgnat/s-stalib.adb: Likewise.
+ * libgnat/s-stalib.ads: Likewise.
+ * libgnat/s-stausa.adb: Likewise.
+ * libgnat/s-stausa.ads: Likewise.
+ * libgnat/s-stchop.adb: Likewise.
+ * libgnat/s-stchop.ads: Likewise.
+ * libgnat/s-stchop__limit.ads: Likewise.
+ * libgnat/s-stchop__rtems.adb: Likewise.
+ * libgnat/s-stchop__vxworks.adb: Likewise.
+ * libgnat/s-stoele.adb: Likewise.
+ * libgnat/s-stoele.ads: Likewise.
+ * libgnat/s-stopoo.adb: Likewise.
+ * libgnat/s-stopoo.ads: Likewise.
+ * libgnat/s-stposu.adb: Likewise.
+ * libgnat/s-stposu.ads: Likewise.
+ * libgnat/s-stratt.adb: Likewise.
+ * libgnat/s-stratt.ads: Likewise.
+ * libgnat/s-stratt__xdr.adb: Likewise.
+ * libgnat/s-strcom.adb: Likewise.
+ * libgnat/s-strcom.ads: Likewise.
+ * libgnat/s-strhas.adb: Likewise.
+ * libgnat/s-strhas.ads: Likewise.
+ * libgnat/s-string.adb: Likewise.
+ * libgnat/s-string.ads: Likewise.
+ * libgnat/s-strops.adb: Likewise.
+ * libgnat/s-strops.ads: Likewise.
+ * libgnat/s-ststop.adb: Likewise.
+ * libgnat/s-ststop.ads: Likewise.
+ * libgnat/s-tasloc.adb: Likewise.
+ * libgnat/s-tasloc.ads: Likewise.
+ * libgnat/s-thread.ads: Likewise.
+ * libgnat/s-thread__ae653.adb: Likewise.
+ * libgnat/s-traceb.adb: Likewise.
+ * libgnat/s-traceb.ads: Likewise.
+ * libgnat/s-traceb__hpux.adb: Likewise.
+ * libgnat/s-traceb__mastop.adb: Likewise.
+ * libgnat/s-traent.adb: Likewise.
+ * libgnat/s-traent.ads: Likewise.
+ * libgnat/s-trasym.adb: Likewise.
+ * libgnat/s-trasym.ads: Likewise.
+ * libgnat/s-trasym__dwarf.adb: Likewise.
+ * libgnat/s-tsmona.adb: Likewise.
+ * libgnat/s-tsmona__linux.adb: Likewise.
+ * libgnat/s-tsmona__mingw.adb: Likewise.
+ * libgnat/s-unstyp.ads: Likewise.
+ * libgnat/s-utf_32.adb: Likewise.
+ * libgnat/s-utf_32.ads: Likewise.
+ * libgnat/s-valboo.adb: Likewise.
+ * libgnat/s-valboo.ads: Likewise.
+ * libgnat/s-valcha.adb: Likewise.
+ * libgnat/s-valcha.ads: Likewise.
+ * libgnat/s-valdec.adb: Likewise.
+ * libgnat/s-valdec.ads: Likewise.
+ * libgnat/s-valenu.adb: Likewise.
+ * libgnat/s-valenu.ads: Likewise.
+ * libgnat/s-valint.adb: Likewise.
+ * libgnat/s-valint.ads: Likewise.
+ * libgnat/s-vallld.adb: Likewise.
+ * libgnat/s-vallld.ads: Likewise.
+ * libgnat/s-vallli.adb: Likewise.
+ * libgnat/s-vallli.ads: Likewise.
+ * libgnat/s-valllu.adb: Likewise.
+ * libgnat/s-valllu.ads: Likewise.
+ * libgnat/s-valrea.adb: Likewise.
+ * libgnat/s-valrea.ads: Likewise.
+ * libgnat/s-valuns.adb: Likewise.
+ * libgnat/s-valuns.ads: Likewise.
+ * libgnat/s-valuti.adb: Likewise.
+ * libgnat/s-valuti.ads: Likewise.
+ * libgnat/s-valwch.adb: Likewise.
+ * libgnat/s-valwch.ads: Likewise.
+ * libgnat/s-veboop.adb: Likewise.
+ * libgnat/s-veboop.ads: Likewise.
+ * libgnat/s-vector.ads: Likewise.
+ * libgnat/s-vercon.adb: Likewise.
+ * libgnat/s-vercon.ads: Likewise.
+ * libgnat/s-wchcnv.adb: Likewise.
+ * libgnat/s-wchcnv.ads: Likewise.
+ * libgnat/s-wchcon.adb: Likewise.
+ * libgnat/s-wchcon.ads: Likewise.
+ * libgnat/s-wchjis.adb: Likewise.
+ * libgnat/s-wchjis.ads: Likewise.
+ * libgnat/s-wchstw.adb: Likewise.
+ * libgnat/s-wchstw.ads: Likewise.
+ * libgnat/s-wchwts.adb: Likewise.
+ * libgnat/s-wchwts.ads: Likewise.
+ * libgnat/s-widboo.adb: Likewise.
+ * libgnat/s-widboo.ads: Likewise.
+ * libgnat/s-widcha.adb: Likewise.
+ * libgnat/s-widcha.ads: Likewise.
+ * libgnat/s-widenu.adb: Likewise.
+ * libgnat/s-widenu.ads: Likewise.
+ * libgnat/s-widlli.adb: Likewise.
+ * libgnat/s-widlli.ads: Likewise.
+ * libgnat/s-widllu.adb: Likewise.
+ * libgnat/s-widllu.ads: Likewise.
+ * libgnat/s-widwch.adb: Likewise.
+ * libgnat/s-widwch.ads: Likewise.
+ * libgnat/s-win32.ads: Likewise.
+ * libgnat/s-winext.ads: Likewise.
+ * libgnat/s-wwdcha.adb: Likewise.
+ * libgnat/s-wwdcha.ads: Likewise.
+ * libgnat/s-wwdenu.adb: Likewise.
+ * libgnat/s-wwdenu.ads: Likewise.
+ * libgnat/s-wwdwch.adb: Likewise.
+ * libgnat/s-wwdwch.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.
+ * libgnat/system.ads: Likewise.
+ * link.c: Likewise.
+ * live.adb: Likewise.
+ * live.ads: Likewise.
+ * locales.c: Likewise.
+ * make.adb: Likewise.
+ * make.ads: Likewise.
+ * make_util.adb: Likewise.
+ * make_util.ads: Likewise.
+ * makeusg.adb: Likewise.
+ * makeusg.ads: Likewise.
+ * mdll-fil.adb: Likewise.
+ * mdll-fil.ads: Likewise.
+ * mdll-utl.adb: Likewise.
+ * mdll-utl.ads: Likewise.
+ * mdll.adb: Likewise.
+ * mdll.ads: Likewise.
+ * mingw32.h: Likewise.
+ * mkdir.c: Likewise.
+ * namet-sp.adb: Likewise.
+ * namet-sp.ads: Likewise.
+ * namet.adb: Likewise.
+ * namet.ads: Likewise.
+ * namet.h: Likewise.
+ * nlists.adb: Likewise.
+ * nlists.ads: Likewise.
+ * nlists.h: Likewise.
+ * opt.adb: Likewise.
+ * opt.ads: Likewise.
+ * osint-b.adb: Likewise.
+ * osint-b.ads: Likewise.
+ * osint-c.adb: Likewise.
+ * osint-c.ads: Likewise.
+ * osint-l.adb: Likewise.
+ * osint-l.ads: Likewise.
+ * osint-m.adb: Likewise.
+ * osint-m.ads: Likewise.
+ * osint.adb: Likewise.
+ * osint.ads: Likewise.
+ * output.adb: Likewise.
+ * output.ads: Likewise.
+ * par-ch10.adb: Likewise.
+ * par-ch11.adb: Likewise.
+ * par-ch12.adb: Likewise.
+ * par-ch13.adb: Likewise.
+ * par-ch2.adb: Likewise.
+ * par-ch3.adb: Likewise.
+ * par-ch4.adb: Likewise.
+ * par-ch5.adb: Likewise.
+ * par-ch6.adb: Likewise.
+ * par-ch7.adb: Likewise.
+ * par-ch8.adb: Likewise.
+ * par-ch9.adb: Likewise.
+ * par-endh.adb: Likewise.
+ * par-labl.adb: Likewise.
+ * par-load.adb: Likewise.
+ * par-prag.adb: Likewise.
+ * par-sync.adb: Likewise.
+ * par-tchk.adb: Likewise.
+ * par-util.adb: Likewise.
+ * par.adb: Likewise.
+ * par.ads: Likewise.
+ * par_sco.adb: Likewise.
+ * par_sco.ads: Likewise.
+ * pprint.adb: Likewise.
+ * pprint.ads: Likewise.
+ * prep.adb: Likewise.
+ * prep.ads: Likewise.
+ * prepcomp.adb: Likewise.
+ * prepcomp.ads: Likewise.
+ * put_scos.adb: Likewise.
+ * put_scos.ads: Likewise.
+ * raise-gcc.c: Likewise.
+ * raise.c: Likewise.
+ * raise.h: Likewise.
+ * repinfo-input.adb: Likewise.
+ * repinfo-input.ads: Likewise.
+ * repinfo.adb: Likewise.
+ * repinfo.ads: Likewise.
+ * repinfo.h: Likewise.
+ * restrict.adb: Likewise.
+ * restrict.ads: Likewise.
+ * rident.ads: Likewise.
+ * rtfinal.c: Likewise.
+ * rtinit.c: Likewise.
+ * rtsfind.adb: Likewise.
+ * rtsfind.ads: Likewise.
+ * runtime.h: Likewise.
+ * s-oscons-tmplt.c: Likewise.
+ * sa_messages.adb: Likewise.
+ * sa_messages.ads: Likewise.
+ * scans.adb: Likewise.
+ * scans.ads: Likewise.
+ * scil_ll.adb: Likewise.
+ * scil_ll.ads: Likewise.
+ * scn.adb: Likewise.
+ * scn.ads: Likewise.
+ * scng.adb: Likewise.
+ * scng.ads: Likewise.
+ * scos.adb: Likewise.
+ * scos.ads: Likewise.
+ * scos.h: Likewise.
+ * sdefault.ads: Likewise.
+ * seh_init.c: Likewise.
+ * sem.adb: Likewise.
+ * sem.ads: Likewise.
+ * sem_aggr.adb: Likewise.
+ * sem_aggr.ads: Likewise.
+ * sem_attr.adb: Likewise.
+ * sem_attr.ads: Likewise.
+ * sem_aux.adb: Likewise.
+ * sem_aux.ads: Likewise.
+ * sem_case.adb: Likewise.
+ * sem_case.ads: Likewise.
+ * sem_cat.adb: Likewise.
+ * sem_cat.ads: Likewise.
+ * sem_ch10.adb: Likewise.
+ * sem_ch10.ads: Likewise.
+ * sem_ch11.adb: Likewise.
+ * sem_ch11.ads: Likewise.
+ * sem_ch12.adb: Likewise.
+ * sem_ch12.ads: Likewise.
+ * sem_ch13.adb: Likewise.
+ * sem_ch13.ads: Likewise.
+ * sem_ch2.adb: Likewise.
+ * sem_ch2.ads: Likewise.
+ * sem_ch3.adb: Likewise.
+ * sem_ch3.ads: Likewise.
+ * sem_ch4.adb: Likewise.
+ * sem_ch4.ads: Likewise.
+ * sem_ch5.adb: Likewise.
+ * sem_ch5.ads: Likewise.
+ * sem_ch6.adb: Likewise.
+ * sem_ch6.ads: Likewise.
+ * sem_ch7.adb: Likewise.
+ * sem_ch7.ads: Likewise.
+ * sem_ch8.adb: Likewise.
+ * sem_ch8.ads: Likewise.
+ * sem_ch9.adb: Likewise.
+ * sem_ch9.ads: Likewise.
+ * sem_dim.adb: Likewise.
+ * sem_dim.ads: Likewise.
+ * sem_disp.adb: Likewise.
+ * sem_disp.ads: Likewise.
+ * sem_dist.adb: Likewise.
+ * sem_dist.ads: Likewise.
+ * sem_elab.adb: Likewise.
+ * sem_elab.ads: Likewise.
+ * sem_elim.adb: Likewise.
+ * sem_elim.ads: Likewise.
+ * sem_eval.adb: Likewise.
+ * sem_eval.ads: Likewise.
+ * sem_intr.adb: Likewise.
+ * sem_intr.ads: Likewise.
+ * sem_mech.adb: Likewise.
+ * sem_mech.ads: Likewise.
+ * sem_prag.adb: Likewise.
+ * sem_prag.ads: Likewise.
+ * sem_res.adb: Likewise.
+ * sem_res.ads: Likewise.
+ * sem_scil.adb: Likewise.
+ * sem_scil.ads: Likewise.
+ * sem_smem.adb: Likewise.
+ * sem_smem.ads: Likewise.
+ * sem_type.adb: Likewise.
+ * sem_type.ads: Likewise.
+ * sem_util.adb: Likewise.
+ * sem_util.ads: Likewise.
+ * sem_warn.adb: Likewise.
+ * sem_warn.ads: Likewise.
+ * set_targ.adb: Likewise.
+ * set_targ.ads: Likewise.
+ * sfn_scan.adb: Likewise.
+ * sfn_scan.ads: Likewise.
+ * sigtramp-armdroid.c: Likewise.
+ * sigtramp-ios.c: Likewise.
+ * sigtramp-qnx.c: Likewise.
+ * sigtramp-vxworks.c: Likewise.
+ * sigtramp.h: Likewise.
+ * sinfo-cn.adb: Likewise.
+ * sinfo-cn.ads: Likewise.
+ * sinfo.adb: Likewise.
+ * sinfo.ads: Likewise.
+ * sinput-c.adb: Likewise.
+ * sinput-c.ads: Likewise.
+ * sinput-d.adb: Likewise.
+ * sinput-d.ads: Likewise.
+ * sinput-l.adb: Likewise.
+ * sinput-l.ads: Likewise.
+ * sinput.adb: Likewise.
+ * sinput.ads: Likewise.
+ * socket.c: Likewise.
+ * spark_xrefs.adb: Likewise.
+ * spark_xrefs.ads: Likewise.
+ * sprint.adb: Likewise.
+ * sprint.ads: Likewise.
+ * stand.adb: Likewise.
+ * stand.ads: Likewise.
+ * stringt.adb: Likewise.
+ * stringt.ads: Likewise.
+ * stringt.h: Likewise.
+ * style.adb: Likewise.
+ * style.ads: Likewise.
+ * styleg.adb: Likewise.
+ * styleg.ads: Likewise.
+ * stylesw.adb: Likewise.
+ * stylesw.ads: Likewise.
+ * switch-b.adb: Likewise.
+ * switch-b.ads: Likewise.
+ * switch-c.adb: Likewise.
+ * switch-c.ads: Likewise.
+ * switch-m.adb: Likewise.
+ * switch-m.ads: Likewise.
+ * switch.adb: Likewise.
+ * switch.ads: Likewise.
+ * symbols.adb: Likewise.
+ * symbols.ads: Likewise.
+ * sysdep.c: Likewise.
+ * table.adb: Likewise.
+ * table.ads: Likewise.
+ * targext.c: Likewise.
+ * targparm.adb: Likewise.
+ * targparm.ads: Likewise.
+ * tbuild.adb: Likewise.
+ * tbuild.ads: Likewise.
+ * tempdir.adb: Likewise.
+ * tempdir.ads: Likewise.
+ * terminals.c: Likewise.
+ * tracebak.c: Likewise.
+ * tree_gen.adb: Likewise.
+ * tree_gen.ads: Likewise.
+ * tree_in.adb: Likewise.
+ * tree_in.ads: Likewise.
+ * tree_io.adb: Likewise.
+ * tree_io.ads: Likewise.
+ * treepr.adb: Likewise.
+ * treepr.ads: Likewise.
+ * ttypes.ads: Likewise.
+ * types.adb: Likewise.
+ * types.ads: Likewise.
+ * types.h: Likewise.
+ * uintp.adb: Likewise.
+ * uintp.ads: Likewise.
+ * uintp.h: Likewise.
+ * uname.adb: Likewise.
+ * uname.ads: Likewise.
+ * urealp.adb: Likewise.
+ * urealp.ads: Likewise.
+ * urealp.h: Likewise.
+ * usage.adb: Likewise.
+ * usage.ads: Likewise.
+ * validsw.adb: Likewise.
+ * validsw.ads: Likewise.
+ * warnsw.adb: Likewise.
+ * warnsw.ads: Likewise.
+ * widechar.adb: Likewise.
+ * widechar.ads: Likewise.
+ * xeinfo.adb: Likewise.
+ * xnmake.adb: Likewise.
+ * xoscons.adb: Likewise.
+ * xr_tabls.adb: Likewise.
+ * xr_tabls.ads: Likewise.
+ * xref_lib.adb: Likewise.
+ * xref_lib.ads: Likewise.
+ * xsinfo.adb: Likewise.
+ * xsnamest.adb: Likewise.
+ * xtreeprs.adb: Likewise.
+ * xutil.adb: Likewise.
+ * xutil.ads: Likewise.
+
+2020-06-02 Javier Miranda <miranda@adacore.com>
+
+ * sem_ch3.adb (Analyze_Object_Declaration): Set attribute
+ Expansion_Delayed on aggregates that initialize an object that
+ has aspect alignment or address clause. Done to allow ther
+ initialization by means of multiple assignments.
+ * exp_ch3.adb (Expand_N_Object_Declaration): Resolve delayed
+ aggregates. This patch complements the patch applied to
+ sem_ch3.adb
+
+2020-06-02 Javier Miranda <miranda@adacore.com>
+
+ * sem_util.adb (Ensure_Minimum_Decoration): New subprogram that
+ ensures the minimum decoration required by
+ Requires_Transient_Scope() to provide its functionality when the
+ entity is not frozen.
+
+2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Op_Divide): Remove code dealing with
+ the Treat_Fixed_As_Integer flag.
+ (Expand_N_Op_Multiply): Likewise.
+ * exp_fixd.adb (Build_Divide): Do the division in an integer
+ type long enough to hold both operands and convert the result
+ to the type of the LHS. Do not set Treat_Fixed_As_Integer.
+ (Build_Multiply): Do not set Treat_Fixed_As_Integer.
+ (Build_Rem): Likewise.
+ * sem_ch4.adb (Analyze_Arithmetic_Op): Remove code dealing with
+ the Treat_Fixed_As_Integer flag.
+ (Check_Arithmetic_Pair): Likewise.
+ * sinfo.ads (Treat_Fixed_As_Integer): Delete.
+ (N_Has_Treat_Fixed_As_Integer): Likewise.
+ (Set_Treat_Fixed_As_Integer): Likewise.
+ * sinfo.adb (Treat_Fixed_As_Integer): Likewise.
+ (Set_Treat_Fixed_As_Integer): Likewise.
+ * sprint.ads (Syntax Extensions): Remove '#' special character.
+ * sprint.adb (Process_TFAI_RR_Flags): Delete.
+ (Sprint_Node_Actual) <N_Op_Divide>: Print '@' manually.
+ <N_Op_Multiply>: Likewise.
+ <N_Op_Mod>: Do not print '#'.
+ <N_Op_Rem>: Likewise.
+
+2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_aggr.adb (Others_Check): In the positional case, use the
+ general expression for the comparison only when needed.
+ * exp_attr.adb (Expand_Fpt_Attribute;): Use a simple conversion
+ to the target type instead of an unchecked conversion to the
+ base type to do the range check, as in the other cases.
+ (Expand_N_Attribute_Reference) <Attribute_Storage_Size>: Do the
+ Max operation in the type of the storage size variable, and use
+ Convert_To as in the other cases.
+ * tbuild.adb (Convert_To): Do not get rid of an intermediate
+ conversion to Universal_Integer here...
+ * sem_res.adb (Simplify_Type_Conversion): ...but here instead.
+
+2020-06-02 Bob Duff <duff@adacore.com>
+
+ * doc/gnat_ugn/gnat_utility_programs.rst: Update documentation
+ for --RM-style-spacing.
+
+2020-06-02 Bob Duff <duff@adacore.com>
+
+ * doc/gnat_ugn/gnat_utility_programs.rst: Add documentation for
+ --[no-]compact switch.
+
+2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_aggr.adb (Build_Array_Aggr_Code): Set the type of the PAT
+ on the zero used to clear the array.
+ * exp_attr.adb (Expand_N_Attribute_Reference)
+ <Attribute_Alignment>: In the CW case, directly convert from the
+ alignment's type to the target type if the parent is an
+ unchecked conversion.
+ * sem_res.adb (Set_String_Literal_Subtype): In the dynamic case,
+ use the general expression for the upper bound only when needed.
+ Set the base type of the index as the type of the low bound.
+ (Simplify_Type_Conversion): Do an intermediate conversion to the
+ root type of the target type if the operand is an integer
+ literal.
+ * tbuild.adb (Convert_To): Get rid of an intermediate conversion
+ to Universal_Integer if the inner expression has integer tyoe.
+ * libgnat/a-sequio.adb (Byte_Swap): Make use of an equivalent
+ static expression in the case statement.
+
+2020-06-02 Thomas Quinot <quinot@adacore.com>
+
+ * par_sco.adb (Traverse_Degenerate_Subprogram): Set statement
+ code to 'X'.
+ * scos.ads: Update comment documenting SCO data.
+
+2020-06-02 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_unst.adb (Register_Subprogram): Test for Address_Taken (in
+ addition to the existing test for In_Synchonized_Unit) when
+ deciding whether to reset the Reachable flag on all subprograms
+ enclosing the subprogram being registered.
+
+2020-06-02 Justin Squirek <squirek@adacore.com>
+
+ * sem_ch6.adb (Check_Return_Obj_Accessibility): Avoid use of
+ parent node pointers so we are not relying on expansion done in
+ GNATprove mode.
+
+2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference)
+ <Attribute_Alignment>: Adjust comment and compare against proper
+ type.
+
+2020-06-02 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_unst.adb (Visit_Node): When visiting array attribute
+ nodes, apply Get_Referenced_Object to the attribute prefix, to
+ handle prefixes denoting renamed objects by picking up the Etype
+ of the renamed object rather than the possibly unconstrained
+ nominal subtype of the renaming declaration's Entity.
+ * sem_util.ads (Get_Referenced_Object): Update comment to
+ clearly indicate that any kind of node can be passed to this
+ function.
+ * sem_util.adb (Get_Referenced_Object): Add test of Is_Object to
+ the condition, to allow for passing names that denote types and
+ subtypes.
+
+2020-06-02 Bob Duff <duff@adacore.com>
+
+ * snames.ads-tmpl: Add comments explaining that enumeration
+ types have to be kept in synch with subtypes of Name_Id.
+
+2020-06-02 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.adb (Check_No_Hidden_State): Remove dead code.
+
+2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_pakd.adb (Expand_Packed_Bit_Reference): Change type of
+ reference from Universal_Integer to Standard_Natural.
+
+2020-06-02 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Collect_States_And_Objects): Call itself on
+ declaration of nested packages; append abstract states
+ one-by-one, so that in recursive call we do not overwrite the
+ ones that have been already collected.
+
+2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_atag.ads (Build_Inherit_Predefined_Prims): Change type
+ of Num_Predef_Prim parameter from Int to Nat.
+ * exp_atag.adb (Build_Range): New procedure.
+ (Build_Val): Likewise.
+ (Build_CW_Membership): Call Build_Val.
+ (Build_Get_Predefined_Prim_Op_Address): Likewise.
+ (Build_Inherit_CPP_Prims): Likewise.
+ (Build_Get_Prim_Op_Address): Likewise.
+ (Build_Set_Predefined_Prim_Op_Address): Likewise.
+ (Build_Inherit_Prims): Call Build_Range.
+ (Build_Inherit_Predefined_Prims): Likewise. Change type of
+ Num_Predef_Prim parameter from Int to Nat.
+
+2020-06-02 Gary Dismukes <dismukes@adacore.com>
+
+ * sem_ch3.adb: Two typo fixes.
+
+2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch3.adb (Replace_Discriminants): Preserve the Etype of the
+ Name of N_Variant_Part nodes when rewriting it.
+
+2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch3.adb (Signed_Integer_Type_Declaration): Change the type
+ of the bounds from Universal_Integer to Implicit_Base.
+
+2020-06-02 Arnaud Charlet <charlet@adacore.com>
+
+ * bcheck.adb, binde.adb, bindo-diagnostics.adb, checks.adb,
+ exp_aggr.adb, exp_ch3.adb, exp_ch4.adb, exp_ch7.adb,
+ exp_ch9.adb, gnatname.adb, sem_case.adb, sem_ch13.adb,
+ sem_ch5.adb, sem_prag.adb, sem_util.adb, uintp.adb, urealp.adb,
+ xoscons.adb, xr_tabls.adb, xref_lib.adb: Initialize objects more
+ explicitly and add corresponding assertions. Remove dead code.
+ Also add a few Annotate pragmas to help static analysis.
+ * libgnat/a-caldel.adb, libgnat/a-calend.adb,
+ libgnat/a-ngcoty.adb, libgnat/a-ngelfu.adb,
+ libgnat/a-ngrear.adb, libgnat/a-strfix.adb,
+ libgnat/g-calend.adb, libgnat/g-catiio.adb,
+ libgnat/g-comlin.adb, libgnat/g-debpoo.adb,
+ libgnat/g-dirope.adb, libgnat/g-hesorg.adb,
+ libgnat/g-pehage.adb, libgnat/g-socket.adb, libgnat/i-cobol.adb,
+ libgnat/s-dwalin.adb, libgnat/s-dwalin.ads,
+ libgnat/s-fatgen.adb, libgnat/s-gearop.adb,
+ libgnat/s-genbig.adb, libgnat/s-imgrea.adb,
+ libgnat/s-os_lib.adb, libgnat/s-rannum.adb,
+ libgnat/s-regpat.adb, libgnat/s-trasym__dwarf.adb,
+ libgnat/s-valrea.adb: Ditto.
+
+2020-06-02 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_ch3.adb (Replace_Components): Rename into...
+ (Replace_Discriminants): ...this. Replace girder discriminants
+ with non-girder ones. Do not replace components.
+ * sem_ch13.adb (Check_Record_Representation_Clause): Deal with
+ non-girder discriminants correctly.
+
+2020-06-02 Piotr Trojanek <trojanek@adacore.com>
+
+ * lib-xref-spark_specific.adb (Create_Heap): use a new variant
+ of Name_Enter to directly converts String to Make_Id.
+
+2020-06-02 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_attr.adb, par-ch4.adb, par-util.adb, scans.ads, scng.adb,
+ sem_attr.adb, sem_ch4.adb, sinfo.ads: Typo corrections and minor
+ reformatting.
+
+2020-06-02 Arnaud Charlet <charlet@adacore.com>
+
+ * snames.ads-tmpl (Name_Img, Attribute_Img): Make it an
+ attribute returning renamable functions.
+
+2020-06-02 Yannick Moy <moy@adacore.com>
+
+ * sem_prag.adb, sem_prag.ads (Set_Overflow_Mode): New procedure
+ to set overflow mode.
+
+2020-06-02 Piotr Trojanek <trojanek@adacore.com>
+
+ * contracts.adb, einfo.adb, exp_ch9.adb, sem_ch12.adb,
+ sem_ch4.adb, sem_ch7.adb, sem_ch8.adb, sem_elab.adb,
+ sem_type.adb, sem_util.adb: Reuse Is_Package_Or_Generic_Package
+ where possible (similarly, reuse Is_Concurrent_Type if it was
+ possible in the same expressions).
+
+2020-05-30 Arnaud Charlet <charlet@adacore.com>
+
+ * Makefile.rtl (ADA_INCLUDE_SRCS): Replace Makefile.adalib by
+ libada.gpr and associated project files.
+ (g-debpoo.o): Add missing rule to ensure subprograms are not reordered.
+ (setup-rts): Add generation of libgnat/libgnarl.lst.
+ (LIBGNAT_SRCS): Remove thread.c which is part of libgnarl.
+ * tracebak.c, tb-gcc.c: Merged the two files to simplify dependencies.
+ * libgnarl/libgnarl.gpr, libgnat/libada.gpr,
+ libgnat/libgnat.gpr, libgnat/libgnat_common.gpr: New files.
+ * doc/gnat_ugn/the_gnat_compilation_model.rst: Makefile.adalib
+ replaced by libada.gpr.
+ * libgnat/system-mingw.ads: Remove obsolete comment.
+ * gcc-interface/Makefile.in: Remove dependency on tb-gcc.c.
+
+2020-05-27 Martin Liska <mliska@suse.cz>
+
+ * gnatvsn.ads: Bump Library_Version to 11.
+
+2020-05-26 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR ada/95333
+ * gcc-interface/decl.c (gnat_to_gnu_param): Never make a variant of
+ the type.
+
+2020-05-26 Alexandre Oliva <oliva@adacore.com>
+
+ * gcc-interface/lang-specs.h (ADA_DUMPS_OPTIONS): Define in
+ terms of DUMPS_OPTIONS. Replace occurrences of %{d*} %:dumps
+ with it.
+
+2020-05-26 Alexandre Oliva <oliva@adacore.com>
+
+ * gcc-interface/lang-specs.h: Drop auxbase and auxbase-strip.
+ Use %:dumps instead of -dumpbase. Add %w for implicit .s
+ primary output.
+ * switch.adb (Is_Internal_GCC_Switch): Recognize dumpdir and
+ dumpbase-ext. Drop auxbase and auxbase-strip.
+
+2020-05-25 Yannick Moy <moy@adacore.com>
+
+ * sem_util.adb (Check_No_Hidden_State): Stop propagation at
+ first block/task/entry.
+
+2020-05-25 Yannick Moy <moy@adacore.com>
+
+ * doc/gnat_rm/implementation_defined_pragmas.rst: Document
+ changes to pragmas Compile_Time_Error/Compile_Time_Warning.
+ * gnat_rm.texi: Regenerate.
+ * libgnat/g-bytswa.adb: Change uses of Compile_Time_Error to
+ Compile_Time_Warning, as the actual expression may not always be
+ known statically.
+ * sem_prag.adb (Analyze_Pragma): Handle differently pragma
+ Compile_Time_Error in both compilation and in GNATprove mode.
+ (Validate_Compile_Time_Warning_Or_Error): Issue an error or
+ warning when the expression is not known at compile time.
+ * usage.adb: Add missing documentation for warning switches _c
+ and _r.
+ * warnsw.ads: Update comment.
+
+2020-05-25 Justin Squirek <squirek@adacore.com>
+
+ * sem_ch6.adb (Check_Return_Obj_Accessibility): Use original
+ node to avoid looking at expansion done in GNATprove mode.
+
+2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity): Add new local variable
+ and use it throughout the function.
+ <E_Variable>: Rename local variable and adjust accordingly. In the
+ case of a renaming, materialize the entity if the renamed object is
+ an N_Expression_With_Actions node.
+ <E_Procedure>: Use Alias accessor function consistently.
+
+2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/misc.c (get_array_bit_stride): Get to the debug type,
+ if any, before calling gnat_get_array_descr_info.
+
+2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Tidy up.
+ (build_variant_list): Add GNAT_VARIANT_PART parameter and annotate its
+ variants if it is present. Adjust the recursive call by passing the
+ variant subpart of variants, if any.
+ (copy_and_substitute_in_layout): Rename GNU_SUBST_LIST to SUBST_LIST
+ and adjust throughout. For a type, pass the variant part in the
+ call to build_variant_list.
+
+2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_component_type): Cap the alignment
+ of the component type according to the component size.
+
+2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Type>: Add a
+ description of the various types associated with the unconstrained
+ type. Declare the fat pointer earlier. Set the current function
+ as context on the template type, and the fat pointer type on the
+ array type. Always mark the fat pointer type as artificial and set
+ it as the context for the pointer type to the array. Also reuse
+ GNU_ENTITY_NAME. Finish up the unconstrained type at the very end.
+ * gcc-interface/misc.c (gnat_get_array_descr_info): Do not handle
+ fat pointer types and tidy up accordingly.
+ * gcc-interface/utils.c (build_unc_object_type): Do not set the
+ context on the template type.
+ (gnat_pushdecl): Mark the canonical fat pointer types as artificial.
+
+2020-05-25 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/gigi.h (operand_type): New static inline function.
+ * gcc-interface/trans.c (gnat_to_gnu): Do not suppress conversion
+ to the resulty type at the end for array types.
+ * gcc-interface/utils2.c (build_binary_op) <MODIFY_EXPR>: Do not
+ remove conversions between array types on the LHS.
+
+2020-05-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_aggr.ads (Is_Single_Aggregate): New function.
+ * sem_aggr.adb (Is_Others_Aggregate): Use local variable.
+ (Is_Single_Aggregate): New function to recognize an aggregate with
+ a single association containing a single choice.
+ * fe.h (Is_Others_Aggregate): Delete.
+ (Is_Single_Aggregate): New declaration.
+ * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Call
+ Is_Single_Aggregate instead of Is_Others_Aggregate.
+
+2020-05-12 Eric Botcazou <ebotcazou@adacore.com>
+
+ PR ada/95035
+ * gcc-interface/utils.c (packable_type_hasher::equal): Also compare
+ the scalar storage order.
+ (hash_packable_type): Also hash the scalar storage order.
+ (hash_pad_type): Likewise.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/*.[ch]: Update copyright year.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (Attribute_to_gnu) <Attr_Access>: Assert that
+ the prefix is not a type.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/ada-tree.h (TYPE_PACKED_ARRAY_TYPE_P): Rename into...
+ (TYPE_BIT_PACKED_ARRAY_TYPE_P): ...this.
+ (TYPE_IS_PACKED_ARRAY_TYPE_P): Rename into...
+ (BIT_PACKED_ARRAY_TYPE_P): ...this.
+ (TYPE_IMPL_PACKED_ARRAY_P): Adjust to above renaming.
+ * gcc-interface/gigi.h (maybe_pad_type): Remove IS_USER_TYPE parameter.
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Adjust call
+ to maybe_pad_type.
+ <E_Ordinary_Fixed_Point_Type>: Remove const qualifiers for tree.
+ <E_Signed_Integer_Subtype>: Remove redundant test and redundant call
+ to associate_original_type_to_packed_array. Turn test into assertion.
+ Call associate_original_type_to_packed_array and modify gnu_entity_name
+ accordingly. Explicitly set the parallel type for GNAT encodings.
+ Call create_type_decl in the misaligned case before maybe_pad_type.
+ <E_Array_Type>: Do not use the name of the implementation type for a
+ packed array when not using GNAT encodings.
+ <E_Array_Subtype>: Move around setting flags. Use the result of the
+ call to associate_original_type_to_packed_array for gnu_entity_name.
+ <E_Record_Subtype>: Create XVS type and XVZ variable only if debug
+ info is requested for the type.
+ Call create_type_decl if a padded type was created for a type entity.
+ (gnat_to_gnu_component_type): Use local variable and adjust calls to
+ maybe_pad_type.
+ (gnat_to_gnu_subprog_type): Adjust call to maybe_pad_type.
+ (gnat_to_gnu_field): Likewise.
+ (validate_size): Adjust to renaming of macro.
+ (set_rm_size): Likewise.
+ (associate_original_type_to_packed_array): Adjust return type and
+ return the name of the original type if GNAT encodings are not used.
+ * gcc-interface/misc.c (gnat_get_debug_typ): Remove obsolete stuff.
+ (gnat_get_fixed_point_type_info): Remove const qualifiers for tree.
+ (gnat_get_array_descr_info): Likewise and set variables lazily.
+ Remove call to maybe_debug_type. Simplify a few computations.
+ (enumerate_modes): Remove const qualifier for tree.
+ * gcc-interface/utils.c (make_type_from_size): Adjust to renaming.
+ (maybe_pad_type): Remove IS_USER_TYPE parameter and adjust. Remove
+ specific code for implementation types for packed arrays.
+ (compute_deferred_decl_context): Remove const qualifier for tree.
+ (convert): Adjust call to maybe_pad_type.
+ (unchecked_convert): Likewise.
+ * gcc-interface/utils2.c (is_simple_additive_expressio): Likewise.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils2.c (build_binary_op) <ARRAY_RANGE_REF>: Use
+ build_nonshared_array_type to build the common type and declare it.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/misc.c (gnat_init_gcc_eh): Do not override the user
+ for -fnon-call-exceptions in default mode.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (lvalue_required_p) <N_Selected_Component>:
+ Merge with N_Slice.
+ <N_Allocator>: Move to...
+ (lvalue_for_aggregate_p): ...here. New function.
+ (Identifier_to_gnu): For an identifier with aggregate type, also
+ call lvalue_for_aggregate_p if lvalue_required_p returned false
+ before substituting the identifier with the constant.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (gnat_to_gnu): Do not wrap boolean values if
+ they appear in any kind of attribute references.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (gnat_to_gnu) <N_Assignment_Statement>: Deal
+ with qualified "others" aggregates in the memset case.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_param): Also back-annotate the
+ mechanism in the case of an Out parameter only passed by copy-out.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/gigi.h (change_qualified_type): Move around.
+ (maybe_vector_array): Likewise.
+ (maybe_padded_object): New static line function.
+ * gcc-interface/trans.c (Attribute_to_gnu) <Attr_Component_Size>:
+ Remove useless code.
+ <Attr_Null_Parameter>: Remove obsolete code.
+ (Call_to_gn): Likewise. Use maybe_padded_object to remove padding.
+ (gnat_to_gnu): Likewise.
+ <N_String_Literal>: Do not add a useless null character at the end.
+ <N_Indexed_Component>: Likewise and remove obsolete code.
+ (add_decl_expr): Likewise.
+ (maybe_implicit_deref): Likewise.
+ * gcc-interface/utils.c (maybe_unconstrained_array): Likewise.
+ * gcc-interface/utils2.c (gnat_invariant_expr): Likewise.
+
+2020-05-09 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/utils2.c: Include builtins.h.
+ (known_alignment) <ADDR_EXPR>: Use DECL_ALIGN for DECL_P operands
+ and get_object_alignment for the rest.
+
+2020-05-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Variable>: Force at
+ least the unit size for an aliased object of a constrained nominal
+ subtype whose size is variable.
+
+2020-05-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity) <E_Array_Subtype>: Deal
+ with artificial maximally-sized types designed by access types.
+ * gcc-interface/utils.c (packable_type_hash): New structure.
+ (packable_type_hasher): Likewise.
+ (packable_type_hash_table): New hash table.
+ (init_gnat_utils): Initialize it.
+ (destroy_gnat_utils): Destroy it.
+ (packable_type_hasher::equal): New method.
+ (hash_packable_type): New static function.
+ (canonicalize_packable_type): Likewise.
+ (make_packable_type): Make sure not to use too small a type for the
+ size of the new fields. Canonicalize the type if it is named.
+
+2020-05-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/trans.c (Raise_Error_to_gnu): Always compute a lower
+ bound and an upper bound for use by the -gnateE switch for range and
+ comparison operators.
+
+2020-05-08 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_param): Do not make a variant of
+ the type in LTO mode.
+
+2020-05-04 Mikael Pettersson <mikpelinux@gmail.com>
+
+ PR bootstrap/94918
+ * mingw32.h: Prevent windows.h from including emmintrin.h on Cygwin64.
+ * s-oscons-tmplt.c (Serial_Port_Descriptor): Use System.Win32.HANDLE
+ also on Cygwin.
+
+2020-03-11 Richard Wai <richard@annexi-strayline.com>
+
+ * gcc-interface/decl.c (gnat_to_gnu_entity): Also test Is_Public on
+ the Alias of the entitiy, if it is present, in the main assertion.
+
+2020-02-06 Alexandre Oliva <oliva@adacore.com>
+
+ * raise-gcc.c (personality_body) [__ARM_EABI_UNWINDER__]:
+ Initialize barrier_cache.sp when ending phase1.
+
+2020-01-04 Eric Botcazou <ebotcazou@adacore.com>
+
+ * gnatvsn.ads: Bump copyright year.
+
+2020-01-01 Jakub Jelinek <jakub@redhat.com>
+
+ Update copyright years.
+
+ * gnat_ugn.texi: Bump @copying's copyright year.
+ * gnat_rm.texi: Likewise.
+
+Copyright (C) 2020 Free Software Foundation, Inc.
+
+Copying and distribution of this file, with or without modification,
+are permitted in any medium without royalty provided the copyright
+notice and this notice are preserved.
diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl
index 64ddc26..35faf13 100644
--- a/gcc/ada/Makefile.rtl
+++ b/gcc/ada/Makefile.rtl
@@ -596,7 +596,6 @@ GNATRTL_NONTASKING_OBJS= \
s-fatgen$(objext) \
s-fatlfl$(objext) \
s-fatllf$(objext) \
- s-fatsfl$(objext) \
s-ficobl$(objext) \
s-filatt$(objext) \
s-fileio$(objext) \
@@ -713,7 +712,9 @@ GNATRTL_NONTASKING_OBJS= \
s-pooglo$(objext) \
s-pooloc$(objext) \
s-poosiz$(objext) \
- s-powtab$(objext) \
+ s-powflt$(objext) \
+ s-powlfl$(objext) \
+ s-powllf$(objext) \
s-purexc$(objext) \
s-putima$(objext) \
s-rannum$(objext) \
@@ -756,7 +757,10 @@ GNATRTL_NONTASKING_OBJS= \
s-vafi32$(objext) \
s-vafi64$(objext) \
s-valenu$(objext) \
+ s-valflt$(objext) \
s-valint$(objext) \
+ s-vallfl$(objext) \
+ s-valllf$(objext) \
s-vallli$(objext) \
s-valllu$(objext) \
s-valrea$(objext) \
@@ -2164,11 +2168,16 @@ ifeq ($(strip $(filter-out rtems%,$(target_os))),)
s-tpopsp.adb<libgnarl/s-tpopsp__tls.adb \
s-stchop.adb<libgnat/s-stchop__rtems.adb \
s-interr.adb<libgnarl/s-interr__hwint.adb
+
ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
EH_MECHANISM=-arm
else
EH_MECHANISM=-gcc
endif
+
+ ifeq ($(strip $(filter-out riscv%,$(target_cpu))),)
+ LIBGNAT_TARGET_PAIRS += a-nallfl.ads<libgnat/a-nallfl__wraplf.ads
+ endif
endif
# PikeOS
@@ -2379,12 +2388,14 @@ ifeq ($(strip $(filter-out arm% linux-gnueabi%,$(target_cpu) $(target_os))),)
s-tasinf.adb<libgnarl/s-tasinf__linux.adb \
s-taspri.ads<libgnarl/s-taspri__posix-noaltstack.ads \
s-tpopsp.adb<libgnarl/s-tpopsp__posix-foreign.adb \
+ $(TRASYM_DWARF_UNIX_PAIRS) \
$(ATOMICS_TARGET_PAIRS) \
$(ATOMICS_BUILTINS_TARGET_PAIRS) \
system.ads<libgnat/system-linux-arm.ads
TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
+ EXTRA_GNATRTL_NONTASKING_OBJS += $(TRASYM_DWARF_UNIX_OBJS)
EXTRA_GNATRTL_TASKING_OBJS=s-linux.o
EH_MECHANISM=-arm
THREADSLIB = -lpthread
diff --git a/gcc/ada/adaint.c b/gcc/ada/adaint.c
index 41453d1..0a90c92 100644
--- a/gcc/ada/adaint.c
+++ b/gcc/ada/adaint.c
@@ -244,6 +244,8 @@ UINT __gnat_current_ccs_encoding;
#include "adaint.h"
+int __gnat_in_child_after_fork = 0;
+
#if defined (__APPLE__) && defined (st_mtime)
#define st_atim st_atimespec
#define st_mtim st_mtimespec
@@ -2421,6 +2423,7 @@ __gnat_portable_spawn (char *args[] ATTRIBUTE_UNUSED)
if (pid == 0)
{
/* The child. */
+ __gnat_in_child_after_fork = 1;
if (execv (args[0], MAYBE_TO_PTR32 (args)) != 0)
_exit (1);
}
diff --git a/gcc/ada/adaint.h b/gcc/ada/adaint.h
index 4f42f6c..85997b9 100644
--- a/gcc/ada/adaint.h
+++ b/gcc/ada/adaint.h
@@ -139,7 +139,15 @@ struct file_attributes {
* fit the above struct on any system)
*/
-extern int __gnat_max_path_len;
+extern int __gnat_max_path_len;
+extern int __gnat_in_child_after_fork;
+/* This flag expresses the state when the fork call just returned zero result,
+ * i.e. when the new born child process is created and the new executable is
+ * not loaded yet. It is used to e.g. disable tracing memory
+ * allocation/deallocation in memtrack.adb just after fork returns in the child
+ * process to avoid both parent and child writing to the same gmem.out file
+ * simultaneously */
+
extern OS_Time __gnat_current_time (void);
extern void __gnat_current_time_string (char *);
extern void __gnat_to_gm_time (OS_Time *, int *, int *,
diff --git a/gcc/ada/ali.adb b/gcc/ada/ali.adb
index 3bf1257..f213c30 100644
--- a/gcc/ada/ali.adb
+++ b/gcc/ada/ali.adb
@@ -3814,15 +3814,15 @@ package body ALI is
return No_ALI_Id;
end Scan_ALI;
- -----------
- -- Scope --
- -----------
+ --------------
+ -- IS_Scope --
+ --------------
- function Scope (IS_Id : Invocation_Signature_Id) return Name_Id is
+ function IS_Scope (IS_Id : Invocation_Signature_Id) return Name_Id is
begin
pragma Assert (Present (IS_Id));
return Invocation_Signatures.Table (IS_Id).Scope;
- end Scope;
+ end IS_Scope;
---------
-- SEq --
diff --git a/gcc/ada/ali.ads b/gcc/ada/ali.ads
index 928fdbd..ccb516f 100644
--- a/gcc/ada/ali.ads
+++ b/gcc/ada/ali.ads
@@ -1350,8 +1350,8 @@ package ALI is
pragma Inline (Name);
-- Obtain the name of invocation signature IS_Id
- function Scope (IS_Id : Invocation_Signature_Id) return Name_Id;
- pragma Inline (Scope);
+ function IS_Scope (IS_Id : Invocation_Signature_Id) return Name_Id;
+ pragma Inline (IS_Scope);
-- Obtain the scope of invocation signature IS_Id
procedure Set_Invocation_Graph_Encoding
diff --git a/gcc/ada/bindo-writers.adb b/gcc/ada/bindo-writers.adb
index cca6687..926fb82 100644
--- a/gcc/ada/bindo-writers.adb
+++ b/gcc/ada/bindo-writers.adb
@@ -222,7 +222,7 @@ package body Bindo.Writers is
Write_Eol;
Write_Str (" Scope = ");
- Write_Name (Scope (IS_Id));
+ Write_Name (IS_Scope (IS_Id));
Write_Eol;
end Write_Invocation_Signature;
diff --git a/gcc/ada/checks.adb b/gcc/ada/checks.adb
index 803bd21..61e41dd 100644
--- a/gcc/ada/checks.adb
+++ b/gcc/ada/checks.adb
@@ -3922,6 +3922,13 @@ package body Checks is
function Aggregate_Discriminant_Val (Disc : Entity_Id) return Node_Id;
+ function Replace_Current_Instance
+ (N : Node_Id) return Traverse_Result;
+ -- Replace a reference to the current instance of the type with the
+ -- corresponding _init formal of the initialization procedure. Note:
+ -- this function relies on us currently being within the initialization
+ -- procedure.
+
--------------------------------
-- Aggregate_Discriminant_Val --
--------------------------------
@@ -3949,6 +3956,26 @@ package body Checks is
raise Program_Error;
end Aggregate_Discriminant_Val;
+ ------------------------------
+ -- Replace_Current_Instance --
+ ------------------------------
+
+ function Replace_Current_Instance
+ (N : Node_Id) return Traverse_Result is
+ begin
+ if Is_Entity_Name (N)
+ and then Etype (N) = Entity (N)
+ then
+ Rewrite (N,
+ New_Occurrence_Of (First_Formal (Current_Subprogram), Loc));
+ end if;
+
+ return OK;
+ end Replace_Current_Instance;
+
+ procedure Search_And_Replace_Current_Instance is new
+ Traverse_Proc (Replace_Current_Instance);
+
-- Start of processing for Build_Discriminant_Checks
begin
@@ -3978,6 +4005,13 @@ package body Checks is
Dval := Duplicate_Subexpr_No_Checks (Dval);
end if;
+ -- Replace references to the current instance of the type with the
+ -- corresponding _init formal of the initialization procedure.
+
+ if Within_Init_Proc then
+ Search_And_Replace_Current_Instance (Dval);
+ end if;
+
-- If we have an Unchecked_Union node, we can infer the discriminants
-- of the node.
@@ -4386,7 +4420,7 @@ package body Checks is
Apply_Compile_Time_Constraint_Error
(N => Expr,
Msg =>
- "(Ada 2005) null not allowed in null-excluding "
+ "(Ada 2005) NULL not allowed in null-excluding "
& "components??",
Reason => CE_Null_Not_Allowed);
@@ -4394,7 +4428,7 @@ package body Checks is
Apply_Compile_Time_Constraint_Error
(N => Expr,
Msg =>
- "(Ada 2005) null not allowed in null-excluding "
+ "(Ada 2005) NULL not allowed in null-excluding "
& "objects??",
Reason => CE_Null_Not_Allowed);
@@ -4402,7 +4436,7 @@ package body Checks is
Apply_Compile_Time_Constraint_Error
(N => Expr,
Msg =>
- "(Ada 2005) null not allowed in null-excluding "
+ "(Ada 2005) NULL not allowed in null-excluding "
& "formals??",
Reason => CE_Null_Not_Allowed);
@@ -11161,8 +11195,7 @@ package body Checks is
procedure Validity_Check_Range
(N : Node_Id;
- Related_Id : Entity_Id := Empty)
- is
+ Related_Id : Entity_Id := Empty) is
begin
if Validity_Checks_On and Validity_Check_Operands then
if Nkind (N) = N_Range then
@@ -11179,17 +11212,4 @@ package body Checks is
end if;
end Validity_Check_Range;
- --------------------------------
- -- Validity_Checks_Suppressed --
- --------------------------------
-
- function Validity_Checks_Suppressed (E : Entity_Id) return Boolean is
- begin
- if Present (E) and then Checks_May_Be_Suppressed (E) then
- return Is_Check_Suppressed (E, Validity_Check);
- else
- return Scope_Suppress.Suppress (Validity_Check);
- end if;
- end Validity_Checks_Suppressed;
-
end Checks;
diff --git a/gcc/ada/checks.ads b/gcc/ada/checks.ads
index d75c602..e7b7261 100644
--- a/gcc/ada/checks.ads
+++ b/gcc/ada/checks.ads
@@ -64,7 +64,6 @@ package Checks is
function Range_Checks_Suppressed (E : Entity_Id) return Boolean;
function Storage_Checks_Suppressed (E : Entity_Id) return Boolean;
function Tag_Checks_Suppressed (E : Entity_Id) return Boolean;
- function Validity_Checks_Suppressed (E : Entity_Id) return Boolean;
-- These functions check to see if the named check is suppressed, either
-- by an active scope suppress setting, or because the check has been
-- specifically suppressed for the given entity. If no entity is relevant
diff --git a/gcc/ada/contracts.adb b/gcc/ada/contracts.adb
index 7387ffe..29557ec 100644
--- a/gcc/ada/contracts.adb
+++ b/gcc/ada/contracts.adb
@@ -2198,12 +2198,24 @@ package body Contracts is
Result : Entity_Id)
is
Loc : constant Source_Ptr := Sloc (Body_Decl);
+ Last_Decl : Node_Id;
Params : List_Id := No_List;
Proc_Bod : Node_Id;
Proc_Decl : Node_Id;
Proc_Id : Entity_Id;
Proc_Spec : Node_Id;
+ -- Extra declarations needed to handle interactions between
+ -- postconditions and finalization.
+
+ Postcond_Enabled_Decl : Node_Id;
+ Return_Success_Decl : Node_Id;
+ Result_Obj_Decl : Node_Id;
+ Result_Obj_Type_Decl : Node_Id;
+ Result_Obj_Type : Entity_Id;
+
+ -- Start of processing for Build_Postconditions_Procedure
+
begin
-- Nothing to do if there are no actions to check on exit
@@ -2211,6 +2223,29 @@ package body Contracts is
return;
end if;
+ -- Otherwise, we generate the postcondition procedure and add
+ -- associated objects and conditions used to coordinate postcondition
+ -- evaluation with finalization.
+
+ -- Generate:
+ --
+ -- procedure _postconditions (Return_Exp : Result_Typ);
+ --
+ -- -- Result_Obj_Type created when Result_Type is non-elementary
+ -- [type Result_Obj_Type is access all Result_Typ;]
+ --
+ -- Result_Obj : Result_Obj_Type;
+ --
+ -- Postcond_Enabled : Boolean := True;
+ -- Return_Success_For_Postcond : Boolean := False;
+ --
+ -- procedure _postconditions (Return_Exp : Result_Typ) is
+ -- begin
+ -- if Postcond_Enabled and then Return_Success_For_Postcond then
+ -- [stmts];
+ -- end if;
+ -- end;
+
Proc_Id := Make_Defining_Identifier (Loc, Name_uPostconditions);
Set_Debug_Info_Needed (Proc_Id);
Set_Postconditions_Proc (Subp_Id, Proc_Id);
@@ -2248,12 +2283,14 @@ package body Contracts is
-- body. This ensures that the body will not cause any premature
-- freezing, as it may mention types:
+ -- Generate:
+ --
-- procedure Proc (Obj : Array_Typ) is
-- procedure _postconditions is
-- begin
-- ... Obj ...
-- end _postconditions;
-
+ --
-- subtype T is Array_Typ (Obj'First (1) .. Obj'Last (1));
-- begin
@@ -2265,12 +2302,121 @@ package body Contracts is
Insert_Before_First_Source_Declaration
(Proc_Decl, Declarations (Body_Decl));
Analyze (Proc_Decl);
+ Last_Decl := Proc_Decl;
+
+ -- When Result is present (e.g. the postcondition checks apply to a
+ -- function) we make a local object to capture the result, so, if
+ -- needed, we can call the generated postconditions procedure during
+ -- finalization instead of at the point of return.
+
+ -- Note: The placement of the following declarations before the
+ -- declaration of the body of the postconditions, but after the
+ -- declaration of the postconditions spec is deliberate and required
+ -- since other code within the expander expects them to be located
+ -- here. Perhaps when more space is available in the tree this will
+ -- no longer be necessary ???
+
+ if Present (Result) then
+ -- Elementary result types mean a copy is cheap and preferred over
+ -- using pointers.
+
+ if Is_Elementary_Type (Etype (Result)) then
+ Result_Obj_Type := Etype (Result);
+
+ -- Otherwise, we create a named access type to capture the result
+
+ -- Generate:
+ --
+ -- type Result_Obj_Type is access all [Result_Type];
+
+ else
+ Result_Obj_Type := Make_Temporary (Loc, 'R');
+
+ Result_Obj_Type_Decl :=
+ Make_Full_Type_Declaration (Loc,
+ Defining_Identifier => Result_Obj_Type,
+ Type_Definition =>
+ Make_Access_To_Object_Definition (Loc,
+ All_Present => True,
+ Subtype_Indication => New_Occurrence_Of
+ (Etype (Result), Loc)));
+ Insert_After_And_Analyze (Proc_Decl, Result_Obj_Type_Decl);
+ Last_Decl := Result_Obj_Type_Decl;
+ end if;
+
+ -- Create the result obj declaration
+
+ -- Generate:
+ --
+ -- Result_Object_For_Postcond : Result_Obj_Type;
+
+ Result_Obj_Decl :=
+ Make_Object_Declaration (Loc,
+ Defining_Identifier =>
+ Make_Defining_Identifier
+ (Loc, Name_uResult_Object_For_Postcond),
+ Object_Definition =>
+ New_Occurrence_Of
+ (Result_Obj_Type, Loc));
+ Set_No_Initialization (Result_Obj_Decl);
+ Insert_After_And_Analyze (Last_Decl, Result_Obj_Decl);
+ Last_Decl := Result_Obj_Decl;
+ end if;
+
+ -- Build the Postcond_Enabled flag used to delay evaluation of
+ -- postconditions until finalization has been performed when cleanup
+ -- actions are present.
+
+ -- Generate:
+ --
+ -- Postcond_Enabled : Boolean := True;
+
+ Postcond_Enabled_Decl :=
+ Make_Object_Declaration (Loc,
+ Defining_Identifier =>
+ Make_Defining_Identifier
+ (Loc, Name_uPostcond_Enabled),
+ Object_Definition => New_Occurrence_Of (Standard_Boolean, Loc),
+ Expression => New_Occurrence_Of (Standard_True, Loc));
+ Insert_After_And_Analyze (Last_Decl, Postcond_Enabled_Decl);
+ Last_Decl := Postcond_Enabled_Decl;
+
+ -- Create a flag to indicate that return has been reached
+
+ -- This is necessary for deciding whether to execute _postconditions
+ -- during finalization.
+
+ -- Generate:
+ --
+ -- Return_Success_For_Postcond : Boolean := False;
+
+ Return_Success_Decl :=
+ Make_Object_Declaration (Loc,
+ Defining_Identifier =>
+ Make_Defining_Identifier
+ (Loc, Name_uReturn_Success_For_Postcond),
+ Object_Definition => New_Occurrence_Of (Standard_Boolean, Loc),
+ Expression => New_Occurrence_Of (Standard_False, Loc));
+ Insert_After_And_Analyze (Last_Decl, Return_Success_Decl);
+ Last_Decl := Return_Success_Decl;
-- Set an explicit End_Label to override the sloc of the implicit
-- RETURN statement, and prevent it from inheriting the sloc of one
-- the postconditions: this would cause confusing debug info to be
-- produced, interfering with coverage-analysis tools.
+ -- Also, wrap the postcondition checks in a conditional which can be
+ -- used to delay their evaluation when clean-up actions are present.
+
+ -- Generate:
+ --
+ -- procedure _postconditions is
+ -- begin
+ -- if Postcond_Enabled and then Return_Success_For_Postcond then
+ -- [Stmts];
+ -- end if;
+ -- end;
+
Proc_Bod :=
Make_Subprogram_Body (Loc,
Specification =>
@@ -2278,10 +2424,22 @@ package body Contracts is
Declarations => Empty_List,
Handled_Statement_Sequence =>
Make_Handled_Sequence_Of_Statements (Loc,
- Statements => Stmts,
- End_Label => Make_Identifier (Loc, Chars (Proc_Id))));
+ End_Label => Make_Identifier (Loc, Chars (Proc_Id)),
+ Statements => New_List (
+ Make_If_Statement (Loc,
+ Condition =>
+ Make_And_Then (Loc,
+ Left_Opnd =>
+ New_Occurrence_Of
+ (Defining_Identifier
+ (Postcond_Enabled_Decl), Loc),
+ Right_Opnd =>
+ New_Occurrence_Of
+ (Defining_Identifier
+ (Return_Success_Decl), Loc)),
+ Then_Statements => Stmts))));
+ Insert_After_And_Analyze (Last_Decl, Proc_Bod);
- Insert_After_And_Analyze (Proc_Decl, Proc_Bod);
end Build_Postconditions_Procedure;
----------------------------
@@ -3280,6 +3438,81 @@ package body Contracts is
Freeze_Contracts;
end Freeze_Previous_Contracts;
+ --------------------------
+ -- Get_Postcond_Enabled --
+ --------------------------
+
+ function Get_Postcond_Enabled (Subp : Entity_Id) return Node_Id is
+ Decl : Node_Id;
+ begin
+ Decl :=
+ Next (Unit_Declaration_Node (Postconditions_Proc (Subp)));
+ while Present (Decl) loop
+
+ if Nkind (Decl) = N_Object_Declaration
+ and then Chars (Defining_Identifier (Decl))
+ = Name_uPostcond_Enabled
+ then
+ return Defining_Identifier (Decl);
+ end if;
+
+ Next (Decl);
+ end loop;
+
+ return Empty;
+ end Get_Postcond_Enabled;
+
+ ------------------------------------
+ -- Get_Result_Object_For_Postcond --
+ ------------------------------------
+
+ function Get_Result_Object_For_Postcond
+ (Subp : Entity_Id) return Node_Id
+ is
+ Decl : Node_Id;
+ begin
+ Decl :=
+ Next (Unit_Declaration_Node (Postconditions_Proc (Subp)));
+ while Present (Decl) loop
+
+ if Nkind (Decl) = N_Object_Declaration
+ and then Chars (Defining_Identifier (Decl))
+ = Name_uResult_Object_For_Postcond
+ then
+ return Defining_Identifier (Decl);
+ end if;
+
+ Next (Decl);
+ end loop;
+
+ return Empty;
+ end Get_Result_Object_For_Postcond;
+
+ -------------------------------------
+ -- Get_Return_Success_For_Postcond --
+ -------------------------------------
+
+ function Get_Return_Success_For_Postcond (Subp : Entity_Id) return Node_Id
+ is
+ Decl : Node_Id;
+ begin
+ Decl :=
+ Next (Unit_Declaration_Node (Postconditions_Proc (Subp)));
+ while Present (Decl) loop
+
+ if Nkind (Decl) = N_Object_Declaration
+ and then Chars (Defining_Identifier (Decl))
+ = Name_uReturn_Success_For_Postcond
+ then
+ return Defining_Identifier (Decl);
+ end if;
+
+ Next (Decl);
+ end loop;
+
+ return Empty;
+ end Get_Return_Success_For_Postcond;
+
---------------------------------
-- Inherit_Subprogram_Contract --
---------------------------------
diff --git a/gcc/ada/contracts.ads b/gcc/ada/contracts.ads
index 4782ef5..b8a12ff 100644
--- a/gcc/ada/contracts.ads
+++ b/gcc/ada/contracts.ads
@@ -188,6 +188,21 @@ package Contracts is
-- denoted by Body_Decl. In addition, freeze the contract of the nearest
-- enclosing package body.
+ function Get_Postcond_Enabled (Subp : Entity_Id) return Entity_Id;
+ -- Get the defining identifier for a subprogram's Postcond_Enabled
+ -- object created during the expansion of the subprogram's postconditions.
+
+ function Get_Result_Object_For_Postcond (Subp : Entity_Id) return Entity_Id;
+ -- Get the defining identifier for a subprogram's
+ -- Result_Object_For_Postcond object created during the expansion of the
+ -- subprogram's postconditions.
+
+ function Get_Return_Success_For_Postcond
+ (Subp : Entity_Id) return Entity_Id;
+ -- Get the defining identifier for a subprogram's
+ -- Return_Success_For_Postcond object created during the expansion of the
+ -- subprogram's postconditions.
+
procedure Inherit_Subprogram_Contract
(Subp : Entity_Id;
From_Subp : Entity_Id);
diff --git a/gcc/ada/debug.adb b/gcc/ada/debug.adb
index f57b148..2c7c712 100644
--- a/gcc/ada/debug.adb
+++ b/gcc/ada/debug.adb
@@ -74,7 +74,7 @@ package body Debug is
-- dN No file name information in exception messages
-- dO Output immediate error messages
-- dP Do not check for controlled objects in preelaborable packages
- -- dQ Use old secondary stack method
+ -- dQ
-- dR Bypass check for correct version of s-rpc
-- dS Never convert numbers to machine numbers in Sem_Eval
-- dT Convert to machine numbers only for constant declarations
@@ -643,11 +643,6 @@ package body Debug is
-- in preelaborable packages, but this restriction is a huge pain,
-- especially in the predefined library units.
- -- dQ Use old method for determining what goes on the secondary stack.
- -- This disables some newer optimizations. The intent is to use this
- -- temporarily to measure before/after efficiency. ???Remove this
- -- when we are done (see Sem_Util.Requires_Transient_Scope).
-
-- dR Bypass the check for a proper version of s-rpc being present
-- to use the -gnatz? switch. This allows debugging of the use
-- of stubs generation without needing to have GLADE (or some
diff --git a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
index f8a62a5..74b9718 100644
--- a/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
+++ b/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
@@ -6652,8 +6652,8 @@ expression. The following is an example of use within a package spec:
function Sqrt (Arg : Float) return Float;
pragma Test_Case (Name => "Test 1",
Mode => Nominal,
- Requires => Arg < 10000,
- Ensures => Sqrt'Result < 10);
+ Requires => Arg < 10000.0,
+ Ensures => Sqrt'Result < 10.0);
...
end Math_Functions;
diff --git a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
index 9c62d6e..82e992a 100644
--- a/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
+++ b/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
@@ -3344,7 +3344,7 @@ of the pragma in the :title:`GNAT_Reference_manual`).
:switch:`-gnatw.K`
*Suppress warnings on redefinition of names in standard.*
- This switch activates warnings for declarations that declare a name that
+ This switch disables warnings for declarations that declare a name that
is defined in package Standard.
diff --git a/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst b/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
index ba2c9b6..c4f186e 100644
--- a/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
+++ b/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
@@ -1840,7 +1840,7 @@ improves performance for your program.
.. _Floating_Point_Operations:
-Floating_Point_Operations
+Floating Point Operations
^^^^^^^^^^^^^^^^^^^^^^^^^
.. index:: Floating-Point Operations
diff --git a/gcc/ada/einfo.adb b/gcc/ada/einfo.adb
index 8949703..8c401ca 100644
--- a/gcc/ada/einfo.adb
+++ b/gcc/ada/einfo.adb
@@ -6802,7 +6802,9 @@ package body Einfo is
procedure Set_Stores_Attribute_Old_Prefix (Id : E; V : B := True) is
begin
- pragma Assert (Ekind (Id) = E_Constant);
+ pragma Assert (Is_Type (Id)
+ or else (Ekind (Id) in E_Constant
+ | E_Variable));
Set_Flag270 (Id, V);
end Set_Stores_Attribute_Old_Prefix;
diff --git a/gcc/ada/einfo.ads b/gcc/ada/einfo.ads
index 360ce7c..cc0c815 100644
--- a/gcc/ada/einfo.ads
+++ b/gcc/ada/einfo.ads
@@ -4503,8 +4503,8 @@ package Einfo is
-- stored discriminants for the record (sub)type.
-- Stores_Attribute_Old_Prefix (Flag270)
--- Defined in constants. Set when the constant has been generated to save
--- the value of attribute 'Old's prefix.
+-- Defined in constants, variables, and types which are created during
+-- expansion in order to save the value of attribute 'Old's prefix.
-- Strict_Alignment (Flag145) [implementation base type only]
-- Defined in all type entities. Indicates that the type is by-reference
diff --git a/gcc/ada/errout.adb b/gcc/ada/errout.adb
index fbbf579..cc291c6 100644
--- a/gcc/ada/errout.adb
+++ b/gcc/ada/errout.adb
@@ -612,6 +612,25 @@ package body Errout is
end;
end Error_Msg;
+ ----------------------------------
+ -- Error_Msg_Ada_2005_Extension --
+ ----------------------------------
+
+ procedure Error_Msg_Ada_2005_Extension (Extension : String) is
+ Loc : constant Source_Ptr := Token_Ptr;
+ begin
+ if Ada_Version < Ada_2005 then
+ Error_Msg (Extension & " is an Ada 2005 extension", Loc);
+
+ if No (Ada_Version_Pragma) then
+ Error_Msg ("\unit must be compiled with -gnat05 switch", Loc);
+ else
+ Error_Msg_Sloc := Sloc (Ada_Version_Pragma);
+ Error_Msg ("\incompatible with Ada version set#", Loc);
+ end if;
+ end if;
+ end Error_Msg_Ada_2005_Extension;
+
--------------------------------
-- Error_Msg_Ada_2012_Feature --
--------------------------------
diff --git a/gcc/ada/errout.ads b/gcc/ada/errout.ads
index b49b9a9..02cfdee 100644
--- a/gcc/ada/errout.ads
+++ b/gcc/ada/errout.ads
@@ -902,6 +902,11 @@ package Errout is
-- overridden interface primitive Iface_Prim) indicating wrong mode of the
-- first formal (RM 9.4(11.9/3)).
+ procedure Error_Msg_Ada_2005_Extension (Extension : String);
+ -- Analogous to Error_Msg_Ada_2012_Feature, but phrase the message using
+ -- "extension" and not "feature". This routine is only used in the parser,
+ -- so the error is always placed at the Token_Ptr.
+
procedure Error_Msg_Ada_2012_Feature (Feature : String; Loc : Source_Ptr);
-- If not operating in Ada 2012 mode or higher, posts errors complaining
-- that Feature is only supported in Ada 2012, with appropriate suggestions
diff --git a/gcc/ada/exp_aggr.adb b/gcc/ada/exp_aggr.adb
index 30f6dd9..d7e5470 100644
--- a/gcc/ada/exp_aggr.adb
+++ b/gcc/ada/exp_aggr.adb
@@ -1865,21 +1865,6 @@ package body Exp_Aggr is
Typ => Ctype,
With_Default_Init => True));
- -- If Default_Initial_Condition applies to the component type,
- -- add a DIC check after the component is default-initialized.
- -- It will be analyzed and resolved before the code for
- -- initialization of other components.
-
- -- Theoretically this might also be needed for cases where
- -- the component type doesn't have an init proc (such as for
- -- Default_Value cases), but those should be uncommon, and for
- -- now we only support the init proc case. ???
-
- if Has_DIC (Ctype) and then Present (DIC_Procedure (Ctype)) then
- Append_To (Stmts,
- Build_DIC_Call (Loc, New_Copy_Tree (Indexed_Comp), Ctype));
- end if;
-
-- If the component type has invariants, add an invariant
-- check after the component is default-initialized. It will
-- be analyzed and resolved before the code for initialization
@@ -1910,6 +1895,22 @@ package body Exp_Aggr is
Append_To (Stmts, Init_Call);
end if;
end if;
+
+ -- If Default_Initial_Condition applies to the component type,
+ -- add a DIC check after the component is default-initialized,
+ -- as well as after an Initialize procedure is called, in the
+ -- case of components of a controlled type. It will be analyzed
+ -- and resolved before the code for initialization of other
+ -- components.
+
+ -- Theoretically this might also be needed for cases where Expr
+ -- is not empty, but a default init still applies, such as for
+ -- Default_Value cases, in which case we won't get here. ???
+
+ if Has_DIC (Ctype) and then Present (DIC_Procedure (Ctype)) then
+ Append_To (Stmts,
+ Build_DIC_Call (Loc, New_Copy_Tree (Indexed_Comp), Ctype));
+ end if;
end if;
return Add_Loop_Actions (Stmts);
diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb
index 251fa14..7f63a2d 100644
--- a/gcc/ada/exp_attr.adb
+++ b/gcc/ada/exp_attr.adb
@@ -4702,13 +4702,15 @@ package body Exp_Attr is
when Attribute_Mod => Mod_Case : declare
Arg : constant Node_Id := Relocate_Node (First (Exprs));
- Hi : constant Node_Id := Type_High_Bound (Etype (Arg));
+ Hi : constant Node_Id := Type_High_Bound (Base_Type (Etype (Arg)));
Modv : constant Uint := Modulus (Btyp);
begin
-- This is not so simple. The issue is what type to use for the
- -- computation of the modular value.
+ -- computation of the modular value. In addition we need to use
+ -- the base type as above to retrieve a static bound for the
+ -- comparisons that follow.
-- The easy case is when the modulus value is within the bounds
-- of the signed integer type of the argument. In this case we can
@@ -6194,20 +6196,19 @@ package body Exp_Attr is
-- Round --
-----------
- -- The handling of the Round attribute is quite delicate. The processing
- -- in Sem_Attr introduced a conversion to universal real, reflecting the
- -- semantics of Round, but we do not want anything to do with universal
- -- real at runtime, since this corresponds to using floating-point
- -- arithmetic.
+ -- The handling of the Round attribute is delicate when the operand is
+ -- universal fixed. In this case, the processing in Sem_Attr introduced
+ -- a conversion to universal real, reflecting the semantics of Round,
+ -- but we do not want anything to do with universal real at run time,
+ -- since this corresponds to using floating-point arithmetic.
-- What we have now is that the Etype of the Round attribute correctly
-- indicates the final result type. The operand of the Round is the
-- conversion to universal real, described above, and the operand of
-- this conversion is the actual operand of Round, which may be the
- -- special case of a fixed point multiplication or division (Etype =
- -- universal fixed)
+ -- special case of a fixed point multiplication or division.
- -- The exapander will expand first the operand of the conversion, then
+ -- The expander will expand first the operand of the conversion, then
-- the conversion, and finally the round attribute itself, since we
-- always work inside out. But we cannot simply process naively in this
-- order. In the semantic world where universal fixed and real really
@@ -6215,14 +6216,13 @@ package body Exp_Attr is
-- implementation world, where universal real is a floating-point type,
-- we would get the wrong result.
- -- So the approach is as follows. First, when expanding a multiply or
- -- divide whose type is universal fixed, we do nothing at all, instead
- -- deferring the operation till later.
-
- -- The actual processing is done in Expand_N_Type_Conversion which
- -- handles the special case of Round by looking at its parent to see if
- -- it is a Round attribute, and if it is, handling the conversion (or
- -- its fixed multiply/divide child) in an appropriate manner.
+ -- So the approach is as follows. When expanding a multiply or divide
+ -- whose type is universal fixed, Fixup_Universal_Fixed_Operation will
+ -- look up and skip the conversion to universal real if its parent is
+ -- a Round attribute, taking information from this attribute node. In
+ -- the other cases, Expand_N_Type_Conversion does the same by looking
+ -- at its parent to see if it is a Round attribute, before calling the
+ -- fixed-point expansion routine.
-- This means that by the time we get to expanding the Round attribute
-- itself, the Round is nothing more than a type conversion (and will
@@ -6230,8 +6230,12 @@ package body Exp_Attr is
-- appropriate conversion operation.
when Attribute_Round =>
- Rewrite (N,
- Convert_To (Etype (N), Relocate_Node (First (Exprs))));
+ if Etype (First (Exprs)) = Etype (N) then
+ Rewrite (N, Relocate_Node (First (Exprs)));
+ else
+ Rewrite (N, Convert_To (Etype (N), First (Exprs)));
+ Set_Rounded_Result (N);
+ end if;
Analyze_And_Resolve (N);
--------------
@@ -8307,27 +8311,25 @@ package body Exp_Attr is
-- All we do is use the root type (historically this dealt with
-- VAX-float .. to be cleaned up further later ???)
- Fat_Type := Rtyp;
+ if Rtyp = Standard_Short_Float or else Rtyp = Standard_Float then
+ Fat_Type := Standard_Float;
+ Fat_Pkg := RE_Attr_Float;
- if Fat_Type = Standard_Short_Float then
- Fat_Pkg := RE_Attr_Short_Float;
+ elsif Rtyp = Standard_Long_Float then
+ Fat_Type := Standard_Long_Float;
+ Fat_Pkg := RE_Attr_Long_Float;
- elsif Fat_Type = Standard_Float then
- Fat_Pkg := RE_Attr_Float;
-
- elsif Fat_Type = Standard_Long_Float then
- Fat_Pkg := RE_Attr_Long_Float;
-
- elsif Fat_Type = Standard_Long_Long_Float then
- Fat_Pkg := RE_Attr_Long_Long_Float;
+ elsif Rtyp = Standard_Long_Long_Float then
+ Fat_Type := Standard_Long_Long_Float;
+ Fat_Pkg := RE_Attr_Long_Long_Float;
-- Universal real (which is its own root type) is treated as being
-- equivalent to Standard.Long_Long_Float, since it is defined to
-- have the same precision as the longest Float type.
- elsif Fat_Type = Universal_Real then
+ elsif Rtyp = Universal_Real then
Fat_Type := Standard_Long_Long_Float;
- Fat_Pkg := RE_Attr_Long_Long_Float;
+ Fat_Pkg := RE_Attr_Long_Long_Float;
else
raise Program_Error;
diff --git a/gcc/ada/exp_ch11.adb b/gcc/ada/exp_ch11.adb
index 3ab2ea2..a501bf1 100644
--- a/gcc/ada/exp_ch11.adb
+++ b/gcc/ada/exp_ch11.adb
@@ -1864,8 +1864,8 @@ package body Exp_Ch11 is
then
return Empty;
- -- Test for handled sequence of statements with at least one
- -- exception handler which might be the one we are looking for.
+ -- Test for handled sequence of statements with at least one
+ -- exception handler which might be the one we are looking for.
elsif Nkind (P) = N_Handled_Sequence_Of_Statements
and then Present (Exception_Handlers (P))
diff --git a/gcc/ada/exp_ch3.adb b/gcc/ada/exp_ch3.adb
index bbb7d53..e0040ed 100644
--- a/gcc/ada/exp_ch3.adb
+++ b/gcc/ada/exp_ch3.adb
@@ -697,6 +697,11 @@ package body Exp_Ch3 is
and then not GNATprove_Mode
+ -- DIC checks for components of controlled types are done later
+ -- (see Exp_Ch7.Make_Deep_Array_Body).
+
+ and then not Is_Controlled (Comp_Type)
+
and then Present (DIC_Procedure (Comp_Type))
and then not Has_Null_Body (DIC_Procedure (Comp_Type))
@@ -9019,13 +9024,13 @@ package body Exp_Ch3 is
if Warning_Needed then
Error_Msg_N
- ("Objects of the type cannot be initialized statically "
+ ("objects of the type cannot be initialized statically "
& "by default??", Parent (E));
end if;
end if;
else
- Error_Msg_N ("Object cannot be initialized statically??", E);
+ Error_Msg_N ("object cannot be initialized statically??", E);
end if;
end if;
end Initialization_Warning;
diff --git a/gcc/ada/exp_ch4.adb b/gcc/ada/exp_ch4.adb
index ecaeeb2..04bd1fe 100644
--- a/gcc/ada/exp_ch4.adb
+++ b/gcc/ada/exp_ch4.adb
@@ -11162,7 +11162,7 @@ package body Exp_Ch4 is
-- because the selected component may be a reference to the
-- object being initialized, whose discriminant is not yet
-- set. This only happens in complex cases involving changes
- -- or representation.
+ -- of representation.
if Disc = Entity (Selector_Name (N))
and then (Is_Entity_Name (Dval)
@@ -11174,15 +11174,7 @@ package body Exp_Ch4 is
-- constrained by an outer discriminant, which cannot
-- be optimized away.
- if Denotes_Discriminant
- (Dval, Check_Concurrent => True)
- then
- exit Discr_Loop;
-
- elsif Nkind (Original_Node (Dval)) = N_Selected_Component
- and then
- Denotes_Discriminant
- (Selector_Name (Original_Node (Dval)), True)
+ if Denotes_Discriminant (Dval, Check_Concurrent => True)
then
exit Discr_Loop;
@@ -12556,9 +12548,9 @@ package body Exp_Ch4 is
and then Nkind (Parent (N)) = N_Attribute_Reference
and then Attribute_Name (Parent (N)) = Name_Round
then
- Set_Rounded_Result (N);
Set_Etype (N, Etype (Parent (N)));
Target_Type := Etype (N);
+ Set_Rounded_Result (N);
end if;
if Is_Fixed_Point_Type (Target_Type) then
@@ -12815,56 +12807,6 @@ package body Exp_Ch4 is
return;
end if;
- -- If we have a conversion of a compile time known value to a target
- -- type and the value is in range of the target type, then we can simply
- -- replace the construct by an integer literal of the correct type. We
- -- only apply this to discrete types being converted. Possibly it may
- -- apply in other cases, but it is too much trouble to worry about.
-
- -- Note that we do not do this transformation if the Kill_Range_Check
- -- flag is set, since then the value may be outside the expected range.
- -- This happens in the Normalize_Scalars case.
-
- -- We also skip this if either the target or operand type is biased
- -- because in this case, the unchecked conversion is supposed to
- -- preserve the bit pattern, not the integer value.
-
- if Is_Integer_Type (Target_Type)
- and then not Has_Biased_Representation (Target_Type)
- and then Is_Discrete_Type (Operand_Type)
- and then not Has_Biased_Representation (Operand_Type)
- and then Compile_Time_Known_Value (Operand)
- and then not Kill_Range_Check (N)
- then
- declare
- Val : constant Uint := Expr_Rep_Value (Operand);
-
- begin
- if Compile_Time_Known_Value (Type_Low_Bound (Target_Type))
- and then
- Compile_Time_Known_Value (Type_High_Bound (Target_Type))
- and then
- Val >= Expr_Value (Type_Low_Bound (Target_Type))
- and then
- Val <= Expr_Value (Type_High_Bound (Target_Type))
- then
- Rewrite (N, Make_Integer_Literal (Sloc (N), Val));
-
- -- If Address is the target type, just set the type to avoid a
- -- spurious type error on the literal when Address is a visible
- -- integer type.
-
- if Is_Descendant_Of_Address (Target_Type) then
- Set_Etype (N, Target_Type);
- else
- Analyze_And_Resolve (N, Target_Type);
- end if;
-
- return;
- end if;
- end;
- end if;
-
-- Generate an extra temporary for cases unsupported by the C backend
if Modify_Tree_For_C then
@@ -13375,7 +13317,8 @@ package body Exp_Ch4 is
-- will be to universal real, and our real type comes from the Round
-- attribute (as well as an indication that we must round the result)
- if Nkind (Parent (Conv)) = N_Attribute_Reference
+ if Etype (Conv) = Universal_Real
+ and then Nkind (Parent (Conv)) = N_Attribute_Reference
and then Attribute_Name (Parent (Conv)) = Name_Round
then
Set_Etype (N, Base_Type (Etype (Parent (Conv))));
diff --git a/gcc/ada/exp_ch5.adb b/gcc/ada/exp_ch5.adb
index 307acaa..4cae2ee 100644
--- a/gcc/ada/exp_ch5.adb
+++ b/gcc/ada/exp_ch5.adb
@@ -1623,14 +1623,27 @@ package body Exp_Ch5 is
CI : constant List_Id := Component_Items (CL);
VP : constant Node_Id := Variant_Part (CL);
- Alts : List_Id;
- DC : Node_Id;
- DCH : List_Id;
- Expr : Node_Id;
- Result : List_Id;
- V : Node_Id;
+ Constrained_Typ : Entity_Id;
+ Alts : List_Id;
+ DC : Node_Id;
+ DCH : List_Id;
+ Expr : Node_Id;
+ Result : List_Id;
+ V : Node_Id;
begin
+ -- Try to find a constrained type to extract discriminant values
+ -- from, so that the case statement built below gets an
+ -- opportunity to be folded by Expand_N_Case_Statement.
+
+ if U_U or else Is_Constrained (Etype (Rhs)) then
+ Constrained_Typ := Etype (Rhs);
+ elsif Is_Constrained (Etype (Expression (N))) then
+ Constrained_Typ := Etype (Expression (N));
+ else
+ Constrained_Typ := Empty;
+ end if;
+
Result := Make_Field_Assigns (CI);
if Present (VP) then
@@ -1652,17 +1665,12 @@ package body Exp_Ch5 is
Next_Non_Pragma (V);
end loop;
- -- If we have an Unchecked_Union, use the value of the inferred
- -- discriminant of the variant part expression as the switch
- -- for the case statement. The case statement may later be
- -- folded.
-
- if U_U then
+ if Present (Constrained_Typ) then
Expr :=
New_Copy (Get_Discriminant_Value (
Entity (Name (VP)),
- Etype (Rhs),
- Discriminant_Constraint (Etype (Rhs))));
+ Constrained_Typ,
+ Discriminant_Constraint (Constrained_Typ)));
else
Expr :=
Make_Selected_Component (Loc,
@@ -1786,9 +1794,10 @@ package body Exp_Ch5 is
-- Start of processing for Expand_Assign_Record
begin
- -- Note that we use the base types for this processing. This results
- -- in some extra work in the constrained case, but the change of
- -- representation case is so unusual that it is not worth the effort.
+ -- Note that we need to use the base types for this processing in
+ -- order to retrieve the Type_Definition. In the constrained case,
+ -- we filter out the non relevant fields in
+ -- Make_Component_List_Assign.
-- First copy the discriminants. This is done unconditionally. It
-- is required in the unconstrained left side case, and also in the
@@ -1824,7 +1833,7 @@ package body Exp_Ch5 is
CF := F;
end if;
- if Is_Unchecked_Union (Base_Type (R_Typ)) then
+ if Is_Unchecked_Union (R_Typ) then
-- Within an initialization procedure this is the
-- assignment to an unchecked union component, in which
@@ -1916,8 +1925,8 @@ package body Exp_Ch5 is
Insert_Actions (N,
Make_Component_List_Assign (Component_List (RDef), True));
else
- Insert_Actions
- (N, Make_Component_List_Assign (Component_List (RDef)));
+ Insert_Actions (N,
+ Make_Component_List_Assign (Component_List (RDef)));
end if;
Rewrite (N, Make_Null_Statement (Loc));
@@ -4681,6 +4690,16 @@ package body Exp_Ch5 is
New_Id : Entity_Id;
begin
+ -- If Discrete_Subtype_Definition has been rewritten as an
+ -- N_Raise_xxx_Error, rewrite the whole loop as a raise node to
+ -- avoid confusing the code generator down the line.
+
+ if Nkind (Discrete_Subtype_Definition (LPS)) in N_Raise_xxx_Error
+ then
+ Rewrite (N, Discrete_Subtype_Definition (LPS));
+ return;
+ end if;
+
if Present (Iterator_Filter (LPS)) then
pragma Assert (Ada_Version >= Ada_2020);
Set_Statements (N,
diff --git a/gcc/ada/exp_ch6.adb b/gcc/ada/exp_ch6.adb
index 98a1ceb..2cd40e4 100644
--- a/gcc/ada/exp_ch6.adb
+++ b/gcc/ada/exp_ch6.adb
@@ -883,9 +883,8 @@ package body Exp_Ch6 is
is
Loc : constant Source_Ptr := Sloc (Func_Body);
- Proc_Decl : constant Node_Id :=
- Next (Unit_Declaration_Node (Func_Id));
- -- It is assumed that the next node following the declaration of the
+ Proc_Decl : constant Node_Id := Prev (Unit_Declaration_Node (Func_Id));
+ -- It is assumed that the node before the declaration of the
-- corresponding subprogram spec is the declaration of the procedure
-- form.
@@ -3492,8 +3491,7 @@ package body Exp_Ch6 is
-- of the dimension I/O packages.
if Ada_Version >= Ada_2012
- and then
- Nkind (Call_Node) in N_Procedure_Call_Statement | N_Function_Call
+ and then Nkind (Call_Node) in N_Subprogram_Call
and then Present (Parameter_Associations (Call_Node))
then
Expand_Put_Call_With_Symbol (Call_Node);
@@ -6247,9 +6245,24 @@ package body Exp_Ch6 is
-- Call the _Postconditions procedure if the related subprogram
-- has contract assertions that need to be verified on exit.
+ -- Also, mark the successful return to signal that postconditions
+ -- need to be evaluated when finalization occurs.
+
if Ekind (Spec_Id) = E_Procedure
and then Present (Postconditions_Proc (Spec_Id))
then
+ -- Generate:
+ --
+ -- Return_Success_For_Postcond := True;
+ -- _postconditions;
+
+ Insert_Action (Stmt,
+ Make_Assignment_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Get_Return_Success_For_Postcond (Spec_Id), Loc),
+ Expression => New_Occurrence_Of (Standard_True, Loc)));
+
Insert_Action (Stmt,
Make_Procedure_Call_Statement (Loc,
Name =>
@@ -6571,6 +6584,7 @@ package body Exp_Ch6 is
Prot_Bod : Node_Id;
Prot_Decl : Node_Id;
Prot_Id : Entity_Id;
+ Typ : Entity_Id;
begin
-- Deal with case of protected subprogram. Do not generate protected
@@ -6645,10 +6659,12 @@ package body Exp_Ch6 is
-- are not needed by the C generator (and this also produces cleaner
-- output).
+ Typ := Get_Fullest_View (Etype (Subp));
+
if Transform_Function_Array
and then Nkind (Specification (N)) = N_Function_Specification
- and then Is_Array_Type (Etype (Subp))
- and then Is_Constrained (Etype (Subp))
+ and then Is_Array_Type (Typ)
+ and then Is_Constrained (Typ)
and then not Is_Unchecked_Conversion_Instance (Subp)
then
Build_Procedure_Form (N);
@@ -6674,9 +6690,24 @@ package body Exp_Ch6 is
-- Call the _Postconditions procedure if the related subprogram has
-- contract assertions that need to be verified on exit.
+ -- Also, mark the successful return to signal that postconditions need
+ -- to be evaluated when finalization occurs.
+
if Ekind (Scope_Id) in E_Entry | E_Entry_Family | E_Procedure
and then Present (Postconditions_Proc (Scope_Id))
then
+ -- Generate:
+ --
+ -- Return_Success_For_Postcond := True;
+ -- _postconditions;
+
+ Insert_Action (N,
+ Make_Assignment_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Get_Return_Success_For_Postcond (Scope_Id), Loc),
+ Expression => New_Occurrence_Of (Standard_True, Loc)));
+
Insert_Action (N,
Make_Procedure_Call_Statement (Loc,
Name => New_Occurrence_Of (Postconditions_Proc (Scope_Id), Loc)));
@@ -7563,6 +7594,41 @@ package body Exp_Ch6 is
Force_Evaluation (Exp, Mode => Strict);
+ -- Save the return value or a pointer to the return value since we
+ -- may need to call postconditions after finalization when cleanup
+ -- actions are present.
+
+ -- Generate:
+ --
+ -- Result_Object_For_Postcond := [Exp]'Unrestricted_Access;
+
+ Insert_Action (Exp,
+ Make_Assignment_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Get_Result_Object_For_Postcond (Scope_Id), Loc),
+ Expression =>
+ (if Is_Elementary_Type (Etype (R_Type)) then
+ New_Copy_Tree (Exp)
+ else
+ Make_Attribute_Reference (Loc,
+ Attribute_Name => Name_Unrestricted_Access,
+ Prefix => New_Copy_Tree (Exp)))));
+
+ -- Mark the successful return to signal that postconditions need to
+ -- be evaluated when finalization occurs.
+
+ -- Generate:
+ --
+ -- Return_Success_For_Postcond := True;
+
+ Insert_Action (Exp,
+ Make_Assignment_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Get_Return_Success_For_Postcond (Scope_Id), Loc),
+ Expression => New_Occurrence_Of (Standard_True, Loc)));
+
-- Generate call to _Postconditions
Insert_Action (Exp,
@@ -8091,6 +8157,7 @@ package body Exp_Ch6 is
if True then
Result := Is_Controlled (T)
+ and then not Is_Generic_Actual_Type (T)
and then Present (Enclosing_Subprogram (T))
and then not Is_Compilation_Unit (Enclosing_Subprogram (T))
and then Ekind (Enclosing_Subprogram (T)) = E_Procedure;
@@ -9275,7 +9342,7 @@ package body Exp_Ch6 is
Tmp_Id : Entity_Id;
begin
- -- No action of the call has already been processed
+ -- No action if the call has already been processed
if Is_Expanded_Build_In_Place_Call (BIP_Func_Call) then
return;
@@ -9950,7 +10017,7 @@ package body Exp_Ch6 is
procedure Warn_BIP (Func_Call : Node_Id) is
begin
if Debug_Flag_Underscore_BB then
- Error_Msg_N ("build-in-place function call?", Func_Call);
+ Error_Msg_N ("build-in-place function call??", Func_Call);
end if;
end Warn_BIP;
diff --git a/gcc/ada/exp_ch7.adb b/gcc/ada/exp_ch7.adb
index 55f714c..5d8ad7d 100644
--- a/gcc/ada/exp_ch7.adb
+++ b/gcc/ada/exp_ch7.adb
@@ -27,42 +27,43 @@
-- - controlled types
-- - transient scopes
-with Atree; use Atree;
-with Debug; use Debug;
-with Einfo; use Einfo;
-with Elists; use Elists;
-with Errout; use Errout;
-with Exp_Ch6; use Exp_Ch6;
-with Exp_Ch9; use Exp_Ch9;
-with Exp_Ch11; use Exp_Ch11;
-with Exp_Dbug; use Exp_Dbug;
-with Exp_Dist; use Exp_Dist;
-with Exp_Disp; use Exp_Disp;
-with Exp_Prag; use Exp_Prag;
-with Exp_Tss; use Exp_Tss;
-with Exp_Util; use Exp_Util;
-with Freeze; use Freeze;
-with Lib; use Lib;
-with Nlists; use Nlists;
-with Nmake; use Nmake;
-with Opt; use Opt;
-with Output; use Output;
-with Restrict; use Restrict;
-with Rident; use Rident;
-with Rtsfind; use Rtsfind;
-with Sinfo; use Sinfo;
-with Sem; use Sem;
-with Sem_Aux; use Sem_Aux;
-with Sem_Ch3; use Sem_Ch3;
-with Sem_Ch7; use Sem_Ch7;
-with Sem_Ch8; use Sem_Ch8;
-with Sem_Res; use Sem_Res;
-with Sem_Util; use Sem_Util;
-with Snames; use Snames;
-with Stand; use Stand;
-with Tbuild; use Tbuild;
-with Ttypes; use Ttypes;
-with Uintp; use Uintp;
+with Atree; use Atree;
+with Contracts; use Contracts;
+with Debug; use Debug;
+with Einfo; use Einfo;
+with Elists; use Elists;
+with Errout; use Errout;
+with Exp_Ch6; use Exp_Ch6;
+with Exp_Ch9; use Exp_Ch9;
+with Exp_Ch11; use Exp_Ch11;
+with Exp_Dbug; use Exp_Dbug;
+with Exp_Dist; use Exp_Dist;
+with Exp_Disp; use Exp_Disp;
+with Exp_Prag; use Exp_Prag;
+with Exp_Tss; use Exp_Tss;
+with Exp_Util; use Exp_Util;
+with Freeze; use Freeze;
+with Lib; use Lib;
+with Nlists; use Nlists;
+with Nmake; use Nmake;
+with Opt; use Opt;
+with Output; use Output;
+with Restrict; use Restrict;
+with Rident; use Rident;
+with Rtsfind; use Rtsfind;
+with Sinfo; use Sinfo;
+with Sem; use Sem;
+with Sem_Aux; use Sem_Aux;
+with Sem_Ch3; use Sem_Ch3;
+with Sem_Ch7; use Sem_Ch7;
+with Sem_Ch8; use Sem_Ch8;
+with Sem_Res; use Sem_Res;
+with Sem_Util; use Sem_Util;
+with Snames; use Snames;
+with Stand; use Stand;
+with Tbuild; use Tbuild;
+with Ttypes; use Ttypes;
+with Uintp; use Uintp;
package body Exp_Ch7 is
@@ -339,6 +340,17 @@ package body Exp_Ch7 is
-- such as for task termination. Fin_Id is the finalizer declaration
-- entity.
+ procedure Build_Finalizer_Helper
+ (N : Node_Id;
+ Clean_Stmts : List_Id;
+ Mark_Id : Entity_Id;
+ Top_Decls : List_Id;
+ Defer_Abort : Boolean;
+ Fin_Id : out Entity_Id;
+ Finalize_Old_Only : Boolean);
+ -- An internal routine which does all of the heavy lifting on behalf of
+ -- Build_Finalizer.
+
procedure Build_Finalizer_Call (N : Node_Id; Fin_Id : Entity_Id);
-- N is a construct which contains a handled sequence of statements, Fin_Id
-- is the entity of a finalizer. Create an At_End handler which covers the
@@ -1397,20 +1409,32 @@ package body Exp_Ch7 is
else
Append_Freeze_Actions (Ptr_Typ, Actions);
end if;
+
+ Analyze_List (Actions);
+
+ -- When the type the finalization master is being generated for was
+ -- created to store a 'Old object, then mark it as such so its
+ -- finalization can be delayed until after postconditions have been
+ -- checked.
+
+ if Stores_Attribute_Old_Prefix (Ptr_Typ) then
+ Set_Stores_Attribute_Old_Prefix (Fin_Mas_Id);
+ end if;
end;
end Build_Finalization_Master;
- ---------------------
- -- Build_Finalizer --
- ---------------------
+ ----------------------------
+ -- Build_Finalizer_Helper --
+ ----------------------------
- procedure Build_Finalizer
+ procedure Build_Finalizer_Helper
(N : Node_Id;
Clean_Stmts : List_Id;
Mark_Id : Entity_Id;
Top_Decls : List_Id;
Defer_Abort : Boolean;
- Fin_Id : out Entity_Id)
+ Fin_Id : out Entity_Id;
+ Finalize_Old_Only : Boolean)
is
Acts_As_Clean : constant Boolean :=
Present (Mark_Id)
@@ -1746,9 +1770,20 @@ package body Exp_Ch7 is
-- The default name is _finalizer
else
- Fin_Id :=
- Make_Defining_Identifier (Loc,
- Chars => New_External_Name (Name_uFinalizer));
+ -- Generation of a finalization procedure exclusively for 'Old
+ -- interally generated constants requires different name since
+ -- there will need to be multiple finalization routines in the
+ -- same scope. See Build_Finalizer for details.
+
+ if Finalize_Old_Only then
+ Fin_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_External_Name (Name_uFinalizer_Old));
+ else
+ Fin_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_External_Name (Name_uFinalizer));
+ end if;
-- The visibility semantics of AT_END handlers force a strange
-- separation of spec and body for stack-related finalizers:
@@ -2051,8 +2086,26 @@ package body Exp_Ch7 is
pragma Assert (Present (Spec_Decls));
- Append_To (Spec_Decls, Fin_Spec);
- Analyze (Fin_Spec);
+ -- It maybe possible that we are finalizing 'Old objects which
+ -- exist in the spec declarations. When this is the case the
+ -- Finalizer_Insert_Node will come before the end of the
+ -- Spec_Decls. So, to mitigate this, we insert the finalizer spec
+ -- earlier at the Finalizer_Insert_Nod instead of appending to the
+ -- end of Spec_Decls to prevent its body appearing before its
+ -- corresponding spec.
+
+ if Present (Finalizer_Insert_Nod)
+ and then List_Containing (Finalizer_Insert_Nod) = Spec_Decls
+ then
+ Insert_After_And_Analyze (Finalizer_Insert_Nod, Fin_Spec);
+ Finalizer_Insert_Nod := Fin_Spec;
+
+ -- Otherwise, Finalizer_Insert_Nod is not in Spec_Decls
+
+ else
+ Append_To (Spec_Decls, Fin_Spec);
+ Analyze (Fin_Spec);
+ end if;
-- When the finalizer acts solely as a cleanup routine, the body
-- is inserted right after the spec.
@@ -2194,9 +2247,26 @@ package body Exp_Ch7 is
Decl := Last_Non_Pragma (Decls);
while Present (Decl) loop
+ -- Depending on the value of flag Finalize_Old_Only we determine
+ -- which objects get finalized as part of the current finalizer
+ -- being built.
+
+ -- When True, only temporaries capturing the value of attribute
+ -- 'Old are finalized and all other cases are ignored.
+
+ -- When False, temporary objects used to capture the value of 'Old
+ -- are ignored and all others are considered.
+
+ if Finalize_Old_Only
+ xor (Nkind (Decl) = N_Object_Declaration
+ and then Stores_Attribute_Old_Prefix
+ (Defining_Identifier (Decl)))
+ then
+ null;
+
-- Library-level tagged types
- if Nkind (Decl) = N_Full_Type_Declaration then
+ elsif Nkind (Decl) = N_Full_Type_Declaration then
Typ := Defining_Identifier (Decl);
-- Ignored Ghost types do not need any cleanup actions because
@@ -3409,7 +3479,7 @@ package body Exp_Ch7 is
New_Occurrence_Of (DT_Ptr, Loc))));
end Process_Tagged_Type_Declaration;
- -- Start of processing for Build_Finalizer
+ -- Start of processing for Build_Finalizer_Helper
begin
Fin_Id := Empty;
@@ -3559,7 +3629,7 @@ package body Exp_Ch7 is
if Acts_As_Clean or else Has_Ctrl_Objs or else Has_Tagged_Types then
Create_Finalizer;
end if;
- end Build_Finalizer;
+ end Build_Finalizer_Helper;
--------------------------
-- Build_Finalizer_Call --
@@ -3643,6 +3713,468 @@ package body Exp_Ch7 is
end Build_Finalizer_Call;
---------------------
+ -- Build_Finalizer --
+ ---------------------
+
+ procedure Build_Finalizer
+ (N : Node_Id;
+ Clean_Stmts : List_Id;
+ Mark_Id : Entity_Id;
+ Top_Decls : List_Id;
+ Defer_Abort : Boolean;
+ Fin_Id : out Entity_Id)
+ is
+ Def_Ent : constant Entity_Id := Unique_Defining_Entity (N);
+ Loc : constant Source_Ptr := Sloc (N);
+
+ -- Declarations used for the creation of _finalization_controller
+
+ Fin_Old_Id : Entity_Id := Empty;
+ Fin_Controller_Id : Entity_Id := Empty;
+ Fin_Controller_Decls : List_Id;
+ Fin_Controller_Stmts : List_Id;
+ Fin_Controller_Body : Node_Id := Empty;
+ Fin_Controller_Spec : Node_Id := Empty;
+ Postconditions_Call : Node_Id := Empty;
+
+ -- Defining identifiers for local objects used to store exception info
+
+ Raised_Post_Exception_Id : Entity_Id := Empty;
+ Raised_Finalization_Exception_Id : Entity_Id := Empty;
+ Saved_Exception_Id : Entity_Id := Empty;
+
+ -- Start of processing for Build_Finalizer
+
+ begin
+ -- Create the general finalization routine
+
+ Build_Finalizer_Helper
+ (N => N,
+ Clean_Stmts => Clean_Stmts,
+ Mark_Id => Mark_Id,
+ Top_Decls => Top_Decls,
+ Defer_Abort => Defer_Abort,
+ Fin_Id => Fin_Id,
+ Finalize_Old_Only => False);
+
+ -- When postconditions are present, expansion gets much more complicated
+ -- due to both the fact that they must be called after finalization and
+ -- that finalization of 'Old objects must occur after the postconditions
+ -- get checked.
+
+ -- Additionally, exceptions between general finalization and 'Old
+ -- finalization must be propagated correctly and exceptions which happen
+ -- during _postconditions need to be saved and reraised after
+ -- finalization of 'Old objects.
+
+ -- Generate:
+ --
+ -- Postcond_Enabled := False;
+ --
+ -- procedure _finalization_controller is
+ --
+ -- -- Exception capturing and tracking
+ --
+ -- Saved_Exception : Exception_Occurrence;
+ -- Raised_Post_Exception : Boolean := False;
+ -- Raised_Finalization_Exception : Boolean := False;
+ --
+ -- -- Start of processing for _finalization_controller
+ --
+ -- begin
+ -- -- Perform general finalization
+ --
+ -- begin
+ -- _finalizer;
+ -- exception
+ -- when others =>
+ -- -- Save the exception
+ --
+ -- Raised_Finalization_Exception := True;
+ -- Save_Occurrence
+ -- (Saved_Exception, Get_Current_Excep.all);
+ -- end;
+ --
+ -- -- Perform postcondition checks after general finalization, but
+ -- -- before finalization of 'Old related objects.
+ --
+ -- if not Raised_Finalization_Exception then
+ -- begin
+ -- -- Re-enable postconditions and check them
+ --
+ -- Postcond_Enabled := True;
+ -- _postconditions [(Result_Obj_For_Postcond[.all])];
+ -- exception
+ -- when others =>
+ -- -- Save the exception
+ --
+ -- Raised_Post_Exception := True;
+ -- Save_Occurrence
+ -- (Saved_Exception, Get_Current_Excep.all);
+ -- end;
+ -- end if;
+ --
+ -- -- Finally finalize 'Old related objects
+ --
+ -- begin
+ -- _finalizer_old;
+ -- exception
+ -- when others =>
+ -- -- Reraise the previous finalization error if there is
+ -- -- one.
+ --
+ -- if Raised_Finalization_Exception then
+ -- Reraise_Occurrence (Saved_Exception);
+ -- end if;
+ --
+ -- -- Otherwise, reraise the current one
+ --
+ -- raise;
+ -- end;
+ --
+ -- -- Reraise any saved exception
+ --
+ -- if Raised_Finalization_Exception
+ -- or else Raised_Post_Exception
+ -- then
+ -- Reraise_Occurrence (Saved_Exception);
+ -- end if;
+ -- end _finalization_controller;
+
+ if Nkind (N) = N_Subprogram_Body
+ and then Present (Postconditions_Proc (Def_Ent))
+ then
+ Fin_Controller_Stmts := New_List;
+ Fin_Controller_Decls := New_List;
+
+ -- Build the 'Old finalizer
+
+ Build_Finalizer_Helper
+ (N => N,
+ Clean_Stmts => Empty_List,
+ Mark_Id => Mark_Id,
+ Top_Decls => Top_Decls,
+ Defer_Abort => Defer_Abort,
+ Fin_Id => Fin_Old_Id,
+ Finalize_Old_Only => True);
+
+ -- Create local declarations for _finalization_controller needed for
+ -- saving exceptions.
+ --
+ -- Generate:
+ --
+ -- Saved_Exception : Exception_Occurrence;
+ -- Raised_Post_Exception : Boolean := False;
+ -- Raised_Finalization_Exception : Boolean := False;
+
+ Saved_Exception_Id := Make_Temporary (Loc, 'S');
+ Raised_Post_Exception_Id := Make_Temporary (Loc, 'P');
+ Raised_Finalization_Exception_Id := Make_Temporary (Loc, 'F');
+
+ Append_List_To (Fin_Controller_Decls, New_List (
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Saved_Exception_Id,
+ Object_Definition =>
+ New_Occurrence_Of (RTE (RE_Exception_Occurrence), Loc)),
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Raised_Post_Exception_Id,
+ Object_Definition => New_Occurrence_Of (Standard_Boolean, Loc),
+ Expression => New_Occurrence_Of (Standard_False, Loc)),
+ Make_Object_Declaration (Loc,
+ Defining_Identifier => Raised_Finalization_Exception_Id,
+ Object_Definition => New_Occurrence_Of (Standard_Boolean, Loc),
+ Expression => New_Occurrence_Of (Standard_False, Loc))));
+
+ -- Call _finalizer and save any exceptions which occur
+
+ -- Generate:
+ --
+ -- begin
+ -- _finalizer;
+ -- exception
+ -- when others =>
+ -- Raised_Finalization_Exception := True;
+ -- Save_Occurrence
+ -- (Saved_Exception, Get_Current_Excep.all);
+ -- end;
+
+ if Present (Fin_Id) then
+ Append_To (Fin_Controller_Stmts,
+ Make_Block_Statement (Loc,
+ Handled_Statement_Sequence =>
+ Make_Handled_Sequence_Of_Statements (Loc,
+ Statements => New_List (
+ Make_Procedure_Call_Statement (Loc,
+ Name => New_Occurrence_Of (Fin_Id, Loc))),
+ Exception_Handlers => New_List (
+ Make_Exception_Handler (Loc,
+ Exception_Choices => New_List (
+ Make_Others_Choice (Loc)),
+ Statements => New_List (
+ Make_Assignment_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Raised_Finalization_Exception_Id, Loc),
+ Expression =>
+ New_Occurrence_Of (Standard_True, Loc)),
+ Make_Procedure_Call_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (RTE (RE_Save_Occurrence), Loc),
+ Parameter_Associations => New_List (
+ New_Occurrence_Of
+ (Saved_Exception_Id, Loc),
+ Make_Explicit_Dereference (Loc,
+ Prefix =>
+ Make_Function_Call (Loc,
+ Name =>
+ Make_Explicit_Dereference (Loc,
+ Prefix =>
+ New_Occurrence_Of
+ (RTE (RE_Get_Current_Excep),
+ Loc))))))))))));
+ end if;
+
+ -- Create the call to postconditions based on the kind of the current
+ -- subprogram, and the type of the Result_Obj_For_Postcond.
+
+ -- Generate:
+ --
+ -- _postconditions (Result_Obj_For_Postcond[.all]);
+ --
+ -- or
+ --
+ -- _postconditions;
+
+ if Ekind (Def_Ent) = E_Procedure then
+ Postconditions_Call :=
+ Make_Procedure_Call_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Postconditions_Proc (Def_Ent), Loc));
+ else
+ Postconditions_Call :=
+ Make_Procedure_Call_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Postconditions_Proc (Def_Ent), Loc),
+ Parameter_Associations => New_List (
+ (if Is_Elementary_Type (Etype (Def_Ent)) then
+ New_Occurrence_Of
+ (Get_Result_Object_For_Postcond
+ (Def_Ent), Loc)
+ else
+ Make_Explicit_Dereference (Loc,
+ New_Occurrence_Of
+ (Get_Result_Object_For_Postcond
+ (Def_Ent), Loc)))));
+ end if;
+
+ -- Call _postconditions when no general finalization exceptions have
+ -- occured taking care to enable the postconditions and save any
+ -- exception occurrences.
+
+ -- Generate:
+ --
+ -- if not Raised_Finalization_Exception then
+ -- begin
+ -- Postcond_Enabled := True;
+ -- _postconditions [(Result_Obj_For_Postcond[.all])];
+ -- exception
+ -- when others =>
+ -- Raised_Post_Exception := True;
+ -- Save_Occurrence
+ -- (Saved_Exception, Get_Current_Excep.all);
+ -- end;
+ -- end if;
+
+ Append_To (Fin_Controller_Stmts,
+ Make_If_Statement (Loc,
+ Condition =>
+ Make_Op_Not (Loc,
+ Right_Opnd =>
+ New_Occurrence_Of
+ (Raised_Finalization_Exception_Id, Loc)),
+ Then_Statements => New_List (
+ Make_Block_Statement (Loc,
+ Handled_Statement_Sequence =>
+ Make_Handled_Sequence_Of_Statements (Loc,
+ Statements => New_List (
+ Make_Assignment_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Get_Postcond_Enabled (Def_Ent), Loc),
+ Expression =>
+ New_Occurrence_Of
+ (Standard_True, Loc)),
+ Postconditions_Call),
+ Exception_Handlers => New_List (
+ Make_Exception_Handler (Loc,
+ Exception_Choices => New_List (
+ Make_Others_Choice (Loc)),
+ Statements => New_List (
+ Make_Assignment_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Raised_Post_Exception_Id, Loc),
+ Expression =>
+ New_Occurrence_Of (Standard_True, Loc)),
+ Make_Procedure_Call_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (RTE (RE_Save_Occurrence), Loc),
+ Parameter_Associations => New_List (
+ New_Occurrence_Of
+ (Saved_Exception_Id, Loc),
+ Make_Explicit_Dereference (Loc,
+ Prefix =>
+ Make_Function_Call (Loc,
+ Name =>
+ Make_Explicit_Dereference (Loc,
+ Prefix =>
+ New_Occurrence_Of
+ (RTE (RE_Get_Current_Excep),
+ Loc))))))))))))));
+
+ -- Call _finalizer_old and reraise any exception that occurred during
+ -- initial finalization within the exception handler. Otherwise,
+ -- propagate the current exception.
+
+ -- Generate:
+ --
+ -- begin
+ -- _finalizer_old;
+ -- exception
+ -- when others =>
+ -- if Raised_Finalization_Exception then
+ -- Reraise_Occurrence (Saved_Exception);
+ -- end if;
+ -- raise;
+ -- end;
+
+ if Present (Fin_Old_Id) then
+ Append_To (Fin_Controller_Stmts,
+ Make_Block_Statement (Loc,
+ Handled_Statement_Sequence =>
+ Make_Handled_Sequence_Of_Statements (Loc,
+ Statements => New_List (
+ Make_Procedure_Call_Statement (Loc,
+ Name => New_Occurrence_Of (Fin_Old_Id, Loc))),
+ Exception_Handlers => New_List (
+ Make_Exception_Handler (Loc,
+ Exception_Choices => New_List (
+ Make_Others_Choice (Loc)),
+ Statements => New_List (
+ Make_If_Statement (Loc,
+ Condition =>
+ New_Occurrence_Of
+ (Raised_Finalization_Exception_Id, Loc),
+ Then_Statements => New_List (
+ Make_Procedure_Call_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (RTE (RE_Reraise_Occurrence), Loc),
+ Parameter_Associations => New_List (
+ New_Occurrence_Of
+ (Saved_Exception_Id, Loc))))),
+ Make_Raise_Statement (Loc)))))));
+ end if;
+
+ -- Once finalization is complete reraise any pending exceptions
+
+ -- Generate:
+ --
+ -- if Raised_Post_Exception
+ -- or else Raised_Finalization_Exception
+ -- then
+ -- Reraise_Occurrence (Saved_Exception);
+ -- end if;
+
+ Append_To (Fin_Controller_Stmts,
+ Make_If_Statement (Loc,
+ Condition =>
+ Make_Or_Else (Loc,
+ Left_Opnd =>
+ New_Occurrence_Of
+ (Raised_Post_Exception_Id, Loc),
+ Right_Opnd =>
+ New_Occurrence_Of
+ (Raised_Finalization_Exception_Id, Loc)),
+ Then_Statements => New_List (
+ Make_Procedure_Call_Statement (Loc,
+ Name =>
+ New_Occurrence_Of (RTE (RE_Reraise_Occurrence), Loc),
+ Parameter_Associations => New_List (
+ New_Occurrence_Of
+ (Saved_Exception_Id, Loc))))));
+
+ -- Make the finalization controller subprogram body and declaration.
+
+ -- Generate:
+ -- procedure _finalization_controller;
+ --
+ -- procedure _finalization_controller is
+ -- begin
+ -- [Fin_Controller_Stmts];
+ -- end;
+
+ Fin_Controller_Id :=
+ Make_Defining_Identifier (Loc,
+ Chars => New_External_Name (Name_uFinalization_Controller));
+
+ Fin_Controller_Spec :=
+ Make_Subprogram_Declaration (Loc,
+ Specification =>
+ Make_Procedure_Specification (Loc,
+ Defining_Unit_Name => Fin_Controller_Id));
+
+ Fin_Controller_Body :=
+ Make_Subprogram_Body (Loc,
+ Specification =>
+ Make_Procedure_Specification (Loc,
+ Defining_Unit_Name =>
+ Make_Defining_Identifier (Loc, Chars (Fin_Controller_Id))),
+ Declarations => Fin_Controller_Decls,
+ Handled_Statement_Sequence =>
+ Make_Handled_Sequence_Of_Statements (Loc,
+ Statements => Fin_Controller_Stmts));
+
+ -- Disable _postconditions calls which get generated before return
+ -- statements to delay their evaluation until after finalization.
+
+ -- This is done by way of the local Postcond_Enabled object which is
+ -- initially assigned to True - we then create an assignment within
+ -- the subprogram's declaration to make it False and assign it back
+ -- to True before _postconditions is called within
+ -- _finalization_controller.
+
+ -- Generate:
+ --
+ -- Postcond_Enable := False;
+
+ Append_To (Top_Decls,
+ Make_Assignment_Statement (Loc,
+ Name =>
+ New_Occurrence_Of
+ (Get_Postcond_Enabled (Def_Ent), Loc),
+ Expression =>
+ New_Occurrence_Of
+ (Standard_False, Loc)));
+
+ -- Add the subprogram to the list of declarations an analyze it
+
+ Append_To (Top_Decls, Fin_Controller_Spec);
+ Analyze (Fin_Controller_Spec);
+ Insert_After (Fin_Controller_Spec, Fin_Controller_Body);
+ Analyze (Fin_Controller_Body, Suppress => All_Checks);
+
+ -- Return the finalization controller as the result Fin_Id
+
+ Fin_Id := Fin_Controller_Id;
+ end if;
+ end Build_Finalizer;
+
+ ---------------------
-- Build_Late_Proc --
---------------------
@@ -4132,20 +4664,23 @@ package body Exp_Ch7 is
procedure Reset_Scopes_To_Block_Elab_Proc (L : List_Id) is
Id : Entity_Id;
Stat : Node_Id;
+ Node : Node_Id;
begin
Stat := First (L);
while Present (Stat) loop
case Nkind (Stat) is
when N_Block_Statement =>
- Id := Entity (Identifier (Stat));
+ if Present (Identifier (Stat)) then
+ Id := Entity (Identifier (Stat));
- -- The Scope of this block needs to be reset to the new
- -- procedure if the block contains nested subprograms.
+ -- The Scope of this block needs to be reset to the new
+ -- procedure if the block contains nested subprograms.
- if Present (Id) and then Contains_Subprogram (Id) then
- Set_Block_Elab_Proc;
- Set_Scope (Id, Block_Elab_Proc);
+ if Present (Id) and then Contains_Subprogram (Id) then
+ Set_Block_Elab_Proc;
+ Set_Scope (Id, Block_Elab_Proc);
+ end if;
end if;
when N_Loop_Statement =>
@@ -4168,34 +4703,20 @@ package body Exp_Ch7 is
when N_If_Statement =>
Reset_Scopes_To_Block_Elab_Proc (Then_Statements (Stat));
-
Reset_Scopes_To_Block_Elab_Proc (Else_Statements (Stat));
- declare
- Elif : Node_Id;
-
- begin
- Elif := First (Elsif_Parts (Stat));
- while Present (Elif) loop
- Reset_Scopes_To_Block_Elab_Proc
- (Then_Statements (Elif));
-
- Next (Elif);
- end loop;
- end;
+ Node := First (Elsif_Parts (Stat));
+ while Present (Node) loop
+ Reset_Scopes_To_Block_Elab_Proc (Then_Statements (Node));
+ Next (Node);
+ end loop;
when N_Case_Statement =>
- declare
- Alt : Node_Id;
-
- begin
- Alt := First (Alternatives (Stat));
- while Present (Alt) loop
- Reset_Scopes_To_Block_Elab_Proc (Statements (Alt));
-
- Next (Alt);
- end loop;
- end;
+ Node := First (Alternatives (Stat));
+ while Present (Node) loop
+ Reset_Scopes_To_Block_Elab_Proc (Statements (Node));
+ Next (Node);
+ end loop;
-- Reset the Scope of a subprogram occurring at the top level
@@ -4817,6 +5338,12 @@ package body Exp_Ch7 is
Nkind (N) = N_Block_Statement
and then Present (Cleanup_Actions (N));
+ Has_Postcondition : constant Boolean :=
+ Nkind (N) = N_Subprogram_Body
+ and then Present
+ (Postconditions_Proc
+ (Unique_Defining_Entity (N)));
+
Actions_Required : constant Boolean :=
Requires_Cleanup_Actions (N, True)
or else Is_Asynchronous_Call
@@ -5031,6 +5558,34 @@ package body Exp_Ch7 is
end;
end if;
+ -- Move the _postconditions subprogram declaration and its associated
+ -- objects into the declarations section so that it is callable
+ -- within _postconditions.
+
+ if Has_Postcondition then
+ declare
+ Decl : Node_Id;
+ Prev_Decl : Node_Id;
+
+ begin
+ Decl :=
+ Prev (Subprogram_Body
+ (Postconditions_Proc (Current_Subprogram)));
+ while Present (Decl) loop
+ Prev_Decl := Prev (Decl);
+
+ Remove (Decl);
+ Prepend_To (New_Decls, Decl);
+
+ exit when Nkind (Decl) = N_Subprogram_Declaration
+ and then Chars (Corresponding_Body (Decl))
+ = Name_uPostconditions;
+
+ Decl := Prev_Decl;
+ end loop;
+ end;
+ end if;
+
-- Ensure the presence of a declaration list in order to successfully
-- append all original statements to it.
@@ -5977,7 +6532,7 @@ package body Exp_Ch7 is
begin
-- Nothing to do if the scope does not manage the secondary stack or
- -- does not contain meaninful actions for insertion.
+ -- does not contain meaningful actions for insertion.
if not Manage_SS
and then No (Act_Before)
@@ -6201,22 +6756,6 @@ package body Exp_Ch7 is
end if;
end Make_Adjust_Call;
- ----------------------
- -- Make_Detach_Call --
- ----------------------
-
- function Make_Detach_Call (Obj_Ref : Node_Id) return Node_Id is
- Loc : constant Source_Ptr := Sloc (Obj_Ref);
-
- begin
- return
- Make_Procedure_Call_Statement (Loc,
- Name =>
- New_Occurrence_Of (RTE (RE_Detach), Loc),
- Parameter_Associations => New_List (
- Unchecked_Convert_To (RTE (RE_Root_Controlled_Ptr), Obj_Ref)));
- end Make_Detach_Call;
-
---------------
-- Make_Call --
---------------
@@ -6848,22 +7387,49 @@ package body Exp_Ch7 is
Init_Call := Build_Initialization_Call;
- -- Only create finalization block if there is a non-trivial
- -- call to initialization.
-
- if Present (Init_Call)
- and then Nkind (Init_Call) /= N_Null_Statement
+ -- Only create finalization block if there is a nontrivial call
+ -- to initialization or a Default_Initial_Condition check to be
+ -- performed.
+
+ if (Present (Init_Call)
+ and then Nkind (Init_Call) /= N_Null_Statement)
+ or else
+ (Has_DIC (Comp_Typ)
+ and then not GNATprove_Mode
+ and then Present (DIC_Procedure (Comp_Typ))
+ and then not Has_Null_Body (DIC_Procedure (Comp_Typ)))
then
- Init_Loop :=
- Make_Block_Statement (Loc,
- Handled_Statement_Sequence =>
- Make_Handled_Sequence_Of_Statements (Loc,
- Statements => New_List (Init_Call),
- Exception_Handlers => New_List (
- Make_Exception_Handler (Loc,
- Exception_Choices => New_List (
- Make_Others_Choice (Loc)),
- Statements => New_List (Final_Block)))));
+ declare
+ Init_Stmts : constant List_Id := New_List;
+
+ begin
+ if Present (Init_Call) then
+ Append_To (Init_Stmts, Init_Call);
+ end if;
+
+ if Has_DIC (Comp_Typ)
+ and then Present (DIC_Procedure (Comp_Typ))
+ then
+ Append_To
+ (Init_Stmts,
+ Build_DIC_Call (Loc,
+ Make_Indexed_Component (Loc,
+ Prefix => Make_Identifier (Loc, Name_V),
+ Expressions => New_References_To (Index_List, Loc)),
+ Comp_Typ));
+ end if;
+
+ Init_Loop :=
+ Make_Block_Statement (Loc,
+ Handled_Statement_Sequence =>
+ Make_Handled_Sequence_Of_Statements (Loc,
+ Statements => Init_Stmts,
+ Exception_Handlers => New_List (
+ Make_Exception_Handler (Loc,
+ Exception_Choices => New_List (
+ Make_Others_Choice (Loc)),
+ Statements => New_List (Final_Block)))));
+ end;
Append_To (Statements (Handled_Statement_Sequence (Init_Loop)),
Make_Assignment_Statement (Loc,
@@ -8455,6 +9021,24 @@ package body Exp_Ch7 is
elsif Is_Tagged_Type (Utyp) then
Fin_Id := Find_Optional_Prim_Op (Utyp, TSS_Deep_Finalize);
+ -- Protected types: these also require finalization even though they
+ -- are not marked controlled explicitly.
+
+ elsif Is_Protected_Type (Typ) then
+ -- Protected objects do not need to be finalized on restricted
+ -- runtimes.
+
+ if Restricted_Profile then
+ return Empty;
+
+ -- ??? Only handle the simple case for now. Will not support a record
+ -- or array containing protected objects.
+
+ elsif Is_Simple_Protected_Type (Typ) then
+ Fin_Id := RTE (RE_Finalize_Protection);
+ else
+ raise Program_Error;
+ end if;
else
raise Program_Error;
end if;
@@ -8895,8 +9479,11 @@ package body Exp_Ch7 is
-- The underlying type may not be present due to a missing full view.
-- In this case freezing did not take place and there is no suitable
-- [Deep_]Initialize primitive to call.
+ -- If Typ is protected then no additional processing is needed either.
- if No (Utyp) then
+ if No (Utyp)
+ or else Is_Protected_Type (Typ)
+ then
return Empty;
end if;
@@ -8918,7 +9505,7 @@ package body Exp_Ch7 is
and then Present (Alias (Proc))
and then Is_Trivial_Subprogram (Alias (Proc)))
then
- return Make_Null_Statement (Loc);
+ return Empty;
end if;
-- The object reference may need another conversion depending on the
diff --git a/gcc/ada/exp_ch7.ads b/gcc/ada/exp_ch7.ads
index 235b75a..5f75ab6 100644
--- a/gcc/ada/exp_ch7.ads
+++ b/gcc/ada/exp_ch7.ads
@@ -175,13 +175,6 @@ package Exp_Ch7 is
-- only the components (if any) are adjusted. Return Empty if Adjust or
-- Deep_Adjust is not available, possibly due to previous errors.
- function Make_Detach_Call (Obj_Ref : Node_Id) return Node_Id;
- -- Create a call to unhook an object from an arbitrary list. Obj_Ref is the
- -- object. Generate the following:
- --
- -- Ada.Finalization.Heap_Management.Detach
- -- (System.Finalization_Root.Root_Controlled_Ptr (Obj_Ref));
-
function Make_Final_Call
(Obj_Ref : Node_Id;
Typ : Entity_Id;
diff --git a/gcc/ada/exp_ch9.adb b/gcc/ada/exp_ch9.adb
index 525eee9..b055b27 100644
--- a/gcc/ada/exp_ch9.adb
+++ b/gcc/ada/exp_ch9.adb
@@ -7161,8 +7161,7 @@ package body Exp_Ch9 is
if Ada_Version >= Ada_2005
and then
(No (Original_Node (Ecall))
- or else Nkind (Original_Node (Ecall)) not in
- N_Delay_Relative_Statement | N_Delay_Until_Statement)
+ or else Nkind (Original_Node (Ecall)) not in N_Delay_Statement)
then
Extract_Dispatching_Call (Ecall, Call_Ent, Obj, Actuals, Formals);
diff --git a/gcc/ada/exp_dbug.adb b/gcc/ada/exp_dbug.adb
index dc6cd26..bb0003d 100644
--- a/gcc/ada/exp_dbug.adb
+++ b/gcc/ada/exp_dbug.adb
@@ -648,7 +648,7 @@ package body Exp_Dbug is
-- Fixed-point case: generate GNAT encodings when asked to
if Is_Fixed_Point_Type (E)
- and then GNAT_Encodings /= DWARF_GNAT_Encodings_Minimal
+ and then GNAT_Encodings = DWARF_GNAT_Encodings_All
then
Get_External_Name (E, True, "XF_");
Add_Real_To_Buffer (Delta_Value (E));
diff --git a/gcc/ada/exp_disp.adb b/gcc/ada/exp_disp.adb
index 1a41d79..14f25db 100644
--- a/gcc/ada/exp_disp.adb
+++ b/gcc/ada/exp_disp.adb
@@ -7241,7 +7241,7 @@ package body Exp_Disp is
-- is used by Build_Get_Prim_Op_Address to expand dispatching calls
-- through the primary dispatch table.
- if UI_To_Int (DT_Entry_Count (First_Tag_Component (Typ))) = 0 then
+ if DT_Entry_Count (First_Tag_Component (Typ)) = 0 then
Analyze_List (Result);
-- Generate:
diff --git a/gcc/ada/exp_fixd.adb b/gcc/ada/exp_fixd.adb
index 3bb7207..4c658bb 100644
--- a/gcc/ada/exp_fixd.adb
+++ b/gcc/ada/exp_fixd.adb
@@ -37,7 +37,6 @@ with Sem_Eval; use Sem_Eval;
with Sem_Res; use Sem_Res;
with Sem_Util; use Sem_Util;
with Sinfo; use Sinfo;
-with Snames; use Snames;
with Stand; use Stand;
with Tbuild; use Tbuild;
with Ttypes; use Ttypes;
@@ -417,13 +416,9 @@ package body Exp_Fixd is
-- The result is rounded if the target of the operation is decimal
-- and Rounded_Result is set, or if the target of the operation
- -- is an integer type.
+ -- is an integer type, as determined by Rounded_Result_Set.
- if Is_Integer_Type (Etype (N))
- or else Rounded_Result_Set (N)
- then
- Set_Rounded_Result (Rnode);
- end if;
+ Set_Rounded_Result (Rnode, Rounded_Result_Set (N));
-- One more check. We did the divide operation using the longer of
-- the two sizes, which is reasonable. However, in the case where the
@@ -1792,11 +1787,9 @@ package body Exp_Fixd is
procedure Expand_Convert_Float_To_Fixed (N : Node_Id) is
Expr : constant Node_Id := Expression (N);
- Orig_N : constant Node_Id := Original_Node (N);
Result_Type : constant Entity_Id := Etype (N);
Rng_Check : constant Boolean := Do_Range_Check (N);
Small : constant Ureal := Small_Value (Result_Type);
- Truncate : Boolean;
begin
-- Optimize small = 1, where we can avoid the multiply completely
@@ -1811,15 +1804,6 @@ package body Exp_Fixd is
-- round.
else
- if Is_Decimal_Fixed_Point_Type (Result_Type) then
- Truncate :=
- Nkind (Orig_N) /= N_Attribute_Reference
- or else Get_Attribute_Id
- (Attribute_Name (Orig_N)) /= Attribute_Round;
- else
- Truncate := False;
- end if;
-
Set_Result
(N => N,
Expr =>
@@ -1828,7 +1812,8 @@ package body Exp_Fixd is
L => Fpt_Value (Expr),
R => Real_Literal (N, Ureal_1 / Small)),
Rchk => Rng_Check,
- Trunc => Truncate);
+ Trunc => Is_Decimal_Fixed_Point_Type (Result_Type)
+ and not Rounded_Result (N));
end if;
end Expand_Convert_Float_To_Fixed;
@@ -2107,13 +2092,6 @@ package body Exp_Fixd is
Right : constant Node_Id := Right_Opnd (N);
begin
- -- Suppress expansion of a fixed-by-fixed division if the
- -- operation is supported directly by the target.
-
- if Target_Has_Fixed_Ops (Etype (Left), Etype (Right), Etype (N)) then
- return;
- end if;
-
if Etype (Left) = Universal_Real then
Do_Divide_Universal_Fixed (N);
@@ -2277,13 +2255,6 @@ package body Exp_Fixd is
-- Start of processing for Expand_Multiply_Fixed_By_Fixed_Giving_Fixed
begin
- -- Suppress expansion of a fixed-by-fixed multiplication if the
- -- operation is supported directly by the target.
-
- if Target_Has_Fixed_Ops (Etype (Left), Etype (Right), Etype (N)) then
- return;
- end if;
-
if Etype (Left) = Universal_Real then
if Nkind (Left) = N_Real_Literal then
Do_Multiply_Fixed_Universal (N, Left => Right, Right => Left);
diff --git a/gcc/ada/exp_imgv.adb b/gcc/ada/exp_imgv.adb
index b79d30a..0cb483b 100644
--- a/gcc/ada/exp_imgv.adb
+++ b/gcc/ada/exp_imgv.adb
@@ -880,7 +880,7 @@ package body Exp_Imgv is
-- xx = [Long_Long_[Long_]]Unsigned
-- For floating-point types
- -- xx = Real
+ -- xx = [Long_[Long_]]Float
-- For decimal fixed-point types, typ'Value (X) expands into
@@ -1008,10 +1008,10 @@ package body Exp_Imgv is
then
Vid := RE_Value_Fixed128;
else
- Vid := RE_Value_Real;
+ Vid := RE_Value_Long_Float;
end if;
- if Vid /= RE_Value_Real then
+ if Vid /= RE_Value_Long_Float then
Append_To (Args,
Make_Integer_Literal (Loc, -Norm_Num (Small_Value (Rtyp))));
@@ -1031,7 +1031,27 @@ package body Exp_Imgv is
end;
elsif Is_Floating_Point_Type (Rtyp) then
- Vid := RE_Value_Real;
+ -- Short_Float and Float are the same type for GNAT
+
+ if Rtyp = Standard_Short_Float or else Rtyp = Standard_Float then
+ Vid := RE_Value_Float;
+
+ -- If Long_Float and Long_Long_Float are the same type, then use the
+ -- implementation of the former, which is faster and more accurate.
+
+ elsif Rtyp = Standard_Long_Float
+ or else (Rtyp = Standard_Long_Long_Float
+ and then
+ Standard_Long_Long_Float_Size = Standard_Long_Float_Size)
+ then
+ Vid := RE_Value_Long_Float;
+
+ elsif Rtyp = Standard_Long_Long_Float then
+ Vid := RE_Value_Long_Long_Float;
+
+ else
+ raise Program_Error;
+ end if;
-- Only other possibility is user-defined enumeration type
diff --git a/gcc/ada/exp_intr.adb b/gcc/ada/exp_intr.adb
index 7fc00c7..3be039b 100644
--- a/gcc/ada/exp_intr.adb
+++ b/gcc/ada/exp_intr.adb
@@ -29,7 +29,6 @@ with Einfo; use Einfo;
with Elists; use Elists;
with Expander; use Expander;
with Exp_Atag; use Exp_Atag;
-with Exp_Ch4; use Exp_Ch4;
with Exp_Ch7; use Exp_Ch7;
with Exp_Ch11; use Exp_Ch11;
with Exp_Code; use Exp_Code;
@@ -857,7 +856,7 @@ package body Exp_Intr is
---------------------------
procedure Expand_Unc_Conversion (N : Node_Id; E : Entity_Id) is
- Func : constant Entity_Id := Entity (Name (N));
+ Func : constant Entity_Id := Entity (Name (N));
Conv : Node_Id;
Ftyp : Entity_Id;
Ttyp : Entity_Id;
@@ -908,12 +907,7 @@ package body Exp_Intr is
end if;
Rewrite (N, Unchecked_Convert_To (Ttyp, Conv));
- Set_Etype (N, Ttyp);
- Set_Analyzed (N);
-
- if Nkind (N) = N_Unchecked_Type_Conversion then
- Expand_N_Unchecked_Type_Conversion (N);
- end if;
+ Analyze_And_Resolve (N, Ttyp);
end Expand_Unc_Conversion;
-----------------------------
diff --git a/gcc/ada/exp_pakd.adb b/gcc/ada/exp_pakd.adb
index 07a05a5..c90409b 100644
--- a/gcc/ada/exp_pakd.adb
+++ b/gcc/ada/exp_pakd.adb
@@ -1256,8 +1256,15 @@ package body Exp_Pakd is
-- array type on Obj to get lost. So we save the type of Obj, and
-- make sure it is reset properly.
- New_Lhs := Duplicate_Subexpr (Obj, Name_Req => True);
- New_Rhs := Duplicate_Subexpr_No_Checks (Obj);
+ declare
+ T : constant Entity_Id := Etype (Obj);
+ begin
+ New_Lhs := Duplicate_Subexpr (Obj, Name_Req => True);
+ New_Rhs := Duplicate_Subexpr_No_Checks (Obj);
+ Set_Etype (Obj, T);
+ Set_Etype (New_Lhs, T);
+ Set_Etype (New_Rhs, T);
+ end;
-- First we deal with the "and"
diff --git a/gcc/ada/exp_prag.adb b/gcc/ada/exp_prag.adb
index 9a227c6..d616fb6 100644
--- a/gcc/ada/exp_prag.adb
+++ b/gcc/ada/exp_prag.adb
@@ -1581,6 +1581,12 @@ package body Exp_Prag is
Expression => Pref));
end if;
+ -- Mark the temporary as coming from a 'Old reference
+
+ if Present (Temp) then
+ Set_Stores_Attribute_Old_Prefix (Temp);
+ end if;
+
-- Ensure that the prefix is valid
if Validity_Checks_On and then Validity_Check_Operands then
diff --git a/gcc/ada/exp_tss.adb b/gcc/ada/exp_tss.adb
index 40943fb..c5f167a 100644
--- a/gcc/ada/exp_tss.adb
+++ b/gcc/ada/exp_tss.adb
@@ -522,46 +522,4 @@ package body Exp_Tss is
return Empty;
end TSS;
- function TSS (Typ : Entity_Id; Nam : Name_Id) return Entity_Id is
- FN : constant Node_Id := Freeze_Node (Typ);
- Elmt : Elmt_Id;
- Subp : Entity_Id;
-
- begin
- if No (FN) then
- return Empty;
-
- elsif No (TSS_Elist (FN)) then
- return Empty;
-
- else
- Elmt := First_Elmt (TSS_Elist (FN));
- while Present (Elmt) loop
- if Chars (Node (Elmt)) = Nam then
- Subp := Node (Elmt);
-
- -- For stream subprograms, the TSS entity may be a renaming-
- -- as-body of an already generated entity. Use that one rather
- -- the one introduced by the renaming, which is an artifact of
- -- current stream handling.
-
- if Nkind (Parent (Parent (Subp))) =
- N_Subprogram_Renaming_Declaration
- and then
- Present (Corresponding_Spec (Parent (Parent (Subp))))
- then
- return Corresponding_Spec (Parent (Parent (Subp)));
- else
- return Subp;
- end if;
-
- else
- Next_Elmt (Elmt);
- end if;
- end loop;
- end if;
-
- return Empty;
- end TSS;
-
end Exp_Tss;
diff --git a/gcc/ada/exp_tss.ads b/gcc/ada/exp_tss.ads
index 59234ff..ca35f5a 100644
--- a/gcc/ada/exp_tss.ads
+++ b/gcc/ada/exp_tss.ads
@@ -170,7 +170,6 @@ package Exp_Tss is
-- be explicitly frozen, so the N_Freeze_Entity node always exists).
function TSS (Typ : Entity_Id; Nam : TSS_Name_Type) return Entity_Id;
- function TSS (Typ : Entity_Id; Nam : Name_Id) return Entity_Id;
-- Finds the TSS with the given name associated with the given type.
-- If no such TSS exists, then Empty is returned.
diff --git a/gcc/ada/exp_unst.adb b/gcc/ada/exp_unst.adb
index e0f2bd1..ee2cf81 100644
--- a/gcc/ada/exp_unst.adb
+++ b/gcc/ada/exp_unst.adb
@@ -251,13 +251,8 @@ package body Exp_Unst is
-----------------------
function Needs_Fat_Pointer (E : Entity_Id) return Boolean is
- Typ : Entity_Id := Etype (E);
-
+ Typ : constant Entity_Id := Get_Fullest_View (Etype (E));
begin
- if Is_Private_Type (Typ) and then Present (Full_View (Typ)) then
- Typ := Full_View (Typ);
- end if;
-
return Is_Array_Type (Typ) and then not Is_Constrained (Typ);
end Needs_Fat_Pointer;
@@ -898,6 +893,8 @@ package body Exp_Unst is
DT : Boolean := False;
Formal : Node_Id;
Subp : Entity_Id;
+ F_Type : Entity_Id;
+ A_Type : Entity_Id;
begin
if Nkind (Name (N)) = N_Explicit_Dereference then
@@ -908,12 +905,16 @@ package body Exp_Unst is
Actual := First_Actual (N);
Formal := First_Formal_With_Extras (Subp);
+
while Present (Actual) loop
- if Is_Array_Type (Etype (Formal))
- and then not Is_Constrained (Etype (Formal))
- and then Is_Constrained (Etype (Actual))
+ F_Type := Get_Fullest_View (Etype (Formal));
+ A_Type := Get_Fullest_View (Etype (Actual));
+
+ if Is_Array_Type (F_Type)
+ and then not Is_Constrained (F_Type)
+ and then Is_Constrained (A_Type)
then
- Check_Static_Type (Etype (Actual), Empty, DT);
+ Check_Static_Type (A_Type, Empty, DT);
end if;
Next_Actual (Actual);
diff --git a/gcc/ada/exp_util.adb b/gcc/ada/exp_util.adb
index 9e08e9c..cf4059a 100644
--- a/gcc/ada/exp_util.adb
+++ b/gcc/ada/exp_util.adb
@@ -60,10 +60,8 @@ with Sem_Util; use Sem_Util;
with Snames; use Snames;
with Stand; use Stand;
with Stringt; use Stringt;
-with Targparm; use Targparm;
with Tbuild; use Tbuild;
with Ttypes; use Ttypes;
-with Urealp; use Urealp;
with Validsw; use Validsw;
with GNAT.HTable;
@@ -3994,9 +3992,11 @@ package body Exp_Util is
Out_Present => True,
Parameter_Type => New_Occurrence_Of (Etype (Subp), Loc)));
- -- The new procedure declaration is inserted immediately after the
- -- function declaration. The processing in Build_Procedure_Body_Form
- -- relies on this order.
+ -- The new procedure declaration is inserted before the function
+ -- declaration. The processing in Build_Procedure_Body_Form relies on
+ -- this order. Note that we insert before because in the case of a
+ -- function body with no separate spec, we do not want to insert the
+ -- new spec after the body which will later get rewritten.
Proc_Decl :=
Make_Subprogram_Declaration (Loc,
@@ -4006,7 +4006,7 @@ package body Exp_Util is
Make_Defining_Identifier (Loc, Chars (Subp)),
Parameter_Specifications => Proc_Formals));
- Insert_After_And_Analyze (Unit_Declaration_Node (Subp), Proc_Decl);
+ Insert_Before_And_Analyze (Unit_Declaration_Node (Subp), Proc_Decl);
-- Entity of procedure must remain invisible so that it does not
-- overload subsequent references to the original function.
@@ -6477,9 +6477,7 @@ package body Exp_Util is
Loc : constant Source_Ptr := Sloc (Var);
Ent : constant Entity_Id := Entity (Var);
- procedure Process_Current_Value_Condition
- (N : Node_Id;
- S : Boolean);
+ procedure Process_Current_Value_Condition (N : Node_Id; S : Boolean);
-- N is an expression which holds either True (S = True) or False (S =
-- False) in the condition. This procedure digs out the expression and
-- if it refers to Ent, sets Op and Val appropriately.
@@ -6540,6 +6538,7 @@ package body Exp_Util is
-- Recursively process AND and AND THEN branches
Process_Current_Value_Condition (Left_Opnd (Cond), True);
+ pragma Assert (Op'Valid);
if Op /= N_Empty then
return;
@@ -7899,26 +7898,6 @@ package body Exp_Util is
end if;
end Integer_Type_For;
- ----------------------------
- -- Is_All_Null_Statements --
- ----------------------------
-
- function Is_All_Null_Statements (L : List_Id) return Boolean is
- Stm : Node_Id;
-
- begin
- Stm := First (L);
- while Present (Stm) loop
- if Nkind (Stm) /= N_Null_Statement then
- return False;
- end if;
-
- Next (Stm);
- end loop;
-
- return True;
- end Is_All_Null_Statements;
-
--------------------------------------------------
-- Is_Displacement_Of_Object_Or_Function_Result --
--------------------------------------------------
@@ -9391,25 +9370,6 @@ package body Exp_Util is
end if;
end Kill_Dead_Code;
- ------------------------
- -- Known_Non_Negative --
- ------------------------
-
- function Known_Non_Negative (Opnd : Node_Id) return Boolean is
- begin
- if Is_OK_Static_Expression (Opnd) and then Expr_Value (Opnd) >= 0 then
- return True;
-
- else
- declare
- Lo : constant Node_Id := Type_Low_Bound (Etype (Opnd));
- begin
- return
- Is_OK_Static_Expression (Lo) and then Expr_Value (Lo) >= 0;
- end;
- end if;
- end Known_Non_Negative;
-
-----------------------------
-- Make_CW_Equivalent_Type --
-----------------------------
@@ -10978,20 +10938,6 @@ package body Exp_Util is
return Res;
end New_Class_Wide_Subtype;
- --------------------------------
- -- Non_Limited_Designated_Type --
- ---------------------------------
-
- function Non_Limited_Designated_Type (T : Entity_Id) return Entity_Id is
- Desig : constant Entity_Id := Designated_Type (T);
- begin
- if Has_Non_Limited_View (Desig) then
- return Non_Limited_View (Desig);
- else
- return Desig;
- end if;
- end Non_Limited_Designated_Type;
-
-----------------------------------
-- OK_To_Do_Constant_Replacement --
-----------------------------------
@@ -11798,8 +11744,8 @@ package body Exp_Util is
-- If this is a packed array component or a selected component with a
-- nonstandard representation, we cannot generate a reference because
-- the component may be unaligned, so we must use a renaming and this
- -- renaming must be handled by the front end, as the back end may balk
- -- at the nonstandard representation (see Exp_Ch2.Expand_Renaming).
+ -- renaming is handled by the front end, as the back end may balk at
+ -- the nonstandard representation (see Evaluation_Required in Exp_Ch8).
elsif Nkind (Exp) in N_Indexed_Component | N_Selected_Component
and then Has_Non_Standard_Rep (Etype (Prefix (Exp)))
@@ -11813,8 +11759,7 @@ package body Exp_Util is
Subtype_Mark => New_Occurrence_Of (Exp_Type, Loc),
Name => Relocate_Node (Exp)));
- -- For an expression that denotes a name, we can use a renaming scheme
- -- that is handled by the back end, instead of the front end as above.
+ -- For an expression that denotes a name, we can use a renaming scheme.
-- This is needed for correctness in the case of a volatile object of
-- a nonvolatile type because the Make_Reference call of the "default"
-- approach would generate an illegal access value (an access value
@@ -11837,8 +11782,6 @@ package body Exp_Util is
Subtype_Mark => New_Occurrence_Of (Exp_Type, Loc),
Name => Relocate_Node (Exp)));
- Set_Is_Renaming_Of_Object (Def_Id, False);
-
-- Avoid generating a variable-sized temporary, by generating the
-- reference just for the function call. The transformation could be
-- refined to apply only when the array component is constrained by a
@@ -12249,8 +12192,7 @@ package body Exp_Util is
-- and view swaps, the parent type is taken from the formal
-- parameter of the subprogram being called.
- if Nkind (Context) in
- N_Function_Call | N_Procedure_Call_Statement
+ if Nkind (Context) in N_Subprogram_Call
and then No (Type_Map.Get (Entity (Name (Context))))
then
New_Ref :=
@@ -13846,88 +13788,6 @@ package body Exp_Util is
end if;
end Small_Integer_Type_For;
- --------------------------
- -- Target_Has_Fixed_Ops --
- --------------------------
-
- Integer_Sized_Small : Ureal;
- -- Set to 2.0 ** -(Integer'Size - 1) the first time that this function is
- -- called (we don't want to compute it more than once).
-
- Long_Integer_Sized_Small : Ureal;
- -- Set to 2.0 ** -(Long_Integer'Size - 1) the first time that this function
- -- is called (we don't want to compute it more than once)
-
- First_Time_For_THFO : Boolean := True;
- -- Set to False after first call (if Fractional_Fixed_Ops_On_Target)
-
- function Target_Has_Fixed_Ops
- (Left_Typ : Entity_Id;
- Right_Typ : Entity_Id;
- Result_Typ : Entity_Id) return Boolean
- is
- function Is_Fractional_Type (Typ : Entity_Id) return Boolean;
- -- Return True if the given type is a fixed-point type with a small
- -- value equal to 2 ** (-(T'Object_Size - 1)) and whose values have
- -- an absolute value less than 1.0. This is currently limited to
- -- fixed-point types that map to Integer or Long_Integer.
-
- ------------------------
- -- Is_Fractional_Type --
- ------------------------
-
- function Is_Fractional_Type (Typ : Entity_Id) return Boolean is
- begin
- if Esize (Typ) = Standard_Integer_Size then
- return Small_Value (Typ) = Integer_Sized_Small;
-
- elsif Esize (Typ) = Standard_Long_Integer_Size then
- return Small_Value (Typ) = Long_Integer_Sized_Small;
-
- else
- return False;
- end if;
- end Is_Fractional_Type;
-
- -- Start of processing for Target_Has_Fixed_Ops
-
- begin
- -- Return False if Fractional_Fixed_Ops_On_Target is false
-
- if not Fractional_Fixed_Ops_On_Target then
- return False;
- end if;
-
- -- Here the target has Fractional_Fixed_Ops, if first time, compute
- -- standard constants used by Is_Fractional_Type.
-
- if First_Time_For_THFO then
- First_Time_For_THFO := False;
-
- Integer_Sized_Small :=
- UR_From_Components
- (Num => Uint_1,
- Den => UI_From_Int (Standard_Integer_Size - 1),
- Rbase => 2);
-
- Long_Integer_Sized_Small :=
- UR_From_Components
- (Num => Uint_1,
- Den => UI_From_Int (Standard_Long_Integer_Size - 1),
- Rbase => 2);
- end if;
-
- -- Return True if target supports fixed-by-fixed multiply/divide for
- -- fractional fixed-point types (see Is_Fractional_Type) and the operand
- -- and result types are equivalent fractional types.
-
- return Is_Fractional_Type (Base_Type (Left_Typ))
- and then Is_Fractional_Type (Base_Type (Right_Typ))
- and then Is_Fractional_Type (Base_Type (Result_Typ))
- and then Esize (Left_Typ) = Esize (Right_Typ)
- and then Esize (Left_Typ) = Esize (Result_Typ);
- end Target_Has_Fixed_Ops;
-
-------------------
-- Type_Map_Hash --
-------------------
diff --git a/gcc/ada/exp_util.ads b/gcc/ada/exp_util.ads
index 202ac3c..96d3894 100644
--- a/gcc/ada/exp_util.ads
+++ b/gcc/ada/exp_util.ads
@@ -756,11 +756,6 @@ package Exp_Util is
-- Return a suitable standard integer type containing at least S bits and
-- of the signedness given by Uns.
- function Is_All_Null_Statements (L : List_Id) return Boolean;
- -- Return True if all the items of the list are N_Null_Statement nodes.
- -- False otherwise. True for an empty list. It is an error to call this
- -- routine with No_List as the argument.
-
function Is_Displacement_Of_Object_Or_Function_Result
(Obj_Id : Entity_Id) return Boolean;
-- Determine whether Obj_Id is a source entity that has been initialized by
@@ -870,11 +865,6 @@ package Exp_Util is
-- list. If Warn is True, a warning will be output at the start of N
-- indicating the deletion of the code.
- function Known_Non_Negative (Opnd : Node_Id) return Boolean;
- -- Given a node for a subexpression, determines if it represents a value
- -- that cannot possibly be negative, and if so returns True. A value of
- -- False means that it is not known if the value is positive or negative.
-
function Make_Invariant_Call (Expr : Node_Id) return Node_Id;
-- Generate a call to the Invariant_Procedure associated with the type of
-- expression Expr. Expr is passed as an actual parameter in the call.
@@ -955,11 +945,6 @@ package Exp_Util is
-- consist of constants, when the object has a nontrivial initialization
-- or is controlled.
- function Non_Limited_Designated_Type (T : Entity_Id) return Entity_Id;
- -- An anonymous access type may designate a limited view. Check whether
- -- non-limited view is available during expansion, to examine components
- -- or other characteristics of the full type.
-
function OK_To_Do_Constant_Replacement (E : Entity_Id) return Boolean;
-- This function is used when testing whether or not to replace a reference
-- to entity E by a known constant value. Such replacement must be done
@@ -1178,15 +1163,6 @@ package Exp_Util is
-- Return the smallest standard integer type containing at least S bits and
-- of the signedness given by Uns.
- function Target_Has_Fixed_Ops
- (Left_Typ : Entity_Id;
- Right_Typ : Entity_Id;
- Result_Typ : Entity_Id) return Boolean;
- -- Returns True if and only if the target machine has direct support
- -- for fixed-by-fixed multiplications and divisions for the given
- -- operand and result types. This is called in package Exp_Fixd to
- -- determine whether to expand such operations.
-
function Type_May_Have_Bit_Aligned_Components
(Typ : Entity_Id) return Boolean;
-- Determines if Typ is a composite type that has within it (looking down
diff --git a/gcc/ada/expect.c b/gcc/ada/expect.c
index 718886d..30c5b8e 100644
--- a/gcc/ada/expect.c
+++ b/gcc/ada/expect.c
@@ -39,6 +39,7 @@
#include "system.h"
#endif
+#include "adaint.h"
#include <sys/types.h>
#ifdef __MINGW32__
@@ -78,7 +79,6 @@
#include <process.h>
#include <signal.h>
#include <io.h>
-#include "adaint.h"
#include "mingw32.h"
int
@@ -360,7 +360,11 @@ __gnat_pipe (int *fd)
int
__gnat_expect_fork (void)
{
- return fork ();
+ int pid = fork();
+ if (pid == 0) {
+ __gnat_in_child_after_fork = 1;
+ }
+ return pid;
}
void
diff --git a/gcc/ada/freeze.adb b/gcc/ada/freeze.adb
index 098b117..8dc8a22 100644
--- a/gcc/ada/freeze.adb
+++ b/gcc/ada/freeze.adb
@@ -5642,7 +5642,7 @@ package body Freeze is
Has_Rep_Pragma (E, Name_Atomic_Components)
then
Error_Msg_N
- ("stand alone atomic constant must be " &
+ ("standalone atomic constant must be " &
"imported (RM C.6(13))", E);
elsif Has_Rep_Pragma (E, Name_Volatile)
@@ -5650,7 +5650,7 @@ package body Freeze is
Has_Rep_Pragma (E, Name_Volatile_Components)
then
Error_Msg_N
- ("stand alone volatile constant must be " &
+ ("standalone volatile constant must be " &
"imported (RM C.6(13))", E);
end if;
end if;
@@ -9225,10 +9225,12 @@ package body Freeze is
Check_Overriding_Indicator (E, Empty, Is_Primitive (E));
end if;
+ Retype := Get_Fullest_View (Etype (E));
+
if Transform_Function_Array
and then Nkind (Parent (E)) = N_Function_Specification
- and then Is_Array_Type (Etype (E))
- and then Is_Constrained (Etype (E))
+ and then Is_Array_Type (Retype)
+ and then Is_Constrained (Retype)
and then not Is_Unchecked_Conversion_Instance (E)
and then not Rewritten_For_C (E)
then
diff --git a/gcc/ada/gcc-interface/trans.c b/gcc/ada/gcc-interface/trans.c
index 4ab26d3..ae7a52f 100644
--- a/gcc/ada/gcc-interface/trans.c
+++ b/gcc/ada/gcc-interface/trans.c
@@ -8479,15 +8479,16 @@ add_decl_expr (tree gnu_decl, Node_Id gnat_node)
MARK_VISITED (DECL_SIZE_UNIT (gnu_decl));
MARK_VISITED (DECL_INITIAL (gnu_decl));
}
- /* In any case, we have to deal with our own TYPE_ADA_SIZE field. */
- else if (TREE_CODE (gnu_decl) == TYPE_DECL
- && RECORD_OR_UNION_TYPE_P (type)
- && !TYPE_FAT_POINTER_P (type))
- MARK_VISITED (TYPE_ADA_SIZE (type));
}
else
add_stmt_with_node (gnu_stmt, gnat_node);
+ /* Mark our TYPE_ADA_SIZE field now since it will not be gimplified. */
+ if (TREE_CODE (gnu_decl) == TYPE_DECL
+ && RECORD_OR_UNION_TYPE_P (type)
+ && !TYPE_FAT_POINTER_P (type))
+ MARK_VISITED (TYPE_ADA_SIZE (type));
+
/* If this is a variable and an initializer is attached to it, it must be
valid for the context. Similar to init_const in create_var_decl. */
if (TREE_CODE (gnu_decl) == VAR_DECL
@@ -10611,7 +10612,7 @@ make_alias_for_thunk (tree target)
return alias;
}
-/* Create the covariant part of the {GNAT,GNU}_THUNK. */
+/* Create the local covariant part of {GNAT,GNU}_THUNK. */
static tree
make_covariant_thunk (Entity_Id gnat_thunk, tree gnu_thunk)
@@ -10622,6 +10623,11 @@ make_covariant_thunk (Entity_Id gnat_thunk, tree gnu_thunk)
gnu_name, TREE_TYPE (gnu_thunk));
DECL_ARGUMENTS (gnu_cv_thunk) = copy_list (DECL_ARGUMENTS (gnu_thunk));
+ for (tree param_decl = DECL_ARGUMENTS (gnu_cv_thunk);
+ param_decl;
+ param_decl = DECL_CHAIN (param_decl))
+ DECL_CONTEXT (param_decl) = gnu_cv_thunk;
+
DECL_RESULT (gnu_cv_thunk) = copy_node (DECL_RESULT (gnu_thunk));
DECL_CONTEXT (DECL_RESULT (gnu_cv_thunk)) = gnu_cv_thunk;
@@ -10629,7 +10635,6 @@ make_covariant_thunk (Entity_Id gnat_thunk, tree gnu_thunk)
DECL_CONTEXT (gnu_cv_thunk) = DECL_CONTEXT (gnu_thunk);
TREE_READONLY (gnu_cv_thunk) = TREE_READONLY (gnu_thunk);
TREE_THIS_VOLATILE (gnu_cv_thunk) = TREE_THIS_VOLATILE (gnu_thunk);
- TREE_PUBLIC (gnu_cv_thunk) = TREE_PUBLIC (gnu_thunk);
DECL_ARTIFICIAL (gnu_cv_thunk) = 1;
return gnu_cv_thunk;
@@ -10759,6 +10764,12 @@ maybe_make_gnu_thunk (Entity_Id gnat_thunk, tree gnu_thunk)
cgraph_node *target_node = cgraph_node::get_create (gnu_target);
+ /* We may also need to create an alias for the target in order to make
+ the call local, depending on the linkage of the target. */
+ tree gnu_alias = use_alias_for_thunk_p (gnu_target)
+ ? make_alias_for_thunk (gnu_target)
+ : gnu_target;
+
/* If the return type of the target is a controlling type, then we need
both an usual this thunk and a covariant thunk in this order:
@@ -10771,17 +10782,11 @@ maybe_make_gnu_thunk (Entity_Id gnat_thunk, tree gnu_thunk)
tree gnu_cv_thunk = make_covariant_thunk (gnat_thunk, gnu_thunk);
target_node->create_thunk (gnu_cv_thunk, gnu_target, false,
- fixed_offset, 0, 0,
- NULL_TREE, gnu_target);
+ NULL_TREE, gnu_alias);
- gnu_target = gnu_cv_thunk;
+ gnu_alias = gnu_target = gnu_cv_thunk;
}
- /* We may also need to create an alias for the target in order to make
- the call local, depending on the linkage of the target. */
- tree gnu_alias = use_alias_for_thunk_p (gnu_target)
- ? make_alias_for_thunk (gnu_target)
- : gnu_target;
-
target_node->create_thunk (gnu_thunk, gnu_target, true,
fixed_offset, virtual_value, indirect_offset,
virtual_offset, gnu_alias);
diff --git a/gcc/ada/gcc-interface/utils.c b/gcc/ada/gcc-interface/utils.c
index 494f60e..c503bfb 100644
--- a/gcc/ada/gcc-interface/utils.c
+++ b/gcc/ada/gcc-interface/utils.c
@@ -1571,7 +1571,7 @@ maybe_pad_type (tree type, tree size, unsigned int align,
{
tree packable_type = make_packable_type (type, true, align);
if (TYPE_MODE (packable_type) != BLKmode
- && align >= TYPE_ALIGN (packable_type))
+ && compare_tree_int (TYPE_SIZE (packable_type), align) <= 0)
type = packable_type;
}
@@ -3521,6 +3521,12 @@ create_subprog_decl (tree name, tree asm_name, tree type, tree param_decl_list,
void
finish_subprog_decl (tree decl, tree asm_name, tree type)
{
+ /* DECL_ARGUMENTS is set by the caller, but not its context. */
+ for (tree param_decl = DECL_ARGUMENTS (decl);
+ param_decl;
+ param_decl = DECL_CHAIN (param_decl))
+ DECL_CONTEXT (param_decl) = decl;
+
tree result_decl
= build_decl (DECL_SOURCE_LOCATION (decl), RESULT_DECL, NULL_TREE,
TREE_TYPE (type));
@@ -3566,8 +3572,6 @@ finish_subprog_decl (tree decl, tree asm_name, tree type)
void
begin_subprog_body (tree subprog_decl)
{
- tree param_decl;
-
announce_function (subprog_decl);
/* This function is being defined. */
@@ -3583,10 +3587,6 @@ begin_subprog_body (tree subprog_decl)
/* Enter a new binding level and show that all the parameters belong to
this function. */
gnat_pushlevel ();
-
- for (param_decl = DECL_ARGUMENTS (subprog_decl); param_decl;
- param_decl = DECL_CHAIN (param_decl))
- DECL_CONTEXT (param_decl) = subprog_decl;
}
/* Finish translating the current subprogram and set its BODY. */
diff --git a/gcc/ada/gnat1drv.adb b/gcc/ada/gnat1drv.adb
index 65da307..0318194 100644
--- a/gcc/ada/gnat1drv.adb
+++ b/gcc/ada/gnat1drv.adb
@@ -1020,15 +1020,6 @@ procedure Gnat1drv is
-- by the backend where possible).
Sem_Ch13.Validate_Address_Clauses;
-
- -- Validate independence pragmas (again using values annotated by the
- -- back end for component layout where possible) but only for non-GCC
- -- back ends, as this is done a priori for GCC back ends.
- -- ??? We use to test for AAMP_On_Target which is now gone, consider
- --
- -- if AAMP_On_Target then
- -- Sem_Ch13.Validate_Independence;
- -- end if;
end Post_Compilation_Validation_Checks;
-----------------------------------
diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi
index 401d625..417ee34 100644
--- a/gcc/ada/gnat_rm.texi
+++ b/gcc/ada/gnat_rm.texi
@@ -21,11 +21,11 @@
@copying
@quotation
-GNAT Reference Manual , Nov 20, 2020
+GNAT Reference Manual , Dec 11, 2020
AdaCore
-Copyright @copyright{} 2008-2020, Free Software Foundation
+Copyright @copyright{} 2008-2021, Free Software Foundation
@end quotation
@end copying
@@ -8159,8 +8159,8 @@ package Math_Functions is
function Sqrt (Arg : Float) return Float;
pragma Test_Case (Name => "Test 1",
Mode => Nominal,
- Requires => Arg < 10000,
- Ensures => Sqrt'Result < 10);
+ Requires => Arg < 10000.0,
+ Ensures => Sqrt'Result < 10.0);
...
end Math_Functions;
@end example
diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi
index 14e9271..360177b 100644
--- a/gcc/ada/gnat_ugn.texi
+++ b/gcc/ada/gnat_ugn.texi
@@ -21,11 +21,11 @@
@copying
@quotation
-GNAT User's Guide for Native Platforms , Nov 20, 2020
+GNAT User's Guide for Native Platforms , Dec 11, 2020
AdaCore
-Copyright @copyright{} 2008-2020, Free Software Foundation
+Copyright @copyright{} 2008-2021, Free Software Foundation
@end quotation
@end copying
@@ -381,7 +381,7 @@ Performance Considerations
* Optimization Levels::
* Debugging Optimized Code::
* Inlining of Subprograms::
-* Floating_Point_Operations::
+* Floating Point Operations::
* Vectorization of loops::
* Other Optimization Switches::
* Optimization and Strict Aliasing::
@@ -11507,7 +11507,7 @@ not included in this check.
@emph{Suppress warnings on redefinition of names in standard.}
-This switch activates warnings for declarations that declare a name that
+This switch disables warnings for declarations that declare a name that
is defined in package Standard.
@end table
@@ -19652,7 +19652,7 @@ some guidelines on debugging optimized code.
* Optimization Levels::
* Debugging Optimized Code::
* Inlining of Subprograms::
-* Floating_Point_Operations::
+* Floating Point Operations::
* Vectorization of loops::
* Other Optimization Switches::
* Optimization and Strict Aliasing::
@@ -20001,7 +20001,7 @@ Note that if you use @code{-g} you can then use the @code{strip} program
on the resulting executable,
which removes both debugging information and global symbols.
-@node Inlining of Subprograms,Floating_Point_Operations,Debugging Optimized Code,Performance Considerations
+@node Inlining of Subprograms,Floating Point Operations,Debugging Optimized Code,Performance Considerations
@anchor{gnat_ugn/gnat_and_program_execution id32}@anchor{185}@anchor{gnat_ugn/gnat_and_program_execution inlining-of-subprograms}@anchor{100}
@subsubsection Inlining of Subprograms
@@ -20140,9 +20140,9 @@ automatically assume that @code{-O3} is better than @code{-O2}, and
indeed you should use @code{-O3} only if tests show that it actually
improves performance for your program.
-@node Floating_Point_Operations,Vectorization of loops,Inlining of Subprograms,Performance Considerations
+@node Floating Point Operations,Vectorization of loops,Inlining of Subprograms,Performance Considerations
@anchor{gnat_ugn/gnat_and_program_execution floating-point-operations}@anchor{186}@anchor{gnat_ugn/gnat_and_program_execution id33}@anchor{187}
-@subsubsection Floating_Point_Operations
+@subsubsection Floating Point Operations
@geindex Floating-Point Operations
@@ -20188,7 +20188,7 @@ Note that the ABI has the same form for both floating-point models,
so it is permissible to mix units compiled with and without these
switches.
-@node Vectorization of loops,Other Optimization Switches,Floating_Point_Operations,Performance Considerations
+@node Vectorization of loops,Other Optimization Switches,Floating Point Operations,Performance Considerations
@anchor{gnat_ugn/gnat_and_program_execution id34}@anchor{188}@anchor{gnat_ugn/gnat_and_program_execution vectorization-of-loops}@anchor{189}
@subsubsection Vectorization of loops
diff --git a/gcc/ada/gnatvsn.ads b/gcc/ada/gnatvsn.ads
index ddd5b9f..bbfa9f5 100644
--- a/gcc/ada/gnatvsn.ads
+++ b/gcc/ada/gnatvsn.ads
@@ -39,7 +39,7 @@ package Gnatvsn is
-- Note: Makefile.in uses the library version string to construct the
-- soname value.
- Current_Year : constant String := "2020";
+ Current_Year : constant String := "2021";
-- Used in printing copyright messages
Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version;
diff --git a/gcc/ada/impunit.adb b/gcc/ada/impunit.adb
index 2cde430..e7262cd 100644
--- a/gcc/ada/impunit.adb
+++ b/gcc/ada/impunit.adb
@@ -999,7 +999,7 @@ package body Impunit is
for J in Non_Imp_File_Names_12'Range loop
if Name_Buffer (1 .. 8) = Non_Imp_File_Names_12 (J).Fname then
- return Non_Imp_File_Names_95 (J).RMdef
+ return Non_Imp_File_Names_12 (J).RMdef
and then Ada_Version >= Ada_2012;
end if;
end loop;
diff --git a/gcc/ada/inline.adb b/gcc/ada/inline.adb
index c24763a..bb4d97c 100644
--- a/gcc/ada/inline.adb
+++ b/gcc/ada/inline.adb
@@ -1945,10 +1945,11 @@ package body Inline is
-------------------
procedure Cannot_Inline
- (Msg : String;
- N : Node_Id;
- Subp : Entity_Id;
- Is_Serious : Boolean := False)
+ (Msg : String;
+ N : Node_Id;
+ Subp : Entity_Id;
+ Is_Serious : Boolean := False;
+ Suppress_Info : Boolean := False)
is
begin
-- In GNATprove mode, inlining is the technical means by which the
@@ -1971,7 +1972,7 @@ package body Inline is
New_Msg (1 .. Len2) := "info: no contextual analysis of";
New_Msg (Len2 + 1 .. Msg'Length + Len2 - Len1) :=
Msg (Msg'First + Len1 .. Msg'Last);
- Cannot_Inline (New_Msg, N, Subp, Is_Serious);
+ Cannot_Inline (New_Msg, N, Subp, Is_Serious, Suppress_Info);
return;
end;
end if;
@@ -1992,14 +1993,14 @@ package body Inline is
then
null;
- -- In GNATprove mode, issue a warning when -gnatd_f is set, and
- -- indicate that the subprogram is not always inlined by setting
- -- flag Is_Inlined_Always to False.
+ -- In GNATprove mode, issue an info message when -gnatd_f is set and
+ -- Suppress_Info is False, and indicate that the subprogram is not
+ -- always inlined by setting flag Is_Inlined_Always to False.
elsif GNATprove_Mode then
Set_Is_Inlined_Always (Subp, False);
- if Debug_Flag_Underscore_F then
+ if Debug_Flag_Underscore_F and not Suppress_Info then
Error_Msg_NE (Msg, N, Subp);
end if;
@@ -2022,14 +2023,14 @@ package body Inline is
Error_Msg_NE (Msg (Msg'First .. Msg'Last - 1), N, Subp);
- -- In GNATprove mode, issue a warning when -gnatd_f is set, and
- -- indicate that the subprogram is not always inlined by setting
- -- flag Is_Inlined_Always to False.
+ -- In GNATprove mode, issue an info message when -gnatd_f is set and
+ -- Suppress_Info is False, and indicate that the subprogram is not
+ -- always inlined by setting flag Is_Inlined_Always to False.
elsif GNATprove_Mode then
Set_Is_Inlined_Always (Subp, False);
- if Debug_Flag_Underscore_F then
+ if Debug_Flag_Underscore_F and not Suppress_Info then
Error_Msg_NE (Msg, N, Subp);
end if;
diff --git a/gcc/ada/inline.ads b/gcc/ada/inline.ads
index 51eab9c..6790f15 100644
--- a/gcc/ada/inline.ads
+++ b/gcc/ada/inline.ads
@@ -154,15 +154,17 @@ package Inline is
-- its treatment of the subprogram.
procedure Cannot_Inline
- (Msg : String;
- N : Node_Id;
- Subp : Entity_Id;
- Is_Serious : Boolean := False);
+ (Msg : String;
+ N : Node_Id;
+ Subp : Entity_Id;
+ Is_Serious : Boolean := False;
+ Suppress_Info : Boolean := False);
-- This procedure is called if the node N, an instance of a call to
-- subprogram Subp, cannot be inlined. Msg is the message to be issued,
-- which ends with ? (it does not end with ?p?, this routine takes care of
- -- the need to change ? to ?p?). The behavior of this routine depends on
- -- the value of Back_End_Inlining:
+ -- the need to change ? to ?p?). Suppress_Info is set to True to prevent
+ -- issuing an info message in GNATprove mode. The behavior of this routine
+ -- depends on the value of Back_End_Inlining:
--
-- * If Back_End_Inlining is not set (ie. legacy frontend inlining model)
-- then if Subp has a pragma Always_Inlined, then an error message is
diff --git a/gcc/ada/lib-load.adb b/gcc/ada/lib-load.adb
index 75226d3..f8d632a 100644
--- a/gcc/ada/lib-load.adb
+++ b/gcc/ada/lib-load.adb
@@ -646,7 +646,7 @@ package body Lib.Load is
else
Error_Msg_File_1 := Fname;
Error_Msg_Unit_1 := Uname_Actual;
- Error_Msg ("File{ does not contain unit$", Load_Msg_Sloc);
+ Error_Msg ("file{ does not contain unit$", Load_Msg_Sloc);
end if;
Write_Dependency_Chain;
diff --git a/gcc/ada/lib-writ.adb b/gcc/ada/lib-writ.adb
index f5b9e30..16449e8 100644
--- a/gcc/ada/lib-writ.adb
+++ b/gcc/ada/lib-writ.adb
@@ -1724,7 +1724,7 @@ package body Lib.Writ is
-- scope
- Write_Info_Name (Scope (IS_Id));
+ Write_Info_Name (IS_Scope (IS_Id));
Write_Info_Char (' ');
-- line
diff --git a/gcc/ada/libgnarl/s-tporft.adb b/gcc/ada/libgnarl/s-tporft.adb
index 9d99eac..634eae6 100644
--- a/gcc/ada/libgnarl/s-tporft.adb
+++ b/gcc/ada/libgnarl/s-tporft.adb
@@ -53,6 +53,7 @@ begin
Local_ATCB.Common.LL.Thread := Thread;
Local_ATCB.Common.Current_Priority := System.Priority'First;
+ Local_ATCB.Common.Global_Task_Lock_Nesting := 0;
Specific.Set (Local_ATCB'Unchecked_Access);
-- It is now safe to use an allocator
diff --git a/gcc/ada/libgnat/a-cbdlli.adb b/gcc/ada/libgnat/a-cbdlli.adb
index a0c356d..948b706 100644
--- a/gcc/ada/libgnat/a-cbdlli.adb
+++ b/gcc/ada/libgnat/a-cbdlli.adb
@@ -199,23 +199,19 @@ is
procedure Append
(Container : in out List;
New_Item : Element_Type;
- Count : Count_Type := 1)
+ Count : Count_Type)
is
begin
Insert (Container, No_Element, New_Item, Count);
end Append;
- ---------------
- -- Append_One --
- ---------------
-
- procedure Append_One
+ procedure Append
(Container : in out List;
New_Item : Element_Type)
is
begin
Insert (Container, No_Element, New_Item, 1);
- end Append_One;
+ end Append;
------------
-- Assign --
diff --git a/gcc/ada/libgnat/a-cbdlli.ads b/gcc/ada/libgnat/a-cbdlli.ads
index 183c01e..4574aa6 100644
--- a/gcc/ada/libgnat/a-cbdlli.ads
+++ b/gcc/ada/libgnat/a-cbdlli.ads
@@ -57,7 +57,7 @@ is
Default_Iterator => Iterate,
Iterator_Element => Element_Type,
Aggregate => (Empty => Empty,
- Add_Unnamed => Append_One);
+ Add_Unnamed => Append);
pragma Preelaborable_Initialization (List);
type Cursor is private;
@@ -151,9 +151,9 @@ is
procedure Append
(Container : in out List;
New_Item : Element_Type;
- Count : Count_Type := 1);
+ Count : Count_Type);
- procedure Append_One
+ procedure Append
(Container : in out List;
New_Item : Element_Type);
diff --git a/gcc/ada/libgnat/a-cbsyqu.ads b/gcc/ada/libgnat/a-cbsyqu.ads
index 225db21..4037d84 100644
--- a/gcc/ada/libgnat/a-cbsyqu.ads
+++ b/gcc/ada/libgnat/a-cbsyqu.ads
@@ -71,6 +71,14 @@ is
-- Need proper heap data structure here ???
+ -- We suppress warnings here, which might otherwise be triggered
+ -- by the box initialization of the Elements array below. This
+ -- initialization is needed to preserve constraints, such as
+ -- discriminant values, that the actual for Element_Type might
+ -- carry.
+
+ pragma Warnings (Off);
+
type Element_Array is
array (Count_Type range <>) of Queue_Interfaces.Element_Type;
@@ -78,7 +86,7 @@ is
First, Last : Count_Type := 0;
Length : Count_Type := 0;
Max_Length : Count_Type := 0;
- Elements : Element_Array (1 .. Capacity);
+ Elements : Element_Array (1 .. Capacity) := (others => <>);
end record;
end Implementation;
diff --git a/gcc/ada/libgnat/a-cdlili.adb b/gcc/ada/libgnat/a-cdlili.adb
index f07190e..08c29f2 100644
--- a/gcc/ada/libgnat/a-cdlili.adb
+++ b/gcc/ada/libgnat/a-cdlili.adb
@@ -158,23 +158,19 @@ is
procedure Append
(Container : in out List;
New_Item : Element_Type;
- Count : Count_Type := 1)
+ Count : Count_Type)
is
begin
Insert (Container, No_Element, New_Item, Count);
end Append;
- ---------------
- -- Append_One --
- ---------------
-
- procedure Append_One
+ procedure Append
(Container : in out List;
New_Item : Element_Type)
is
begin
Insert (Container, No_Element, New_Item, 1);
- end Append_One;
+ end Append;
------------
-- Assign --
diff --git a/gcc/ada/libgnat/a-cdlili.ads b/gcc/ada/libgnat/a-cdlili.ads
index 35c4352..53de78b 100644
--- a/gcc/ada/libgnat/a-cdlili.ads
+++ b/gcc/ada/libgnat/a-cdlili.ads
@@ -58,7 +58,7 @@ is
Default_Iterator => Iterate,
Iterator_Element => Element_Type,
Aggregate => (Empty => Empty,
- Add_Unnamed => Append_One);
+ Add_Unnamed => Append);
pragma Preelaborable_Initialization (List);
@@ -154,9 +154,9 @@ is
procedure Append
(Container : in out List;
New_Item : Element_Type;
- Count : Count_Type := 1);
+ Count : Count_Type);
- procedure Append_One
+ procedure Append
(Container : in out List;
New_Item : Element_Type);
diff --git a/gcc/ada/libgnat/a-cidlli.adb b/gcc/ada/libgnat/a-cidlli.adb
index a62338f..79df5a9 100644
--- a/gcc/ada/libgnat/a-cidlli.adb
+++ b/gcc/ada/libgnat/a-cidlli.adb
@@ -179,23 +179,19 @@ is
procedure Append
(Container : in out List;
New_Item : Element_Type;
- Count : Count_Type := 1)
+ Count : Count_Type)
is
begin
Insert (Container, No_Element, New_Item, Count);
end Append;
- ---------------
- -- Append_One --
- ---------------
-
- procedure Append_One
+ procedure Append
(Container : in out List;
New_Item : Element_Type)
is
begin
Insert (Container, No_Element, New_Item, 1);
- end Append_One;
+ end Append;
------------
-- Assign --
diff --git a/gcc/ada/libgnat/a-cidlli.ads b/gcc/ada/libgnat/a-cidlli.ads
index 5e63cf2..c75e5af 100644
--- a/gcc/ada/libgnat/a-cidlli.ads
+++ b/gcc/ada/libgnat/a-cidlli.ads
@@ -57,7 +57,7 @@ is
Default_Iterator => Iterate,
Iterator_Element => Element_Type,
Aggregate => (Empty => Empty,
- Add_Unnamed => Append_One);
+ Add_Unnamed => Append);
pragma Preelaborable_Initialization (List);
@@ -147,9 +147,9 @@ is
procedure Append
(Container : in out List;
New_Item : Element_Type;
- Count : Count_Type := 1);
+ Count : Count_Type);
- procedure Append_One
+ procedure Append
(Container : in out List;
New_Item : Element_Type);
diff --git a/gcc/ada/libgnat/a-cobove.adb b/gcc/ada/libgnat/a-cobove.adb
index 0408741..8a8b279 100644
--- a/gcc/ada/libgnat/a-cobove.adb
+++ b/gcc/ada/libgnat/a-cobove.adb
@@ -321,9 +321,13 @@ package body Ada.Containers.Bounded_Vectors is
-- Append --
------------
- procedure Append (Container : in out Vector; New_Item : Vector) is
+ procedure Append
+ (Container : in out Vector;
+ New_Item : Element_Type;
+ Count : Count_Type)
+ is
begin
- if New_Item.Is_Empty then
+ if Count = 0 then
return;
end if;
@@ -331,16 +335,16 @@ package body Ada.Containers.Bounded_Vectors is
raise Constraint_Error with "vector is already at its maximum length";
end if;
- Container.Insert (Container.Last + 1, New_Item);
+ Container.Insert (Container.Last + 1, New_Item, Count);
end Append;
- procedure Append
- (Container : in out Vector;
- New_Item : Element_Type;
- Count : Count_Type := 1)
- is
+ -------------------
+ -- Append_Vector --
+ -------------------
+
+ procedure Append_Vector (Container : in out Vector; New_Item : Vector) is
begin
- if Count = 0 then
+ if New_Item.Is_Empty then
return;
end if;
@@ -348,19 +352,19 @@ package body Ada.Containers.Bounded_Vectors is
raise Constraint_Error with "vector is already at its maximum length";
end if;
- Container.Insert (Container.Last + 1, New_Item, Count);
- end Append;
+ Container.Insert_Vector (Container.Last + 1, New_Item);
+ end Append_Vector;
- ----------------
- -- Append_One --
- ----------------
+ ------------
+ -- Append --
+ ------------
- procedure Append_One (Container : in out Vector;
- New_Item : Element_Type)
+ procedure Append (Container : in out Vector;
+ New_Item : Element_Type)
is
begin
Insert (Container, Last_Index (Container) + 1, New_Item, 1);
- end Append_One;
+ end Append;
--------------
-- Capacity --
@@ -1243,7 +1247,7 @@ package body Ada.Containers.Bounded_Vectors is
end if;
end Insert;
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Extended_Index;
New_Item : Vector)
@@ -1309,9 +1313,9 @@ package body Ada.Containers.Bounded_Vectors is
Container.Elements (B + N - Src'Length .. B + N - 1) := Src;
end;
- end Insert;
+ end Insert_Vector;
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Cursor;
New_Item : Vector)
@@ -1343,10 +1347,10 @@ package body Ada.Containers.Bounded_Vectors is
Index := Before.Index;
end if;
- Insert (Container, Index, New_Item);
- end Insert;
+ Insert_Vector (Container, Index, New_Item);
+ end Insert_Vector;
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Cursor;
New_Item : Vector;
@@ -1387,10 +1391,10 @@ package body Ada.Containers.Bounded_Vectors is
Index := Before.Index;
end if;
- Insert (Container, Index, New_Item);
+ Insert_Vector (Container, Index, New_Item);
Position := Cursor'(Container'Unchecked_Access, Index);
- end Insert;
+ end Insert_Vector;
procedure Insert
(Container : in out Vector;
@@ -2028,23 +2032,24 @@ package body Ada.Containers.Bounded_Vectors is
-- Prepend --
-------------
- procedure Prepend (Container : in out Vector; New_Item : Vector) is
- begin
- Insert (Container, Index_Type'First, New_Item);
- end Prepend;
-
procedure Prepend
(Container : in out Vector;
New_Item : Element_Type;
Count : Count_Type := 1)
is
begin
- Insert (Container,
- Index_Type'First,
- New_Item,
- Count);
+ Insert (Container, Index_Type'First, New_Item, Count);
end Prepend;
+ --------------------
+ -- Prepend_Vector --
+ --------------------
+
+ procedure Prepend_Vector (Container : in out Vector; New_Item : Vector) is
+ begin
+ Insert_Vector (Container, Index_Type'First, New_Item);
+ end Prepend_Vector;
+
--------------
-- Previous --
--------------
diff --git a/gcc/ada/libgnat/a-cobove.ads b/gcc/ada/libgnat/a-cobove.ads
index ab4ce4e..324ca84 100644
--- a/gcc/ada/libgnat/a-cobove.ads
+++ b/gcc/ada/libgnat/a-cobove.ads
@@ -61,7 +61,7 @@ package Ada.Containers.Bounded_Vectors is
Default_Iterator => Iterate,
Iterator_Element => Element_Type,
Aggregate => (Empty => Empty,
- Add_Unnamed => Append_One,
+ Add_Unnamed => Append,
New_Indexed => New_Vector,
Assign_Indexed => Replace_Element);
@@ -190,24 +190,43 @@ package Ada.Containers.Bounded_Vectors is
procedure Move (Target : in out Vector; Source : in out Vector);
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Extended_Index;
New_Item : Vector);
procedure Insert
(Container : in out Vector;
+ Before : Extended_Index;
+ New_Item : Vector) renames Insert_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Insert_Vector
+ (Container : in out Vector;
Before : Cursor;
New_Item : Vector);
procedure Insert
(Container : in out Vector;
Before : Cursor;
+ New_Item : Vector) renames Insert_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Insert_Vector
+ (Container : in out Vector;
+ Before : Cursor;
New_Item : Vector;
Position : out Cursor);
procedure Insert
(Container : in out Vector;
+ Before : Cursor;
+ New_Item : Vector;
+ Position : out Cursor) renames Insert_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Insert
+ (Container : in out Vector;
Before : Extended_Index;
New_Item : Element_Type;
Count : Count_Type := 1);
@@ -236,27 +255,36 @@ package Ada.Containers.Bounded_Vectors is
Position : out Cursor;
Count : Count_Type := 1);
- procedure Prepend
+ procedure Prepend_Vector
(Container : in out Vector;
New_Item : Vector);
procedure Prepend
(Container : in out Vector;
+ New_Item : Vector) renames Prepend_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Prepend
+ (Container : in out Vector;
New_Item : Element_Type;
Count : Count_Type := 1);
- procedure Append
+ procedure Append_Vector
(Container : in out Vector;
New_Item : Vector);
procedure Append
(Container : in out Vector;
+ New_Item : Vector) renames Append_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Append
+ (Container : in out Vector;
New_Item : Element_Type;
- Count : Count_Type := 1);
+ Count : Count_Type);
- procedure Append_One (Container : in out Vector;
- New_Item : Element_Type);
- -- Ada_2020 aggregate operation.
+ procedure Append (Container : in out Vector;
+ New_Item : Element_Type);
procedure Insert_Space
(Container : in out Vector;
diff --git a/gcc/ada/libgnat/a-coinve.adb b/gcc/ada/libgnat/a-coinve.adb
index 10711ff..051aa71 100644
--- a/gcc/ada/libgnat/a-coinve.adb
+++ b/gcc/ada/libgnat/a-coinve.adb
@@ -67,8 +67,8 @@ is
begin
return Result : Vector do
Reserve_Capacity (Result, Length (Left) + Length (Right));
- Append (Result, Left);
- Append (Result, Right);
+ Append_Vector (Result, Left);
+ Append_Vector (Result, Right);
end return;
end "&";
@@ -76,7 +76,7 @@ is
begin
return Result : Vector do
Reserve_Capacity (Result, Length (Left) + 1);
- Append (Result, Left);
+ Append_Vector (Result, Left);
Append (Result, Right);
end return;
end "&";
@@ -86,7 +86,7 @@ is
return Result : Vector do
Reserve_Capacity (Result, 1 + Length (Right));
Append (Result, Left);
- Append (Result, Right);
+ Append_Vector (Result, Right);
end return;
end "&";
@@ -176,25 +176,25 @@ is
end;
end Adjust;
- ------------
- -- Append --
- ------------
+ -------------------
+ -- Append_Vector --
+ -------------------
- procedure Append (Container : in out Vector; New_Item : Vector) is
+ procedure Append_Vector (Container : in out Vector; New_Item : Vector) is
begin
if Is_Empty (New_Item) then
return;
elsif Checks and then Container.Last = Index_Type'Last then
raise Constraint_Error with "vector is already at its maximum length";
else
- Insert (Container, Container.Last + 1, New_Item);
+ Insert_Vector (Container, Container.Last + 1, New_Item);
end if;
- end Append;
+ end Append_Vector;
procedure Append
(Container : in out Vector;
New_Item : Element_Type;
- Count : Count_Type := 1)
+ Count : Count_Type)
is
begin
-- In the general case, we pass the buck to Insert, but for efficiency,
@@ -229,16 +229,16 @@ is
end if;
end Append;
- ----------------
- -- Append_One --
- ----------------
+ ------------
+ -- Append --
+ ------------
- procedure Append_One (Container : in out Vector;
+ procedure Append (Container : in out Vector;
New_Item : Element_Type)
is
begin
Insert (Container, Last_Index (Container) + 1, New_Item, 1);
- end Append_One;
+ end Append;
----------------------
-- Append_Slow_Path --
@@ -269,7 +269,7 @@ is
return;
else
Target.Clear;
- Target.Append (Source);
+ Target.Append_Vector (Source);
end if;
end Assign;
@@ -1619,7 +1619,7 @@ is
end;
end Insert;
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Extended_Index;
New_Item : Vector)
@@ -1766,9 +1766,9 @@ is
Dst_Index := Dst_Index + 1;
end loop;
end;
- end Insert;
+ end Insert_Vector;
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Cursor;
New_Item : Vector)
@@ -1798,10 +1798,10 @@ is
Index := Before.Index;
end if;
- Insert (Container, Index, New_Item);
- end Insert;
+ Insert_Vector (Container, Index, New_Item);
+ end Insert_Vector;
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Cursor;
New_Item : Vector;
@@ -1838,10 +1838,10 @@ is
Index := Before.Index;
end if;
- Insert (Container, Index, New_Item);
+ Insert_Vector (Container, Index, New_Item);
Position := (Container'Unrestricted_Access, Index);
- end Insert;
+ end Insert_Vector;
procedure Insert
(Container : in out Vector;
@@ -2559,11 +2559,6 @@ is
-- Prepend --
-------------
- procedure Prepend (Container : in out Vector; New_Item : Vector) is
- begin
- Insert (Container, Index_Type'First, New_Item);
- end Prepend;
-
procedure Prepend
(Container : in out Vector;
New_Item : Element_Type;
@@ -2573,6 +2568,15 @@ is
Insert (Container, Index_Type'First, New_Item, Count);
end Prepend;
+ -------------
+ -- Prepend_Vector --
+ -------------
+
+ procedure Prepend_Vector (Container : in out Vector; New_Item : Vector) is
+ begin
+ Insert_Vector (Container, Index_Type'First, New_Item);
+ end Prepend_Vector;
+
--------------
-- Previous --
--------------
diff --git a/gcc/ada/libgnat/a-coinve.ads b/gcc/ada/libgnat/a-coinve.ads
index 593b63e..c9364c7 100644
--- a/gcc/ada/libgnat/a-coinve.ads
+++ b/gcc/ada/libgnat/a-coinve.ads
@@ -64,7 +64,7 @@ is
Default_Iterator => Iterate,
Iterator_Element => Element_Type,
Aggregate => (Empty => Empty_Vector,
- Add_Unnamed => Append_One,
+ Add_Unnamed => Append,
New_Indexed => New_Vector,
Assign_Indexed => Replace_Element);
@@ -195,24 +195,43 @@ is
procedure Move (Target : in out Vector; Source : in out Vector);
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Extended_Index;
New_Item : Vector);
procedure Insert
(Container : in out Vector;
+ Before : Extended_Index;
+ New_Item : Vector) renames Insert_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Insert_Vector
+ (Container : in out Vector;
Before : Cursor;
New_Item : Vector);
procedure Insert
(Container : in out Vector;
Before : Cursor;
+ New_Item : Vector) renames Insert_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Insert_Vector
+ (Container : in out Vector;
+ Before : Cursor;
New_Item : Vector;
Position : out Cursor);
procedure Insert
(Container : in out Vector;
+ Before : Cursor;
+ New_Item : Vector;
+ Position : out Cursor) renames Insert_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Insert
+ (Container : in out Vector;
Before : Extended_Index;
New_Item : Element_Type;
Count : Count_Type := 1);
@@ -230,26 +249,36 @@ is
Position : out Cursor;
Count : Count_Type := 1);
- procedure Prepend
+ procedure Prepend_Vector
(Container : in out Vector;
New_Item : Vector);
procedure Prepend
(Container : in out Vector;
+ New_Item : Vector) renames Prepend_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Prepend
+ (Container : in out Vector;
New_Item : Element_Type;
Count : Count_Type := 1);
- procedure Append
+ procedure Append_Vector
(Container : in out Vector;
New_Item : Vector);
procedure Append
(Container : in out Vector;
+ New_Item : Vector) renames Append_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Append
+ (Container : in out Vector;
New_Item : Element_Type;
- Count : Count_Type := 1);
+ Count : Count_Type);
- procedure Append_One (Container : in out Vector;
- New_Item : Element_Type);
+ procedure Append (Container : in out Vector;
+ New_Item : Element_Type);
procedure Insert_Space
(Container : in out Vector;
diff --git a/gcc/ada/libgnat/a-convec.adb b/gcc/ada/libgnat/a-convec.adb
index a43be97..fec72cc 100644
--- a/gcc/ada/libgnat/a-convec.adb
+++ b/gcc/ada/libgnat/a-convec.adb
@@ -64,8 +64,8 @@ is
begin
return Result : Vector do
Reserve_Capacity (Result, Length (Left) + Length (Right));
- Append (Result, Left);
- Append (Result, Right);
+ Append_Vector (Result, Left);
+ Append_Vector (Result, Right);
end return;
end "&";
@@ -73,7 +73,7 @@ is
begin
return Result : Vector do
Reserve_Capacity (Result, Length (Left) + 1);
- Append (Result, Left);
+ Append_Vector (Result, Left);
Append (Result, Right);
end return;
end "&";
@@ -83,7 +83,7 @@ is
return Result : Vector do
Reserve_Capacity (Result, 1 + Length (Right));
Append (Result, Left);
- Append (Result, Right);
+ Append_Vector (Result, Right);
end return;
end "&";
@@ -167,21 +167,10 @@ is
-- Append --
------------
- procedure Append (Container : in out Vector; New_Item : Vector) is
- begin
- if Is_Empty (New_Item) then
- return;
- elsif Checks and then Container.Last = Index_Type'Last then
- raise Constraint_Error with "vector is already at its maximum length";
- else
- Insert (Container, Container.Last + 1, New_Item);
- end if;
- end Append;
-
procedure Append
(Container : in out Vector;
New_Item : Element_Type;
- Count : Count_Type := 1)
+ Count : Count_Type)
is
begin
-- In the general case, we pass the buck to Insert, but for efficiency,
@@ -210,16 +199,31 @@ is
end if;
end Append;
- ----------------
- -- Append_One --
- ----------------
+ -------------------
+ -- Append_Vector --
+ -------------------
+
+ procedure Append_Vector (Container : in out Vector; New_Item : Vector) is
+ begin
+ if Is_Empty (New_Item) then
+ return;
+ elsif Checks and then Container.Last = Index_Type'Last then
+ raise Constraint_Error with "vector is already at its maximum length";
+ else
+ Insert_Vector (Container, Container.Last + 1, New_Item);
+ end if;
+ end Append_Vector;
+
+ ------------
+ -- Append --
+ ------------
- procedure Append_One (Container : in out Vector;
- New_Item : Element_Type)
+ procedure Append (Container : in out Vector;
+ New_Item : Element_Type)
is
begin
Insert (Container, Last_Index (Container) + 1, New_Item, 1);
- end Append_One;
+ end Append;
----------------------
-- Append_Slow_Path --
@@ -250,7 +254,7 @@ is
return;
else
Target.Clear;
- Target.Append (Source);
+ Target.Append_Vector (Source);
end if;
end Assign;
@@ -1310,7 +1314,7 @@ is
end;
end Insert;
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Extended_Index;
New_Item : Vector)
@@ -1429,9 +1433,9 @@ is
Container.Elements.EA (K .. J) := Src;
end;
- end Insert;
+ end Insert_Vector;
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Cursor;
New_Item : Vector)
@@ -1461,10 +1465,10 @@ is
Index := Before.Index;
end if;
- Insert (Container, Index, New_Item);
- end Insert;
+ Insert_Vector (Container, Index, New_Item);
+ end Insert_Vector;
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Cursor;
New_Item : Vector;
@@ -1501,10 +1505,10 @@ is
Index := Before.Index;
end if;
- Insert (Container, Index, New_Item);
+ Insert_Vector (Container, Index, New_Item);
Position := (Container'Unrestricted_Access, Index);
- end Insert;
+ end Insert_Vector;
procedure Insert
(Container : in out Vector;
@@ -2266,11 +2270,6 @@ is
-- Prepend --
-------------
- procedure Prepend (Container : in out Vector; New_Item : Vector) is
- begin
- Insert (Container, Index_Type'First, New_Item);
- end Prepend;
-
procedure Prepend
(Container : in out Vector;
New_Item : Element_Type;
@@ -2280,6 +2279,15 @@ is
Insert (Container, Index_Type'First, New_Item, Count);
end Prepend;
+ --------------------
+ -- Prepend_Vector --
+ --------------------
+
+ procedure Prepend_Vector (Container : in out Vector; New_Item : Vector) is
+ begin
+ Insert_Vector (Container, Index_Type'First, New_Item);
+ end Prepend_Vector;
+
--------------
-- Previous --
--------------
diff --git a/gcc/ada/libgnat/a-convec.ads b/gcc/ada/libgnat/a-convec.ads
index f969e6f..1d257a0 100644
--- a/gcc/ada/libgnat/a-convec.ads
+++ b/gcc/ada/libgnat/a-convec.ads
@@ -95,7 +95,7 @@ is
Default_Iterator => Iterate,
Iterator_Element => Element_Type,
Aggregate => (Empty => Empty,
- Add_Unnamed => Append_One,
+ Add_Unnamed => Append,
New_Indexed => New_Vector,
Assign_Indexed => Replace_Element);
@@ -334,59 +334,80 @@ is
with Pre => First = Index_Type'First;
-- Ada_2020 aggregate operation.
- procedure Insert
+ procedure Insert_Vector
(Container : in out Vector;
Before : Extended_Index;
New_Item : Vector);
-- If Before is not in the range First_Index (Container) .. Last_Index
-- (Container) + 1, then Constraint_Error is propagated. If
- -- Length(New_Item) is 0, then Insert does nothing. Otherwise, it computes
- -- the new length NL as the sum of the current length and Length
+ -- Length(New_Item) is 0, then Insert_Vector does nothing. Otherwise, it
+ -- computes the new length NL as the sum of the current length and Length
-- (New_Item); if the value of Last appropriate for length NL would be
-- greater than Index_Type'Last then Constraint_Error is propagated.
--
-- If the current vector capacity is less than NL, Reserve_Capacity
- -- (Container, NL) is called to increase the vector capacity. Then Insert
- -- slides the elements in the range Before .. Last_Index (Container) up by
- -- Length(New_Item) positions, and then copies the elements of New_Item to
- -- the positions starting at Before. Any exception raised during the
- -- copying is propagated.
+ -- (Container, NL) is called to increase the vector capacity. Then
+ -- Insert_Vector slides the elements in the range Before .. Last_Index
+ -- (Container) up by Length(New_Item) positions, and then copies the
+ -- elements of New_Item to the positions starting at Before. Any exception
+ -- raised during the copying is propagated.
procedure Insert
(Container : in out Vector;
+ Before : Extended_Index;
+ New_Item : Vector) renames Insert_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Insert_Vector
+ (Container : in out Vector;
Before : Cursor;
New_Item : Vector);
-- If Before is not No_Element, and does not designate an element in
-- Container, then Program_Error is propagated. Otherwise, if
- -- Length(New_Item) is 0, then Insert does nothing. If Before is
- -- No_Element, then the call is equivalent to Insert (Container, Last_Index
- -- (Container) + 1, New_Item); otherwise the call is equivalent to Insert
- -- (Container, To_Index (Before), New_Item);
+ -- Length(New_Item) is 0, then Insert_Vector does nothing. If Before is
+ -- No_Element, then the call is equivalent to Insert_Vector (Container,
+ -- Last_Index (Container) + 1, New_Item); otherwise the call is equivalent
+ -- to Insert_Vector (Container, To_Index (Before), New_Item);
procedure Insert
(Container : in out Vector;
Before : Cursor;
+ New_Item : Vector) renames Insert_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Insert_Vector
+ (Container : in out Vector;
+ Before : Cursor;
New_Item : Vector;
Position : out Cursor);
-- If Before is not No_Element, and does not designate an element in
-- Container, then Program_Error is propagated. If Before equals
-- No_Element, then let T be Last_Index (Container) + 1; otherwise, let T
- -- be To_Index (Before). Insert (Container, T, New_Item) is called, and
- -- then Position is set to To_Cursor (Container, T).
+ -- be To_Index (Before). Insert_Vector (Container, T, New_Item) is called,
+ -- and then Position is set to To_Cursor (Container, T).
+
+ procedure Insert
+ (Container : in out Vector;
+ Before : Cursor;
+ New_Item : Vector;
+ Position : out Cursor) renames Insert_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
procedure Insert
(Container : in out Vector;
Before : Extended_Index;
New_Item : Element_Type;
Count : Count_Type := 1);
- -- Equivalent to Insert (Container, Before, To_Vector (New_Item, Count));
+ -- Equivalent to:
+ -- Insert_Vector (Container, Before, To_Vector (New_Item, Count));
procedure Insert
(Container : in out Vector;
Before : Cursor;
New_Item : Element_Type;
Count : Count_Type := 1);
- -- Equivalent to Insert (Container, Before, To_Vector (New_Item, Count));
+ -- Equivalent to:
+ -- Insert_Vector (Container, Before, To_Vector (New_Item, Count));
procedure Insert
(Container : in out Vector;
@@ -395,7 +416,7 @@ is
Position : out Cursor;
Count : Count_Type := 1);
-- Equivalent to
- -- Insert (Container, Before, To_Vector (New_Item, Count), Position);
+ -- Insert_Vector (Container, Before, To_Vector (New_Item, Count), Position)
procedure Insert
(Container : in out Vector;
@@ -425,33 +446,42 @@ is
-- be To_Index (Before). Insert (Container, T, Count) is called, and then
-- Position is set to To_Cursor (Container, T).
- procedure Prepend
+ procedure Prepend_Vector
(Container : in out Vector;
New_Item : Vector);
-- Equivalent to Insert (Container, First_Index (Container), New_Item).
procedure Prepend
(Container : in out Vector;
+ New_Item : Vector) renames Prepend_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Prepend
+ (Container : in out Vector;
New_Item : Element_Type;
Count : Count_Type := 1);
-- Equivalent to Insert (Container, First_Index (Container), New_Item,
-- Count).
- procedure Append
+ procedure Append_Vector
(Container : in out Vector;
New_Item : Vector);
-- Equivalent to Insert (Container, Last_Index (Container) + 1, New_Item).
procedure Append
(Container : in out Vector;
+ New_Item : Vector) renames Append_Vector;
+ -- Retained for now for compatibility; AI12-0400 will remove this.
+
+ procedure Append
+ (Container : in out Vector;
New_Item : Element_Type;
- Count : Count_Type := 1);
+ Count : Count_Type);
-- Equivalent to Insert (Container, Last_Index (Container) + 1, New_Item,
-- Count).
- procedure Append_One (Container : in out Vector;
- New_Item : Element_Type);
- -- Ada_2020 aggregate operation.
+ procedure Append (Container : in out Vector;
+ New_Item : Element_Type);
procedure Insert_Space
(Container : in out Vector;
diff --git a/gcc/ada/libgnat/a-strfix.ads b/gcc/ada/libgnat/a-strfix.ads
index 7d6e121..4214157 100644
--- a/gcc/ada/libgnat/a-strfix.ads
+++ b/gcc/ada/libgnat/a-strfix.ads
@@ -108,10 +108,57 @@ package Ada.Strings.Fixed with SPARK_Mode is
Going : Direction := Forward;
Mapping : Maps.Character_Mapping_Function) return Natural
with
- Pre =>
+ Pre =>
Pattern'Length /= 0
and then (if Source'Length /= 0 then From in Source'Range),
- Global => null;
+
+ Post => Index'Result in 0 | Source'Range,
+ Contract_Cases =>
+
+ -- If no slice in the considered range of Source matches Pattern,
+ -- then 0 is returned.
+
+ ((for all J in Source'Range =>
+ (if (if Going = Forward
+ then J in From .. Source'Last - Pattern'Length + 1
+ else J <= From - Pattern'Length + 1)
+ then Translate (Source (J .. J - 1 + Pattern'Length), Mapping)
+ /= Pattern))
+ =>
+ Index'Result = 0,
+
+ -- Otherwise, a valid index is returned
+
+ others
+ =>
+
+ -- The result is in the considered range of Source
+
+ (if Going = Forward
+ then Index'Result in From .. Source'Last - Pattern'Length + 1
+ else Index'Result in Source'First .. From - Pattern'Length + 1)
+
+ -- The slice beginning at the returned index matches Pattern
+
+ and then
+ Translate (Source (Index'Result
+ .. Index'Result - 1 + Pattern'Length),
+ Mapping)
+ = Pattern
+
+ -- The result is the smallest or largest index which satisfies the
+ -- matching, respectively when Going = Forward and
+ -- Going = Backwards.
+
+ and then
+ (for all J in Source'Range =>
+ (if (if Going = Forward
+ then J in From .. Index'Result - 1
+ else J - 1 in Index'Result .. From - Pattern'Length)
+ then Translate (Source (J .. J - 1 + Pattern'Length),
+ Mapping)
+ /= Pattern))),
+ Global => null;
pragma Ada_05 (Index);
function Index
@@ -121,10 +168,57 @@ package Ada.Strings.Fixed with SPARK_Mode is
Going : Direction := Forward;
Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
with
- Pre =>
+ Pre =>
Pattern'Length /= 0
and then (if Source'Length /= 0 then From in Source'Range),
- Global => null;
+
+ Post => Index'Result in 0 | Source'Range,
+ Contract_Cases =>
+
+ -- If no slice in the considered range of Source matches Pattern,
+ -- then 0 is returned.
+
+ ((for all J in Source'Range =>
+ (if (if Going = Forward
+ then J in From .. Source'Last - Pattern'Length + 1
+ else J <= From - Pattern'Length + 1)
+ then Translate (Source (J .. J - 1 + Pattern'Length), Mapping)
+ /= Pattern))
+ =>
+ Index'Result = 0,
+
+ -- Otherwise, a valid index is returned
+
+ others
+ =>
+
+ -- The result is in the considered range of Source
+
+ (if Going = Forward
+ then Index'Result in From .. Source'Last - Pattern'Length + 1
+ else Index'Result in Source'First .. From - Pattern'Length + 1)
+
+ -- The slice beginning at the returned index matches Pattern
+
+ and then
+ Translate (Source (Index'Result
+ .. Index'Result - 1 + Pattern'Length),
+ Mapping)
+ = Pattern
+
+ -- The result is the smallest or largest index which satisfies the
+ -- matching, respectively when Going = Forward and
+ -- Going = Backwards.
+
+ and then
+ (for all J in Source'Range =>
+ (if (if Going = Forward
+ then J in From .. Index'Result - 1
+ else J - 1 in Index'Result .. From - Pattern'Length)
+ then Translate (Source (J .. J - 1 + Pattern'Length),
+ Mapping)
+ /= Pattern))),
+ Global => null;
pragma Ada_05 (Index);
-- Each Index function searches, starting from From, for a slice of
@@ -146,8 +240,53 @@ package Ada.Strings.Fixed with SPARK_Mode is
Going : Direction := Forward;
Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
with
- Pre => Pattern'Length > 0,
- Global => null;
+ Pre => Pattern'Length > 0,
+
+ Post => Index'Result in 0 | Source'Range,
+ Contract_Cases =>
+
+ -- If Source is empty, or if no slice of Source matches Pattern, then
+ -- 0 is returned.
+
+ (Source'Length = 0
+ or else
+ (for all J in Source'First .. Source'Last - Pattern'Length + 1 =>
+ Translate (Source (J .. J - 1 + Pattern'Length), Mapping)
+ /= Pattern)
+ =>
+ Index'Result = 0,
+
+ -- Otherwise, a valid index is returned
+
+ others
+ =>
+
+ -- The result is in the considered range of Source
+
+ Index'Result in Source'First .. Source'Last - Pattern'Length + 1
+
+ -- The slice beginning at the returned index matches Pattern
+
+ and then
+ Translate (Source (Index'Result
+ .. Index'Result - 1 + Pattern'Length),
+ Mapping)
+ = Pattern
+
+ -- The result is the smallest or largest index which satisfies the
+ -- matching, respectively when Going = Forward and
+ -- Going = Backwards.
+
+ and then
+ (for all J in Source'Range =>
+ (if (if Going = Forward
+ then J <= Index'Result - 1
+ else J - 1 in Index'Result
+ .. Source'Last - Pattern'Length)
+ then Translate (Source (J .. J - 1 + Pattern'Length),
+ Mapping)
+ /= Pattern))),
+ Global => null;
function Index
(Source : String;
@@ -155,8 +294,53 @@ package Ada.Strings.Fixed with SPARK_Mode is
Going : Direction := Forward;
Mapping : Maps.Character_Mapping_Function) return Natural
with
- Pre => Pattern'Length /= 0,
- Global => null;
+ Pre => Pattern'Length > 0,
+
+ Post => Index'Result in 0 | Source'Range,
+ Contract_Cases =>
+
+ -- If Source is empty, or if no slice of Source matches Pattern, then
+ -- 0 is returned.
+
+ (Source'Length = 0
+ or else
+ (for all J in Source'First .. Source'Last - Pattern'Length + 1 =>
+ Translate (Source (J .. J - 1 + Pattern'Length), Mapping)
+ /= Pattern)
+ =>
+ Index'Result = 0,
+
+ -- Otherwise, a valid index is returned
+
+ others
+ =>
+
+ -- The result is in the considered range of Source
+
+ Index'Result in Source'First .. Source'Last - Pattern'Length + 1
+
+ -- The slice beginning at the returned index matches Pattern
+
+ and then
+ Translate (Source (Index'Result
+ .. Index'Result - 1 + Pattern'Length),
+ Mapping)
+ = Pattern
+
+ -- The result is the smallest or largest index which satisfies the
+ -- matching, respectively when Going = Forward and
+ -- Going = Backwards.
+
+ and then
+ (for all J in Source'Range =>
+ (if (if Going = Forward
+ then J <= Index'Result - 1
+ else J - 1 in Index'Result
+ .. Source'Last - Pattern'Length)
+ then Translate (Source (J .. J - 1 + Pattern'Length),
+ Mapping)
+ /= Pattern))),
+ Global => null;
-- If Going = Forward, returns:
--
@@ -172,7 +356,44 @@ package Ada.Strings.Fixed with SPARK_Mode is
Test : Membership := Inside;
Going : Direction := Forward) return Natural
with
- Global => null;
+ Post => Index'Result in 0 | Source'Range,
+ Contract_Cases =>
+
+ -- If no character of Source satisfies the property Test on Set, then
+ -- 0 is returned.
+
+ ((for all C of Source =>
+ (Test = Inside) /= Ada.Strings.Maps.Is_In (C, Set))
+ =>
+ Index'Result = 0,
+
+ -- Otherwise, a index in the range of Source is returned
+
+ others
+ =>
+
+ -- The result is in the range of Source
+
+ Index'Result in Source'Range
+
+ -- The character at the returned index satisfies the property
+ -- Test on Set
+
+ and then
+ (Test = Inside)
+ = Ada.Strings.Maps.Is_In (Source (Index'Result), Set)
+
+ -- The result is the smallest or largest index which satisfies the
+ -- property, respectively when Going = Forward and
+ -- Going = Backwards.
+
+ and then
+ (for all J in Source'Range =>
+ (if J /= Index'Result
+ and then (J < Index'Result) = (Going = Forward)
+ then (Test = Inside)
+ /= Ada.Strings.Maps.Is_In (Source (J), Set)))),
+ Global => null;
function Index
(Source : String;
@@ -181,8 +402,53 @@ package Ada.Strings.Fixed with SPARK_Mode is
Test : Membership := Inside;
Going : Direction := Forward) return Natural
with
- Pre => (if Source'Length /= 0 then From in Source'Range),
- Global => null;
+ Pre => (if Source'Length /= 0 then From in Source'Range),
+
+ Post => Index'Result in 0 | Source'Range,
+ Contract_Cases =>
+
+ -- If no character in the considered slice of Source satisfies the
+ -- property Test on Set, then 0 is returned.
+
+ ((for all I in Source'Range =>
+ (if I = From
+ or else (I > From) = (Going = Forward)
+ then (Test = Inside) /= Ada.Strings.Maps.Is_In (Source (I), Set)))
+ =>
+ Index'Result = 0,
+
+ -- Otherwise, an index in the range of Source is returned
+
+ others
+ =>
+
+ -- The result is in the considered range of Source
+
+ Index'Result in Source'Range
+ and then (Index'Result = From
+ or else (Index'Result > From) = (Going = Forward))
+
+ -- The character at the returned index satisfies the property
+ -- Test on Set.
+
+ and then
+ (Test = Inside)
+ = Ada.Strings.Maps.Is_In (Source (Index'Result), Set)
+
+ -- The result is the smallest or largest index which satisfies the
+ -- property, respectively when Going = Forward and
+ -- Going = Backwards.
+
+ and then
+ (for all J in Source'Range =>
+ (if J /= Index'Result
+ and then (J < Index'Result) = (Going = Forward)
+ and then (J = From
+ or else (J > From) = (Going = Forward))
+ then
+ (Test = Inside)
+ /= Ada.Strings.Maps.Is_In (Source (J), Set)))),
+ Global => null;
pragma Ada_05 (Index);
-- Index searches for the first or last occurrence of any of a set of
-- characters (when Test=Inside), or any of the complement of a set of
@@ -198,8 +464,49 @@ package Ada.Strings.Fixed with SPARK_Mode is
From : Positive;
Going : Direction := Forward) return Natural
with
- Pre => (if Source'Length /= 0 then From in Source'Range),
- Global => null;
+ Pre => (if Source'Length /= 0 then From in Source'Range),
+
+ Post => Index_Non_Blank'Result in 0 | Source'Range,
+ Contract_Cases =>
+
+ -- If all characters in the considered slice of Source are Space
+ -- characters, then 0 is returned.
+
+ ((for all J in Source'Range =>
+ (if J = From or else (J > From) = (Going = Forward)
+ then Source (J) = ' '))
+ =>
+ Index_Non_Blank'Result = 0,
+
+ -- Otherwise, a valid index is returned
+
+ others
+ =>
+
+ -- The result is in the considered range of Source
+
+ Index_Non_Blank'Result in Source'Range
+ and then (Index_Non_Blank'Result = From
+ or else (Index_Non_Blank'Result > From)
+ = (Going = Forward))
+
+ -- The character at the returned index is not a Space character
+
+ and then Source (Index_Non_Blank'Result) /= ' '
+
+ -- The result is the smallest or largest index which is not a
+ -- Space character, respectively when Going = Forward and
+ -- Going = Backwards.
+
+ and then
+ (for all J in Source'Range =>
+ (if J /= Index_Non_Blank'Result
+ and then (J < Index_Non_Blank'Result)
+ = (Going = Forward)
+ and then (J = From or else (J > From)
+ = (Going = Forward))
+ then Source (J) = ' '))),
+ Global => null;
pragma Ada_05 (Index_Non_Blank);
-- Returns Index (Source, Maps.To_Set(Space), From, Outside, Going)
@@ -207,7 +514,37 @@ package Ada.Strings.Fixed with SPARK_Mode is
(Source : String;
Going : Direction := Forward) return Natural
with
- Global => null;
+ Post => Index_Non_Blank'Result in 0 | Source'Range,
+ Contract_Cases =>
+
+ -- If all characters of Source are Space characters, then 0 is
+ -- returned.
+
+ ((for all C of Source => C = ' ') => Index_Non_Blank'Result = 0,
+
+ -- Otherwise, a valid index is returned
+
+ others =>
+
+ -- The result is in the range of Source
+
+ Index_Non_Blank'Result in Source'Range
+
+ -- The character at the returned index is not a Space character
+
+ and then Source (Index_Non_Blank'Result) /= ' '
+
+ -- The result is the smallest or largest index which is not a
+ -- Space character, respectively when Going = Forward and
+ -- Going = Backwards.
+
+ and then
+ (for all J in Source'Range =>
+ (if J /= Index_Non_Blank'Result
+ and then (J < Index_Non_Blank'Result)
+ = (Going = Forward)
+ then Source (J) = ' '))),
+ Global => null;
-- Returns Index (Source, Maps.To_Set(Space), Outside, Going)
function Count
@@ -246,8 +583,53 @@ package Ada.Strings.Fixed with SPARK_Mode is
First : out Positive;
Last : out Natural)
with
- Pre => (if Source'Length /= 0 then From in Source'Range),
- Global => null;
+ Pre => (if Source'Length /= 0 then From in Source'Range),
+ Contract_Cases =>
+
+ -- If Source is the empty string, or if no character of the considered
+ -- slice of Source satisfies the property Test on Set, then First is
+ -- set to From and Last is set to 0.
+
+ (Source'Length = 0
+ or else
+ (for all C of Source (From .. Source'Last) =>
+ (Test = Inside) /= Ada.Strings.Maps.Is_In (C, Set))
+ =>
+ First = From and then Last = 0,
+
+ -- Otherwise, First and Last are set to valid indexes
+
+ others
+ =>
+
+ -- First and Last are in the considered range of Source
+
+ First in From .. Source'Last
+ and then Last in First .. Source'Last
+
+ -- No character between From and First satisfies the property Test
+ -- on Set.
+
+ and then
+ (for all C of Source (From .. First - 1) =>
+ (Test = Inside) /= Ada.Strings.Maps.Is_In (C, Set))
+
+ -- All characters between First and Last satisfy the property Test
+ -- on Set.
+
+ and then
+ (for all C of Source (First .. Last) =>
+ (Test = Inside) = Ada.Strings.Maps.Is_In (C, Set))
+
+ -- If Last is not Source'Last, then the character at position
+ -- Last + 1 does not satify the property Test on Set.
+
+ and then
+ (if Last < Source'Last
+ then
+ (Test = Inside)
+ /= Ada.Strings.Maps.Is_In (Source (Last + 1), Set))),
+ Global => null;
pragma Ada_2012 (Find_Token);
-- If Source is not the null string and From is not in Source'Range, then
-- Index_Error is raised. Otherwise, First is set to the index of the first
@@ -264,6 +646,50 @@ package Ada.Strings.Fixed with SPARK_Mode is
First : out Positive;
Last : out Natural)
with
+ Contract_Cases =>
+
+ -- If Source is the empty string, or if no character of Source
+ -- satisfies the property Test on Set, then First is set to From and
+ -- Last is set to 0.
+
+ (Source'Length = 0
+ or else
+ (for all C of Source =>
+ (Test = Inside) /= Ada.Strings.Maps.Is_In (C, Set))
+ =>
+ First = Source'First and then Last = 0,
+
+ -- Otherwise, First and Last are set to valid indexes
+
+ others
+ =>
+
+ -- First and Last are in the considered range of Source
+
+ First in Source'Range
+ and then Last in First .. Source'Last
+
+ -- No character before First satisfies the property Test on Set
+
+ and then
+ (for all C of Source (Source'First .. First - 1) =>
+ (Test = Inside) /= Ada.Strings.Maps.Is_In (C, Set))
+
+ -- All characters between First and Last satisfy the property Test
+ -- on Set.
+
+ and then
+ (for all C of Source (First .. Last) =>
+ (Test = Inside) = Ada.Strings.Maps.Is_In (C, Set))
+
+ -- If Last is not Source'Last, then the character at position
+ -- Last + 1 does not satify the property Test on Set.
+
+ and then
+ (if Last < Source'Last
+ then
+ (Test = Inside)
+ /= Ada.Strings.Maps.Is_In (Source (Last + 1), Set))),
Global => null;
-- Equivalent to Find_Token (Source, Set, Source'First, Test, First, Last)
@@ -275,14 +701,46 @@ package Ada.Strings.Fixed with SPARK_Mode is
(Source : String;
Mapping : Maps.Character_Mapping_Function) return String
with
- Post => Translate'Result'Length = Source'Length,
+ Post =>
+
+ -- Lower bound of the returned string is 1
+
+ Translate'Result'First = 1
+
+ -- The returned string has the same length as Source
+
+ and then Translate'Result'Last = Source'Length
+
+ -- Each character in the returned string is the translation of the
+ -- character at the same position in Source through Mapping.
+
+ and then
+ (for all J in Source'Range =>
+ Translate'Result (J - Source'First + 1)
+ = Mapping (Source (J))),
Global => null;
function Translate
(Source : String;
Mapping : Maps.Character_Mapping) return String
with
- Post => Translate'Result'Length = Source'Length,
+ Post =>
+
+ -- Lower bound of the returned string is 1
+
+ Translate'Result'First = 1
+
+ -- The returned string has the same length as Source
+
+ and then Translate'Result'Last = Source'Length
+
+ -- Each character in the returned string is the translation of the
+ -- character at the same position in Source through Mapping.
+
+ and then
+ (for all J in Source'Range =>
+ Translate'Result (J - Source'First + 1)
+ = Ada.Strings.Maps.Value (Mapping, Source (J))),
Global => null;
-- Returns the string S whose length is Source'Length and such that S (I)
@@ -293,12 +751,25 @@ package Ada.Strings.Fixed with SPARK_Mode is
(Source : in out String;
Mapping : Maps.Character_Mapping_Function)
with
+ Post =>
+
+ -- Each character in Source after the call is the translation of
+ -- the character at the same position before the call, through Mapping.
+
+ (for all J in Source'Range => Source (J) = Mapping (Source'Old (J))),
Global => null;
procedure Translate
(Source : in out String;
Mapping : Maps.Character_Mapping)
with
+ Post =>
+
+ -- Each character in Source after the call is the translation of
+ -- the character at the same position before the call, through Mapping.
+
+ (for all J in Source'Range =>
+ Source (J) = Ada.Strings.Maps.Value (Mapping, Source'Old (J))),
Global => null;
-- Equivalent to Source := Translate(Source, Mapping)
@@ -344,17 +815,80 @@ package Ada.Strings.Fixed with SPARK_Mode is
and then High >= Source'First - 1
and then (if High >= Low
then Natural'Max (0, Low - Source'First)
- <= Natural'Last - By'Length
- - Natural'Max (Source'Last - High, 0)
+ <= Natural'Last
+ - By'Length
+ - Natural'Max (Source'Last - High, 0)
else Source'Length <= Natural'Last - By'Length),
+
+ -- Lower bound of the returned string is 1
+
+ Post => Replace_Slice'Result'First = 1,
Contract_Cases =>
+
+ -- If High >= Low, then the returned string comprises
+ -- Source (Source'First .. Low - 1) & By
+ -- & Source(High + 1 .. Source'Last).
+
(High >= Low =>
+
+ -- Length of the returned string
+
Replace_Slice'Result'Length
- = Natural'Max (0, Low - Source'First)
- + By'Length
- + Natural'Max (Source'Last - High, 0),
+ = Natural'Max (0, Low - Source'First)
+ + By'Length
+ + Natural'Max (Source'Last - High, 0)
+
+ -- Elements starting at Low are replaced by elements of By
+
+ and then
+ Replace_Slice'Result (1 .. Natural'Max (0, Low - Source'First))
+ = Source (Source'First .. Low - 1)
+ and then
+ Replace_Slice'Result
+ (Natural'Max (0, Low - Source'First) + 1
+ .. Natural'Max (0, Low - Source'First) + By'Length)
+ = By
+
+ -- When there are remaining characters after the replaced slice,
+ -- they are appended to the result.
+
+ and then
+ (if High < Source'Last
+ then
+ Replace_Slice'Result
+ (Natural'Max (0, Low - Source'First) + By'Length + 1
+ .. Replace_Slice'Result'Last)
+ = Source (High + 1 .. Source'Last)),
+
+ -- If High < Low, then the returned string is
+ -- Insert (Source, Before => Low, New_Item => By).
+
others =>
- Replace_Slice'Result'Length = Source'Length + By'Length),
+
+ -- Length of the returned string
+
+ Replace_Slice'Result'Length = Source'Length + By'Length
+
+ -- Elements of By are inserted after the element at Low
+
+ and then
+ Replace_Slice'Result (1 .. Low - Source'First)
+ = Source (Source'First .. Low - 1)
+ and then
+ Replace_Slice'Result
+ (Low - Source'First + 1 .. Low - Source'First + By'Length)
+ = By
+
+ -- When there are remaining characters after Low in Source, they
+ -- are appended to the result.
+
+ and then
+ (if Low < Source'Last
+ then
+ Replace_Slice'Result
+ (Low - Source'First + By'Length + 1
+ .. Replace_Slice'Result'Last)
+ = Source (Low .. Source'Last))),
Global => null;
-- Equivalent to:
--
@@ -369,7 +903,38 @@ package Ada.Strings.Fixed with SPARK_Mode is
Pre =>
Before - 1 in Source'First - 1 .. Source'Last
and then Source'Length <= Natural'Last - New_Item'Length,
- Post => Insert'Result'Length = Source'Length + New_Item'Length,
+
+ Post =>
+
+ -- Lower bound of the returned string is 1
+
+ Insert'Result'First = 1
+
+ -- Length of the returned string
+
+ and then Insert'Result'Length = Source'Length + New_Item'Length
+
+ -- Elements of New_Item are inserted after element at Before
+
+ and then
+ Insert'Result (1 .. Before - Source'First)
+ = Source (Source'First .. Before - 1)
+ and then
+ Insert'Result
+ (Before - Source'First + 1
+ .. Before - Source'First + New_Item'Length)
+ = New_Item
+
+ -- When there are remaining characters after Before in Source, they
+ -- are appended to the returned string.
+
+ and then
+ (if Before - 1 < Source'Last
+ then
+ Insert'Result
+ (Before - Source'First + New_Item'Length + 1
+ .. Insert'Result'Last)
+ = Source (Before .. Source'Last)),
Global => null;
-- Propagates Index_Error if Before is not in
-- Source'First .. Source'Last+1; otherwise, returns
@@ -397,12 +962,44 @@ package Ada.Strings.Fixed with SPARK_Mode is
Pre =>
Position - 1 in Source'First - 1 .. Source'Last
and then
- (if Position - Source'First >= Source'Length - New_Item'Length
- then Position - Source'First <= Natural'Last - New_Item'Length),
+ (if Position - Source'First >= Source'Length - New_Item'Length
+ then Position - Source'First <= Natural'Last - New_Item'Length),
+
Post =>
- Overwrite'Result'Length
- = Integer'Max (Source'Length,
- Position - Source'First + New_Item'Length),
+
+ -- Lower bound of the returned string is 1
+
+ Overwrite'Result'First = 1
+
+ -- Length of the returned string
+
+ and then
+ Overwrite'Result'Length
+ = Integer'Max (Source'Length,
+ Position - Source'First + New_Item'Length)
+
+ -- Elements after Position are replaced by elements of New_Item
+
+ and then
+ Overwrite'Result (1 .. Position - Source'First)
+ = Source (Source'First .. Position - 1)
+ and then
+ Overwrite'Result
+ (Position - Source'First + 1
+ .. Position - Source'First + New_Item'Length)
+ = New_Item
+
+ -- If the end of Source is reached before the characters in New_Item
+ -- are exhausted, the remaining characters from New_Item are appended
+ -- to the string.
+
+ and then
+ (if Position <= Source'Last - New_Item'Length
+ then
+ Overwrite'Result
+ (Position - Source'First + New_Item'Length + 1
+ .. Overwrite'Result'Last)
+ = Source (Position + New_Item'Length .. Source'Last)),
Global => null;
-- Propagates Index_Error if Position is not in
-- Source'First .. Source'Last + 1; otherwise, returns the string obtained
@@ -429,15 +1026,47 @@ package Ada.Strings.Fixed with SPARK_Mode is
From : Positive;
Through : Natural) return String
with
- Pre => (if From <= Through
- then (From in Source'Range
- and then Through <= Source'Last)),
- Post =>
- Delete'Result'Length
- = Source'Length - (if From <= Through
- then Through - From + 1
- else 0),
- Global => null;
+ Pre => (if From <= Through
+ then (From in Source'Range
+ and then Through <= Source'Last)),
+
+ -- Lower bound of the returned string is 1
+
+ Post =>
+ Delete'Result'First = 1,
+
+ Contract_Cases =>
+
+ -- If From <= Through, the characters between From and Through are
+ -- removed.
+
+ (From <= Through =>
+
+ -- Length of the returned string
+
+ Delete'Result'Length = Source'Length - (Through - From + 1)
+
+ -- Elements before From are preserved
+
+ and then
+ Delete'Result (1 .. From - Source'First)
+ = Source (Source'First .. From - 1)
+
+ -- If there are remaining characters after Through, they are
+ -- appended to the returned string.
+
+ and then
+ (if Through < Source'Last
+ then Delete'Result
+ (From - Source'First + 1 .. Delete'Result'Last)
+ = Source (Through + 1 .. Source'Last)),
+
+ -- Otherwise, the returned string is Source with lower bound 1
+
+ others =>
+ Delete'Result'Length = Source'Length
+ and then Delete'Result = Source),
+ Global => null;
-- If From <= Through, the returned string is
-- Replace_Slice(Source, From, Through, ""); otherwise, it is Source with
-- lower bound 1.
@@ -469,7 +1098,47 @@ package Ada.Strings.Fixed with SPARK_Mode is
(Source : String;
Side : Trim_End) return String
with
- Post => Trim'Result'Length <= Source'Length,
+ Post =>
+
+ -- Lower bound of the returned string is 1
+
+ Trim'Result'First = 1
+
+ -- If all characters in Source are Space, the returned string is
+ -- empty.
+
+ and then
+ (if (for all J in Source'Range => Source (J) = ' ')
+ then Trim'Result = ""
+
+ -- Otherwise, the returned string is a slice of Source
+
+ else
+ (for some Low in Source'Range =>
+ (for some High in Source'Range =>
+
+ -- Trim returns the slice of Source between Low and High
+
+ Trim'Result = Source (Low .. High)
+
+ -- Values of Low and High and the characters at their
+ -- position depend on Side.
+
+ and then
+ (if Side = Left then High = Source'Last
+ else Source (High) /= ' ')
+ and then
+ (if Side = Right then Low = Source'First
+ else Source (Low) /= ' ')
+
+ -- All characters outside range Low .. High are
+ -- Space characters.
+
+ and then
+ (for all J in Source'Range =>
+ (if J < Low then Source (J) = ' ')
+ and then
+ (if J > High then Source (J) = ' '))))),
Global => null;
-- Returns the string obtained by removing from Source all leading Space
-- characters (if Side = Left), all trailing Space characters (if
@@ -495,7 +1164,50 @@ package Ada.Strings.Fixed with SPARK_Mode is
Left : Maps.Character_Set;
Right : Maps.Character_Set) return String
with
- Post => Trim'Result'Length <= Source'Length,
+ Post =>
+
+ -- Lower bound of the returned string is 1
+
+ Trim'Result'First = 1
+
+ -- If all characters are contained in one of the sets Left and Right,
+ -- then the returned string is empty.
+
+ and then
+ (if (for all K in Source'Range =>
+ Ada.Strings.Maps.Is_In (Source (K), Left))
+ or
+ (for all K in Source'Range =>
+ Ada.Strings.Maps.Is_In (Source (K), Right))
+ then Trim'Result = ""
+
+ -- Otherwise, the returned string is a slice of Source
+
+ else
+ (for some Low in Source'Range =>
+ (for some High in Source'Range =>
+
+ -- Trim returns the slice of Source between Low and High
+
+ Trim'Result = Source (Low .. High)
+
+ -- Characters at the bounds of the returned string are
+ -- not contained in Left or Right.
+
+ and then not Ada.Strings.Maps.Is_In (Source (Low), Left)
+ and then not Ada.Strings.Maps.Is_In (Source (High), Right)
+
+ -- All characters before Low are contained in Left.
+ -- All characters after High are contained in Right.
+
+ and then
+ (for all K in Source'Range =>
+ (if K < Low
+ then
+ Ada.Strings.Maps.Is_In (Source (K), Left))
+ and then
+ (if K > High then
+ Ada.Strings.Maps.Is_In (Source (K), Right)))))),
Global => null;
-- Returns the string obtained by removing from Source all leading
-- characters in Left and all trailing characters in Right.
@@ -521,8 +1233,33 @@ package Ada.Strings.Fixed with SPARK_Mode is
Count : Natural;
Pad : Character := Space) return String
with
- Post => Head'Result'Length = Count,
- Global => null;
+ Post =>
+
+ -- Lower bound of the returned string is 1
+
+ Head'Result'First = 1
+
+ -- Length of the returned string is Count.
+
+ and then Head'Result'Length = Count,
+
+ Contract_Cases =>
+
+ -- If Count <= Source'Length, then the first Count characters of
+ -- Source are returned.
+
+ (Count <= Source'Length =>
+ Head'Result = Source (Source'First .. Source'First - 1 + Count),
+
+ -- Otherwise, the returned string is Source concatenated with
+ -- Count - Source'Length Pad characters.
+
+ others =>
+ Head'Result (1 .. Source'Length) = Source
+ and then
+ Head'Result (Source'Length + 1 .. Count)
+ = (1 .. Count - Source'Length => Pad)),
+ Global => null;
-- Returns a string of length Count. If Count <= Source'Length, the string
-- comprises the first Count characters of Source. Otherwise, its contents
-- are Source concatenated with Count - Source'Length Pad characters.
@@ -547,7 +1284,44 @@ package Ada.Strings.Fixed with SPARK_Mode is
Count : Natural;
Pad : Character := Space) return String
with
- Post => Tail'Result'Length = Count,
+ Post =>
+
+ -- Lower bound of the returned string is 1
+
+ Tail'Result'First = 1
+
+ -- Length of the returned string is Count
+
+ and then Tail'Result'Length = Count,
+ Contract_Cases =>
+
+ -- If Count is zero, then the returned string is empty
+
+ (Count = 0 =>
+ Tail'Result = "",
+
+ -- Otherwise, if Count <= Source'Length, then the last Count
+ -- characters of Source are returned.
+
+ (Count in 1 .. Source'Length) =>
+ Tail'Result = Source (Source'Last - Count + 1 .. Source'Last),
+
+ -- Otherwise, the returned string is Count - Source'Length Pad
+ -- characters concatenated with Source.
+
+ others =>
+
+ -- If Source is empty, then the returned string is Count Pad
+ -- characters.
+
+ (if Source'Length = 0
+ then Tail'Result = (1 .. Count => Pad)
+ else
+ Tail'Result (1 .. Count - Source'Length)
+ = (1 .. Count - Source'Length => Pad)
+ and then
+ Tail'Result (Count - Source'Length + 1 .. Tail'Result'Last)
+ = Source)),
Global => null;
-- Returns a string of length Count. If Count <= Source'Length, the string
-- comprises the last Count characters of Source. Otherwise, its contents
@@ -576,7 +1350,19 @@ package Ada.Strings.Fixed with SPARK_Mode is
(Left : Natural;
Right : Character) return String
with
- Post => "*"'Result'Length = Left,
+ Post =>
+
+ -- Lower bound of the returned string is 1
+
+ "*"'Result'First = 1
+
+ -- Length of the returned string
+
+ and then "*"'Result'Length = Left
+
+ -- All characters of the returned string are Right
+
+ and then (for all C of "*"'Result => C = Right),
Global => null;
function "*"
@@ -584,7 +1370,23 @@ package Ada.Strings.Fixed with SPARK_Mode is
Right : String) return String
with
Pre => (if Right'Length /= 0 then Left <= Natural'Last / Right'Length),
- Post => "*"'Result'Length = Left * Right'Length,
+
+ Post =>
+
+ -- Lower bound of the returned string is 1
+
+ "*"'Result'First = 1
+
+ -- Length of the returned string
+
+ and then "*"'Result'Length = Left * Right'Length
+
+ -- Content of the string is Right concatenated with itself Left times
+
+ and then
+ (for all J in 0 .. Left - 1 =>
+ "*"'Result (J * Right'Length + 1 .. (J + 1) * Right'Length)
+ = Right),
Global => null;
-- These functions replicate a character or string a specified number of
diff --git a/gcc/ada/libgnat/a-tags.adb b/gcc/ada/libgnat/a-tags.adb
index 798780a..7138f76 100644
--- a/gcc/ada/libgnat/a-tags.adb
+++ b/gcc/ada/libgnat/a-tags.adb
@@ -30,7 +30,6 @@
------------------------------------------------------------------------------
with Ada.Exceptions;
-with Ada.Unchecked_Conversion;
with System.HTable;
with System.Storage_Elements; use System.Storage_Elements;
@@ -96,12 +95,6 @@ package body Ada.Tags is
function To_Tag is
new Unchecked_Conversion (Integer_Address, Tag);
- function To_Addr_Ptr is
- new Ada.Unchecked_Conversion (System.Address, Addr_Ptr);
-
- function To_Address is
- new Ada.Unchecked_Conversion (Tag, System.Address);
-
function To_Dispatch_Table_Ptr is
new Ada.Unchecked_Conversion (Tag, Dispatch_Table_Ptr);
@@ -114,9 +107,6 @@ package body Ada.Tags is
function To_Tag_Ptr is
new Ada.Unchecked_Conversion (System.Address, Tag_Ptr);
- function To_Type_Specific_Data_Ptr is
- new Ada.Unchecked_Conversion (System.Address, Type_Specific_Data_Ptr);
-
-------------------------------
-- Inline_Always Subprograms --
-------------------------------
@@ -125,40 +115,6 @@ package body Ada.Tags is
-- avoid defeating the frontend inlining mechanism and thus ensure the
-- generation of their correct debug info.
- -------------------
- -- CW_Membership --
- -------------------
-
- -- Canonical implementation of Classwide Membership corresponding to:
-
- -- Obj in Typ'Class
-
- -- Each dispatch table contains a reference to a table of ancestors (stored
- -- in the first part of the Tags_Table) and a count of the level of
- -- inheritance "Idepth".
-
- -- Obj is in Typ'Class if Typ'Tag is in the table of ancestors that are
- -- contained in the dispatch table referenced by Obj'Tag . Knowing the
- -- level of inheritance of both types, this can be computed in constant
- -- time by the formula:
-
- -- TSD (Obj'tag).Tags_Table (TSD (Obj'tag).Idepth - TSD (Typ'tag).Idepth)
- -- = Typ'tag
-
- function CW_Membership (Obj_Tag : Tag; Typ_Tag : Tag) return Boolean is
- Obj_TSD_Ptr : constant Addr_Ptr :=
- To_Addr_Ptr (To_Address (Obj_Tag) - DT_Typeinfo_Ptr_Size);
- Typ_TSD_Ptr : constant Addr_Ptr :=
- To_Addr_Ptr (To_Address (Typ_Tag) - DT_Typeinfo_Ptr_Size);
- Obj_TSD : constant Type_Specific_Data_Ptr :=
- To_Type_Specific_Data_Ptr (Obj_TSD_Ptr.all);
- Typ_TSD : constant Type_Specific_Data_Ptr :=
- To_Type_Specific_Data_Ptr (Typ_TSD_Ptr.all);
- Pos : constant Integer := Obj_TSD.Idepth - Typ_TSD.Idepth;
- begin
- return Pos >= 0 and then Obj_TSD.Tags_Table (Pos) = Typ_Tag;
- end CW_Membership;
-
----------------------
-- Get_External_Tag --
----------------------
diff --git a/gcc/ada/libgnat/a-tags.ads b/gcc/ada/libgnat/a-tags.ads
index fb386c3..203f7ca 100644
--- a/gcc/ada/libgnat/a-tags.ads
+++ b/gcc/ada/libgnat/a-tags.ads
@@ -65,6 +65,7 @@
-- length depends on the number of interfaces covered by a tagged type.
with System.Storage_Elements;
+with Ada.Unchecked_Conversion;
package Ada.Tags is
pragma Preelaborate;
@@ -501,10 +502,6 @@ private
-- dispatch table, return the tagged kind of a type in the context of
-- concurrency and limitedness.
- function CW_Membership (Obj_Tag : Tag; Typ_Tag : Tag) return Boolean;
- -- Given the tag of an object and the tag associated to a type, return
- -- true if Obj is in Typ'Class.
-
function IW_Membership (This : System.Address; T : Tag) return Boolean;
-- Ada 2005 (AI-251): General routine that checks if a given object
-- implements a tagged type. Its common usage is to check if Obj is in
@@ -623,4 +620,49 @@ private
-- This type is used by the frontend to generate the code that handles
-- dispatch table slots of types declared at the local level.
+ -------------------
+ -- CW_Membership --
+ -------------------
+
+ function To_Address is
+ new Ada.Unchecked_Conversion (Tag, System.Address);
+
+ function To_Addr_Ptr is
+ new Ada.Unchecked_Conversion (System.Address, Addr_Ptr);
+
+ function To_Type_Specific_Data_Ptr is
+ new Ada.Unchecked_Conversion (System.Address, Type_Specific_Data_Ptr);
+
+ -- Canonical implementation of Classwide Membership corresponding to:
+
+ -- Obj in Typ'Class
+
+ -- Each dispatch table contains a reference to a table of ancestors (stored
+ -- in the first part of the Tags_Table) and a count of the level of
+ -- inheritance "Idepth".
+
+ -- Obj is in Typ'Class if Typ'Tag is in the table of ancestors that are
+ -- contained in the dispatch table referenced by Obj'Tag . Knowing the
+ -- level of inheritance of both types, this can be computed in constant
+ -- time by the formula:
+
+ -- TSD (Obj'tag).Tags_Table (TSD (Obj'tag).Idepth - TSD (Typ'tag).Idepth)
+ -- = Typ'tag
+
+ function CW_Membership (Obj_Tag : Tag; Typ_Tag : Tag) return Boolean is
+ (declare
+ Obj_TSD_Ptr : constant Addr_Ptr :=
+ To_Addr_Ptr (To_Address (Obj_Tag) - DT_Typeinfo_Ptr_Size);
+ Typ_TSD_Ptr : constant Addr_Ptr :=
+ To_Addr_Ptr (To_Address (Typ_Tag) - DT_Typeinfo_Ptr_Size);
+ Obj_TSD : constant Type_Specific_Data_Ptr :=
+ To_Type_Specific_Data_Ptr (Obj_TSD_Ptr.all);
+ Typ_TSD : constant Type_Specific_Data_Ptr :=
+ To_Type_Specific_Data_Ptr (Typ_TSD_Ptr.all);
+ Pos : constant Integer := Obj_TSD.Idepth - Typ_TSD.Idepth;
+ begin
+ Pos >= 0 and then Obj_TSD.Tags_Table (Pos) = Typ_Tag);
+ -- Given the tag of an object and the tag associated to a type, return
+ -- true if Obj is in Typ'Class.
+
end Ada.Tags;
diff --git a/gcc/ada/libgnat/a-ticoau.adb b/gcc/ada/libgnat/a-ticoau.adb
index e4f56dd..cf94305 100644
--- a/gcc/ada/libgnat/a-ticoau.adb
+++ b/gcc/ada/libgnat/a-ticoau.adb
@@ -30,22 +30,19 @@
------------------------------------------------------------------------------
with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
-with Ada.Text_IO.Float_Aux;
with System.Img_Real; use System.Img_Real;
package body Ada.Text_IO.Complex_Aux is
- package Aux renames Ada.Text_IO.Float_Aux;
-
---------
-- Get --
---------
procedure Get
(File : File_Type;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
+ ItemR : out Num;
+ ItemI : out Num;
Width : Field)
is
Buf : String (1 .. Field'Last);
@@ -95,8 +92,8 @@ package body Ada.Text_IO.Complex_Aux is
procedure Gets
(From : String;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
+ ItemR : out Num;
+ ItemI : out Num;
Last : out Positive)
is
Paren : Boolean;
@@ -139,8 +136,8 @@ package body Ada.Text_IO.Complex_Aux is
procedure Put
(File : File_Type;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Fore : Field;
Aft : Field;
Exp : Field)
@@ -159,8 +156,8 @@ package body Ada.Text_IO.Complex_Aux is
procedure Puts
(To : out String;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Aft : Field;
Exp : Field)
is
@@ -174,9 +171,9 @@ package body Ada.Text_IO.Complex_Aux is
-- Both parts are initially converted with a Fore of 0
Rptr := 0;
- Set_Image_Real (ItemR, R_String, Rptr, 0, Aft, Exp);
+ Set_Image_Real (Long_Long_Float (ItemR), R_String, Rptr, 0, Aft, Exp);
Iptr := 0;
- Set_Image_Real (ItemI, I_String, Iptr, 0, Aft, Exp);
+ Set_Image_Real (Long_Long_Float (ItemI), I_String, Iptr, 0, Aft, Exp);
-- Check room for both parts plus parens plus comma (RM G.1.3(34))
diff --git a/gcc/ada/libgnat/a-ticoau.ads b/gcc/ada/libgnat/a-ticoau.ads
index 739dce8..22555cf 100644
--- a/gcc/ada/libgnat/a-ticoau.ads
+++ b/gcc/ada/libgnat/a-ticoau.ads
@@ -30,39 +30,46 @@
------------------------------------------------------------------------------
-- This package contains the routines for Ada.Text_IO.Complex_IO that are
--- shared among separate instantiations of this package. The routines in
--- this package are identical semantically to those in Complex_IO itself,
--- except that the generic parameter Complex has been replaced by separate
--- real and imaginary values of type Long_Long_Float, and default parameters
--- have been removed because they are supplied explicitly by the calls from
--- within the generic template.
+-- shared among separate instantiations of this package. The routines in this
+-- package are identical semantically to those in Complex_IO, except that the
+-- generic parameter Complex has been replaced by separate real and imaginary
+-- parameters, and default parameters have been removed because they are
+-- supplied explicitly by the calls from within the generic template.
+
+with Ada.Text_IO.Float_Aux;
+
+private generic
+
+ type Num is digits <>;
+
+ with package Aux is new Ada.Text_IO.Float_Aux (Num, <>);
package Ada.Text_IO.Complex_Aux is
procedure Get
(File : File_Type;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
+ ItemR : out Num;
+ ItemI : out Num;
Width : Field);
procedure Put
(File : File_Type;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Fore : Field;
Aft : Field;
Exp : Field);
procedure Gets
(From : String;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
+ ItemR : out Num;
+ ItemI : out Num;
Last : out Positive);
procedure Puts
(To : out String;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Aft : Field;
Exp : Field);
diff --git a/gcc/ada/libgnat/a-ticoio.adb b/gcc/ada/libgnat/a-ticoio.adb
index fa52b60..e35a745 100644
--- a/gcc/ada/libgnat/a-ticoio.adb
+++ b/gcc/ada/libgnat/a-ticoio.adb
@@ -29,18 +29,42 @@
-- --
------------------------------------------------------------------------------
-with Ada.Text_IO;
-
with Ada.Text_IO.Complex_Aux;
+with Ada.Text_IO.Float_Aux;
+with System.Val_Flt; use System.Val_Flt;
+with System.Val_LFlt; use System.Val_LFlt;
+with System.Val_LLF; use System.Val_LLF;
package body Ada.Text_IO.Complex_IO is
use Complex_Types;
- package Aux renames Ada.Text_IO.Complex_Aux;
+ package Scalar_Float is new
+ Ada.Text_IO.Float_Aux (Float, Scan_Float);
+
+ package Scalar_Long_Float is new
+ Ada.Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
+
+ package Scalar_Long_Long_Float is new
+ Ada.Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
+ package Aux_Float is new
+ Ada.Text_IO.Complex_Aux (Float, Scalar_Float);
+
+ package Aux_Long_Float is new
+ Ada.Text_IO.Complex_Aux (Long_Float, Scalar_Long_Float);
- subtype LLF is Long_Long_Float;
- -- Type used for calls to routines in Aux
+ package Aux_Long_Long_Float is new
+ Ada.Text_IO.Complex_Aux (Long_Long_Float, Scalar_Long_Long_Float);
+
+ -- Throughout this generic body, we distinguish between the case where type
+ -- Float is OK, where type Long_Float is OK and where type Long_Long_Float
+ -- is needed. These boolean constants are used to test for this, such that
+ -- only code for the relevant case is included in the instance.
+
+ OK_Float : constant Boolean := Real'Base'Digits <= Float'Digits;
+
+ OK_Long_Float : constant Boolean := Real'Base'Digits <= Long_Float'Digits;
---------
-- Get --
@@ -48,14 +72,24 @@ package body Ada.Text_IO.Complex_IO is
procedure Get
(File : File_Type;
- Item : out Complex_Types.Complex;
+ Item : out Complex;
Width : Field := 0)
is
Real_Item : Real'Base;
Imag_Item : Real'Base;
begin
- Aux.Get (File, LLF (Real_Item), LLF (Imag_Item), Width);
+ if OK_Float then
+ Aux_Float.Get (File, Float (Real_Item), Float (Imag_Item), Width);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Get
+ (File, Long_Float (Real_Item), Long_Float (Imag_Item), Width);
+ else
+ Aux_Long_Long_Float.Get
+ (File, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
+ Width);
+ end if;
+
Item := (Real_Item, Imag_Item);
exception
@@ -67,7 +101,7 @@ package body Ada.Text_IO.Complex_IO is
---------
procedure Get
- (Item : out Complex_Types.Complex;
+ (Item : out Complex;
Width : Field := 0)
is
begin
@@ -80,14 +114,24 @@ package body Ada.Text_IO.Complex_IO is
procedure Get
(From : String;
- Item : out Complex_Types.Complex;
+ Item : out Complex;
Last : out Positive)
is
Real_Item : Real'Base;
Imag_Item : Real'Base;
begin
- Aux.Gets (From, LLF (Real_Item), LLF (Imag_Item), Last);
+ if OK_Float then
+ Aux_Float.Gets (From, Float (Real_Item), Float (Imag_Item), Last);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Gets
+ (From, Long_Float (Real_Item), Long_Float (Imag_Item), Last);
+ else
+ Aux_Long_Long_Float.Gets
+ (From, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
+ Last);
+ end if;
+
Item := (Real_Item, Imag_Item);
exception
@@ -100,13 +144,24 @@ package body Ada.Text_IO.Complex_IO is
procedure Put
(File : File_Type;
- Item : Complex_Types.Complex;
+ Item : Complex;
Fore : Field := Default_Fore;
Aft : Field := Default_Aft;
Exp : Field := Default_Exp)
is
begin
- Aux.Put (File, LLF (Re (Item)), LLF (Im (Item)), Fore, Aft, Exp);
+ if OK_Float then
+ Aux_Float.Put
+ (File, Float (Re (Item)), Float (Im (Item)), Fore, Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Put
+ (File, Long_Float (Re (Item)), Long_Float (Im (Item)), Fore, Aft,
+ Exp);
+ else
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
+ Fore, Aft, Exp);
+ end if;
end Put;
---------
@@ -114,7 +169,7 @@ package body Ada.Text_IO.Complex_IO is
---------
procedure Put
- (Item : Complex_Types.Complex;
+ (Item : Complex;
Fore : Field := Default_Fore;
Aft : Field := Default_Aft;
Exp : Field := Default_Exp)
@@ -129,12 +184,21 @@ package body Ada.Text_IO.Complex_IO is
procedure Put
(To : out String;
- Item : Complex_Types.Complex;
+ Item : Complex;
Aft : Field := Default_Aft;
Exp : Field := Default_Exp)
is
begin
- Aux.Puts (To, LLF (Re (Item)), LLF (Im (Item)), Aft, Exp);
+ if OK_Float then
+ Aux_Float.Puts (To, Float (Re (Item)), Float (Im (Item)), Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Puts
+ (To, Long_Float (Re (Item)), Long_Float (Im (Item)), Aft, Exp);
+ else
+ Aux_Long_Long_Float.Puts
+ (To, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
+ Aft, Exp);
+ end if;
end Put;
end Ada.Text_IO.Complex_IO;
diff --git a/gcc/ada/libgnat/a-tideau.adb b/gcc/ada/libgnat/a-tideau.adb
index 5878234..ac751c1 100644
--- a/gcc/ada/libgnat/a-tideau.adb
+++ b/gcc/ada/libgnat/a-tideau.adb
@@ -30,7 +30,6 @@
------------------------------------------------------------------------------
with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
-with Ada.Text_IO.Float_Aux; use Ada.Text_IO.Float_Aux;
package body Ada.Text_IO.Decimal_Aux is
diff --git a/gcc/ada/libgnat/a-tifiau.adb b/gcc/ada/libgnat/a-tifiau.adb
index 9259552..c6f4430 100644
--- a/gcc/ada/libgnat/a-tifiau.adb
+++ b/gcc/ada/libgnat/a-tifiau.adb
@@ -30,7 +30,6 @@
------------------------------------------------------------------------------
with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
-with Ada.Text_IO.Float_Aux; use Ada.Text_IO.Float_Aux;
package body Ada.Text_IO.Fixed_Aux is
diff --git a/gcc/ada/libgnat/a-tifiio.adb b/gcc/ada/libgnat/a-tifiio.adb
index 93862be..412740e 100644
--- a/gcc/ada/libgnat/a-tifiio.adb
+++ b/gcc/ada/libgnat/a-tifiio.adb
@@ -29,8 +29,9 @@
-- --
------------------------------------------------------------------------------
--- Fixed point I/O
--- ---------------
+-- -------------------
+-- - Fixed point I/O -
+-- -------------------
-- The following text documents implementation details of the fixed point
-- input/output routines in the GNAT runtime. The first part describes the
@@ -40,7 +41,7 @@
-- Subsequently these are reduced to implementation constraints and the impact
-- of these constraints on a few possible approaches to input/output is given.
-- Based on this analysis, a specific implementation is selected for use in
--- the GNAT runtime. Finally, the chosen algorithm is analyzed numerically in
+-- the GNAT runtime. Finally the chosen algorithms are analyzed numerically in
-- order to provide user-level documentation on limits for range and precision
-- of fixed point types as well as accuracy of input/output conversions.
@@ -68,7 +69,7 @@
-- Operations
-- ----------
--- 'Image and 'Wide_Image (see RM 3.5(34))
+-- [Wide_[Wide_]]Image attribute (see RM 3.5(27.1/2))
-- These attributes return a decimal real literal best approximating
-- the value (rounded away from zero if halfway between) with a
@@ -88,7 +89,7 @@
-- attributes, although it would be nice to be able to output more
-- than S'Aft digits after the decimal point for values of subtype S.
--- 'Value and 'Wide_Value attribute (RM 3.5(40-55))
+-- [Wide_[Wide_]]Value attribute (RM 3.5(39.1/2))
-- Since the input can be given in any base in the range 2..16,
-- accurate conversion to a fixed point number may require
@@ -121,7 +122,7 @@
-- be less than 2.0**(-53).
-- In GNAT, Fine_Delta is 2.0**(-63), and Duration for example is a 64-bit
--- type. This means that a floating-point type with 63 bits of mantissa needs
+-- type. This means that a floating-point type with 64 bits of mantissa needs
-- to be used, which is only generally available on the x86 architecture. It
-- would still be possible to use multi-precision floating point to perform
-- calculations using longer mantissas, but this is a much harder approach.
@@ -137,9 +138,21 @@
-- Fixed-precision integer arithmetic has the advantage of simplicity and
-- speed. For the most common fixed point types this would be a perfect
--- solution. The downside however may be a too limited set of acceptable
+-- solution. The downside however may be a restricted set of acceptable
-- fixed point types.
+-- Implementation Choices
+-- ----------------------
+
+-- The current implementation in the GNAT runtime uses fixed-precision integer
+-- arithmetic for fixed point types whose Small is the ratio of two integers
+-- whose magnitude is bounded relatively to the size of the mantissa, with a
+-- two-tiered approach for 32-bit and 64-bit fixed point types. For the other
+-- fixed point types, the implementation uses floating-point arithmetic.
+
+-- The exact requirements of the algorithms are analyzed and documented along
+-- with the implementation in their respective units.
+
with Interfaces;
with Ada.Text_IO.Fixed_Aux;
with Ada.Text_IO.Float_Aux;
@@ -147,8 +160,9 @@ with System.Img_Fixed_32; use System.Img_Fixed_32;
with System.Img_Fixed_64; use System.Img_Fixed_64;
with System.Val_Fixed_32; use System.Val_Fixed_32;
with System.Val_Fixed_64; use System.Val_Fixed_64;
+with System.Val_LLF; use System.Val_LLF;
-package body Ada.Text_IO.Fixed_IO is
+package body Ada.Text_IO.Fixed_IO with SPARK_Mode => Off is
-- Note: we still use the floating-point I/O routines for types whose small
-- is not the ratio of two sufficiently small integers. This will result in
@@ -164,6 +178,9 @@ package body Ada.Text_IO.Fixed_IO is
package Aux64 is new
Ada.Text_IO.Fixed_Aux (Int64, Scan_Fixed64, Set_Image_Fixed64);
+ package Aux_Long_Long_Float is new
+ Ada.Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
-- Throughout this generic body, we distinguish between the case where type
-- Int32 is OK and where type Int64 is OK. These boolean constants are used
-- to test for this, such that only code for the relevant case is included
@@ -171,7 +188,7 @@ package body Ada.Text_IO.Fixed_IO is
-- static (although it is not a static expressions in the RM sense).
OK_Get_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -182,7 +199,7 @@ package body Ada.Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -196,7 +213,7 @@ package body Ada.Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Image_F
OK_Get_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -207,7 +224,7 @@ package body Ada.Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -266,7 +283,7 @@ package body Ada.Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Get (File, Long_Long_Float (Item), Width);
+ Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
end if;
exception
@@ -278,7 +295,7 @@ package body Ada.Text_IO.Fixed_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -300,7 +317,7 @@ package body Ada.Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Gets (From, Long_Long_Float (Item), Last);
+ Aux_Long_Long_Float.Gets (From, Long_Long_Float (Item), Last);
end if;
exception
@@ -328,7 +345,8 @@ package body Ada.Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Item), Fore, Aft, Exp);
end if;
end Put;
@@ -358,7 +376,7 @@ package body Ada.Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Puts (To, Long_Long_Float (Item), Aft, Exp);
+ Aux_Long_Long_Float.Puts (To, Long_Long_Float (Item), Aft, Exp);
end if;
end Put;
diff --git a/gcc/ada/libgnat/a-tifiio.ads b/gcc/ada/libgnat/a-tifiio.ads
index 1acf67a..8a3886d 100644
--- a/gcc/ada/libgnat/a-tifiio.ads
+++ b/gcc/ada/libgnat/a-tifiio.ads
@@ -23,7 +23,7 @@
private generic
type Num is delta <>;
-package Ada.Text_IO.Fixed_IO is
+package Ada.Text_IO.Fixed_IO with SPARK_Mode => On is
Default_Fore : Field := Num'Fore;
Default_Aft : Field := Num'Aft;
diff --git a/gcc/ada/libgnat/a-tifiio__128.adb b/gcc/ada/libgnat/a-tifiio__128.adb
index f2dffcf..f50e4c9 100644
--- a/gcc/ada/libgnat/a-tifiio__128.adb
+++ b/gcc/ada/libgnat/a-tifiio__128.adb
@@ -29,8 +29,9 @@
-- --
------------------------------------------------------------------------------
--- Fixed point I/O
--- ---------------
+-- -------------------
+-- - Fixed point I/O -
+-- -------------------
-- The following text documents implementation details of the fixed point
-- input/output routines in the GNAT runtime. The first part describes the
@@ -40,7 +41,7 @@
-- Subsequently these are reduced to implementation constraints and the impact
-- of these constraints on a few possible approaches to input/output is given.
-- Based on this analysis, a specific implementation is selected for use in
--- the GNAT runtime. Finally, the chosen algorithm is analyzed numerically in
+-- the GNAT runtime. Finally the chosen algorithms are analyzed numerically in
-- order to provide user-level documentation on limits for range and precision
-- of fixed point types as well as accuracy of input/output conversions.
@@ -68,7 +69,7 @@
-- Operations
-- ----------
--- 'Image and 'Wide_Image (see RM 3.5(34))
+-- [Wide_[Wide_]]Image attribute (see RM 3.5(27.1/2))
-- These attributes return a decimal real literal best approximating
-- the value (rounded away from zero if halfway between) with a
@@ -88,7 +89,7 @@
-- attributes, although it would be nice to be able to output more
-- than S'Aft digits after the decimal point for values of subtype S.
--- 'Value and 'Wide_Value attribute (RM 3.5(40-55))
+-- [Wide_[Wide_]]Value attribute (RM 3.5(39.1/2))
-- Since the input can be given in any base in the range 2..16,
-- accurate conversion to a fixed point number may require
@@ -120,9 +121,9 @@
-- available has 53 bits of mantissa. This means that Fine_Delta cannot
-- be less than 2.0**(-53).
--- In GNAT, Fine_Delta is 2.0**(-63), and Duration for example is a 64-bit
--- type. This means that a floating-point type with 63 bits of mantissa needs
--- to be used, which is only generally available on the x86 architecture. It
+-- In GNAT, Fine_Delta is 2.0**(-127), and Duration for example is a 64-bit
+-- type. This means that a floating-point type with 128 bits of mantissa needs
+-- to be used, which currently does not exist in any common architecture. It
-- would still be possible to use multi-precision floating point to perform
-- calculations using longer mantissas, but this is a much harder approach.
@@ -137,9 +138,21 @@
-- Fixed-precision integer arithmetic has the advantage of simplicity and
-- speed. For the most common fixed point types this would be a perfect
--- solution. The downside however may be a too limited set of acceptable
+-- solution. The downside however may be a restricted set of acceptable
-- fixed point types.
+-- Implementation Choices
+-- ----------------------
+
+-- The current implementation in the GNAT runtime uses fixed-precision integer
+-- arithmetic for fixed point types whose Small is the ratio of two integers
+-- whose magnitude is bounded relatively to the size of the mantissa, with a
+-- three-tiered approach for 32-bit, 64-bit and 128-bit fixed point types. For
+-- other fixed point types, the implementation uses floating-point arithmetic.
+
+-- The exact requirements of the algorithms are analyzed and documented along
+-- with the implementation in their respective units.
+
with Interfaces;
with Ada.Text_IO.Fixed_Aux;
with Ada.Text_IO.Float_Aux;
@@ -149,8 +162,9 @@ with System.Img_Fixed_128; use System.Img_Fixed_128;
with System.Val_Fixed_32; use System.Val_Fixed_32;
with System.Val_Fixed_64; use System.Val_Fixed_64;
with System.Val_Fixed_128; use System.Val_Fixed_128;
+with System.Val_LLF; use System.Val_LLF;
-package body Ada.Text_IO.Fixed_IO is
+package body Ada.Text_IO.Fixed_IO with SPARK_Mode => Off is
-- Note: we still use the floating-point I/O routines for types whose small
-- is not the ratio of two sufficiently small integers. This will result in
@@ -170,6 +184,9 @@ package body Ada.Text_IO.Fixed_IO is
package Aux128 is new
Ada.Text_IO.Fixed_Aux (Int128, Scan_Fixed128, Set_Image_Fixed128);
+ package Aux_Long_Long_Float is new
+ Ada.Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
-- Throughout this generic body, we distinguish between the case where type
-- Int32 is OK, where type Int64 is OK and where type Int128 is OK. These
-- boolean constants are used to test for this, such that only code for the
@@ -178,7 +195,7 @@ package body Ada.Text_IO.Fixed_IO is
-- in the RM sense).
OK_Get_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -189,7 +206,7 @@ package body Ada.Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -203,7 +220,7 @@ package body Ada.Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Image_F
OK_Get_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -214,7 +231,7 @@ package body Ada.Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -228,7 +245,7 @@ package body Ada.Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Image_F
OK_Get_128 : constant Boolean :=
- Num'Object_Size <= 128
+ Num'Base'Object_Size <= 128
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
or else
@@ -239,7 +256,7 @@ package body Ada.Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_128 : constant Boolean :=
- Num'Object_Size <= 128
+ Num'Base'Object_Size <= 128
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
or else
@@ -306,7 +323,7 @@ package body Ada.Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Get (File, Long_Long_Float (Item), Width);
+ Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
end if;
exception
@@ -318,7 +335,7 @@ package body Ada.Text_IO.Fixed_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -345,7 +362,7 @@ package body Ada.Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Gets (From, Long_Long_Float (Item), Last);
+ Aux_Long_Long_Float.Gets (From, Long_Long_Float (Item), Last);
end if;
exception
@@ -377,7 +394,8 @@ package body Ada.Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Item), Fore, Aft, Exp);
end if;
end Put;
@@ -411,7 +429,7 @@ package body Ada.Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Puts (To, Long_Long_Float (Item), Aft, Exp);
+ Aux_Long_Long_Float.Puts (To, Long_Long_Float (Item), Aft, Exp);
end if;
end Put;
diff --git a/gcc/ada/libgnat/a-tiflau.adb b/gcc/ada/libgnat/a-tiflau.adb
index ddb52a5..4955a99 100644
--- a/gcc/ada/libgnat/a-tiflau.adb
+++ b/gcc/ada/libgnat/a-tiflau.adb
@@ -32,7 +32,6 @@
with Ada.Text_IO.Generic_Aux; use Ada.Text_IO.Generic_Aux;
with System.Img_Real; use System.Img_Real;
-with System.Val_Real; use System.Val_Real;
package body Ada.Text_IO.Float_Aux is
@@ -42,7 +41,7 @@ package body Ada.Text_IO.Float_Aux is
procedure Get
(File : File_Type;
- Item : out Long_Long_Float;
+ Item : out Num;
Width : Field)
is
Buf : String (1 .. Field'Last);
@@ -58,7 +57,7 @@ package body Ada.Text_IO.Float_Aux is
Ptr := 1;
end if;
- Item := Scan_Real (Buf, Ptr'Access, Stop);
+ Item := Scan (Buf, Ptr'Access, Stop);
Check_End_Of_Field (Buf, Stop, Ptr, Width);
end Get;
@@ -68,127 +67,27 @@ package body Ada.Text_IO.Float_Aux is
procedure Gets
(From : String;
- Item : out Long_Long_Float;
+ Item : out Num;
Last : out Positive)
is
Pos : aliased Integer;
begin
String_Skip (From, Pos);
- Item := Scan_Real (From, Pos'Access, From'Last);
+ Item := Scan (From, Pos'Access, From'Last);
Last := Pos - 1;
exception
when Constraint_Error => raise Data_Error;
end Gets;
- ---------------
- -- Load_Real --
- ---------------
-
- procedure Load_Real
- (File : File_Type;
- Buf : out String;
- Ptr : in out Natural)
- is
- Loaded : Boolean;
-
- begin
- -- Skip initial blanks, and load possible sign
-
- Load_Skip (File);
- Load (File, Buf, Ptr, '+', '-');
-
- -- Case of .nnnn
-
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Digits (File, Buf, Ptr, Loaded);
-
- -- Hopeless junk if no digits loaded
-
- if not Loaded then
- return;
- end if;
-
- -- Otherwise must have digits to start
-
- else
- Load_Digits (File, Buf, Ptr, Loaded);
-
- -- Hopeless junk if no digits loaded
-
- if not Loaded then
- return;
- end if;
-
- -- Based cases. We recognize either the standard '#' or the
- -- allowed alternative replacement ':' (see RM J.2(3)).
-
- Load (File, Buf, Ptr, '#', ':', Loaded);
-
- if Loaded then
-
- -- Case of nnn#.xxx#
-
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Extended_Digits (File, Buf, Ptr);
- Load (File, Buf, Ptr, '#', ':');
-
- -- Case of nnn#xxx.[xxx]# or nnn#xxx#
-
- else
- Load_Extended_Digits (File, Buf, Ptr);
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Extended_Digits (File, Buf, Ptr);
- end if;
-
- -- As usual, it seems strange to allow mixed base characters,
- -- but that is what ACVC tests expect, see CE3804M, case (3).
-
- Load (File, Buf, Ptr, '#', ':');
- end if;
-
- -- Case of nnn.[nnn] or nnn
-
- else
- -- Prevent the potential processing of '.' in cases where the
- -- initial digits have a trailing underscore.
-
- if Buf (Ptr) = '_' then
- return;
- end if;
-
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Digits (File, Buf, Ptr);
- end if;
- end if;
- end if;
-
- -- Deal with exponent
-
- Load (File, Buf, Ptr, 'E', 'e', Loaded);
-
- if Loaded then
- Load (File, Buf, Ptr, '+', '-');
- Load_Digits (File, Buf, Ptr);
- end if;
- end Load_Real;
-
---------
-- Put --
---------
procedure Put
(File : File_Type;
- Item : Long_Long_Float;
+ Item : Num;
Fore : Field;
Aft : Field;
Exp : Field)
@@ -197,7 +96,7 @@ package body Ada.Text_IO.Float_Aux is
Ptr : Natural := 0;
begin
- Set_Image_Real (Item, Buf, Ptr, Fore, Aft, Exp);
+ Set_Image_Real (Long_Long_Float (Item), Buf, Ptr, Fore, Aft, Exp);
Put_Item (File, Buf (1 .. Ptr));
end Put;
@@ -207,7 +106,7 @@ package body Ada.Text_IO.Float_Aux is
procedure Puts
(To : out String;
- Item : Long_Long_Float;
+ Item : Num;
Aft : Field;
Exp : Field)
is
@@ -215,7 +114,8 @@ package body Ada.Text_IO.Float_Aux is
Ptr : Natural := 0;
begin
- Set_Image_Real (Item, Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
+ Set_Image_Real
+ (Long_Long_Float (Item), Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
if Ptr > To'Length then
raise Layout_Error;
diff --git a/gcc/ada/libgnat/a-tiflau.ads b/gcc/ada/libgnat/a-tiflau.ads
index 68ac9eb..2dfe76d 100644
--- a/gcc/ada/libgnat/a-tiflau.ads
+++ b/gcc/ada/libgnat/a-tiflau.ads
@@ -31,41 +31,42 @@
-- This package contains the routines for Ada.Text_IO.Float_IO that are
-- shared among separate instantiations of this package. The routines in
--- this package are identical semantically to those in Float_IO itself,
--- except that generic parameter Num has been replaced by Long_Long_Float,
--- and the default parameters have been removed because they are supplied
+-- this package are identical semantically to those in Float_IO, except
+-- that the default parameters have been removed because they are supplied
-- explicitly by the calls from within the generic template. This package
--- is also used by Ada.Text_IO.Fixed_IO, and Ada.Text_IO.Decimal_IO.
+-- is also used by Ada.Text_IO.Fixed_IO and Ada.Text_IO.Decimal_IO.
-private package Ada.Text_IO.Float_Aux is
+private generic
- procedure Load_Real
- (File : File_Type;
- Buf : out String;
- Ptr : in out Natural);
- -- This is an auxiliary routine that is used to load a possibly signed
- -- real literal value from the input file into Buf, starting at Ptr + 1.
+ type Num is digits <>;
+
+ with function Scan
+ (Str : String;
+ Ptr : not null access Integer;
+ Max : Integer) return Num;
+
+package Ada.Text_IO.Float_Aux is
procedure Get
(File : File_Type;
- Item : out Long_Long_Float;
+ Item : out Num;
Width : Field);
procedure Put
(File : File_Type;
- Item : Long_Long_Float;
+ Item : Num;
Fore : Field;
Aft : Field;
Exp : Field);
procedure Gets
(From : String;
- Item : out Long_Long_Float;
+ Item : out Num;
Last : out Positive);
procedure Puts
(To : out String;
- Item : Long_Long_Float;
+ Item : Num;
Aft : Field;
Exp : Field);
diff --git a/gcc/ada/libgnat/a-tiflio.adb b/gcc/ada/libgnat/a-tiflio.adb
index 0daa044..db1cea2 100644
--- a/gcc/ada/libgnat/a-tiflio.adb
+++ b/gcc/ada/libgnat/a-tiflio.adb
@@ -30,10 +30,29 @@
------------------------------------------------------------------------------
with Ada.Text_IO.Float_Aux;
+with System.Val_Flt; use System.Val_Flt;
+with System.Val_LFlt; use System.Val_LFlt;
+with System.Val_LLF; use System.Val_LLF;
-package body Ada.Text_IO.Float_IO is
+package body Ada.Text_IO.Float_IO with SPARK_Mode => Off is
- package Aux renames Ada.Text_IO.Float_Aux;
+ package Aux_Float is new
+ Ada.Text_IO.Float_Aux (Float, Scan_Float);
+
+ package Aux_Long_Float is new
+ Ada.Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
+
+ package Aux_Long_Long_Float is new
+ Ada.Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
+ -- Throughout this generic body, we distinguish between the case where type
+ -- Float is OK, where type Long_Float is OK and where type Long_Long_Float
+ -- is needed. These boolean constants are used to test for this, such that
+ -- only code for the relevant case is included in the instance.
+
+ OK_Float : constant Boolean := Num'Base'Digits <= Float'Digits;
+
+ OK_Long_Float : constant Boolean := Num'Base'Digits <= Long_Float'Digits;
---------
-- Get --
@@ -47,7 +66,13 @@ package body Ada.Text_IO.Float_IO is
pragma Unsuppress (Range_Check);
begin
- Aux.Get (File, Long_Long_Float (Item), Width);
+ if OK_Float then
+ Aux_Float.Get (File, Float (Item), Width);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Get (File, Long_Float (Item), Width);
+ else
+ Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
+ end if;
-- In the case where the type is unconstrained (e.g. Standard'Float),
-- the above conversion may result in an infinite value, which is
@@ -66,22 +91,8 @@ package body Ada.Text_IO.Float_IO is
(Item : out Num;
Width : Field := 0)
is
- pragma Unsuppress (Range_Check);
-
begin
- Aux.Get (Current_In, Long_Long_Float (Item), Width);
-
- -- In the case where the type is unconstrained (e.g. Standard'Float),
- -- the above conversion may result in an infinite value, which is
- -- normally fine for a conversion, but in this case, we want to treat
- -- that as a data error.
-
- if not Item'Valid then
- raise Data_Error;
- end if;
-
- exception
- when Constraint_Error => raise Data_Error;
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -92,7 +103,13 @@ package body Ada.Text_IO.Float_IO is
pragma Unsuppress (Range_Check);
begin
- Aux.Gets (From, Long_Long_Float (Item), Last);
+ if OK_Float then
+ Aux_Float.Gets (From, Float (Item), Last);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Gets (From, Long_Float (Item), Last);
+ else
+ Aux_Long_Long_Float.Gets (From, Long_Long_Float (Item), Last);
+ end if;
-- In the case where the type is unconstrained (e.g. Standard'Float),
-- the above conversion may result in an infinite value, which is
@@ -119,7 +136,14 @@ package body Ada.Text_IO.Float_IO is
Exp : Field := Default_Exp)
is
begin
- Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ if OK_Float then
+ Aux_Float.Put (File, Float (Item), Fore, Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Put (File, Long_Float (Item), Fore, Aft, Exp);
+ else
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ end if;
end Put;
procedure Put
@@ -129,7 +153,7 @@ package body Ada.Text_IO.Float_IO is
Exp : Field := Default_Exp)
is
begin
- Aux.Put (Current_Out, Long_Long_Float (Item), Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
@@ -139,7 +163,13 @@ package body Ada.Text_IO.Float_IO is
Exp : Field := Default_Exp)
is
begin
- Aux.Puts (To, Long_Long_Float (Item), Aft, Exp);
+ if OK_Float then
+ Aux_Float.Puts (To, Float (Item), Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Puts (To, Long_Float (Item), Aft, Exp);
+ else
+ Aux_Long_Long_Float.Puts (To, Long_Long_Float (Item), Aft, Exp);
+ end if;
end Put;
end Ada.Text_IO.Float_IO;
diff --git a/gcc/ada/libgnat/a-tiflio.ads b/gcc/ada/libgnat/a-tiflio.ads
index bd4c64f64..d61b9e7 100644
--- a/gcc/ada/libgnat/a-tiflio.ads
+++ b/gcc/ada/libgnat/a-tiflio.ads
@@ -43,7 +43,7 @@
private generic
type Num is digits <>;
-package Ada.Text_IO.Float_IO is
+package Ada.Text_IO.Float_IO with SPARK_Mode => On is
Default_Fore : Field := 2;
Default_Aft : Field := Num'Digits - 1;
diff --git a/gcc/ada/libgnat/a-tigeau.adb b/gcc/ada/libgnat/a-tigeau.adb
index f1ba60a..5e13dae 100644
--- a/gcc/ada/libgnat/a-tigeau.adb
+++ b/gcc/ada/libgnat/a-tigeau.adb
@@ -377,6 +377,106 @@ package body Ada.Text_IO.Generic_Aux is
end Load_Integer;
---------------
+ -- Load_Real --
+ ---------------
+
+ procedure Load_Real
+ (File : File_Type;
+ Buf : out String;
+ Ptr : in out Natural)
+ is
+ Loaded : Boolean;
+
+ begin
+ -- Skip initial blanks, and load possible sign
+
+ Load_Skip (File);
+ Load (File, Buf, Ptr, '+', '-');
+
+ -- Case of .nnnn
+
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Digits (File, Buf, Ptr, Loaded);
+
+ -- Hopeless junk if no digits loaded
+
+ if not Loaded then
+ return;
+ end if;
+
+ -- Otherwise must have digits to start
+
+ else
+ Load_Digits (File, Buf, Ptr, Loaded);
+
+ -- Hopeless junk if no digits loaded
+
+ if not Loaded then
+ return;
+ end if;
+
+ -- Based cases. We recognize either the standard '#' or the
+ -- allowed alternative replacement ':' (see RM J.2(3)).
+
+ Load (File, Buf, Ptr, '#', ':', Loaded);
+
+ if Loaded then
+
+ -- Case of nnn#.xxx#
+
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Extended_Digits (File, Buf, Ptr);
+ Load (File, Buf, Ptr, '#', ':');
+
+ -- Case of nnn#xxx.[xxx]# or nnn#xxx#
+
+ else
+ Load_Extended_Digits (File, Buf, Ptr);
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Extended_Digits (File, Buf, Ptr);
+ end if;
+
+ -- As usual, it seems strange to allow mixed base characters,
+ -- but that is what ACVC tests expect, see CE3804M, case (3).
+
+ Load (File, Buf, Ptr, '#', ':');
+ end if;
+
+ -- Case of nnn.[nnn] or nnn
+
+ else
+ -- Prevent the potential processing of '.' in cases where the
+ -- initial digits have a trailing underscore.
+
+ if Buf (Ptr) = '_' then
+ return;
+ end if;
+
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Digits (File, Buf, Ptr);
+ end if;
+ end if;
+ end if;
+
+ -- Deal with exponent
+
+ Load (File, Buf, Ptr, 'E', 'e', Loaded);
+
+ if Loaded then
+ Load (File, Buf, Ptr, '+', '-');
+ Load_Digits (File, Buf, Ptr);
+ end if;
+ end Load_Real;
+
+ ---------------
-- Load_Skip --
---------------
diff --git a/gcc/ada/libgnat/a-tigeau.ads b/gcc/ada/libgnat/a-tigeau.ads
index 09334b3..d6acd8d 100644
--- a/gcc/ada/libgnat/a-tigeau.ads
+++ b/gcc/ada/libgnat/a-tigeau.ads
@@ -156,6 +156,12 @@ private package Ada.Text_IO.Generic_Aux is
Ptr : in out Natural);
-- Loads a possibly signed integer literal value
+ procedure Load_Real
+ (File : File_Type;
+ Buf : out String;
+ Ptr : in out Natural);
+ -- Loads a possibly signed real literal value
+
function Nextc (File : File_Type) return Integer;
-- Like Getc, but includes a call to Ungetc, so that the file
-- pointer is not moved by the call.
diff --git a/gcc/ada/libgnat/a-wtcoau.adb b/gcc/ada/libgnat/a-wtcoau.adb
index a60336b..05a6d9d 100644
--- a/gcc/ada/libgnat/a-wtcoau.adb
+++ b/gcc/ada/libgnat/a-wtcoau.adb
@@ -30,22 +30,19 @@
------------------------------------------------------------------------------
with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
-with Ada.Wide_Text_IO.Float_Aux;
with System.Img_Real; use System.Img_Real;
package body Ada.Wide_Text_IO.Complex_Aux is
- package Aux renames Ada.Wide_Text_IO.Float_Aux;
-
---------
-- Get --
---------
procedure Get
(File : File_Type;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
+ ItemR : out Num;
+ ItemI : out Num;
Width : Field)
is
Buf : String (1 .. Field'Last);
@@ -95,8 +92,8 @@ package body Ada.Wide_Text_IO.Complex_Aux is
procedure Gets
(From : String;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
+ ItemR : out Num;
+ ItemI : out Num;
Last : out Positive)
is
Paren : Boolean;
@@ -139,8 +136,8 @@ package body Ada.Wide_Text_IO.Complex_Aux is
procedure Put
(File : File_Type;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Fore : Field;
Aft : Field;
Exp : Field)
@@ -159,8 +156,8 @@ package body Ada.Wide_Text_IO.Complex_Aux is
procedure Puts
(To : out String;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Aft : Field;
Exp : Field)
is
@@ -174,9 +171,9 @@ package body Ada.Wide_Text_IO.Complex_Aux is
-- Both parts are initially converted with a Fore of 0
Rptr := 0;
- Set_Image_Real (ItemR, R_String, Rptr, 0, Aft, Exp);
+ Set_Image_Real (Long_Long_Float (ItemR), R_String, Rptr, 0, Aft, Exp);
Iptr := 0;
- Set_Image_Real (ItemI, I_String, Iptr, 0, Aft, Exp);
+ Set_Image_Real (Long_Long_Float (ItemI), I_String, Iptr, 0, Aft, Exp);
-- Check room for both parts plus parens plus comma (RM G.1.3(34))
diff --git a/gcc/ada/libgnat/a-wtcoau.ads b/gcc/ada/libgnat/a-wtcoau.ads
index 781dd8d..affb969 100644
--- a/gcc/ada/libgnat/a-wtcoau.ads
+++ b/gcc/ada/libgnat/a-wtcoau.ads
@@ -29,40 +29,47 @@
-- --
------------------------------------------------------------------------------
--- This package contains the routines for Ada.Wide_Text_IO.Complex_IO that
--- are shared among separate instantiations of this package. The routines
--- in this package are identical semantically to those in Complex_IO itself,
--- except that the generic parameter Complex has been replaced by separate
--- real and imaginary values of type Long_Long_Float, and default parameters
--- have been removed because they are supplied explicitly by the calls from
--- within the generic template.
+-- This package contains the routines for Ada.Wide_Text_IO.Complex_IO that are
+-- shared among separate instantiations of this package. The routines in this
+-- package are identical semantically to those in Complex_IO, except that the
+-- generic parameter Complex has been replaced by separate real and imaginary
+-- parameters, and default parameters have been removed because they are
+-- supplied explicitly by the calls from within the generic template.
+
+with Ada.Wide_Text_IO.Float_Aux;
+
+private generic
+
+ type Num is digits <>;
+
+ with package Aux is new Ada.Wide_Text_IO.Float_Aux (Num, <>);
package Ada.Wide_Text_IO.Complex_Aux is
procedure Get
(File : File_Type;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
+ ItemR : out Num;
+ ItemI : out Num;
Width : Field);
- procedure Gets
- (From : String;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
- Last : out Positive);
-
procedure Put
(File : File_Type;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Fore : Field;
Aft : Field;
Exp : Field);
+ procedure Gets
+ (From : String;
+ ItemR : out Num;
+ ItemI : out Num;
+ Last : out Positive);
+
procedure Puts
(To : out String;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Aft : Field;
Exp : Field);
diff --git a/gcc/ada/libgnat/a-wtcoio.adb b/gcc/ada/libgnat/a-wtcoio.adb
index c1c3b94..8e9ff7a 100644
--- a/gcc/ada/libgnat/a-wtcoio.adb
+++ b/gcc/ada/libgnat/a-wtcoio.adb
@@ -30,24 +30,43 @@
------------------------------------------------------------------------------
with Ada.Wide_Text_IO.Complex_Aux;
+with Ada.Wide_Text_IO.Float_Aux;
+with System.Val_Flt; use System.Val_Flt;
+with System.Val_LFlt; use System.Val_LFlt;
+with System.Val_LLF; use System.Val_LLF;
+with System.WCh_Con; use System.WCh_Con;
+with System.WCh_WtS; use System.WCh_WtS;
-with System.WCh_Con; use System.WCh_Con;
-with System.WCh_WtS; use System.WCh_WtS;
+package body Ada.Wide_Text_IO.Complex_IO is
-with Ada.Unchecked_Conversion;
+ use Complex_Types;
-package body Ada.Wide_Text_IO.Complex_IO is
+ package Scalar_Float is new
+ Ada.Wide_Text_IO.Float_Aux (Float, Scan_Float);
+
+ package Scalar_Long_Float is new
+ Ada.Wide_Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
+
+ package Scalar_Long_Long_Float is new
+ Ada.Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
+ package Aux_Float is new
+ Ada.Wide_Text_IO.Complex_Aux (Float, Scalar_Float);
- package Aux renames Ada.Wide_Text_IO.Complex_Aux;
+ package Aux_Long_Float is new
+ Ada.Wide_Text_IO.Complex_Aux (Long_Float, Scalar_Long_Float);
- subtype LLF is Long_Long_Float;
- -- Type used for calls to routines in Aux
+ package Aux_Long_Long_Float is new
+ Ada.Wide_Text_IO.Complex_Aux (Long_Long_Float, Scalar_Long_Long_Float);
- function TFT is new
- Ada.Unchecked_Conversion (File_Type, Ada.Wide_Text_IO.File_Type);
- -- This unchecked conversion is to get around a visibility bug in
- -- GNAT version 2.04w. It should be possible to simply use the
- -- subtype declared above and do normal checked conversions.
+ -- Throughout this generic body, we distinguish between the case where type
+ -- Float is OK, where type Long_Float is OK and where type Long_Long_Float
+ -- is needed. These boolean constants are used to test for this, such that
+ -- only code for the relevant case is included in the instance.
+
+ OK_Float : constant Boolean := Real'Base'Digits <= Float'Digits;
+
+ OK_Long_Float : constant Boolean := Real'Base'Digits <= Long_Float'Digits;
---------
-- Get --
@@ -62,7 +81,17 @@ package body Ada.Wide_Text_IO.Complex_IO is
Imag_Item : Real'Base;
begin
- Aux.Get (TFT (File), LLF (Real_Item), LLF (Imag_Item), Width);
+ if OK_Float then
+ Aux_Float.Get (File, Float (Real_Item), Float (Imag_Item), Width);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Get
+ (File, Long_Float (Real_Item), Long_Float (Imag_Item), Width);
+ else
+ Aux_Long_Long_Float.Get
+ (File, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
+ Width);
+ end if;
+
Item := (Real_Item, Imag_Item);
exception
@@ -78,7 +107,7 @@ package body Ada.Wide_Text_IO.Complex_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
---------
@@ -100,7 +129,17 @@ package body Ada.Wide_Text_IO.Complex_IO is
-- Aux.Gets will raise Data_Error in any case.
begin
- Aux.Gets (S, LLF (Real_Item), LLF (Imag_Item), Last);
+ if OK_Float then
+ Aux_Float.Gets (S, Float (Real_Item), Float (Imag_Item), Last);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Gets
+ (S, Long_Float (Real_Item), Long_Float (Imag_Item), Last);
+ else
+ Aux_Long_Long_Float.Gets
+ (S, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
+ Last);
+ end if;
+
Item := (Real_Item, Imag_Item);
exception
@@ -119,7 +158,18 @@ package body Ada.Wide_Text_IO.Complex_IO is
Exp : Field := Default_Exp)
is
begin
- Aux.Put (TFT (File), LLF (Re (Item)), LLF (Im (Item)), Fore, Aft, Exp);
+ if OK_Float then
+ Aux_Float.Put
+ (File, Float (Re (Item)), Float (Im (Item)), Fore, Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Put
+ (File, Long_Float (Re (Item)), Long_Float (Im (Item)), Fore, Aft,
+ Exp);
+ else
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
+ Fore, Aft, Exp);
+ end if;
end Put;
---------
@@ -133,7 +183,7 @@ package body Ada.Wide_Text_IO.Complex_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
---------
@@ -149,7 +199,16 @@ package body Ada.Wide_Text_IO.Complex_IO is
S : String (To'First .. To'Last);
begin
- Aux.Puts (S, LLF (Re (Item)), LLF (Im (Item)), Aft, Exp);
+ if OK_Float then
+ Aux_Float.Puts (S, Float (Re (Item)), Float (Im (Item)), Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Puts
+ (S, Long_Float (Re (Item)), Long_Float (Im (Item)), Aft, Exp);
+ else
+ Aux_Long_Long_Float.Puts
+ (S, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
+ Aft, Exp);
+ end if;
for J in S'Range loop
To (J) := Wide_Character'Val (Character'Pos (S (J)));
diff --git a/gcc/ada/libgnat/a-wtcoio.ads b/gcc/ada/libgnat/a-wtcoio.ads
index 31fab2b..f80a5b9 100644
--- a/gcc/ada/libgnat/a-wtcoio.ads
+++ b/gcc/ada/libgnat/a-wtcoio.ads
@@ -20,42 +20,40 @@ generic
package Ada.Wide_Text_IO.Complex_IO is
- use Complex_Types;
-
Default_Fore : Field := 2;
- Default_Aft : Field := Real'Digits - 1;
+ Default_Aft : Field := Complex_Types.Real'Digits - 1;
Default_Exp : Field := 3;
procedure Get
(File : File_Type;
- Item : out Complex;
+ Item : out Complex_Types.Complex;
Width : Field := 0);
procedure Get
- (Item : out Complex;
+ (Item : out Complex_Types.Complex;
Width : Field := 0);
procedure Put
(File : File_Type;
- Item : Complex;
+ Item : Complex_Types.Complex;
Fore : Field := Default_Fore;
Aft : Field := Default_Aft;
Exp : Field := Default_Exp);
procedure Put
- (Item : Complex;
+ (Item : Complex_Types.Complex;
Fore : Field := Default_Fore;
Aft : Field := Default_Aft;
Exp : Field := Default_Exp);
procedure Get
(From : Wide_String;
- Item : out Complex;
+ Item : out Complex_Types.Complex;
Last : out Positive);
procedure Put
(To : out Wide_String;
- Item : Complex;
+ Item : Complex_Types.Complex;
Aft : Field := Default_Aft;
Exp : Field := Default_Exp);
diff --git a/gcc/ada/libgnat/a-wtdeau.adb b/gcc/ada/libgnat/a-wtdeau.adb
index 268ba4d..57fcc92 100644
--- a/gcc/ada/libgnat/a-wtdeau.adb
+++ b/gcc/ada/libgnat/a-wtdeau.adb
@@ -30,7 +30,6 @@
------------------------------------------------------------------------------
with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
-with Ada.Wide_Text_IO.Float_Aux; use Ada.Wide_Text_IO.Float_Aux;
package body Ada.Wide_Text_IO.Decimal_Aux is
diff --git a/gcc/ada/libgnat/a-wtdeio.adb b/gcc/ada/libgnat/a-wtdeio.adb
index b432cac..c503a20 100644
--- a/gcc/ada/libgnat/a-wtdeio.adb
+++ b/gcc/ada/libgnat/a-wtdeio.adb
@@ -89,7 +89,7 @@ package body Ada.Wide_Text_IO.Decimal_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -144,7 +144,7 @@ package body Ada.Wide_Text_IO.Decimal_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-wtdeio__128.adb b/gcc/ada/libgnat/a-wtdeio__128.adb
index 6e23e08..796c724 100644
--- a/gcc/ada/libgnat/a-wtdeio__128.adb
+++ b/gcc/ada/libgnat/a-wtdeio__128.adb
@@ -102,7 +102,7 @@ package body Ada.Wide_Text_IO.Decimal_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -162,7 +162,7 @@ package body Ada.Wide_Text_IO.Decimal_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-wtenio.adb b/gcc/ada/libgnat/a-wtenio.adb
index ee500f9..f89359c 100644
--- a/gcc/ada/libgnat/a-wtenio.adb
+++ b/gcc/ada/libgnat/a-wtenio.adb
@@ -51,7 +51,7 @@ package body Ada.Wide_Text_IO.Enumeration_IO is
procedure Get (Item : out Enum) is
begin
- Get (Current_Input, Item);
+ Get (Current_In, Item);
end Get;
procedure Get
@@ -88,7 +88,7 @@ package body Ada.Wide_Text_IO.Enumeration_IO is
Set : Type_Set := Default_Setting)
is
begin
- Put (Current_Output, Item, Width, Set);
+ Put (Current_Out, Item, Width, Set);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-wtfiau.adb b/gcc/ada/libgnat/a-wtfiau.adb
index d4a1534..611b76d 100644
--- a/gcc/ada/libgnat/a-wtfiau.adb
+++ b/gcc/ada/libgnat/a-wtfiau.adb
@@ -30,7 +30,6 @@
------------------------------------------------------------------------------
with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
-with Ada.Wide_Text_IO.Float_Aux; use Ada.Wide_Text_IO.Float_Aux;
package body Ada.Wide_Text_IO.Fixed_Aux is
diff --git a/gcc/ada/libgnat/a-wtfiio.adb b/gcc/ada/libgnat/a-wtfiio.adb
index 142a445..e2537ae 100644
--- a/gcc/ada/libgnat/a-wtfiio.adb
+++ b/gcc/ada/libgnat/a-wtfiio.adb
@@ -36,6 +36,7 @@ with System.Img_Fixed_32; use System.Img_Fixed_32;
with System.Img_Fixed_64; use System.Img_Fixed_64;
with System.Val_Fixed_32; use System.Val_Fixed_32;
with System.Val_Fixed_64; use System.Val_Fixed_64;
+with System.Val_LLF; use System.Val_LLF;
with System.WCh_Con; use System.WCh_Con;
with System.WCh_WtS; use System.WCh_WtS;
@@ -55,6 +56,9 @@ package body Ada.Wide_Text_IO.Fixed_IO is
package Aux64 is new
Ada.Wide_Text_IO.Fixed_Aux (Int64, Scan_Fixed64, Set_Image_Fixed64);
+ package Aux_Long_Long_Float is new
+ Ada.Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
-- Throughout this generic body, we distinguish between the case where type
-- Int32 is OK and where type Int64 is OK. These boolean constants are used
-- to test for this, such that only code for the relevant case is included
@@ -62,7 +66,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-- static (although it is not a static expressions in the RM sense).
OK_Get_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -73,7 +77,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -87,7 +91,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Image_F
OK_Get_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -98,7 +102,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -157,7 +161,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Get (File, Long_Long_Float (Item), Width);
+ Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
end if;
exception
@@ -169,7 +173,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -197,7 +201,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Gets (S, Long_Long_Float (Item), Last);
+ Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
end if;
exception
@@ -225,7 +229,8 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Item), Fore, Aft, Exp);
end if;
end Put;
@@ -236,7 +241,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
@@ -257,7 +262,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
+ Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
end if;
for J in S'Range loop
diff --git a/gcc/ada/libgnat/a-wtfiio__128.adb b/gcc/ada/libgnat/a-wtfiio__128.adb
index b4f1b1d..a5801be 100644
--- a/gcc/ada/libgnat/a-wtfiio__128.adb
+++ b/gcc/ada/libgnat/a-wtfiio__128.adb
@@ -38,6 +38,7 @@ with System.Img_Fixed_128; use System.Img_Fixed_128;
with System.Val_Fixed_32; use System.Val_Fixed_32;
with System.Val_Fixed_64; use System.Val_Fixed_64;
with System.Val_Fixed_128; use System.Val_Fixed_128;
+with System.Val_LLF; use System.Val_LLF;
with System.WCh_Con; use System.WCh_Con;
with System.WCh_WtS; use System.WCh_WtS;
@@ -61,6 +62,9 @@ package body Ada.Wide_Text_IO.Fixed_IO is
package Aux128 is new
Ada.Wide_Text_IO.Fixed_Aux (Int128, Scan_Fixed128, Set_Image_Fixed128);
+ package Aux_Long_Long_Float is new
+ Ada.Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
-- Throughout this generic body, we distinguish between the case where type
-- Int32 is OK, where type Int64 is OK and where type Int128 is OK. These
-- boolean constants are used to test for this, such that only code for the
@@ -69,7 +73,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-- in the RM sense).
OK_Get_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -80,7 +84,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -94,7 +98,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Image_F
OK_Get_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -105,7 +109,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -119,7 +123,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Image_F
OK_Get_128 : constant Boolean :=
- Num'Object_Size <= 128
+ Num'Base'Object_Size <= 128
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
or else
@@ -130,7 +134,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_128 : constant Boolean :=
- Num'Object_Size <= 128
+ Num'Base'Object_Size <= 128
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
or else
@@ -197,7 +201,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Get (File, Long_Long_Float (Item), Width);
+ Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
end if;
exception
@@ -209,7 +213,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -242,7 +246,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Gets (S, Long_Long_Float (Item), Last);
+ Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
end if;
exception
@@ -274,7 +278,8 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Item), Fore, Aft, Exp);
end if;
end Put;
@@ -285,7 +290,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
@@ -310,7 +315,7 @@ package body Ada.Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
+ Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
end if;
for J in S'Range loop
diff --git a/gcc/ada/libgnat/a-wtflau.adb b/gcc/ada/libgnat/a-wtflau.adb
index fd9ff1a..7db1b78 100644
--- a/gcc/ada/libgnat/a-wtflau.adb
+++ b/gcc/ada/libgnat/a-wtflau.adb
@@ -31,8 +31,7 @@
with Ada.Wide_Text_IO.Generic_Aux; use Ada.Wide_Text_IO.Generic_Aux;
-with System.Img_Real; use System.Img_Real;
-with System.Val_Real; use System.Val_Real;
+with System.Img_Real; use System.Img_Real;
package body Ada.Wide_Text_IO.Float_Aux is
@@ -42,12 +41,12 @@ package body Ada.Wide_Text_IO.Float_Aux is
procedure Get
(File : File_Type;
- Item : out Long_Long_Float;
+ Item : out Num;
Width : Field)
is
Buf : String (1 .. Field'Last);
Stop : Integer := 0;
- Ptr : aliased Integer := 1;
+ Ptr : aliased Integer;
begin
if Width /= 0 then
@@ -55,10 +54,10 @@ package body Ada.Wide_Text_IO.Float_Aux is
String_Skip (Buf, Ptr);
else
Load_Real (File, Buf, Stop);
+ Ptr := 1;
end if;
- Item := Scan_Real (Buf, Ptr'Access, Stop);
-
+ Item := Scan (Buf, Ptr'Access, Stop);
Check_End_Of_Field (Buf, Stop, Ptr, Width);
end Get;
@@ -68,137 +67,36 @@ package body Ada.Wide_Text_IO.Float_Aux is
procedure Gets
(From : String;
- Item : out Long_Long_Float;
+ Item : out Num;
Last : out Positive)
is
Pos : aliased Integer;
begin
String_Skip (From, Pos);
- Item := Scan_Real (From, Pos'Access, From'Last);
+ Item := Scan (From, Pos'Access, From'Last);
Last := Pos - 1;
exception
- when Constraint_Error =>
- raise Data_Error;
+ when Constraint_Error => raise Data_Error;
end Gets;
- ---------------
- -- Load_Real --
- ---------------
-
- procedure Load_Real
- (File : File_Type;
- Buf : out String;
- Ptr : in out Natural)
- is
- Loaded : Boolean;
-
- begin
- -- Skip initial blanks and load possible sign
-
- Load_Skip (File);
- Load (File, Buf, Ptr, '+', '-');
-
- -- Case of .nnnn
-
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Digits (File, Buf, Ptr, Loaded);
-
- -- Hopeless junk if no digits loaded
-
- if not Loaded then
- return;
- end if;
-
- -- Otherwise must have digits to start
-
- else
- Load_Digits (File, Buf, Ptr, Loaded);
-
- -- Hopeless junk if no digits loaded
-
- if not Loaded then
- return;
- end if;
-
- -- Deal with based case. We recognize either the standard '#' or the
- -- allowed alternative replacement ':' (see RM J.2(3)).
-
- Load (File, Buf, Ptr, '#', ':', Loaded);
-
- if Loaded then
-
- -- Case of nnn#.xxx#
-
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Extended_Digits (File, Buf, Ptr);
- Load (File, Buf, Ptr, '#', ':');
-
- -- Case of nnn#xxx.[xxx]# or nnn#xxx#
-
- else
- Load_Extended_Digits (File, Buf, Ptr);
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Extended_Digits (File, Buf, Ptr);
- end if;
-
- -- As usual, it seems strange to allow mixed base characters,
- -- but that is what ACVC tests expect, see CE3804M, case (3).
-
- Load (File, Buf, Ptr, '#', ':');
- end if;
-
- -- Case of nnn.[nnn] or nnn
-
- else
- -- Prevent the potential processing of '.' in cases where the
- -- initial digits have a trailing underscore.
-
- if Buf (Ptr) = '_' then
- return;
- end if;
-
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Digits (File, Buf, Ptr);
- end if;
- end if;
- end if;
-
- -- Deal with exponent
-
- Load (File, Buf, Ptr, 'E', 'e', Loaded);
-
- if Loaded then
- Load (File, Buf, Ptr, '+', '-');
- Load_Digits (File, Buf, Ptr);
- end if;
- end Load_Real;
-
---------
-- Put --
---------
procedure Put
(File : File_Type;
- Item : Long_Long_Float;
+ Item : Num;
Fore : Field;
Aft : Field;
Exp : Field)
is
- Buf : String (1 .. Field'Last);
+ Buf : String (1 .. Max_Real_Image_Length);
Ptr : Natural := 0;
begin
- Set_Image_Real (Item, Buf, Ptr, Fore, Aft, Exp);
+ Set_Image_Real (Long_Long_Float (Item), Buf, Ptr, Fore, Aft, Exp);
Put_Item (File, Buf (1 .. Ptr));
end Put;
@@ -208,15 +106,16 @@ package body Ada.Wide_Text_IO.Float_Aux is
procedure Puts
(To : out String;
- Item : Long_Long_Float;
+ Item : Num;
Aft : Field;
Exp : Field)
is
- Buf : String (1 .. Field'Last);
+ Buf : String (1 .. Max_Real_Image_Length);
Ptr : Natural := 0;
begin
- Set_Image_Real (Item, Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
+ Set_Image_Real
+ (Long_Long_Float (Item), Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
if Ptr > To'Length then
raise Layout_Error;
diff --git a/gcc/ada/libgnat/a-wtflau.ads b/gcc/ada/libgnat/a-wtflau.ads
index 3598f77..82ace79 100644
--- a/gcc/ada/libgnat/a-wtflau.ads
+++ b/gcc/ada/libgnat/a-wtflau.ads
@@ -31,41 +31,42 @@
-- This package contains the routines for Ada.Wide_Text_IO.Float_IO that
-- are shared among separate instantiations of this package. The routines
--- in this package are identical semantically to those in Float_IO itself,
--- except that generic parameter Num has been replaced by Long_Long_Float,
--- and the default parameters have been removed because they are supplied
+-- in this package are identical semantically to those in Float_IO, except
+-- that the default parameters have been removed because they are supplied
-- explicitly by the calls from within the generic template. This package
--- is also used by Ada.Wide_Text_IO.Fixed_IO, Ada.Wide_Text_IO.Decimal_IO.
+-- is also used by Ada.Wide_Text_IO.Fixed_IO and Ada.Wide_Text_IO.Decimal_IO.
-private package Ada.Wide_Text_IO.Float_Aux is
+private generic
- procedure Load_Real
- (File : File_Type;
- Buf : out String;
- Ptr : in out Natural);
- -- This is an auxiliary routine that is used to load a possibly signed
- -- real literal value from the input file into Buf, starting at Ptr + 1.
+ type Num is digits <>;
+
+ with function Scan
+ (Str : String;
+ Ptr : not null access Integer;
+ Max : Integer) return Num;
+
+package Ada.Wide_Text_IO.Float_Aux is
procedure Get
(File : File_Type;
- Item : out Long_Long_Float;
+ Item : out Num;
Width : Field);
- procedure Gets
- (From : String;
- Item : out Long_Long_Float;
- Last : out Positive);
-
procedure Put
(File : File_Type;
- Item : Long_Long_Float;
+ Item : Num;
Fore : Field;
Aft : Field;
Exp : Field);
+ procedure Gets
+ (From : String;
+ Item : out Num;
+ Last : out Positive);
+
procedure Puts
(To : out String;
- Item : Long_Long_Float;
+ Item : Num;
Aft : Field;
Exp : Field);
diff --git a/gcc/ada/libgnat/a-wtflio.adb b/gcc/ada/libgnat/a-wtflio.adb
index a7df6d9..3691786 100644
--- a/gcc/ada/libgnat/a-wtflio.adb
+++ b/gcc/ada/libgnat/a-wtflio.adb
@@ -30,13 +30,31 @@
------------------------------------------------------------------------------
with Ada.Wide_Text_IO.Float_Aux;
-
-with System.WCh_Con; use System.WCh_Con;
-with System.WCh_WtS; use System.WCh_WtS;
+with System.Val_Flt; use System.Val_Flt;
+with System.Val_LFlt; use System.Val_LFlt;
+with System.Val_LLF; use System.Val_LLF;
+with System.WCh_Con; use System.WCh_Con;
+with System.WCh_WtS; use System.WCh_WtS;
package body Ada.Wide_Text_IO.Float_IO is
- package Aux renames Ada.Wide_Text_IO.Float_Aux;
+ package Aux_Float is new
+ Ada.Wide_Text_IO.Float_Aux (Float, Scan_Float);
+
+ package Aux_Long_Float is new
+ Ada.Wide_Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
+
+ package Aux_Long_Long_Float is new
+ Ada.Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
+ -- Throughout this generic body, we distinguish between the case where type
+ -- Float is OK, where type Long_Float is OK and where type Long_Long_Float
+ -- is needed. These boolean constants are used to test for this, such that
+ -- only code for the relevant case is included in the instance.
+
+ OK_Float : constant Boolean := Num'Base'Digits <= Float'Digits;
+
+ OK_Long_Float : constant Boolean := Num'Base'Digits <= Long_Float'Digits;
---------
-- Get --
@@ -47,8 +65,25 @@ package body Ada.Wide_Text_IO.Float_IO is
Item : out Num;
Width : Field := 0)
is
+ pragma Unsuppress (Range_Check);
+
begin
- Aux.Get (File, Long_Long_Float (Item), Width);
+ if OK_Float then
+ Aux_Float.Get (File, Float (Item), Width);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Get (File, Long_Float (Item), Width);
+ else
+ Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
+ end if;
+
+ -- In the case where the type is unconstrained (e.g. Standard'Float),
+ -- the above conversion may result in an infinite value, which is
+ -- normally fine for a conversion, but in this case, we want to treat
+ -- that as a data error.
+
+ if not Item'Valid then
+ raise Data_Error;
+ end if;
exception
when Constraint_Error => raise Data_Error;
@@ -59,7 +94,7 @@ package body Ada.Wide_Text_IO.Float_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -67,6 +102,8 @@ package body Ada.Wide_Text_IO.Float_IO is
Item : out Num;
Last : out Positive)
is
+ pragma Unsuppress (Range_Check);
+
S : constant String := Wide_String_To_String (From, WCEM_Upper);
-- String on which we do the actual conversion. Note that the method
-- used for wide character encoding is irrelevant, since if there is
@@ -74,7 +111,22 @@ package body Ada.Wide_Text_IO.Float_IO is
-- Aux.Gets will raise Data_Error in any case.
begin
- Aux.Gets (S, Long_Long_Float (Item), Last);
+ if OK_Float then
+ Aux_Float.Gets (S, Float (Item), Last);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Gets (S, Long_Float (Item), Last);
+ else
+ Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
+ end if;
+
+ -- In the case where the type is unconstrained (e.g. Standard'Float),
+ -- the above conversion may result in an infinite value, which is
+ -- normally fine for a conversion, but in this case, we want to treat
+ -- that as a data error.
+
+ if not Item'Valid then
+ raise Data_Error;
+ end if;
exception
when Constraint_Error => raise Data_Error;
@@ -92,7 +144,14 @@ package body Ada.Wide_Text_IO.Float_IO is
Exp : Field := Default_Exp)
is
begin
- Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ if OK_Float then
+ Aux_Float.Put (File, Float (Item), Fore, Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Put (File, Long_Float (Item), Fore, Aft, Exp);
+ else
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ end if;
end Put;
procedure Put
@@ -102,7 +161,7 @@ package body Ada.Wide_Text_IO.Float_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
@@ -114,7 +173,13 @@ package body Ada.Wide_Text_IO.Float_IO is
S : String (To'First .. To'Last);
begin
- Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
+ if OK_Float then
+ Aux_Float.Puts (S, Float (Item), Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Puts (S, Long_Float (Item), Aft, Exp);
+ else
+ Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
+ end if;
for J in S'Range loop
To (J) := Wide_Character'Val (Character'Pos (S (J)));
diff --git a/gcc/ada/libgnat/a-wtgeau.adb b/gcc/ada/libgnat/a-wtgeau.adb
index 9d24070..bc9b459 100644
--- a/gcc/ada/libgnat/a-wtgeau.adb
+++ b/gcc/ada/libgnat/a-wtgeau.adb
@@ -403,6 +403,106 @@ package body Ada.Wide_Text_IO.Generic_Aux is
end Load_Integer;
---------------
+ -- Load_Real --
+ ---------------
+
+ procedure Load_Real
+ (File : File_Type;
+ Buf : out String;
+ Ptr : in out Natural)
+ is
+ Loaded : Boolean;
+
+ begin
+ -- Skip initial blanks and load possible sign
+
+ Load_Skip (File);
+ Load (File, Buf, Ptr, '+', '-');
+
+ -- Case of .nnnn
+
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Digits (File, Buf, Ptr, Loaded);
+
+ -- Hopeless junk if no digits loaded
+
+ if not Loaded then
+ return;
+ end if;
+
+ -- Otherwise must have digits to start
+
+ else
+ Load_Digits (File, Buf, Ptr, Loaded);
+
+ -- Hopeless junk if no digits loaded
+
+ if not Loaded then
+ return;
+ end if;
+
+ -- Deal with based case. We recognize either the standard '#' or the
+ -- allowed alternative replacement ':' (see RM J.2(3)).
+
+ Load (File, Buf, Ptr, '#', ':', Loaded);
+
+ if Loaded then
+
+ -- Case of nnn#.xxx#
+
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Extended_Digits (File, Buf, Ptr);
+ Load (File, Buf, Ptr, '#', ':');
+
+ -- Case of nnn#xxx.[xxx]# or nnn#xxx#
+
+ else
+ Load_Extended_Digits (File, Buf, Ptr);
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Extended_Digits (File, Buf, Ptr);
+ end if;
+
+ -- As usual, it seems strange to allow mixed base characters,
+ -- but that is what ACVC tests expect, see CE3804M, case (3).
+
+ Load (File, Buf, Ptr, '#', ':');
+ end if;
+
+ -- Case of nnn.[nnn] or nnn
+
+ else
+ -- Prevent the potential processing of '.' in cases where the
+ -- initial digits have a trailing underscore.
+
+ if Buf (Ptr) = '_' then
+ return;
+ end if;
+
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Digits (File, Buf, Ptr);
+ end if;
+ end if;
+ end if;
+
+ -- Deal with exponent
+
+ Load (File, Buf, Ptr, 'E', 'e', Loaded);
+
+ if Loaded then
+ Load (File, Buf, Ptr, '+', '-');
+ Load_Digits (File, Buf, Ptr);
+ end if;
+ end Load_Real;
+
+ ---------------
-- Load_Skip --
---------------
diff --git a/gcc/ada/libgnat/a-wtgeau.ads b/gcc/ada/libgnat/a-wtgeau.ads
index 9577ac2..7c89971 100644
--- a/gcc/ada/libgnat/a-wtgeau.ads
+++ b/gcc/ada/libgnat/a-wtgeau.ads
@@ -155,6 +155,12 @@ package Ada.Wide_Text_IO.Generic_Aux is
Ptr : in out Natural);
-- Loads a possibly signed integer literal value
+ procedure Load_Real
+ (File : File_Type;
+ Buf : out String;
+ Ptr : in out Natural);
+ -- Loads a possibly signed real literal value
+
procedure Put_Item (File : File_Type; Str : String);
-- This routine is like Wide_Text_IO.Put, except that it checks for
-- overflow of bounded lines, as described in (RM A.10.6(8)). It is used
diff --git a/gcc/ada/libgnat/a-wtinio.adb b/gcc/ada/libgnat/a-wtinio.adb
index dff0b68..b322433 100644
--- a/gcc/ada/libgnat/a-wtinio.adb
+++ b/gcc/ada/libgnat/a-wtinio.adb
@@ -95,7 +95,7 @@ package body Ada.Wide_Text_IO.Integer_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -149,7 +149,7 @@ package body Ada.Wide_Text_IO.Integer_IO is
Base : Number_Base := Default_Base)
is
begin
- Put (Current_Output, Item, Width, Base);
+ Put (Current_Out, Item, Width, Base);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-wtinio__128.adb b/gcc/ada/libgnat/a-wtinio__128.adb
index 8936f49..0eea7b5 100644
--- a/gcc/ada/libgnat/a-wtinio__128.adb
+++ b/gcc/ada/libgnat/a-wtinio__128.adb
@@ -111,7 +111,7 @@ package body Ada.Wide_Text_IO.Integer_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -169,7 +169,7 @@ package body Ada.Wide_Text_IO.Integer_IO is
Base : Number_Base := Default_Base)
is
begin
- Put (Current_Output, Item, Width, Base);
+ Put (Current_Out, Item, Width, Base);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-wtmoio.adb b/gcc/ada/libgnat/a-wtmoio.adb
index 4fe5beb..efab035 100644
--- a/gcc/ada/libgnat/a-wtmoio.adb
+++ b/gcc/ada/libgnat/a-wtmoio.adb
@@ -94,7 +94,7 @@ package body Ada.Wide_Text_IO.Modular_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -147,7 +147,7 @@ package body Ada.Wide_Text_IO.Modular_IO is
Base : Number_Base := Default_Base)
is
begin
- Put (Current_Output, Item, Width, Base);
+ Put (Current_Out, Item, Width, Base);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-wtmoio__128.adb b/gcc/ada/libgnat/a-wtmoio__128.adb
index 0dbf06e..a32eaf2 100644
--- a/gcc/ada/libgnat/a-wtmoio__128.adb
+++ b/gcc/ada/libgnat/a-wtmoio__128.adb
@@ -110,7 +110,7 @@ package body Ada.Wide_Text_IO.Modular_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -167,7 +167,7 @@ package body Ada.Wide_Text_IO.Modular_IO is
Base : Number_Base := Default_Base)
is
begin
- Put (Current_Output, Item, Width, Base);
+ Put (Current_Out, Item, Width, Base);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-ztcoau.adb b/gcc/ada/libgnat/a-ztcoau.adb
index ffe0a90..bb33680 100644
--- a/gcc/ada/libgnat/a-ztcoau.adb
+++ b/gcc/ada/libgnat/a-ztcoau.adb
@@ -30,22 +30,19 @@
------------------------------------------------------------------------------
with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
-with Ada.Wide_Wide_Text_IO.Float_Aux;
with System.Img_Real; use System.Img_Real;
package body Ada.Wide_Wide_Text_IO.Complex_Aux is
- package Aux renames Ada.Wide_Wide_Text_IO.Float_Aux;
-
---------
-- Get --
---------
procedure Get
(File : File_Type;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
+ ItemR : out Num;
+ ItemI : out Num;
Width : Field)
is
Buf : String (1 .. Field'Last);
@@ -95,8 +92,8 @@ package body Ada.Wide_Wide_Text_IO.Complex_Aux is
procedure Gets
(From : String;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
+ ItemR : out Num;
+ ItemI : out Num;
Last : out Positive)
is
Paren : Boolean;
@@ -139,8 +136,8 @@ package body Ada.Wide_Wide_Text_IO.Complex_Aux is
procedure Put
(File : File_Type;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Fore : Field;
Aft : Field;
Exp : Field)
@@ -159,8 +156,8 @@ package body Ada.Wide_Wide_Text_IO.Complex_Aux is
procedure Puts
(To : out String;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Aft : Field;
Exp : Field)
is
@@ -174,9 +171,9 @@ package body Ada.Wide_Wide_Text_IO.Complex_Aux is
-- Both parts are initially converted with a Fore of 0
Rptr := 0;
- Set_Image_Real (ItemR, R_String, Rptr, 0, Aft, Exp);
+ Set_Image_Real (Long_Long_Float (ItemR), R_String, Rptr, 0, Aft, Exp);
Iptr := 0;
- Set_Image_Real (ItemI, I_String, Iptr, 0, Aft, Exp);
+ Set_Image_Real (Long_Long_Float (ItemI), I_String, Iptr, 0, Aft, Exp);
-- Check room for both parts plus parens plus comma (RM G.1.3(34))
diff --git a/gcc/ada/libgnat/a-ztcoau.ads b/gcc/ada/libgnat/a-ztcoau.ads
index b68c38b..43546d8 100644
--- a/gcc/ada/libgnat/a-ztcoau.ads
+++ b/gcc/ada/libgnat/a-ztcoau.ads
@@ -15,38 +15,45 @@
-- This package contains the routines for Ada.Wide_Wide_Text_IO.Complex_IO
-- that are shared among separate instantiations of this package. The routines
--- in this package are identical semantically to those in Complex_IO itself,
--- except that the generic parameter Complex has been replaced by separate
--- real and imaginary values of type Long_Long_Float, and default parameters
--- have been removed because they are supplied explicitly by the calls from
--- within the generic template.
+-- in this package are identical semantically to those in Complex_IO, except
+-- that the generic parameter Complex has been replaced by separate real and
+-- imaginary parameters, and default parameters have been removed because they
+-- are supplied explicitly by the calls from within the generic template.
+
+with Ada.Wide_Wide_Text_IO.Float_Aux;
+
+private generic
+
+ type Num is digits <>;
+
+ with package Aux is new Ada.Wide_Wide_Text_IO.Float_Aux (Num, <>);
package Ada.Wide_Wide_Text_IO.Complex_Aux is
procedure Get
(File : File_Type;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
+ ItemR : out Num;
+ ItemI : out Num;
Width : Field);
- procedure Gets
- (From : String;
- ItemR : out Long_Long_Float;
- ItemI : out Long_Long_Float;
- Last : out Positive);
-
procedure Put
(File : File_Type;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Fore : Field;
Aft : Field;
Exp : Field);
+ procedure Gets
+ (From : String;
+ ItemR : out Num;
+ ItemI : out Num;
+ Last : out Positive);
+
procedure Puts
(To : out String;
- ItemR : Long_Long_Float;
- ItemI : Long_Long_Float;
+ ItemR : Num;
+ ItemI : Num;
Aft : Field;
Exp : Field);
diff --git a/gcc/ada/libgnat/a-ztcoio.adb b/gcc/ada/libgnat/a-ztcoio.adb
index ead1234..5103191 100644
--- a/gcc/ada/libgnat/a-ztcoio.adb
+++ b/gcc/ada/libgnat/a-ztcoio.adb
@@ -30,24 +30,46 @@
------------------------------------------------------------------------------
with Ada.Wide_Wide_Text_IO.Complex_Aux;
-
-with System.WCh_Con; use System.WCh_Con;
-with System.WCh_WtS; use System.WCh_WtS;
+with Ada.Wide_Wide_Text_IO.Float_Aux;
+with System.Val_Flt; use System.Val_Flt;
+with System.Val_LFlt; use System.Val_LFlt;
+with System.Val_LLF; use System.Val_LLF;
+with System.WCh_Con; use System.WCh_Con;
+with System.WCh_WtS; use System.WCh_WtS;
with Ada.Unchecked_Conversion;
package body Ada.Wide_Wide_Text_IO.Complex_IO is
- package Aux renames Ada.Wide_Wide_Text_IO.Complex_Aux;
+ use Complex_Types;
+
+ package Scalar_Float is new
+ Ada.Wide_Wide_Text_IO.Float_Aux (Float, Scan_Float);
+
+ package Scalar_Long_Float is new
+ Ada.Wide_Wide_Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
+
+ package Scalar_Long_Long_Float is new
+ Ada.Wide_Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
+ package Aux_Float is new
+ Ada.Wide_Wide_Text_IO.Complex_Aux (Float, Scalar_Float);
- subtype LLF is Long_Long_Float;
- -- Type used for calls to routines in Aux
+ package Aux_Long_Float is new
+ Ada.Wide_Wide_Text_IO.Complex_Aux (Long_Float, Scalar_Long_Float);
- function TFT is new
- Ada.Unchecked_Conversion (File_Type, Ada.Wide_Wide_Text_IO.File_Type);
- -- This unchecked conversion is to get around a visibility bug in
- -- GNAT version 2.04w. It should be possible to simply use the
- -- subtype declared above and do normal checked conversions.
+ package Aux_Long_Long_Float is new
+ Ada.Wide_Wide_Text_IO.Complex_Aux
+ (Long_Long_Float, Scalar_Long_Long_Float);
+
+ -- Throughout this generic body, we distinguish between the case where type
+ -- Float is OK, where type Long_Float is OK and where type Long_Long_Float
+ -- is needed. These boolean constants are used to test for this, such that
+ -- only code for the relevant case is included in the instance.
+
+ OK_Float : constant Boolean := Real'Base'Digits <= Float'Digits;
+
+ OK_Long_Float : constant Boolean := Real'Base'Digits <= Long_Float'Digits;
---------
-- Get --
@@ -62,7 +84,17 @@ package body Ada.Wide_Wide_Text_IO.Complex_IO is
Imag_Item : Real'Base;
begin
- Aux.Get (TFT (File), LLF (Real_Item), LLF (Imag_Item), Width);
+ if OK_Float then
+ Aux_Float.Get (File, Float (Real_Item), Float (Imag_Item), Width);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Get
+ (File, Long_Float (Real_Item), Long_Float (Imag_Item), Width);
+ else
+ Aux_Long_Long_Float.Get
+ (File, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
+ Width);
+ end if;
+
Item := (Real_Item, Imag_Item);
exception
@@ -78,7 +110,7 @@ package body Ada.Wide_Wide_Text_IO.Complex_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
---------
@@ -100,7 +132,17 @@ package body Ada.Wide_Wide_Text_IO.Complex_IO is
-- Aux.Gets will raise Data_Error in any case.
begin
- Aux.Gets (S, LLF (Real_Item), LLF (Imag_Item), Last);
+ if OK_Float then
+ Aux_Float.Gets (S, Float (Real_Item), Float (Imag_Item), Last);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Gets
+ (S, Long_Float (Real_Item), Long_Float (Imag_Item), Last);
+ else
+ Aux_Long_Long_Float.Gets
+ (S, Long_Long_Float (Real_Item), Long_Long_Float (Imag_Item),
+ Last);
+ end if;
+
Item := (Real_Item, Imag_Item);
exception
@@ -119,7 +161,18 @@ package body Ada.Wide_Wide_Text_IO.Complex_IO is
Exp : Field := Default_Exp)
is
begin
- Aux.Put (TFT (File), LLF (Re (Item)), LLF (Im (Item)), Fore, Aft, Exp);
+ if OK_Float then
+ Aux_Float.Put
+ (File, Float (Re (Item)), Float (Im (Item)), Fore, Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Put
+ (File, Long_Float (Re (Item)), Long_Float (Im (Item)), Fore, Aft,
+ Exp);
+ else
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
+ Fore, Aft, Exp);
+ end if;
end Put;
---------
@@ -133,7 +186,7 @@ package body Ada.Wide_Wide_Text_IO.Complex_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
---------
@@ -149,7 +202,16 @@ package body Ada.Wide_Wide_Text_IO.Complex_IO is
S : String (To'First .. To'Last);
begin
- Aux.Puts (S, LLF (Re (Item)), LLF (Im (Item)), Aft, Exp);
+ if OK_Float then
+ Aux_Float.Puts (S, Float (Re (Item)), Float (Im (Item)), Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Puts
+ (S, Long_Float (Re (Item)), Long_Float (Im (Item)), Aft, Exp);
+ else
+ Aux_Long_Long_Float.Puts
+ (S, Long_Long_Float (Re (Item)), Long_Long_Float (Im (Item)),
+ Aft, Exp);
+ end if;
for J in S'Range loop
To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
diff --git a/gcc/ada/libgnat/a-ztcoio.ads b/gcc/ada/libgnat/a-ztcoio.ads
index 866fd87..2a08153 100644
--- a/gcc/ada/libgnat/a-ztcoio.ads
+++ b/gcc/ada/libgnat/a-ztcoio.ads
@@ -23,39 +23,39 @@ package Ada.Wide_Wide_Text_IO.Complex_IO is
use Complex_Types;
Default_Fore : Field := 2;
- Default_Aft : Field := Real'Digits - 1;
+ Default_Aft : Field := Complex_Types.Real'Digits - 1;
Default_Exp : Field := 3;
procedure Get
(File : File_Type;
- Item : out Complex;
+ Item : out Complex_Types.Complex;
Width : Field := 0);
procedure Get
- (Item : out Complex;
+ (Item : out Complex_Types.Complex;
Width : Field := 0);
procedure Put
(File : File_Type;
- Item : Complex;
+ Item : Complex_Types.Complex;
Fore : Field := Default_Fore;
Aft : Field := Default_Aft;
Exp : Field := Default_Exp);
procedure Put
- (Item : Complex;
+ (Item : Complex_Types.Complex;
Fore : Field := Default_Fore;
Aft : Field := Default_Aft;
Exp : Field := Default_Exp);
procedure Get
(From : Wide_Wide_String;
- Item : out Complex;
+ Item : out Complex_Types.Complex;
Last : out Positive);
procedure Put
(To : out Wide_Wide_String;
- Item : Complex;
+ Item : Complex_Types.Complex;
Aft : Field := Default_Aft;
Exp : Field := Default_Exp);
diff --git a/gcc/ada/libgnat/a-ztdeau.adb b/gcc/ada/libgnat/a-ztdeau.adb
index 6c2af9f..ec6431b 100644
--- a/gcc/ada/libgnat/a-ztdeau.adb
+++ b/gcc/ada/libgnat/a-ztdeau.adb
@@ -30,7 +30,6 @@
------------------------------------------------------------------------------
with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
-with Ada.Wide_Wide_Text_IO.Float_Aux; use Ada.Wide_Wide_Text_IO.Float_Aux;
package body Ada.Wide_Wide_Text_IO.Decimal_Aux is
diff --git a/gcc/ada/libgnat/a-ztdeio.adb b/gcc/ada/libgnat/a-ztdeio.adb
index cd26914..1d9f5d8 100644
--- a/gcc/ada/libgnat/a-ztdeio.adb
+++ b/gcc/ada/libgnat/a-ztdeio.adb
@@ -89,7 +89,7 @@ package body Ada.Wide_Wide_Text_IO.Decimal_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -144,7 +144,7 @@ package body Ada.Wide_Wide_Text_IO.Decimal_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-ztdeio__128.adb b/gcc/ada/libgnat/a-ztdeio__128.adb
index e160a01..156a66d 100644
--- a/gcc/ada/libgnat/a-ztdeio__128.adb
+++ b/gcc/ada/libgnat/a-ztdeio__128.adb
@@ -102,7 +102,7 @@ package body Ada.Wide_Wide_Text_IO.Decimal_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -162,7 +162,7 @@ package body Ada.Wide_Wide_Text_IO.Decimal_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-ztenio.adb b/gcc/ada/libgnat/a-ztenio.adb
index 5a61874..6c35b9f 100644
--- a/gcc/ada/libgnat/a-ztenio.adb
+++ b/gcc/ada/libgnat/a-ztenio.adb
@@ -51,7 +51,7 @@ package body Ada.Wide_Wide_Text_IO.Enumeration_IO is
procedure Get (Item : out Enum) is
begin
- Get (Current_Input, Item);
+ Get (Current_In, Item);
end Get;
procedure Get
@@ -88,7 +88,7 @@ package body Ada.Wide_Wide_Text_IO.Enumeration_IO is
Set : Type_Set := Default_Setting)
is
begin
- Put (Current_Output, Item, Width, Set);
+ Put (Current_Out, Item, Width, Set);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-ztfiau.adb b/gcc/ada/libgnat/a-ztfiau.adb
index f26a16a..1e94fef 100644
--- a/gcc/ada/libgnat/a-ztfiau.adb
+++ b/gcc/ada/libgnat/a-ztfiau.adb
@@ -30,7 +30,6 @@
------------------------------------------------------------------------------
with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
-with Ada.Wide_Wide_Text_IO.Float_Aux; use Ada.Wide_Wide_Text_IO.Float_Aux;
package body Ada.Wide_Wide_Text_IO.Fixed_Aux is
diff --git a/gcc/ada/libgnat/a-ztfiio.adb b/gcc/ada/libgnat/a-ztfiio.adb
index c666c7b5..53ed45b 100644
--- a/gcc/ada/libgnat/a-ztfiio.adb
+++ b/gcc/ada/libgnat/a-ztfiio.adb
@@ -36,6 +36,7 @@ with System.Img_Fixed_32; use System.Img_Fixed_32;
with System.Img_Fixed_64; use System.Img_Fixed_64;
with System.Val_Fixed_32; use System.Val_Fixed_32;
with System.Val_Fixed_64; use System.Val_Fixed_64;
+with System.Val_LLF; use System.Val_LLF;
with System.WCh_Con; use System.WCh_Con;
with System.WCh_WtS; use System.WCh_WtS;
@@ -55,6 +56,9 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
package Aux64 is new
Ada.Wide_Wide_Text_IO.Fixed_Aux (Int64, Scan_Fixed64, Set_Image_Fixed64);
+ package Aux_Long_Long_Float is new
+ Ada.Wide_Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
-- Throughout this generic body, we distinguish between the case where type
-- Int32 is OK and where type Int64 is OK. These boolean constants are used
-- to test for this, such that only code for the relevant case is included
@@ -62,7 +66,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-- static (although it is not a static expressions in the RM sense).
OK_Get_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -73,7 +77,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -87,7 +91,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Image_F
OK_Get_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -98,7 +102,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -157,7 +161,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Get (File, Long_Long_Float (Item), Width);
+ Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
end if;
exception
@@ -169,7 +173,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -197,7 +201,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Gets (S, Long_Long_Float (Item), Last);
+ Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
end if;
exception
@@ -225,7 +229,8 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Item), Fore, Aft, Exp);
end if;
end Put;
@@ -236,7 +241,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
@@ -257,7 +262,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
+ Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
end if;
for J in S'Range loop
diff --git a/gcc/ada/libgnat/a-ztfiio__128.adb b/gcc/ada/libgnat/a-ztfiio__128.adb
index 4704146..13ed410 100644
--- a/gcc/ada/libgnat/a-ztfiio__128.adb
+++ b/gcc/ada/libgnat/a-ztfiio__128.adb
@@ -38,6 +38,7 @@ with System.Img_Fixed_128; use System.Img_Fixed_128;
with System.Val_Fixed_32; use System.Val_Fixed_32;
with System.Val_Fixed_64; use System.Val_Fixed_64;
with System.Val_Fixed_128; use System.Val_Fixed_128;
+with System.Val_LLF; use System.Val_LLF;
with System.WCh_Con; use System.WCh_Con;
with System.WCh_WtS; use System.WCh_WtS;
@@ -62,6 +63,9 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
Ada.Wide_Wide_Text_IO.Fixed_Aux
(Int128, Scan_Fixed128, Set_Image_Fixed128);
+ package Aux_Long_Long_Float is new
+ Ada.Wide_Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
-- Throughout this generic body, we distinguish between the case where type
-- Int32 is OK, where type Int64 is OK and where type Int128 is OK. These
-- boolean constants are used to test for this, such that only code for the
@@ -70,7 +74,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-- in the RM sense).
OK_Get_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -81,7 +85,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_32 : constant Boolean :=
- Num'Object_Size <= 32
+ Num'Base'Object_Size <= 32
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**31)
or else
@@ -95,7 +99,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Image_F
OK_Get_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -106,7 +110,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_64 : constant Boolean :=
- Num'Object_Size <= 64
+ Num'Base'Object_Size <= 64
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**63)
or else
@@ -120,7 +124,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Image_F
OK_Get_128 : constant Boolean :=
- Num'Object_Size <= 128
+ Num'Base'Object_Size <= 128
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
or else
@@ -131,7 +135,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-- These conditions are derived from the prerequisites of System.Value_F
OK_Put_128 : constant Boolean :=
- Num'Object_Size <= 128
+ Num'Base'Object_Size <= 128
and then
((Num'Small_Numerator = 1 and then Num'Small_Denominator <= 2**127)
or else
@@ -198,7 +202,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Get (File, Long_Long_Float (Item), Width);
+ Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
end if;
exception
@@ -210,7 +214,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -243,7 +247,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator,
-Num'Small_Denominator));
else
- Float_Aux.Gets (S, Long_Long_Float (Item), Last);
+ Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
end if;
exception
@@ -275,7 +279,8 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Item), Fore, Aft, Exp);
end if;
end Put;
@@ -286,7 +291,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
@@ -311,7 +316,7 @@ package body Ada.Wide_Wide_Text_IO.Fixed_IO is
-Num'Small_Numerator, -Num'Small_Denominator,
For0, Num'Aft);
else
- Float_Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
+ Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
end if;
for J in S'Range loop
diff --git a/gcc/ada/libgnat/a-ztflau.adb b/gcc/ada/libgnat/a-ztflau.adb
index c0c55ba..1bddcd8 100644
--- a/gcc/ada/libgnat/a-ztflau.adb
+++ b/gcc/ada/libgnat/a-ztflau.adb
@@ -31,8 +31,7 @@
with Ada.Wide_Wide_Text_IO.Generic_Aux; use Ada.Wide_Wide_Text_IO.Generic_Aux;
-with System.Img_Real; use System.Img_Real;
-with System.Val_Real; use System.Val_Real;
+with System.Img_Real; use System.Img_Real;
package body Ada.Wide_Wide_Text_IO.Float_Aux is
@@ -42,12 +41,12 @@ package body Ada.Wide_Wide_Text_IO.Float_Aux is
procedure Get
(File : File_Type;
- Item : out Long_Long_Float;
+ Item : out Num;
Width : Field)
is
Buf : String (1 .. Field'Last);
Stop : Integer := 0;
- Ptr : aliased Integer := 1;
+ Ptr : aliased Integer;
begin
if Width /= 0 then
@@ -55,10 +54,10 @@ package body Ada.Wide_Wide_Text_IO.Float_Aux is
String_Skip (Buf, Ptr);
else
Load_Real (File, Buf, Stop);
+ Ptr := 1;
end if;
- Item := Scan_Real (Buf, Ptr'Access, Stop);
-
+ Item := Scan (Buf, Ptr'Access, Stop);
Check_End_Of_Field (Buf, Stop, Ptr, Width);
end Get;
@@ -68,137 +67,36 @@ package body Ada.Wide_Wide_Text_IO.Float_Aux is
procedure Gets
(From : String;
- Item : out Long_Long_Float;
+ Item : out Num;
Last : out Positive)
is
Pos : aliased Integer;
begin
String_Skip (From, Pos);
- Item := Scan_Real (From, Pos'Access, From'Last);
+ Item := Scan (From, Pos'Access, From'Last);
Last := Pos - 1;
exception
- when Constraint_Error =>
- raise Data_Error;
+ when Constraint_Error => raise Data_Error;
end Gets;
- ---------------
- -- Load_Real --
- ---------------
-
- procedure Load_Real
- (File : File_Type;
- Buf : out String;
- Ptr : in out Natural)
- is
- Loaded : Boolean;
-
- begin
- -- Skip initial blanks and load possible sign
-
- Load_Skip (File);
- Load (File, Buf, Ptr, '+', '-');
-
- -- Case of .nnnn
-
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Digits (File, Buf, Ptr, Loaded);
-
- -- Hopeless junk if no digits loaded
-
- if not Loaded then
- return;
- end if;
-
- -- Otherwise must have digits to start
-
- else
- Load_Digits (File, Buf, Ptr, Loaded);
-
- -- Hopeless junk if no digits loaded
-
- if not Loaded then
- return;
- end if;
-
- -- Deal with based case. We recognize either the standard '#' or the
- -- allowed alternative replacement ':' (see RM J.2(3)).
-
- Load (File, Buf, Ptr, '#', ':', Loaded);
-
- if Loaded then
-
- -- Case of nnn#.xxx#
-
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Extended_Digits (File, Buf, Ptr);
- Load (File, Buf, Ptr, '#', ':');
-
- -- Case of nnn#xxx.[xxx]# or nnn#xxx#
-
- else
- Load_Extended_Digits (File, Buf, Ptr);
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Extended_Digits (File, Buf, Ptr);
- end if;
-
- -- As usual, it seems strange to allow mixed base characters,
- -- but that is what ACVC tests expect, see CE3804M, case (3).
-
- Load (File, Buf, Ptr, '#', ':');
- end if;
-
- -- Case of nnn.[nnn] or nnn
-
- else
- -- Prevent the potential processing of '.' in cases where the
- -- initial digits have a trailing underscore.
-
- if Buf (Ptr) = '_' then
- return;
- end if;
-
- Load (File, Buf, Ptr, '.', Loaded);
-
- if Loaded then
- Load_Digits (File, Buf, Ptr);
- end if;
- end if;
- end if;
-
- -- Deal with exponent
-
- Load (File, Buf, Ptr, 'E', 'e', Loaded);
-
- if Loaded then
- Load (File, Buf, Ptr, '+', '-');
- Load_Digits (File, Buf, Ptr);
- end if;
- end Load_Real;
-
---------
-- Put --
---------
procedure Put
(File : File_Type;
- Item : Long_Long_Float;
+ Item : Num;
Fore : Field;
Aft : Field;
Exp : Field)
is
- Buf : String (1 .. Field'Last);
+ Buf : String (1 .. Max_Real_Image_Length);
Ptr : Natural := 0;
begin
- Set_Image_Real (Item, Buf, Ptr, Fore, Aft, Exp);
+ Set_Image_Real (Long_Long_Float (Item), Buf, Ptr, Fore, Aft, Exp);
Put_Item (File, Buf (1 .. Ptr));
end Put;
@@ -208,15 +106,16 @@ package body Ada.Wide_Wide_Text_IO.Float_Aux is
procedure Puts
(To : out String;
- Item : Long_Long_Float;
+ Item : Num;
Aft : Field;
Exp : Field)
is
- Buf : String (1 .. Field'Last);
- Ptr : Natural := 0;
+ Buf : String (1 .. Max_Real_Image_Length);
+ Ptr : Natural := 0;
begin
- Set_Image_Real (Item, Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
+ Set_Image_Real
+ (Long_Long_Float (Item), Buf, Ptr, Fore => 1, Aft => Aft, Exp => Exp);
if Ptr > To'Length then
raise Layout_Error;
diff --git a/gcc/ada/libgnat/a-ztflau.ads b/gcc/ada/libgnat/a-ztflau.ads
index dc24682..48fba82 100644
--- a/gcc/ada/libgnat/a-ztflau.ads
+++ b/gcc/ada/libgnat/a-ztflau.ads
@@ -31,41 +31,42 @@
-- This package contains the routines for Ada.Wide_Wide_Text_IO.Float_IO that
-- are shared among separate instantiations of this package. The routines
--- in this package are identical semantically to those in Float_IO itself,
--- except that generic parameter Num has been replaced by Long_Long_Float,
--- and the default parameters have been removed because they are supplied
+-- in this package are identical semantically to those in Float_IO, except
+-- that the default parameters have been removed because they are supplied
-- explicitly by the calls from within the generic template. Also used by
--- Ada.Wide_Wide_Text_IO.Fixed_IO, and by Ada.Wide_Wide_Text_IO.Decimal_IO.
+-- Ada.Wide_Wide_Text_IO.Fixed_IO and by Ada.Wide_Wide_Text_IO.Decimal_IO.
-private package Ada.Wide_Wide_Text_IO.Float_Aux is
+private generic
- procedure Load_Real
- (File : File_Type;
- Buf : out String;
- Ptr : in out Natural);
- -- This is an auxiliary routine that is used to load a possibly signed
- -- real literal value from the input file into Buf, starting at Ptr + 1.
+ type Num is digits <>;
+
+ with function Scan
+ (Str : String;
+ Ptr : not null access Integer;
+ Max : Integer) return Num;
+
+package Ada.Wide_Wide_Text_IO.Float_Aux is
procedure Get
(File : File_Type;
- Item : out Long_Long_Float;
+ Item : out Num;
Width : Field);
- procedure Gets
- (From : String;
- Item : out Long_Long_Float;
- Last : out Positive);
-
procedure Put
(File : File_Type;
- Item : Long_Long_Float;
+ Item : Num;
Fore : Field;
Aft : Field;
Exp : Field);
+ procedure Gets
+ (From : String;
+ Item : out Num;
+ Last : out Positive);
+
procedure Puts
(To : out String;
- Item : Long_Long_Float;
+ Item : Num;
Aft : Field;
Exp : Field);
diff --git a/gcc/ada/libgnat/a-ztflio.adb b/gcc/ada/libgnat/a-ztflio.adb
index bb52f38..e491e62 100644
--- a/gcc/ada/libgnat/a-ztflio.adb
+++ b/gcc/ada/libgnat/a-ztflio.adb
@@ -30,12 +30,31 @@
------------------------------------------------------------------------------
with Ada.Wide_Wide_Text_IO.Float_Aux;
-with System.WCh_Con; use System.WCh_Con;
-with System.WCh_WtS; use System.WCh_WtS;
+with System.Val_Flt; use System.Val_Flt;
+with System.Val_LFlt; use System.Val_LFlt;
+with System.Val_LLF; use System.Val_LLF;
+with System.WCh_Con; use System.WCh_Con;
+with System.WCh_WtS; use System.WCh_WtS;
package body Ada.Wide_Wide_Text_IO.Float_IO is
- package Aux renames Ada.Wide_Wide_Text_IO.Float_Aux;
+ package Aux_Float is new
+ Ada.Wide_Wide_Text_IO.Float_Aux (Float, Scan_Float);
+
+ package Aux_Long_Float is new
+ Ada.Wide_Wide_Text_IO.Float_Aux (Long_Float, Scan_Long_Float);
+
+ package Aux_Long_Long_Float is new
+ Ada.Wide_Wide_Text_IO.Float_Aux (Long_Long_Float, Scan_Long_Long_Float);
+
+ -- Throughout this generic body, we distinguish between the case where type
+ -- Float is OK, where type Long_Float is OK and where type Long_Long_Float
+ -- is needed. These boolean constants are used to test for this, such that
+ -- only code for the relevant case is included in the instance.
+
+ OK_Float : constant Boolean := Num'Base'Digits <= Float'Digits;
+
+ OK_Long_Float : constant Boolean := Num'Base'Digits <= Long_Float'Digits;
---------
-- Get --
@@ -46,8 +65,25 @@ package body Ada.Wide_Wide_Text_IO.Float_IO is
Item : out Num;
Width : Field := 0)
is
+ pragma Unsuppress (Range_Check);
+
begin
- Aux.Get (File, Long_Long_Float (Item), Width);
+ if OK_Float then
+ Aux_Float.Get (File, Float (Item), Width);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Get (File, Long_Float (Item), Width);
+ else
+ Aux_Long_Long_Float.Get (File, Long_Long_Float (Item), Width);
+ end if;
+
+ -- In the case where the type is unconstrained (e.g. Standard'Float),
+ -- the above conversion may result in an infinite value, which is
+ -- normally fine for a conversion, but in this case, we want to treat
+ -- that as a data error.
+
+ if not Item'Valid then
+ raise Data_Error;
+ end if;
exception
when Constraint_Error => raise Data_Error;
@@ -58,7 +94,7 @@ package body Ada.Wide_Wide_Text_IO.Float_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -66,6 +102,8 @@ package body Ada.Wide_Wide_Text_IO.Float_IO is
Item : out Num;
Last : out Positive)
is
+ pragma Unsuppress (Range_Check);
+
S : constant String := Wide_Wide_String_To_String (From, WCEM_Upper);
-- String on which we do the actual conversion. Note that the method
-- used for wide character encoding is irrelevant, since if there is
@@ -73,7 +111,22 @@ package body Ada.Wide_Wide_Text_IO.Float_IO is
-- Aux.Gets will raise Data_Error in any case.
begin
- Aux.Gets (S, Long_Long_Float (Item), Last);
+ if OK_Float then
+ Aux_Float.Gets (S, Float (Item), Last);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Gets (S, Long_Float (Item), Last);
+ else
+ Aux_Long_Long_Float.Gets (S, Long_Long_Float (Item), Last);
+ end if;
+
+ -- In the case where the type is unconstrained (e.g. Standard'Float),
+ -- the above conversion may result in an infinite value, which is
+ -- normally fine for a conversion, but in this case, we want to treat
+ -- that as a data error.
+
+ if not Item'Valid then
+ raise Data_Error;
+ end if;
exception
when Constraint_Error => raise Data_Error;
@@ -91,7 +144,14 @@ package body Ada.Wide_Wide_Text_IO.Float_IO is
Exp : Field := Default_Exp)
is
begin
- Aux.Put (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ if OK_Float then
+ Aux_Float.Put (File, Float (Item), Fore, Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Put (File, Long_Float (Item), Fore, Aft, Exp);
+ else
+ Aux_Long_Long_Float.Put
+ (File, Long_Long_Float (Item), Fore, Aft, Exp);
+ end if;
end Put;
procedure Put
@@ -101,7 +161,7 @@ package body Ada.Wide_Wide_Text_IO.Float_IO is
Exp : Field := Default_Exp)
is
begin
- Put (Current_Output, Item, Fore, Aft, Exp);
+ Put (Current_Out, Item, Fore, Aft, Exp);
end Put;
procedure Put
@@ -113,7 +173,13 @@ package body Ada.Wide_Wide_Text_IO.Float_IO is
S : String (To'First .. To'Last);
begin
- Aux.Puts (S, Long_Long_Float (Item), Aft, Exp);
+ if OK_Float then
+ Aux_Float.Puts (S, Float (Item), Aft, Exp);
+ elsif OK_Long_Float then
+ Aux_Long_Float.Puts (S, Long_Float (Item), Aft, Exp);
+ else
+ Aux_Long_Long_Float.Puts (S, Long_Long_Float (Item), Aft, Exp);
+ end if;
for J in S'Range loop
To (J) := Wide_Wide_Character'Val (Character'Pos (S (J)));
diff --git a/gcc/ada/libgnat/a-ztgeau.adb b/gcc/ada/libgnat/a-ztgeau.adb
index be7aecc..6b5e4c5 100644
--- a/gcc/ada/libgnat/a-ztgeau.adb
+++ b/gcc/ada/libgnat/a-ztgeau.adb
@@ -403,6 +403,106 @@ package body Ada.Wide_Wide_Text_IO.Generic_Aux is
end Load_Integer;
---------------
+ -- Load_Real --
+ ---------------
+
+ procedure Load_Real
+ (File : File_Type;
+ Buf : out String;
+ Ptr : in out Natural)
+ is
+ Loaded : Boolean;
+
+ begin
+ -- Skip initial blanks and load possible sign
+
+ Load_Skip (File);
+ Load (File, Buf, Ptr, '+', '-');
+
+ -- Case of .nnnn
+
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Digits (File, Buf, Ptr, Loaded);
+
+ -- Hopeless junk if no digits loaded
+
+ if not Loaded then
+ return;
+ end if;
+
+ -- Otherwise must have digits to start
+
+ else
+ Load_Digits (File, Buf, Ptr, Loaded);
+
+ -- Hopeless junk if no digits loaded
+
+ if not Loaded then
+ return;
+ end if;
+
+ -- Deal with based case. We recognize either the standard '#' or the
+ -- allowed alternative replacement ':' (see RM J.2(3)).
+
+ Load (File, Buf, Ptr, '#', ':', Loaded);
+
+ if Loaded then
+
+ -- Case of nnn#.xxx#
+
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Extended_Digits (File, Buf, Ptr);
+ Load (File, Buf, Ptr, '#', ':');
+
+ -- Case of nnn#xxx.[xxx]# or nnn#xxx#
+
+ else
+ Load_Extended_Digits (File, Buf, Ptr);
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Extended_Digits (File, Buf, Ptr);
+ end if;
+
+ -- As usual, it seems strange to allow mixed base characters,
+ -- but that is what ACVC tests expect, see CE3804M, case (3).
+
+ Load (File, Buf, Ptr, '#', ':');
+ end if;
+
+ -- Case of nnn.[nnn] or nnn
+
+ else
+ -- Prevent the potential processing of '.' in cases where the
+ -- initial digits have a trailing underscore.
+
+ if Buf (Ptr) = '_' then
+ return;
+ end if;
+
+ Load (File, Buf, Ptr, '.', Loaded);
+
+ if Loaded then
+ Load_Digits (File, Buf, Ptr);
+ end if;
+ end if;
+ end if;
+
+ -- Deal with exponent
+
+ Load (File, Buf, Ptr, 'E', 'e', Loaded);
+
+ if Loaded then
+ Load (File, Buf, Ptr, '+', '-');
+ Load_Digits (File, Buf, Ptr);
+ end if;
+ end Load_Real;
+
+ ---------------
-- Load_Skip --
---------------
diff --git a/gcc/ada/libgnat/a-ztgeau.ads b/gcc/ada/libgnat/a-ztgeau.ads
index 68d4a33..6b80ed4 100644
--- a/gcc/ada/libgnat/a-ztgeau.ads
+++ b/gcc/ada/libgnat/a-ztgeau.ads
@@ -155,6 +155,12 @@ package Ada.Wide_Wide_Text_IO.Generic_Aux is
Ptr : in out Natural);
-- Loads a possibly signed integer literal value
+ procedure Load_Real
+ (File : File_Type;
+ Buf : out String;
+ Ptr : in out Natural);
+ -- Loads a possibly signed real literal value
+
procedure Put_Item (File : File_Type; Str : String);
-- This routine is like Wide_Wide_Text_IO.Put, except that it checks for
-- overflow of bounded lines, as described in (RM A.10.6(8)). It is used
diff --git a/gcc/ada/libgnat/a-ztinio.adb b/gcc/ada/libgnat/a-ztinio.adb
index 4d4708a..c19c8a6 100644
--- a/gcc/ada/libgnat/a-ztinio.adb
+++ b/gcc/ada/libgnat/a-ztinio.adb
@@ -95,7 +95,7 @@ package body Ada.Wide_Wide_Text_IO.Integer_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -149,7 +149,7 @@ package body Ada.Wide_Wide_Text_IO.Integer_IO is
Base : Number_Base := Default_Base)
is
begin
- Put (Current_Output, Item, Width, Base);
+ Put (Current_Out, Item, Width, Base);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-ztinio__128.adb b/gcc/ada/libgnat/a-ztinio__128.adb
index 560539a9..19dcc34 100644
--- a/gcc/ada/libgnat/a-ztinio__128.adb
+++ b/gcc/ada/libgnat/a-ztinio__128.adb
@@ -111,7 +111,7 @@ package body Ada.Wide_Wide_Text_IO.Integer_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -169,7 +169,7 @@ package body Ada.Wide_Wide_Text_IO.Integer_IO is
Base : Number_Base := Default_Base)
is
begin
- Put (Current_Output, Item, Width, Base);
+ Put (Current_Out, Item, Width, Base);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-ztmoio.adb b/gcc/ada/libgnat/a-ztmoio.adb
index 67087c6..ba854ff 100644
--- a/gcc/ada/libgnat/a-ztmoio.adb
+++ b/gcc/ada/libgnat/a-ztmoio.adb
@@ -94,7 +94,7 @@ package body Ada.Wide_Wide_Text_IO.Modular_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -147,7 +147,7 @@ package body Ada.Wide_Wide_Text_IO.Modular_IO is
Base : Number_Base := Default_Base)
is
begin
- Put (Current_Output, Item, Width, Base);
+ Put (Current_Out, Item, Width, Base);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/a-ztmoio__128.adb b/gcc/ada/libgnat/a-ztmoio__128.adb
index 71626cc..2101508 100644
--- a/gcc/ada/libgnat/a-ztmoio__128.adb
+++ b/gcc/ada/libgnat/a-ztmoio__128.adb
@@ -110,7 +110,7 @@ package body Ada.Wide_Wide_Text_IO.Modular_IO is
Width : Field := 0)
is
begin
- Get (Current_Input, Item, Width);
+ Get (Current_In, Item, Width);
end Get;
procedure Get
@@ -167,7 +167,7 @@ package body Ada.Wide_Wide_Text_IO.Modular_IO is
Base : Number_Base := Default_Base)
is
begin
- Put (Current_Output, Item, Width, Base);
+ Put (Current_Out, Item, Width, Base);
end Put;
procedure Put
diff --git a/gcc/ada/libgnat/g-diopit.adb b/gcc/ada/libgnat/g-diopit.adb
index 50bbf9b..1e8627e 100644
--- a/gcc/ada/libgnat/g-diopit.adb
+++ b/gcc/ada/libgnat/g-diopit.adb
@@ -32,6 +32,7 @@
with Ada.Characters.Handling;
with Ada.Strings.Fixed;
with Ada.Strings.Maps;
+
with GNAT.OS_Lib;
with GNAT.Regexp;
@@ -49,7 +50,7 @@ package body GNAT.Directory_Operations.Iteration is
is
File_Regexp : constant Regexp.Regexp := Regexp.Compile (File_Pattern);
Index : Natural := 0;
- Quit : Boolean;
+ Quit : Boolean := False;
procedure Read_Directory (Directory : Dir_Name_Str);
-- Open Directory and read all entries. This routine is called
@@ -113,6 +114,7 @@ package body GNAT.Directory_Operations.Iteration is
if not (Dir_Entry = "." or else Dir_Entry = "..")
and then OS_Lib.Is_Directory (Pathname)
+ and then not OS_Lib.Is_Symbolic_Link (Pathname)
then
Read_Directory (Pathname);
exit when Quit;
@@ -124,7 +126,6 @@ package body GNAT.Directory_Operations.Iteration is
end Read_Directory;
begin
- Quit := False;
Read_Directory (Root_Directory);
end Find;
diff --git a/gcc/ada/libgnat/g-diopit.ads b/gcc/ada/libgnat/g-diopit.ads
index aa60d32..952d795 100644
--- a/gcc/ada/libgnat/g-diopit.ads
+++ b/gcc/ada/libgnat/g-diopit.ads
@@ -50,6 +50,8 @@ package GNAT.Directory_Operations.Iteration is
-- will pass in the value False on each call to Action. The iterator will
-- terminate after passing the last matched path to Action or after
-- returning from a call to Action which sets Quit to True.
+ -- The iterator does not follow symbolic links avoiding possible
+ -- circularities or exploring unrelated directories.
-- Raises GNAT.Regexp.Error_In_Regexp if File_Pattern is ill formed.
generic
diff --git a/gcc/ada/libgnat/g-expect.adb b/gcc/ada/libgnat/g-expect.adb
index 78b3c27..0f9d0b9 100644
--- a/gcc/ada/libgnat/g-expect.adb
+++ b/gcc/ada/libgnat/g-expect.adb
@@ -1181,6 +1181,12 @@ package body GNAT.Expect is
Set_Up_Child_Communications
(Descriptor, Pipe1, Pipe2, Pipe3, Command_With_Path.all,
C_Arg_List'Address);
+
+ -- On Windows systems we need to release memory taken for Arg_List
+
+ for A of Arg_List loop
+ Free (A);
+ end loop;
end if;
Free (Command_With_Path);
diff --git a/gcc/ada/libgnat/g-sercom__linux.adb b/gcc/ada/libgnat/g-sercom__linux.adb
index 10b456f..f7212e8 100644
--- a/gcc/ada/libgnat/g-sercom__linux.adb
+++ b/gcc/ada/libgnat/g-sercom__linux.adb
@@ -30,6 +30,33 @@
------------------------------------------------------------------------------
-- This is the GNU/Linux implementation of this package
+--
+-- Testing on GNU/Linux can be done with socat & stty tools.
+--
+-- First in a terminal create a virtual serial port:
+--
+-- * First solution, the terminal is one of the side of the channel
+-- characters written with Write into the port will be displayed
+-- there and characters typed into the terminal will be send to the
+-- channel and will be received by a Read call.
+--
+-- $ socat PTY,link=/tmp/virtual-tty,raw,echo=1 -
+--
+-- * Second solution, the virtual channel contains two side and the
+-- program can Read and Write date to it.
+--
+-- $ socat PTY,link=/tmp/virtual-tty,raw,echo=1 \
+-- PTY,link=/tmp/virtual-tty,raw,echo=1
+--
+-- Connect to this virtual serial port with:
+--
+-- Open (Port => P, Name => "/tmp/virtual-tty");
+--
+-- Do any settings using the Set routine below, then you can check
+-- the serial port configuration with:
+--
+-- $ stty --file /tmp/virtual-tty
+--
with Ada.Streams; use Ada.Streams;
@@ -52,6 +79,34 @@ package body GNAT.Serial_Communications is
function fcntl (fd : int; cmd : int; value : int) return int;
pragma Import (C, fcntl, "fcntl");
+ C_Data_Rate : constant array (Data_Rate) of unsigned :=
+ (B75 => OSC.B75,
+ B110 => OSC.B110,
+ B150 => OSC.B150,
+ B300 => OSC.B300,
+ B600 => OSC.B600,
+ B1200 => OSC.B1200,
+ B2400 => OSC.B2400,
+ B4800 => OSC.B4800,
+ B9600 => OSC.B9600,
+ B19200 => OSC.B19200,
+ B38400 => OSC.B38400,
+ B57600 => OSC.B57600,
+ B115200 => OSC.B115200,
+ B230400 => OSC.B230400,
+ B460800 => OSC.B460800,
+ B500000 => OSC.B500000,
+ B576000 => OSC.B576000,
+ B921600 => OSC.B921600,
+ B1000000 => OSC.B1000000,
+ B1152000 => OSC.B1152000,
+ B1500000 => OSC.B1500000,
+ B2000000 => OSC.B2000000,
+ B2500000 => OSC.B2500000,
+ B3000000 => OSC.B3000000,
+ B3500000 => OSC.B3500000,
+ B4000000 => OSC.B4000000);
+
C_Bits : constant array (Data_Bits) of unsigned :=
(CS7 => OSC.CS7, CS8 => OSC.CS8);
@@ -162,6 +217,8 @@ package body GNAT.Serial_Communications is
is
use OSC;
+ subtype speed_t is unsigned;
+
type termios is record
c_iflag : unsigned;
c_oflag : unsigned;
@@ -169,8 +226,8 @@ package body GNAT.Serial_Communications is
c_lflag : unsigned;
c_line : unsigned_char;
c_cc : Interfaces.C.char_array (0 .. 31);
- c_ispeed : unsigned;
- c_ospeed : unsigned;
+ c_ispeed : speed_t;
+ c_ospeed : speed_t;
end record;
pragma Convention (C, termios);
@@ -184,9 +241,15 @@ package body GNAT.Serial_Communications is
function tcflush (fd : int; queue_selector : int) return int;
pragma Import (C, tcflush, "tcflush");
+ function cfsetospeed (termios_p : Address; speed : speed_t) return int;
+ pragma Import (C, cfsetospeed, "cfsetospeed");
+
+ function cfsetispeed (termios_p : Address; speed : speed_t) return int;
+ pragma Import (C, cfsetispeed, "cfsetispeed");
+
Current : termios;
- Res : int;
+ Res : int := 0;
pragma Warnings (Off, Res);
-- Warnings off, since we don't always test the result
@@ -205,6 +268,7 @@ package body GNAT.Serial_Communications is
or C_Stop_Bits (Stop_Bits)
or C_Parity (Parity)
or CREAD;
+
Current.c_iflag := 0;
Current.c_lflag := 0;
Current.c_oflag := 0;
@@ -224,10 +288,36 @@ package body GNAT.Serial_Communications is
Current.c_iflag := Current.c_iflag or IXON;
end case;
- Current.c_ispeed := Data_Rate_Value (Rate);
- Current.c_ospeed := Data_Rate_Value (Rate);
- Current.c_cc (VMIN) := char'Val (0);
- Current.c_cc (VTIME) := char'Val (Natural (Timeout * 10));
+ Current.c_ispeed := Data_Rate_Value (Rate);
+ Current.c_ospeed := Data_Rate_Value (Rate);
+
+ -- See man termios for descriptions about the different modes
+
+ if Block and then Timeout = 0.0 then
+ -- MIN > 0, TIME == 0 (blocking read)
+ Current.c_cc (VMIN) := char'Val (1);
+ Current.c_cc (VTIME) := char'Val (0);
+
+ else
+ -- MIN == 0, TIME > 0 (read with timeout)
+ -- MIN == 0, TIME == 0 (polling read)
+ Current.c_cc (VMIN) := char'Val (0);
+ Current.c_cc (VTIME) := char'Val (Natural (Timeout * 10));
+
+ Current.c_lflag := Current.c_lflag or (not ICANON);
+ end if;
+
+ Res := cfsetispeed (Current'Address, C_Data_Rate (Rate));
+
+ if Res = -1 then
+ Raise_Error ("set: cfsetispeed failed");
+ end if;
+
+ Res := cfsetospeed (Current'Address, C_Data_Rate (Rate));
+
+ if Res = -1 then
+ Raise_Error ("set: cfsetospeed failed");
+ end if;
-- Set port settings
@@ -236,7 +326,11 @@ package body GNAT.Serial_Communications is
-- Block
- Res := fcntl (int (Port.H), F_SETFL, (if Block then 0 else FNDELAY));
+ if Block then
+ -- In blocking mode, remove the non-blocking flags set while
+ -- opening the serial port (see Open).
+ Res := fcntl (int (Port.H), F_SETFL, 0);
+ end if;
if Res = -1 then
Raise_Error ("set: fcntl failed");
diff --git a/gcc/ada/libgnat/memtrack.adb b/gcc/ada/libgnat/memtrack.adb
index bd34796..a5f508d 100644
--- a/gcc/ada/libgnat/memtrack.adb
+++ b/gcc/ada/libgnat/memtrack.adb
@@ -102,6 +102,9 @@ package body System.Memory is
pragma Import (C, OS_Exit, "__gnat_os_exit");
pragma No_Return (OS_Exit);
+ In_Child_After_Fork : Integer;
+ pragma Import (C, In_Child_After_Fork, "__gnat_in_child_after_fork");
+
procedure fwrite
(Ptr : System.Address;
Size : size_t;
@@ -149,6 +152,24 @@ package body System.Memory is
-- themselves do dynamic allocation. We use First_Call flag to avoid
-- infinite recursion
+ function Allow_Trace return Boolean;
+ pragma Inline (Allow_Trace);
+ -- Check if the memory trace is allowed
+
+ -----------------
+ -- Allow_Trace --
+ -----------------
+
+ function Allow_Trace return Boolean is
+ begin
+ if First_Call then
+ First_Call := False;
+ return In_Child_After_Fork = 0;
+ else
+ return False;
+ end if;
+ end Allow_Trace;
+
-----------
-- Alloc --
-----------
@@ -176,14 +197,12 @@ package body System.Memory is
Result := c_malloc (Actual_Size);
- if First_Call then
+ if Allow_Trace then
-- Logs allocation call
-- format is:
-- 'A' <mem addr> <size chunk> <len backtrace> <addr1> ... <addrn>
- First_Call := False;
-
if Needs_Init then
Gmem_Initialize;
end if;
@@ -243,14 +262,12 @@ package body System.Memory is
begin
Lock_Task.all;
- if First_Call then
+ if Allow_Trace then
-- Logs deallocation call
-- format is:
-- 'D' <mem addr> <len backtrace> <addr1> ... <addrn>
- First_Call := False;
-
if Needs_Init then
Gmem_Initialize;
end if;
@@ -334,9 +351,7 @@ package body System.Memory is
Abort_Defer.all;
Lock_Task.all;
- if First_Call then
- First_Call := False;
-
+ if Allow_Trace then
-- We first log deallocation call
if Needs_Init then
diff --git a/gcc/ada/libgnat/s-fatgen.adb b/gcc/ada/libgnat/s-fatgen.adb
index a598a12..9f25987 100644
--- a/gcc/ada/libgnat/s-fatgen.adb
+++ b/gcc/ada/libgnat/s-fatgen.adb
@@ -29,50 +29,137 @@
-- --
------------------------------------------------------------------------------
--- The implementation here is portable to any IEEE implementation. It does
--- not handle nonbinary radix, and also assumes that model numbers and
--- machine numbers are basically identical, which is not true of all possible
--- floating-point implementations. On a non-IEEE machine, this body must be
--- specialized appropriately, or better still, its generic instantiations
--- should be replaced by efficient machine-specific code.
+-- This implementation is portable to any IEEE implementation. It does not
+-- handle nonbinary radix, and also assumes that model numbers and machine
+-- numbers are basically identical, which is not true of all possible
+-- floating-point implementations.
with Ada.Unchecked_Conversion;
-with System;
-package body System.Fat_Gen is
+with Interfaces;
+with System.Unsigned_Types;
+
+pragma Warnings (Off, "non-static constant in preelaborated unit");
+-- Every constant is static given our instantiation model
- Float_Radix : constant T := T (T'Machine_Radix);
- Radix_To_M_Minus_1 : constant T := Float_Radix ** (T'Machine_Mantissa - 1);
+package body System.Fat_Gen is
+ use type Interfaces.Unsigned_64;
pragma Assert (T'Machine_Radix = 2);
-- This version does not handle radix 16
- -- Constants for Decompose and Scaling
+ Rad : constant T := T (T'Machine_Radix);
+ -- Renaming for the machine radix
- Rad : constant T := T (T'Machine_Radix);
- Invrad : constant T := 1.0 / Rad;
+ Mantissa : constant Integer := T'Machine_Mantissa;
+ -- Renaming for the machine mantissa
- subtype Expbits is Integer range 0 .. 6;
- -- 2 ** (2 ** 7) might overflow. How big can radix-16 exponents get?
-
- Log_Power : constant array (Expbits) of Integer := (1, 2, 4, 8, 16, 32, 64);
-
- R_Power : constant array (Expbits) of T :=
- (Rad ** 1,
- Rad ** 2,
- Rad ** 4,
- Rad ** 8,
- Rad ** 16,
- Rad ** 32,
- Rad ** 64);
-
- R_Neg_Power : constant array (Expbits) of T :=
- (Invrad ** 1,
- Invrad ** 2,
- Invrad ** 4,
- Invrad ** 8,
- Invrad ** 16,
- Invrad ** 32,
- Invrad ** 64);
+ Invrad : constant T := 1.0 / Rad;
+ -- Smallest positive mantissa in the canonical form (RM A.5.3(4))
+
+ -- Small : constant T := Rad ** (T'Machine_Emin - 1);
+ -- Smallest positive normalized number
+
+ -- Tiny : constant T := Rad ** (T'Machine_Emin - Mantissa);
+ -- Smallest positive denormalized number
+
+ Tiny16 : constant Interfaces.Unsigned_16 := 1;
+ Tiny32 : constant Interfaces.Unsigned_32 := 1;
+ Tiny64 : constant Interfaces.Unsigned_64 := 1;
+ Tiny80 : constant array (1 .. 2) of Interfaces.Unsigned_64 :=
+ (1 * Standard'Default_Bit_Order,
+ 2**48 * (1 - Standard'Default_Bit_Order));
+ for Tiny80'Alignment use Standard'Maximum_Alignment;
+ -- We cannot use the direct declaration because it cannot be translated
+ -- into C90, as the hexadecimal floating constants were introduced in C99.
+ -- So we work around this by using an overlay of the integer constant.
+
+ RM1 : constant T := Rad ** (Mantissa - 1);
+ -- Smallest positive member of the large consecutive integers. It is equal
+ -- to the ratio Small / Tiny, which means that multiplying by it normalizes
+ -- any nonzero denormalized number.
+
+ IEEE_Emin : constant Integer := T'Machine_Emin - 1;
+ IEEE_Emax : constant Integer := T'Machine_Emax - 1;
+ -- The mantissa is a fraction with first digit set in Ada whereas it is
+ -- shifted by 1 digit to the left in the IEEE floating-point format.
+
+ subtype IEEE_Erange is Integer range IEEE_Emin - 1 .. IEEE_Emax + 1;
+ -- The IEEE floating-point format extends the machine range by 1 to the
+ -- left for denormalized numbers and 1 to the right for infinities/NaNs.
+
+ IEEE_Ebias : constant Integer := -(IEEE_Emin - 1);
+ -- The exponent is biased such that denormalized numbers have it zero
+
+ -- The implementation uses a representation type Float_Rep that allows
+ -- direct access to exponent and mantissa of the floating point number.
+
+ -- The Float_Rep type is a simple array of Float_Word elements. This
+ -- representation is chosen to make it possible to size the type based
+ -- on a generic parameter. Since the array size is known at compile
+ -- time, efficient code can still be generated. The size of Float_Word
+ -- elements should be large enough to allow accessing the exponent in
+ -- one read, but small enough so that all floating-point object sizes
+ -- are a multiple of Float_Word'Size.
+
+ -- The following conditions must be met for all possible instantiations
+ -- of the attribute package:
+
+ -- - T'Size is an integral multiple of Float_Word'Size
+
+ -- - The exponent and sign are completely contained in a single
+ -- component of Float_Rep, named Most Significant Word (MSW).
+
+ -- - The sign occupies the most significant bit of the MSW and the
+ -- exponent is in the following bits. The exception is 80-bit
+ -- double extended, where they occupy the low 16-bit halfword.
+
+ -- The low-level primitives Copy_Sign, Decompose, Scaling and Valid are
+ -- implemented by accessing the bit pattern of the floating-point number.
+ -- Only the normalization of denormalized numbers, if any, and the gradual
+ -- underflow are left to the hardware, mainly because there is some leeway
+ -- for the hardware implementation in this area: for example, the MSB of
+ -- the mantissa, which is 1 for normalized numbers and 0 for denormalized
+ -- numbers, may or may not be stored by the hardware.
+
+ Siz : constant := (if System.Word_Size > 32 then 32 else System.Word_Size);
+ type Float_Word is mod 2**Siz;
+
+ N : constant Natural := (T'Size + Siz - 1) / Siz;
+ Rep_Last : constant Natural := Natural'Min (N - 1, (Mantissa + 16) / Siz);
+ -- Determine the number of Float_Words needed for representing the
+ -- entire floating-point value. Do not take into account excessive
+ -- padding, as occurs on IA-64 where 80 bits floats get padded to 128
+ -- bits. In general, the exponent field cannot be larger than 15 bits,
+ -- even for 128-bit floating-point types, so the final format size
+ -- won't be larger than Mantissa + 16.
+
+ type Float_Rep is array (Natural range 0 .. N - 1) of Float_Word;
+ pragma Suppress_Initialization (Float_Rep);
+ -- This pragma suppresses the generation of an initialization procedure
+ -- for type Float_Rep when operating in Initialize/Normalize_Scalars mode.
+
+ MSW : constant Natural := Rep_Last * Standard'Default_Bit_Order;
+ -- Finding the location of the Exponent_Word is a bit tricky. In general
+ -- we assume Word_Order = Bit_Order.
+
+ Exp_Factor : constant Float_Word :=
+ (if Mantissa = 64
+ then 1
+ else 2**(Siz - 1) / Float_Word (IEEE_Emax - IEEE_Emin + 3));
+ -- Factor that the extracted exponent needs to be divided by to be in
+ -- range 0 .. IEEE_Emax - IEEE_Emin + 2. The special case is 80-bit
+ -- double extended, where the exponent starts the 3rd float word.
+
+ Exp_Mask : constant Float_Word :=
+ Float_Word (IEEE_Emax - IEEE_Emin + 2) * Exp_Factor;
+ -- Value needed to mask out the exponent field. This assumes that the
+ -- range 0 .. IEEE_Emax - IEEE_Emin + 2 contains 2**N values, for some
+ -- N in Natural.
+
+ Sign_Mask : constant Float_Word :=
+ (if Mantissa = 64 then 2**15 else 2**(Siz - 1));
+ -- Value needed to mask out the sign field. The special case is 80-bit
+ -- double extended, where the exponent starts the 3rd float word.
-----------------------
-- Local Subprograms --
@@ -84,11 +171,6 @@ package body System.Fat_Gen is
-- the sign of the exponent. The absolute value of Frac is in the range
-- 0.0 <= Frac < 1.0. If Frac = 0.0 or -0.0, then Expo is always zero.
- function Gradual_Scaling (Adjustment : UI) return T;
- -- Like Scaling with a first argument of 1.0, but returns the smallest
- -- denormal rather than zero when the adjustment is smaller than
- -- Machine_Emin. Used for Succ and Pred.
-
--------------
-- Adjacent --
--------------
@@ -138,19 +220,22 @@ package body System.Fat_Gen is
---------------
function Copy_Sign (Value, Sign : T) return T is
- Result : T;
+ S : constant T := T'Machine (Sign);
- function Is_Negative (V : T) return Boolean;
- pragma Import (Intrinsic, Is_Negative);
+ Rep_S : Float_Rep;
+ for Rep_S'Address use S'Address;
+ -- Rep_S is a view of the Sign parameter
- begin
- Result := abs Value;
+ V : T := T'Machine (Value);
- if Is_Negative (Sign) then
- return -Result;
- else
- return Result;
- end if;
+ Rep_V : Float_Rep;
+ for Rep_V'Address use V'Address;
+ -- Rep_V is a view of the Value parameter
+
+ begin
+ Rep_V (MSW) :=
+ (Rep_V (MSW) and not Sign_Mask) or (Rep_S (MSW) and Sign_Mask);
+ return V;
end Copy_Sign;
---------------
@@ -158,94 +243,53 @@ package body System.Fat_Gen is
---------------
procedure Decompose (XX : T; Frac : out T; Expo : out UI) is
- X : constant T := T'Machine (XX);
+ X : T := T'Machine (XX);
- begin
- if X = 0.0 then
+ Rep : Float_Rep;
+ for Rep'Address use X'Address;
+ -- Rep is a view of the input floating-point parameter
- -- The normalized exponent of zero is zero, see RM A.5.2(15)
+ Exp : constant IEEE_Erange :=
+ Integer ((Rep (MSW) and Exp_Mask) / Exp_Factor) - IEEE_Ebias;
+ -- Mask/Shift X to only get bits from the exponent. Then convert biased
+ -- value to final value.
- Frac := X;
- Expo := 0;
-
- -- Check for infinities, transfinites, whatnot
+ Minus : constant Boolean := (Rep (MSW) and Sign_Mask) /= 0;
+ -- Mask/Shift X to only get bit from the sign
- elsif X > T'Safe_Last then
- Frac := Invrad;
- pragma Annotate (CodePeer, Intentional, "dead code",
- "Check float range.");
- Expo := T'Machine_Emax + 1;
-
- elsif X < T'Safe_First then
- Frac := -Invrad;
- pragma Annotate (CodePeer, Intentional, "dead code",
- "Check float range.");
- Expo := T'Machine_Emax + 2; -- how many extra negative values?
+ begin
+ -- The normalized exponent of zero is zero, see RM A.5.3(15)
- else
- -- Case of nonzero finite x. Essentially, we just multiply
- -- by Rad ** (+-2**N) to reduce the range.
+ if X = 0.0 then
+ Expo := 0;
+ Frac := X;
- declare
- Ax : T := abs X;
- Ex : UI := 0;
+ -- Check for infinities and NaNs
- -- Ax * Rad ** Ex is invariant
+ elsif Exp = IEEE_Emax + 1 then
+ Expo := T'Machine_Emax + 1;
+ Frac := (if Minus then -Invrad else Invrad);
- begin
- if Ax >= 1.0 then
- while Ax >= R_Power (Expbits'Last) loop
- Ax := Ax * R_Neg_Power (Expbits'Last);
- Ex := Ex + Log_Power (Expbits'Last);
- end loop;
+ -- Check for nonzero denormalized numbers
- -- Ax < Rad ** 64
+ elsif Exp = IEEE_Emin - 1 then
+ -- Normalize by multiplying by Radix ** (Mantissa - 1)
- for N in reverse Expbits'First .. Expbits'Last - 1 loop
- if Ax >= R_Power (N) then
- Ax := Ax * R_Neg_Power (N);
- Ex := Ex + Log_Power (N);
- end if;
+ Decompose (X * RM1, Frac, Expo);
+ Expo := Expo - (Mantissa - 1);
- -- Ax < R_Power (N)
+ -- Case of normalized numbers
- end loop;
+ else
+ -- The Ada exponent is the IEEE exponent plus 1, see above
- -- 1 <= Ax < Rad
+ Expo := Exp + 1;
- Ax := Ax * Invrad;
- Ex := Ex + 1;
+ -- Set Ada exponent of X to zero, so we end up with the fraction
- else
- -- 0 < ax < 1
-
- while Ax < R_Neg_Power (Expbits'Last) loop
- Ax := Ax * R_Power (Expbits'Last);
- pragma Annotate (CodePeer, Intentional, "dead code",
- "Check float range.");
- Ex := Ex - Log_Power (Expbits'Last);
- end loop;
- pragma Annotate
- (CodePeer, Intentional,
- "test always false",
- "expected for some instantiations");
-
- -- Rad ** -64 <= Ax < 1
-
- for N in reverse Expbits'First .. Expbits'Last - 1 loop
- if Ax < R_Neg_Power (N) then
- Ax := Ax * R_Power (N);
- Ex := Ex - Log_Power (N);
- end if;
-
- -- R_Neg_Power (N) <= Ax < 1
-
- end loop;
- end if;
-
- Frac := (if X > 0.0 then Ax else -Ax);
- Expo := Ex;
- end;
+ Rep (MSW) := (Rep (MSW) and not Exp_Mask) +
+ Float_Word (IEEE_Ebias - 1) * Exp_Factor;
+ Frac := X;
end if;
end Decompose;
@@ -291,38 +335,6 @@ package body System.Fat_Gen is
return X_Frac;
end Fraction;
- ---------------------
- -- Gradual_Scaling --
- ---------------------
-
- function Gradual_Scaling (Adjustment : UI) return T is
- Y : T;
- Y1 : T;
- Ex : UI := Adjustment;
-
- begin
- if Adjustment < T'Machine_Emin - 1 then
- Y := 2.0 ** T'Machine_Emin;
- Y1 := Y;
- Ex := Ex - T'Machine_Emin;
- while Ex < 0 loop
- Y := T'Machine (Y / 2.0);
-
- if Y = 0.0 then
- return Y1;
- end if;
-
- Ex := Ex + 1;
- Y1 := Y;
- end loop;
-
- return Y1;
-
- else
- return Scaling (1.0, Adjustment);
- end if;
- end Gradual_Scaling;
-
------------------
-- Leading_Part --
------------------
@@ -332,7 +344,7 @@ package body System.Fat_Gen is
Y, Z : T;
begin
- if Radix_Digits >= T'Machine_Mantissa then
+ if Radix_Digits >= Mantissa then
return X;
elsif Radix_Digits <= 0 then
@@ -412,6 +424,13 @@ package body System.Fat_Gen is
----------
function Pred (X : T) return T is
+ Tiny : constant T;
+ pragma Import (Ada, Tiny);
+ for Tiny'Address use (if T'Size = 16 then Tiny16'Address
+ elsif T'Size = 32 then Tiny32'Address
+ elsif T'Size = 64 then Tiny64'Address
+ elsif Mantissa = 64 then Tiny80'Address
+ else raise Program_Error);
X_Frac : T;
X_Exp : UI;
@@ -419,12 +438,11 @@ package body System.Fat_Gen is
-- Zero has to be treated specially, since its exponent is zero
if X = 0.0 then
- return -Succ (X);
+ return -Tiny;
- -- Special treatment for most negative number
+ -- Special treatment for largest negative number: raise Constraint_Error
elsif X = T'First then
-
raise Constraint_Error with "Pred of largest negative number";
-- For infinities, return unchanged
@@ -438,28 +456,33 @@ package body System.Fat_Gen is
-- Subtract from the given number a number equivalent to the value
-- of its least significant bit. Given that the most significant bit
- -- represents a value of 1.0 * radix ** (exp - 1), the value we want
- -- is obtained by shifting this by (mantissa-1) bits to the right,
+ -- represents a value of 1.0 * Radix ** (Exp - 1), the value we want
+ -- is obtained by shifting this by (Mantissa-1) bits to the right,
-- i.e. decreasing the exponent by that amount.
else
Decompose (X, X_Frac, X_Exp);
- -- A special case, if the number we had was a positive power of
- -- two, then we want to subtract half of what we would otherwise
- -- subtract, since the exponent is going to be reduced.
+ -- For a denormalized number or a normalized number with the lowest
+ -- exponent, just subtract the Tiny.
+
+ if X_Exp <= T'Machine_Emin then
+ return X - Tiny;
- -- Note that X_Frac has the same sign as X, so if X_Frac is 0.5,
- -- then we know that we have a positive number (and hence a
- -- positive power of 2).
+ -- A special case, if the number we had was a power of two on the
+ -- positive side of zero, then we want to subtract half of what we
+ -- would have subtracted, since the exponent is going to be reduced.
- if X_Frac = 0.5 then
- return X - Gradual_Scaling (X_Exp - T'Machine_Mantissa - 1);
+ -- Note that X_Frac has the same sign as X so, if X_Frac is Invrad,
+ -- then we know that we had a power of two on the positive side.
- -- Otherwise the exponent is unchanged
+ elsif X_Frac = Invrad then
+ return X - Scaling (1.0, X_Exp - Mantissa - 1);
+
+ -- Otherwise the adjustment is unchanged
else
- return X - Gradual_Scaling (X_Exp - T'Machine_Mantissa);
+ return X - Scaling (1.0, X_Exp - Mantissa);
end if;
end if;
end Pred;
@@ -579,70 +602,97 @@ package body System.Fat_Gen is
-- Scaling --
-------------
- -- Return x * rad ** adjustment quickly, or quietly underflow to zero,
- -- or overflow naturally.
-
function Scaling (X : T; Adjustment : UI) return T is
+ pragma Assert (Mantissa <= 64);
+ -- This implementation handles only 80-bit IEEE Extended or smaller
+
+ package UST renames System.Unsigned_Types;
+ use type UST.Long_Long_Unsigned;
+
+ XX : T := T'Machine (X);
+
+ Rep : Float_Rep;
+ for Rep'Address use XX'Address;
+ -- Rep is a view of the input floating-point parameter
+
+ Exp : constant IEEE_Erange :=
+ Integer ((Rep (MSW) and Exp_Mask) / Exp_Factor) - IEEE_Ebias;
+ -- Mask/Shift X to only get bits from the exponent. Then convert biased
+ -- value to final value.
+
+ Minus : constant Boolean := (Rep (MSW) and Sign_Mask) /= 0;
+ -- Mask/Shift X to only get bit from the sign
+
+ Expi, Expf : IEEE_Erange;
+
begin
- if X = 0.0 or else Adjustment = 0 then
+ -- Check for zero, infinities, NaNs as well as no adjustment
+
+ if X = 0.0 or else Exp = IEEE_Emax + 1 or else Adjustment = 0 then
return X;
- end if;
- -- Nonzero x essentially, just multiply repeatedly by Rad ** (+-2**n)
+ -- Check for nonzero denormalized numbers
- declare
- Y : T := X;
- Ex : UI := Adjustment;
+ elsif Exp = IEEE_Emin - 1 then
+ -- Check for zero result to protect the subtraction below
- -- Y * Rad ** Ex is invariant
+ if Adjustment < -(Mantissa - 1) then
+ XX := 0.0;
+ return (if Minus then -XX else XX);
- begin
- if Ex < 0 then
- while Ex <= -Log_Power (Expbits'Last) loop
- Y := Y * R_Neg_Power (Expbits'Last);
- Ex := Ex + Log_Power (Expbits'Last);
- end loop;
+ -- Normalize by multiplying by Radix ** (Mantissa - 1)
- -- -64 < Ex <= 0
+ else
+ return Scaling (XX * RM1, Adjustment - (Mantissa - 1));
+ end if;
- for N in reverse Expbits'First .. Expbits'Last - 1 loop
- if Ex <= -Log_Power (N) then
- Y := Y * R_Neg_Power (N);
- Ex := Ex + Log_Power (N);
- end if;
+ -- Case of normalized numbers
- -- -Log_Power (N) < Ex <= 0
+ else
+ -- Check for overflow
- end loop;
+ if Adjustment > IEEE_Emax - Exp then
+ XX := 0.0;
+ return (if Minus then -1.0 / XX else 1.0 / XX);
+ pragma Annotate
+ (CodePeer, Intentional, "overflow check", "Infinity produced");
+ pragma Annotate
+ (CodePeer, Intentional, "divide by zero", "Infinity produced");
- -- Ex = 0
+ -- Check for underflow
- else
- -- Ex >= 0
+ elsif Adjustment < IEEE_Emin - Exp then
+ -- Check for gradual underflow
- while Ex >= Log_Power (Expbits'Last) loop
- Y := Y * R_Power (Expbits'Last);
- Ex := Ex - Log_Power (Expbits'Last);
- end loop;
+ if T'Denorm
+ and then Adjustment >= IEEE_Emin - (Mantissa - 1) - Exp
+ then
+ Expf := IEEE_Emin;
+ Expi := Exp + Adjustment - Expf;
- -- 0 <= Ex < 64
+ -- Case of zero result
- for N in reverse Expbits'First .. Expbits'Last - 1 loop
- if Ex >= Log_Power (N) then
- Y := Y * R_Power (N);
- Ex := Ex - Log_Power (N);
- end if;
+ else
+ XX := 0.0;
+ return (if Minus then -XX else XX);
+ end if;
- -- 0 <= Ex < Log_Power (N)
+ -- Case of normalized results
- end loop;
+ else
+ Expf := Exp + Adjustment;
+ Expi := 0;
+ end if;
- -- Ex = 0
+ Rep (MSW) := (Rep (MSW) and not Exp_Mask) +
+ Float_Word (IEEE_Ebias + Expf) * Exp_Factor;
+ if Expi < 0 then
+ XX := XX / T (UST.Long_Long_Unsigned (2) ** (-Expi));
end if;
- return Y;
- end;
+ return XX;
+ end if;
end Scaling;
----------
@@ -650,36 +700,27 @@ package body System.Fat_Gen is
----------
function Succ (X : T) return T is
+ Tiny : constant T;
+ pragma Import (Ada, Tiny);
+ for Tiny'Address use (if T'Size = 16 then Tiny16'Address
+ elsif T'Size = 32 then Tiny32'Address
+ elsif T'Size = 64 then Tiny64'Address
+ elsif Mantissa = 64 then Tiny80'Address
+ else raise Program_Error);
X_Frac : T;
X_Exp : UI;
- X1, X2 : T;
begin
-- Treat zero specially since it has a zero exponent
if X = 0.0 then
- X1 := 2.0 ** T'Machine_Emin;
+ return Tiny;
- -- Following loop generates smallest denormal
-
- loop
- X2 := T'Machine (X1 / 2.0);
- exit when X2 = 0.0;
- X1 := X2;
- end loop;
-
- return X1;
-
- -- Special treatment for largest positive number
+ -- Special treatment for largest positive number: raise Constraint_Error
elsif X = T'Last then
-
- -- If not generating infinities, we raise a constraint error
-
raise Constraint_Error with "Succ of largest positive number";
- -- Otherwise generate a positive infinity
-
-- For infinities, return unchanged
elsif X < T'First or else X > T'Last then
@@ -689,30 +730,35 @@ package body System.Fat_Gen is
pragma Annotate (CodePeer, Intentional, "dead code",
"Check float range.");
- -- Add to the given number a number equivalent to the value
- -- of its least significant bit. Given that the most significant bit
- -- represents a value of 1.0 * radix ** (exp - 1), the value we want
- -- is obtained by shifting this by (mantissa-1) bits to the right,
+ -- Add to the given number a number equivalent to the value of its
+ -- least significant bit. Given that the most significant bit
+ -- represents a value of 1.0 * Radix ** (Exp - 1), the value we want
+ -- is obtained by shifting this by (Mantissa-1) bits to the right,
-- i.e. decreasing the exponent by that amount.
else
Decompose (X, X_Frac, X_Exp);
- -- A special case, if the number we had was a negative power of two,
- -- then we want to add half of what we would otherwise add, since the
- -- exponent is going to be reduced.
+ -- For a denormalized number or a normalized number with the lowest
+ -- exponent, just add the Tiny.
+
+ if X_Exp <= T'Machine_Emin then
+ return X + Tiny;
- -- Note that X_Frac has the same sign as X, so if X_Frac is -0.5,
- -- then we know that we have a negative number (and hence a negative
- -- power of 2).
+ -- A special case, if the number we had was a power of two on the
+ -- negative side of zero, then we want to add half of what we would
+ -- have added, since the exponent is going to be reduced.
- if X_Frac = -0.5 then
- return X + Gradual_Scaling (X_Exp - T'Machine_Mantissa - 1);
+ -- Note that X_Frac has the same sign as X, so if X_Frac is -Invrad,
+ -- then we know that we had a power of two on the negative side.
- -- Otherwise the exponent is unchanged
+ elsif X_Frac = -Invrad then
+ return X + Scaling (1.0, X_Exp - Mantissa - 1);
+
+ -- Otherwise the adjustment is unchanged
else
- return X + Gradual_Scaling (X_Exp - T'Machine_Mantissa);
+ return X + Scaling (1.0, X_Exp - Mantissa);
end if;
end if;
end Succ;
@@ -725,7 +771,7 @@ package body System.Fat_Gen is
-- T'Machine (RM1 + N) - RM1
- -- where N >= 0.0 and RM1 = radix ** (mantissa - 1)
+ -- where N >= 0.0 and RM1 = Radix ** (Mantissa - 1)
-- This works provided that the intermediate result (RM1 + N) does not
-- have extra precision (which is why we call Machine). When we compute
@@ -742,19 +788,18 @@ package body System.Fat_Gen is
begin
Result := abs X;
- if Result >= Radix_To_M_Minus_1 then
+ if Result >= RM1 then
return T'Machine (X);
else
- Result :=
- T'Machine (Radix_To_M_Minus_1 + Result) - Radix_To_M_Minus_1;
+ Result := T'Machine (RM1 + Result) - RM1;
if Result > abs X then
Result := Result - 1.0;
end if;
if X > 0.0 then
- return Result;
+ return Result;
elsif X < 0.0 then
return -Result;
@@ -805,132 +850,37 @@ package body System.Fat_Gen is
-----------
function Valid (X : not null access T) return Boolean is
- IEEE_Emin : constant Integer := T'Machine_Emin - 1;
- IEEE_Emax : constant Integer := T'Machine_Emax - 1;
-
- IEEE_Bias : constant Integer := -(IEEE_Emin - 1);
-
- subtype IEEE_Exponent_Range is
- Integer range IEEE_Emin - 1 .. IEEE_Emax + 1;
-
- -- The implementation of this floating point attribute uses a
- -- representation type Float_Rep that allows direct access to the
- -- exponent and mantissa parts of a floating point number.
-
- -- The Float_Rep type is an array of Float_Word elements. This
- -- representation is chosen to make it possible to size the type based
- -- on a generic parameter. Since the array size is known at compile
- -- time, efficient code can still be generated. The size of Float_Word
- -- elements should be large enough to allow accessing the exponent in
- -- one read, but small enough so that all floating point object sizes
- -- are a multiple of the Float_Word'Size.
-
- -- The following conditions must be met for all possible instantiations
- -- of the attributes package:
-
- -- - T'Size is an integral multiple of Float_Word'Size
-
- -- - The exponent and sign are completely contained in a single
- -- component of Float_Rep, named Most_Significant_Word (MSW).
-
- -- - The sign occupies the most significant bit of the MSW and the
- -- exponent is in the following bits. Unused bits (if any) are in
- -- the least significant part.
-
- type Float_Word is mod 2**Positive'Min (System.Word_Size, 32);
- type Rep_Index is range 0 .. 7;
-
- Rep_Words : constant Positive :=
- (T'Size + Float_Word'Size - 1) / Float_Word'Size;
- Rep_Last : constant Rep_Index :=
- Rep_Index'Min
- (Rep_Index (Rep_Words - 1),
- (T'Mantissa + 16) / Float_Word'Size);
- -- Determine the number of Float_Words needed for representing the
- -- entire floating-point value. Do not take into account excessive
- -- padding, as occurs on IA-64 where 80 bits floats get padded to 128
- -- bits. In general, the exponent field cannot be larger than 15 bits,
- -- even for 128-bit floating-point types, so the final format size
- -- won't be larger than T'Mantissa + 16.
-
- type Float_Rep is
- array (Rep_Index range 0 .. Rep_Index (Rep_Words - 1)) of Float_Word;
-
- pragma Suppress_Initialization (Float_Rep);
- -- This pragma suppresses the generation of an initialization procedure
- -- for type Float_Rep when operating in Initialize/Normalize_Scalars
- -- mode. This is not just a matter of efficiency, but of functionality,
- -- since Valid has a pragma Inline_Always, which is not permitted if
- -- there are nested subprograms present.
-
- Most_Significant_Word : constant Rep_Index :=
- Rep_Last * Standard'Default_Bit_Order;
- -- Finding the location of the Exponent_Word is a bit tricky. In general
- -- we assume Word_Order = Bit_Order.
-
- Exponent_Factor : constant Float_Word :=
- 2**(Float_Word'Size - 1) /
- Float_Word (IEEE_Emax - IEEE_Emin + 3) *
- Boolean'Pos (Most_Significant_Word /= 2) +
- Boolean'Pos (Most_Significant_Word = 2);
- -- Factor that the extracted exponent needs to be divided by to be in
- -- range 0 .. IEEE_Emax - IEEE_Emin + 2. Special case: Exponent_Factor
- -- is 1 for x86/IA64 double extended (GCC adds unused bits to the type).
-
- Exponent_Mask : constant Float_Word :=
- Float_Word (IEEE_Emax - IEEE_Emin + 2) *
- Exponent_Factor;
- -- Value needed to mask out the exponent field. This assumes that the
- -- range IEEE_Emin - 1 .. IEEE_Emax + contains 2**N values, for some N
- -- in Natural.
-
- function To_Float is new Ada.Unchecked_Conversion (Float_Rep, T);
-
- type Float_Access is access all T;
+ type Access_T is access all T;
function To_Address is
- new Ada.Unchecked_Conversion (Float_Access, System.Address);
-
- XA : constant System.Address := To_Address (Float_Access (X));
+ new Ada.Unchecked_Conversion (Access_T, System.Address);
- R : Float_Rep;
- pragma Import (Ada, R);
- for R'Address use XA;
- -- R is a view of the input floating-point parameter. Note that we
- -- must avoid copying the actual bits of this parameter in float
- -- form (since it may be a signalling NaN).
+ Rep : Float_Rep;
+ for Rep'Address use To_Address (Access_T (X));
+ -- Rep is a view of the input floating-point parameter. Note that we
+ -- must avoid reading the actual bits of this parameter in float form
+ -- since it may be a signalling NaN.
- E : constant IEEE_Exponent_Range :=
- Integer ((R (Most_Significant_Word) and Exponent_Mask) /
- Exponent_Factor)
- - IEEE_Bias;
- -- Mask/Shift T to only get bits from the exponent. Then convert biased
- -- value to integer value.
-
- SR : Float_Rep;
- -- Float_Rep representation of significant of X.all
+ Exp : constant IEEE_Erange :=
+ Integer ((Rep (MSW) and Exp_Mask) / Exp_Factor) - IEEE_Ebias;
+ -- Mask/Shift X to only get bits from the exponent. Then convert biased
+ -- value to final value.
begin
- if T'Denorm then
-
- -- All denormalized numbers are valid, so the only invalid numbers
- -- are overflows and NaNs, both with exponent = Emax + 1.
+ if Exp = IEEE_Emax + 1 then
+ -- This is an infinity or a NaN, i.e. always invalid
- return E /= IEEE_Emax + 1;
+ return False;
- end if;
+ elsif Exp in IEEE_Emin .. IEEE_Emax then
+ -- This is a normalized number, i.e. always valid
- -- All denormalized numbers except 0.0 are invalid
+ return True;
- -- Set exponent of X to zero, so we end up with the significand, which
- -- definitely is a valid number and can be converted back to a float.
+ else pragma Assert (Exp = IEEE_Emin - 1);
+ -- This is a denormalized number, valid if T'Denorm is True or 0.0
- SR := R;
- SR (Most_Significant_Word) :=
- (SR (Most_Significant_Word)
- and not Exponent_Mask) + Float_Word (IEEE_Bias) * Exponent_Factor;
-
- return (E in IEEE_Emin .. IEEE_Emax) or else
- ((E = IEEE_Emin - 1) and then abs To_Float (SR) = 1.0);
+ return T'Denorm or else X.all = 0.0;
+ end if;
end Valid;
end System.Fat_Gen;
diff --git a/gcc/ada/libgnat/s-fatgen.ads b/gcc/ada/libgnat/s-fatgen.ads
index b84d23b..700cfdc 100644
--- a/gcc/ada/libgnat/s-fatgen.ads
+++ b/gcc/ada/libgnat/s-fatgen.ads
@@ -31,9 +31,8 @@
-- This generic package provides a target independent implementation of the
-- floating-point attributes that denote functions. The implementations here
--- are portable, but very slow. The runtime contains a set of instantiations
--- of this package for all predefined floating-point types, and these should
--- be replaced by efficient assembly language code where possible.
+-- should be portable and reasonably efficient. The runtime contains a set of
+-- instantiations of this package for all predefined floating-point types.
generic
type T is digits <>;
@@ -107,12 +106,12 @@ package System.Fat_Gen is
-- floating point register).
private
+ pragma Inline (Compose);
+ pragma Inline (Copy_Sign);
+ pragma Inline (Exponent);
+ pragma Inline (Fraction);
pragma Inline (Machine);
pragma Inline (Model);
-
- -- Note: previously the validity checking subprograms (Unaligned_Valid and
- -- Valid) were also inlined, but this was changed since there were some
- -- problems with this inlining in optimized mode, and in any case it seems
- -- better to avoid this inlining (space and robustness considerations).
+ pragma Inline (Valid);
end System.Fat_Gen;
diff --git a/gcc/ada/libgnat/s-finmas.adb b/gcc/ada/libgnat/s-finmas.adb
index 5a6583a..3e9ae58 100644
--- a/gcc/ada/libgnat/s-finmas.adb
+++ b/gcc/ada/libgnat/s-finmas.adb
@@ -119,20 +119,6 @@ package body System.Finalization_Masters is
Finalize_Address_Table.Remove (Obj);
end Delete_Finalize_Address_Unprotected;
- ------------
- -- Detach --
- ------------
-
- procedure Detach (N : not null FM_Node_Ptr) is
- begin
- Lock_Task.all;
- Detach_Unprotected (N);
- Unlock_Task.all;
-
- -- Note: No need to unlock in case of an exception because the above
- -- code can never raise one.
- end Detach;
-
------------------------
-- Detach_Unprotected --
------------------------
diff --git a/gcc/ada/libgnat/s-finmas.ads b/gcc/ada/libgnat/s-finmas.ads
index ae0276f..eb30ea1 100644
--- a/gcc/ada/libgnat/s-finmas.ads
+++ b/gcc/ada/libgnat/s-finmas.ads
@@ -86,10 +86,6 @@ package System.Finalization_Masters is
-- Destroy the relation pair object - Finalize_Address from the internal
-- hash table.
- procedure Detach (N : not null FM_Node_Ptr);
- -- Compiler interface, do not call from within the run-time. Remove a node
- -- from an arbitrary finalization master.
-
procedure Detach_Unprotected (N : not null FM_Node_Ptr);
-- Remove a node from an arbitrary finalization master
diff --git a/gcc/ada/libgnat/s-imgrea.adb b/gcc/ada/libgnat/s-imgrea.adb
index 03d30bd..2ec6a1a 100644
--- a/gcc/ada/libgnat/s-imgrea.adb
+++ b/gcc/ada/libgnat/s-imgrea.adb
@@ -29,9 +29,9 @@
-- --
------------------------------------------------------------------------------
-with System.Img_LLU; use System.Img_LLU;
-with System.Img_Uns; use System.Img_Uns;
-with System.Powten_Table; use System.Powten_Table;
+with System.Img_LLU; use System.Img_LLU;
+with System.Img_Uns; use System.Img_Uns;
+with System.Powten_LLF; use System.Powten_LLF;
with System.Float_Control;
package body System.Img_Real is
diff --git a/gcc/ada/libgnat/s-imguti.ads b/gcc/ada/libgnat/s-imguti.ads
index f980bb7..6e21c65 100644
--- a/gcc/ada/libgnat/s-imguti.ads
+++ b/gcc/ada/libgnat/s-imguti.ads
@@ -45,14 +45,17 @@ package System.Img_Util is
Exp : Natural);
-- Sets the image of Digs (1 .. NDigs), which is a string of decimal digits
-- preceded by either a minus sign or a space, i.e. the integer image of
- -- the value in units of delta of a decimal fixed point type with the given
- -- Scale, starting at S (P + 1), updating P to point to the last character
- -- stored, the caller promises that the buffer is large enough and no check
- -- is made for this. Constraint_Error will not necessarily be raised if the
- -- requirement is violated since it is perfectly valid to compile this unit
- -- with checks off. The Fore, Aft and Exp values can be set to any valid
- -- values for the case of use by Text_IO.Decimal_IO. Note that there is no
- -- leading space stored. The call may destroy the value in Digs, which is
- -- why Digs is in-out (this happens if rounding is required).
+ -- the value in units of delta if this is for a decimal fixed point type
+ -- with the given Scale, or the integer image of the value converted to an
+ -- implicit decimal fixed point type with the given Scale if this is for an
+ -- ordinary fixed point type, starting at S (P + 1), updating P to point to
+ -- the last character stored. The caller promises that the buffer is large
+ -- enough and therefore no check is made for it. Constraint_Error will not
+ -- necessarily be raised if the requirement is violated since it is valid
+ -- to compile this unit with checks off. The Fore, Aft and Exp values can
+ -- be set to any valid values for the case of use by Text_IO.Decimal_IO or
+ -- Text_IO.Fixed_IO. Note that there is no leading space stored. The call
+ -- may destroy the value in Digs, which is why Digs is in-out (this happens
+ -- if rounding is required).
end System.Img_Util;
diff --git a/gcc/ada/libgnat/s-objrea.adb b/gcc/ada/libgnat/s-objrea.adb
index d64e285..0cfa522 100644
--- a/gcc/ada/libgnat/s-objrea.adb
+++ b/gcc/ada/libgnat/s-objrea.adb
@@ -645,6 +645,9 @@ package body System.Object_Reader is
when EM_X86_64 =>
Res.Arch := x86_64;
+ when EM_ARM =>
+ Res.Arch := ARM;
+
when others =>
raise Format_Error with "unrecognized architecture";
end case;
@@ -2030,6 +2033,7 @@ package body System.Object_Reader is
| MIPS
| PPC
| SPARC
+ | ARM
=>
Address_32 := Read (S);
return uint64 (Address_32);
diff --git a/gcc/ada/libgnat/s-objrea.ads b/gcc/ada/libgnat/s-objrea.ads
index bd4fbd5..b3cfe13 100644
--- a/gcc/ada/libgnat/s-objrea.ads
+++ b/gcc/ada/libgnat/s-objrea.ads
@@ -117,9 +117,12 @@ package System.Object_Reader is
PPC,
-- 32-bit PowerPC
- PPC64);
+ PPC64,
-- 64-bit PowerPC
+ ARM);
+ -- 32-bit ARM
+
------------------
-- Target types --
------------------
diff --git a/gcc/ada/libgnat/s-powflt.ads b/gcc/ada/libgnat/s-powflt.ads
new file mode 100644
index 0000000..9d58967
--- /dev/null
+++ b/gcc/ada/libgnat/s-powflt.ads
@@ -0,0 +1,85 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT COMPILER COMPONENTS --
+-- --
+-- S Y S T E M . P O W T E N _ F L T --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2020, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package provides a powers of ten table used for real conversions
+
+package System.Powten_Flt is
+ pragma Pure;
+
+ Maxpow : constant := 38;
+ -- Largest power of ten representable with Float
+
+ Maxpow_Exact : constant := 10;
+ -- Largest power of ten exactly representable with Float. It is equal to
+ -- floor (M * log 2 / log 5), when M is the size of the mantissa (24).
+
+ Powten : constant array (0 .. Maxpow) of Float :=
+ (00 => 1.0E+00,
+ 01 => 1.0E+01,
+ 02 => 1.0E+02,
+ 03 => 1.0E+03,
+ 04 => 1.0E+04,
+ 05 => 1.0E+05,
+ 06 => 1.0E+06,
+ 07 => 1.0E+07,
+ 08 => 1.0E+08,
+ 09 => 1.0E+09,
+ 10 => 1.0E+10,
+ 11 => 1.0E+11,
+ 12 => 1.0E+12,
+ 13 => 1.0E+13,
+ 14 => 1.0E+14,
+ 15 => 1.0E+15,
+ 16 => 1.0E+16,
+ 17 => 1.0E+17,
+ 18 => 1.0E+18,
+ 19 => 1.0E+19,
+ 20 => 1.0E+20,
+ 21 => 1.0E+21,
+ 22 => 1.0E+22,
+ 23 => 1.0E+23,
+ 24 => 1.0E+24,
+ 25 => 1.0E+25,
+ 26 => 1.0E+26,
+ 27 => 1.0E+27,
+ 28 => 1.0E+28,
+ 29 => 1.0E+29,
+ 30 => 1.0E+30,
+ 31 => 1.0E+31,
+ 32 => 1.0E+32,
+ 33 => 1.0E+33,
+ 34 => 1.0E+34,
+ 35 => 1.0E+35,
+ 36 => 1.0E+36,
+ 37 => 1.0E+37,
+ 38 => 1.0E+38);
+
+end System.Powten_Flt;
diff --git a/gcc/ada/libgnat/s-powlfl.ads b/gcc/ada/libgnat/s-powlfl.ads
new file mode 100644
index 0000000..d191eff
--- /dev/null
+++ b/gcc/ada/libgnat/s-powlfl.ads
@@ -0,0 +1,355 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT COMPILER COMPONENTS --
+-- --
+-- S Y S T E M . P O W T E N _ L F L T --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2020, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package provides a powers of ten table used for real conversions
+
+package System.Powten_LFlt is
+ pragma Pure;
+
+ Maxpow : constant := 308;
+ -- Largest power of ten representable with Long_Float
+
+ Maxpow_Exact : constant := 22;
+ -- Largest power of ten exactly representable with Long_Float. It is equal
+ -- to floor (M * log 2 / log 5), when M is the size of the mantissa (53).
+
+ Powten : constant array (0 .. Maxpow) of Long_Float :=
+ (00 => 1.0E+00,
+ 01 => 1.0E+01,
+ 02 => 1.0E+02,
+ 03 => 1.0E+03,
+ 04 => 1.0E+04,
+ 05 => 1.0E+05,
+ 06 => 1.0E+06,
+ 07 => 1.0E+07,
+ 08 => 1.0E+08,
+ 09 => 1.0E+09,
+ 10 => 1.0E+10,
+ 11 => 1.0E+11,
+ 12 => 1.0E+12,
+ 13 => 1.0E+13,
+ 14 => 1.0E+14,
+ 15 => 1.0E+15,
+ 16 => 1.0E+16,
+ 17 => 1.0E+17,
+ 18 => 1.0E+18,
+ 19 => 1.0E+19,
+ 20 => 1.0E+20,
+ 21 => 1.0E+21,
+ 22 => 1.0E+22,
+ 23 => 1.0E+23,
+ 24 => 1.0E+24,
+ 25 => 1.0E+25,
+ 26 => 1.0E+26,
+ 27 => 1.0E+27,
+ 28 => 1.0E+28,
+ 29 => 1.0E+29,
+ 30 => 1.0E+30,
+ 31 => 1.0E+31,
+ 32 => 1.0E+32,
+ 33 => 1.0E+33,
+ 34 => 1.0E+34,
+ 35 => 1.0E+35,
+ 36 => 1.0E+36,
+ 37 => 1.0E+37,
+ 38 => 1.0E+38,
+ 39 => 1.0E+39,
+ 40 => 1.0E+40,
+ 41 => 1.0E+41,
+ 42 => 1.0E+42,
+ 43 => 1.0E+43,
+ 44 => 1.0E+44,
+ 45 => 1.0E+45,
+ 46 => 1.0E+46,
+ 47 => 1.0E+47,
+ 48 => 1.0E+48,
+ 49 => 1.0E+49,
+ 50 => 1.0E+50,
+ 51 => 1.0E+51,
+ 52 => 1.0E+52,
+ 53 => 1.0E+53,
+ 54 => 1.0E+54,
+ 55 => 1.0E+55,
+ 56 => 1.0E+56,
+ 57 => 1.0E+57,
+ 58 => 1.0E+58,
+ 59 => 1.0E+59,
+ 60 => 1.0E+60,
+ 61 => 1.0E+61,
+ 62 => 1.0E+62,
+ 63 => 1.0E+63,
+ 64 => 1.0E+64,
+ 65 => 1.0E+65,
+ 66 => 1.0E+66,
+ 67 => 1.0E+67,
+ 68 => 1.0E+68,
+ 69 => 1.0E+69,
+ 70 => 1.0E+70,
+ 71 => 1.0E+71,
+ 72 => 1.0E+72,
+ 73 => 1.0E+73,
+ 74 => 1.0E+74,
+ 75 => 1.0E+75,
+ 76 => 1.0E+76,
+ 77 => 1.0E+77,
+ 78 => 1.0E+78,
+ 79 => 1.0E+79,
+ 80 => 1.0E+80,
+ 81 => 1.0E+81,
+ 82 => 1.0E+82,
+ 83 => 1.0E+83,
+ 84 => 1.0E+84,
+ 85 => 1.0E+85,
+ 86 => 1.0E+86,
+ 87 => 1.0E+87,
+ 88 => 1.0E+88,
+ 89 => 1.0E+89,
+ 90 => 1.0E+90,
+ 91 => 1.0E+91,
+ 92 => 1.0E+92,
+ 93 => 1.0E+93,
+ 94 => 1.0E+94,
+ 95 => 1.0E+95,
+ 96 => 1.0E+96,
+ 97 => 1.0E+97,
+ 98 => 1.0E+98,
+ 99 => 1.0E+99,
+ 100 => 1.0E+100,
+ 101 => 1.0E+101,
+ 102 => 1.0E+102,
+ 103 => 1.0E+103,
+ 104 => 1.0E+104,
+ 105 => 1.0E+105,
+ 106 => 1.0E+106,
+ 107 => 1.0E+107,
+ 108 => 1.0E+108,
+ 109 => 1.0E+109,
+ 110 => 1.0E+110,
+ 111 => 1.0E+111,
+ 112 => 1.0E+112,
+ 113 => 1.0E+113,
+ 114 => 1.0E+114,
+ 115 => 1.0E+115,
+ 116 => 1.0E+116,
+ 117 => 1.0E+117,
+ 118 => 1.0E+118,
+ 119 => 1.0E+119,
+ 120 => 1.0E+120,
+ 121 => 1.0E+121,
+ 122 => 1.0E+122,
+ 123 => 1.0E+123,
+ 124 => 1.0E+124,
+ 125 => 1.0E+125,
+ 126 => 1.0E+126,
+ 127 => 1.0E+127,
+ 128 => 1.0E+128,
+ 129 => 1.0E+129,
+ 130 => 1.0E+130,
+ 131 => 1.0E+131,
+ 132 => 1.0E+132,
+ 133 => 1.0E+133,
+ 134 => 1.0E+134,
+ 135 => 1.0E+135,
+ 136 => 1.0E+136,
+ 137 => 1.0E+137,
+ 138 => 1.0E+138,
+ 139 => 1.0E+139,
+ 140 => 1.0E+140,
+ 141 => 1.0E+141,
+ 142 => 1.0E+142,
+ 143 => 1.0E+143,
+ 144 => 1.0E+144,
+ 145 => 1.0E+145,
+ 146 => 1.0E+146,
+ 147 => 1.0E+147,
+ 148 => 1.0E+148,
+ 149 => 1.0E+149,
+ 150 => 1.0E+150,
+ 151 => 1.0E+151,
+ 152 => 1.0E+152,
+ 153 => 1.0E+153,
+ 154 => 1.0E+154,
+ 155 => 1.0E+155,
+ 156 => 1.0E+156,
+ 157 => 1.0E+157,
+ 158 => 1.0E+158,
+ 159 => 1.0E+159,
+ 160 => 1.0E+160,
+ 161 => 1.0E+161,
+ 162 => 1.0E+162,
+ 163 => 1.0E+163,
+ 164 => 1.0E+164,
+ 165 => 1.0E+165,
+ 166 => 1.0E+166,
+ 167 => 1.0E+167,
+ 168 => 1.0E+168,
+ 169 => 1.0E+169,
+ 170 => 1.0E+170,
+ 171 => 1.0E+171,
+ 172 => 1.0E+172,
+ 173 => 1.0E+173,
+ 174 => 1.0E+174,
+ 175 => 1.0E+175,
+ 176 => 1.0E+176,
+ 177 => 1.0E+177,
+ 178 => 1.0E+178,
+ 179 => 1.0E+179,
+ 180 => 1.0E+180,
+ 181 => 1.0E+181,
+ 182 => 1.0E+182,
+ 183 => 1.0E+183,
+ 184 => 1.0E+184,
+ 185 => 1.0E+185,
+ 186 => 1.0E+186,
+ 187 => 1.0E+187,
+ 188 => 1.0E+188,
+ 189 => 1.0E+189,
+ 190 => 1.0E+190,
+ 191 => 1.0E+191,
+ 192 => 1.0E+192,
+ 193 => 1.0E+193,
+ 194 => 1.0E+194,
+ 195 => 1.0E+195,
+ 196 => 1.0E+196,
+ 197 => 1.0E+197,
+ 198 => 1.0E+198,
+ 199 => 1.0E+199,
+ 200 => 1.0E+200,
+ 201 => 1.0E+201,
+ 202 => 1.0E+202,
+ 203 => 1.0E+203,
+ 204 => 1.0E+204,
+ 205 => 1.0E+205,
+ 206 => 1.0E+206,
+ 207 => 1.0E+207,
+ 208 => 1.0E+208,
+ 209 => 1.0E+209,
+ 210 => 1.0E+210,
+ 211 => 1.0E+211,
+ 212 => 1.0E+212,
+ 213 => 1.0E+213,
+ 214 => 1.0E+214,
+ 215 => 1.0E+215,
+ 216 => 1.0E+216,
+ 217 => 1.0E+217,
+ 218 => 1.0E+218,
+ 219 => 1.0E+219,
+ 220 => 1.0E+220,
+ 221 => 1.0E+221,
+ 222 => 1.0E+222,
+ 223 => 1.0E+223,
+ 224 => 1.0E+224,
+ 225 => 1.0E+225,
+ 226 => 1.0E+226,
+ 227 => 1.0E+227,
+ 228 => 1.0E+228,
+ 229 => 1.0E+229,
+ 230 => 1.0E+230,
+ 231 => 1.0E+231,
+ 232 => 1.0E+232,
+ 233 => 1.0E+233,
+ 234 => 1.0E+234,
+ 235 => 1.0E+235,
+ 236 => 1.0E+236,
+ 237 => 1.0E+237,
+ 238 => 1.0E+238,
+ 239 => 1.0E+239,
+ 240 => 1.0E+240,
+ 241 => 1.0E+241,
+ 242 => 1.0E+242,
+ 243 => 1.0E+243,
+ 244 => 1.0E+244,
+ 245 => 1.0E+245,
+ 246 => 1.0E+246,
+ 247 => 1.0E+247,
+ 248 => 1.0E+248,
+ 249 => 1.0E+249,
+ 250 => 1.0E+250,
+ 251 => 1.0E+251,
+ 252 => 1.0E+252,
+ 253 => 1.0E+253,
+ 254 => 1.0E+254,
+ 255 => 1.0E+255,
+ 256 => 1.0E+256,
+ 257 => 1.0E+257,
+ 258 => 1.0E+258,
+ 259 => 1.0E+259,
+ 260 => 1.0E+260,
+ 261 => 1.0E+261,
+ 262 => 1.0E+262,
+ 263 => 1.0E+263,
+ 264 => 1.0E+264,
+ 265 => 1.0E+265,
+ 266 => 1.0E+266,
+ 267 => 1.0E+267,
+ 268 => 1.0E+268,
+ 269 => 1.0E+269,
+ 270 => 1.0E+270,
+ 271 => 1.0E+271,
+ 272 => 1.0E+272,
+ 273 => 1.0E+273,
+ 274 => 1.0E+274,
+ 275 => 1.0E+275,
+ 276 => 1.0E+276,
+ 277 => 1.0E+277,
+ 278 => 1.0E+278,
+ 279 => 1.0E+279,
+ 280 => 1.0E+280,
+ 281 => 1.0E+281,
+ 282 => 1.0E+282,
+ 283 => 1.0E+283,
+ 284 => 1.0E+284,
+ 285 => 1.0E+285,
+ 286 => 1.0E+286,
+ 287 => 1.0E+287,
+ 288 => 1.0E+288,
+ 289 => 1.0E+289,
+ 290 => 1.0E+290,
+ 291 => 1.0E+291,
+ 292 => 1.0E+292,
+ 293 => 1.0E+293,
+ 294 => 1.0E+294,
+ 295 => 1.0E+295,
+ 296 => 1.0E+296,
+ 297 => 1.0E+297,
+ 298 => 1.0E+298,
+ 299 => 1.0E+299,
+ 300 => 1.0E+300,
+ 301 => 1.0E+301,
+ 302 => 1.0E+302,
+ 303 => 1.0E+303,
+ 304 => 1.0E+304,
+ 305 => 1.0E+305,
+ 306 => 1.0E+306,
+ 307 => 1.0E+307,
+ 308 => 1.0E+308);
+
+end System.Powten_LFlt;
diff --git a/gcc/ada/libgnat/s-powtab.ads b/gcc/ada/libgnat/s-powllf.ads
index ef8d74a..c5c42a1 100644
--- a/gcc/ada/libgnat/s-powtab.ads
+++ b/gcc/ada/libgnat/s-powllf.ads
@@ -2,7 +2,7 @@
-- --
-- GNAT COMPILER COMPONENTS --
-- --
--- S Y S T E M . P O W T E N _ T A B L E --
+-- S Y S T E M . P O W T E N _ L L F --
-- --
-- S p e c --
-- --
@@ -31,14 +31,14 @@
-- This package provides a powers of ten table used for real conversions
-package System.Powten_Table is
+package System.Powten_LLF is
pragma Pure;
Maxpow : constant := 22;
-- The number of entries in this table is chosen to include powers of ten
- -- that are exactly representable with long_long_float. Assuming that on
- -- all targets we have 53 bits of mantissa for the type, the upper bound is
- -- given by 53/(log 5). If the scaling factor for a string is greater than
+ -- that are exactly representable with Long_Long_Float. Assuming that on
+ -- all targets we have 53 bits of mantissa for the type, the upper bound
+ -- is given by 53 * log 2 / log 5. If the scaling factor is greater than
-- Maxpow, it can be obtained by several multiplications, which is less
-- efficient than with a bigger table, but avoids anomalies at end points.
@@ -67,4 +67,4 @@ package System.Powten_Table is
21 => 1.0E+21,
22 => 1.0E+22);
-end System.Powten_Table;
+end System.Powten_LLF;
diff --git a/gcc/ada/libgnat/s-fatsfl.ads b/gcc/ada/libgnat/s-valflt.ads
index 45b13e1..5806d58 100644
--- a/gcc/ada/libgnat/s-fatsfl.ads
+++ b/gcc/ada/libgnat/s-valflt.ads
@@ -2,11 +2,11 @@
-- --
-- GNAT COMPILER COMPONENTS --
-- --
--- S Y S T E M . F A T _ S F L T --
+-- S Y S T E M . V A L _ F L T --
-- --
-- S p e c --
-- --
--- Copyright (C) 1992-2020, Free Software Foundation, Inc. --
+-- Copyright (C) 2020, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
@@ -29,19 +29,29 @@
-- --
------------------------------------------------------------------------------
--- This package contains an instantiation of the floating-point attribute
--- runtime routines for the type Short_Float.
+-- This package contains routines for scanning real values for floating point
+-- type Float, for use in Text_IO.Float_IO and the Value attribute.
-with System.Fat_Gen;
+with Interfaces;
+with System.Powten_Flt;
+with System.Val_Real;
-package System.Fat_SFlt is
- pragma Pure;
+package System.Val_Flt is
+ pragma Preelaborate;
- -- Note the only entity from this package that is accessed by Rtsfind
- -- is the name of the package instantiation. Entities within this package
- -- (i.e. the individual floating-point attribute routines) are accessed
- -- by name using selected notation.
+ package Impl is new Val_Real
+ (Float,
+ Interfaces.Unsigned_32,
+ System.Powten_Flt.Maxpow,
+ System.Powten_Flt.Powten'Address);
- package Attr_Short_Float is new System.Fat_Gen (Short_Float);
+ function Scan_Float
+ (Str : String;
+ Ptr : not null access Integer;
+ Max : Integer) return Float
+ renames Impl.Scan_Real;
-end System.Fat_SFlt;
+ function Value_Float (Str : String) return Float
+ renames Impl.Value_Real;
+
+end System.Val_Flt;
diff --git a/gcc/ada/libgnat/s-vallfl.ads b/gcc/ada/libgnat/s-vallfl.ads
new file mode 100644
index 0000000..c612f75
--- /dev/null
+++ b/gcc/ada/libgnat/s-vallfl.ads
@@ -0,0 +1,57 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT COMPILER COMPONENTS --
+-- --
+-- S Y S T E M . V A L _ L F L T --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2020, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package contains routines for scanning real values for floating point
+-- type Long_Float, for use in Text_IO.Float_IO and the Value attribute.
+
+with Interfaces;
+with System.Powten_LFlt;
+with System.Val_Real;
+
+package System.Val_LFlt is
+ pragma Preelaborate;
+
+ package Impl is new Val_Real
+ (Long_Float,
+ Interfaces.Unsigned_64,
+ System.Powten_LFlt.Maxpow,
+ System.Powten_LFlt.Powten'Address);
+
+ function Scan_Long_Float
+ (Str : String;
+ Ptr : not null access Integer;
+ Max : Integer) return Long_Float
+ renames Impl.Scan_Real;
+
+ function Value_Long_Float (Str : String) return Long_Float
+ renames Impl.Value_Real;
+
+end System.Val_LFlt;
diff --git a/gcc/ada/libgnat/s-valllf.ads b/gcc/ada/libgnat/s-valllf.ads
new file mode 100644
index 0000000..46a311b
--- /dev/null
+++ b/gcc/ada/libgnat/s-valllf.ads
@@ -0,0 +1,57 @@
+------------------------------------------------------------------------------
+-- --
+-- GNAT COMPILER COMPONENTS --
+-- --
+-- S Y S T E M . V A L _ L L F --
+-- --
+-- S p e c --
+-- --
+-- Copyright (C) 2020, Free Software Foundation, Inc. --
+-- --
+-- GNAT is free software; you can redistribute it and/or modify it under --
+-- terms of the GNU General Public License as published by the Free Soft- --
+-- ware Foundation; either version 3, or (at your option) any later ver- --
+-- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
+-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
+-- or FITNESS FOR A PARTICULAR PURPOSE. --
+-- --
+-- As a special exception under Section 7 of GPL version 3, you are granted --
+-- additional permissions described in the GCC Runtime Library Exception, --
+-- version 3.1, as published by the Free Software Foundation. --
+-- --
+-- You should have received a copy of the GNU General Public License and --
+-- a copy of the GCC Runtime Library Exception along with this program; --
+-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
+-- <http://www.gnu.org/licenses/>. --
+-- --
+-- GNAT was originally developed by the GNAT team at New York University. --
+-- Extensive contributions were provided by Ada Core Technologies Inc. --
+-- --
+------------------------------------------------------------------------------
+
+-- This package contains routines for scanning real values for floating point
+-- type Long_Long_Float, for use in Text_IO.Float_IO and the Value attribute.
+
+with Interfaces;
+with System.Powten_LLF;
+with System.Val_Real;
+
+package System.Val_LLF is
+ pragma Preelaborate;
+
+ package Impl is new Val_Real
+ (Long_Long_Float,
+ Interfaces.Unsigned_64,
+ System.Powten_LLF.Maxpow,
+ System.Powten_LLF.Powten'Address);
+
+ function Scan_Long_Long_Float
+ (Str : String;
+ Ptr : not null access Integer;
+ Max : Integer) return Long_Long_Float
+ renames Impl.Scan_Real;
+
+ function Value_Long_Long_Float (Str : String) return Long_Long_Float
+ renames Impl.Value_Real;
+
+end System.Val_LLF;
diff --git a/gcc/ada/libgnat/s-valrea.adb b/gcc/ada/libgnat/s-valrea.adb
index 693b261..0ac3846 100644
--- a/gcc/ada/libgnat/s-valrea.adb
+++ b/gcc/ada/libgnat/s-valrea.adb
@@ -34,16 +34,55 @@ with System.Unsigned_Types; use System.Unsigned_Types;
with System.Val_Util; use System.Val_Util;
with System.Value_R;
+pragma Warnings (Off, "non-static constant in preelaborated unit");
+-- Every constant is static given our instantiation model
+
package body System.Val_Real is
- package Impl is new Value_R (Long_Long_Unsigned, Floating => True);
+ pragma Assert (Num'Machine_Mantissa <= Uns'Size);
+ -- We need an unsigned type large enough to represent the mantissa
+
+ Need_Extra : constant Boolean := Num'Machine_Mantissa > Uns'Size - 4;
+ -- If the mantissa of the floating-point type is almost as large as the
+ -- unsigned type, we do not have enough space for an extra digit in the
+ -- unsigned type so we handle the extra digit separately, at the cost of
+ -- a potential roundoff error.
+
+ Precision_Limit : constant Uns :=
+ (if Need_Extra then 2**Num'Machine_Mantissa - 1 else 2**Uns'Size - 1);
+ -- If we handle the extra digit separately, we use the precision of the
+ -- floating-point type so that the conversion is exact.
+
+ package Impl is new Value_R (Uns, Precision_Limit, Round => Need_Extra);
+
+ subtype Base_T is Unsigned range 2 .. 16;
+
+ -- The following tables compute the maximum exponent of the base that can
+ -- fit in the given floating-point format, that is to say the element at
+ -- index N is the largest K such that N**K <= Num'Last.
+
+ Maxexp32 : constant array (Base_T) of Positive :=
+ (2 => 127, 3 => 80, 4 => 63, 5 => 55, 6 => 49,
+ 7 => 45, 8 => 42, 9 => 40, 10 => 38, 11 => 37,
+ 12 => 35, 13 => 34, 14 => 33, 15 => 32, 16 => 31);
+
+ Maxexp64 : constant array (Base_T) of Positive :=
+ (2 => 1023, 3 => 646, 4 => 511, 5 => 441, 6 => 396,
+ 7 => 364, 8 => 341, 9 => 323, 10 => 308, 11 => 296,
+ 12 => 285, 13 => 276, 14 => 268, 15 => 262, 16 => 255);
+
+ Maxexp80 : constant array (Base_T) of Positive :=
+ (2 => 16383, 3 => 10337, 4 => 8191, 5 => 7056, 6 => 6338,
+ 7 => 5836, 8 => 5461, 9 => 5168, 10 => 4932, 11 => 4736,
+ 12 => 4570, 13 => 4427, 14 => 4303, 15 => 4193, 16 => 4095);
function Integer_to_Real
(Str : String;
- Val : Long_Long_Unsigned;
+ Val : Uns;
Base : Unsigned;
Scale : Integer;
- Minus : Boolean) return Long_Long_Float;
+ Extra : Unsigned;
+ Minus : Boolean) return Num;
-- Convert the real value from integer to real representation
---------------------
@@ -52,26 +91,133 @@ package body System.Val_Real is
function Integer_to_Real
(Str : String;
- Val : Long_Long_Unsigned;
+ Val : Uns;
Base : Unsigned;
Scale : Integer;
- Minus : Boolean) return Long_Long_Float
+ Extra : Unsigned;
+ Minus : Boolean) return Num
is
+ pragma Assert (Base in 2 .. 16);
+
+ pragma Assert (Num'Machine_Radix = 2);
+
pragma Unsuppress (Range_Check);
- R_Val : Long_Long_Float;
+ Maxexp : constant Positive :=
+ (if Num'Size = 32 then Maxexp32 (Base)
+ elsif Num'Size = 64 then Maxexp64 (Base)
+ elsif Num'Machine_Mantissa = 64 then Maxexp80 (Base)
+ else raise Program_Error);
+ -- Maximum exponent of the base that can fit in Num
+
+ B : constant Num := Num (Base);
+
+ R_Val : Num;
+ S : Integer := Scale;
begin
-- We call the floating-point processor reset routine so we can be sure
- -- that the processor is properly set for conversions. This is notably
+ -- that the x87 FPU is properly set for conversions. This is especially
-- needed on Windows, where calls to the operating system randomly reset
-- the processor into 64-bit mode.
- System.Float_Control.Reset;
+ if Num'Machine_Mantissa = 64 then
+ System.Float_Control.Reset;
+ end if;
+
+ -- Do the conversion
+
+ R_Val := Num (Val);
+
+ -- Take into account the extra digit, if need be. In this case, the
+ -- three operands are exact, so using an FMA would be ideal.
+
+ if Need_Extra and then Extra > 0 then
+ R_Val := R_Val * B + Num (Extra);
+ S := S - 1;
+ end if;
-- Compute the final value
- R_Val := Long_Long_Float (Val) * Long_Long_Float (Base) ** Scale;
+ if R_Val /= 0.0 and then S /= 0 then
+ case Base is
+ -- If the base is a power of two, we use the efficient Scaling
+ -- attribute with an overflow check, if it is not 2, to catch
+ -- ludicrous exponents that would result in an infinity or zero.
+
+ when 2 =>
+ R_Val := Num'Scaling (R_Val, S);
+
+ when 4 =>
+ if Integer'First / 2 <= S and then S <= Integer'Last / 2 then
+ S := S * 2;
+ end if;
+
+ R_Val := Num'Scaling (R_Val, S);
+
+ when 8 =>
+ if Integer'First / 3 <= S and then S <= Integer'Last / 3 then
+ S := S * 3;
+ end if;
+
+ R_Val := Num'Scaling (R_Val, S);
+
+ when 16 =>
+ if Integer'First / 4 <= S and then S <= Integer'Last / 4 then
+ S := S * 4;
+ end if;
+
+ R_Val := Num'Scaling (R_Val, S);
+
+ -- If the base is 10, we use a table of powers for accuracy's sake
+
+ when 10 =>
+ declare
+ Powten : constant array (0 .. Maxpow) of Num;
+ pragma Import (Ada, Powten);
+ for Powten'Address use Powten_Address;
+
+ begin
+ if S > 0 then
+ while S > Maxpow loop
+ R_Val := R_Val * Powten (Maxpow);
+ S := S - Maxpow;
+ end loop;
+
+ R_Val := R_Val * Powten (S);
+
+ else
+ while S < -Maxpow loop
+ R_Val := R_Val / Powten (Maxpow);
+ S := S + Maxpow;
+ end loop;
+
+ R_Val := R_Val / Powten (-S);
+ end if;
+ end;
+
+ -- Implementation for other bases with exponentiation
+
+ -- When the exponent is positive, we can do the computation
+ -- directly because, if the exponentiation overflows, then
+ -- the final value overflows as well. But when the exponent
+ -- is negative, we may need to do it in two steps to avoid
+ -- an artificial underflow.
+
+ when others =>
+ if S > 0 then
+ R_Val := R_Val * B ** S;
+
+ else
+ if S < -Maxexp then
+ R_Val := R_Val / B ** Maxexp;
+ S := S + Maxexp;
+ end if;
+
+ R_Val := R_Val / B ** (-S);
+ end if;
+ end case;
+ end if;
-- Finally deal with initial minus sign, note that this processing is
-- done even if Uval is zero, so that -0.0 is correctly interpreted.
@@ -87,38 +233,37 @@ package body System.Val_Real is
---------------
function Scan_Real
- (Str : String;
- Ptr : not null access Integer;
- Max : Integer)
- return Long_Long_Float
+ (Str : String;
+ Ptr : not null access Integer;
+ Max : Integer) return Num
is
Base : Unsigned;
Scale : Integer;
Extra : Unsigned;
Minus : Boolean;
- Val : Long_Long_Unsigned;
+ Val : Uns;
begin
Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, Scale, Extra, Minus);
- return Integer_to_Real (Str, Val, Base, Scale, Minus);
+ return Integer_to_Real (Str, Val, Base, Scale, Extra, Minus);
end Scan_Real;
----------------
-- Value_Real --
----------------
- function Value_Real (Str : String) return Long_Long_Float is
+ function Value_Real (Str : String) return Num is
Base : Unsigned;
Scale : Integer;
Extra : Unsigned;
Minus : Boolean;
- Val : Long_Long_Unsigned;
+ Val : Uns;
begin
Val := Impl.Value_Raw_Real (Str, Base, Scale, Extra, Minus);
- return Integer_to_Real (Str, Val, Base, Scale, Minus);
+ return Integer_to_Real (Str, Val, Base, Scale, Extra, Minus);
end Value_Real;
end System.Val_Real;
diff --git a/gcc/ada/libgnat/s-valrea.ads b/gcc/ada/libgnat/s-valrea.ads
index cb5374c..d6ade80 100644
--- a/gcc/ada/libgnat/s-valrea.ads
+++ b/gcc/ada/libgnat/s-valrea.ads
@@ -29,13 +29,26 @@
-- --
------------------------------------------------------------------------------
+-- This package contains routines for scanning real values for use in
+-- Text_IO.Float_IO and the Value attribute.
+
+generic
+
+ type Num is digits <>;
+
+ type Uns is mod <>;
+
+ Maxpow : Positive;
+
+ Powten_Address : System.Address;
+
package System.Val_Real is
pragma Preelaborate;
function Scan_Real
(Str : String;
Ptr : not null access Integer;
- Max : Integer) return Long_Long_Float;
+ Max : Integer) return Num;
-- This function scans the string starting at Str (Ptr.all) for a valid
-- real literal according to the syntax described in (RM 3.5(43)). The
-- substring scanned extends no further than Str (Max). There are three
@@ -65,10 +78,10 @@ package System.Val_Real is
-- If this occurs Program_Error is raised with a message noting that this
-- case is not supported. Most such cases are eliminated by the caller.
- function Value_Real (Str : String) return Long_Long_Float;
+ function Value_Real (Str : String) return Num;
-- Used in computing X'Value (Str) where X is a floating-point type or an
-- ordinary fixed-point type. Str is the string argument of the attribute.
-- Constraint_Error is raised if the string is malformed, or if the value
- -- out of range of Long_Long_Float.
+ -- out of range of Num.
end System.Val_Real;
diff --git a/gcc/ada/libgnat/s-valued.adb b/gcc/ada/libgnat/s-valued.adb
index 5fa8a99..8930752 100644
--- a/gcc/ada/libgnat/s-valued.adb
+++ b/gcc/ada/libgnat/s-valued.adb
@@ -35,7 +35,11 @@ with System.Value_R;
package body System.Value_D is
- package Impl is new Value_R (Uns, Floating => False);
+ pragma Assert (Int'Size <= Uns'Size);
+ -- We need an unsigned type large enough to represent the mantissa
+
+ package Impl is new Value_R (Uns, 2**(Int'Size - 1), Round => False);
+ -- We do not use the Extra digit for decimal fixed-point types
function Integer_to_Decimal
(Str : String;
@@ -228,6 +232,7 @@ package body System.Value_D is
Base : Unsigned;
ScaleB : Integer;
Extra : Unsigned;
+ pragma Unreferenced (Extra);
Minus : Boolean;
Val : Uns;
@@ -245,6 +250,7 @@ package body System.Value_D is
Base : Unsigned;
ScaleB : Integer;
Extra : Unsigned;
+ pragma Unreferenced (Extra);
Minus : Boolean;
Val : Uns;
diff --git a/gcc/ada/libgnat/s-valuef.adb b/gcc/ada/libgnat/s-valuef.adb
index 9a54cf3..d13111a 100644
--- a/gcc/ada/libgnat/s-valuef.adb
+++ b/gcc/ada/libgnat/s-valuef.adb
@@ -43,7 +43,11 @@ package body System.Value_F is
-- supported values for the base of the literal. Given that the largest
-- supported base is 16, this gives a limit of 2**(Int'Size - 5).
- package Impl is new Value_R (Uns, Floating => False);
+ pragma Assert (Int'Size <= Uns'Size);
+ -- We need an unsigned type large enough to represent the mantissa
+
+ package Impl is new Value_R (Uns, 2**(Int'Size - 1), Round => True);
+ -- We use the Extra digit for ordinary fixed-point types
function Integer_To_Fixed
(Str : String;
diff --git a/gcc/ada/libgnat/s-valuer.adb b/gcc/ada/libgnat/s-valuer.adb
index 06d7adc..9e4de3e 100644
--- a/gcc/ada/libgnat/s-valuer.adb
+++ b/gcc/ada/libgnat/s-valuer.adb
@@ -33,13 +33,6 @@ with System.Val_Util; use System.Val_Util;
package body System.Value_R is
- F_Limit : constant Uns := 2 ** (Long_Long_Float'Machine_Mantissa - 1);
- I_Limit : constant Uns := 2 ** (Uns'Size - 1);
- -- Absolute value of largest representable signed integer
-
- Precision_Limit : constant Uns := (if Floating then F_Limit else I_Limit);
- -- Limit beyond which additional digits are dropped
-
subtype Char_As_Digit is Unsigned range 0 .. 17;
subtype Valid_Digit is Char_As_Digit range 0 .. 15;
E_Digit : constant Char_As_Digit := 14;
@@ -49,6 +42,14 @@ package body System.Value_R is
function As_Digit (C : Character) return Char_As_Digit;
-- Given a character return the digit it represents
+ procedure Round_Extra
+ (Digit : Char_As_Digit;
+ Value : in out Uns;
+ Scale : in out Integer;
+ Extra : in out Char_As_Digit;
+ Base : Unsigned);
+ -- Round the triplet (Value, Scale, Extra) according to Digit in Base
+
procedure Scan_Decimal_Digits
(Str : String;
Index : in out Integer;
@@ -116,6 +117,45 @@ package body System.Value_R is
end case;
end As_Digit;
+ -----------------
+ -- Round_Extra --
+ -----------------
+
+ procedure Round_Extra
+ (Digit : Char_As_Digit;
+ Value : in out Uns;
+ Scale : in out Integer;
+ Extra : in out Char_As_Digit;
+ Base : Unsigned)
+ is
+ B : constant Uns := Uns (Base);
+
+ begin
+ if Digit >= Base / 2 then
+
+ -- If Extra is maximum, round Value
+
+ if Extra = Base - 1 then
+
+ -- If Value is maximum, scale it up
+
+ if Value = Precision_Limit then
+ Extra := Char_As_Digit (Value mod B);
+ Value := Value / B;
+ Scale := Scale + 1;
+ Round_Extra (Digit, Value, Scale, Extra, Base);
+
+ else
+ Extra := 0;
+ Value := Value + 1;
+ end if;
+
+ else
+ Extra := Extra + 1;
+ end if;
+ end if;
+ end Round_Extra;
+
-------------------------
-- Scan_Decimal_Digits --
-------------------------
@@ -133,6 +173,8 @@ package body System.Value_R is
is
pragma Assert (Base in 2 .. 16);
+ pragma Assert (Index in Str'Range);
+ pragma Assert (Max <= Str'Last);
Umax : constant Uns := (Precision_Limit - Uns (Base) + 1) / Uns (Base);
-- Max value which cannot overflow on accumulating next digit
@@ -144,8 +186,9 @@ package body System.Value_R is
-- Set to True if addition of a digit will cause Value to be superior
-- to Precision_Limit.
- Precision_Limit_Just_Reached : Boolean := False;
- -- Set to True if Precision_Limit_Reached was just set to True
+ Precision_Limit_Just_Reached : Boolean;
+ -- Set to True if Precision_Limit_Reached was just set to True, but only
+ -- used when Round is True.
Digit : Char_As_Digit;
-- The current digit
@@ -166,6 +209,10 @@ package body System.Value_R is
Extra := 0;
end if;
+ if Round then
+ Precision_Limit_Just_Reached := False;
+ end if;
+
-- The function precondition is that the first character is a valid
-- digit.
@@ -188,22 +235,12 @@ package body System.Value_R is
-- If precision limit has been reached, just ignore any remaining
-- digits for the computation of Value and Scale, but store the
- -- first in Extra and use the second to round Extra if this is for
- -- a fixed-point type (we skip the rounding for a floating-point
- -- type to preserve backward compatibility). The scanning should
- -- continue only to assess the validity of the string.
+ -- first in Extra and use the second to round Extra. The scanning
+ -- should continue only to assess the validity of the string.
if Precision_Limit_Reached then
- if Precision_Limit_Just_Reached and then not Floating then
- if Digit >= Base / 2 then
- if Extra = Base - 1 then
- Extra := 0;
- Value := Value + 1;
- else
- Extra := Extra + 1;
- end if;
- end if;
-
+ if Round and then Precision_Limit_Just_Reached then
+ Round_Extra (Digit, Value, Scale, Extra, Base);
Precision_Limit_Just_Reached := False;
end if;
@@ -235,8 +272,16 @@ package body System.Value_R is
Temp := Value * Uns (Base) + Uns (Digit);
+ -- Check if Temp is larger than Precision_Limit, taking into
+ -- account that Temp may wrap around when Precision_Limit is
+ -- equal to the largest integer.
+
if Value <= Umax
- or else (Value <= UmaxB and then Temp <= Precision_Limit)
+ or else (Value <= UmaxB
+ and then ((Precision_Limit < Uns'Last
+ and then Temp <= Precision_Limit)
+ or else (Precision_Limit = Uns'Last
+ and then Temp >= Uns (Base))))
then
Value := Temp;
Scale := Scale - 1;
@@ -244,7 +289,9 @@ package body System.Value_R is
else
Extra := Digit;
Precision_Limit_Reached := True;
- Precision_Limit_Just_Reached := True;
+ if Round then
+ Precision_Limit_Just_Reached := True;
+ end if;
end if;
end if;
end if;
@@ -308,8 +355,9 @@ package body System.Value_R is
-- Set to True if addition of a digit will cause Value to be superior
-- to Precision_Limit.
- Precision_Limit_Just_Reached : Boolean := False;
- -- Set to True if Precision_Limit_Reached was just set to True
+ Precision_Limit_Just_Reached : Boolean;
+ -- Set to True if Precision_Limit_Reached was just set to True, but only
+ -- used when Round is True.
Digit : Char_As_Digit;
-- The current digit
@@ -324,6 +372,12 @@ package body System.Value_R is
Scale := 0;
Extra := 0;
+ if Round then
+ Precision_Limit_Just_Reached := False;
+ end if;
+
+ pragma Assert (Max <= Str'Last);
+
-- The function precondition is that the first character is a valid
-- digit.
@@ -346,39 +400,39 @@ package body System.Value_R is
-- If precision limit has been reached, just ignore any remaining
-- digits for the computation of Value and Scale, but store the
- -- first in Extra and use the second to round Extra if this is for
- -- a fixed-point type (we skip the rounding for a floating-point
- -- type to preserve backward compatibility). The scanning should
- -- continue only to assess the validity of the string.
+ -- first in Extra and use the second to round Extra. The scanning
+ -- should continue only to assess the validity of the string.
if Precision_Limit_Reached then
Scale := Scale + 1;
- if Precision_Limit_Just_Reached and then not Floating then
- if Digit >= Base / 2 then
- if Extra = Base - 1 then
- Extra := 0;
- Value := Value + 1;
- else
- Extra := Extra + 1;
- end if;
- end if;
-
+ if Round and then Precision_Limit_Just_Reached then
+ Round_Extra (Digit, Value, Scale, Extra, Base);
Precision_Limit_Just_Reached := False;
end if;
else
Temp := Value * Uns (Base) + Uns (Digit);
+ -- Check if Temp is larger than Precision_Limit, taking into
+ -- account that Temp may wrap around when Precision_Limit is
+ -- equal to the largest integer.
+
if Value <= Umax
- or else (Value <= UmaxB and then Temp <= Precision_Limit)
+ or else (Value <= UmaxB
+ and then ((Precision_Limit < Uns'Last
+ and then Temp <= Precision_Limit)
+ or else (Precision_Limit = Uns'Last
+ and then Temp >= Uns (Base))))
then
Value := Temp;
else
Extra := Digit;
Precision_Limit_Reached := True;
- Precision_Limit_Just_Reached := True;
+ if Round then
+ Precision_Limit_Just_Reached := True;
+ end if;
Scale := Scale + 1;
end if;
end if;
@@ -409,7 +463,6 @@ package body System.Value_R is
end if;
end if;
end loop;
-
end Scan_Integral_Digits;
-------------------
@@ -425,6 +478,8 @@ package body System.Value_R is
Extra : out Unsigned;
Minus : out Boolean) return Uns
is
+ pragma Assert (Max <= Str'Last);
+
After_Point : Boolean;
-- True if a decimal should be parsed
@@ -440,7 +495,7 @@ package body System.Value_R is
-- Local copy of string pointer
Start : Positive;
- -- Position of starting non-blank character
+ pragma Unreferenced (Start);
Value : Uns;
-- Mantissa as an Integer
@@ -461,14 +516,15 @@ package body System.Value_R is
Scan_Sign (Str, Ptr, Max, Minus, Start);
Index := Ptr.all;
- Ptr.all := Start;
- -- First character can be either a decimal digit or a dot
+ pragma Assert (Index >= Str'First);
- if Str (Index) in '0' .. '9' then
- pragma Annotate
- (CodePeer, False_Positive, "test always true", "defensive code");
+ pragma Annotate (CodePeer, Modified, Str (Index));
+
+ -- First character can be either a decimal digit or a dot and for some
+ -- reason CodePeer incorrectly thinks it is always a digit.
+ if Str (Index) in '0' .. '9' then
After_Point := False;
-- If this is a digit it can indicates either the float decimal
@@ -496,13 +552,16 @@ package body System.Value_R is
-- Check if the first number encountered is a base
+ pragma Assert (Index >= Str'First);
+
if Index < Max
and then (Str (Index) = '#' or else Str (Index) = ':')
then
Base_Char := Str (Index);
- Base := Unsigned (Value);
- if Base < 2 or else Base > 16 then
+ if Value in 2 .. 16 then
+ Base := Unsigned (Value);
+ else
Base_Violation := True;
Base := 16;
end if;
@@ -533,6 +592,8 @@ package body System.Value_R is
-- Do we have a dot?
+ pragma Assert (Index >= Str'First);
+
if not After_Point and then Index <= Max and then Str (Index) = '.' then
-- At this stage if After_Point was not set, this means that an
@@ -549,6 +610,8 @@ package body System.Value_R is
-- Scan the decimal part
if After_Point then
+ pragma Assert (Index <= Max);
+
Scan_Decimal_Digits
(Str, Index, Max, Value, Scale, Char_As_Digit (Extra),
Base_Violation, Base, Base_Specified => Base_Char /= ASCII.NUL);
@@ -557,6 +620,8 @@ package body System.Value_R is
-- If an explicit base was specified ensure that the delimiter is found
if Base_Char /= ASCII.NUL then
+ pragma Assert (Index > Max or else Index in Str'Range);
+
if Index > Max or else Str (Index) /= Base_Char then
Bad_Value (Str);
else
diff --git a/gcc/ada/libgnat/s-valuer.ads b/gcc/ada/libgnat/s-valuer.ads
index 8d2f3fd..a933859 100644
--- a/gcc/ada/libgnat/s-valuer.ads
+++ b/gcc/ada/libgnat/s-valuer.ads
@@ -38,7 +38,9 @@ generic
type Uns is mod <>;
- Floating : Boolean;
+ Precision_Limit : Uns;
+
+ Round : Boolean;
package System.Value_R is
pragma Preelaborate;
diff --git a/gcc/ada/libgnat/system-aix.ads b/gcc/ada/libgnat/system-aix.ads
index e346759..db4579f 100644
--- a/gcc/ada/libgnat/system-aix.ads
+++ b/gcc/ada/libgnat/system-aix.ads
@@ -135,8 +135,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-darwin-arm.ads b/gcc/ada/libgnat/system-darwin-arm.ads
index e1af682..b306920 100644
--- a/gcc/ada/libgnat/system-darwin-arm.ads
+++ b/gcc/ada/libgnat/system-darwin-arm.ads
@@ -151,8 +151,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-darwin-ppc.ads b/gcc/ada/libgnat/system-darwin-ppc.ads
index 0b746cc..bc0b147 100644
--- a/gcc/ada/libgnat/system-darwin-ppc.ads
+++ b/gcc/ada/libgnat/system-darwin-ppc.ads
@@ -151,8 +151,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-darwin-x86.ads b/gcc/ada/libgnat/system-darwin-x86.ads
index e27379e..c175224 100644
--- a/gcc/ada/libgnat/system-darwin-x86.ads
+++ b/gcc/ada/libgnat/system-darwin-x86.ads
@@ -151,8 +151,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-djgpp.ads b/gcc/ada/libgnat/system-djgpp.ads
index 35d9381..52e4a88 100644
--- a/gcc/ada/libgnat/system-djgpp.ads
+++ b/gcc/ada/libgnat/system-djgpp.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-dragonfly-x86_64.ads b/gcc/ada/libgnat/system-dragonfly-x86_64.ads
index 80da5af..0cc0dab 100644
--- a/gcc/ada/libgnat/system-dragonfly-x86_64.ads
+++ b/gcc/ada/libgnat/system-dragonfly-x86_64.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-freebsd.ads b/gcc/ada/libgnat/system-freebsd.ads
index e8765b8..ce1835c 100644
--- a/gcc/ada/libgnat/system-freebsd.ads
+++ b/gcc/ada/libgnat/system-freebsd.ads
@@ -126,8 +126,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-hpux-ia64.ads b/gcc/ada/libgnat/system-hpux-ia64.ads
index 12252db..202bcac 100644
--- a/gcc/ada/libgnat/system-hpux-ia64.ads
+++ b/gcc/ada/libgnat/system-hpux-ia64.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-hpux.ads b/gcc/ada/libgnat/system-hpux.ads
index 71a1668..34f2752 100644
--- a/gcc/ada/libgnat/system-hpux.ads
+++ b/gcc/ada/libgnat/system-hpux.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-alpha.ads b/gcc/ada/libgnat/system-linux-alpha.ads
index d639630..2c638e5 100644
--- a/gcc/ada/libgnat/system-linux-alpha.ads
+++ b/gcc/ada/libgnat/system-linux-alpha.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-arm.ads b/gcc/ada/libgnat/system-linux-arm.ads
index 6831aad..9020c79 100644
--- a/gcc/ada/libgnat/system-linux-arm.ads
+++ b/gcc/ada/libgnat/system-linux-arm.ads
@@ -134,8 +134,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-hppa.ads b/gcc/ada/libgnat/system-linux-hppa.ads
index 669289d..dccf444 100644
--- a/gcc/ada/libgnat/system-linux-hppa.ads
+++ b/gcc/ada/libgnat/system-linux-hppa.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-ia64.ads b/gcc/ada/libgnat/system-linux-ia64.ads
index 1dca30c..14b6bb3 100644
--- a/gcc/ada/libgnat/system-linux-ia64.ads
+++ b/gcc/ada/libgnat/system-linux-ia64.ads
@@ -133,8 +133,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-m68k.ads b/gcc/ada/libgnat/system-linux-m68k.ads
index 6a98466..db7f9e7 100644
--- a/gcc/ada/libgnat/system-linux-m68k.ads
+++ b/gcc/ada/libgnat/system-linux-m68k.ads
@@ -135,8 +135,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-mips.ads b/gcc/ada/libgnat/system-linux-mips.ads
index 8476f90..d44bf1b 100644
--- a/gcc/ada/libgnat/system-linux-mips.ads
+++ b/gcc/ada/libgnat/system-linux-mips.ads
@@ -126,8 +126,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-ppc.ads b/gcc/ada/libgnat/system-linux-ppc.ads
index 9785c9a..917b949 100644
--- a/gcc/ada/libgnat/system-linux-ppc.ads
+++ b/gcc/ada/libgnat/system-linux-ppc.ads
@@ -134,8 +134,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-riscv.ads b/gcc/ada/libgnat/system-linux-riscv.ads
index a298bcd..9e93e5e 100644
--- a/gcc/ada/libgnat/system-linux-riscv.ads
+++ b/gcc/ada/libgnat/system-linux-riscv.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-s390.ads b/gcc/ada/libgnat/system-linux-s390.ads
index 3d80ce7..0ceeb96 100644
--- a/gcc/ada/libgnat/system-linux-s390.ads
+++ b/gcc/ada/libgnat/system-linux-s390.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-sh4.ads b/gcc/ada/libgnat/system-linux-sh4.ads
index 6227bdb..fd0e0c7 100644
--- a/gcc/ada/libgnat/system-linux-sh4.ads
+++ b/gcc/ada/libgnat/system-linux-sh4.ads
@@ -133,8 +133,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-sparc.ads b/gcc/ada/libgnat/system-linux-sparc.ads
index 0549a85..29a650a 100644
--- a/gcc/ada/libgnat/system-linux-sparc.ads
+++ b/gcc/ada/libgnat/system-linux-sparc.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-linux-x86.ads b/gcc/ada/libgnat/system-linux-x86.ads
index 5b2b77f..73c99c3 100644
--- a/gcc/ada/libgnat/system-linux-x86.ads
+++ b/gcc/ada/libgnat/system-linux-x86.ads
@@ -133,8 +133,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-lynxos178-ppc.ads b/gcc/ada/libgnat/system-lynxos178-ppc.ads
index 70de803..e2d9765 100644
--- a/gcc/ada/libgnat/system-lynxos178-ppc.ads
+++ b/gcc/ada/libgnat/system-lynxos178-ppc.ads
@@ -102,7 +102,7 @@ package System is
-- (Priority'First + Priority'Last) / 2
-- However, the default priority given by the OS is not the same thing as
- -- the Ada value Default_Prioirity (previous examples include VxWorks).
+ -- the Ada value Default_Priority (previous examples include VxWorks).
-- Therefore, we follow a model based on the full range of LynxOS-178
-- priorities.
@@ -140,8 +140,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-lynxos178-x86.ads b/gcc/ada/libgnat/system-lynxos178-x86.ads
index b14f48b..3131895 100644
--- a/gcc/ada/libgnat/system-lynxos178-x86.ads
+++ b/gcc/ada/libgnat/system-lynxos178-x86.ads
@@ -102,7 +102,7 @@ package System is
-- (Priority'First + Priority'Last) / 2
-- However, the default priority given by the OS is not the same thing as
- -- the Ada value Default_Prioirity (previous examples include VxWorks).
+ -- the Ada value Default_Priority (previous examples include VxWorks).
-- Therefore, we follow a model based on the full range of LynxOS-178
-- priorities.
@@ -140,8 +140,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-mingw.ads b/gcc/ada/libgnat/system-mingw.ads
index c05dee7e..3729e44 100644
--- a/gcc/ada/libgnat/system-mingw.ads
+++ b/gcc/ada/libgnat/system-mingw.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-qnx-aarch64.ads b/gcc/ada/libgnat/system-qnx-aarch64.ads
index f3316c3..a6336a9 100644
--- a/gcc/ada/libgnat/system-qnx-aarch64.ads
+++ b/gcc/ada/libgnat/system-qnx-aarch64.ads
@@ -134,8 +134,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-rtems.ads b/gcc/ada/libgnat/system-rtems.ads
index 8907d9e..dca09dd 100644
--- a/gcc/ada/libgnat/system-rtems.ads
+++ b/gcc/ada/libgnat/system-rtems.ads
@@ -144,8 +144,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-solaris-sparc.ads b/gcc/ada/libgnat/system-solaris-sparc.ads
index f211eed..1efc78f 100644
--- a/gcc/ada/libgnat/system-solaris-sparc.ads
+++ b/gcc/ada/libgnat/system-solaris-sparc.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-solaris-x86.ads b/gcc/ada/libgnat/system-solaris-x86.ads
index 82fe656..8dc46ed 100644
--- a/gcc/ada/libgnat/system-solaris-x86.ads
+++ b/gcc/ada/libgnat/system-solaris-x86.ads
@@ -125,8 +125,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads
index 7412611..592e25b 100644
--- a/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads
@@ -144,8 +144,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-arm-rtp.ads b/gcc/ada/libgnat/system-vxworks-arm-rtp.ads
index 697f351..ac025ce 100644
--- a/gcc/ada/libgnat/system-vxworks-arm-rtp.ads
+++ b/gcc/ada/libgnat/system-vxworks-arm-rtp.ads
@@ -143,8 +143,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-arm.ads b/gcc/ada/libgnat/system-vxworks-arm.ads
index 5f767b2..483881f 100644
--- a/gcc/ada/libgnat/system-vxworks-arm.ads
+++ b/gcc/ada/libgnat/system-vxworks-arm.ads
@@ -138,8 +138,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-e500-kernel.ads b/gcc/ada/libgnat/system-vxworks-e500-kernel.ads
index 2d64186..ac674bd 100644
--- a/gcc/ada/libgnat/system-vxworks-e500-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks-e500-kernel.ads
@@ -138,8 +138,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads
index 46cd6e7..45a99f3 100644
--- a/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads
@@ -144,8 +144,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-e500-rtp.ads b/gcc/ada/libgnat/system-vxworks-e500-rtp.ads
index c232fe0..27f7707 100644
--- a/gcc/ada/libgnat/system-vxworks-e500-rtp.ads
+++ b/gcc/ada/libgnat/system-vxworks-e500-rtp.ads
@@ -143,8 +143,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-e500-vthread.ads b/gcc/ada/libgnat/system-vxworks-e500-vthread.ads
index 929a642..f60fbcd 100644
--- a/gcc/ada/libgnat/system-vxworks-e500-vthread.ads
+++ b/gcc/ada/libgnat/system-vxworks-e500-vthread.ads
@@ -140,8 +140,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads b/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
index 63cebb7..ec3de26 100644
--- a/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
@@ -138,8 +138,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads b/gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads
index 4347a01..e38ff3b 100644
--- a/gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads
+++ b/gcc/ada/libgnat/system-vxworks-ppc-ravenscar.ads
@@ -163,8 +163,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := True;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := True;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
index 469c0f3..b4277e2 100644
--- a/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
@@ -144,8 +144,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads b/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
index 8fba1b0..eeeca9b 100644
--- a/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
+++ b/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
@@ -143,8 +143,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-ppc-vthread.ads b/gcc/ada/libgnat/system-vxworks-ppc-vthread.ads
index a4f4eb2..05d27d6 100644
--- a/gcc/ada/libgnat/system-vxworks-ppc-vthread.ads
+++ b/gcc/ada/libgnat/system-vxworks-ppc-vthread.ads
@@ -140,8 +140,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := True;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-ppc.ads b/gcc/ada/libgnat/system-vxworks-ppc.ads
index 67d936a..9862f42 100644
--- a/gcc/ada/libgnat/system-vxworks-ppc.ads
+++ b/gcc/ada/libgnat/system-vxworks-ppc.ads
@@ -141,8 +141,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-x86-kernel.ads b/gcc/ada/libgnat/system-vxworks-x86-kernel.ads
index e4d0344..b6eebb5 100644
--- a/gcc/ada/libgnat/system-vxworks-x86-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks-x86-kernel.ads
@@ -141,8 +141,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads
index f2a4142..e6d31de 100644
--- a/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads
@@ -142,8 +142,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-x86-rtp.ads b/gcc/ada/libgnat/system-vxworks-x86-rtp.ads
index d597600..960a7ed 100644
--- a/gcc/ada/libgnat/system-vxworks-x86-rtp.ads
+++ b/gcc/ada/libgnat/system-vxworks-x86-rtp.ads
@@ -141,8 +141,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-x86-vthread.ads b/gcc/ada/libgnat/system-vxworks-x86-vthread.ads
index a1eb8f0..f3f4037 100644
--- a/gcc/ada/libgnat/system-vxworks-x86-vthread.ads
+++ b/gcc/ada/libgnat/system-vxworks-x86-vthread.ads
@@ -140,8 +140,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := True;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks-x86.ads b/gcc/ada/libgnat/system-vxworks-x86.ads
index 226a3dc..55bc3f6 100644
--- a/gcc/ada/libgnat/system-vxworks-x86.ads
+++ b/gcc/ada/libgnat/system-vxworks-x86.ads
@@ -141,8 +141,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
index e2ed214..0624ffa 100644
--- a/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
@@ -143,8 +143,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-aarch64.ads b/gcc/ada/libgnat/system-vxworks7-aarch64.ads
index ef1211b..1491332 100644
--- a/gcc/ada/libgnat/system-vxworks7-aarch64.ads
+++ b/gcc/ada/libgnat/system-vxworks7-aarch64.ads
@@ -140,8 +140,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
index 2b4c64e..d7da53d 100644
--- a/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
@@ -140,8 +140,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-arm.ads b/gcc/ada/libgnat/system-vxworks7-arm.ads
index 5f767b2..483881f 100644
--- a/gcc/ada/libgnat/system-vxworks7-arm.ads
+++ b/gcc/ada/libgnat/system-vxworks7-arm.ads
@@ -138,8 +138,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads b/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads
index 4182a1f..e697629 100644
--- a/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads
@@ -138,8 +138,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads
index d4a303b..6388628 100644
--- a/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads
@@ -143,8 +143,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads b/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads
index c7acf95..69a0a66 100644
--- a/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads
@@ -143,8 +143,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads b/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
index 71d06b4..82c5d3a 100644
--- a/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
@@ -138,8 +138,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
index 3879614..d34d632 100644
--- a/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
@@ -143,8 +143,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads b/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads
index b5393cd..404da85 100644
--- a/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads
@@ -143,8 +143,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads b/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
index 94f69ee..05a51d9 100644
--- a/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
@@ -140,8 +140,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
index bafa41d..e55de8c 100644
--- a/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
@@ -143,8 +143,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads b/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
index ae0c39f..b3659a3 100644
--- a/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
@@ -138,8 +138,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
index 4681bba..8c2d527 100644
--- a/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
@@ -141,8 +141,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads b/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads
index 6b176d1..f6528ba 100644
--- a/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads
@@ -141,8 +141,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads b/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
index eadf5ee..fc4655f 100644
--- a/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
+++ b/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
@@ -138,8 +138,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads b/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
index a97b80a..2bc8e6a 100644
--- a/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
+++ b/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
@@ -141,8 +141,6 @@ private
Denorm : constant Boolean := True;
Duration_32_Bits : constant Boolean := False;
Exit_Status_Supported : constant Boolean := True;
- Fractional_Fixed_Ops : constant Boolean := False;
- Frontend_Layout : constant Boolean := False;
Machine_Overflows : constant Boolean := False;
Machine_Rounds : constant Boolean := True;
Preallocated_Stacks : constant Boolean := False;
diff --git a/gcc/ada/opt.ads b/gcc/ada/opt.ads
index f55e9c6..6b32a96 100644
--- a/gcc/ada/opt.ads
+++ b/gcc/ada/opt.ads
@@ -1135,7 +1135,7 @@ package Opt is
-- make it easier to interface with back ends that implement C semantics.
-- There is a section in Sinfo which describes the transformations made.
- Multiple_Unit_Index : Int := 0;
+ Multiple_Unit_Index : Nat := 0;
-- GNAT
-- This is set non-zero if the current unit is being compiled in multiple
-- unit per file mode, meaning that the current unit is selected from the
diff --git a/gcc/ada/par-ch10.adb b/gcc/ada/par-ch10.adb
index e4298e8..70984b1 100644
--- a/gcc/ada/par-ch10.adb
+++ b/gcc/ada/par-ch10.adb
@@ -861,11 +861,7 @@ package body Ch10 is
("unexpected LIMITED ignored");
end if;
- if Ada_Version < Ada_2005 then
- Error_Msg_SP ("LIMITED WITH is an Ada 2005 extension");
- Error_Msg_SP
- ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("`LIMITED WITH`");
elsif Token = Tok_Private then
Has_Limited := False;
@@ -879,13 +875,10 @@ package body Ch10 is
Restore_Scan_State (Scan_State); -- to PRIVATE
return Item_List;
-
- elsif Ada_Version < Ada_2005 then
- Error_Msg_SP ("`PRIVATE WITH` is an Ada 2005 extension");
- Error_Msg_SP
- ("\unit must be compiled with -gnat05 switch");
end if;
+ Error_Msg_Ada_2005_Extension ("`PRIVATE WITH`");
+
else
Has_Limited := False;
Has_Private := False;
diff --git a/gcc/ada/par-ch11.adb b/gcc/ada/par-ch11.adb
index 468ba03a..63f0c6e 100644
--- a/gcc/ada/par-ch11.adb
+++ b/gcc/ada/par-ch11.adb
@@ -227,10 +227,7 @@ package body Ch11 is
end if;
if Token = Tok_With then
- if Ada_Version < Ada_2005 then
- Error_Msg_SC ("string expression in raise is Ada 2005 extension");
- Error_Msg_SC ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("string expression in raise");
Scan; -- past WITH
Set_Expression (Raise_Node, P_Expression);
diff --git a/gcc/ada/par-ch12.adb b/gcc/ada/par-ch12.adb
index c53f7cb..a4799c7 100644
--- a/gcc/ada/par-ch12.adb
+++ b/gcc/ada/par-ch12.adb
@@ -349,24 +349,19 @@ package body Ch12 is
-- Ada 2005: an association can be given by: others => <>
if Token = Tok_Others then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("partial parameterization of formal packages"
- & " is an Ada 2005 extension");
- Error_Msg_SP
- ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension
+ ("partial parameterization of formal package");
Scan; -- past OTHERS
if Token /= Tok_Arrow then
- Error_Msg_BC ("expect arrow after others");
+ Error_Msg_BC ("expect `='>` after OTHERS");
else
Scan; -- past arrow
end if;
if Token /= Tok_Box then
- Error_Msg_BC ("expect Box after arrow");
+ Error_Msg_BC ("expect `'<'>` after `='>`");
else
Scan; -- past box
end if;
@@ -428,12 +423,12 @@ package body Ch12 is
procedure P_Formal_Object_Declarations (Decls : List_Id) is
Decl_Node : Node_Id;
- Ident : Nat;
+ Ident : Pos;
Not_Null_Present : Boolean := False;
- Num_Idents : Nat;
+ Num_Idents : Pos;
Scan_State : Saved_Scan_State;
- Idents : array (Int range 1 .. 4096) of Entity_Id;
+ Idents : array (Pos range 1 .. 4096) of Entity_Id;
-- This array holds the list of defining identifiers. The upper bound
-- of 4096 is intended to be essentially infinite, and we do not even
-- bother to check for it being exceeded.
@@ -478,12 +473,8 @@ package body Ch12 is
Set_Access_Definition (Decl_Node,
P_Access_Definition (Not_Null_Present));
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("access definition not allowed in formal object " &
- "declaration");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension
+ ("access definition in formal object declaration");
-- Formal object with a subtype mark
@@ -923,23 +914,13 @@ package body Ch12 is
Set_Limited_Present (Def_Node);
Scan; -- past LIMITED
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("LIMITED in derived type is an Ada 2005 extension");
- Error_Msg_SP
- ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("LIMITED in derived type");
elsif Token = Tok_Synchronized then
Set_Synchronized_Present (Def_Node);
Scan; -- past SYNCHRONIZED
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("SYNCHRONIZED in derived type is an Ada 2005 extension");
- Error_Msg_SP
- ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("SYNCHRONIZED in derived type");
end if;
if Token = Tok_Abstract then
@@ -955,11 +936,7 @@ package body Ch12 is
if Token = Tok_And then
Scan; -- past AND
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("abstract interface is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("abstract interface");
Set_Interface_List (Def_Node, New_List);
@@ -972,20 +949,21 @@ package body Ch12 is
if Token = Tok_With then
- if Ada_Version >= Ada_2020 and not Next_Token_Is (Tok_Private) then
-
+ if Next_Token_Is (Tok_Private) then
+ Scan; -- past WITH
+ Set_Private_Present (Def_Node, True);
+ T_Private;
+ else
-- Formal type has aspect specifications, parsed later.
-- Otherwise this is a formal derived type. Note that it may
-- also include later aspect specifications, as in:
- -- type DT is new T with private with atomic;
+ -- type DT is new T with private with Atomic;
- return Def_Node;
+ Error_Msg_Ada_2020_Feature
+ ("formal type with aspect specification", Token_Ptr);
- else
- Scan; -- past WITH
- Set_Private_Present (Def_Node, True);
- T_Private;
+ return Def_Node;
end if;
elsif Token = Tok_Tagged then
@@ -1190,11 +1168,7 @@ package body Ch12 is
New_Node (N_Formal_Abstract_Subprogram_Declaration, Prev_Sloc);
Scan; -- past ABSTRACT
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("formal abstract subprograms are an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("formal abstract subprogram");
else
Def_Node :=
@@ -1214,11 +1188,7 @@ package body Ch12 is
Scan; -- past <>
elsif Token = Tok_Null then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("null default subprograms are an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("null default subprogram");
if Nkind (Spec_Node) = N_Procedure_Specification then
Set_Null_Present (Spec_Node);
diff --git a/gcc/ada/par-ch3.adb b/gcc/ada/par-ch3.adb
index 017a0a1..78a3ebd 100644
--- a/gcc/ada/par-ch3.adb
+++ b/gcc/ada/par-ch3.adb
@@ -690,12 +690,7 @@ package body Ch3 is
-- Ada 2005 (AI-419): LIMITED NEW
elsif Token = Tok_New then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("LIMITED in derived type is an Ada 2005 extension");
- Error_Msg_SP
- ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("LIMITED in derived type");
Typedef_Node := P_Derived_Type_Def_Or_Private_Ext_Decl;
Set_Limited_Present (Typedef_Node);
@@ -919,7 +914,7 @@ package body Ch3 is
if Unknown_Dis then
Error_Msg
- ("Full type declaration cannot have unknown discriminants",
+ ("full type declaration cannot have unknown discriminants",
Discr_Sloc);
end if;
end if;
@@ -1056,7 +1051,7 @@ package body Ch3 is
-- otherwise things are really messed up, so resynchronize.
if Token = Tok_Record then
- Error_Msg_SC ("anonymous record definitions are not permitted");
+ Error_Msg_SC ("anonymous record definition not permitted");
Discard_Junk_Node (P_Record_Definition);
return Error;
@@ -1491,11 +1486,8 @@ package body Ch3 is
-- access_definition
elsif Token = Tok_Renames then
- if Ada_Version < Ada_2020 then
- Error_Msg_SC
- ("object renaming without subtype is an Ada 202x feature");
- Error_Msg_SC ("\compile with -gnat2020");
- end if;
+ Error_Msg_Ada_2020_Feature
+ ("object renaming without subtype", Token_Ptr);
Scan; -- past renames
@@ -1671,13 +1663,8 @@ package body Ch3 is
Set_Null_Exclusion_Present (Decl_Node, Not_Null_Present);
if Token = Tok_Access then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("generalized use of anonymous access types " &
- "is an Ada 2005 extension");
- Error_Msg_SP
- ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension
+ ("generalized use of anonymous access types");
Set_Object_Definition
(Decl_Node, P_Access_Definition (Not_Null_Present));
@@ -1734,13 +1721,8 @@ package body Ch3 is
-- Access definition (AI-406) or subtype indication
if Token = Tok_Access then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("generalized use of anonymous access types " &
- "is an Ada 2005 extension");
- Error_Msg_SP
- ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension
+ ("generalized use of anonymous access types");
Set_Object_Definition
(Decl_Node, P_Access_Definition (Not_Null_Present));
@@ -1779,12 +1761,8 @@ package body Ch3 is
Not_Null_Present := P_Null_Exclusion; -- Ada 2005 (AI-231/423)
if Token = Tok_Access then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("generalized use of anonymous access types " &
- "is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension
+ ("generalized use of anonymous access types");
Acc_Node := P_Access_Definition (Not_Null_Present);
@@ -1850,12 +1828,8 @@ package body Ch3 is
-- Ada 2005 (AI-230): Access Definition case
elsif Token = Tok_Access then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("generalized use of anonymous access types " &
- "is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension
+ ("generalized use of anonymous access types");
Acc_Node := P_Access_Definition (Null_Exclusion_Present => False);
@@ -2063,11 +2037,7 @@ package body Ch3 is
if Token = Tok_And then
Scan; -- past AND
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("abstract interface is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("abstract interface");
Set_Interface_List (Typedef_Node, New_List);
@@ -2457,7 +2427,7 @@ package body Ch3 is
begin
if Ada_Version = Ada_83 then
- Error_Msg_SC ("(Ada 83): modular types not allowed");
+ Error_Msg_SC ("(Ada 83) modular types not allowed");
end if;
Typedef_Node := New_Node (N_Modular_Type_Definition, Token_Ptr);
@@ -2795,12 +2765,8 @@ package body Ch3 is
-- Ada 2005 (AI-230): Access Definition case
if Token = Tok_Access then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("generalized use of anonymous access types " &
- "is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension
+ ("generalized use of anonymous access types");
-- AI95-406 makes "aliased" legal (and useless) in this context so
-- followintg code which used to be needed is commented out.
@@ -3002,9 +2968,9 @@ package body Ch3 is
-- DISCRIMINANT_SPECIFICATION ::=
-- DEFINING_IDENTIFIER_LIST : [NULL_EXCLUSION] SUBTYPE_MARK
- -- [:= DEFAULT_EXPRESSION]
+ -- [:= DEFAULT_EXPRESSION] [ASPECT_SPECIFICATION]
-- | DEFINING_IDENTIFIER_LIST : ACCESS_DEFINITION
- -- [:= DEFAULT_EXPRESSION]
+ -- [:= DEFAULT_EXPRESSION] [ASPECT_SPECIFICATION]
-- If no known discriminant part is present, then No_List is returned
@@ -3098,6 +3064,10 @@ package body Ch3 is
Set_Expression
(Specification_Node, Init_Expr_Opt (True));
+ if Token = Tok_With then
+ P_Aspect_Specifications (Specification_Node, False);
+ end if;
+
if Ident > 1 then
Set_Prev_Ids (Specification_Node, True);
end if;
@@ -3584,7 +3554,7 @@ package body Ch3 is
Set_Defining_Identifier (Decl_Node, Idents (Ident));
if Token = Tok_Constant then
- Error_Msg_SC ("constant components are not permitted");
+ Error_Msg_SC ("constant component not permitted");
Scan;
end if;
@@ -3604,12 +3574,8 @@ package body Ch3 is
-- Ada 2005 (AI-230): Access Definition case
if Token = Tok_Access then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("generalized use of anonymous access types " &
- "is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension
+ ("generalized use of anonymous access types");
-- AI95-406 makes "aliased" legal (and useless) here, so the
-- following code which used to be required is commented out.
@@ -3629,7 +3595,7 @@ package body Ch3 is
Set_Null_Exclusion_Present (CompDef_Node, Not_Null_Present);
if Token = Tok_Array then
- Error_Msg_SC ("anonymous arrays not allowed as components");
+ Error_Msg_SC ("anonymous array not allowed as component");
raise Error_Resync;
end if;
@@ -3949,10 +3915,7 @@ package body Ch3 is
Typedef_Node : Node_Id;
begin
- if Ada_Version < Ada_2005 then
- Error_Msg_SP ("abstract interface is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("abstract interface");
if Abstract_Present then
Error_Msg_SP
@@ -4139,11 +4102,7 @@ package body Ch3 is
-- Ada 2005 (AI-318-02)
if Token = Tok_Access then
- if Ada_Version < Ada_2005 then
- Error_Msg_SC
- ("anonymous access result type is an Ada 2005 extension");
- Error_Msg_SC ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("anonymous access result type");
Result_Node := P_Access_Definition (Result_Not_Null);
@@ -4241,10 +4200,7 @@ package body Ch3 is
or else Token = Tok_Procedure
or else Token = Tok_Function
then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP ("access-to-subprogram is an Ada 2005 extension");
- Error_Msg_SP ("\unit should be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("access-to-subprogram");
Subp_Node := P_Access_Type_Definition (Header_Already_Parsed => True);
Set_Null_Exclusion_Present (Subp_Node, Null_Exclusion_Present);
@@ -4259,17 +4215,14 @@ package body Ch3 is
if Token = Tok_All then
if Ada_Version < Ada_2005 then
Error_Msg_SP
- ("ALL is not permitted for anonymous access types");
+ ("ALL not permitted for anonymous access type");
end if;
Scan; -- past ALL
Set_All_Present (Def_Node);
elsif Token = Tok_Constant then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP ("access-to-constant is an Ada 2005 extension");
- Error_Msg_SP ("\unit should be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("access-to-constant");
Scan; -- past CONSTANT
Set_Constant_Present (Def_Node);
@@ -4794,7 +4747,7 @@ package body Ch3 is
elsif Kind = N_Assignment_Statement then
Error_Msg
("assignment statement not allowed in package spec",
- Sloc (Decl));
+ Sloc (Decl));
end if;
Next (Decl);
diff --git a/gcc/ada/par-ch4.adb b/gcc/ada/par-ch4.adb
index a146902..340668e 100644
--- a/gcc/ada/par-ch4.adb
+++ b/gcc/ada/par-ch4.adb
@@ -1233,7 +1233,7 @@ package body Ch4 is
Attr_Node := New_Node (N_Attribute_Reference, Token_Ptr);
Set_Attribute_Name (Attr_Node, Attr_Name);
if Attr_Name /= Name_Reduce then
- Error_Msg ("reduce attribute expected", Prev_Token_Ptr);
+ Error_Msg ("Reduce attribute expected", Prev_Token_Ptr);
end if;
Set_Prefix (Attr_Node, S);
@@ -1360,9 +1360,7 @@ package body Ch4 is
procedure Box_Error is
begin
- if Ada_Version < Ada_2005 then
- Error_Msg_SC ("box in aggregate is an Ada 2005 extension");
- end if;
+ Error_Msg_Ada_2005_Extension ("'<'> in aggregate");
-- Ada 2005 (AI-287): The box notation is allowed only with named
-- notation because positional notation might be error prone. For
@@ -1580,17 +1578,13 @@ package body Ch4 is
-- Deal with others association first. This is a named association
if No (Expr_Node) then
- if No (Assoc_List) then
- Assoc_List := New_List;
- end if;
-
- Append (P_Record_Or_Array_Component_Association, Assoc_List);
+ Append_New (P_Record_Or_Array_Component_Association, Assoc_List);
-- Improper use of WITH
elsif Token = Tok_With then
Error_Msg_SC ("WITH must be preceded by single expression in " &
- "extension aggregate");
+ "extension aggregate");
raise Error_Resync;
-- Range attribute can only appear as part of a discrete choice list
@@ -1612,11 +1606,7 @@ package body Ch4 is
elsif Nkind (Expr_Node) in
N_Iterated_Component_Association | N_Iterated_Element_Association
then
- if No (Assoc_List) then
- Assoc_List := New_List (Expr_Node);
- else
- Append_To (Assoc_List, Expr_Node);
- end if;
+ Append_New (Expr_Node, Assoc_List);
elsif Token = Tok_Comma
or else Token = Tok_Right_Paren
@@ -1630,11 +1620,7 @@ package body Ch4 is
& "named association)");
end if;
- if No (Expr_List) then
- Expr_List := New_List;
- end if;
-
- Append (Expr_Node, Expr_List);
+ Append_New (Expr_Node, Expr_List);
-- Check for aggregate followed by left parent, maybe missing comma
@@ -1643,18 +1629,10 @@ package body Ch4 is
then
T_Comma;
- if No (Expr_List) then
- Expr_List := New_List;
- end if;
-
- Append (Expr_Node, Expr_List);
+ Append_New (Expr_Node, Expr_List);
elsif Token = Tok_Right_Bracket then
- if No (Expr_List) then
- Expr_List := New_List;
- end if;
-
- Append (Expr_Node, Expr_List);
+ Append_New (Expr_Node, Expr_List);
exit;
-- Anything else is assumed to be a named association
@@ -1662,11 +1640,7 @@ package body Ch4 is
else
Restore_Scan_State (Scan_State); -- to start of expression
- if No (Assoc_List) then
- Assoc_List := New_List;
- end if;
-
- Append (P_Record_Or_Array_Component_Association, Assoc_List);
+ Append_New (P_Record_Or_Array_Component_Association, Assoc_List);
end if;
exit when not Comma_Present;
@@ -1779,11 +1753,7 @@ package body Ch4 is
-- Ada 2005(AI-287): The box notation is used to indicate the
-- default initialization of aggregate components
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- ("component association with '<'> is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("component association with '<'>");
Set_Box_Present (Assoc_Node);
Scan; -- Past box
@@ -2958,10 +2928,7 @@ package body Ch4 is
Scan; -- past minus
when Tok_At_Sign => -- AI12-0125 : target_name
- if Ada_Version < Ada_2020 then
- Error_Msg_SC ("target name is an Ada 202x feature");
- Error_Msg_SC ("\compile with -gnat2020");
- end if;
+ Error_Msg_Ada_2020_Feature ("target name", Token_Ptr);
Node1 := P_Name;
return Node1;
@@ -3537,10 +3504,7 @@ package body Ch4 is
Set_Expression (Assoc_Node, P_Expression);
end if;
- if Ada_Version < Ada_2020 then
- Error_Msg_SC ("iterated component is an Ada 202x feature");
- Error_Msg_SC ("\compile with -gnat2020");
- end if;
+ Error_Msg_Ada_2020_Feature ("iterated component", Token_Ptr);
return Assoc_Node;
end P_Iterated_Component_Association;
@@ -3725,9 +3689,7 @@ package body Ch4 is
Result : constant Node_Id :=
Make_Expression_With_Actions (Loc, Actions, Expression);
begin
- if Ada_Version < Ada_2020 then
- Error_Msg ("declare_expression is an Ada 2020 feature", Loc);
- end if;
+ Error_Msg_Ada_2020_Feature ("declare expression", Loc);
return Result;
end;
diff --git a/gcc/ada/par-ch5.adb b/gcc/ada/par-ch5.adb
index 5b002c4..a8d49b1 100644
--- a/gcc/ada/par-ch5.adb
+++ b/gcc/ada/par-ch5.adb
@@ -1306,14 +1306,16 @@ package body Ch5 is
-- syntax rule.
else
- if Style_Check and then Paren_Count (Cond) > 0 then
- if Nkind (Cond) not in N_If_Expression
- | N_Case_Expression
+ if Style_Check
+ and then
+ Paren_Count (Cond) >
+ (if Nkind (Cond) in N_Case_Expression
+ | N_If_Expression
| N_Quantified_Expression
- or else Paren_Count (Cond) > 1
- then
- Style.Check_Xtra_Parens (First_Sloc (Cond));
- end if;
+ then 1
+ else 0)
+ then
+ Style.Check_Xtra_Parens (First_Sloc (Cond));
end if;
-- And return the result
@@ -1712,9 +1714,9 @@ package body Ch5 is
Set_Discrete_Subtype_Definition
(Loop_Param_Specification_Node, P_Discrete_Subtype_Definition);
- if Ada_Version >= Ada_2020
- and then Token = Tok_When
- then
+ if Token = Tok_When then
+ Error_Msg_Ada_2020_Feature ("iterator filter", Token_Ptr);
+
Scan; -- past WHEN
Set_Iterator_Filter
(Loop_Param_Specification_Node, P_Condition);
@@ -1773,9 +1775,9 @@ package body Ch5 is
Set_Name (Node1, P_Name);
- if Ada_Version >= Ada_2020
- and then Token = Tok_When
- then
+ if Token = Tok_When then
+ Error_Msg_Ada_2020_Feature ("iterator filter", Token_Ptr);
+
Scan; -- past WHEN
Set_Iterator_Filter
(Node1, P_Condition);
diff --git a/gcc/ada/par-ch6.adb b/gcc/ada/par-ch6.adb
index 0fcd23a..145fbc4 100644
--- a/gcc/ada/par-ch6.adb
+++ b/gcc/ada/par-ch6.adb
@@ -426,11 +426,7 @@ package body Ch6 is
-- Ada 2005 (AI-318-02)
if Token = Tok_Access then
- if Ada_Version < Ada_2005 then
- Error_Msg_SC
- ("anonymous access result type is an Ada 2005 extension");
- Error_Msg_SC ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("anonymous access result type");
Result_Node := P_Access_Definition (Result_Not_Null);
@@ -598,10 +594,7 @@ package body Ch6 is
-- Ada 2005 (AI-248): Parse a null procedure declaration
elsif Token = Tok_Null then
- if Ada_Version < Ada_2005 then
- Error_Msg_SP ("null procedures are an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("null procedure");
Scan; -- past NULL
@@ -1064,11 +1057,7 @@ package body Ch6 is
-- Ada 2005 (AI-318-02)
if Token = Tok_Access then
- if Ada_Version < Ada_2005 then
- Error_Msg_SC
- ("anonymous access result type is an Ada 2005 extension");
- Error_Msg_SC ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("anonymous access result type");
Result_Node := P_Access_Definition (Result_Not_Null);
@@ -1631,9 +1620,8 @@ package body Ch6 is
-- the time being.
elsif Token = Tok_With then
- if Ada_Version < Ada_2020 then
- Error_Msg_SP ("aspect on formal parameter requires -gnat2020");
- end if;
+ Error_Msg_Ada_2020_Feature
+ ("aspect on formal parameter", Token_Ptr);
P_Aspect_Specifications (Specification_Node, False);
@@ -1770,7 +1758,8 @@ package body Ch6 is
--
-- EXTENDED_RETURN_STATEMENT ::=
-- return DEFINING_IDENTIFIER : [aliased] RETURN_SUBTYPE_INDICATION
- -- [:= EXPRESSION] [do
+ -- [:= EXPRESSION]
+ -- [ASPECT_SPECIFICATION] [do
-- HANDLED_SEQUENCE_OF_STATEMENTS
-- end return];
--
@@ -1916,6 +1905,7 @@ package body Ch6 is
Ret_Sloc : constant Source_Ptr := Token_Ptr;
Ret_Strt : constant Column_Number := Start_Column;
Ret_Node : Node_Id;
+ Decl : Node_Id;
-- Start of processing for P_Return_Statement
@@ -1948,15 +1938,15 @@ package body Ch6 is
-- Extended_return_statement (Ada 2005 only -- AI-318):
else
- if Ada_Version < Ada_2005 then
- Error_Msg_SP
- (" extended_return_statement is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("extended return statement");
Ret_Node := New_Node (N_Extended_Return_Statement, Ret_Sloc);
- Set_Return_Object_Declarations
- (Ret_Node, New_List (P_Return_Object_Declaration));
+ Decl := P_Return_Object_Declaration;
+ Set_Return_Object_Declarations (Ret_Node, New_List (Decl));
+
+ if Token = Tok_With then
+ P_Aspect_Specifications (Decl, False);
+ end if;
if Token = Tok_Do then
Push_Scope_Stack;
diff --git a/gcc/ada/par-ch9.adb b/gcc/ada/par-ch9.adb
index 2672e52..151656c 100644
--- a/gcc/ada/par-ch9.adb
+++ b/gcc/ada/par-ch9.adb
@@ -220,10 +220,7 @@ package body Ch9 is
if Token = Tok_New then
Scan; -- past NEW
- if Ada_Version < Ada_2005 then
- Error_Msg_SP ("task interface is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("task interface");
Set_Interface_List (Task_Node, New_List);
@@ -565,10 +562,7 @@ package body Ch9 is
if Token = Tok_New then
Scan; -- past NEW
- if Ada_Version < Ada_2005 then
- Error_Msg_SP ("protected interface is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
- end if;
+ Error_Msg_Ada_2005_Extension ("protected interface");
Set_Interface_List (Protected_Node, New_List);
@@ -758,8 +752,7 @@ package body Ch9 is
if Is_Overriding or else Not_Overriding then
if Ada_Version < Ada_2005 then
- Error_Msg_SP ("overriding indicator is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
+ Error_Msg_Ada_2005_Extension ("overriding indicator");
elsif Token = Tok_Entry then
Decl := P_Entry_Declaration;
@@ -910,7 +903,7 @@ package body Ch9 is
Resync_Past_Semicolon;
elsif Token in Token_Class_Declk then
- Error_Msg_SC ("this declaration not allowed in protected body");
+ Error_Msg_SC ("declaration not allowed in protected body");
Resync_Past_Semicolon;
else
@@ -968,9 +961,7 @@ package body Ch9 is
if Is_Overriding or else Not_Overriding then
if Ada_Version < Ada_2005 then
- Error_Msg_SP ("overriding indicator is an Ada 2005 extension");
- Error_Msg_SP ("\unit must be compiled with -gnat05 switch");
-
+ Error_Msg_Ada_2005_Extension ("overriding indicator");
elsif Token /= Tok_Entry then
Error_Msg_SC -- CODEFIX
("ENTRY expected!");
@@ -1316,6 +1307,7 @@ package body Ch9 is
-- ENTRY_INDEX_SPECIFICATION ::=
-- for DEFINING_IDENTIFIER in DISCRETE_SUBTYPE_DEFINITION
+ -- [ASPECT_SPECIFICATION]
-- Error recovery: can raise Error_Resync
@@ -1329,6 +1321,11 @@ package body Ch9 is
T_In;
Set_Discrete_Subtype_Definition
(Iterator_Node, P_Discrete_Subtype_Definition);
+
+ if Token = Tok_With then
+ P_Aspect_Specifications (Iterator_Node, False);
+ end if;
+
return Iterator_Node;
end P_Entry_Index_Specification;
@@ -1654,7 +1651,7 @@ package body Ch9 is
if Ada_Version = Ada_83 then
Error_Msg_BC ("OR or ELSE expected");
else
- Error_Msg_BC ("OR or ELSE or THEN ABORT expected");
+ Error_Msg_BC ("OR or ELSE or `THEN ABORT` expected");
end if;
Select_Node := Error;
diff --git a/gcc/ada/repinfo.adb b/gcc/ada/repinfo.adb
index dff3272..61912ef 100644
--- a/gcc/ada/repinfo.adb
+++ b/gcc/ada/repinfo.adb
@@ -92,18 +92,6 @@ package body Repinfo is
Table_Increment => Alloc.Rep_Table_Increment,
Table_Name => "BE_Rep_Table");
- --------------------------------------------------------------
- -- Representation of Front-End Dynamic Size/Offset Entities --
- --------------------------------------------------------------
-
- package Dynamic_SO_Entity_Table is new Table.Table (
- Table_Component_Type => Entity_Id,
- Table_Index_Type => Nat,
- Table_Low_Bound => 1,
- Table_Initial => Alloc.Rep_Table_Initial,
- Table_Increment => Alloc.Rep_Table_Increment,
- Table_Name => "FE_Rep_Table");
-
Unit_Casing : Casing_Type;
-- Identifier casing for current unit. This is set by List_Rep_Info for
-- each unit, before calling subprograms which may read it.
@@ -138,11 +126,6 @@ package body Repinfo is
-- Local Subprograms --
-----------------------
- function Back_End_Layout return Boolean;
- -- Test for layout mode, True = back end, False = front end. This function
- -- is used rather than checking the configuration parameter because we do
- -- not want Repinfo to depend on Targparm.
-
procedure List_Entities
(Ent : Entity_Id;
Bytes_Big_Endian : Boolean;
@@ -218,18 +201,6 @@ package body Repinfo is
-- flag Paren is set, then the output is surrounded in parentheses if it is
-- other than a simple value.
- ---------------------
- -- Back_End_Layout --
- ---------------------
-
- function Back_End_Layout return Boolean is
- begin
- -- We have back-end layout if the back end has made any entries in the
- -- table of GCC expressions, otherwise we have front-end layout.
-
- return Rep_Table.Last > 0;
- end Back_End_Layout;
-
------------------------
-- Create_Discrim_Ref --
------------------------
@@ -241,16 +212,6 @@ package body Repinfo is
Op1 => Discriminant_Number (Discr));
end Create_Discrim_Ref;
- ---------------------------
- -- Create_Dynamic_SO_Ref --
- ---------------------------
-
- function Create_Dynamic_SO_Ref (E : Entity_Id) return Dynamic_SO_Ref is
- begin
- Dynamic_SO_Entity_Table.Append (E);
- return UI_From_Int (-Dynamic_SO_Entity_Table.Last);
- end Create_Dynamic_SO_Ref;
-
-----------------
-- Create_Node --
-----------------
@@ -279,33 +240,6 @@ package body Repinfo is
return Entity_Header_Num (Id mod Relevant_Entities_Size);
end Entity_Hash;
- ---------------------------
- -- Get_Dynamic_SO_Entity --
- ---------------------------
-
- function Get_Dynamic_SO_Entity (U : Dynamic_SO_Ref) return Entity_Id is
- begin
- return Dynamic_SO_Entity_Table.Table (-UI_To_Int (U));
- end Get_Dynamic_SO_Entity;
-
- -----------------------
- -- Is_Dynamic_SO_Ref --
- -----------------------
-
- function Is_Dynamic_SO_Ref (U : SO_Ref) return Boolean is
- begin
- return U < Uint_0;
- end Is_Dynamic_SO_Ref;
-
- ----------------------
- -- Is_Static_SO_Ref --
- ----------------------
-
- function Is_Static_SO_Ref (U : SO_Ref) return Boolean is
- begin
- return U >= Uint_0;
- end Is_Static_SO_Ref;
-
---------
-- lgx --
---------
@@ -1224,14 +1158,6 @@ package body Repinfo is
else
Write_Val (Esiz, Paren => not List_Representation_Info_To_JSON);
- -- If in front-end layout mode, then dynamic size is stored in
- -- storage units, so renormalize for output.
-
- if not Back_End_Layout then
- Write_Str (" * ");
- Write_Int (SSU);
- end if;
-
-- Add appropriate first bit offset
if not List_Representation_Info_To_JSON then
@@ -2397,11 +2323,7 @@ package body Repinfo is
Write_Char ('(');
end if;
- if Back_End_Layout then
- List_GCC_Expression (Val);
- else
- Write_Name_Decoded (Chars (Get_Dynamic_SO_Entity (Val)));
- end if;
+ List_GCC_Expression (Val);
if Paren then
Write_Char (')');
diff --git a/gcc/ada/repinfo.ads b/gcc/ada/repinfo.ads
index 6731dff..f730c53 100644
--- a/gcc/ada/repinfo.ads
+++ b/gcc/ada/repinfo.ads
@@ -45,28 +45,22 @@ package Repinfo is
-- the corresponding entities as constant non-negative integers,
-- and the Uint values are stored directly in these fields.
- -- For composite types, there are three cases:
+ -- For composite types, there are two cases:
-- 1. In some cases the front end knows the values statically,
-- for example in the case where representation clauses or
-- pragmas specify the values.
- -- 2. If Frontend_Layout is False, then the backend is responsible
- -- for layout of all types and objects not laid out by the
- -- front end. This includes all dynamic values, and also
- -- static values (e.g. record sizes) when not set by the
- -- front end.
-
- -- 3. If Frontend_Layout is True, then the front end lays out
- -- all data, according to target dependent size and alignment
- -- information, creating dynamic inlinable functions where
- -- needed in the case of sizes not known till runtime.
+ -- 2. Otherwise the backend is responsible for layout of all types and
+ -- objects not laid out by the front end. This includes all dynamic
+ -- values, and also static values (e.g. record sizes) when not set by
+ -- the front end.
-----------------------------
-- Back Annotation by Gigi --
-----------------------------
- -- The following interface is used by gigi if Frontend_Layout is False
+ -- The following interface is used by gigi
-- As part of the processing in gigi, the types are laid out and
-- appropriate values computed for the sizes and component positions
@@ -297,76 +291,6 @@ package Repinfo is
function Create_Discrim_Ref (Discr : Entity_Id) return Node_Ref;
-- Creates a reference to the discriminant whose entity is Discr
- --------------------------------------------------------
- -- Front-End Interface for Dynamic Size/Offset Values --
- --------------------------------------------------------
-
- -- If Frontend_Layout is True, then the front-end deals with all
- -- dynamic size and offset fields. There are two cases:
-
- -- 1. The value can be computed at the time of type freezing, and
- -- is stored in a run-time constant. In this case, the field
- -- contains a reference to this entity. In the case of sizes
- -- the value stored is the size in storage units, since dynamic
- -- sizes are always a multiple of storage units.
-
- -- 2. The size/offset depends on the value of discriminants at
- -- run-time. In this case, the front end builds a function to
- -- compute the value. This function has a single parameter
- -- which is the discriminated record object in question. Any
- -- references to discriminant values are simply references to
- -- the appropriate discriminant in this single argument, and
- -- to compute the required size/offset value at run time, the
- -- code generator simply constructs a call to the function
- -- with the appropriate argument. The size/offset field in
- -- this case contains a reference to the function entity.
- -- Note that as for case 1, if such a function is used to
- -- return a size, then the size in storage units is returned,
- -- not the size in bits.
-
- -- The interface here allows these created entities to be referenced
- -- using negative Unit values, so that they can be stored in the
- -- appropriate size and offset fields in the tree.
-
- -- In the case of components, if the location of the component is static,
- -- then all four fields (Component_Bit_Offset, Normalized_Position, Esize,
- -- and Normalized_First_Bit) are set to appropriate values. In the case of
- -- a non-static component location, Component_Bit_Offset is not used and
- -- is left set to Unknown. Normalized_Position and Normalized_First_Bit
- -- are set appropriately.
-
- subtype SO_Ref is Uint;
- -- Type used to represent a Uint value that represents a static or
- -- dynamic size/offset value (non-negative if static, negative if
- -- the size value is dynamic).
-
- subtype Dynamic_SO_Ref is Uint;
- -- Type used to represent a negative Uint value used to store
- -- a dynamic size/offset value.
-
- function Is_Dynamic_SO_Ref (U : SO_Ref) return Boolean;
- pragma Inline (Is_Dynamic_SO_Ref);
- -- Given a SO_Ref (Uint) value, returns True iff the SO_Ref value
- -- represents a dynamic Size/Offset value (i.e. it is negative).
-
- function Is_Static_SO_Ref (U : SO_Ref) return Boolean;
- pragma Inline (Is_Static_SO_Ref);
- -- Given a SO_Ref (Uint) value, returns True iff the SO_Ref value
- -- represents a static Size/Offset value (i.e. it is non-negative).
-
- function Create_Dynamic_SO_Ref (E : Entity_Id) return Dynamic_SO_Ref;
- -- Given the Entity_Id for a constant (case 1), the Node_Id for an
- -- expression (case 2), or the Entity_Id for a function (case 3),
- -- this function returns a (negative) Uint value that can be used
- -- to retrieve the entity or expression for later use.
-
- function Get_Dynamic_SO_Entity (U : Dynamic_SO_Ref) return Entity_Id;
- -- Retrieve the Node_Id or Entity_Id stored by a previous call to
- -- Create_Dynamic_SO_Ref. The approach is that the front end makes
- -- the necessary Create_Dynamic_SO_Ref calls to associate the node
- -- and entity id values and the back end makes Get_Dynamic_SO_Ref
- -- calls to retrieve them.
-
------------------------------
-- External tools Interface --
------------------------------
diff --git a/gcc/ada/rtsfind.ads b/gcc/ada/rtsfind.ads
index 665458f..a690bb4 100644
--- a/gcc/ada/rtsfind.ads
+++ b/gcc/ada/rtsfind.ads
@@ -239,8 +239,6 @@ package Rtsfind is
System_Exp_Mod,
System_Exp_Uns,
System_Fat_Flt,
- System_Fat_IEEE_Long_Float,
- System_Fat_IEEE_Short_Float,
System_Fat_LFlt,
System_Fat_LLF,
System_Fat_SFlt,
@@ -434,13 +432,15 @@ package Rtsfind is
System_Val_Fixed_32,
System_Val_Fixed_64,
System_Val_Fixed_128,
+ System_Val_Flt,
System_Val_Int,
+ System_Val_LFlt,
+ System_Val_LLF,
System_Val_LLI,
System_Val_LLLI,
System_Val_LLU,
System_Val_LLLU,
System_Val_Name,
- System_Val_Real,
System_Val_Uns,
System_Val_WChar,
System_Version_Control,
@@ -925,18 +925,10 @@ package Rtsfind is
RE_Attr_Float, -- System.Fat_Flt
- RE_Attr_IEEE_Long, -- System.Fat_IEEE_Long_Float
- RE_Fat_IEEE_Long, -- System.Fat_IEEE_Long_Float
-
- RE_Attr_IEEE_Short, -- System.Fat_IEEE_Short_Float
- RE_Fat_IEEE_Short, -- System.Fat_IEEE_Short_Float
-
RE_Attr_Long_Float, -- System.Fat_LFlt
RE_Attr_Long_Long_Float, -- System.Fat_LLF
- RE_Attr_Short_Float, -- System.Fat_SFlt
-
RE_Attr_VAX_D_Float, -- System.Fat_VAX_D_Float
RE_Fat_VAX_D, -- System.Fat_VAX_D_Float
@@ -949,7 +941,6 @@ package Rtsfind is
RE_Add_Offset_To_Address, -- System.Finalization_Masters
RE_Attach, -- System.Finalization_Masters
RE_Base_Pool, -- System.Finalization_Masters
- RE_Detach, -- System.Finalization_Masters
RE_Finalization_Master, -- System.Finalization_Masters
RE_Finalization_Master_Ptr, -- System.Finalization_Masters
RE_Set_Base_Pool, -- System.Finalization_Masters
@@ -2045,8 +2036,14 @@ package Rtsfind is
RE_Value_Fixed128, -- System_Val_Fixed_128
+ RE_Value_Float, -- System_Val_Flt
+
RE_Value_Integer, -- System.Val_Int
+ RE_Value_Long_Float, -- System_Val_LFlt
+
+ RE_Value_Long_Long_Float, -- System_Val_LLF
+
RE_Value_Long_Long_Integer, -- System.Val_LLI
RE_Value_Long_Long_Long_Integer, -- System.Val_LLLI
@@ -2055,8 +2052,6 @@ package Rtsfind is
RE_Value_Long_Long_Long_Unsigned, -- System.Val_LLLU
- RE_Value_Real, -- System.Val_Real
-
RE_Value_Unsigned, -- System.Val_Uns
RE_Value_Wide_Character, -- System.Val_WChar
@@ -2610,18 +2605,10 @@ package Rtsfind is
RE_Attr_Float => System_Fat_Flt,
- RE_Attr_IEEE_Long => System_Fat_IEEE_Long_Float,
- RE_Fat_IEEE_Long => System_Fat_IEEE_Long_Float,
-
- RE_Attr_IEEE_Short => System_Fat_IEEE_Short_Float,
- RE_Fat_IEEE_Short => System_Fat_IEEE_Short_Float,
-
RE_Attr_Long_Float => System_Fat_LFlt,
RE_Attr_Long_Long_Float => System_Fat_LLF,
- RE_Attr_Short_Float => System_Fat_SFlt,
-
RE_Attr_VAX_D_Float => System_Fat_VAX_D_Float,
RE_Fat_VAX_D => System_Fat_VAX_D_Float,
@@ -2634,7 +2621,6 @@ package Rtsfind is
RE_Add_Offset_To_Address => System_Finalization_Masters,
RE_Attach => System_Finalization_Masters,
RE_Base_Pool => System_Finalization_Masters,
- RE_Detach => System_Finalization_Masters,
RE_Finalization_Master => System_Finalization_Masters,
RE_Finalization_Master_Ptr => System_Finalization_Masters,
RE_Set_Base_Pool => System_Finalization_Masters,
@@ -3730,8 +3716,14 @@ package Rtsfind is
RE_Value_Fixed128 => System_Val_Fixed_128,
+ RE_Value_Float => System_Val_Flt,
+
RE_Value_Integer => System_Val_Int,
+ RE_Value_Long_Float => System_Val_LFlt,
+
+ RE_Value_Long_Long_Float => System_Val_LLF,
+
RE_Value_Long_Long_Integer => System_Val_LLI,
RE_Value_Long_Long_Long_Integer => System_Val_LLLI,
@@ -3740,8 +3732,6 @@ package Rtsfind is
RE_Value_Long_Long_Long_Unsigned => System_Val_LLLU,
- RE_Value_Real => System_Val_Real,
-
RE_Value_Unsigned => System_Val_Uns,
RE_Value_Wide_Character => System_Val_WChar,
diff --git a/gcc/ada/s-oscons-tmplt.c b/gcc/ada/s-oscons-tmplt.c
index bce5437..582c35e 100644
--- a/gcc/ada/s-oscons-tmplt.c
+++ b/gcc/ada/s-oscons-tmplt.c
@@ -724,6 +724,41 @@ CNU(CRTSCTS, "Output hw flow control")
#endif
CNU(CREAD, "Read")
+#ifndef ICANON
+# define ICANON -1
+#endif
+CNU(ICANON, "canonical mode")
+
+#ifndef CBAUD
+# define CBAUD -1
+#endif
+CNU(CBAUD, "baud speed mask")
+
+#ifndef ECHO
+# define ECHO -1
+#endif
+CNU(ECHO, "echo input characters")
+
+#ifndef ECHOE
+# define ECHOE -1
+#endif
+CNU(ECHOE, "erase preceding characters")
+
+#ifndef ECHOK
+# define ECHOK -1
+#endif
+CNU(ECHOK, "kill character, erases current line")
+
+#ifndef ECHOCTL
+# define ECHOCTL -1
+#endif
+CNU(ECHOCTL, "echo special characters")
+
+#ifndef ECHONL
+# define ECHONL -1
+#endif
+CNU(ECHONL, "force echo NL character")
+
#ifndef CS5
# define CS5 -1
#endif
diff --git a/gcc/ada/sa_messages.ads b/gcc/ada/sa_messages.ads
index 11da9fc..1f6fca8 100644
--- a/gcc/ada/sa_messages.ads
+++ b/gcc/ada/sa_messages.ads
@@ -94,7 +94,7 @@ package SA_Messages is
-- type invariant checks (specific and class-wide), and checks for
-- implementation-defined assertions such as Assert_And_Cut, Assume,
-- Contract_Cases, Default_Initial_Condition, Initial_Condition,
- -- Loop_Invariant, Loop_Variant, and Refined_Post.
+ -- Loop_Invariant, Loop_Variant, Refined_Post, and Subprogram_Variant.
--
-- TBD: it might be nice to distinguish these different kinds of assertions
-- as is done in SPARK's VC_Kind enumeration type, but any distinction
diff --git a/gcc/ada/scng.adb b/gcc/ada/scng.adb
index 0d5cff8..df6a689 100644
--- a/gcc/ada/scng.adb
+++ b/gcc/ada/scng.adb
@@ -25,6 +25,7 @@
with Atree; use Atree;
with Csets; use Csets;
+with Errout; use Errout;
with Hostparm; use Hostparm;
with Namet; use Namet;
with Opt; use Opt;
@@ -1299,19 +1300,15 @@ package body Scng is
return;
end if;
- when '@' =>
- if Ada_Version < Ada_2020 then
- Error_Msg ("target_name is an Ada 202x feature", Scan_Ptr);
- Scan_Ptr := Scan_Ptr + 1;
+ -- AI12-0125-03 : @ is target_name
- else
- -- AI12-0125-03 : @ is target_name
+ when '@' =>
+ Error_Msg_Ada_2020_Feature ("target name", Token_Ptr);
- Accumulate_Checksum ('@');
- Scan_Ptr := Scan_Ptr + 1;
- Token := Tok_At_Sign;
- return;
- end if;
+ Accumulate_Checksum ('@');
+ Scan_Ptr := Scan_Ptr + 1;
+ Token := Tok_At_Sign;
+ return;
-- Asterisk (can be multiplication operator or double asterisk which
-- is the exponentiation compound delimiter).
diff --git a/gcc/ada/sem_aggr.adb b/gcc/ada/sem_aggr.adb
index 3caa84f..b94f369 100644
--- a/gcc/ada/sem_aggr.adb
+++ b/gcc/ada/sem_aggr.adb
@@ -2949,7 +2949,7 @@ package body Sem_Aggr is
while Present (Choice) loop
Analyze_And_Resolve (Choice, Key_Type);
if not Is_Static_Expression (Choice) then
- Error_Msg_N ("Choice must be static", Choice);
+ Error_Msg_N ("choice must be static", Choice);
end if;
Next (Choice);
@@ -2994,7 +2994,7 @@ package body Sem_Aggr is
if Present (Component_Associations (N)) then
if Present (Expressions (N)) then
- Error_Msg_N ("Container aggregate cannot be "
+ Error_Msg_N ("container aggregate cannot be "
& "both positional and named", N);
return;
end if;
@@ -3035,10 +3035,7 @@ package body Sem_Aggr is
Base : constant Node_Id := Expression (N);
begin
- if Ada_Version < Ada_2020 then
- Error_Msg_N ("delta_aggregate is an Ada 202x feature", N);
- Error_Msg_N ("\compile with -gnat2020", N);
- end if;
+ Error_Msg_Ada_2020_Feature ("delta aggregate", Sloc (N));
if not Is_Composite_Type (Typ) then
Error_Msg_N ("not a composite type", N);
@@ -3075,7 +3072,7 @@ package body Sem_Aggr is
while Present (Choice) loop
if Nkind (Choice) = N_Others_Choice then
Error_Msg_N
- ("others not allowed in delta aggregate", Choice);
+ ("OTHERS not allowed in delta aggregate", Choice);
elsif Nkind (Choice) = N_Subtype_Indication then
Resolve_Discrete_Subtype_Indication
@@ -3122,7 +3119,7 @@ package body Sem_Aggr is
if Nkind (Choice) = N_Others_Choice then
Error_Msg_N
- ("others not allowed in delta aggregate", Choice);
+ ("OTHERS not allowed in delta aggregate", Choice);
elsif Is_Entity_Name (Choice)
and then Is_Type (Entity (Choice))
@@ -3848,10 +3845,7 @@ package body Sem_Aggr is
-- by default, then set flag on the new association to indicate that
-- the original association was for such a box-initialized component.
- if Resolve_Record_Aggregate.Is_Box_Present
- and then not Is_Box_Present
- and then Is_Box_Init_By_Default -- ???
- then
+ if Is_Box_Init_By_Default then
Set_Was_Default_Init_Box_Association (Last (Assoc_List));
end if;
end Add_Association;
@@ -5390,7 +5384,7 @@ package body Sem_Aggr is
("OTHERS must represent at least one component", Selectr);
elsif Others_Box = 1 and then Warn_On_Redundant_Constructs then
- Error_Msg_N ("others choice is redundant?", Box_Node);
+ Error_Msg_N ("OTHERS choice is redundant?", Box_Node);
Error_Msg_N
("\previous choices cover all components?", Box_Node);
end if;
@@ -5557,7 +5551,7 @@ package body Sem_Aggr is
-- because the association may be a null array range.
Error_Msg_N
- ("(Ada 2005) null not allowed in null-excluding component??", Expr);
+ ("(Ada 2005) NULL not allowed in null-excluding component??", Expr);
Error_Msg_N
("\Constraint_Error will be raised at run time??", Expr);
diff --git a/gcc/ada/sem_attr.adb b/gcc/ada/sem_attr.adb
index 504ca97..e4537e4 100644
--- a/gcc/ada/sem_attr.adb
+++ b/gcc/ada/sem_attr.adb
@@ -227,9 +227,11 @@ package body Sem_Attr is
procedure Analyze_Attribute (N : Node_Id) is
Loc : constant Source_Ptr := Sloc (N);
Aname : constant Name_Id := Attribute_Name (N);
- P : constant Node_Id := Prefix (N);
Exprs : constant List_Id := Expressions (N);
Attr_Id : constant Attribute_Id := Get_Attribute_Id (Aname);
+ P_Old : constant Node_Id := Prefix (N);
+
+ P : Node_Id := P_Old;
E1 : Node_Id;
E2 : Node_Id;
@@ -348,7 +350,7 @@ package body Sem_Attr is
procedure Check_Floating_Point_Type_2;
-- Verify that prefix of attribute N is a float type and that
- -- two attribute expressions are present
+ -- two attribute expressions are present.
procedure Check_Integer_Type;
-- Verify that prefix of attribute N is an integer type
@@ -782,6 +784,13 @@ package body Sem_Attr is
Par : Node_Id;
begin
+ -- If N does not come from source, the reference is assumed to be
+ -- valid.
+
+ if not Comes_From_Source (N) then
+ return True;
+ end if;
+
Par := Parent (N);
while Present (Par)
and then
@@ -1032,9 +1041,7 @@ package body Sem_Attr is
-- expression comes from source, e.g. when a single component
-- association in an aggregate has a box association.
- elsif Ada_Version >= Ada_2005
- and then OK_Self_Reference
- then
+ elsif Ada_Version >= Ada_2005 and then OK_Self_Reference then
null;
-- OK if reference to current instance of a protected object
@@ -1656,7 +1663,7 @@ package body Sem_Attr is
----------------------
procedure Check_Array_Type is
- D : Int;
+ D : Pos;
-- Dimension number for array attributes
begin
@@ -1741,9 +1748,7 @@ package body Sem_Attr is
("expression for dimension must be static!", E1);
Error_Attr;
- elsif UI_To_Int (Expr_Value (E1)) > D
- or else UI_To_Int (Expr_Value (E1)) < 1
- then
+ elsif Expr_Value (E1) > D or else Expr_Value (E1) < 1 then
Error_Attr ("invalid dimension number for array type", E1);
end if;
end if;
@@ -1833,7 +1838,7 @@ package body Sem_Attr is
-- Case of an expression
- Resolve (P);
+ Resolve (P_Old);
if Is_Access_Type (P_Type) then
@@ -1849,12 +1854,12 @@ package body Sem_Attr is
Freeze_Before (N, Designated_Type (P_Type));
end if;
- Rewrite (P,
- Make_Explicit_Dereference (Sloc (P),
- Prefix => Relocate_Node (P)));
+ Rewrite (P_Old,
+ Make_Explicit_Dereference (Sloc (P_Old),
+ Prefix => Relocate_Node (P_Old)));
- Analyze_And_Resolve (P);
- P_Type := Etype (P);
+ Analyze_And_Resolve (P_Old);
+ P_Type := Etype (P_Old);
if P_Type = Any_Type then
raise Bad_Attribute;
@@ -3099,6 +3104,15 @@ package body Sem_Attr is
end if;
end if;
+ -- If the prefix was rewritten as a raise node, then rewrite N as a
+ -- raise node, to avoid creating inconsistent trees. We still need to
+ -- perform legality checks on the original tree.
+
+ if Nkind (P) in N_Raise_xxx_Error then
+ Rewrite (N, Relocate_Node (P));
+ P := Original_Node (P_Old);
+ end if;
+
-- Remaining processing depends on attribute
case Attr_Id is
@@ -3159,7 +3173,10 @@ package body Sem_Attr is
-- Adjacent --
--------------
- when Attribute_Adjacent =>
+ when Attribute_Adjacent
+ | Attribute_Copy_Sign
+ | Attribute_Remainder
+ =>
Check_Floating_Point_Type_2;
Set_Etype (N, P_Base_Type);
Resolve (E1, P_Base_Type);
@@ -3281,7 +3298,7 @@ package body Sem_Attr is
Check_E0;
if not Is_Object_Reference (P) then
- Error_Attr_P ("prefix for % attribute must be object");
+ Error_Attr_P ("prefix of % attribute must be object");
-- What about the access object cases ???
@@ -3350,7 +3367,9 @@ package body Sem_Attr is
-- Callable --
--------------
- when Attribute_Callable =>
+ when Attribute_Callable
+ | Attribute_Terminated
+ =>
Check_E0;
Set_Etype (N, Standard_Boolean);
Check_Task_Prefix;
@@ -3395,7 +3414,16 @@ package body Sem_Attr is
-- Ceiling --
-------------
- when Attribute_Ceiling =>
+ when Attribute_Ceiling
+ | Attribute_Floor
+ | Attribute_Fraction
+ | Attribute_Machine
+ | Attribute_Machine_Rounding
+ | Attribute_Model
+ | Attribute_Rounding
+ | Attribute_Truncation
+ | Attribute_Unbiased_Rounding
+ =>
Check_Floating_Point_Type_1;
Set_Etype (N, P_Base_Type);
Resolve (E1, P_Base_Type);
@@ -3487,7 +3515,10 @@ package body Sem_Attr is
-- Compose --
-------------
- when Attribute_Compose =>
+ when Attribute_Compose
+ | Attribute_Leading_Part
+ | Attribute_Scaling
+ =>
Check_Floating_Point_Type_2;
Set_Etype (N, P_Base_Type);
Resolve (E1, P_Base_Type);
@@ -3605,11 +3636,7 @@ package body Sem_Attr is
-- Copy_Sign --
---------------
- when Attribute_Copy_Sign =>
- Check_Floating_Point_Type_2;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
- Resolve (E2, P_Base_Type);
+ -- Shares processing with Adjacent attribute
-----------
-- Count --
@@ -3682,7 +3709,7 @@ package body Sem_Attr is
null;
else
Error_Attr
- ("Attribute % must apply to entry of current task", N);
+ ("attribute % must apply to entry of current task", N);
end if;
end if;
@@ -3694,7 +3721,7 @@ package body Sem_Attr is
| E_Entry_Family
| E_Loop
then
- Error_Attr ("Attribute % cannot appear in inner unit", N);
+ Error_Attr ("attribute % cannot appear in inner unit", N);
elsif Ekind (Scope (Ent)) = E_Protected_Type
and then not Has_Completion (Scope (Ent))
@@ -3808,7 +3835,9 @@ package body Sem_Attr is
-- Denorm --
------------
- when Attribute_Denorm =>
+ when Attribute_Denorm
+ | Attribute_Signed_Zeros
+ =>
Check_Floating_Point_Type_0;
Set_Etype (N, Standard_Boolean);
@@ -3891,7 +3920,14 @@ package body Sem_Attr is
-- Emax --
----------
- when Attribute_Emax =>
+ when Attribute_Emax
+ | Attribute_Machine_Emax
+ | Attribute_Machine_Emin
+ | Attribute_Machine_Mantissa
+ | Attribute_Model_Emin
+ | Attribute_Model_Mantissa
+ | Attribute_Safe_Emax
+ =>
Check_Floating_Point_Type_0;
Set_Etype (N, Universal_Integer);
@@ -3982,7 +4018,12 @@ package body Sem_Attr is
-- Epsilon --
-------------
- when Attribute_Epsilon =>
+ when Attribute_Epsilon
+ | Attribute_Model_Epsilon
+ | Attribute_Model_Small
+ | Attribute_Safe_First
+ | Attribute_Safe_Last
+ =>
Check_Floating_Point_Type_0;
Set_Etype (N, Universal_Real);
@@ -4057,7 +4098,9 @@ package body Sem_Attr is
-- First --
-----------
- when Attribute_First =>
+ when Attribute_First
+ | Attribute_Last
+ =>
Check_Array_Or_Scalar_Type;
Bad_Attribute_For_Predicate;
@@ -4065,7 +4108,10 @@ package body Sem_Attr is
-- First_Bit --
---------------
- when Attribute_First_Bit =>
+ when Attribute_First_Bit
+ | Attribute_Last_Bit
+ | Attribute_Position
+ =>
Check_Component;
Set_Etype (N, Universal_Integer);
@@ -4073,7 +4119,9 @@ package body Sem_Attr is
-- First_Valid --
-----------------
- when Attribute_First_Valid =>
+ when Attribute_First_Valid
+ | Attribute_Last_Valid
+ =>
Check_First_Last_Valid;
Set_Etype (N, P_Type);
@@ -4082,8 +4130,8 @@ package body Sem_Attr is
-----------------
when Attribute_Fixed_Value =>
- Check_E1;
Check_Fixed_Point_Type;
+ Check_E1;
Resolve (E1, Any_Integer);
Set_Etype (N, P_Base_Type);
@@ -4091,10 +4139,7 @@ package body Sem_Attr is
-- Floor --
-----------
- when Attribute_Floor =>
- Check_Floating_Point_Type_1;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
+ -- Shares processing with Ceiling attribute
----------
-- Fore --
@@ -4108,10 +4153,7 @@ package body Sem_Attr is
-- Fraction --
--------------
- when Attribute_Fraction =>
- Check_Floating_Point_Type_1;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
+ -- Shares processing with Ceiling attribute
--------------
-- From_Any --
@@ -4283,7 +4325,11 @@ package body Sem_Attr is
-- Large --
-----------
- when Attribute_Large =>
+ when Attribute_Large
+ | Attribute_Small
+ | Attribute_Safe_Large
+ | Attribute_Safe_Small
+ =>
Check_E0;
Check_Real_Type;
Set_Etype (N, Universal_Real);
@@ -4292,35 +4338,25 @@ package body Sem_Attr is
-- Last --
----------
- when Attribute_Last =>
- Check_Array_Or_Scalar_Type;
- Bad_Attribute_For_Predicate;
+ -- Shares processing with First attribute
--------------
-- Last_Bit --
--------------
- when Attribute_Last_Bit =>
- Check_Component;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with First_Bit attribute
----------------
-- Last_Valid --
----------------
- when Attribute_Last_Valid =>
- Check_First_Last_Valid;
- Set_Etype (N, P_Type);
+ -- Shares processing with First_Valid attribute
------------------
-- Leading_Part --
------------------
- when Attribute_Leading_Part =>
- Check_Floating_Point_Type_2;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
- Resolve (E2, Any_Integer);
+ -- Shares processing with Compose attribute
------------
-- Length --
@@ -4690,40 +4726,33 @@ package body Sem_Attr is
-- Machine --
-------------
- when Attribute_Machine =>
- Check_Floating_Point_Type_1;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
+ -- Shares processing with Ceiling attribute
------------------
-- Machine_Emax --
------------------
- when Attribute_Machine_Emax =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Emax attribute
------------------
-- Machine_Emin --
------------------
- when Attribute_Machine_Emin =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Emax attribute
----------------------
-- Machine_Mantissa --
----------------------
- when Attribute_Machine_Mantissa =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Emax attribute
-----------------------
-- Machine_Overflows --
-----------------------
- when Attribute_Machine_Overflows =>
+ when Attribute_Machine_Overflows
+ | Attribute_Machine_Rounds
+ =>
Check_Real_Type;
Check_E0;
Set_Etype (N, Standard_Boolean);
@@ -4732,7 +4761,9 @@ package body Sem_Attr is
-- Machine_Radix --
-------------------
- when Attribute_Machine_Radix =>
+ when Attribute_Machine_Radix
+ | Attribute_Mantissa
+ =>
Check_Real_Type;
Check_E0;
Set_Etype (N, Universal_Integer);
@@ -4741,25 +4772,22 @@ package body Sem_Attr is
-- Machine_Rounding --
----------------------
- when Attribute_Machine_Rounding =>
- Check_Floating_Point_Type_1;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
+ -- Shares processing with Ceiling attribute
--------------------
-- Machine_Rounds --
--------------------
- when Attribute_Machine_Rounds =>
- Check_Real_Type;
- Check_E0;
- Set_Etype (N, Standard_Boolean);
+ -- Shares processing with Machine_Overflows attribute
------------------
-- Machine_Size --
------------------
- when Attribute_Machine_Size =>
+ when Attribute_Machine_Size
+ | Attribute_Object_Size
+ | Attribute_Value_Size
+ =>
Check_E0;
Check_Type;
Check_Not_Incomplete_Type;
@@ -4769,10 +4797,7 @@ package body Sem_Attr is
-- Mantissa --
--------------
- when Attribute_Mantissa =>
- Check_E0;
- Check_Real_Type;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Machine_Radix attribute
---------
-- Max --
@@ -4832,7 +4857,7 @@ package body Sem_Attr is
Error_Attr;
elsif UI_To_Int (Intval (E1)) > Number_Formals (Entity (P))
- or else UI_To_Int (Intval (E1)) < 0
+ or else Intval (E1) < 0
then
Error_Attr ("invalid parameter number for % attribute", E1);
end if;
@@ -4866,42 +4891,31 @@ package body Sem_Attr is
-- Model --
-----------
- when Attribute_Model =>
- Check_Floating_Point_Type_1;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
+ -- Shares processing with Ceiling attribute
----------------
-- Model_Emin --
----------------
- when Attribute_Model_Emin =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Emax attribute
-------------------
-- Model_Epsilon --
-------------------
- when Attribute_Model_Epsilon =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Universal_Real);
+ -- Shares processing with Epsilon attribute
--------------------
-- Model_Mantissa --
--------------------
- when Attribute_Model_Mantissa =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Emax attribute
-----------------
-- Model_Small --
-----------------
- when Attribute_Model_Small =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Universal_Real);
+ -- Shares processing with Epsilon attribute
-------------
-- Modulus --
@@ -5000,11 +5014,7 @@ package body Sem_Attr is
-- Object_Size --
-----------------
- when Attribute_Object_Size =>
- Check_E0;
- Check_Type;
- Check_Not_Incomplete_Type;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Machine_Size attribute
---------
-- Old --
@@ -5311,23 +5321,23 @@ package body Sem_Attr is
-- Position --
--------------
- when Attribute_Position =>
- Check_Component;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with First_Bit attribute
----------
-- Pred --
----------
- when Attribute_Pred =>
+ when Attribute_Pred
+ | Attribute_Succ
+ =>
Check_Scalar_Type;
Check_E1;
Resolve (E1, P_Base_Type);
Set_Etype (N, P_Base_Type);
- -- Since Pred works on the base type, we normally do no check for the
- -- floating-point case, since the base type is unconstrained. But we
- -- make an exception in Check_Float_Overflow mode.
+ -- Since Pred/Succ work on the base type, we normally do no check for
+ -- the floating-point case, since the base type is unconstrained. But
+ -- we make an exception in Check_Float_Overflow mode.
if Is_Floating_Point_Type (P_Type) then
if not Range_Checks_Suppressed (P_Base_Type) then
@@ -5668,7 +5678,7 @@ package body Sem_Attr is
null;
else
Error_Msg_NE
- ("cannot apply reduce to object of type$", N, Typ);
+ ("cannot apply Reduce to object of type$", N, Typ);
end if;
elsif Present (Expressions (Stream))
@@ -5677,7 +5687,7 @@ package body Sem_Attr is
N_Iterated_Component_Association
then
Error_Msg_N
- ("Prefix of reduce must be an iterated component", N);
+ ("prefix of Reduce must be an iterated component", N);
end if;
Analyze (E1);
@@ -5717,11 +5727,7 @@ package body Sem_Attr is
-- Remainder --
---------------
- when Attribute_Remainder =>
- Check_Floating_Point_Type_2;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
- Resolve (E2, P_Base_Type);
+ -- Shares processing with Adjacent attribute
---------------------
-- Restriction_Set --
@@ -5844,52 +5850,37 @@ package body Sem_Attr is
-- Rounding --
--------------
- when Attribute_Rounding =>
- Check_Floating_Point_Type_1;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
+ -- Shares processing with Ceiling attribute
---------------
-- Safe_Emax --
---------------
- when Attribute_Safe_Emax =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Emax attribute
----------------
-- Safe_First --
----------------
- when Attribute_Safe_First =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Universal_Real);
+ -- Shares processing with Epsilon attribute
----------------
-- Safe_Large --
----------------
- when Attribute_Safe_Large =>
- Check_E0;
- Check_Real_Type;
- Set_Etype (N, Universal_Real);
+ -- Shares processing with Large attribute
---------------
-- Safe_Last --
---------------
- when Attribute_Safe_Last =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Universal_Real);
+ -- Shares processing with Epsilon attribute
----------------
-- Safe_Small --
----------------
- when Attribute_Safe_Small =>
- Check_E0;
- Check_Real_Type;
- Set_Etype (N, Universal_Real);
+ -- Shares processing with Large attribute
--------------------------
-- Scalar_Storage_Order --
@@ -5958,18 +5949,13 @@ package body Sem_Attr is
-- Scaling --
-------------
- when Attribute_Scaling =>
- Check_Floating_Point_Type_2;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
+ -- Shares processing with Compose attribute
------------------
-- Signed_Zeros --
------------------
- when Attribute_Signed_Zeros =>
- Check_Floating_Point_Type_0;
- Set_Etype (N, Standard_Boolean);
+ -- Shares processing with Denorm attribute
----------
-- Size --
@@ -6059,10 +6045,7 @@ package body Sem_Attr is
-- Small --
-----------
- when Attribute_Small =>
- Check_E0;
- Check_Real_Type;
- Set_Etype (N, Universal_Real);
+ -- Shares processing with Large attribute
---------------------------------------
-- Small_Denominator/Small_Numerator --
@@ -6071,8 +6054,7 @@ package body Sem_Attr is
when Attribute_Small_Denominator
| Attribute_Small_Numerator
=>
- Check_E0;
- Check_Fixed_Point_Type;
+ Check_Fixed_Point_Type_0;
Set_Etype (N, Universal_Integer);
------------------
@@ -6157,6 +6139,8 @@ package body Sem_Attr is
Check_Restriction (No_Obsolescent_Features, P);
elsif Is_Access_Type (P_Type) then
+ Set_Etype (N, Universal_Integer);
+
if Ekind (P_Type) = E_Access_Subprogram_Type then
Error_Attr_P
("cannot use % attribute for access-to-subprogram type");
@@ -6166,7 +6150,6 @@ package body Sem_Attr is
and then Is_Type (Entity (P))
then
Check_Type;
- Set_Etype (N, Universal_Integer);
-- Validate_Remote_Access_To_Class_Wide_Type for attribute
-- Storage_Size since this attribute is not defined for
@@ -6179,7 +6162,6 @@ package body Sem_Attr is
else
Check_Task_Prefix;
- Set_Etype (N, Universal_Integer);
end if;
else
@@ -6249,30 +6231,7 @@ package body Sem_Attr is
-- Succ --
----------
- when Attribute_Succ =>
- Check_Scalar_Type;
- Check_E1;
- Resolve (E1, P_Base_Type);
- Set_Etype (N, P_Base_Type);
-
- -- Since Pred works on the base type, we normally do no check for the
- -- floating-point case, since the base type is unconstrained. But we
- -- make an exception in Check_Float_Overflow mode.
-
- if Is_Floating_Point_Type (P_Type) then
- if not Range_Checks_Suppressed (P_Base_Type) then
- Set_Do_Range_Check (E1);
- end if;
-
- -- If not modular type, test for overflow check required
-
- else
- if not Is_Modular_Integer_Type (P_Type)
- and then not Range_Checks_Suppressed (P_Base_Type)
- then
- Enable_Range_Check (E1);
- end if;
- end if;
+ -- Shares processing with Pred attribute
--------------------------------
-- System_Allocator_Alignment --
@@ -6301,7 +6260,7 @@ package body Sem_Attr is
then
Error_Attr_P
("% attribute can only be applied to objects " &
- "of class - wide type");
+ "of class-wide type");
end if;
-- The prefix cannot be an incomplete type. However, references to
@@ -6353,10 +6312,7 @@ package body Sem_Attr is
-- Terminated --
----------------
- when Attribute_Terminated =>
- Check_E0;
- Set_Etype (N, Standard_Boolean);
- Check_Task_Prefix;
+ -- Shares processing with Callable attribute
----------------
-- To_Address --
@@ -6419,10 +6375,7 @@ package body Sem_Attr is
-- Truncation --
----------------
- when Attribute_Truncation =>
- Check_Floating_Point_Type_1;
- Resolve (E1, P_Base_Type);
- Set_Etype (N, P_Base_Type);
+ -- Shares processing with Ceiling attribute
----------------
-- Type_Class --
@@ -6611,10 +6564,7 @@ package body Sem_Attr is
-- Unbiased_Rounding --
-----------------------
- when Attribute_Unbiased_Rounding =>
- Check_Floating_Point_Type_1;
- Set_Etype (N, P_Base_Type);
- Resolve (E1, P_Base_Type);
+ -- Shares processing with Ceiling attribute
----------------------
-- Unchecked_Access --
@@ -6795,7 +6745,7 @@ package body Sem_Attr is
if Nkind (Expr) = N_Others_Choice then
Error_Attr
- ("others choice not allowed in attribute %", Expr);
+ ("OTHERS choice not allowed in attribute %", Expr);
-- Otherwise analyze and resolve all indexes
@@ -6842,7 +6792,7 @@ package body Sem_Attr is
if Nkind (Index) = N_Others_Choice then
Error_Attr
- ("others choice not allowed in attribute %", Index);
+ ("OTHERS choice not allowed in attribute %", Index);
-- The index denotes a range of elements
@@ -7017,7 +6967,7 @@ package body Sem_Attr is
elsif Nkind (Comp) = N_Others_Choice then
Error_Attr
- ("others choice not allowed in attribute %", Comp);
+ ("OTHERS choice not allowed in attribute %", Comp);
-- The name of a record component cannot appear in any
-- other form.
@@ -7154,7 +7104,10 @@ package body Sem_Attr is
-- Value --
-----------
- when Attribute_Value =>
+ when Attribute_Value
+ | Attribute_Wide_Value
+ | Attribute_Wide_Wide_Value
+ =>
Check_E1;
Check_Scalar_Type;
@@ -7204,11 +7157,7 @@ package body Sem_Attr is
-- Value_Size --
----------------
- when Attribute_Value_Size =>
- Check_E0;
- Check_Type;
- Check_Not_Incomplete_Type;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Machine_Size attribute
-------------
-- Version --
@@ -7244,51 +7193,22 @@ package body Sem_Attr is
-- Wide_Value --
----------------
- when Attribute_Wide_Value =>
- Check_E1;
- Check_Scalar_Type;
-
- -- Set Etype before resolving expression because expansion
- -- of expression may require enclosing type.
-
- Set_Etype (N, P_Type);
- Validate_Non_Static_Attribute_Function_Call;
-
- -- Check restriction No_Fixed_IO
-
- if Restriction_Check_Required (No_Fixed_IO)
- and then Is_Fixed_Point_Type (P_Type)
- then
- Check_Restriction (No_Fixed_IO, P);
- end if;
+ -- Shares processing with Value attribute
---------------------
-- Wide_Wide_Value --
---------------------
- when Attribute_Wide_Wide_Value =>
- Check_E1;
- Check_Scalar_Type;
-
- -- Set Etype before resolving expression because expansion
- -- of expression may require enclosing type.
-
- Set_Etype (N, P_Type);
- Validate_Non_Static_Attribute_Function_Call;
-
- -- Check restriction No_Fixed_IO
-
- if Restriction_Check_Required (No_Fixed_IO)
- and then Is_Fixed_Point_Type (P_Type)
- then
- Check_Restriction (No_Fixed_IO, P);
- end if;
+ -- Shares processing with Value attribute
---------------------
-- Wide_Wide_Width --
---------------------
- when Attribute_Wide_Wide_Width =>
+ when Attribute_Wide_Wide_Width
+ | Attribute_Wide_Width
+ | Attribute_Width
+ =>
Check_E0;
Check_Scalar_Type;
Set_Etype (N, Universal_Integer);
@@ -7297,19 +7217,13 @@ package body Sem_Attr is
-- Wide_Width --
----------------
- when Attribute_Wide_Width =>
- Check_E0;
- Check_Scalar_Type;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Wide_Wide_Width attribute
-----------
-- Width --
-----------
- when Attribute_Width =>
- Check_E0;
- Check_Scalar_Type;
- Set_Etype (N, Universal_Integer);
+ -- Shares processing with Wide_Wide_Width attribute
---------------
-- Word_Size --
diff --git a/gcc/ada/sem_aux.adb b/gcc/ada/sem_aux.adb
index 36fd6ad..4925ffd 100644
--- a/gcc/ada/sem_aux.adb
+++ b/gcc/ada/sem_aux.adb
@@ -26,6 +26,7 @@
with Atree; use Atree;
with Einfo; use Einfo;
with Nlists; use Nlists;
+with Sinfo; use Sinfo;
with Snames; use Snames;
with Stand; use Stand;
with Uintp; use Uintp;
@@ -430,34 +431,6 @@ package body Sem_Aux is
return Empty;
end First_Tag_Component;
- ---------------------
- -- Get_Binary_Nkind --
- ---------------------
-
- function Get_Binary_Nkind (Op : Entity_Id) return Node_Kind is
- begin
- case Chars (Op) is
- when Name_Op_Add => return N_Op_Add;
- when Name_Op_Concat => return N_Op_Concat;
- when Name_Op_Expon => return N_Op_Expon;
- when Name_Op_Subtract => return N_Op_Subtract;
- when Name_Op_Mod => return N_Op_Mod;
- when Name_Op_Multiply => return N_Op_Multiply;
- when Name_Op_Divide => return N_Op_Divide;
- when Name_Op_Rem => return N_Op_Rem;
- when Name_Op_And => return N_Op_And;
- when Name_Op_Eq => return N_Op_Eq;
- when Name_Op_Ge => return N_Op_Ge;
- when Name_Op_Gt => return N_Op_Gt;
- when Name_Op_Le => return N_Op_Le;
- when Name_Op_Lt => return N_Op_Lt;
- when Name_Op_Ne => return N_Op_Ne;
- when Name_Op_Or => return N_Op_Or;
- when Name_Op_Xor => return N_Op_Xor;
- when others => raise Program_Error;
- end case;
- end Get_Binary_Nkind;
-
-----------------------
-- Get_Called_Entity --
-----------------------
@@ -656,21 +629,6 @@ package body Sem_Aux is
return Empty;
end Get_Rep_Pragma;
- ---------------------
- -- Get_Unary_Nkind --
- ---------------------
-
- function Get_Unary_Nkind (Op : Entity_Id) return Node_Kind is
- begin
- case Chars (Op) is
- when Name_Op_Abs => return N_Op_Abs;
- when Name_Op_Subtract => return N_Op_Minus;
- when Name_Op_Not => return N_Op_Not;
- when Name_Op_Add => return N_Op_Plus;
- when others => raise Program_Error;
- end case;
- end Get_Unary_Nkind;
-
---------------------------------
-- Has_External_Tag_Rep_Clause --
---------------------------------
@@ -1288,19 +1246,6 @@ package body Sem_Aux is
end if;
end Is_Limited_View;
- ----------------------------
- -- Is_Protected_Operation --
- ----------------------------
-
- function Is_Protected_Operation (E : Entity_Id) return Boolean is
- begin
- return
- Is_Entry (E)
- or else (Is_Subprogram (E)
- and then Nkind (Parent (Unit_Declaration_Node (E))) =
- N_Protected_Definition);
- end Is_Protected_Operation;
-
-------------------------------
-- Is_Record_Or_Limited_Type --
-------------------------------
@@ -1414,33 +1359,6 @@ package body Sem_Aux is
return Empty;
end Next_Tag_Component;
- -----------------------
- -- Number_Components --
- -----------------------
-
- function Number_Components (Typ : Entity_Id) return Nat is
- N : Nat := 0;
- Comp : Entity_Id;
-
- begin
- -- We do not call Einfo.First_Component_Or_Discriminant, as this
- -- function does not skip completely hidden discriminants, which we
- -- want to skip here.
-
- if Has_Discriminants (Typ) then
- Comp := First_Discriminant (Typ);
- else
- Comp := First_Component (Typ);
- end if;
-
- while Present (Comp) loop
- N := N + 1;
- Next_Component_Or_Discriminant (Comp);
- end loop;
-
- return N;
- end Number_Components;
-
--------------------------
-- Number_Discriminants --
--------------------------
@@ -1479,38 +1397,6 @@ package body Sem_Aux is
end Object_Type_Has_Constrained_Partial_View;
------------------
- -- Package_Body --
- ------------------
-
- function Package_Body (E : Entity_Id) return Node_Id is
- N : Node_Id;
-
- begin
- if Ekind (E) = E_Package_Body then
- N := Parent (E);
-
- if Nkind (N) = N_Defining_Program_Unit_Name then
- N := Parent (N);
- end if;
-
- else
- N := Package_Spec (E);
-
- if Present (Corresponding_Body (N)) then
- N := Parent (Corresponding_Body (N));
-
- if Nkind (N) = N_Defining_Program_Unit_Name then
- N := Parent (N);
- end if;
- else
- N := Empty;
- end if;
- end if;
-
- return N;
- end Package_Body;
-
- ------------------
-- Package_Spec --
------------------
diff --git a/gcc/ada/sem_aux.ads b/gcc/ada/sem_aux.ads
index 1d82045..237d5dc 100644
--- a/gcc/ada/sem_aux.ads
+++ b/gcc/ada/sem_aux.ads
@@ -34,7 +34,6 @@ with Alloc;
with Namet; use Namet;
with Table;
with Types; use Types;
-with Sinfo; use Sinfo;
package Sem_Aux is
@@ -148,22 +147,10 @@ package Sem_Aux is
-- Typ must be a tagged record type. This function returns the Entity for
-- the first _Tag field in the record type.
- function Get_Binary_Nkind (Op : Entity_Id) return Node_Kind;
- -- Op must be an entity with an Ekind of E_Operator. This function returns
- -- the Nkind value that would be used to construct a binary operator node
- -- referencing this entity. It is an error to call this function if Ekind
- -- (Op) /= E_Operator.
-
function Get_Called_Entity (Call : Node_Id) return Entity_Id;
-- Obtain the entity of the entry, operator, or subprogram being invoked
-- by call Call.
- function Get_Unary_Nkind (Op : Entity_Id) return Node_Kind;
- -- Op must be an entity with an Ekind of E_Operator. This function returns
- -- the Nkind value that would be used to construct a unary operator node
- -- referencing this entity. It is an error to call this function if Ekind
- -- (Op) /= E_Operator.
-
function Get_Rep_Item
(E : Entity_Id;
Nam : Name_Id;
@@ -347,10 +334,6 @@ package Sem_Aux is
-- these types). This older routine overlaps with the previous one, this
-- should be cleaned up???
- function Is_Protected_Operation (E : Entity_Id) return Boolean;
- -- Given a subprogram or entry, determines whether E is a protected entry
- -- or subprogram.
-
function Is_Record_Or_Limited_Type (Typ : Entity_Id) return Boolean;
-- Return True if Typ requires is a record or limited type.
@@ -382,10 +365,6 @@ package Sem_Aux is
-- The result returned is the next _Tag field in this record, or Empty
-- if this is the last such field.
- function Number_Components (Typ : Entity_Id) return Nat;
- -- Typ is a record type, yields number of components (including
- -- discriminants) in type.
-
function Number_Discriminants (Typ : Entity_Id) return Pos;
-- Typ is a type with discriminants, yields number of discriminants in type
@@ -398,10 +377,6 @@ package Sem_Aux is
-- derived type, and the subtype is not an unconstrained array subtype
-- (RM 3.3(23.10/3)).
- function Package_Body (E : Entity_Id) return Node_Id;
- -- Given an entity for a package (spec or body), return the corresponding
- -- package body if any, or else Empty.
-
function Package_Spec (E : Entity_Id) return Node_Id;
-- Given an entity for a package spec, return the corresponding package
-- spec if any, or else Empty.
diff --git a/gcc/ada/sem_cat.adb b/gcc/ada/sem_cat.adb
index 7872c68..ee22113 100644
--- a/gcc/ada/sem_cat.adb
+++ b/gcc/ada/sem_cat.adb
@@ -1068,7 +1068,8 @@ package body Sem_Cat is
and then not Private_Present (P)
and then not Is_Remote_Call_Interface (E)
then
- Error_Msg_N ("public child of rci unit must also be rci unit", N);
+ Error_Msg_N
+ ("public child of 'R'C'I unit must also be 'R'C'I unit", N);
end if;
end if;
end Validate_Categorization_Dependency;
@@ -1580,21 +1581,21 @@ package body Sem_Cat is
if Comes_From_Source (E) then
if Is_Limited_Type (E) then
Error_Msg_N
- ("limited type not allowed in rci unit", Parent (E));
+ ("limited type not allowed in 'R'C'I unit", Parent (E));
Explain_Limited_Type (E, Parent (E));
elsif Ekind (E) in E_Generic_Function
| E_Generic_Package
| E_Generic_Procedure
then
- Error_Msg_N ("generic declaration not allowed in rci unit",
+ Error_Msg_N ("generic declaration not allowed in 'R'C'I unit",
Parent (E));
elsif (Ekind (E) = E_Function or else Ekind (E) = E_Procedure)
and then Has_Pragma_Inline (E)
then
Error_Msg_N
- ("inlined subprogram not allowed in rci unit", Parent (E));
+ ("inlined subprogram not allowed in 'R'C'I unit", Parent (E));
-- Inner packages that are renamings need not be checked. Generic
-- RCI packages are subject to the checks, but entities that come
diff --git a/gcc/ada/sem_ch10.adb b/gcc/ada/sem_ch10.adb
index 2d1232e..e5519bf 100644
--- a/gcc/ada/sem_ch10.adb
+++ b/gcc/ada/sem_ch10.adb
@@ -6184,34 +6184,35 @@ package body Sem_Ch10 is
null;
when N_Subprogram_Declaration =>
- Error_Msg_N ("subprograms not allowed in limited with_clauses", N);
+ Error_Msg_N
+ ("subprogram not allowed in `LIMITED WITH` clause", N);
return;
when N_Generic_Package_Declaration
| N_Generic_Subprogram_Declaration
=>
- Error_Msg_N ("generics not allowed in limited with_clauses", N);
+ Error_Msg_N ("generic not allowed in `LIMITED WITH` clause", N);
return;
when N_Generic_Instantiation =>
Error_Msg_N
- ("generic instantiations not allowed in limited with_clauses",
+ ("generic instantiation not allowed in `LIMITED WITH` clause",
N);
return;
when N_Generic_Renaming_Declaration =>
Error_Msg_N
- ("generic renamings not allowed in limited with_clauses", N);
+ ("generic renaming not allowed in `LIMITED WITH` clause", N);
return;
when N_Subprogram_Renaming_Declaration =>
Error_Msg_N
- ("renamed subprograms not allowed in limited with_clauses", N);
+ ("renamed subprogram not allowed in `LIMITED WITH` clause", N);
return;
when N_Package_Renaming_Declaration =>
Error_Msg_N
- ("renamed packages not allowed in limited with_clauses", N);
+ ("renamed package not allowed in `LIMITED WITH` clause", N);
return;
when others =>
diff --git a/gcc/ada/sem_ch11.adb b/gcc/ada/sem_ch11.adb
index 940c93b..48c9855 100644
--- a/gcc/ada/sem_ch11.adb
+++ b/gcc/ada/sem_ch11.adb
@@ -127,7 +127,7 @@ package body Sem_Ch11 is
and then Comes_From_Source (Id)
then
Error_Msg_N
- ("(Ada 83): duplicate exception choice&", Id);
+ ("(Ada 83) duplicate exception choice&", Id);
end if;
end if;
end if;
diff --git a/gcc/ada/sem_ch12.adb b/gcc/ada/sem_ch12.adb
index 6a32bdc..7e6aa8f 100644
--- a/gcc/ada/sem_ch12.adb
+++ b/gcc/ada/sem_ch12.adb
@@ -1619,7 +1619,7 @@ package body Sem_Ch12 is
Others_Choice := Actual;
if Present (Next (Actual)) then
- Error_Msg_N ("others must be last association", Actual);
+ Error_Msg_N ("OTHERS must be last association", Actual);
end if;
-- This subprogram is used both for formal packages and for
@@ -1630,7 +1630,7 @@ package body Sem_Ch12 is
and then Comes_From_Source (I_Node)
then
Error_Msg_N
- ("others association not allowed in an instance",
+ ("OTHERS association not allowed in an instance",
Actual);
end if;
@@ -12936,10 +12936,10 @@ package body Sem_Ch12 is
elsif Ekind (A_Gen_T) = E_General_Access_Type
and then Ekind (Base_Type (Act_T)) /= E_General_Access_Type
then
- Error_Msg_N -- CODEFIX
+ Error_Msg_N
("actual must be general access type!", Actual);
Error_Msg_NE -- CODEFIX
- ("add ALL to }!", Actual, Act_T);
+ ("\add ALL to }!", Actual, Act_T);
Abandon_Instantiation (Actual);
end if;
end if;
@@ -13230,7 +13230,7 @@ package body Sem_Ch12 is
else
Error_Msg_Name_1 := Chars (Act_T);
Error_Msg_NE
- ("Actual% must implement interface&",
+ ("actual% must implement interface&",
Actual, Etype (Iface));
end if;
diff --git a/gcc/ada/sem_ch13.adb b/gcc/ada/sem_ch13.adb
index b48aeb4..4724e0e 100644
--- a/gcc/ada/sem_ch13.adb
+++ b/gcc/ada/sem_ch13.adb
@@ -64,6 +64,7 @@ with Sinfo; use Sinfo;
with Sinput; use Sinput;
with Snames; use Snames;
with Stand; use Stand;
+with Table;
with Targparm; use Targparm;
with Ttypes; use Ttypes;
with Tbuild; use Tbuild;
@@ -2012,9 +2013,9 @@ package body Sem_Ch13 is
Error_Msg_N
("incompatible interfacing aspects given for &", E);
Error_Msg_Sloc := Sloc (Expo);
- Error_Msg_N ("\aspect `Export` #", E);
+ Error_Msg_N ("\aspect Export #", E);
Error_Msg_Sloc := Sloc (Imp);
- Error_Msg_N ("\aspect `Import` #", E);
+ Error_Msg_N ("\aspect Import #", E);
end if;
-- A variable is most likely modified from the outside. Take
@@ -2096,8 +2097,8 @@ package body Sem_Ch13 is
if A_Id = Aspect_External_Name then
if No (Expo) and then No (Imp) then
Error_Msg_N
- ("aspect `External_Name` requires aspect `Import` or "
- & "`Export`", Aspect);
+ ("aspect External_Name requires aspect Import or "
+ & "Export", Aspect);
end if;
-- Otherwise ensure that aspect Link_Name applies to aspect
@@ -2107,8 +2108,8 @@ package body Sem_Ch13 is
pragma Assert (A_Id = Aspect_Link_Name);
if No (Expo) and then No (Imp) then
Error_Msg_N
- ("aspect `Link_Name` requires aspect `Import` or "
- & "`Export`", Aspect);
+ ("aspect Link_Name requires aspect Import or Export",
+ Aspect);
end if;
end if;
end Analyze_Aspect_External_Link_Name;
@@ -2594,8 +2595,9 @@ package body Sem_Ch13 is
for Asp in Pre_Post_Aspects loop
if Has_Aspect (E, Asp) then
Error_Msg_N
- ("this aspect not allowed for static expression "
- & "functions", Find_Aspect (E, Asp));
+ ("this aspect is not allowed for a static "
+ & "expression function",
+ Find_Aspect (E, Asp));
return;
end if;
@@ -2659,7 +2661,7 @@ package body Sem_Ch13 is
elsif Within_Protected_Type (E) then
Error_Msg_N
- ("aspect% not applicable to protected operations", Id);
+ ("aspect% not applicable to protected operation", Id);
return;
else
@@ -3375,7 +3377,7 @@ package body Sem_Ch13 is
else
Error_Msg_N
- ("main subprogram CPU is out of range", Expr);
+ ("main subprogram 'C'P'U is out of range", Expr);
end if;
-- For the Priority aspect
@@ -3408,15 +3410,11 @@ package body Sem_Ch13 is
-- System.Tasking, but this package does not trigger the
-- required initialization of the run-time library.
- declare
- Discard : Entity_Id;
- begin
- if Restricted_Profile then
- Discard := RTE (RE_Activate_Restricted_Tasks);
- else
- Discard := RTE (RE_Activate_Tasks);
- end if;
- end;
+ if Restricted_Profile then
+ Discard_Node (RTE (RE_Activate_Restricted_Tasks));
+ else
+ Discard_Node (RTE (RE_Activate_Tasks));
+ end if;
-- Handling for these aspects in subprograms is complete
@@ -4149,7 +4147,8 @@ package body Sem_Ch13 is
-- Must not be parenthesized
if Paren_Count (Expr) /= 0 then
- Error_Msg_F ("extra parentheses ignored", Expr);
+ Error_Msg -- CODEFIX
+ ("redundant parentheses", First_Sloc (Expr));
end if;
-- List of arguments is list of aggregate expressions
@@ -4204,14 +4203,14 @@ package body Sem_Ch13 is
elsif A_Id = Aspect_Default_Value
and then not Is_Scalar_Type (E)
then
- Error_Msg_N ("aspect% can only be applied to scalar type",
- Id);
+ Error_Msg_N
+ ("aspect% can only be applied to scalar type", Id);
goto Continue;
elsif A_Id = Aspect_Default_Component_Value then
if not Is_Array_Type (E) then
- Error_Msg_N ("aspect% can only be applied to array " &
- "type", Id);
+ Error_Msg_N
+ ("aspect% can only be applied to array type", Id);
goto Continue;
elsif not Is_Scalar_Type (Component_Type (E)) then
@@ -4426,14 +4425,25 @@ package body Sem_Ch13 is
if Nkind (Parent (N)) = N_Compilation_Unit then
Error_Msg_Name_1 := Nam;
- Error_Msg_N ("incorrect placement of aspect `%`", E);
+ Error_Msg_N ("incorrect placement of aspect %", E);
goto Continue;
end if;
- if Nkind (Expr) /= N_Aggregate then
+ if Nkind (Expr) /= N_Aggregate
+ or else Null_Record_Present (Expr)
+ then
Error_Msg_Name_1 := Nam;
Error_Msg_NE
- ("wrong syntax for aspect `%` for &", Id, E);
+ ("wrong syntax for aspect % for &", Id, E);
+ goto Continue;
+ end if;
+
+ -- Check that the expression is a proper aggregate (no
+ -- parentheses).
+
+ if Paren_Count (Expr) /= 0 then
+ Error_Msg -- CODEFIX
+ ("redundant parentheses", First_Sloc (Expr));
goto Continue;
end if;
@@ -4456,7 +4466,7 @@ package body Sem_Ch13 is
then
Error_Msg_Name_1 := Nam;
Error_Msg_NE
- ("wrong syntax for aspect `%` for &", Id, E);
+ ("wrong syntax for aspect % for &", Id, E);
goto Continue;
end if;
@@ -6619,7 +6629,7 @@ package body Sem_Ch13 is
-- come from an aspect specification.
if not Is_Task_Type (U_Ent) then
- Error_Msg_N ("CPU can only be defined for task", Nam);
+ Error_Msg_N ("'C'P'U can only be defined for task", Nam);
elsif Duplicate_Clause then
null;
@@ -6710,7 +6720,7 @@ package body Sem_Ch13 is
else
Error_Msg_NE
- ("Default Iterator must be a primitive of&", Func, U_Ent);
+ ("Default_Iterator must be a primitive of&", Func, U_Ent);
end if;
end Default_Iterator;
@@ -7764,7 +7774,7 @@ package body Sem_Ch13 is
| N_Implicit_Label_Declaration
then
Error_Msg_N
- ("this declaration not allowed in machine code subprogram",
+ ("this declaration is not allowed in machine code subprogram",
DeclO);
end if;
@@ -7963,7 +7973,7 @@ package body Sem_Ch13 is
end if;
if Nkind (Choice) = N_Others_Choice then
- Error_Msg_N ("others choice not allowed here", Choice);
+ Error_Msg_N ("OTHERS choice not allowed here", Choice);
Err := True;
elsif Nkind (Choice) = N_Range then
@@ -9141,7 +9151,7 @@ package body Sem_Ch13 is
or else Etype (Expression (Expr)) /= Typ
then
Error_Msg_N
- ("expression must denaote subtype", Expression (Expr));
+ ("expression must denote subtype", Expression (Expr));
return False_Range;
end if;
@@ -15086,27 +15096,39 @@ package body Sem_Ch13 is
function Parse_Aspect_Stable_Properties
(Aspect_Spec : Node_Id; Negated : out Boolean) return Subprogram_List
is
- L : List_Id;
- Id : Node_Id;
-
function Extract_Entity (Expr : Node_Id) return Entity_Id;
- -- Given an element of a Stable_Properties aspect spec,
- -- return the associated entity.
+ -- Given an element of a Stable_Properties aspect spec, return the
+ -- associated entity.
-- This function updates the Negated flag as a side-effect.
+ --------------------
+ -- Extract_Entity --
+ --------------------
+
function Extract_Entity (Expr : Node_Id) return Entity_Id is
- Name : Node_Id := Expr;
+ Name : Node_Id;
begin
if Nkind (Expr) = N_Op_Not then
Negated := True;
Name := Right_Opnd (Expr);
+ else
+ Name := Expr;
end if;
+
if Nkind (Name) in N_Has_Entity then
return Entity (Name);
else
return Empty;
end if;
end Extract_Entity;
+
+ -- Local variables
+
+ L : List_Id;
+ Id : Node_Id;
+
+ -- Start of processing for Parse_Aspect_Stable_Properties
+
begin
Negated := False;
@@ -15120,7 +15142,7 @@ package body Sem_Ch13 is
for I in Result'Range loop
Result (I) := Extract_Entity (Id);
- if not Present (Result (I)) then
+ if No (Result (I)) then
pragma Assert (Serious_Errors_Detected > 0);
goto Ignore_Aspect;
end if;
@@ -15145,14 +15167,13 @@ package body Sem_Ch13 is
Assign_Indexed_Subp : Node_Id := Empty;
begin
- if Ada_Version < Ada_2020 then
- Error_Msg_N ("Aspect Aggregate is an Ada_2020 feature", N);
+ Error_Msg_Ada_2020_Feature ("aspect Aggregate", Sloc (N));
- elsif Nkind (N) /= N_Aggregate
+ if Nkind (N) /= N_Aggregate
or else Present (Expressions (N))
or else No (Component_Associations (N))
then
- Error_Msg_N ("Aspect Aggregate requires an aggregate "
+ Error_Msg_N ("aspect Aggregate requires an aggregate "
& "with component associations", N);
return;
end if;
@@ -15224,13 +15245,14 @@ package body Sem_Ch13 is
("NOT modifier not allowed for Stable_Properties aspect"
& " of a type", PF_Arg);
else
- Error_Msg_N ("Mixed use of NOT modifiers", PF_Arg);
+ Error_Msg_N ("mixed use of NOT modifiers", PF_Arg);
end if;
end Modifier_Error;
PF_Name : Node_Id := PF_Arg;
- -- Start of processing for Check_Property_Function_Arg
+ -- Start of processing for Check_Property_Function_Arg
+
begin
if Nkind (PF_Arg) = N_Op_Not then
PF_Name := Right_Opnd (PF_Arg);
@@ -15257,14 +15279,14 @@ package body Sem_Ch13 is
if Nkind (PF_Name) not in
N_Identifier | N_Operator_Symbol | N_Selected_Component
then
- Error_Msg_N ("Bad property function name", PF_Name);
+ Error_Msg_N ("bad property function name", PF_Name);
end if;
end Check_Property_Function_Arg;
+ -- Start of processing for Validate_Aspect_Stable_Properties
+
begin
- if Ada_Version < Ada_2020 then
- Error_Msg_N ("Aspect Stable_Properties is an Ada_2020 feature", N);
- end if;
+ Error_Msg_Ada_2020_Feature ("aspect Stable_Properties", Sloc (N));
if (not Is_Aspect_Of_Type) and then (not Is_Subprogram (E)) then
Error_Msg_N ("Stable_Properties aspect can only be specified for "
@@ -15273,13 +15295,13 @@ package body Sem_Ch13 is
if Is_Aspect_Of_Type then
if not Is_Tagged_Type (E) then
Error_Msg_N
- ("Stable_Properties'Class aspect cannot be specified for "
+ ("Stable_Properties''Class aspect cannot be specified for "
& "an untagged type", N);
end if;
else
if not Is_Dispatching_Operation (E) then
Error_Msg_N
- ("Stable_Properties'Class aspect cannot be specified for "
+ ("Stable_Properties''Class aspect cannot be specified for "
& "a subprogram that is not a primitive subprogram "
& "of a tagged type", N);
end if;
@@ -15291,7 +15313,7 @@ package body Sem_Ch13 is
or else Null_Record_Present (N)
or else not Present (Expressions (N))
then
- Error_Msg_N ("Bad Stable_Properties aspect specification", N);
+ Error_Msg_N ("bad Stable_Properties aspect specification", N);
return;
end if;
@@ -15300,7 +15322,7 @@ package body Sem_Ch13 is
begin
while Present (PF_Arg) loop
Check_Property_Function_Arg (PF_Arg);
- PF_Arg := Next (PF_Arg);
+ Next (PF_Arg);
end loop;
end;
else
@@ -15344,7 +15366,7 @@ package body Sem_Ch13 is
-- First or Last (Container) => Cursor
if Etype (Ent) /= Cursor then
- Error_Msg_N ("primitive for First must yield a curosr", N);
+ Error_Msg_N ("primitive for First must yield a cursor", N);
end if;
elsif Nam = Name_Next then
@@ -16203,303 +16225,6 @@ package body Sem_Ch13 is
end loop;
end Validate_Address_Clauses;
- ---------------------------
- -- Validate_Independence --
- ---------------------------
-
- procedure Validate_Independence is
- SU : constant Uint := UI_From_Int (System_Storage_Unit);
- N : Node_Id;
- E : Entity_Id;
- IC : Boolean;
- Comp : Entity_Id;
- Addr : Node_Id;
- P : Node_Id;
-
- procedure Check_Array_Type (Atyp : Entity_Id);
- -- Checks if the array type Atyp has independent components, and
- -- if not, outputs an appropriate set of error messages.
-
- procedure No_Independence;
- -- Output message that independence cannot be guaranteed
-
- function OK_Component (C : Entity_Id) return Boolean;
- -- Checks one component to see if it is independently accessible, and
- -- if so yields True, otherwise yields False if independent access
- -- cannot be guaranteed. This is a conservative routine, it only
- -- returns True if it knows for sure, it returns False if it knows
- -- there is a problem, or it cannot be sure there is no problem.
-
- procedure Reason_Bad_Component (C : Entity_Id);
- -- Outputs continuation message if a reason can be determined for
- -- the component C being bad.
-
- ----------------------
- -- Check_Array_Type --
- ----------------------
-
- procedure Check_Array_Type (Atyp : Entity_Id) is
- Ctyp : constant Entity_Id := Component_Type (Atyp);
-
- begin
- -- OK if no alignment clause, no pack, and no component size
-
- if not Has_Component_Size_Clause (Atyp)
- and then not Has_Alignment_Clause (Atyp)
- and then not Is_Packed (Atyp)
- then
- return;
- end if;
-
- -- Case where component size is greater than or equal to the maximum
- -- integer size and the alignment of the array is at least as large
- -- as the alignment of the component. We are OK in this situation.
-
- if Known_Component_Size (Atyp)
- and then Component_Size (Atyp) >= System_Max_Integer_Size
- and then Known_Alignment (Atyp)
- and then Known_Alignment (Ctyp)
- and then Alignment (Atyp) >= Alignment (Ctyp)
- then
- return;
- end if;
-
- -- Check actual component size
-
- if not Known_Component_Size (Atyp)
- or else not Addressable (Component_Size (Atyp))
- or else Component_Size (Atyp) mod Esize (Ctyp) /= 0
- then
- No_Independence;
-
- -- Bad component size, check reason
-
- if Has_Component_Size_Clause (Atyp) then
- P := Get_Attribute_Definition_Clause
- (Atyp, Attribute_Component_Size);
-
- if Present (P) then
- Error_Msg_Sloc := Sloc (P);
- Error_Msg_N ("\because of Component_Size clause#", N);
- return;
- end if;
- end if;
-
- if Is_Packed (Atyp) then
- P := Get_Rep_Pragma (Atyp, Name_Pack);
-
- if Present (P) then
- Error_Msg_Sloc := Sloc (P);
- Error_Msg_N ("\because of pragma Pack#", N);
- return;
- end if;
- end if;
-
- -- No reason found, just return
-
- return;
- end if;
-
- -- Array type is OK independence-wise
-
- return;
- end Check_Array_Type;
-
- ---------------------
- -- No_Independence --
- ---------------------
-
- procedure No_Independence is
- begin
- if Pragma_Name (N) = Name_Independent then
- Error_Msg_NE ("independence cannot be guaranteed for&", N, E);
- else
- Error_Msg_NE
- ("independent components cannot be guaranteed for&", N, E);
- end if;
- end No_Independence;
-
- ------------------
- -- OK_Component --
- ------------------
-
- function OK_Component (C : Entity_Id) return Boolean is
- Rec : constant Entity_Id := Scope (C);
- Ctyp : constant Entity_Id := Etype (C);
-
- begin
- -- OK if no component clause, no Pack, and no alignment clause
-
- if No (Component_Clause (C))
- and then not Is_Packed (Rec)
- and then not Has_Alignment_Clause (Rec)
- then
- return True;
- end if;
-
- -- Here we look at the actual component layout. A component is
- -- addressable if its size is a multiple of the Esize of the
- -- component type, and its starting position in the record has
- -- appropriate alignment, and the record itself has appropriate
- -- alignment to guarantee the component alignment.
-
- -- Make sure sizes are static, always assume the worst for any
- -- cases where we cannot check static values.
-
- if not (Known_Static_Esize (C)
- and then
- Known_Static_Esize (Ctyp))
- then
- return False;
- end if;
-
- -- Size of component must be addressable or greater than the maximum
- -- integer size and a multiple of bytes.
-
- if not Addressable (Esize (C))
- and then Esize (C) < System_Max_Integer_Size
- then
- return False;
- end if;
-
- -- Check size is proper multiple
-
- if Esize (C) mod Esize (Ctyp) /= 0 then
- return False;
- end if;
-
- -- Check alignment of component is OK
-
- if not Known_Component_Bit_Offset (C)
- or else Component_Bit_Offset (C) < Uint_0
- or else Component_Bit_Offset (C) mod Esize (Ctyp) /= 0
- then
- return False;
- end if;
-
- -- Check alignment of record type is OK
-
- if not Known_Alignment (Rec)
- or else (Alignment (Rec) * SU) mod Esize (Ctyp) /= 0
- then
- return False;
- end if;
-
- -- All tests passed, component is addressable
-
- return True;
- end OK_Component;
-
- --------------------------
- -- Reason_Bad_Component --
- --------------------------
-
- procedure Reason_Bad_Component (C : Entity_Id) is
- Rec : constant Entity_Id := Scope (C);
- Ctyp : constant Entity_Id := Etype (C);
-
- begin
- -- If component clause present assume that's the problem
-
- if Present (Component_Clause (C)) then
- Error_Msg_Sloc := Sloc (Component_Clause (C));
- Error_Msg_N ("\because of Component_Clause#", N);
- return;
- end if;
-
- -- If pragma Pack clause present, assume that's the problem
-
- if Is_Packed (Rec) then
- P := Get_Rep_Pragma (Rec, Name_Pack);
-
- if Present (P) then
- Error_Msg_Sloc := Sloc (P);
- Error_Msg_N ("\because of pragma Pack#", N);
- return;
- end if;
- end if;
-
- -- See if record has bad alignment clause
-
- if Has_Alignment_Clause (Rec)
- and then Known_Alignment (Rec)
- and then (Alignment (Rec) * SU) mod Esize (Ctyp) /= 0
- then
- P := Get_Attribute_Definition_Clause (Rec, Attribute_Alignment);
-
- if Present (P) then
- Error_Msg_Sloc := Sloc (P);
- Error_Msg_N ("\because of Alignment clause#", N);
- end if;
- end if;
-
- -- Couldn't find a reason, so return without a message
-
- return;
- end Reason_Bad_Component;
-
- -- Start of processing for Validate_Independence
-
- begin
- for J in Independence_Checks.First .. Independence_Checks.Last loop
- N := Independence_Checks.Table (J).N;
- E := Independence_Checks.Table (J).E;
- IC := Pragma_Name (N) = Name_Independent_Components;
-
- -- Deal with component case
-
- if Ekind (E) in E_Component | E_Discriminant then
- if not OK_Component (E) then
- No_Independence;
- Reason_Bad_Component (E);
- goto Continue;
- end if;
- end if;
-
- -- Deal with record with Independent_Components
-
- if IC and then Is_Record_Type (E) then
- Comp := First_Component_Or_Discriminant (E);
- while Present (Comp) loop
- if not OK_Component (Comp) then
- No_Independence;
- Reason_Bad_Component (Comp);
- goto Continue;
- end if;
-
- Next_Component_Or_Discriminant (Comp);
- end loop;
- end if;
-
- -- Deal with address clause case
-
- if Is_Object (E) then
- Addr := Address_Clause (E);
-
- if Present (Addr) then
- No_Independence;
- Error_Msg_Sloc := Sloc (Addr);
- Error_Msg_N ("\because of Address clause#", N);
- goto Continue;
- end if;
- end if;
-
- -- Deal with independent components for array type
-
- if IC and then Is_Array_Type (E) then
- Check_Array_Type (E);
- end if;
-
- -- Deal with independent components for array object
-
- if IC and then Is_Object (E) and then Is_Array_Type (Etype (E)) then
- Check_Array_Type (Etype (E));
- end if;
-
- <<Continue>> null;
- end loop;
- end Validate_Independence;
-
------------------------------
-- Validate_Iterable_Aspect --
------------------------------
diff --git a/gcc/ada/sem_ch13.ads b/gcc/ada/sem_ch13.ads
index 389bb41..e2ea55a 100644
--- a/gcc/ada/sem_ch13.ads
+++ b/gcc/ada/sem_ch13.ads
@@ -23,7 +23,6 @@
-- --
------------------------------------------------------------------------------
-with Table;
with Types; use Types;
with Sem_Disp; use Sem_Disp;
with Uintp; use Uintp;
@@ -238,36 +237,6 @@ package Sem_Ch13 is
-- table of saved address clauses checking for suspicious alignments and
-- if necessary issuing warnings.
- procedure Validate_Independence;
- -- This is called after the back end has been called (and thus after the
- -- layout of components has been back annotated). It goes through the
- -- table of saved pragma Independent[_Component] entries, checking that
- -- independence can be achieved, and if necessary issuing error messages.
-
- -------------------------------------
- -- Table for Validate_Independence --
- -------------------------------------
-
- -- If a legal pragma Independent or Independent_Components is given for
- -- an entity, then an entry is made in this table, to be checked by a
- -- call to Validate_Independence after back annotation of layout is done.
-
- type Independence_Check_Record is record
- N : Node_Id;
- -- The pragma Independent or Independent_Components
-
- E : Entity_Id;
- -- The entity to which it applies
- end record;
-
- package Independence_Checks is new Table.Table (
- Table_Component_Type => Independence_Check_Record,
- Table_Index_Type => Int,
- Table_Low_Bound => 1,
- Table_Initial => 20,
- Table_Increment => 200,
- Table_Name => "Independence_Checks");
-
-----------------------------------
-- Handling of Aspect Visibility --
-----------------------------------
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb
index 00834ce..c01bce1 100644
--- a/gcc/ada/sem_ch3.adb
+++ b/gcc/ada/sem_ch3.adb
@@ -833,7 +833,7 @@ package body Sem_Ch3 is
if All_Present (N)
and then Ada_Version >= Ada_2005
then
- Error_Msg_N ("ALL is not permitted for anonymous access types", N);
+ Error_Msg_N ("ALL not permitted for anonymous access types", N);
end if;
-- Ada 2005 (AI-254): In case of anonymous access to subprograms call
@@ -1026,7 +1026,8 @@ package body Sem_Ch3 is
if Nkind (Def) in N_Has_Etype then
if Etype (Def) = T_Name then
Error_Msg_N
- ("type& cannot be used before end of its declaration", Def);
+ ("type& cannot be used before the end of its declaration",
+ Def);
end if;
-- If this is not a subtype, then this is an access_definition
@@ -12992,7 +12993,7 @@ package body Sem_Ch3 is
then
Error_Msg_N
("deferred constant must be declared in visible part",
- Parent (Prev));
+ Parent (Prev));
end if;
if Is_Access_Type (T)
@@ -14618,11 +14619,13 @@ package body Sem_Ch3 is
Comp_List : constant Elist_Id := New_Elmt_List;
Parent_Type : constant Entity_Id := Etype (Typ);
Assoc_List : constant List_Id := New_List;
- Discr_Val : Elmt_Id;
- Errors : Boolean;
- New_C : Entity_Id;
- Old_C : Entity_Id;
- Is_Static : Boolean := True;
+
+ Discr_Val : Elmt_Id;
+ Errors : Boolean;
+ New_C : Entity_Id;
+ Old_C : Entity_Id;
+ Is_Static : Boolean := True;
+ Is_Compile_Time_Known : Boolean := True;
procedure Collect_Fixed_Components (Typ : Entity_Id);
-- Collect parent type components that do not appear in a variant part
@@ -14772,7 +14775,11 @@ package body Sem_Ch3 is
while Present (Discr_Val) loop
if not Is_OK_Static_Expression (Node (Discr_Val)) then
Is_Static := False;
- exit;
+
+ if not Compile_Time_Known_Value (Node (Discr_Val)) then
+ Is_Compile_Time_Known := False;
+ exit;
+ end if;
end if;
Next_Elmt (Discr_Val);
@@ -14870,19 +14877,18 @@ package body Sem_Ch3 is
end if;
end Add_Discriminants;
- if Is_Static
+ if Is_Compile_Time_Known
and then Is_Variant_Record (Typ)
then
Collect_Fixed_Components (Typ);
-
- Gather_Components (
- Typ,
- Component_List (Type_Definition (Parent (Typ))),
- Governed_By => Assoc_List,
- Into => Comp_List,
- Report_Errors => Errors);
- pragma Assert (not Errors
- or else Serious_Errors_Detected > 0);
+ Gather_Components
+ (Typ,
+ Component_List (Type_Definition (Parent (Typ))),
+ Governed_By => Assoc_List,
+ Into => Comp_List,
+ Report_Errors => Errors,
+ Allow_Compile_Time => True);
+ pragma Assert (not Errors or else Serious_Errors_Detected > 0);
Create_All_Components;
@@ -14890,7 +14896,7 @@ package body Sem_Ch3 is
-- with constraints, we retrieve the record definition of the parent
-- type to select the components of the proper variant.
- elsif Is_Static
+ elsif Is_Compile_Time_Known
and then Is_Tagged_Type (Typ)
and then Nkind (Parent (Typ)) = N_Full_Type_Declaration
and then
@@ -14898,13 +14904,13 @@ package body Sem_Ch3 is
and then Is_Variant_Record (Parent_Type)
then
Collect_Fixed_Components (Typ);
-
Gather_Components
(Typ,
Component_List (Type_Definition (Parent (Parent_Type))),
- Governed_By => Assoc_List,
- Into => Comp_List,
- Report_Errors => Errors);
+ Governed_By => Assoc_List,
+ Into => Comp_List,
+ Report_Errors => Errors,
+ Allow_Compile_Time => True);
-- Note: previously there was a check at this point that no errors
-- were detected. As a consequence of AI05-220 there may be an error
@@ -14912,21 +14918,19 @@ package body Sem_Ch3 is
-- static constraint.
-- If the tagged derivation has a type extension, collect all the
- -- new components therein.
+ -- new relevant components therein via Gather_Components.
if Present (Record_Extension_Part (Type_Definition (Parent (Typ))))
then
- Old_C := First_Component (Typ);
- while Present (Old_C) loop
- if Original_Record_Component (Old_C) = Old_C
- and then Chars (Old_C) /= Name_uTag
- and then Chars (Old_C) /= Name_uParent
- then
- Append_Elmt (Old_C, Comp_List);
- end if;
-
- Next_Component (Old_C);
- end loop;
+ Gather_Components
+ (Typ,
+ Component_List
+ (Record_Extension_Part (Type_Definition (Parent (Typ)))),
+ Governed_By => Assoc_List,
+ Into => Comp_List,
+ Report_Errors => Errors,
+ Allow_Compile_Time => True,
+ Include_Interface_Tag => True);
end if;
Create_All_Components;
@@ -16943,7 +16947,7 @@ package body Sem_Ch3 is
then
if Ada_Version = Ada_83 and then Comes_From_Source (Indic) then
Error_Msg_N
- ("(Ada 83): premature use of type for derivation", Indic);
+ ("(Ada 83) premature use of type for derivation", Indic);
end if;
end if;
diff --git a/gcc/ada/sem_ch4.adb b/gcc/ada/sem_ch4.adb
index 7b358d4..7a8c261 100644
--- a/gcc/ada/sem_ch4.adb
+++ b/gcc/ada/sem_ch4.adb
@@ -2297,7 +2297,7 @@ package body Sem_Ch4 is
end if;
if Aliased_Present (A) then
- Error_Msg_N ("aliased not allowed in declare_expression", A);
+ Error_Msg_N ("ALIASED not allowed in declare_expression", A);
end if;
if Constant_Present (A)
@@ -2449,7 +2449,7 @@ package body Sem_Ch4 is
if Etype (N) = Any_Type then
Error_Msg_N
- ("type incompatible with that of `THEN` expression",
+ ("type incompatible with that of THEN expression",
Else_Expr);
return;
end if;
@@ -5455,7 +5455,7 @@ package body Sem_Ch4 is
Apply_Compile_Time_Constraint_Error
(N, "component not present in }??",
CE_Discriminant_Check_Failed,
- Ent => Prefix_Type, Rep => False);
+ Ent => Prefix_Type);
Set_Raises_Constraint_Error (N);
return;
@@ -5700,7 +5700,7 @@ package body Sem_Ch4 is
Error_Msg_N ("\use qualified expression instead", N);
elsif Nkind (Expr) = N_Allocator then
- Error_Msg_N ("argument of conversion cannot be an allocator", N);
+ Error_Msg_N ("argument of conversion cannot be allocator", N);
Error_Msg_N ("\use qualified expression instead", N);
elsif Nkind (Expr) = N_String_Literal then
@@ -5711,8 +5711,8 @@ package body Sem_Ch4 is
if Ada_Version = Ada_83 then
Resolve (Expr, Typ);
else
- Error_Msg_N ("argument of conversion cannot be character literal",
- N);
+ Error_Msg_N
+ ("argument of conversion cannot be character literal", N);
Error_Msg_N ("\use qualified expression instead", N);
end if;
@@ -5721,7 +5721,8 @@ package body Sem_Ch4 is
| Name_Unchecked_Access
| Name_Unrestricted_Access
then
- Error_Msg_N ("argument of conversion cannot be access", N);
+ Error_Msg_N
+ ("argument of conversion cannot be access attribute", N);
Error_Msg_N ("\use qualified expression instead", N);
end if;
@@ -8088,8 +8089,7 @@ package body Sem_Ch4 is
-- resolution does not depend on the type of the parameter that
-- includes the indexing operation.
- elsif Nkind (Parent (Par)) in
- N_Function_Call | N_Procedure_Call_Statement
+ elsif Nkind (Parent (Par)) in N_Subprogram_Call
and then Is_Entity_Name (Name (Parent (Par)))
then
declare
diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb
index b136356..04fc980 100644
--- a/gcc/ada/sem_ch5.adb
+++ b/gcc/ada/sem_ch5.adb
@@ -195,7 +195,8 @@ package body Sem_Ch5 is
or else Is_Protected_Component (Ent)
then
Error_Msg_N
- ("protected function cannot modify protected object", N);
+ ("protected function cannot modify its protected object",
+ N);
return;
end if;
end;
@@ -705,7 +706,8 @@ package body Sem_Ch5 is
and then Convention (S) = Convention_Protected
then
Error_Msg_N
- ("protected function cannot modify protected object",
+ ("protected function cannot modify its protected " &
+ "object",
Lhs);
end if;
@@ -771,7 +773,7 @@ package body Sem_Ch5 is
if Is_Protected_Part_Of_Constituent (Lhs) and then Within_Function then
Error_Msg_N
- ("protected function cannot modify protected object", Lhs);
+ ("protected function cannot modify its protected object", Lhs);
end if;
-- Resolution may have updated the subtype, in case the left-hand side
@@ -954,7 +956,7 @@ package body Sem_Ch5 is
Apply_Compile_Time_Constraint_Error
(N => Rhs,
Msg =>
- "(Ada 2005) null not allowed in null-excluding objects??",
+ "(Ada 2005) NULL not allowed in null-excluding objects??",
Reason => CE_Null_Not_Allowed);
-- We still mark this as a possible modification, that's necessary
@@ -1387,16 +1389,7 @@ package body Sem_Ch5 is
----------------------------
procedure Analyze_Case_Statement (N : Node_Id) is
- Exp : Node_Id;
- Exp_Type : Entity_Id;
- Exp_Btype : Entity_Id;
- Last_Choice : Nat;
-
- Others_Present : Boolean;
- -- Indicates if Others was present
-
- pragma Warnings (Off, Last_Choice);
- -- Don't care about assigned value
+ Exp : constant Node_Id := Expression (N);
Statements_Analyzed : Boolean := False;
-- Set True if at least some statement sequences get analyzed. If False
@@ -1404,9 +1397,6 @@ package body Sem_Ch5 is
-- the case statement, and as a result it is not a good idea to output
-- warning messages about unreachable code.
- Save_Unblocked_Exit_Count : constant Nat := Unblocked_Exit_Count;
- -- Recursively save value of this global, will be restored on exit
-
procedure Non_Static_Choice_Error (Choice : Node_Id);
-- Error routine invoked by the generic instantiation below when the
-- case statement has a non static choice.
@@ -1490,11 +1480,20 @@ package body Sem_Ch5 is
Analyze_Statements (Statements (Alternative));
end Process_Statements;
+ -- Local variables
+
+ Exp_Type : Entity_Id;
+ Exp_Btype : Entity_Id;
+
+ Others_Present : Boolean;
+ -- Indicates if Others was present
+
+ Save_Unblocked_Exit_Count : constant Nat := Unblocked_Exit_Count;
+ -- Recursively save value of this global, will be restored on exit
+
-- Start of processing for Analyze_Case_Statement
begin
- Unblocked_Exit_Count := 0;
- Exp := Expression (N);
Analyze (Exp);
-- The expression must be of any discrete type. In rare cases, the
@@ -1558,7 +1557,9 @@ package body Sem_Ch5 is
Exp_Type := Exp_Btype;
end if;
- -- Call instantiated procedures to analyzwe and check discrete choices
+ -- Call instantiated procedures to analyze and check discrete choices
+
+ Unblocked_Exit_Count := 0;
Analyze_Choices (Alternatives (N), Exp_Type);
Check_Choices (N, Alternatives (N), Exp_Type, Others_Present);
@@ -1773,8 +1774,6 @@ package body Sem_Ch5 is
-- on which they depend will not be available at the freeze point.
procedure Analyze_If_Statement (N : Node_Id) is
- E : Node_Id;
-
Save_Unblocked_Exit_Count : constant Nat := Unblocked_Exit_Count;
-- Recursively save value of this global, will be restored on exit
@@ -1839,6 +1838,11 @@ package body Sem_Ch5 is
end if;
end Analyze_Cond_Then;
+ -- Local variables
+
+ E : Node_Id;
+ -- For iterating over elsif parts
+
-- Start of processing for Analyze_If_Statement
begin
@@ -2620,7 +2624,10 @@ package body Sem_Ch5 is
end if;
if Present (Iterator_Filter (N)) then
- Analyze_And_Resolve (Iterator_Filter (N), Standard_Boolean);
+ -- Preanalyze the filter. Expansion will take place when enclosing
+ -- loop is expanded.
+
+ Preanalyze_And_Resolve (Iterator_Filter (N), Standard_Boolean);
end if;
end Analyze_Iterator_Specification;
@@ -3017,6 +3024,9 @@ package body Sem_Ch5 is
begin
Set_Iterator_Specification (Scheme, I_Spec);
Set_Loop_Parameter_Specification (Scheme, Empty);
+ Set_Iterator_Filter (I_Spec,
+ Relocate_Node (Iterator_Filter (N)));
+
Analyze_Iterator_Specification (I_Spec);
-- In a generic context, analyze the original domain of
@@ -3089,7 +3099,10 @@ package body Sem_Ch5 is
Check_Predicate_Use (Entity (Subtype_Mark (DS)));
end if;
- Make_Index (DS, N);
+ if Nkind (DS) not in N_Raise_xxx_Error then
+ Make_Index (DS, N);
+ end if;
+
Set_Ekind (Id, E_Loop_Parameter);
-- A quantified expression which appears in a pre- or post-condition may
diff --git a/gcc/ada/sem_ch6.adb b/gcc/ada/sem_ch6.adb
index 35e13a5..7bab772 100644
--- a/gcc/ada/sem_ch6.adb
+++ b/gcc/ada/sem_ch6.adb
@@ -1537,12 +1537,12 @@ package body Sem_Ch6 is
-- Can it really happen (extended return???)
Error_Msg_N
- ("aliased only allowed for limited return objects "
+ ("ALIASED only allowed for limited return objects "
& "in Ada 2012??", N);
elsif not Is_Limited_View (R_Type) then
Error_Msg_N
- ("aliased only allowed for limited return objects", N);
+ ("ALIASED only allowed for limited return objects", N);
end if;
end if;
@@ -2490,13 +2490,11 @@ package body Sem_Ch6 is
Result : Entity_Id := Empty;
begin
- -- Loop outward through the Scope_Stack, skipping blocks, loops,
- -- and postconditions.
+ -- Loop outward through the Scope_Stack, skipping blocks, and loops
for J in reverse 0 .. Scope_Stack.Last loop
Result := Scope_Stack.Table (J).Entity;
- exit when Ekind (Result) not in E_Block | E_Loop
- and then Chars (Result) /= Name_uPostconditions;
+ exit when Ekind (Result) not in E_Block | E_Loop;
end loop;
pragma Assert (Present (Result));
@@ -4401,22 +4399,46 @@ package body Sem_Ch6 is
if Expander_Active
and then Transform_Function_Array
- and then Present (Spec_Id)
- and then Ekind (Spec_Id) = E_Function
and then Nkind (N) /= N_Subprogram_Body_Stub
- and then Rewritten_For_C (Spec_Id)
then
- Set_Has_Completion (Spec_Id);
+ declare
+ S : constant Entity_Id :=
+ (if Present (Spec_Id)
+ then Spec_Id
+ else Defining_Unit_Name (Specification (N)));
+ Proc_Body : Node_Id;
- Rewrite (N, Build_Procedure_Body_Form (Spec_Id, N));
- Analyze (N);
+ begin
+ if Ekind (S) = E_Function and then Rewritten_For_C (S) then
+ Set_Has_Completion (S);
+ Proc_Body := Build_Procedure_Body_Form (S, N);
- -- The entity for the created procedure must remain invisible, so it
- -- does not participate in resolution of subsequent references to the
- -- function.
+ if Present (Spec_Id) then
+ Rewrite (N, Proc_Body);
+ Analyze (N);
- Set_Is_Immediately_Visible (Corresponding_Spec (N), False);
- goto Leave;
+ -- The entity for the created procedure must remain
+ -- invisible, so it does not participate in resolution of
+ -- subsequent references to the function.
+
+ Set_Is_Immediately_Visible (Corresponding_Spec (N), False);
+
+ -- If we do not have a separate spec for N, build one and
+ -- insert the new body right after.
+
+ else
+ Rewrite (N,
+ Make_Subprogram_Declaration (Loc,
+ Specification => Relocate_Node (Specification (N))));
+ Analyze (N);
+ Insert_After_And_Analyze (N, Proc_Body);
+ Set_Is_Immediately_Visible
+ (Corresponding_Spec (Proc_Body), False);
+ end if;
+
+ goto Leave;
+ end if;
+ end;
end if;
-- If a separate spec is present, then deal with freezing issues
@@ -9946,7 +9968,7 @@ package body Sem_Ch6 is
Error_Msg_Sloc :=
Text_Ptr'Max (Sloc (Entity (E1)), Sloc (Entity (E2)));
Error_Msg_NE
- ("Meaning of& differs because of declaration#", E1, E2);
+ ("meaning of& differs because of declaration#", E1, E2);
end if;
return Result;
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index 07484d5..4689ae4 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -772,6 +772,31 @@ package body Sem_Ch8 is
-- Obtain the name of the object from node Nod which is being renamed by
-- the object renaming declaration N.
+ function Find_Raise_Node (N : Node_Id) return Traverse_Result;
+ -- Process one node in search for N_Raise_xxx_Error nodes.
+ -- Return Abandon if found, OK otherwise.
+
+ ---------------------
+ -- Find_Raise_Node --
+ ---------------------
+
+ function Find_Raise_Node (N : Node_Id) return Traverse_Result is
+ begin
+ if Nkind (N) in N_Raise_xxx_Error then
+ return Abandon;
+ else
+ return OK;
+ end if;
+ end Find_Raise_Node;
+
+ ------------------------
+ -- No_Raise_xxx_Error --
+ ------------------------
+
+ function No_Raise_xxx_Error is new Traverse_Func (Find_Raise_Node);
+ -- Traverse tree to look for a N_Raise_xxx_Error node and returns
+ -- Abandon if so and OK if none found.
+
------------------------------
-- Check_Constrained_Object --
------------------------------
@@ -1454,10 +1479,11 @@ package body Sem_Ch8 is
then
Error_Msg_N ("incompatible types in renaming", Nam);
- -- AI12-0383: Names that denote values can be renamed
+ -- AI12-0383: Names that denote values can be renamed.
+ -- Ignore (accept) N_Raise_xxx_Error nodes in this context.
- elsif Ada_Version < Ada_2020 then
- Error_Msg_N ("value in renaming requires -gnat2020", Nam);
+ elsif No_Raise_xxx_Error (Nam) = OK then
+ Error_Msg_Ada_2020_Feature ("value in renaming", Sloc (Nam));
end if;
Set_Etype (Id, T2);
@@ -7867,7 +7893,7 @@ package body Sem_Ch8 is
elsif Warn_On_Obsolescent_Feature and then False then
Error_Msg_N
- ("applying 'Class to an untagged incomplete type"
+ ("applying ''Class to an untagged incomplete type"
& " is an obsolescent feature (RM J.11)?r?", N);
end if;
end if;
diff --git a/gcc/ada/sem_ch9.adb b/gcc/ada/sem_ch9.adb
index a9d720b..b7b7d7d 100644
--- a/gcc/ada/sem_ch9.adb
+++ b/gcc/ada/sem_ch9.adb
@@ -790,13 +790,13 @@ package body Sem_Ch9 is
if Kind /= E_Block and then Kind /= E_Loop
and then not Is_Entry (Task_Nam)
then
- Error_Msg_N ("enclosing body of accept must be a task", N);
+ Error_Msg_N ("enclosing body of ACCEPT must be a task", N);
return;
end if;
end loop;
if Ekind (Etype (Task_Nam)) /= E_Task_Type then
- Error_Msg_N ("invalid context for accept statement", N);
+ Error_Msg_N ("invalid context for ACCEPT statement", N);
return;
end if;
@@ -844,7 +844,7 @@ package body Sem_Ch9 is
end loop;
if Entry_Nam = Any_Id then
- Error_Msg_N ("no entry declaration matches accept statement", N);
+ Error_Msg_N ("no entry declaration matches ACCEPT statement", N);
return;
else
Set_Entity (Nam, Entry_Nam);
@@ -882,7 +882,7 @@ package body Sem_Ch9 is
if Entry_Nam = Scope_Stack.Table (J).Entity then
Error_Msg_N
- ("duplicate accept statement for same entry (RM 9.5.2 (15))", N);
+ ("duplicate ACCEPT statement for same entry (RM 9.5.2 (15))", N);
-- Do not continue analysis of accept statement, to prevent
-- cascaded errors.
@@ -904,8 +904,8 @@ package body Sem_Ch9 is
when N_Asynchronous_Select =>
Error_Msg_N
- ("accept statements are not allowed within an "
- & "asynchronous select inner to the enclosing task body",
+ ("ACCEPT statement not allowed within an "
+ & "asynchronous SELECT inner to the enclosing task body",
N);
exit;
@@ -2671,7 +2671,7 @@ package body Sem_Ch9 is
if Entity (EDN1) = Ent then
Error_Msg_Sloc := Sloc (Stm1);
Error_Msg_N
- ("accept duplicates one on line#??", Stm);
+ ("ACCEPT duplicates one on line#??", Stm);
exit;
end if;
end if;
@@ -2691,16 +2691,16 @@ package body Sem_Ch9 is
Check_Potentially_Blocking_Operation (N);
if Terminate_Present and Delay_Present then
- Error_Msg_N ("at most one of terminate or delay alternative", N);
+ Error_Msg_N ("at most one of TERMINATE or DELAY alternative", N);
elsif not Accept_Present then
Error_Msg_N
- ("select must contain at least one accept alternative", N);
+ ("SELECT must contain at least one ACCEPT alternative", N);
end if;
if Present (Else_Statements (N)) then
if Terminate_Present or Delay_Present then
- Error_Msg_N ("else part not allowed with other alternatives", N);
+ Error_Msg_N ("ELSE part not allowed with other alternatives", N);
end if;
Analyze_Statements (Else_Statements (N));
diff --git a/gcc/ada/sem_disp.adb b/gcc/ada/sem_disp.adb
index cf54337..36efa42 100644
--- a/gcc/ada/sem_disp.adb
+++ b/gcc/ada/sem_disp.adb
@@ -625,7 +625,7 @@ package body Sem_Disp is
Par := Parent (Par);
end if;
- if Nkind (Par) in N_Function_Call | N_Procedure_Call_Statement
+ if Nkind (Par) in N_Subprogram_Call
and then Is_Entity_Name (Name (Par))
then
declare
diff --git a/gcc/ada/sem_elab.adb b/gcc/ada/sem_elab.adb
index d7a8bb0..89b6e13 100644
--- a/gcc/ada/sem_elab.adb
+++ b/gcc/ada/sem_elab.adb
@@ -2414,10 +2414,16 @@ package body Sem_Elab is
-- Default_Initial_Condition
elsif Is_Default_Initial_Condition_Proc (Subp_Id) then
- Output_Verification_Call
- (Pred => "Default_Initial_Condition",
- Id => First_Formal_Type (Subp_Id),
- Id_Kind => "type");
+
+ -- Only do output for a normal DIC procedure, since partial DIC
+ -- procedures are subsidiary to those.
+
+ if not Is_Partial_DIC_Procedure (Subp_Id) then
+ Output_Verification_Call
+ (Pred => "Default_Initial_Condition",
+ Id => First_Formal_Type (Subp_Id),
+ Id_Kind => "type");
+ end if;
-- Entries
@@ -3738,7 +3744,7 @@ package body Sem_Elab is
Set_Is_Dispatching_Call
(Marker,
- Nkind (N) in N_Function_Call | N_Procedure_Call_Statement
+ Nkind (N) in N_Subprogram_Call
and then Present (Controlling_Argument (N)));
Set_Is_Elaboration_Checks_OK_Node
@@ -19362,7 +19368,7 @@ package body Sem_Elab is
function Is_Call_Of_Generic_Formal (N : Node_Id) return Boolean is
begin
- return Nkind (N) in N_Function_Call | N_Procedure_Call_Statement
+ return Nkind (N) in N_Subprogram_Call
-- Always return False if debug flag -gnatd.G is set
diff --git a/gcc/ada/sem_eval.adb b/gcc/ada/sem_eval.adb
index 198f72f..8d47589 100644
--- a/gcc/ada/sem_eval.adb
+++ b/gcc/ada/sem_eval.adb
@@ -43,6 +43,7 @@ with Rtsfind; use Rtsfind;
with Sem; use Sem;
with Sem_Aux; use Sem_Aux;
with Sem_Cat; use Sem_Cat;
+with Sem_Ch3; use Sem_Ch3;
with Sem_Ch6; use Sem_Ch6;
with Sem_Ch8; use Sem_Ch8;
with Sem_Elab; use Sem_Elab;
@@ -124,7 +125,7 @@ package body Sem_Eval is
type CV_Cache_Array is array (CV_Range) of CV_Entry;
- CV_Cache : CV_Cache_Array := (others => (Node_High_Bound, Uint_0));
+ CV_Cache : CV_Cache_Array;
-- This is the actual cache, with entries consisting of node/value pairs,
-- and the impossible value Node_High_Bound used for unset entries.
@@ -1855,6 +1856,12 @@ package body Sem_Eval is
N_Character_Literal | N_Real_Literal | N_String_Literal | N_Null
then
return True;
+
+ -- Evaluate static discriminants, to eliminate dead paths and
+ -- redundant discriminant checks.
+
+ elsif Is_Static_Discriminant_Component (Op) then
+ return True;
end if;
end if;
@@ -3818,6 +3825,24 @@ package body Sem_Eval is
Warn_On_Known_Condition (N);
end Eval_Relational_Op;
+ -----------------------------
+ -- Eval_Selected_Component --
+ -----------------------------
+
+ procedure Eval_Selected_Component (N : Node_Id) is
+ begin
+ -- If an attribute reference or a LHS, nothing to do.
+ -- Also do not fold if N is an [in] out subprogram parameter.
+ -- Fold will perform the other relevant tests.
+
+ if Nkind (Parent (N)) /= N_Attribute_Reference
+ and then Is_LHS (N) = No
+ and then not Is_Actual_Out_Or_In_Out_Parameter (N)
+ then
+ Fold (N);
+ end if;
+ end Eval_Selected_Component;
+
----------------
-- Eval_Shift --
----------------
@@ -4359,8 +4384,62 @@ package body Sem_Eval is
-- processing is to check for a non-static context for the operand.
procedure Eval_Unchecked_Conversion (N : Node_Id) is
+ Target_Type : constant Entity_Id := Etype (N);
+ Operand : constant Node_Id := Expression (N);
+ Operand_Type : constant Entity_Id := Etype (Operand);
+
begin
- Check_Non_Static_Context (Expression (N));
+ Check_Non_Static_Context (Operand);
+
+ -- If we have a conversion of a compile time known value to a target
+ -- type and the value is in range of the target type, then we can simply
+ -- replace the construct by an integer literal of the correct type. We
+ -- only apply this to discrete types being converted. Possibly it may
+ -- apply in other cases, but it is too much trouble to worry about.
+
+ -- Note that we do not do this transformation if the Kill_Range_Check
+ -- flag is set, since then the value may be outside the expected range.
+ -- This happens in the Normalize_Scalars case.
+
+ -- We also skip this if either the target or operand type is biased
+ -- because in this case, the unchecked conversion is supposed to
+ -- preserve the bit pattern, not the integer value.
+
+ if Is_Integer_Type (Target_Type)
+ and then not Has_Biased_Representation (Target_Type)
+ and then Is_Discrete_Type (Operand_Type)
+ and then not Has_Biased_Representation (Operand_Type)
+ and then Compile_Time_Known_Value (Operand)
+ and then not Kill_Range_Check (N)
+ then
+ declare
+ Val : constant Uint := Expr_Rep_Value (Operand);
+
+ begin
+ if Compile_Time_Known_Value (Type_Low_Bound (Target_Type))
+ and then
+ Compile_Time_Known_Value (Type_High_Bound (Target_Type))
+ and then
+ Val >= Expr_Value (Type_Low_Bound (Target_Type))
+ and then
+ Val <= Expr_Value (Type_High_Bound (Target_Type))
+ then
+ Rewrite (N, Make_Integer_Literal (Sloc (N), Val));
+
+ -- If Address is the target type, just set the type to avoid a
+ -- spurious type error on the literal when Address is a visible
+ -- integer type.
+
+ if Is_Descendant_Of_Address (Target_Type) then
+ Set_Etype (N, Target_Type);
+ else
+ Analyze_And_Resolve (N, Target_Type);
+ end if;
+
+ return;
+ end if;
+ end;
+ end if;
end Eval_Unchecked_Conversion;
--------------------
@@ -4433,6 +4512,15 @@ package body Sem_Eval is
elsif Kind = N_Unchecked_Type_Conversion then
return Expr_Rep_Value (Expression (N));
+ -- Static discriminant value
+
+ elsif Is_Static_Discriminant_Component (N) then
+ return Expr_Rep_Value
+ (Get_Discriminant_Value
+ (Entity (Selector_Name (N)),
+ Etype (Prefix (N)),
+ Discriminant_Constraint (Etype (Prefix (N)))));
+
else
raise Program_Error;
end if;
@@ -4520,6 +4608,15 @@ package body Sem_Eval is
elsif Kind = N_Unchecked_Type_Conversion then
Val := Expr_Value (Expression (N));
+ -- Static discriminant value
+
+ elsif Is_Static_Discriminant_Component (N) then
+ Val := Expr_Value
+ (Get_Discriminant_Value
+ (Entity (Selector_Name (N)),
+ Etype (Prefix (N)),
+ Discriminant_Constraint (Etype (Prefix (N)))));
+
else
raise Program_Error;
end if;
@@ -4747,6 +4844,32 @@ package body Sem_Eval is
end if;
end Flag_Non_Static_Expr;
+ ----------
+ -- Fold --
+ ----------
+
+ procedure Fold (N : Node_Id) is
+ Typ : constant Entity_Id := Etype (N);
+ begin
+ -- If not known at compile time or if already a literal, nothing to do
+
+ if Nkind (N) in N_Numeric_Or_String_Literal
+ or else not Compile_Time_Known_Value (N)
+ then
+ null;
+
+ elsif Is_Discrete_Type (Typ) then
+ Fold_Uint (N, Expr_Value (N), Static => Is_Static_Expression (N));
+
+ elsif Is_Real_Type (Typ) then
+ Fold_Ureal (N, Expr_Value_R (N), Static => Is_Static_Expression (N));
+
+ elsif Is_String_Type (Typ) then
+ Fold_Str
+ (N, Strval (Expr_Value_S (N)), Static => Is_Static_Expression (N));
+ end if;
+ end Fold;
+
----------------
-- Fold_Dummy --
----------------
@@ -4785,7 +4908,7 @@ package body Sem_Eval is
Static : Boolean := False;
Check_Elab : Boolean := False)
is
- Typ : constant Entity_Id := Etype (Left);
+ Typ : constant Entity_Id := Base_Type (Etype (Left));
procedure Check_Elab_Call;
-- Add checks related to calls in elaboration code
diff --git a/gcc/ada/sem_eval.ads b/gcc/ada/sem_eval.ads
index 76e4bdf..972cee6 100644
--- a/gcc/ada/sem_eval.ads
+++ b/gcc/ada/sem_eval.ads
@@ -330,6 +330,7 @@ package Sem_Eval is
procedure Eval_Op_Not (N : Node_Id);
procedure Eval_Real_Literal (N : Node_Id);
procedure Eval_Relational_Op (N : Node_Id);
+ procedure Eval_Selected_Component (N : Node_Id);
procedure Eval_Shift (N : Node_Id);
procedure Eval_Short_Circuit (N : Node_Id);
procedure Eval_Slice (N : Node_Id);
@@ -387,6 +388,10 @@ package Sem_Eval is
-- The call has no effect if Raises_Constraint_Error (N) is True, since
-- there is no point in folding if we have an error.
+ procedure Fold (N : Node_Id);
+ -- Rewrite N with the relevant value if Compile_Time_Known_Value (N) is
+ -- True, otherwise a no-op.
+
function Is_In_Range
(N : Node_Id;
Typ : Entity_Id;
diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb
index 1bcbb25..3ef5e82 100644
--- a/gcc/ada/sem_prag.adb
+++ b/gcc/ada/sem_prag.adb
@@ -466,7 +466,7 @@ package body Sem_Prag is
if Nkind (Case_Guard) = N_Others_Choice then
if Others_Seen then
Error_Msg_N
- ("only one others choice allowed in contract cases",
+ ("only one OTHERS choice allowed in contract cases",
Case_Guard);
else
Others_Seen := True;
@@ -474,7 +474,7 @@ package body Sem_Prag is
elsif Others_Seen then
Error_Msg_N
- ("others must be the last choice in contract cases", N);
+ ("OTHERS must be the last choice in contract cases", N);
end if;
-- Preanalyze the case guard and consequence
@@ -545,16 +545,31 @@ package body Sem_Prag is
-- Single and multiple contract cases must appear in aggregate form. If
-- this is not the case, then either the parser or the analysis of the
- -- pragma failed to produce an aggregate.
+ -- pragma failed to produce an aggregate, e.g. when the contract is
+ -- "null" or a "(null record)".
- pragma Assert (Nkind (CCases) = N_Aggregate);
+ pragma Assert
+ (if Nkind (CCases) = N_Aggregate
+ then Null_Record_Present (CCases)
+ xor (Present (Component_Associations (CCases))
+ or
+ Present (Expressions (CCases)))
+ else Nkind (CCases) = N_Null);
-- Only CASE_GUARD => CONSEQUENCE clauses are allowed
- if Present (Component_Associations (CCases))
+ if Nkind (CCases) = N_Aggregate
+ and then Present (Component_Associations (CCases))
and then No (Expressions (CCases))
then
+ -- Check that the expression is a proper aggregate (no parentheses)
+
+ if Paren_Count (CCases) /= 0 then
+ Error_Msg -- CODEFIX
+ ("redundant parentheses", First_Sloc (CCases));
+ end if;
+
-- Ensure that the formal parameters are visible when analyzing all
-- clauses. This falls out of the general rule of aspects pertaining
-- to subprogram declarations.
@@ -1267,9 +1282,9 @@ package body Sem_Prag is
(Item_Is_Input : out Boolean;
Item_Is_Output : out Boolean)
is
- -- A constant or IN parameter of access type should be handled
- -- like a variable, as the underlying memory pointed-to can be
- -- modified. Use Adjusted_Kind to do this adjustment.
+ -- A constant or IN parameter of access-to-variable type should be
+ -- handled like a variable, as the underlying memory pointed-to
+ -- can be modified. Use Adjusted_Kind to do this adjustment.
Adjusted_Kind : Entity_Kind := Ekind (Item_Id);
@@ -1277,7 +1292,7 @@ package body Sem_Prag is
if Ekind (Item_Id) in E_Constant
| E_Generic_In_Parameter
| E_In_Parameter
- and then Is_Access_Type (Etype (Item_Id))
+ and then Is_Access_Variable (Etype (Item_Id))
then
Adjusted_Kind := E_Variable;
end if;
@@ -1975,7 +1990,7 @@ package body Sem_Prag is
-- clause as this will lead to misleading errors.
if Has_Extra_Parentheses (Deps) then
- return;
+ goto Leave;
end if;
if Present (Component_Associations (Deps)) then
@@ -2066,7 +2081,7 @@ package body Sem_Prag is
else
Error_Msg_N ("malformed dependency relation", Deps);
- return;
+ goto Leave;
end if;
-- The top level dependency relation is malformed. This is a syntax
@@ -8861,7 +8876,7 @@ package body Sem_Prag is
Error_Pragma ("at least one parameter required for pragma%");
elsif Ekind (Formal) /= E_Out_Parameter then
- Error_Pragma ("first parameter must have mode out for pragma%");
+ Error_Pragma ("first parameter must have mode OUT for pragma%");
else
Set_Is_Valued_Procedure (Ent);
@@ -11747,7 +11762,7 @@ package body Sem_Prag is
if Nkind (Prop) = N_Others_Choice then
if Others_Seen then
SPARK_Msg_N
- ("only one others choice allowed in option External",
+ ("only one OTHERS choice allowed in option External",
Prop);
else
Others_Seen := True;
@@ -11755,7 +11770,7 @@ package body Sem_Prag is
elsif Others_Seen then
SPARK_Msg_N
- ("others must be the last property in option External",
+ ("OTHERS must be the last property in option External",
Prop);
-- The only remaining legal options are the four predefined
@@ -12903,30 +12918,31 @@ package body Sem_Prag is
-- ASSERTION_KIND ::= RM_ASSERTION_KIND | ID_ASSERTION_KIND
- -- RM_ASSERTION_KIND ::= Assert |
- -- Static_Predicate |
- -- Dynamic_Predicate |
- -- Pre |
- -- Pre'Class |
- -- Post |
- -- Post'Class |
- -- Type_Invariant |
- -- Type_Invariant'Class
-
- -- ID_ASSERTION_KIND ::= Assert_And_Cut |
- -- Assume |
- -- Contract_Cases |
- -- Debug |
- -- Default_Initial_Condition |
- -- Ghost |
- -- Initial_Condition |
- -- Loop_Invariant |
- -- Loop_Variant |
- -- Postcondition |
- -- Precondition |
- -- Predicate |
- -- Refined_Post |
- -- Statement_Assertions
+ -- RM_ASSERTION_KIND ::= Assert |
+ -- Static_Predicate |
+ -- Dynamic_Predicate |
+ -- Pre |
+ -- Pre'Class |
+ -- Post |
+ -- Post'Class |
+ -- Type_Invariant |
+ -- Type_Invariant'Class |
+ -- Default_Initial_Condition
+
+ -- ID_ASSERTION_KIND ::= Assert_And_Cut |
+ -- Assume |
+ -- Contract_Cases |
+ -- Debug |
+ -- Ghost |
+ -- Initial_Condition |
+ -- Loop_Invariant |
+ -- Loop_Variant |
+ -- Postcondition |
+ -- Precondition |
+ -- Predicate |
+ -- Refined_Post |
+ -- Statement_Assertions |
+ -- Subprogram_Variant
-- Note: The RM_ASSERTION_KIND list is language-defined, and the
-- ID_ASSERTION_KIND list contains implementation-defined additions
@@ -21363,16 +21379,11 @@ package body Sem_Prag is
-- package does not trigger the required initialization of the
-- run-time library.
- declare
- Discard : Entity_Id;
- pragma Warnings (Off, Discard);
- begin
- if Restricted_Profile then
- Discard := RTE (RE_Activate_Restricted_Tasks);
- else
- Discard := RTE (RE_Activate_Tasks);
- end if;
- end;
+ if Restricted_Profile then
+ Discard_Node (RTE (RE_Activate_Restricted_Tasks));
+ else
+ Discard_Node (RTE (RE_Activate_Tasks));
+ end if;
-- Task or Protected, must be of type Integer
@@ -28492,35 +28503,69 @@ package body Sem_Prag is
Constit, Encapsulating_State (Constit_Id));
end if;
- -- The only other source of legal constituents is the body
- -- state space of the related package.
-
else
- if Present (Body_States) then
- State_Elmt := First_Elmt (Body_States);
- while Present (State_Elmt) loop
+ declare
+ Pack_Id : Entity_Id;
+ Placement : State_Space_Kind;
+ begin
+ -- Find where the constituent lives with respect to the
+ -- state space.
- -- Consume a valid constituent to signal that it has
- -- been encountered.
+ Find_Placement_In_State_Space
+ (Item_Id => Constit_Id,
+ Placement => Placement,
+ Pack_Id => Pack_Id);
- if Node (State_Elmt) = Constit_Id then
- Remove_Elmt (Body_States, State_Elmt);
- Collect_Constituent;
- return;
- end if;
+ -- The constituent is part of the visible state of a
+ -- private child package, but lacks a Part_Of indicator.
- Next_Elmt (State_Elmt);
- end loop;
- end if;
+ if Placement = Visible_State_Space
+ and then Is_Child_Unit (Pack_Id)
+ and then not Is_Generic_Unit (Pack_Id)
+ and then Is_Private_Descendant (Pack_Id)
+ then
+ Error_Msg_Name_1 := Chars (State_Id);
+ SPARK_Msg_NE
+ ("& cannot act as constituent of state %",
+ Constit, Constit_Id);
+ Error_Msg_Sloc :=
+ Sloc (Enclosing_Declaration (Constit_Id));
+ SPARK_Msg_NE
+ ("\missing Part_Of indicator # should specify "
+ & "encapsulator &",
+ Constit, State_Id);
- -- At this point it is known that the constituent is not
- -- part of the package hidden state and cannot be used in
- -- a refinement (SPARK RM 7.2.2(9)).
+ -- The only other source of legal constituents is the
+ -- body state space of the related package.
- Error_Msg_Name_1 := Chars (Spec_Id);
- SPARK_Msg_NE
- ("cannot use & in refinement, constituent is not a hidden "
- & "state of package %", Constit, Constit_Id);
+ else
+ if Present (Body_States) then
+ State_Elmt := First_Elmt (Body_States);
+ while Present (State_Elmt) loop
+
+ -- Consume a valid constituent to signal that it
+ -- has been encountered.
+
+ if Node (State_Elmt) = Constit_Id then
+ Remove_Elmt (Body_States, State_Elmt);
+ Collect_Constituent;
+ return;
+ end if;
+
+ Next_Elmt (State_Elmt);
+ end loop;
+ end if;
+
+ -- At this point it is known that the constituent is
+ -- not part of the package hidden state and cannot be
+ -- used in a refinement (SPARK RM 7.2.2(9)).
+
+ Error_Msg_Name_1 := Chars (Spec_Id);
+ SPARK_Msg_NE
+ ("cannot use & in refinement, constituent is not a "
+ & "hidden state of package %", Constit, Constit_Id);
+ end if;
+ end;
end if;
end Match_Constituent;
@@ -28942,6 +28987,20 @@ package body Sem_Prag is
-- in the refinement clause.
Report_Unused_Constituents (Part_Of_Constits);
+
+ -- Avoid a cascading error reporting a missing refinement by adding a
+ -- dummy constituent.
+
+ if No (Refinement_Constituents (State_Id)) then
+ Set_Refinement_Constituents (State_Id, New_Elmt_List (Any_Id));
+ end if;
+
+ -- At this point the refinement might be dummy, but must be
+ -- well-formed, to prevent cascaded errors.
+
+ pragma Assert (Has_Null_Refinement (State_Id)
+ xor
+ Has_Non_Null_Refinement (State_Id));
end Analyze_Refinement_Clause;
-----------------------------
@@ -29126,16 +29185,31 @@ package body Sem_Prag is
-- Single and multiple contract cases must appear in aggregate form. If
-- this is not the case, then either the parser of the analysis of the
- -- pragma failed to produce an aggregate.
+ -- pragma failed to produce an aggregate, e.g. when the contract is
+ -- "null" or a "(null record)".
- pragma Assert (Nkind (Variants) = N_Aggregate);
+ pragma Assert
+ (if Nkind (Variants) = N_Aggregate
+ then Null_Record_Present (Variants)
+ xor (Present (Component_Associations (Variants))
+ or
+ Present (Expressions (Variants)))
+ else Nkind (Variants) = N_Null);
-- Only "change_direction => discrete_expression" clauses are allowed
- if Present (Component_Associations (Variants))
+ if Nkind (Variants) = N_Aggregate
+ and then Present (Component_Associations (Variants))
and then No (Expressions (Variants))
then
+ -- Check that the expression is a proper aggregate (no parentheses)
+
+ if Paren_Count (Variants) /= 0 then
+ Error_Msg -- CODEFIX
+ ("redundant parentheses", First_Sloc (Variants));
+ end if;
+
-- Ensure that the formal parameters are visible when analyzing all
-- clauses. This falls out of the general rule of aspects pertaining
-- to subprogram declarations.
@@ -30174,13 +30248,23 @@ package body Sem_Prag is
Formal := First_Entity (Spec_Id);
while Present (Formal) loop
if Ekind (Formal) in E_In_Out_Parameter | E_In_Parameter then
+
+ -- IN parameters can act as output when the related type is
+ -- access-to-variable.
+
+ if Ekind (Formal) = E_In_Parameter
+ and then Is_Access_Variable (Etype (Formal))
+ then
+ Append_New_Elmt (Formal, Subp_Outputs);
+ end if;
+
Append_New_Elmt (Formal, Subp_Inputs);
end if;
if Ekind (Formal) in E_In_Out_Parameter | E_Out_Parameter then
Append_New_Elmt (Formal, Subp_Outputs);
- -- Out parameters can act as inputs when the related type is
+ -- OUT parameters can act as inputs when the related type is
-- tagged, unconstrained array, unconstrained record, or record
-- with unconstrained components.
@@ -30215,7 +30299,7 @@ package body Sem_Prag is
Global := Get_Pragma (Subp_Id, Pragma_Refined_Global);
-- Subprogram declaration or stand-alone body case, look for pragmas
- -- Depends and Global
+ -- Depends and Global.
else
Depends := Get_Pragma (Spec_Id, Pragma_Depends);
@@ -30459,11 +30543,11 @@ package body Sem_Prag is
if From_Aspect_Specification (Prag) then
Error_Msg_N
- ("aspect % cannot apply to a stand alone expression function",
+ ("aspect % cannot apply to a standalone expression function",
Prag);
else
Error_Msg_N
- ("pragma % cannot apply to a stand alone expression function",
+ ("pragma % cannot apply to a standalone expression function",
Prag);
end if;
end Expression_Function_Error;
@@ -30597,8 +30681,10 @@ package body Sem_Prag is
-- The pragma appears inside the statements of a subprogram body. This
-- placement is the result of subprogram contract expansion.
- elsif Nkind (Context) = N_Handled_Sequence_Of_Statements then
- return Parent (Context);
+ elsif Is_Statement (Context)
+ and then Present (Enclosing_HSS (Context))
+ then
+ return Parent (Enclosing_HSS (Context));
-- The pragma appears inside the declarative part of a package body
diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb
index ed744ea..f6e0eab 100644
--- a/gcc/ada/sem_res.adb
+++ b/gcc/ada/sem_res.adb
@@ -2298,11 +2298,8 @@ package body Sem_Res is
-- Declare_Expression and requires scope management.
if Nkind (N) = N_Expression_With_Actions then
- if Comes_From_Source (N)
- and then N = Original_Node (N)
- then
+ if Comes_From_Source (N) and then N = Original_Node (N) then
Resolve_Declare_Expression (N, Typ);
-
else
Resolve (Expression (N), Typ);
end if;
@@ -4683,7 +4680,7 @@ package body Sem_Res is
elsif Ada_Version >= Ada_2005 then
Apply_Compile_Time_Constraint_Error
(N => A,
- Msg => "(Ada 2005) null not allowed in "
+ Msg => "(Ada 2005) NULL not allowed in "
& "null-excluding formal??",
Reason => CE_Null_Not_Allowed);
end if;
@@ -5451,9 +5448,12 @@ package body Sem_Res is
-- Do not apply Ada 2005 accessibility checks on a class-wide
-- allocator if the type given in the allocator is a formal
- -- type. A run-time check will be performed in the instance.
+ -- type or within a formal package. A run-time check will be
+ -- performed in the instance.
- elsif not Is_Generic_Type (Exp_Typ) then
+ elsif not Is_Generic_Type (Exp_Typ)
+ and then not In_Generic_Formal_Package (Exp_Typ)
+ then
Error_Msg_N
("type in allocator has deeper level than designated "
& "class-wide type", E);
@@ -7122,10 +7122,9 @@ package body Sem_Res is
-- on expression functions.
elsif In_Assertion_Expr /= 0 then
- if Present (Body_Id) then
- Cannot_Inline
- ("cannot inline & (in assertion expression)?", N, Nam_UA);
- end if;
+ Cannot_Inline
+ ("cannot inline & (in assertion expression)?", N, Nam_UA,
+ Suppress_Info => No (Body_Id));
-- Calls cannot be inlined inside default expressions
@@ -7468,7 +7467,8 @@ package body Sem_Res is
(N : Node_Id;
Typ : Entity_Id)
is
- Decl : Node_Id;
+ Decl : Node_Id;
+ Need_Transient_Scope : Boolean := False;
begin
-- Install the scope created for local declarations, if
-- any. The syntax allows a Declare_Expression with no
@@ -7477,7 +7477,6 @@ package body Sem_Res is
-- appears as the scope of all entities declared therein.
Decl := First (Actions (N));
-
while Present (Decl) loop
exit when Nkind (Decl)
in N_Object_Declaration | N_Object_Renaming_Declaration;
@@ -7485,11 +7484,35 @@ package body Sem_Res is
end loop;
if Present (Decl) then
- Push_Scope (Scope (Defining_Identifier (Decl)));
+
+ -- Need to establish a transient scope in case Expression (N)
+ -- requires actions to be wrapped.
declare
- E : Entity_Id := First_Entity (Current_Scope);
+ Node : Node_Id;
+ begin
+ Node := First (Actions (N));
+ while Present (Node) loop
+ if Nkind (Node) = N_Object_Declaration
+ and then Requires_Transient_Scope
+ (Etype (Defining_Identifier (Node)))
+ then
+ Need_Transient_Scope := True;
+ exit;
+ end if;
+
+ Next (Node);
+ end loop;
+ end;
+ if Need_Transient_Scope then
+ Establish_Transient_Scope (Decl, True);
+ else
+ Push_Scope (Scope (Defining_Identifier (Decl)));
+ end if;
+
+ declare
+ E : Entity_Id := First_Entity (Current_Scope);
begin
while Present (E) loop
Set_Current_Entity (E);
@@ -9822,13 +9845,13 @@ package body Sem_Res is
if Nkind (Parent (N)) in N_Subprogram_Call then
Error_Msg_N
- ("null is not allowed as argument for an access parameter", N);
+ ("NULL is not allowed as argument for an access parameter", N);
-- Standard message for all other cases (are there any?)
else
Error_Msg_N
- ("null cannot be of an anonymous access type", N);
+ ("NULL cannot be of an anonymous access type", N);
end if;
end if;
@@ -9875,7 +9898,7 @@ package body Sem_Res is
else
Insert_Action
(Compile_Time_Constraint_Error (N,
- "(Ada 2005) null not allowed in null-excluding objects??"),
+ "(Ada 2005) NULL not allowed in null-excluding objects??"),
Make_Raise_Constraint_Error (Loc,
Reason => CE_Access_Check_Failed));
end if;
@@ -10276,7 +10299,7 @@ package body Sem_Res is
elsif Typ = Universal_Integer or else Typ = Any_Modular then
if Parent_Is_Boolean then
Error_Msg_N
- ("operand of not must be enclosed in parentheses",
+ ("operand of NOT must be enclosed in parentheses",
Right_Opnd (N));
else
Error_Msg_N
@@ -10889,30 +10912,34 @@ package body Sem_Res is
Set_Etype (N, Base_Type (Typ));
end if;
- -- Note: No Eval processing is required, because the prefix is of a
- -- record type, or protected type, and neither can possibly be static.
+ -- Eval_Selected_Component may e.g. fold statically known discriminants.
- -- If the record type is atomic and the component is not, then this is
- -- worth a warning before Ada 2020, since we have a situation where the
- -- access to the component may cause extra read/writes of the atomic
- -- object, or partial word accesses, both of which may be unexpected.
+ Eval_Selected_Component (N);
- if Nkind (N) = N_Selected_Component
- and then Is_Atomic_Ref_With_Address (N)
- and then not Is_Atomic (Entity (S))
- and then not Is_Atomic (Etype (Entity (S)))
- and then Ada_Version < Ada_2020
- then
- Error_Msg_N
- ("??access to non-atomic component of atomic record",
- Prefix (N));
- Error_Msg_N
- ("\??may cause unexpected accesses to atomic object",
- Prefix (N));
- end if;
+ if Nkind (N) = N_Selected_Component then
- Resolve_Implicit_Dereference (Prefix (N));
- Analyze_Dimension (N);
+ -- If the record type is atomic and the component is not, then this
+ -- is worth a warning before Ada 2020, since we have a situation
+ -- where the access to the component may cause extra read/writes of
+ -- the atomic object, or partial word accesses, both of which may be
+ -- unexpected.
+
+ if Is_Atomic_Ref_With_Address (N)
+ and then not Is_Atomic (Entity (S))
+ and then not Is_Atomic (Etype (Entity (S)))
+ and then Ada_Version < Ada_2020
+ then
+ Error_Msg_N
+ ("??access to non-atomic component of atomic record",
+ Prefix (N));
+ Error_Msg_N
+ ("\??may cause unexpected accesses to atomic object",
+ Prefix (N));
+ end if;
+
+ Resolve_Implicit_Dereference (Prefix (N));
+ Analyze_Dimension (N);
+ end if;
end Resolve_Selected_Component;
-------------------
diff --git a/gcc/ada/sem_util.adb b/gcc/ada/sem_util.adb
index 72dbc68..1cf5c69 100644
--- a/gcc/ada/sem_util.adb
+++ b/gcc/ada/sem_util.adb
@@ -23,8 +23,6 @@
-- --
------------------------------------------------------------------------------
-with Treepr; -- ???For debugging code below
-
with Casing; use Casing;
with Checks; use Checks;
with Debug; use Debug;
@@ -170,24 +168,6 @@ package body Sem_Util is
-- routine does not take simple flow diagnostics into account, it relies on
-- static facts such as the presence of null exclusions.
- function Old_Requires_Transient_Scope (Id : Entity_Id) return Boolean;
- function New_Requires_Transient_Scope (Id : Entity_Id) return Boolean;
- -- ???We retain the old and new algorithms for Requires_Transient_Scope for
- -- the time being. New_Requires_Transient_Scope is used by default; the
- -- debug switch -gnatdQ can be used to do Old_Requires_Transient_Scope
- -- instead. The intent is to use this temporarily to measure before/after
- -- efficiency. Note: when this temporary code is removed, the documentation
- -- of dQ in debug.adb should be removed.
-
- procedure Results_Differ
- (Id : Entity_Id;
- Old_Val : Boolean;
- New_Val : Boolean);
- -- ???Debugging code. Called when the Old_Val and New_Val differ. This
- -- routine will be removed eventially when New_Requires_Transient_Scope
- -- becomes Requires_Transient_Scope and Old_Requires_Transient_Scope is
- -- eliminated.
-
function Subprogram_Name (N : Node_Id) return String;
-- Return the fully qualified name of the enclosing subprogram for the
-- given node N, with file:line:col information appended, e.g.
@@ -2492,7 +2472,7 @@ package body Sem_Util is
function Build_Discriminal_Array_Constraint return List_Id;
-- If one or more of the bounds of the component depends on
- -- discriminants, build actual constraint using the discriminants
+ -- discriminants, build actual constraint using the discriminants
-- of the prefix.
function Build_Discriminal_Record_Constraint return List_Id;
@@ -7931,6 +7911,34 @@ package body Sem_Util is
return Empty;
end Enclosing_Generic_Unit;
+ -------------------
+ -- Enclosing_HSS --
+ -------------------
+
+ function Enclosing_HSS (Stmt : Node_Id) return Node_Id is
+ Par : Node_Id;
+ begin
+ pragma Assert (Is_Statement (Stmt));
+
+ Par := Parent (Stmt);
+ while Present (Par) loop
+
+ if Nkind (Par) = N_Handled_Sequence_Of_Statements then
+ return Par;
+
+ -- Prevent the search from going too far
+
+ elsif Is_Body_Or_Package_Declaration (Par) then
+ return Empty;
+
+ end if;
+
+ Par := Parent (Par);
+ end loop;
+
+ return Par;
+ end Enclosing_HSS;
+
-------------------------------
-- Enclosing_Lib_Unit_Entity --
-------------------------------
@@ -9868,11 +9876,13 @@ package body Sem_Util is
-----------------------
procedure Gather_Components
- (Typ : Entity_Id;
- Comp_List : Node_Id;
- Governed_By : List_Id;
- Into : Elist_Id;
- Report_Errors : out Boolean)
+ (Typ : Entity_Id;
+ Comp_List : Node_Id;
+ Governed_By : List_Id;
+ Into : Elist_Id;
+ Report_Errors : out Boolean;
+ Allow_Compile_Time : Boolean := False;
+ Include_Interface_Tag : Boolean := False)
is
Assoc : Node_Id;
Variant : Node_Id;
@@ -9904,15 +9914,20 @@ package body Sem_Util is
while Present (Comp_Item) loop
- -- Skip the tag of a tagged record, the interface tags, as well
- -- as all items that are not user components (anonymous types,
- -- rep clauses, Parent field, controller field).
+ -- Skip the tag of a tagged record, as well as all items that are not
+ -- user components (anonymous types, rep clauses, Parent field,
+ -- controller field).
if Nkind (Comp_Item) = N_Component_Declaration then
declare
Comp : constant Entity_Id := Defining_Identifier (Comp_Item);
begin
- if not Is_Tag (Comp) and then Chars (Comp) /= Name_uParent then
+ if not (Is_Tag (Comp)
+ and then not
+ (Include_Interface_Tag
+ and then Etype (Comp) = RTE (RE_Interface_Tag)))
+ and then Chars (Comp) /= Name_uParent
+ then
Append_Elmt (Comp, Into);
end if;
end;
@@ -10021,7 +10036,11 @@ package body Sem_Util is
end loop Find_Constraint;
Discrim_Value := Expression (Assoc);
- if Is_OK_Static_Expression (Discrim_Value) then
+
+ if Is_OK_Static_Expression (Discrim_Value)
+ or else (Allow_Compile_Time
+ and then Compile_Time_Known_Value (Discrim_Value))
+ then
Discrim_Value_Status := Static_Expr;
else
if Ada_Version >= Ada_2020 then
@@ -10200,7 +10219,8 @@ package body Sem_Util is
end if;
Gather_Components
- (Typ, Component_List (Variant), Governed_By, Into, Report_Errors);
+ (Typ, Component_List (Variant), Governed_By, Into,
+ Report_Errors, Allow_Compile_Time);
end if;
end Gather_Components;
@@ -10435,7 +10455,7 @@ package body Sem_Util is
then
if Cursor /= Any_Type then
Error_Msg_N
- ("Operation First for iterable type must be unique", Aspect);
+ ("operation First for iterable type must be unique", Aspect);
return Any_Type;
else
Cursor := Etype (Func);
@@ -10553,7 +10573,7 @@ package body Sem_Util is
-- Position in the enumeration type starts at 0
- if UI_To_Int (Pos) < 0 then
+ if Pos < 0 then
raise Constraint_Error;
end if;
@@ -10589,6 +10609,12 @@ package body Sem_Util is
function Get_Fullest_View
(E : Entity_Id; Include_PAT : Boolean := True) return Entity_Id is
begin
+ -- Prevent cascaded errors
+
+ if No (E) then
+ return E;
+ end if;
+
-- Strictly speaking, the recursion below isn't necessary, but
-- it's both simplest and safest.
@@ -13827,6 +13853,52 @@ package body Sem_Util is
and then Assertion_Expression_Pragma (Get_Pragma_Id (Prag));
end In_Assertion_Expression_Pragma;
+ -------------------
+ -- In_Check_Node --
+ -------------------
+
+ function In_Check_Node (N : Node_Id) return Boolean is
+ Par : Node_Id := Parent (N);
+ begin
+ while Present (Par) loop
+ if Nkind (Par) in N_Raise_xxx_Error then
+ return True;
+
+ -- Prevent the search from going too far
+
+ elsif Is_Body_Or_Package_Declaration (Par) then
+ return False;
+
+ else
+ Par := Parent (Par);
+ end if;
+ end loop;
+
+ return False;
+ end In_Check_Node;
+
+ -------------------------------
+ -- In_Generic_Formal_Package --
+ -------------------------------
+
+ function In_Generic_Formal_Package (E : Entity_Id) return Boolean is
+ Par : Node_Id;
+
+ begin
+ Par := Parent (E);
+ while Present (Par) loop
+ if Nkind (Par) = N_Formal_Package_Declaration
+ or else Nkind (Original_Node (Par)) = N_Formal_Package_Declaration
+ then
+ return True;
+ end if;
+
+ Par := Parent (Par);
+ end loop;
+
+ return False;
+ end In_Generic_Formal_Package;
+
----------------------
-- In_Generic_Scope --
----------------------
@@ -14569,7 +14641,9 @@ package body Sem_Util is
procedure Inherit_Predicate_Flags (Subt, Par : Entity_Id) is
begin
- if Present (Predicate_Function (Subt)) then
+ if Ada_Version < Ada_2012
+ or else Present (Predicate_Function (Subt))
+ then
return;
end if;
@@ -15152,6 +15226,19 @@ package body Sem_Util is
return Present (Formal) and then Ekind (Formal) = E_In_Out_Parameter;
end Is_Actual_In_Out_Parameter;
+ ---------------------------------------
+ -- Is_Actual_Out_Or_In_Out_Parameter --
+ ---------------------------------------
+
+ function Is_Actual_Out_Or_In_Out_Parameter (N : Node_Id) return Boolean is
+ Formal : Entity_Id;
+ Call : Node_Id;
+ begin
+ Find_Actual (N, Formal, Call);
+ return Present (Formal)
+ and then Ekind (Formal) in E_Out_Parameter | E_In_Out_Parameter;
+ end Is_Actual_Out_Or_In_Out_Parameter;
+
-------------------------
-- Is_Actual_Parameter --
-------------------------
@@ -16254,7 +16341,7 @@ package body Sem_Util is
P_Aliased : Boolean := False;
Comp : Entity_Id;
- Deref : Node_Id := Object;
+ Deref : Node_Id := Original_Node (Object);
-- Dereference node, in something like X.all.Y(2)
-- Start of processing for Is_Dependent_Component_Of_Mutable_Object
@@ -16265,11 +16352,9 @@ package body Sem_Util is
while Nkind (Deref) in
N_Indexed_Component | N_Selected_Component | N_Slice
loop
- Deref := Prefix (Deref);
+ Deref := Original_Node (Prefix (Deref));
end loop;
- Deref := Original_Node (Deref);
-
-- If the prefix is a qualified expression of a variable, then function
-- Is_Variable will return False for that because a qualified expression
-- denotes a constant view, so we need to get the name being qualified
@@ -16445,14 +16530,16 @@ package body Sem_Util is
elsif Nkind (Object) = N_Indexed_Component
or else Nkind (Object) = N_Slice
then
- return Is_Dependent_Component_Of_Mutable_Object (Prefix (Object));
+ return Is_Dependent_Component_Of_Mutable_Object
+ (Original_Node (Prefix (Object)));
-- A type conversion that Is_Variable is a view conversion:
-- go back to the denoted object.
elsif Nkind (Object) = N_Type_Conversion then
return
- Is_Dependent_Component_Of_Mutable_Object (Expression (Object));
+ Is_Dependent_Component_Of_Mutable_Object
+ (Original_Node (Expression (Object)));
end if;
end if;
@@ -18238,6 +18325,23 @@ package body Sem_Util is
-------------------------
function Is_Object_Reference (N : Node_Id) return Boolean is
+ function Safe_Prefix (N : Node_Id) return Node_Id;
+ -- Return Prefix (N) unless it has been rewritten as an
+ -- N_Raise_xxx_Error node, in which case return its original node.
+
+ -----------------
+ -- Safe_Prefix --
+ -----------------
+
+ function Safe_Prefix (N : Node_Id) return Node_Id is
+ begin
+ if Nkind (Prefix (N)) in N_Raise_xxx_Error then
+ return Original_Node (Prefix (N));
+ else
+ return Prefix (N);
+ end if;
+ end Safe_Prefix;
+
begin
-- AI12-0068: Note that a current instance reference in a type or
-- subtype's aspect_specification is considered a value, not an object
@@ -18253,8 +18357,8 @@ package body Sem_Util is
| N_Slice
=>
return
- Is_Object_Reference (Prefix (N))
- or else Is_Access_Type (Etype (Prefix (N)));
+ Is_Object_Reference (Safe_Prefix (N))
+ or else Is_Access_Type (Etype (Safe_Prefix (N)));
-- In Ada 95, a function call is a constant object; a procedure
-- call is not.
@@ -18282,8 +18386,8 @@ package body Sem_Util is
return
Is_Object_Reference (Selector_Name (N))
and then
- (Is_Object_Reference (Prefix (N))
- or else Is_Access_Type (Etype (Prefix (N))));
+ (Is_Object_Reference (Safe_Prefix (N))
+ or else Is_Access_Type (Etype (Safe_Prefix (N))));
-- An explicit dereference denotes an object, except that a
-- conditional expression gets turned into an explicit dereference
@@ -19896,6 +20000,22 @@ package body Sem_Util is
or else Nkind (N) = N_Procedure_Call_Statement;
end Is_Statement;
+ --------------------------------------
+ -- Is_Static_Discriminant_Component --
+ --------------------------------------
+
+ function Is_Static_Discriminant_Component (N : Node_Id) return Boolean is
+ begin
+ return Nkind (N) = N_Selected_Component
+ and then not Is_In_Discriminant_Check (N)
+ and then Present (Etype (Prefix (N)))
+ and then Ekind (Etype (Prefix (N))) = E_Record_Subtype
+ and then Has_Static_Discriminants (Etype (Prefix (N)))
+ and then Present (Entity (Selector_Name (N)))
+ and then Ekind (Entity (Selector_Name (N))) = E_Discriminant
+ and then not In_Check_Node (N);
+ end Is_Static_Discriminant_Component;
+
------------------------
-- Is_Static_Function --
------------------------
@@ -24280,228 +24400,6 @@ package body Sem_Util is
Node := Next_Global (Node);
end Next_Global;
- ----------------------------------
- -- New_Requires_Transient_Scope --
- ----------------------------------
-
- function New_Requires_Transient_Scope (Id : Entity_Id) return Boolean is
- function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean;
- -- This is called for untagged records and protected types, with
- -- nondefaulted discriminants. Returns True if the size of function
- -- results is known at the call site, False otherwise. Returns False
- -- if there is a variant part that depends on the discriminants of
- -- this type, or if there is an array constrained by the discriminants
- -- of this type. ???Currently, this is overly conservative (the array
- -- could be nested inside some other record that is constrained by
- -- nondiscriminants). That is, the recursive calls are too conservative.
-
- function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean;
- -- Returns True if Typ is a nonlimited record with defaulted
- -- discriminants whose max size makes it unsuitable for allocating on
- -- the primary stack.
-
- ------------------------------
- -- Caller_Known_Size_Record --
- ------------------------------
-
- function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean is
- pragma Assert (Typ = Underlying_Type (Typ));
-
- begin
- if Has_Variant_Part (Typ) and then not Is_Definite_Subtype (Typ) then
- return False;
- end if;
-
- declare
- Comp : Entity_Id;
-
- begin
- Comp := First_Component (Typ);
- while Present (Comp) loop
-
- -- Only look at E_Component entities. No need to look at
- -- E_Discriminant entities, and we must ignore internal
- -- subtypes generated for constrained components.
-
- declare
- Comp_Type : constant Entity_Id :=
- Underlying_Type (Etype (Comp));
-
- begin
- if Is_Record_Type (Comp_Type)
- or else
- Is_Protected_Type (Comp_Type)
- then
- if not Caller_Known_Size_Record (Comp_Type) then
- return False;
- end if;
-
- elsif Is_Array_Type (Comp_Type) then
- if Size_Depends_On_Discriminant (Comp_Type) then
- return False;
- end if;
- end if;
- end;
-
- Next_Component (Comp);
- end loop;
- end;
-
- return True;
- end Caller_Known_Size_Record;
-
- ------------------------------
- -- Large_Max_Size_Mutable --
- ------------------------------
-
- function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean is
- pragma Assert (Typ = Underlying_Type (Typ));
-
- function Is_Large_Discrete_Type (T : Entity_Id) return Boolean;
- -- Returns true if the discrete type T has a large range
-
- ----------------------------
- -- Is_Large_Discrete_Type --
- ----------------------------
-
- function Is_Large_Discrete_Type (T : Entity_Id) return Boolean is
- Threshold : constant Int := 16;
- -- Arbitrary threshold above which we consider it "large". We want
- -- a fairly large threshold, because these large types really
- -- shouldn't have default discriminants in the first place, in
- -- most cases.
-
- begin
- return UI_To_Int (RM_Size (T)) > Threshold;
- end Is_Large_Discrete_Type;
-
- -- Start of processing for Large_Max_Size_Mutable
-
- begin
- if Is_Record_Type (Typ)
- and then not Is_Limited_View (Typ)
- and then Has_Defaulted_Discriminants (Typ)
- then
- -- Loop through the components, looking for an array whose upper
- -- bound(s) depends on discriminants, where both the subtype of
- -- the discriminant and the index subtype are too large.
-
- declare
- Comp : Entity_Id;
-
- begin
- Comp := First_Component (Typ);
- while Present (Comp) loop
- declare
- Comp_Type : constant Entity_Id :=
- Underlying_Type (Etype (Comp));
-
- Hi : Node_Id;
- Indx : Node_Id;
- Ityp : Entity_Id;
-
- begin
- if Is_Array_Type (Comp_Type) then
- Indx := First_Index (Comp_Type);
-
- while Present (Indx) loop
- Ityp := Etype (Indx);
- Hi := Type_High_Bound (Ityp);
-
- if Nkind (Hi) = N_Identifier
- and then Ekind (Entity (Hi)) = E_Discriminant
- and then Is_Large_Discrete_Type (Ityp)
- and then Is_Large_Discrete_Type
- (Etype (Entity (Hi)))
- then
- return True;
- end if;
-
- Next_Index (Indx);
- end loop;
- end if;
- end;
-
- Next_Component (Comp);
- end loop;
- end;
- end if;
-
- return False;
- end Large_Max_Size_Mutable;
-
- -- Local declarations
-
- Typ : constant Entity_Id := Underlying_Type (Id);
-
- -- Start of processing for New_Requires_Transient_Scope
-
- begin
- -- This is a private type which is not completed yet. This can only
- -- happen in a default expression (of a formal parameter or of a
- -- record component). Do not expand transient scope in this case.
-
- if No (Typ) then
- return False;
-
- -- Do not expand transient scope for non-existent procedure return or
- -- string literal types.
-
- elsif Typ = Standard_Void_Type
- or else Ekind (Typ) = E_String_Literal_Subtype
- then
- return False;
-
- -- If Typ is a generic formal incomplete type, then we want to look at
- -- the actual type.
-
- elsif Ekind (Typ) = E_Record_Subtype
- and then Present (Cloned_Subtype (Typ))
- then
- return New_Requires_Transient_Scope (Cloned_Subtype (Typ));
-
- -- Functions returning specific tagged types may dispatch on result, so
- -- their returned value is allocated on the secondary stack, even in the
- -- definite case. We must treat nondispatching functions the same way,
- -- because access-to-function types can point at both, so the calling
- -- conventions must be compatible. Is_Tagged_Type includes controlled
- -- types and class-wide types. Controlled type temporaries need
- -- finalization.
-
- -- ???It's not clear why we need to return noncontrolled types with
- -- controlled components on the secondary stack.
-
- elsif Is_Tagged_Type (Typ) or else Has_Controlled_Component (Typ) then
- return True;
-
- -- Untagged definite subtypes are known size. This includes all
- -- elementary [sub]types. Tasks are known size even if they have
- -- discriminants. So we return False here, with one exception:
- -- For a type like:
- -- type T (Last : Natural := 0) is
- -- X : String (1 .. Last);
- -- end record;
- -- we return True. That's because for "P(F(...));", where F returns T,
- -- we don't know the size of the result at the call site, so if we
- -- allocated it on the primary stack, we would have to allocate the
- -- maximum size, which is way too big.
-
- elsif Is_Definite_Subtype (Typ) or else Is_Task_Type (Typ) then
- return Large_Max_Size_Mutable (Typ);
-
- -- Indefinite (discriminated) untagged record or protected type
-
- elsif Is_Record_Type (Typ) or else Is_Protected_Type (Typ) then
- return not Caller_Known_Size_Record (Typ);
-
- -- Unconstrained array
-
- else
- pragma Assert (Is_Array_Type (Typ) and not Is_Definite_Subtype (Typ));
- return True;
- end if;
- end New_Requires_Transient_Scope;
-
------------------------
-- No_Caching_Enabled --
------------------------
@@ -25376,105 +25274,6 @@ package body Sem_Util is
return Num;
end Number_Of_Elements_In_Array;
- ----------------------------------
- -- Old_Requires_Transient_Scope --
- ----------------------------------
-
- function Old_Requires_Transient_Scope (Id : Entity_Id) return Boolean is
- Typ : constant Entity_Id := Underlying_Type (Id);
-
- begin
- -- This is a private type which is not completed yet. This can only
- -- happen in a default expression (of a formal parameter or of a
- -- record component). Do not expand transient scope in this case.
-
- if No (Typ) then
- return False;
-
- -- Do not expand transient scope for non-existent procedure return
-
- elsif Typ = Standard_Void_Type then
- return False;
-
- -- Elementary types do not require a transient scope
-
- elsif Is_Elementary_Type (Typ) then
- return False;
-
- -- Generally, indefinite subtypes require a transient scope, since the
- -- back end cannot generate temporaries, since this is not a valid type
- -- for declaring an object. It might be possible to relax this in the
- -- future, e.g. by declaring the maximum possible space for the type.
-
- elsif not Is_Definite_Subtype (Typ) then
- return True;
-
- -- Functions returning tagged types may dispatch on result so their
- -- returned value is allocated on the secondary stack. Controlled
- -- type temporaries need finalization.
-
- elsif Is_Tagged_Type (Typ) or else Has_Controlled_Component (Typ) then
- return True;
-
- -- Record type
-
- elsif Is_Record_Type (Typ) then
- declare
- Comp : Entity_Id;
-
- begin
- Comp := First_Entity (Typ);
- while Present (Comp) loop
- if Ekind (Comp) = E_Component then
-
- -- ???It's not clear we need a full recursive call to
- -- Old_Requires_Transient_Scope here. Note that the
- -- following can't happen.
-
- pragma Assert (Is_Definite_Subtype (Etype (Comp)));
- pragma Assert (not Has_Controlled_Component (Etype (Comp)));
-
- if Old_Requires_Transient_Scope (Etype (Comp)) then
- return True;
- end if;
- end if;
-
- Next_Entity (Comp);
- end loop;
- end;
-
- return False;
-
- -- String literal types never require transient scope
-
- elsif Ekind (Typ) = E_String_Literal_Subtype then
- return False;
-
- -- Array type. Note that we already know that this is a constrained
- -- array, since unconstrained arrays will fail the indefinite test.
-
- elsif Is_Array_Type (Typ) then
-
- -- If component type requires a transient scope, the array does too
-
- if Old_Requires_Transient_Scope (Component_Type (Typ)) then
- return True;
-
- -- Otherwise, we only need a transient scope if the size depends on
- -- the value of one or more discriminants.
-
- else
- return Size_Depends_On_Discriminant (Typ);
- end if;
-
- -- All other cases do not require a transient scope
-
- else
- pragma Assert (Is_Concurrent_Type (Typ));
- return False;
- end if;
- end Old_Requires_Transient_Scope;
-
---------------------------------
-- Original_Aspect_Pragma_Name --
---------------------------------
@@ -26572,18 +26371,82 @@ package body Sem_Util is
-- generated before the next instruction.
function Requires_Transient_Scope (Id : Entity_Id) return Boolean is
- Old_Result : constant Boolean := Old_Requires_Transient_Scope (Id);
+ function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean;
+ -- This is called for untagged records and protected types, with
+ -- nondefaulted discriminants. Returns True if the size of function
+ -- results is known at the call site, False otherwise. Returns False
+ -- if there is a variant part that depends on the discriminants of
+ -- this type, or if there is an array constrained by the discriminants
+ -- of this type. ???Currently, this is overly conservative (the array
+ -- could be nested inside some other record that is constrained by
+ -- nondiscriminants). That is, the recursive calls are too conservative.
procedure Ensure_Minimum_Decoration (Typ : Entity_Id);
-- If Typ is not frozen then add to Typ the minimum decoration required
-- by Requires_Transient_Scope to reliably provide its functionality;
-- otherwise no action is performed.
+ function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean;
+ -- Returns True if Typ is a nonlimited record with defaulted
+ -- discriminants whose max size makes it unsuitable for allocating on
+ -- the primary stack.
+
+ ------------------------------
+ -- Caller_Known_Size_Record --
+ ------------------------------
+
+ function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean is
+ pragma Assert (Typ = Underlying_Type (Typ));
+
+ begin
+ if Has_Variant_Part (Typ) and then not Is_Definite_Subtype (Typ) then
+ return False;
+ end if;
+
+ declare
+ Comp : Entity_Id;
+
+ begin
+ Comp := First_Component (Typ);
+ while Present (Comp) loop
+
+ -- Only look at E_Component entities. No need to look at
+ -- E_Discriminant entities, and we must ignore internal
+ -- subtypes generated for constrained components.
+
+ declare
+ Comp_Type : constant Entity_Id :=
+ Underlying_Type (Etype (Comp));
+
+ begin
+ if Is_Record_Type (Comp_Type)
+ or else
+ Is_Protected_Type (Comp_Type)
+ then
+ if not Caller_Known_Size_Record (Comp_Type) then
+ return False;
+ end if;
+
+ elsif Is_Array_Type (Comp_Type) then
+ if Size_Depends_On_Discriminant (Comp_Type) then
+ return False;
+ end if;
+ end if;
+ end;
+
+ Next_Component (Comp);
+ end loop;
+ end;
+
+ return True;
+ end Caller_Known_Size_Record;
+
-------------------------------
-- Ensure_Minimum_Decoration --
-------------------------------
procedure Ensure_Minimum_Decoration (Typ : Entity_Id) is
+ Comp : Entity_Id;
begin
-- Do not set Has_Controlled_Component on a class-wide equivalent
-- type. See Make_CW_Equivalent_Type.
@@ -26595,82 +26458,182 @@ package body Sem_Util is
or else Is_Incomplete_Or_Private_Type (Typ))
and then not Is_Class_Wide_Equivalent_Type (Typ)
then
+ Comp := First_Component (Typ);
+ while Present (Comp) loop
+ if Has_Controlled_Component (Etype (Comp))
+ or else
+ (Chars (Comp) /= Name_uParent
+ and then Is_Controlled (Etype (Comp)))
+ or else
+ (Is_Protected_Type (Etype (Comp))
+ and then
+ Present (Corresponding_Record_Type (Etype (Comp)))
+ and then
+ Has_Controlled_Component
+ (Corresponding_Record_Type (Etype (Comp))))
+ then
+ Set_Has_Controlled_Component (Typ);
+ exit;
+ end if;
+
+ Next_Component (Comp);
+ end loop;
+ end if;
+ end Ensure_Minimum_Decoration;
+
+ ------------------------------
+ -- Large_Max_Size_Mutable --
+ ------------------------------
+
+ function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean is
+ pragma Assert (Typ = Underlying_Type (Typ));
+
+ function Is_Large_Discrete_Type (T : Entity_Id) return Boolean;
+ -- Returns true if the discrete type T has a large range
+
+ ----------------------------
+ -- Is_Large_Discrete_Type --
+ ----------------------------
+
+ function Is_Large_Discrete_Type (T : Entity_Id) return Boolean is
+ Threshold : constant Int := 16;
+ -- Arbitrary threshold above which we consider it "large". We want
+ -- a fairly large threshold, because these large types really
+ -- shouldn't have default discriminants in the first place, in
+ -- most cases.
+
+ begin
+ return UI_To_Int (RM_Size (T)) > Threshold;
+ end Is_Large_Discrete_Type;
+
+ -- Start of processing for Large_Max_Size_Mutable
+
+ begin
+ if Is_Record_Type (Typ)
+ and then not Is_Limited_View (Typ)
+ and then Has_Defaulted_Discriminants (Typ)
+ then
+ -- Loop through the components, looking for an array whose upper
+ -- bound(s) depends on discriminants, where both the subtype of
+ -- the discriminant and the index subtype are too large.
+
declare
Comp : Entity_Id;
begin
Comp := First_Component (Typ);
while Present (Comp) loop
- if Has_Controlled_Component (Etype (Comp))
- or else
- (Chars (Comp) /= Name_uParent
- and then Is_Controlled (Etype (Comp)))
- or else
- (Is_Protected_Type (Etype (Comp))
- and then
- Present (Corresponding_Record_Type (Etype (Comp)))
- and then
- Has_Controlled_Component
- (Corresponding_Record_Type (Etype (Comp))))
- then
- Set_Has_Controlled_Component (Typ);
- exit;
- end if;
+ declare
+ Comp_Type : constant Entity_Id :=
+ Underlying_Type (Etype (Comp));
+
+ Hi : Node_Id;
+ Indx : Node_Id;
+ Ityp : Entity_Id;
+
+ begin
+ if Is_Array_Type (Comp_Type) then
+ Indx := First_Index (Comp_Type);
+
+ while Present (Indx) loop
+ Ityp := Etype (Indx);
+ Hi := Type_High_Bound (Ityp);
+
+ if Nkind (Hi) = N_Identifier
+ and then Ekind (Entity (Hi)) = E_Discriminant
+ and then Is_Large_Discrete_Type (Ityp)
+ and then Is_Large_Discrete_Type
+ (Etype (Entity (Hi)))
+ then
+ return True;
+ end if;
+
+ Next_Index (Indx);
+ end loop;
+ end if;
+ end;
Next_Component (Comp);
end loop;
end;
end if;
- end Ensure_Minimum_Decoration;
+
+ return False;
+ end Large_Max_Size_Mutable;
+
+ -- Local declarations
+
+ Typ : constant Entity_Id := Underlying_Type (Id);
-- Start of processing for Requires_Transient_Scope
begin
- if Debug_Flag_QQ then
- return Old_Result;
- end if;
-
Ensure_Minimum_Decoration (Id);
- declare
- New_Result : constant Boolean := New_Requires_Transient_Scope (Id);
+ -- This is a private type which is not completed yet. This can only
+ -- happen in a default expression (of a formal parameter or of a
+ -- record component). Do not expand transient scope in this case.
- begin
- -- Assert that we're not putting things on the secondary stack if we
- -- didn't before; we are trying to AVOID secondary stack when
- -- possible.
+ if No (Typ) then
+ return False;
- if not Old_Result then
- pragma Assert (not New_Result);
- null;
- end if;
+ -- Do not expand transient scope for non-existent procedure return or
+ -- string literal types.
- if New_Result /= Old_Result then
- Results_Differ (Id, Old_Result, New_Result);
- end if;
+ elsif Typ = Standard_Void_Type
+ or else Ekind (Typ) = E_String_Literal_Subtype
+ then
+ return False;
- return New_Result;
- end;
- end Requires_Transient_Scope;
+ -- If Typ is a generic formal incomplete type, then we want to look at
+ -- the actual type.
- --------------------
- -- Results_Differ --
- --------------------
+ elsif Ekind (Typ) = E_Record_Subtype
+ and then Present (Cloned_Subtype (Typ))
+ then
+ return Requires_Transient_Scope (Cloned_Subtype (Typ));
- procedure Results_Differ
- (Id : Entity_Id;
- Old_Val : Boolean;
- New_Val : Boolean)
- is
- begin
- if False then -- False to disable; True for debugging
- Treepr.Print_Tree_Node (Id);
+ -- Functions returning specific tagged types may dispatch on result, so
+ -- their returned value is allocated on the secondary stack, even in the
+ -- definite case. We must treat nondispatching functions the same way,
+ -- because access-to-function types can point at both, so the calling
+ -- conventions must be compatible. Is_Tagged_Type includes controlled
+ -- types and class-wide types. Controlled type temporaries need
+ -- finalization.
- if Old_Val = New_Val then
- raise Program_Error;
- end if;
+ -- ???It's not clear why we need to return noncontrolled types with
+ -- controlled components on the secondary stack.
+
+ elsif Is_Tagged_Type (Typ) or else Has_Controlled_Component (Typ) then
+ return True;
+
+ -- Untagged definite subtypes are known size. This includes all
+ -- elementary [sub]types. Tasks are known size even if they have
+ -- discriminants. So we return False here, with one exception:
+ -- For a type like:
+ -- type T (Last : Natural := 0) is
+ -- X : String (1 .. Last);
+ -- end record;
+ -- we return True. That's because for "P(F(...));", where F returns T,
+ -- we don't know the size of the result at the call site, so if we
+ -- allocated it on the primary stack, we would have to allocate the
+ -- maximum size, which is way too big.
+
+ elsif Is_Definite_Subtype (Typ) or else Is_Task_Type (Typ) then
+ return Large_Max_Size_Mutable (Typ);
+
+ -- Indefinite (discriminated) untagged record or protected type
+
+ elsif Is_Record_Type (Typ) or else Is_Protected_Type (Typ) then
+ return not Caller_Known_Size_Record (Typ);
+
+ -- Unconstrained array
+
+ else
+ pragma Assert (Is_Array_Type (Typ) and not Is_Definite_Subtype (Typ));
+ return True;
end if;
- end Results_Differ;
+ end Requires_Transient_Scope;
--------------------------
-- Reset_Analyzed_Flags --
@@ -29647,10 +29610,10 @@ package body Sem_Util is
and then Covers
(Designated_Type (Expec_Type), Designated_Type (Found_Type))
then
- Error_Msg_N -- CODEFIX
+ Error_Msg_N
("result must be general access type!", Expr);
Error_Msg_NE -- CODEFIX
- ("add ALL to }!", Expr, Expec_Type);
+ ("\add ALL to }!", Expr, Expec_Type);
-- Another special check, if the expected type is an integer type,
-- but the expression is of type System.Address, and the parent is
@@ -31098,7 +31061,7 @@ package body Sem_Util is
--
-- See Large_Max_Size_Mutable function elsewhere in this
-- file (currently declared inside of
- -- New_Requires_Transient_Scope, so it would have to be
+ -- Requires_Transient_Scope, so it would have to be
-- moved if we want it to be callable from here).
end Indirect_Temp_Needed;
@@ -31152,9 +31115,9 @@ package body Sem_Util is
-- If the prefix is of an anonymous access type, then returns
-- the designated type of that type.
- -----------------------------
+ -----------------------------
-- Designated_Subtype_Mark --
- -----------------------------
+ -----------------------------
function Designated_Subtype_Mark return Node_Id is
Typ : Entity_Id := Prefix_Type;
@@ -31192,6 +31155,16 @@ package body Sem_Util is
Append_Item (Temp_Decl, Is_Eval_Stmt => False);
end if;
+ -- When a type associated with an indirect temporary gets
+ -- created for a 'Old attribute reference we need to mark
+ -- the type as such. This allows, for example, finalization
+ -- masters associated with them to be finalized in the correct
+ -- order after postcondition checks.
+
+ if Attribute_Name (Parent (Attr_Prefix)) = Name_Old then
+ Set_Stores_Attribute_Old_Prefix (Access_Type_Id);
+ end if;
+
Analyze (Access_Type_Decl);
Analyze (Temp_Decl);
diff --git a/gcc/ada/sem_util.ads b/gcc/ada/sem_util.ads
index b2af43a..6560180 100644
--- a/gcc/ada/sem_util.ads
+++ b/gcc/ada/sem_util.ads
@@ -765,6 +765,10 @@ package Sem_Util is
-- Returns the Node_Id associated with the innermost enclosing generic
-- unit, if any. If none, then returns Empty.
+ function Enclosing_HSS (Stmt : Node_Id) return Node_Id;
+ -- Returns the nearest handled sequence of statements that encloses a given
+ -- statement, or Empty.
+
function Enclosing_Lib_Unit_Entity
(E : Entity_Id := Current_Scope) return Entity_Id;
-- Returns the entity of enclosing library unit node which is the root of
@@ -1045,11 +1049,13 @@ package Sem_Util is
-- be installed on the scope stack to prevent spurious visibility errors.
procedure Gather_Components
- (Typ : Entity_Id;
- Comp_List : Node_Id;
- Governed_By : List_Id;
- Into : Elist_Id;
- Report_Errors : out Boolean);
+ (Typ : Entity_Id;
+ Comp_List : Node_Id;
+ Governed_By : List_Id;
+ Into : Elist_Id;
+ Report_Errors : out Boolean;
+ Allow_Compile_Time : Boolean := False;
+ Include_Interface_Tag : Boolean := False);
-- The purpose of this procedure is to gather the valid components in a
-- record type according to the values of its discriminants, in order to
-- validate the components of a record aggregate.
@@ -1072,6 +1078,12 @@ package Sem_Util is
-- Report_Errors is set to True if the values of the discriminants are
-- non-static.
--
+ -- Allow_Compile_Time if set to True, allows compile time known values in
+ -- Governed_By expressions in addition to static expressions.
+ --
+ -- Include_Interface_Tag if set to True, gather any interface tag
+ -- component, otherwise exclude them.
+ --
-- This procedure is also used when building a record subtype. If the
-- discriminant constraint of the subtype is static, the components of the
-- subtype are only those of the variants selected by the values of the
@@ -1538,6 +1550,12 @@ package Sem_Util is
-- Returns True if node N appears within a pragma that acts as an assertion
-- expression. See Sem_Prag for the list of qualifying pragmas.
+ function In_Check_Node (N : Node_Id) return Boolean;
+ -- Return True if N is part of a N_Raise_xxx_Error node
+
+ function In_Generic_Formal_Package (E : Entity_Id) return Boolean;
+ -- Returns True if entity E is inside a generic formal package
+
function In_Generic_Scope (E : Entity_Id) return Boolean;
-- Returns True if entity E is inside a generic scope
@@ -1689,6 +1707,10 @@ package Sem_Util is
function Is_Actual_Out_Parameter (N : Node_Id) return Boolean;
-- Determines if N is an actual parameter of out mode in a subprogram call
+ function Is_Actual_Out_Or_In_Out_Parameter (N : Node_Id) return Boolean;
+ -- Determines if N is an actual parameter of out or in out mode in a
+ -- subprogram call.
+
function Is_Actual_Parameter (N : Node_Id) return Boolean;
-- Determines if N is an actual parameter in a subprogram call
@@ -2229,6 +2251,13 @@ package Sem_Util is
-- the N_Statement_Other_Than_Procedure_Call subtype from Sinfo).
-- Note that a label is *not* a statement, and will return False.
+ function Is_Static_Discriminant_Component (N : Node_Id) return Boolean;
+ -- Return True if N is guaranteed to a selected component containing a
+ -- statically known discriminant.
+ -- Note that this routine takes a conservative view and may return False
+ -- in some cases where N would match the criteria. In other words this
+ -- routine should be used to simplify or optimize the expanded code.
+
function Is_Static_Function (Subp : Entity_Id) return Boolean;
-- Determine whether subprogram Subp denotes a static function,
-- which is a function with the aspect Static with value True.
@@ -2488,7 +2517,7 @@ package Sem_Util is
-- entity E. If no such instance exits, return Empty.
function Needs_Finalization (Typ : Entity_Id) return Boolean;
- -- Determine whether type Typ is controlled and this requires finalization
+ -- Determine whether type Typ is controlled and thus requires finalization
-- actions.
function Needs_One_Actual (E : Entity_Id) return Boolean;
diff --git a/gcc/ada/sem_warn.adb b/gcc/ada/sem_warn.adb
index 7289ea7..b5275a8 100644
--- a/gcc/ada/sem_warn.adb
+++ b/gcc/ada/sem_warn.adb
@@ -750,9 +750,7 @@ package body Sem_Warn is
Fstm : constant Node_Id :=
Original_Node (First (Statements (Loop_Statement)));
begin
- if Nkind (Fstm) = N_Delay_Relative_Statement
- or else Nkind (Fstm) = N_Delay_Until_Statement
- then
+ if Nkind (Fstm) in N_Delay_Statement then
return;
end if;
end;
@@ -3077,14 +3075,14 @@ package body Sem_Warn is
-- Here we generate the warning
else
- -- If -gnatwc is set then output message that we could be IN
+ -- If -gnatwk is set then output message that we could be IN
if not Is_Trivial_Subprogram (Scope (E1)) then
if Warn_On_Constant then
Error_Msg_N
- ("?u?formal parameter & is not modified!", E1);
+ ("?k?formal parameter & is not modified!", E1);
Error_Msg_N
- ("\?u?mode could be IN instead of `IN OUT`!", E1);
+ ("\?k?mode could be IN instead of `IN OUT`!", E1);
-- We do not generate warnings for IN OUT parameters
-- unless we have at least -gnatwu. This is deliberately
diff --git a/gcc/ada/snames.ads-tmpl b/gcc/ada/snames.ads-tmpl
index 647fb62..715a53a 100644
--- a/gcc/ada/snames.ads-tmpl
+++ b/gcc/ada/snames.ads-tmpl
@@ -168,6 +168,8 @@ package Snames is
Name_uEntry_Bodies : constant Name_Id := N + $;
Name_uExpunge : constant Name_Id := N + $;
Name_uFinalizer : constant Name_Id := N + $;
+ Name_uFinalizer_Old : constant Name_Id := N + $;
+ Name_uFinalization_Controller : constant Name_Id := N + $;
Name_uIdepth : constant Name_Id := N + $;
Name_uInit : constant Name_Id := N + $;
Name_uInit_Level : constant Name_Id := N + $;
@@ -176,11 +178,14 @@ package Snames is
Name_uObject : constant Name_Id := N + $;
Name_uPost : constant Name_Id := N + $;
Name_uPostconditions : constant Name_Id := N + $;
+ Name_uPostcond_Enabled : constant Name_Id := N + $;
Name_uPre : constant Name_Id := N + $;
Name_uPriority : constant Name_Id := N + $;
Name_uProcess_ATSD : constant Name_Id := N + $;
Name_uRelative_Deadline : constant Name_Id := N + $;
Name_uResult : constant Name_Id := N + $;
+ Name_uResult_Object_For_Postcond : constant Name_Id := N + $;
+ Name_uReturn_Success_For_Postcond : constant Name_Id := N + $;
Name_uSecondary_Stack : constant Name_Id := N + $;
Name_uSecondary_Stack_Size : constant Name_Id := N + $;
Name_uService : constant Name_Id := N + $;
diff --git a/gcc/ada/symbols.adb b/gcc/ada/symbols.adb
deleted file mode 100644
index d8d4992..0000000
--- a/gcc/ada/symbols.adb
+++ /dev/null
@@ -1,90 +0,0 @@
-------------------------------------------------------------------------------
--- --
--- GNAT COMPILER COMPONENTS --
--- --
--- S Y M B O L S --
--- --
--- B o d y --
--- --
--- Copyright (C) 2003-2020, Free Software Foundation, Inc. --
--- --
--- GNAT is free software; you can redistribute it and/or modify it under --
--- terms of the GNU General Public License as published by the Free Soft- --
--- ware Foundation; either version 3, or (at your option) any later ver- --
--- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
--- for more details. You should have received a copy of the GNU General --
--- Public License distributed with GNAT; see file COPYING3. If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license. --
--- --
--- GNAT was originally developed by the GNAT team at New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc. --
--- --
-------------------------------------------------------------------------------
-
--- This is the default version of this package, used when the creation
--- of symbol files is not supported.
-
-with Ada.Text_IO; use Ada.Text_IO;
-
-package body Symbols is
-
- ----------------
- -- Initialize --
- ----------------
-
- procedure Initialize
- (Symbol_File : String;
- Reference : String;
- Symbol_Policy : Policy;
- Quiet : Boolean;
- Version : String;
- Success : out Boolean)
- is
- pragma Unreferenced (Symbol_File);
- pragma Unreferenced (Reference);
- pragma Unreferenced (Symbol_Policy);
- pragma Unreferenced (Quiet);
- pragma Unreferenced (Version);
- begin
- Put_Line
- ("creation of symbol files are not supported on this platform");
- Success := False;
- end Initialize;
-
- ----------------
- -- Processing --
- ----------------
-
- package body Processing is
-
- -------------
- -- Process --
- -------------
-
- procedure Process
- (Object_File : String;
- Success : out Boolean)
- is
- pragma Unreferenced (Object_File);
- begin
- Success := False;
- end Process;
-
- end Processing;
-
- --------------
- -- Finalize --
- --------------
-
- procedure Finalize
- (Quiet : Boolean;
- Success : out Boolean)
- is
- pragma Unreferenced (Quiet);
- begin
- Success := False;
- end Finalize;
-
-end Symbols;
diff --git a/gcc/ada/symbols.ads b/gcc/ada/symbols.ads
deleted file mode 100644
index 0193830..0000000
--- a/gcc/ada/symbols.ads
+++ /dev/null
@@ -1,115 +0,0 @@
-------------------------------------------------------------------------------
--- --
--- GNAT COMPILER COMPONENTS --
--- --
--- S Y M B O L S --
--- --
--- S p e c --
--- --
--- Copyright (C) 2003-2020, Free Software Foundation, Inc. --
--- --
--- GNAT is free software; you can redistribute it and/or modify it under --
--- terms of the GNU General Public License as published by the Free Soft- --
--- ware Foundation; either version 3, or (at your option) any later ver- --
--- sion. GNAT is distributed in the hope that it will be useful, but WITH- --
--- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY --
--- or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License --
--- for more details. You should have received a copy of the GNU General --
--- Public License distributed with GNAT; see file COPYING3. If not, go to --
--- http://www.gnu.org/licenses for a complete copy of the license. --
--- --
--- GNAT was originally developed by the GNAT team at New York University. --
--- Extensive contributions were provided by Ada Core Technologies Inc. --
--- --
-------------------------------------------------------------------------------
-
--- This package allows the creation of symbol files to be used for linking
--- libraries. The format of symbol files depends on the platform, so there is
--- several implementations of the body.
-
-with GNAT.Dynamic_Tables;
-
-with System.OS_Lib; use System.OS_Lib;
-
-package Symbols is
-
- type Policy is
- -- Symbol policy
-
- (Autonomous,
- -- Create a symbol file without considering any reference
-
- Compliant,
- -- Either create a symbol file with the same major and minor IDs if
- -- all symbols are already found in the reference file or with an
- -- incremented minor ID, if not.
-
- Controlled,
- -- Fail if symbols are not the same as those in the reference file
-
- Restricted,
- -- Restrict the symbols to those in the symbol file. Fail if some
- -- symbols in the symbol file are not exported from the object files.
-
- Direct);
- -- The reference symbol file is copied to the symbol file
-
- type Symbol_Kind is (Data, Proc);
- -- To distinguish between the different kinds of symbols
-
- type Symbol_Data is record
- Name : String_Access;
- Kind : Symbol_Kind := Data;
- Present : Boolean := True;
- end record;
- -- Data (name and kind) for each of the symbols
-
- package Symbol_Table is new GNAT.Dynamic_Tables
- (Table_Component_Type => Symbol_Data,
- Table_Index_Type => Natural,
- Table_Low_Bound => 0,
- Table_Initial => 100,
- Table_Increment => 100);
- -- The symbol tables
-
- Original_Symbols : Symbol_Table.Instance;
- -- The symbols, if any, found in the reference symbol table
-
- Complete_Symbols : Symbol_Table.Instance;
- -- The symbols, if any, found in the objects files
-
- procedure Initialize
- (Symbol_File : String;
- Reference : String;
- Symbol_Policy : Policy;
- Quiet : Boolean;
- Version : String;
- Success : out Boolean);
- -- Initialize a symbol file. This procedure must be called before
- -- Processing any object file. Depending on the platforms and the
- -- circumstances, additional messages may be issued if Quiet is False.
-
- package Processing is
-
- -- This package, containing a single visible procedure Process, exists
- -- so that it can be a subunits, for some platforms, the body of package
- -- Symbols is common, while the subunit Processing is not.
-
- procedure Process
- (Object_File : String;
- Success : out Boolean);
- -- Get the symbols from an object file. Success is set to True if the
- -- object file exists and has the expected format.
-
- end Processing;
-
- procedure Finalize
- (Quiet : Boolean;
- Success : out Boolean);
- -- Finalize the symbol file. This procedure should be called after
- -- Initialize (once) and Process (one or more times). If Success is
- -- True, the symbol file is written and closed, ready to be used for
- -- linking the library. Depending on the platforms and the circumstances,
- -- additional messages may be issued if Quiet is False.
-
-end Symbols;
diff --git a/gcc/ada/targparm.adb b/gcc/ada/targparm.adb
index 0be05ae..cbc3f89 100644
--- a/gcc/ada/targparm.adb
+++ b/gcc/ada/targparm.adb
@@ -39,8 +39,7 @@ package body Targparm is
-- The following array defines a tag name for each entry
type Targparm_Tags is
- (AAM, -- AAMP
- ACR, -- Always_Compatible_Rep
+ (ACR, -- Always_Compatible_Rep
ASD, -- Atomic_Sync_Default
BDC, -- Backend_Divide_Checks
BOC, -- Backend_Overflow_Checks
@@ -49,9 +48,7 @@ package body Targparm is
D32, -- Duration_32_Bits
DEN, -- Denorm
EXS, -- Exit_Status_Supported
- FEL, -- Frontend_Layout
FEX, -- Frontend_Exceptions
- FFO, -- Fractional_Fixed_Ops
MOV, -- Machine_Overflows
MRN, -- Machine_Rounds
PAS, -- Preallocated_Stacks
@@ -73,7 +70,6 @@ package body Targparm is
-- The following list of string constants gives the parameter names
- AAM_Str : aliased constant Source_Buffer := "AAMP";
ACR_Str : aliased constant Source_Buffer := "Always_Compatible_Rep";
ASD_Str : aliased constant Source_Buffer := "Atomic_Sync_Default";
BDC_Str : aliased constant Source_Buffer := "Backend_Divide_Checks";
@@ -83,9 +79,7 @@ package body Targparm is
D32_Str : aliased constant Source_Buffer := "Duration_32_Bits";
DEN_Str : aliased constant Source_Buffer := "Denorm";
EXS_Str : aliased constant Source_Buffer := "Exit_Status_Supported";
- FEL_Str : aliased constant Source_Buffer := "Frontend_Layout";
FEX_Str : aliased constant Source_Buffer := "Frontend_Exceptions";
- FFO_Str : aliased constant Source_Buffer := "Fractional_Fixed_Ops";
MOV_Str : aliased constant Source_Buffer := "Machine_Overflows";
MRN_Str : aliased constant Source_Buffer := "Machine_Rounds";
PAS_Str : aliased constant Source_Buffer := "Preallocated_Stacks";
@@ -107,8 +101,7 @@ package body Targparm is
type Buffer_Ptr is access constant Source_Buffer;
Targparm_Str : constant array (Targparm_Tags) of Buffer_Ptr :=
- (AAM => AAM_Str'Access,
- ACR => ACR_Str'Access,
+ (ACR => ACR_Str'Access,
ASD => ASD_Str'Access,
BDC => BDC_Str'Access,
BOC => BOC_Str'Access,
@@ -117,9 +110,7 @@ package body Targparm is
D32 => D32_Str'Access,
DEN => DEN_Str'Access,
EXS => EXS_Str'Access,
- FEL => FEL_Str'Access,
FEX => FEX_Str'Access,
- FFO => FFO_Str'Access,
MOV => MOV_Str'Access,
MRN => MRN_Str'Access,
PAS => PAS_Str'Access,
@@ -803,7 +794,6 @@ package body Targparm is
Result := (System_Text (P) = 'T');
case K is
- when AAM => null;
when ACR => Always_Compatible_Rep_On_Target := Result;
when ASD => Atomic_Sync_Default_On_Target := Result;
when BDC => Backend_Divide_Checks_On_Target := Result;
@@ -813,9 +803,7 @@ package body Targparm is
when D32 => Duration_32_Bits_On_Target := Result;
when DEN => Denorm_On_Target := Result;
when EXS => Exit_Status_Supported_On_Target := Result;
- when FEL => null;
when FEX => Frontend_Exceptions_On_Target := Result;
- when FFO => Fractional_Fixed_Ops_On_Target := Result;
when MOV => Machine_Overflows_On_Target := Result;
when MRN => Machine_Rounds_On_Target := Result;
when PAS => Preallocated_Stacks_On_Target := Result;
diff --git a/gcc/ada/targparm.ads b/gcc/ada/targparm.ads
index 60b2367..5195a39 100644
--- a/gcc/ada/targparm.ads
+++ b/gcc/ada/targparm.ads
@@ -544,16 +544,6 @@ package Targparm is
-- WARNING: There is a matching C declaration of this variable in fe.h
- -------------------------------------------
- -- Boolean-Valued Fixed-Point Attributes --
- -------------------------------------------
-
- Fractional_Fixed_Ops_On_Target : Boolean := False;
- -- Set to True for targets that support fixed-by-fixed multiplication
- -- and division for fixed-point types with a small value equal to
- -- 2 ** (-(T'Object_Size - 1)) and whose values have an absolute
- -- value less than 1.0.
-
-----------------
-- Subprograms --
-----------------
diff --git a/gcc/ada/tracebak.c b/gcc/ada/tracebak.c
index d643cfc..23ed8da 100644
--- a/gcc/ada/tracebak.c
+++ b/gcc/ada/tracebak.c
@@ -309,6 +309,13 @@ __gnat_backtrace (void **array,
#define USING_ARM_UNWINDING 1
#endif
+/*---------------------- ARM Linux ------------------------------------ -*/
+#elif (defined (__ARMEL__) && defined (__linux))
+
+#define USE_GCC_UNWINDER
+#define PC_ADJUST -2
+#define USING_ARM_UNWINDING 1
+
/*---------------------- PPC AIX/PPC Lynx 178/Older Darwin --------------*/
#elif ((defined (_POWER) && defined (_AIX)) || \
(defined (__powerpc__) && defined (__Lynx__) && !defined(__ELF__)) || \
diff --git a/gcc/ada/validsw.adb b/gcc/ada/validsw.adb
index dd3b6a0..2f8d769 100644
--- a/gcc/ada/validsw.adb
+++ b/gcc/ada/validsw.adb
@@ -47,56 +47,6 @@ package body Validsw is
Validity_Check_Tests := False;
end Reset_Validity_Check_Options;
- ---------------------------------
- -- Save_Validity_Check_Options --
- ---------------------------------
-
- procedure Save_Validity_Check_Options
- (Options : out Validity_Check_Options)
- is
- P : Natural := 0;
-
- procedure Add (C : Character; S : Boolean);
- -- Add given character C to string if switch S is true
-
- procedure Add (C : Character; S : Boolean) is
- begin
- if S then
- P := P + 1;
- Options (P) := C;
- end if;
- end Add;
-
- -- Start of processing for Save_Validity_Check_Options
-
- begin
- for K in Options'Range loop
- Options (K) := ' ';
- end loop;
-
- Add ('e', Validity_Check_Components);
- Add ('c', Validity_Check_Copies);
- Add ('d', Validity_Check_Default);
- Add ('f', Validity_Check_Floating_Point);
- Add ('i', Validity_Check_In_Params);
- Add ('m', Validity_Check_In_Out_Params);
- Add ('o', Validity_Check_Operands);
- Add ('p', Validity_Check_Parameters);
- Add ('r', Validity_Check_Returns);
- Add ('s', Validity_Check_Subscripts);
- Add ('t', Validity_Check_Tests);
- end Save_Validity_Check_Options;
-
- ----------------------------------------
- -- Set_Default_Validity_Check_Options --
- ----------------------------------------
-
- procedure Set_Default_Validity_Check_Options is
- begin
- Reset_Validity_Check_Options;
- Set_Validity_Check_Options ("d");
- end Set_Default_Validity_Check_Options;
-
--------------------------------
-- Set_Validity_Check_Options --
--------------------------------
diff --git a/gcc/ada/validsw.ads b/gcc/ada/validsw.ads
index 4b2e4b7..6af95d4 100644
--- a/gcc/ada/validsw.ads
+++ b/gcc/ada/validsw.ads
@@ -126,10 +126,6 @@ package Validsw is
-- Subprograms --
-----------------
- procedure Set_Default_Validity_Check_Options;
- -- This procedure is called to set the default validity checking options
- -- that apply if no Validity_Check switches or pragma is given.
-
procedure Set_Validity_Check_Options
(Options : String;
OK : out Boolean;
@@ -146,8 +142,7 @@ package Validsw is
procedure Set_Validity_Check_Options (Options : String);
-- Like the above procedure, except that the call is simply ignored if
-- there are any error conditions, this is for example appropriate for
- -- calls where the string is known to be valid, e.g. because it was
- -- obtained by Save_Validity_Check_Options.
+ -- calls where the string is known to be valid.
procedure Reset_Validity_Check_Options;
-- Sets all validity check options to off
@@ -155,10 +150,4 @@ package Validsw is
subtype Validity_Check_Options is String (1 .. 16);
-- Long enough string to hold all options from Save call below
- procedure Save_Validity_Check_Options
- (Options : out Validity_Check_Options);
- -- Sets Options to represent current selection of options. This
- -- set can be restored by first calling Reset_Validity_Check_Options,
- -- and then calling Set_Validity_Check_Options with the Options string.
-
end Validsw;