diff options
author | Piotr Trojanek <trojanek@adacore.com> | 2018-12-11 11:12:41 +0000 |
---|---|---|
committer | Pierre-Marie de Rodat <pmderodat@gcc.gnu.org> | 2018-12-11 11:12:41 +0000 |
commit | c47fb5d9da9b60987babba6d05d5f97d03d0246b (patch) | |
tree | 36371e6dfc550a9b17aeb58a253f8635ca23247b /gcc | |
parent | 921186579c3ba7d4e1fea8e967ec7d0f804167bf (diff) | |
download | gcc-c47fb5d9da9b60987babba6d05d5f97d03d0246b.zip gcc-c47fb5d9da9b60987babba6d05d5f97d03d0246b.tar.gz gcc-c47fb5d9da9b60987babba6d05d5f97d03d0246b.tar.bz2 |
[Ada] Add "Global => null" contracts to Ada.Calendar routines
Routines in Ada.Real_Time are already annotated with Global => null
contracts to suppress spurious warnings from the flow analysis in
GNATprove. This patch adds such contracts to Ada.Calendar. No change in
runtime behavior expected.
2018-12-11 Piotr Trojanek <trojanek@adacore.com>
gcc/ada/
* libgnat/a-calend.ads: Add "Global => null" contracts to pure
routines.
From-SVN: r267018
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/libgnat/a-calend.ads | 40 |
2 files changed, 31 insertions, 14 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index c08199b..c0ba34a 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2018-12-11 Piotr Trojanek <trojanek@adacore.com> + + * libgnat/a-calend.ads: Add "Global => null" contracts to pure + routines. + 2018-12-11 Hristian Kirtchev <kirtchev@adacore.com> * freeze.adb (Check_Pragma_Thread_Local_Storage): Use the diff --git a/gcc/ada/libgnat/a-calend.ads b/gcc/ada/libgnat/a-calend.ads index b124380..02accbd 100644 --- a/gcc/ada/libgnat/a-calend.ads +++ b/gcc/ada/libgnat/a-calend.ads @@ -61,17 +61,19 @@ is -- the result will contain all elapsed leap seconds since the start of -- Ada time until now. - function Year (Date : Time) return Year_Number; - function Month (Date : Time) return Month_Number; - function Day (Date : Time) return Day_Number; - function Seconds (Date : Time) return Day_Duration; + function Year (Date : Time) return Year_Number with Global => null; + function Month (Date : Time) return Month_Number with Global => null; + function Day (Date : Time) return Day_Number with Global => null; + function Seconds (Date : Time) return Day_Duration with Global => null; procedure Split (Date : Time; Year : out Year_Number; Month : out Month_Number; Day : out Day_Number; - Seconds : out Day_Duration); + Seconds : out Day_Duration) + with + Global => null; -- Break down a time value into its date components set in the current -- time zone. If Split is called on a time value created using Ada 2005 -- Time_Of in some arbitrary time zone, the input value will always be @@ -81,7 +83,9 @@ is (Year : Year_Number; Month : Month_Number; Day : Day_Number; - Seconds : Day_Duration := 0.0) return Time; + Seconds : Day_Duration := 0.0) return Time + with + Global => null; -- GNAT Note: Normally when procedure Split is called on a Time value -- result of a call to function Time_Of, the out parameters of procedure -- Split are identical to the in parameters of function Time_Of. However, @@ -97,19 +101,27 @@ is -- Seconds may be 14340.0 (3:59:00) instead of 10740.0 (2:59:00 being -- a time that not exist). - function "+" (Left : Time; Right : Duration) return Time; - function "+" (Left : Duration; Right : Time) return Time; - function "-" (Left : Time; Right : Duration) return Time; - function "-" (Left : Time; Right : Time) return Duration; + function "+" (Left : Time; Right : Duration) return Time + with + Global => null; + function "+" (Left : Duration; Right : Time) return Time + with + Global => null; + function "-" (Left : Time; Right : Duration) return Time + with + Global => null; + function "-" (Left : Time; Right : Time) return Duration + with + Global => null; -- The first three functions will raise Time_Error if the resulting time -- value is less than the start of Ada time in UTC or greater than the -- end of Ada time in UTC. The last function will raise Time_Error if the -- resulting difference cannot fit into a duration value. - function "<" (Left, Right : Time) return Boolean; - function "<=" (Left, Right : Time) return Boolean; - function ">" (Left, Right : Time) return Boolean; - function ">=" (Left, Right : Time) return Boolean; + function "<" (Left, Right : Time) return Boolean with Global => null; + function "<=" (Left, Right : Time) return Boolean with Global => null; + function ">" (Left, Right : Time) return Boolean with Global => null; + function ">=" (Left, Right : Time) return Boolean with Global => null; Time_Error : exception; |