ASM_EXPR          asm ("mov x, y");
     The ASM_STRING macro will return a STRING_CST node for
"mov x, y".  If the original statement made use of the
extended-assembly syntax, then ASM_OUTPUTS,
ASM_INPUTS, and ASM_CLOBBERS will be the outputs, inputs,
and clobbers for the statement, represented as STRING_CST nodes. 
The extended-assembly syntax looks like:
     
          asm ("fsinx %1,%0" : "=f" (result) : "f" (angle));
     The first string is the ASM_STRING, containing the instruction
template.  The next two strings are the output and inputs, respectively;
this statement has no clobbers.  As this example indicates, “plain”
assembly statements are merely a special case of extended assembly
statements; they have no cv-qualifiers, outputs, inputs, or clobbers. 
All of the strings will be NUL-terminated, and will contain no
embedded NUL-characters.
     
If the assembly statement is declared volatile, or if the
statement was not an extended assembly statement, and is therefore
implicitly volatile, then the predicate ASM_VOLATILE_P will hold
of the ASM_EXPR.
     
DECL_EXPRDECL_EXPR_DECL macro
can be used to obtain the entity declared.  This declaration may be a
LABEL_DECL, indicating that the label declared is a local label. 
(As an extension, GCC allows the declaration of labels with scope.)  In
C, this declaration may be a FUNCTION_DECL, indicating the
use of the GCC nested function extension.  For more information,
see Functions.
     LABEL_EXPRLABEL_DECL declared by this
statement can be obtained with the LABEL_EXPR_LABEL macro.  The
IDENTIFIER_NODE giving the name of the label can be obtained from
the LABEL_DECL with DECL_NAME.
     GOTO_EXPRgoto statement.  The GOTO_DESTINATION will
usually be a LABEL_DECL.  However, if the “computed goto” extension
has been used, the GOTO_DESTINATION will be an arbitrary expression
indicating the destination.  This expression will always have pointer type.
     RETURN_EXPRreturn statement.  Operand 0 represents the
value to return.  It should either be the RESULT_DECL for the
containing function, or a MODIFY_EXPR or INIT_EXPR
setting the function's RESULT_DECL.  It will be
NULL_TREE if the statement was just
     return;
LOOP_EXPRLOOP_EXPR_BODY
represents the body of the loop.  It should be executed forever, unless
an EXIT_EXPR is encountered.
     EXIT_EXPRLOOP_EXPR.  The single operand is the condition; if it is
nonzero, then the loop should be exited.  An EXIT_EXPR will only
appear within a LOOP_EXPR.
     SWITCH_STMTswitch statement.  The SWITCH_STMT_COND
is the expression on which the switch is occurring.  See the documentation
for an IF_STMT for more information on the representation used
for the condition.  The SWITCH_STMT_BODY is the body of the switch
statement.   The SWITCH_STMT_TYPE is the original type of switch
expression as given in the source, before any compiler conversions.
     CASE_LABEL_EXPRcase label, range of case labels, or a
default label.  If CASE_LOW is NULL_TREE, then this is a
default label.  Otherwise, if CASE_HIGH is NULL_TREE, then
this is an ordinary case label.  In this case, CASE_LOW is
an expression giving the value of the label.  Both CASE_LOW and
CASE_HIGH are INTEGER_CST nodes.  These values will have
the same type as the condition expression in the switch statement.
     Otherwise, if both CASE_LOW and CASE_HIGH are defined, the
statement is a range of case labels.  Such statements originate with the
extension that allows users to write things of the form:
     
case 2 ... 5:
The first value will be CASE_LOW, while the second will be
CASE_HIGH.