c-tree.texi: Improve documentation for IF_STMTs and related conditional statements.
authorMark Mitchell <mark@codesourcery.com>
Mon, 23 Oct 2000 14:43:33 +0000 (14:43 +0000)
committerMark Mitchell <mmitchel@gcc.gnu.org>
Mon, 23 Oct 2000 14:43:33 +0000 (14:43 +0000)
* c-tree.texi: Improve documentation for IF_STMTs and related
conditional statements.

From-SVN: r37015

gcc/ChangeLog
gcc/c-tree.texi

index 8245daafde93c51419c8e2d62a36594ffd5a1aa8..c3941b4442b911073bd7e2449c5f0d030640791e 100644 (file)
@@ -1,3 +1,8 @@
+2000-10-23  Mark Mitchell  <mark@codesourcery.com>
+
+       * c-tree.texi: Improve documentation for IF_STMTs and related
+       conditional statements.
+
 2000-10-22  Mark Mitchell  <mark@codesourcery.com>
 
        * expr.c (do_preexpand_calls): Remove.
index d2f63a1ff35955878de7dd67173e6889d46f2562..8af1429546b502d9ee4193a42a89dffb7bc2fb7b 100644 (file)
@@ -1574,9 +1574,20 @@ always have pointer type.
 @item IF_STMT
 
 Used to represent an @code{if} statement.  The @code{IF_COND} is the
-expression or statement used as the condition.  If the condition is a
-statement, it will always be a @code{DECL_STMT}; the variable will then
-be used as the condition.
+expression. 
+
+If the condition is a @code{TREE_LIST}, then the @code{TREE_PURPOSE} is
+a statement (usually a @code{DECL_STMT}).  Each time the coondition is
+evaluated, the statement should be executed.  Then, the
+@code{TREE_VALUE} should be used as the conditional expression itself.
+This representation is used to handle C++ code like this:
+
+@example
+if (int i = 7) ...
+@end example
+
+where there is a new local variable (or variables) declared within the
+condition.
 
 The @code{THEN_CLAUSE} represents the statement given by the @code{then}
 condition, while the @code{ELSE_CLAUSE} represents the statement given
@@ -1643,9 +1654,10 @@ cleanups must be executed in the reverse order in which they appear.
 @item SWITCH_STMT
 
 Used to represent a @code{switch} statement.  The @code{SWITCH_COND} is
-the expression on which the switch is occurring.  (It may be either a
-statement, or an expression.)  The @code{SWITCH_BODY} is the body of the
-switch statement.
+the expression on which the switch is occurring.  See the documentation
+for an @code{IF_STMT} for more information on the representation used
+for the condition.  The @code{SWITCH_BODY} is the body of the switch
+statement.
 
 @item TRY_BLOCK
 Used to represent a @code{try} block.  The body of the try block is
@@ -1665,9 +1677,9 @@ And, if an exception is thrown while the expression is executing,
 @item WHILE_STMT
 
 Used to represent a @code{while} loop.  The @code{WHILE_COND} is the
-termination condition for the loop.  This condition may be either a
-statement or an expression.  If the condition is a statement, it will
-always be a @code{DECL_STMT}; see @code{IF_STMT} for more information.
+termination condition for the loop.  See the documentation for an
+@code{IF_STMT} for more information on the representation used for the
+condition.
 
 The @code{WHILE_BODY} is the body of the loop.