diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2004-06-07 19:52:53 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2004-06-07 15:52:53 -0400 |
commit | 821e1ea1b155e9ca33f12e8e7af447042822c66b (patch) | |
tree | b12eaf8066a9e3f36a310863af9847788fd50cf0 /gcc/ada/ada-tree.def | |
parent | 45b0c94cb45aefa68b1627f8a76a84bad2d5b717 (diff) | |
download | gcc-821e1ea1b155e9ca33f12e8e7af447042822c66b.zip gcc-821e1ea1b155e9ca33f12e8e7af447042822c66b.tar.gz gcc-821e1ea1b155e9ca33f12e8e7af447042822c66b.tar.bz2 |
ada-tree.def (TRANSFORM_EXPR, [...]): Deleted.
* ada-tree.def (TRANSFORM_EXPR, ALLOCATE_EXPR, USE_EXPR): Deleted.
(GNAT_NOP_EXPR, GNAT_LOOP_ID, EXPR_STMT, NULL_STMT): Likewise.
(BLOCK_STMT, IF_STMT, GOTO_STMT, LABEL_STMT, RETURN_STMT): Likewise.
(ASM_STMT, BREAK_STMT, REGION_STMT,HANDLER_STMT): Likewise.
(STMT_STMT, USE_STMT): New statement codes.
(LOOP_STMT, EXIT_STMT): Make slight semantic changes.
* ada-tree.h: Reflect above changes.
(struct tree_loop_id): Deleted.
(union lang_tree_node, struct lang_decl, struct lang_type):
Now just contains a tree node; update macros using TYPE_LANG_SPECIFIC
and DECL_LANGUAGE_SPECIFIC to reflect these changes.
(DECL_INIT_BY_ASSIGN_P, TRE_LOOP_NODE_ID, TREE_SLOC): Deleted.
(IS_ADA_STMT): New macro.
* decl.c (annotate_decl_with_node): New function.
(gnat_to_gnu_entity): Use it and Sloc_to_locus instead of set_lineno.
(gnat_to_gnu_entity, case object): Remove call to expand CONVERT_EXPR.
Call add_stmt_with_node to do needed assignments.
Add call to update setjmp buffer directly, not via EXPR_STMT.
(maybe_variable): Argment GNAT_NODE deleted.
* gigi.h (maybe_variable): Likewise.
(make_transform, add_stmt_with_node, set_block_for_group): New.
(gnat_gimplify_expr, gnat_expand_body, Sloc_to_locus): Likewise.
(set_block_jmpbuf_decl, get_block_jmpbuf_decl): Likewise.
(discard_file_names, gnu_block_stack, gnat_to_code): Deleted.
(set_lineno, set_lineno_from_sloc): Likewise.
(record_code_position, insert_code_for): Likewise.
(gnat_poplevel): Now returns void.
(end_subprog_body): Now takes argument.
* misc.c (cgraph.h, tree-inline.h): New includes.
(gnat_tree_size, LANG_HOOKS_TREE_SIZE): Deleted.
(gnat_post_options, LANG_HOOKS_POST_OPTIONS): New.
(LANG_HOOKS_CALLGRAPH_EXPAND_FUNCTION): Likewise.
(LANG_HOOKS_RTL_EXPAND_STMT, LANG_HOOKS_GIMPLIFY_EXPR): Likewise.
(gnat_parse_file): Don't set immediate_size_expand.
Call cgraph functions.
(gnat_expand_expr): Remove most cases.
(record_code_position, insert_code_for): Remove from here.
* trans.c (toplev.h, tree-gimple.h): Now included.
(discard_file_names): Deleted.
(gnu_block_stack, gnu_block_stmt_node, gnu_block_stmt_free_list): Del.
(first_nondeleted_insn, make_expr_stmt_from_rtl): Likewise.
(struct stmt_group, current_stmt_group, stmt_group_free_list): New.
(gnu_stack_free_list, record_cost_position, insert_code_for): Likewise.
(add_cleanup, push_stack, gnat_gimplify_stmt, add_cleanup): Likewise.
(gnat_gimplify_type_sizes, gnat_gimplify_one_sizepos): Likewise.
(gnat_expand_body_1, gnat_gimplify_expr, annotate_with_node): Likewise.
(set_block_for_group, add_stmt_list): Likewise.
(start_stmt_group): Renamed from start_block_stmt.
(end_stmt_group): Likewise, from end_block_stmt.
(build_stmt_group): Likewise, from build_block_stmt, also add arg.
(gigi): Don't set discard_file_names or call set_lineno.
Disallow front end ZCX; call gnat_to_gnu, not gnat_to_code.
(tree_transform): Deleted, now renamed to be gnat_to_gnu.
Numerous changes throughout to reflect new names and complete
function-at-a-time implementation.
(gnat_expand_stmt): Delete or comment out all cases.
(process_inlined_subprograms): Use add_stmt.
(process_decls): Use gnat_to_gnu, not gnat_to_code, and don't
call set_lineno; also remove unneeded block handling.
(process_type): Remove unneeded block handling.
(build_unit_elab): Remove calls to deleted functions.
* utils.c (cgraph.h, tree-inline.h, tree-gimple.h): Now include.
(tree-dump.h): Likewise.
(struct ada_binding_level): Add field jmpbuf_decl.
(gnat_define_builtin, gnat_install_builtins): New.
(gnat_gimplify_function, gnat_finalize): Likewise.
(gnat_poplevel): No longer return BLOCK, set it instead.
Remove code dealing with nested functions.
(gnat_init_decl_processing): Also set size_type_node.
Call gnat_install_builtins.
(create_var_decl): Don't set DECL_INIT_BY_ASSIGN.
(create_subprog_decl): Change handling of inline_flag; set TREE_STATIC.
Remove special-case for "main".
(end_subprog_body): Add arg and rework for tree-ssa.
(convert): Don't use GNAT_NOP_EXPR or look for TRANSFORM_EXPR.
Add case for BOOLEAN_TYPE.
* utils2.c (rtl.h): Now include.
(build_call_raise): Test Debug_Flag_NN directly.
(build_call_alloc_dealloc): Don't use local stack allocation for now.
(gnat_mark_addressable, case GNAT_NOP_EXPR): Deleted.
(gnat_mark_addressable, case VAR_DECL): Handle both early & late cases.
From-SVN: r82714
Diffstat (limited to 'gcc/ada/ada-tree.def')
-rw-r--r-- | gcc/ada/ada-tree.def | 105 |
1 files changed, 35 insertions, 70 deletions
diff --git a/gcc/ada/ada-tree.def b/gcc/ada/ada-tree.def index 719f15e..5922d54 100644 --- a/gcc/ada/ada-tree.def +++ b/gcc/ada/ada-tree.def @@ -24,21 +24,6 @@ * * ****************************************************************************/ -/* A GNAT tree node to transform to a GCC tree. This is only used when the - node would generate code, rather then just a tree, and we are in the global - context. - - The only field used is TREE_COMPLEXITY, which contains the GNAT node - number. */ - -DEFTREECODE (TRANSFORM_EXPR, "transform_expr", 'e', 0) - -/* Dynamically allocate on the stack a number of bytes of memory given - by operand 0 at the alignment given by operand 1 and return the - address of the resulting memory. */ - -DEFTREECODE (ALLOCATE_EXPR, "allocate_expr", '2', 2) - /* A type that is an unconstrained array itself. This node is never passed to GCC. TREE_TYPE is the type of the fat pointer and TYPE_OBJECT_RECORD_TYPE is the type of a record containing the template and data. */ @@ -54,70 +39,50 @@ DEFTREECODE (UNCONSTRAINED_ARRAY_REF, "unconstrained_array_ref", 'r', 1) /* An expression that returns an RTL suitable for its type. Operand 0 is an expression to be evaluated for side effects only. */ - DEFTREECODE (NULL_EXPR, "null_expr", 'e', 1) -/* An expression that emits a USE for its single operand. */ - -DEFTREECODE (USE_EXPR, "use_expr", 'e', 1) - /* Same as ADDR_EXPR, except that if the operand represents a bit field, return the address of the byte containing the bit. This is used for the 'Address attribute and never shows up in the tree. */ DEFTREECODE (ATTR_ADDR_EXPR, "attr_addr_expr", 'r', 1) -/* An expression that is treated as a conversion while generating code, but is - used to prevent infinite recursion when conversions of biased types are - involved. */ - -DEFTREECODE (GNAT_NOP_EXPR, "gnat_nop_expr", '1', 1) - -/* This is used as a place to store the ID of a loop. - - ??? This should be redone at some point. */ - -DEFTREECODE (GNAT_LOOP_ID, "gnat_loop_id", 'x', 0) - /* Here are the tree codes for the statement types known to Ada. These - must be at the end of this file to allow IS_STMT to work. - - We start with an expression statement, whose only operand is an - expression, EXPR_STMT_EXPR, Execution of the statement means evaluation of - the expression (such as a MODIFY_EXPR) and discarding its result. */ -DEFTREECODE (EXPR_STMT, "expr_stmt", 's', 1) - -/* This is a null statement. The intent is for it not to survive very far. */ -DEFTREECODE (NULL_STMT, "null_stmt", 's', 0) + must be at the end of this file to allow IS_ADA_STMT to work. */ -/* This defines the variable in DECL_STMT_VAR and performs any initialization - in DECL_INITIAL. */ +/* This defines the variable in DECL_STMT_VAR. */ DEFTREECODE (DECL_STMT, "decl_stmt", 's', 1) -/* This represents a list of statements. BLOCK_STMT_LIST is a list - statement tree, chained via TREE_CHAIN. BLOCK_STMT_BLOCK, if nonzero, - is the BLOCK node for these statements. */ -DEFTREECODE (BLOCK_STMT, "block_stmt", 's', 2) - -/* This is an IF statement. IF_STMT_COND is the condition being tested, - IF_STMT_TRUE is the statement to be executed if the condition is - true; IF_STMT_ELSEIF, if non-null, is a list of more IF_STMT nodes (where - we only look at IF_STMT_COND and IF_STMT_TRUE) that correspond to - any "else if" parts; and IF_STMT_ELSE is the statement to be executed if - all conditions are. */ -DEFTREECODE (IF_STMT, "if_stmt", 's', 4) - -/* A goto just points to the label: GOTO_STMT_LABEL. */ -DEFTREECODE (GOTO_STMT, "goto_stmt", 's', 1) - -/* A label: LABEL_STMT_LABEL is the label. */ -DEFTREECODE (LABEL_STMT, "label_stmt", 's', 1) - -/* A "return". RETURN_STMT_EXPR is the value to return if non-null. */ -DEFTREECODE (RETURN_STMT, "return_stmt", 's', 1) - -/* An "asm" statement. The operands are ASM_STMT_TEMPLATE, ASM_STMT_OUTPUT, - ASM_STMT_ORIG_OUT, ASM_STMT_INPUT, and ASM_STMT_CLOBBER. */ -DEFTREECODE (ASM_STMT, "asm_stmt", 's', 5) +/* This is how record_code_position and insert_code_for work. The former + makes this tree node, whose operand is a statement. The latter inserts + the actual statements into this node. Gimplification consists of + just returning the inner statement. */ +DEFTREECODE (STMT_STMT, "stmt_stmt", 's', 1) + +/* A loop. LOOP_STMT_TOP_COND and LOOP_STMT_BOT_COND are the tests to exit a + loop at the top and bottom, respectively. LOOP_STMT_UPDATE is the statement + to update the loop iterator at the continue point. LOOP_STMT_BODY are the + statements in the body of the loop. LOOP_STMT_LABEL is used during + gimplification to point to the LABEL_DECL of the end label of the loop. */ +DEFTREECODE (LOOP_STMT, "loop_stmt", 's', 5) + +/* Conditionally exit a loop. EXIT_STMT_COND is the condition, which, if + true, will cause the loop to be exited. If no condition is specified, + the loop is unconditionally exited. EXIT_STMT_LOOP is the LOOP_STMT + corresponding to the loop to exit. */ +DEFTREECODE (EXIT_STMT, "exit_stmt", 's', 2) + +/* A exception region. REGION_STMT_BODY is the statement to be executed + inside the region. REGION_STMT_HANDLE is a statement that represents + the exception handlers (usually a BLOCK_STMT of HANDLE_STMTs). + REGION_STMT_BLOCK is the BLOCK node for the declarative region, if any. */ +DEFTREECODE (REGION_STMT, "region_stmt", 's', 3) + +/* An exception handler. HANDLER_STMT_ARG is the value to pass to + expand_start_catch, HANDLER_STMT_LIST is the list of statements for the + handler itself, and HANDLER_STMT_BLOCK is the BLOCK node for this + binding. */ +DEFTREECODE (HANDLER_STMT, "handler_stmt", 's', 3) + +/* A statement that emits a USE for its single operand. */ +DEFTREECODE (USE_STMT, "use_expr", 's', 1) -/* An analog to the C "break" statement. */ -DEFTREECODE (BREAK_STMT, "break_stmt", 's', 0) |