aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/scos.ads
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2010-09-10 17:08:53 +0200
committerArnaud Charlet <charlet@gcc.gnu.org>2010-09-10 17:08:53 +0200
commitc768e988ec60315a3239a3681021140a27561f12 (patch)
treea8556befe412e2568e782369bd08f8a9bb980226 /gcc/ada/scos.ads
parent9a1bc6d57f1df18a55ada1bd312699396ca8deb4 (diff)
downloadgcc-c768e988ec60315a3239a3681021140a27561f12.zip
gcc-c768e988ec60315a3239a3681021140a27561f12.tar.gz
gcc-c768e988ec60315a3239a3681021140a27561f12.tar.bz2
[multiple changes]
2010-09-10 Thomas Quinot <quinot@adacore.com> * scos.ads: Add comments. 2010-09-10 Vincent Celier <celier@adacore.com> * gnatcmd.adb (Get_Closure): Remove useless invocation of Close. 2010-09-10 Hristian Kirtchev <kirtchev@adacore.com> * exp_ch7.adb, exp_ch6.adb (Expand_Call): Establish a transient scope for a controlled build-in-place function call which appears in an anonymous context. The transient scope ensures that the intermediate function result is cleaned up after the master is left. (Make_Build_In_Place_Call_In_Anonymous_Context): Remove the creation of the transient scope. This is now done in Exand_Call which covers additional cases other than secondary stack release. 2010-09-10 Arnaud Charlet <charlet@adacore.com> * sem.adb (Do_Unit_And_Dependents): Add guard. 2010-09-10 Robert Dewar <dewar@adacore.com> * exp_ch5.adb: Update comments. * exp_dist.adb: Minor reformatting. From-SVN: r164187
Diffstat (limited to 'gcc/ada/scos.ads')
-rw-r--r--gcc/ada/scos.ads48
1 files changed, 41 insertions, 7 deletions
diff --git a/gcc/ada/scos.ads b/gcc/ada/scos.ads
index 7111287..8163e62 100644
--- a/gcc/ada/scos.ads
+++ b/gcc/ada/scos.ads
@@ -159,7 +159,7 @@ package SCOs is
-- Note: for I and W, condition above is in the RM syntax sense (this
-- condition is a decision in SCO terminology).
- -- and is omitted for all other cases.
+ -- and is omitted for all other cases
-- Note: up to 6 entries can appear on a single CS line. If more than 6
-- entries appear in one logical statement sequence, continuation lines
@@ -216,7 +216,7 @@ package SCOs is
-- For each decision, a decision line is generated with the form:
- -- C* sloc expression
+ -- C* sloc expression [chaining]
-- Here * is one of the following characters:
@@ -229,7 +229,7 @@ package SCOs is
-- For I, E, P, W, sloc is the source location of the IF, EXIT, PRAGMA or
-- WHILE token.
- -- For X, sloc is omitted.
+ -- For X, sloc is omitted
-- The expression is a prefix polish form indicating the structure of
-- the decision, including logical operators and short-circuit forms.
@@ -257,11 +257,11 @@ package SCOs is
-- where t/f are used to mark a condition that has been recognized by
-- the compiler as always being true or false.
- -- & indicates AND THEN connecting two conditions.
+ -- & indicates AND THEN connecting two conditions
- -- | indicates OR ELSE connecting two conditions.
+ -- | indicates OR ELSE connecting two conditions
- -- ! indicates NOT applied to the expression.
+ -- ! indicates NOT applied to the expression
-- Note that complex decisions do NOT include non-short-circuited logical
-- operators (AND/XOR/OR). In the context of existing coverage tools the
@@ -276,6 +276,34 @@ package SCOs is
-- condition, and that is true even if the Ada 2005 set membership
-- form is used, e.g. A in (2,7,11.15).
+ -- The expression can be followed by chaining indicators of the form
+ -- Tsloc-range or Fsloc-range.
+
+ -- T* is present when the statement with the given sloc range is executed
+ -- if, and only if, the decision evaluates to TRUE.
+
+ -- F* is present when the statement with the given sloc range is executed
+ -- if, and only if, the decision evaluates to FALSE.
+
+ -- For an IF statement or ELSIF part, a T chaining indicator is always
+ -- present, with the sloc range of the first statement in the
+ -- corresponding sequence.
+
+ -- For an ELSE part, the last decision in the IF statement (that of the
+ -- last ELSIF part, if any, or that of the IF statement if there is no
+ -- ELSIF part) has an F chaining indicator with the sloc range of the
+ -- first statement in the sequence of the ELSE part.
+
+ -- For a WHILE loop, a T chaining indicator is always present, with the
+ -- sloc range of the first statement in the loop, but no F chaining
+ -- indicator is ever present.
+
+ -- For an EXIT WHEN statement, an F chaining indicator is present if
+ -- there is an immediately following sequence in the same sequence of
+ -- statements.
+
+ -- In all other cases, chaining indicators are omitted
+
-- Case Expressions
-- For case statements, we rely on statement coverage to make sure that
@@ -287,7 +315,7 @@ package SCOs is
-- CC sloc-range sloc-range ...
- -- where sloc-range covers the range of the case expression.
+ -- where sloc-range covers the range of the case expression
-- Note: up to 6 entries can appear on a single CC line. If more than 6
-- entries appear in one logical statement sequence, continuation lines
@@ -382,6 +410,12 @@ package SCOs is
-- To = ending source location
-- Last = False for all but the last entry, True for last entry
+ -- Element (chaining indicator)
+ -- C1 = 'H' (cHain)
+ -- C2 = 'T' or 'F' (chaining on decision true/false)
+ -- From = starting source location of chained statement
+ -- To = ending source location of chained statement
+
-- Note: the sequence starting with a decision, and continuing with
-- operators and elements up to and including the first one labeled with
-- Last = True, indicate the sequence to be output on one decision line.