aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPiotr Trojanek <trojanek@adacore.com>2018-12-11 11:12:41 +0000
committerPierre-Marie de Rodat <pmderodat@gcc.gnu.org>2018-12-11 11:12:41 +0000
commitc47fb5d9da9b60987babba6d05d5f97d03d0246b (patch)
tree36371e6dfc550a9b17aeb58a253f8635ca23247b /gcc
parent921186579c3ba7d4e1fea8e967ec7d0f804167bf (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/ada/libgnat/a-calend.ads40
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;