From: Robert Dewar Date: Tue, 26 Jan 2010 10:13:33 +0000 (+0000) Subject: par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=55e4d23d2b3bfe9f11ddc25eb6d2a00a9d6e909a;p=gcc.git par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR 2010-01-26 Robert Dewar * par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR * scos.ads: Clarify handling of logical operators From-SVN: r156239 --- diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 6ed8ae33770..e46d80e6f91 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,3 +1,8 @@ +2010-01-26 Robert Dewar + + * par_sco.adb (Is_Logical_Operator): Exclude AND/OR/XOR + * scos.ads: Clarify handling of logical operators + 2010-01-26 Arnaud Charlet * s-tpoben.adb: Update comments. diff --git a/gcc/ada/par_sco.adb b/gcc/ada/par_sco.adb index e6d71dd525b..e47dbbc7dea 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 3efc5a54f3d..b1a61b25ec5 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