par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR
authorRobert Dewar <dewar@adacore.com>
Tue, 26 Jan 2010 10:13:33 +0000 (10:13 +0000)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 26 Jan 2010 10:13:33 +0000 (11:13 +0100)
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

gcc/ada/ChangeLog
gcc/ada/par_sco.adb
gcc/ada/scos.ads

index 6ed8ae3..e46d80e 100644 (file)
@@ -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.
index e6d71dd..e47dbbc 100644 (file)
@@ -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
index 3efc5a5..b1a61b2 100644 (file)
@@ -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