diff options
author | Robert Dewar <dewar@adacore.com> | 2010-01-26 10:13:33 +0000 |
---|---|---|
committer | Arnaud Charlet <charlet@gcc.gnu.org> | 2010-01-26 11:13:33 +0100 |
commit | 55e4d23d2b3bfe9f11ddc25eb6d2a00a9d6e909a (patch) | |
tree | ba3954fe91ad567ff6bd27c6227483d88e599273 | |
parent | 2593c3e1cb8b4325f87ea5a2ce9c1f906c4cf45b (diff) | |
download | gcc-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
-rw-r--r-- | gcc/ada/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/ada/par_sco.adb | 17 | ||||
-rw-r--r-- | gcc/ada/scos.ads | 10 |
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 |