gcc/ * expr.c (expand_expr_real_1): Remove cases for EXIT_BLOCK_EXPR and LABELED_BLOCK_EXPR. * gimplify.c (gimplify_labeled_block_expr): Remove. (gimplify_exit_block_expr): Remove. (gimplify_expr): Don't call them. * tree-inline.c (copy_body_r): Don't handle EXIT_BLOCK_EXPR and LABELED_BLOCK_EXPR. (estimate_num_insns_1): Likewise. (walk_tree): Likewise. * tree-pretty-print.c (dump_generic_node): Don't handle EXIT_BLOCK_EXPR and LABELED_BLOCK_EXPR. * tree.def (EXIT_BLOCK_EXPR): Moved to java-tree.def. (LABELED_BLOCK_EXPR): Likewise. * tree.h (LABELED_BLOCK_LABEL): Moved to java-tree.h. (LABELED_BLOCK_BODY): Likewise. (EXIT_BLOCK_LABELED_BLOCK): Likewise. (EXIT_BLOCK_RETURN): Removed. java/ * java-gimplify.c (java_gimplify_labeled_block_expr): New function. (java_gimplify_exit_block_expr): New function. (java_gimplify_expr): Use them to gimplify EXIT_BLOCK_EXPR and LABELED_BLOCK_EXPR. * java-tree.def (LABELED_BLOCK_EXPR): Moved from tree.def. (EXIT_BLOCK_EXPR): Likewise. * java-tree.h (LABELED_BLOCK_LABEL): Moved from tree.h. (LABELED_BLOCK_BODY): Likewise. (EXIT_BLOCK_LABELED_BLOCK): Likewise. * jcf-write.c (generate_bytecode_insns): Don't handle the unused EXIT_BLOCK_RETURN operand. Use EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND. * lang.c (java_tree_inlining_walk_subtrees): Handle EXIT_BLOCK_EXPR. (java_dump_tree): Use LABELED_BLOCK_LABEL, LABELED_BLOCK_BODY, and EXIT_BLOCK_LABELED_BLOCK instead of TREE_OPERAND. Don't handle the second operand of EXIT_BLOCK_EXPR. * parse.y (find_expr_with_wfl): Use LABELED_BLOCK_BODY instead of TREE_OPERAND. (build_bc_statement): Use build1 to build EXIT_BLOCK_EXPR nodes. From-SVN: r91149
121 lines
4.5 KiB
Modula-2
121 lines
4.5 KiB
Modula-2
/* Shift right, logical. */
|
|
|
|
DEFTREECODE (URSHIFT_EXPR, "urshift_expr", tcc_binary, 2)
|
|
|
|
/* Return -1, 0, 1 depending on whether the first argument is
|
|
less, equal, or greater to the second argument. */
|
|
DEFTREECODE (COMPARE_EXPR, "compare_expr", tcc_binary, 2)
|
|
|
|
/* Same as COMPARE_EXPR, but if either value is NaN, the result is -1. */
|
|
DEFTREECODE (COMPARE_L_EXPR, "compare_l_expr", tcc_binary, 2)
|
|
/* Same as COMPARE_EXPR, but if either value is NaN, the result is 1. */
|
|
DEFTREECODE (COMPARE_G_EXPR, "compare_g_expr", tcc_binary, 2)
|
|
|
|
/* Unary plus. Operand 0 is the expression the unary plus is applied
|
|
to */
|
|
DEFTREECODE (UNARY_PLUS_EXPR, "unary_plus_expr", tcc_unary, 1)
|
|
|
|
/* New array creation expression.
|
|
Operand 0 is the array base type.
|
|
Operand 1 is the list of dimension expressions.
|
|
Operand 2 is the number of other dimensions of unspecified range.
|
|
Once patched, the node will bear the type of the created array. */
|
|
DEFTREECODE (NEW_ARRAY_EXPR, "new_array_expr", tcc_expression, 3)
|
|
|
|
/* New anonymous array creation expression.
|
|
Operand 0 is the base type of the anonymous array.
|
|
Operand 1 is the signature of the dimensions this array contains.
|
|
Operand 2 is the anonymous array initializer.
|
|
Once patched, the node will bear the type of the created array. */
|
|
DEFTREECODE (NEW_ANONYMOUS_ARRAY_EXPR, "new_anonymous_array",
|
|
tcc_expression, 3)
|
|
|
|
/* New class creation expression.
|
|
Operand 0 is the name of the class to be created
|
|
Operand 1 is the argument list used to select a constructor.
|
|
There is no operand 2. That slot is used for the
|
|
CALL_EXPR_RTL macro (see preexpand_calls).
|
|
The type should be the one of the created class. */
|
|
DEFTREECODE (NEW_CLASS_EXPR, "new_class_expr", tcc_expression, 3)
|
|
|
|
/* Defines `this' as an expression. */
|
|
DEFTREECODE (THIS_EXPR, "this", tcc_unary, 0)
|
|
|
|
/* A labeled block. Operand 0 is the label that will be generated to
|
|
mark the end of the block. Operand 1 is the labeled block body. */
|
|
DEFTREECODE (LABELED_BLOCK_EXPR, "labeled_block_expr", tcc_expression, 2)
|
|
|
|
/* Exit a labeled block, possibly returning a value. Operand 0 is a
|
|
LABELED_BLOCK_EXPR to exit. */
|
|
DEFTREECODE (EXIT_BLOCK_EXPR, "exit_block_expr", tcc_statement, 1)
|
|
|
|
/* Case statement expression.
|
|
Operand 1 is the case value. */
|
|
DEFTREECODE (CASE_EXPR, "case", tcc_expression, 1)
|
|
|
|
/* Default statement expression. */
|
|
DEFTREECODE (DEFAULT_EXPR, "default", tcc_expression, 0)
|
|
|
|
/* Try expression
|
|
Operand 0 is the tried block,
|
|
Operand 1 contains chained catch nodes. */
|
|
DEFTREECODE (TRY_EXPR, "try-catch", tcc_expression, 2)
|
|
|
|
/* Catch clause.
|
|
Operand 0 is the catch clause block, which contains the declaration of
|
|
the catch clause parameter. */
|
|
DEFTREECODE (JAVA_CATCH_EXPR, "catch", tcc_unary, 1)
|
|
|
|
/* Synchronized statement.
|
|
Operand 0 is the expression on which we wish to synchronize,
|
|
Operand 1 is the synchronized expression block. */
|
|
DEFTREECODE (SYNCHRONIZED_EXPR, "synchronized", tcc_expression, 2)
|
|
|
|
/* Throw statement.
|
|
Operand 0 is the throw expression. */
|
|
DEFTREECODE (THROW_EXPR, "throw", tcc_unary, 1)
|
|
|
|
/* Conditional operator.
|
|
Operand 0 is the condition expression
|
|
Operand 1 is the then-value
|
|
Operand 2 is the else-value. */
|
|
DEFTREECODE (CONDITIONAL_EXPR, "?:", tcc_expression, 3)
|
|
|
|
/* instanceof operator.
|
|
Operand 0 is the expression that is getting tested
|
|
Operand 1 is the class used for the test. */
|
|
DEFTREECODE (INSTANCEOF_EXPR, "instanceof", tcc_expression, 2)
|
|
|
|
/* Array initializers.
|
|
Operand 0 is the (sub) array target to initialize, left to NULL_TREE
|
|
when the node is created.
|
|
Operand 1 is a CONSTRUCTOR node. */
|
|
DEFTREECODE (NEW_ARRAY_INIT, "new_array_init", tcc_unary, 1)
|
|
|
|
/* Class literal.
|
|
Operand 0 is the name of the class we're trying to build a
|
|
reference from. */
|
|
DEFTREECODE (CLASS_LITERAL, "class_literal", tcc_unary, 1)
|
|
|
|
/* The Java object within the exception object from the runtime. */
|
|
DEFTREECODE (JAVA_EXC_OBJ_EXPR, "java_exc_obj_expr", tcc_expression, 0)
|
|
|
|
/* Annotates a tree node (usually an expression) with source location
|
|
information: a file name (EXPR_WFL_FILENAME); a line number
|
|
(EXPR_WFL_LINENO); and column number (EXPR_WFL_COLNO). It is
|
|
expanded as the contained node (EXPR_WFL_NODE); a line note should
|
|
be emitted first if EXPR_WFL_EMIT_LINE_NOTE. */
|
|
#ifdef USE_MAPPED_LOCATION
|
|
DEFTREECODE (EXPR_WITH_FILE_LOCATION, "expr_with_file_location",
|
|
tcc_expression, 2)
|
|
#else
|
|
DEFTREECODE (EXPR_WITH_FILE_LOCATION, "expr_with_file_location",
|
|
tcc_expression, 3)
|
|
#endif
|
|
|
|
/*
|
|
Local variables:
|
|
mode:c
|
|
End:
|
|
*/
|