diff options
author | Richard Henderson <rth@redhat.com> | 2004-07-02 17:15:50 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-07-02 17:15:50 -0700 |
commit | 82c8274320fcfdf2ce27d26c017a4d9d9cafa4b1 (patch) | |
tree | 1c3ed35626f7a5ec145a2aaec1364cd9a760a955 /gcc/dwarf2out.c | |
parent | a7e4cdca852a596dffe4e7cd2a1b0bd887c5ebec (diff) | |
download | gcc-82c8274320fcfdf2ce27d26c017a4d9d9cafa4b1.zip gcc-82c8274320fcfdf2ce27d26c017a4d9d9cafa4b1.tar.gz gcc-82c8274320fcfdf2ce27d26c017a4d9d9cafa4b1.tar.bz2 |
c-decl.c (grokdeclarator): Don't frob current_function_decl around variable_size.
* c-decl.c (grokdeclarator): Don't frob current_function_decl
around variable_size.
(set_decl_nonlocal): Remove.
(store_parm_decls): Add stmts for pending sizes.
* calls.c (calls_function, calls_function_1): Remove.
(precompute_arguments): Don't call it.
* cfgexpand.c (set_save_expr_context): Remove.
(tree_expand_cfg): Don't call it.
* dwarf2out.c (add_bound_info): Don't handle SAVE_EXPR.
(dwarf2out_finish): Likewise.
* expr.c (emit_block_move): Adjust addresses to BLKmode.
(store_constructor): Don't pre-evaluate SAVE_EXPR.
(safe_from_p): Don't queue SAVE_EXPRs.
(expand_expr_real_1 <case SAVE_EXPR>): Rewrite to expect,
or build plain VAR_DECLs.
* fold-const.c (twoval_comparison_p): Don't look at SAVE_EXPR_RTL.
(fold): Likewise.
(fold_checksum_tree): Don't special-case SAVE_EXPR.
* function.c (free_after_compilation): Don't clear x_save_expr_regs.
(put_var_into_stack): Don't handle SAVE_EXPR.
(gen_mem_addressof): Likewise.
* function.h (struct function): Remove x_save_expr_regs.
(save_expr_regs): Remove.
* gengtype.c (adjust_field_tree_exp): Don't special-case SAVE_EXPR.
* print-tree.c (print_node): Don't dump SAVE_EXPR_NOPLACEHOLDER.
* stor-layout.c (variable_size): Don't set it.
(force_type_save_exprs, force_type_save_exprs_1): Remove.
* tree-inline.c (remap_save_expr): Remove fn argument. Update
all callers. Don't set SAVE_EXPR_CONTEXT.
* tree-inline.h (remap_save_expr): Update decl.
* tree.c (save_expr): Update build size.
(first_rtl_op): Don't handle SAVE_EXPR.
(unsave_expr_1, contains_placeholder_p): Likewise.
(decl_function_context): Likewise.
* tree.def (SAVE_EXPR): Remove args 1 and 2.
* tree.h (SAVE_EXPR_CONTEXT, SAVE_EXPR_RTL): Remove.
(SAVE_EXPR_NOPLACEHOLDER, SAVE_EXPR_PERSISTENT_P): Remove.
cp/
* tree.c (cp_unsave_r): Update remap_save_expr call.
java/
* jcf-write.c (generate_bytecode_insns <case SAVE_EXPR>): Rewrite.
From-SVN: r84036
Diffstat (limited to 'gcc/dwarf2out.c')
-rw-r--r-- | gcc/dwarf2out.c | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c index 2e3d55e..2fb962c 100644 --- a/gcc/dwarf2out.c +++ b/gcc/dwarf2out.c @@ -10249,53 +10249,6 @@ add_bound_info (dw_die_ref subrange_die, enum dwarf_attribute bound_attr, tree b break; case SAVE_EXPR: - /* If optimization is turned on, the SAVE_EXPRs that describe how to - access the upper bound values may be bogus. If they refer to a - register, they may only describe how to get at these values at the - points in the generated code right after they have just been - computed. Worse yet, in the typical case, the upper bound values - will not even *be* computed in the optimized code (though the - number of elements will), so these SAVE_EXPRs are entirely - bogus. In order to compensate for this fact, we check here to see - if optimization is enabled, and if so, we don't add an attribute - for the (unknown and unknowable) upper bound. This should not - cause too much trouble for existing (stupid?) debuggers because - they have to deal with empty upper bounds location descriptions - anyway in order to be able to deal with incomplete array types. - Of course an intelligent debugger (GDB?) should be able to - comprehend that a missing upper bound specification in an array - type used for a storage class `auto' local array variable - indicates that the upper bound is both unknown (at compile- time) - and unknowable (at run-time) due to optimization. - - We assume that a MEM rtx is safe because gcc wouldn't put the - value there unless it was going to be used repeatedly in the - function, i.e. for cleanups. */ - if (SAVE_EXPR_RTL (bound) - && (! optimize || MEM_P (SAVE_EXPR_RTL (bound)))) - { - dw_die_ref ctx = lookup_decl_die (current_function_decl); - dw_die_ref decl_die = new_die (DW_TAG_variable, ctx, bound); - rtx loc = SAVE_EXPR_RTL (bound); - - /* If the RTL for the SAVE_EXPR is memory, handle the case where - it references an outer function's frame. */ - if (MEM_P (loc)) - { - rtx new_addr = fix_lexical_addr (XEXP (loc, 0), bound); - - if (XEXP (loc, 0) != new_addr) - loc = gen_rtx_MEM (GET_MODE (loc), new_addr); - } - - add_AT_flag (decl_die, DW_AT_artificial, 1); - add_type_attribute (decl_die, TREE_TYPE (bound), 1, 0, ctx); - add_AT_location_description (decl_die, DW_AT_location, - loc_descriptor (loc, true)); - add_AT_die_ref (subrange_die, bound_attr, decl_die); - } - - /* Else leave out the attribute. */ break; case VAR_DECL: @@ -10331,15 +10284,6 @@ add_bound_info (dw_die_ref subrange_die, enum dwarf_attribute bound_attr, tree b else ctx = lookup_decl_die (current_function_decl); - /* If we weren't able to find a context, it's most likely the case - that we are processing the return type of the function. So - make a SAVE_EXPR to point to it and have the limbo DIE code - find the proper die. The save_expr function doesn't always - make a SAVE_EXPR, so do it ourselves. */ - if (ctx == 0) - bound = build (SAVE_EXPR, TREE_TYPE (bound), bound, - current_function_decl, NULL_TREE); - decl_die = new_die (DW_TAG_variable, ctx, bound); add_AT_flag (decl_die, DW_AT_artificial, 1); add_type_attribute (decl_die, TREE_TYPE (bound), 1, 0, ctx); @@ -13735,15 +13679,6 @@ dwarf2out_finish (const char *filename) add_child_die (origin->die_parent, die); else if (die == comp_unit_die) ; - /* If this was an expression for a bound involved in a function - return type, it may be a SAVE_EXPR for which we weren't able - to find a DIE previously. So try now. */ - else if (node->created_for - && TREE_CODE (node->created_for) == SAVE_EXPR - && 0 != (origin = (lookup_decl_die - (SAVE_EXPR_CONTEXT - (node->created_for))))) - add_child_die (origin, die); else if (errorcount > 0 || sorrycount > 0) /* It's OK to be confused by errors in the input. */ add_child_die (comp_unit_die, die); |