aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRobert Dewar <dewar@adacore.com>2010-01-26 10:13:33 +0000
committerArnaud Charlet <charlet@gcc.gnu.org>2010-01-26 11:13:33 +0100
commit55e4d23d2b3bfe9f11ddc25eb6d2a00a9d6e909a (patch)
treeba3954fe91ad567ff6bd27c6227483d88e599273 /gcc
parent2593c3e1cb8b4325f87ea5a2ce9c1f906c4cf45b (diff)
downloadgcc-55e4d23d2b3bfe9f11ddc25eb6d2a00a9d6e909a.zip
gcc-55e4d23d2b3bfe9f11ddc25eb6d2a00a9d6e909a.tar.gz
gcc-55e4d23d2b3bfe9f11ddc25eb6d2a00a9d6e909a.tar.bz2
par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR
2010-01-26 Robert Dewar <dewar@adacore.com> * par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR * scos.ads: Clarify handling of logical operators From-SVN: r156239
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/par_sco.adb17
-rw-r--r--gcc/ada/scos.ads10
3 files changed, 17 insertions, 15 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index 6ed8ae3..e46d80e 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,3 +1,8 @@
+2010-01-26 Robert Dewar <dewar@adacore.com>
+
+ * par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR
+ * scos.ads: Clarify handling of logical operators
+
2010-01-26 Arnaud Charlet <charlet@adacore.com>
* s-tpoben.adb: Update comments.
diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb
index e6d71dd..e47dbbc 100644
--- a/gcc/ada/par_sco.adb
+++ b/gcc/ada/par_sco.adb
@@ -95,8 +95,9 @@ package body Par_SCO is
function Is_Logical_Operator (N : Node_Id) return Boolean;
-- N is the node for a subexpression. This procedure just tests N to see
- -- if it is a logical operator (including short circuit conditions) and
- -- returns True if so, False otherwise, it does no other processing.
+ -- if it is a logical operator (including short circuit conditions, but
+ -- excluding OR and AND) and returns True if so, False otherwise, it does
+ -- no other processing.
procedure Process_Decisions (N : Node_Id; T : Character);
-- If N is Empty, has no effect. Otherwise scans the tree for the node N,
@@ -297,9 +298,7 @@ package body Par_SCO is
function Is_Logical_Operator (N : Node_Id) return Boolean is
begin
- return Nkind_In (N, N_Op_And,
- N_Op_Or,
- N_Op_Xor,
+ return Nkind_In (N, N_Op_Xor,
N_Op_Not,
N_And_Then,
N_Or_Else);
@@ -436,15 +435,11 @@ package body Par_SCO is
begin
case Nkind (N) is
- -- Logical operators and short circuit forms, output table
- -- entries and then process operands recursively to deal with
- -- nested conditions.
+ -- Logical operators, output table entries and then process
+ -- operands recursively to deal with nested conditions.
when N_And_Then |
N_Or_Else |
- N_Op_And |
- N_Op_Or |
- N_Op_Xor |
N_Op_Not =>
declare
diff --git a/gcc/ada/scos.ads b/gcc/ada/scos.ads
index 3efc5a5..b1a61b2 100644
--- a/gcc/ada/scos.ads
+++ b/gcc/ada/scos.ads
@@ -162,10 +162,12 @@ package SCOs is
-- Note: in the following description, logical operator includes only the
-- short circuited forms and NOT (so can be only NOT, AND THEN, OR ELSE).
-- The reason that we can exclude AND/OR/XOR is that we expect SCO's to
- -- be generated using the restriction No_Direct_Boolean_Operators, which
- -- does not permit the use of AND/OR/XOR on boolean operands. These are
- -- permitted on modular integer types, but such operations do not count
- -- as decisions in any case
+ -- be generated using the restriction No_Direct_Boolean_Operators if we
+ -- are interested in decision coverage, which does not permit the use of
+ -- AND/OR/XOR on boolean operands. These are permitted on modular integer
+ -- types, but such operations do not count as decisions in any case. If
+ -- we are generating SCO's only for simple coverage, then we are not
+ -- interested in decisions in any case.
-- Decisions are either simple or complex. A simple decision is a boolean
-- expresssion that occurs in the context of a control structure in the