diff options
author | Arnaud Charlet <charlet@gcc.gnu.org> | 2014-01-20 16:23:37 +0100 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2014-01-20 16:23:37 +0100 |
commit | 2838fa930c8c9210ee4a81c1c22a6406a9ce2f0f (patch) | |
tree | 52fa8b47d7314775de1410f03b5815b236a90c24 | |
parent | 1e5692049375a185fcdc66703665fbc5fc5d5aaf (diff) | |
download | gcc-2838fa930c8c9210ee4a81c1c22a6406a9ce2f0f.zip gcc-2838fa930c8c9210ee4a81c1c22a6406a9ce2f0f.tar.gz gcc-2838fa930c8c9210ee4a81c1c22a6406a9ce2f0f.tar.bz2 |
[multiple changes]
2014-01-20 Claire Dross <dross@adacore.com>
* a-cofove.ads (Vector): Capacity discriminant
should be in range of the index.
2014-01-20 Thomas Quinot <quinot@adacore.com>
* a-caldel.ads(To_Duration), s-taasde.ads(Time_Enqueue):
Clarify specs s-tadeca.adb(Enqueue_Calendar): Compensate for
possible difference between epoch of Ada.Calendar clock and Ada
real-time/tasking clock.
* s-taprop-posix.adb: Minor comment fix.
2014-01-20 Doug Rupp <rupp@adacore.com>
* sysdep.c [vxworks]: Remove Vxworks version noise for RTP.
2014-01-20 Hristian Kirtchev <kirtchev@adacore.com>
* exp_attr.adb (Expand_N_Attribute_Reference): Generate validity
checks on the prefix of attribute 'Old.
* sem_ch3.adb (Process_Range_Expr_In_Decl): Suppress the
generation of validity checks on a range that belongs to the
iteration scheme of a quantified expression.
* sem_ch5.adb (One_Bound): Suppress the generation of validity
checks on a bound that belongs to the iteration scheme of a
quantified expression, generate the check in all other cases.
2014-01-20 Bob Duff <duff@adacore.com>
* gnat_ugn.texi: Enable --pp-new by default. Minor reorganization.
2014-01-20 Ed Schonberg <schonberg@adacore.com>
* sem_res.adb (Resolve): When compiling a predefined unit, ignore
interpretations that do not come from other predefined units,
to prevent spurious ambiguities in the presence of user-defined
operators in the context of (an instance of) a predefined unit.
From-SVN: r206822
-rw-r--r-- | gcc/ada/ChangeLog | 39 | ||||
-rw-r--r-- | gcc/ada/a-caldel.ads | 4 | ||||
-rw-r--r-- | gcc/ada/a-cofove.ads | 7 | ||||
-rw-r--r-- | gcc/ada/exp_attr.adb | 8 | ||||
-rw-r--r-- | gcc/ada/gnat_ugn.texi | 11 | ||||
-rw-r--r-- | gcc/ada/s-taasde.ads | 5 | ||||
-rw-r--r-- | gcc/ada/s-tadeca.adb | 26 | ||||
-rw-r--r-- | gcc/ada/s-taprop-posix.adb | 2 | ||||
-rw-r--r-- | gcc/ada/sem_ch3.adb | 9 | ||||
-rw-r--r-- | gcc/ada/sem_ch5.adb | 11 | ||||
-rw-r--r-- | gcc/ada/sem_res.adb | 18 | ||||
-rw-r--r-- | gcc/ada/sysdep.c | 7 |
12 files changed, 120 insertions, 27 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 68186c3..9e19e1d 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,42 @@ +2014-01-20 Claire Dross <dross@adacore.com> + + * a-cofove.ads (Vector): Capacity discriminant + should be in range of the index. + +2014-01-20 Thomas Quinot <quinot@adacore.com> + + * a-caldel.ads(To_Duration), s-taasde.ads(Time_Enqueue): + Clarify specs s-tadeca.adb(Enqueue_Calendar): Compensate for + possible difference between epoch of Ada.Calendar clock and Ada + real-time/tasking clock. + * s-taprop-posix.adb: Minor comment fix. + +2014-01-20 Doug Rupp <rupp@adacore.com> + + * sysdep.c [vxworks]: Remove Vxworks version noise for RTP. + +2014-01-20 Hristian Kirtchev <kirtchev@adacore.com> + + * exp_attr.adb (Expand_N_Attribute_Reference): Generate validity + checks on the prefix of attribute 'Old. + * sem_ch3.adb (Process_Range_Expr_In_Decl): Suppress the + generation of validity checks on a range that belongs to the + iteration scheme of a quantified expression. + * sem_ch5.adb (One_Bound): Suppress the generation of validity + checks on a bound that belongs to the iteration scheme of a + quantified expression, generate the check in all other cases. + +2014-01-20 Bob Duff <duff@adacore.com> + + * gnat_ugn.texi: Enable --pp-new by default. Minor reorganization. + +2014-01-20 Ed Schonberg <schonberg@adacore.com> + + * sem_res.adb (Resolve): When compiling a predefined unit, ignore + interpretations that do not come from other predefined units, + to prevent spurious ambiguities in the presence of user-defined + operators in the context of (an instance of) a predefined unit. + 2014-01-20 Robert Dewar <dewar@adacore.com> * gnat_rm.texi: Document that Loop_Variant is included in diff --git a/gcc/ada/a-caldel.ads b/gcc/ada/a-caldel.ads index d52c4e2..1a0b129 100644 --- a/gcc/ada/a-caldel.ads +++ b/gcc/ada/a-caldel.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1992-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1992-2013, Free Software Foundation, Inc. -- -- -- -- GNARL 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- -- @@ -48,6 +48,6 @@ package Ada.Calendar.Delays is -- must perform all the processing required for an abort point. function To_Duration (T : Time) return Duration; - -- Convert Time to Duration + -- Convert Time to Duration elapsed since UNIX epoch end Ada.Calendar.Delays; diff --git a/gcc/ada/a-cofove.ads b/gcc/ada/a-cofove.ads index 9ee2ea9..1f9b94f 100644 --- a/gcc/ada/a-cofove.ads +++ b/gcc/ada/a-cofove.ads @@ -71,7 +71,10 @@ package Ada.Containers.Formal_Vectors is No_Index : constant Extended_Index := Extended_Index'First; - type Vector (Capacity : Count_Type) is private; + subtype Capacity_Range is + Count_Type range 0 .. Count_Type (Index_Type'Last - Index_Type'First + 1); + + type Vector (Capacity : Capacity_Range) is private; type Cursor is private; pragma Preelaborable_Initialization (Cursor); @@ -372,7 +375,7 @@ private type Elements_Array is array (Count_Type range <>) of Element_Type; function "=" (L, R : Elements_Array) return Boolean is abstract; - type Vector (Capacity : Count_Type) is record + type Vector (Capacity : Capacity_Range) is record Elements : Elements_Array (1 .. Capacity); Last : Extended_Index := No_Index; end record; diff --git a/gcc/ada/exp_attr.adb b/gcc/ada/exp_attr.adb index bd19359..93a23901 100644 --- a/gcc/ada/exp_attr.adb +++ b/gcc/ada/exp_attr.adb @@ -3854,6 +3854,14 @@ package body Exp_Attr is Insert_Action (First (Declarations (Subp)), Asn_Stm); end if; + -- Ensure that the prefix of attribute 'Old is valid. The check must + -- be inserted after the expansion of the attribute has taken place + -- to reflect the new placement of the prefix. + + if Validity_Checks_On and then Validity_Check_Operands then + Ensure_Valid (Pref); + end if; + Pop_Scope; Rewrite (N, New_Occurrence_Of (Tnn, Loc)); diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 5c3c0a9..f4a43ed 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -13819,11 +13819,8 @@ identifier case conventions, rules of indentation, and comment layout. Note: A newly-redesigned set of formatting algorithms used by gnatpp is now available. -To invoke the new experimental formatting algorithms, use the -@option{--pp-new} switch. -The default is @option{--pp-old}; that is, gnatpp uses the old -formatting algorithms by default. -We intend to make @option{--pp-new} the default at some point. +To invoke the old formatting algorithms, use the @option{--pp-old} switch. +We intend to remove support for @option{--pp-old} at some point. To produce a reformatted file, @command{gnatpp} generates and uses the ASIS tree for the input source and thus requires the input to be syntactically and @@ -14435,11 +14432,11 @@ Display usage, then exit disregarding all other options. @item --pp-new @cindex @option{--pp-new} @command{gnatpp} -Use the new experimental formatting algorithms. +Use the new experimental formatting algorithms. This is the default. @item --pp-old @cindex @option{--pp-old} @command{gnatpp} -Use the old formatting algorithms. This is the default. +Use the old formatting algorithms. @item ^-files @var{filename}^/FILES=@var{filename}^ @cindex @option{^-files^/FILES^} (@code{gnatpp}) diff --git a/gcc/ada/s-taasde.ads b/gcc/ada/s-taasde.ads index 97a93b9..80039fe 100644 --- a/gcc/ada/s-taasde.ads +++ b/gcc/ada/s-taasde.ads @@ -6,7 +6,7 @@ -- -- -- S p e c -- -- -- --- Copyright (C) 1998-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2013, Free Software Foundation, Inc. -- -- -- -- GNARL 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- -- @@ -144,6 +144,7 @@ private D : Delay_Block_Access); pragma Inline (Time_Enqueue); -- Used by the child units to enqueue delays on the timer queue - -- implemented in the body of this package. + -- implemented in the body of this package. T denotes a point in time as + -- the duration elapsed since the epoch of the Ada real-time clock. end System.Tasking.Async_Delays; diff --git a/gcc/ada/s-tadeca.adb b/gcc/ada/s-tadeca.adb index 7744072..fa1ef05 100644 --- a/gcc/ada/s-tadeca.adb +++ b/gcc/ada/s-tadeca.adb @@ -6,7 +6,7 @@ -- -- -- B o d y -- -- -- --- Copyright (C) 1998-2009, Free Software Foundation, Inc. -- +-- Copyright (C) 1998-2013, Free Software Foundation, Inc. -- -- -- -- GNARL 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- -- @@ -30,6 +30,8 @@ ------------------------------------------------------------------------------ with Ada.Calendar.Delays; +with System.OS_Constants; +with System.OS_Primitives; with System.Task_Primitives.Operations; with System.Tasking.Initialization; @@ -39,6 +41,12 @@ function System.Tasking.Async_Delays.Enqueue_Calendar return Boolean is use type Ada.Calendar.Time; + + package SOSC renames System.OS_Constants; + package STPO renames System.Task_Primitives.Operations; + + RT_T : Duration := Ada.Calendar.Delays.To_Duration (T); + begin if T <= Ada.Calendar.Clock then D.Timed_Out := True; @@ -46,8 +54,22 @@ begin return False; end if; + -- T is expressed as a duration elapsed since the UNIX epoch, whereas + -- Time_Enque expects duraction elapsed since the epoch of the Ada + -- real time clock: compensate if necessary. + + pragma Warnings (Off); + -- Comparison "SOSC.CLOCK_RT_Ada = SOSC.CLOCK_REALTIME" is compile + -- time known. + + if SOSC.CLOCK_RT_Ada /= SOSC.CLOCK_REALTIME then + pragma Warnings (On); + + RT_T := RT_T - OS_Primitives.Monotonic_Clock + STPO.Monotonic_Clock; + end if; + System.Tasking.Initialization.Defer_Abort (System.Task_Primitives.Operations.Self); - Time_Enqueue (Ada.Calendar.Delays.To_Duration (T), D); + Time_Enqueue (RT_T, D); return True; end System.Tasking.Async_Delays.Enqueue_Calendar; diff --git a/gcc/ada/s-taprop-posix.adb b/gcc/ada/s-taprop-posix.adb index c7747ab..8aff965 100644 --- a/gcc/ada/s-taprop-posix.adb +++ b/gcc/ada/s-taprop-posix.adb @@ -287,7 +287,7 @@ package body System.Task_Primitives.Operations is Rel_Time := Duration'Min (Max_Sensible_Delay, Time - Check_Time); end if; - -- Absolute deadline specified using the real-time clock, in the + -- Absolute deadline specified using the calendar clock, in the -- case where it is not the same as the tasking clock: compensate for -- difference between clock epochs (Base_Time - Base_Cal_Time). diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 86e233b..dfdc85c 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -18780,8 +18780,14 @@ package body Sem_Ch3 is -- We need to ensure validity of the bounds here, because if we -- go ahead and do the expansion, then the expanded code will get -- analyzed with range checks suppressed and we miss the check. + -- Validity checks on the range of a quantified expression are + -- delayed until the construct is transformed into a loop. - Validity_Check_Range (R); + if Nkind (Parent (R)) /= N_Loop_Parameter_Specification + or else Nkind (Parent (Parent (R))) /= N_Quantified_Expression + then + Validity_Check_Range (R); + end if; -- If there were errors in the declaration, try and patch up some -- common mistakes in the bounds. The cases handled are literals @@ -18791,7 +18797,6 @@ package body Sem_Ch3 is -- are guaranteed. if Etype (R) = Any_Type then - if Nkind (Lo) = N_Integer_Literal and then Is_Real_Type (T) then Rewrite (Lo, Make_Real_Literal (Sloc (Lo), UR_From_Uint (Intval (Lo)))); diff --git a/gcc/ada/sem_ch5.adb b/gcc/ada/sem_ch5.adb index bb66856..4f90012 100644 --- a/gcc/ada/sem_ch5.adb +++ b/gcc/ada/sem_ch5.adb @@ -2111,6 +2111,17 @@ package body Sem_Ch5 is if not Has_Call_Using_Secondary_Stack (Analyzed_Bound) then Analyze_And_Resolve (Original_Bound, Typ); + + -- Ensure that the bound is valid. This check should not be + -- generated when the range belongs to a quantified expression + -- as the construct is still not expanded into its final form. + + if Nkind (Parent (R)) /= N_Loop_Parameter_Specification + or else Nkind (Parent (Parent (R))) /= N_Quantified_Expression + then + Ensure_Valid (Original_Bound); + end if; + Force_Evaluation (Original_Bound); return Original_Bound; end if; diff --git a/gcc/ada/sem_res.adb b/gcc/ada/sem_res.adb index d99d94f..56b6aee 100644 --- a/gcc/ada/sem_res.adb +++ b/gcc/ada/sem_res.adb @@ -2156,6 +2156,20 @@ package body Sem_Res is -- First matching interpretation if not Found then + -- If the current statement is part of a predefined library + -- unit, then all interpretations which come from user level + -- packages should not be considered. User-defined operators + -- may appear anywhere in the homonym list. This exclusion + -- does not apply in an instance, where an actual may come + -- from a local declaration. + + if From_Lib + and then not Comes_From_Predefined_Lib_Unit (It.Nam) + and then not In_Instance + then + goto Continue; + end if; + Found := True; I1 := I; Seen := It.Nam; @@ -2167,10 +2181,6 @@ package body Sem_Res is -- some more obscure cases are handled in Disambiguate. else - -- If the current statement is part of a predefined library - -- unit, then all interpretations which come from user level - -- packages should not be considered. - if From_Lib and then not Comes_From_Predefined_Lib_Unit (It.Nam) then diff --git a/gcc/ada/sysdep.c b/gcc/ada/sysdep.c index 9f42707..4c4ec49 100644 --- a/gcc/ada/sysdep.c +++ b/gcc/ada/sysdep.c @@ -43,10 +43,7 @@ #include "selectLib.h" #include "vxWorks.h" #if defined (__RTP__) -# include "version.h" -# if (_WRS_VXWORKS_MAJOR == 6) # include "vwModNum.h" -# endif /* _WRS_VXWORKS_MAJOR == 6 */ #endif /* __RTP__ */ #endif @@ -926,9 +923,9 @@ __gnat_is_file_not_found_error (int errno_val) { #if ! defined (__RTP__) && (! defined (VTHREADS) || defined (__VXWORKSMILS__)) case S_nfsLib_NFSERR_NOENT: #endif -#if defined (__RTP__) && (_WRS_VXWORKS_MAJOR == 6) +#if defined (__RTP__) /* An RTP can return an NFS file not found, and the NFS bits must - first be masked off to check the errno. */ + first be masked on to check the errno. */ case M_nfsStat | ENOENT: #endif #endif |