This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
| Other format: | [Raw text] | |
Hi, This patch breaks Linux/ia64: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35781 H.J. On Mon, Mar 31, 2008 at 5:49 AM, Jan Hubicka <jh@suse.cz> wrote: > Hi, > for the PM and cgraph datastructure changes I would like to push out, I need to > reorganize data we save in struct function, cgraph_node and other > datastructures. Those datastructures have different lifetimes and usually a > lot longer one than data stored in them. > > This patch takes the "easy" part of splitting out RTL data into its own > global object. This save memory by making struct function smaller and > makes it possible to access the fields directly instead of double > indirection. > > Those was originally part of struct function because we maintained in > memory multiple functions in RTL form for RTL inlining. We don't do > that anymore and even if we decided to do that again (perhaps for > interprocedural regalloc or threaded compiler), we would want to have > all the data move off the basic struct function as they consume > considerable amount of memory. I've introduced global "rtl" field that > is storing all the associated RTL datastructures instead of having many > global variables that looks uglier too. > > This is intended to be first patch followed by more stuff. I took only fields > that are clearly living only for RTL and that do have accestor macros so the patch > is not terribly noisy. Doing so enabled some cleanups and removal of cfun arguments > we pass over various old API. > > There is one problem with regno_reg_rtx. For some reason, gcov_type is not > able to handle "length" attributes that are part of global structure fields. I spent > quite some time trying to get it working right, but it is challenging. It seems > better to move this datastructure to vector API in one of followup patches. > In meantime, I've simply placed it as global array. > > Bootstrapped/regtested i686-linux with more related changes, I am re-testing on > clean tree. OK if it passes? > > * builtins.c (expand_builtin_setjmp_receiver): Update call of > get_arg_pointer_save_area. > * expr.c (init_expr): Just clear out rtl.expr. > * function.c (free_after_compilation): Clear out whole RTL structure. > (get_func_frame_size): Merge into ... > (get_frame_size): ... this one. > (assign_stack_local_1): Merge into ... > (assign_stack_local): ... this one. > (expand_function_end): Update call of get_arg_pointer_save_area. > (get_art_pointer_save_area): Remove cfun argument. > * function.h (emit_status): regno_pointer_align does not need length > attribute. Move x_regno_reg_rtx to ... > (regno_reg_rtx): ... new global array. > (reg_rtx_no, seq_stack, REGNO_POINTER_ALIGN): Update accestors. > (pending_stack_adjust, inhibit_defer_pop, saveregs_value, > apply_args_value, forced_labels, stack_pointer_delta): Update accestors. > (struct varasm_status): Move here from varasm.c > (struct rtl_data): New. Move here some fields from struct function. > (return_label, naked_return_label, stack_slot_list, parm_birth_insn, > frame_offset, stack_check_probe_note, arg_pointer_save_area, > used_temp_slots avail_temp_slots, temp_slot_level, > nonlocal_goto_handler_labels): Update accesstors. > (rtl): New global variable. > (struct function): Move some fileds to rtl_data. > (get_arg_pointer_save_area): Update prototype. > * emit-rtl.c (rtl): Declare. > (regno_reg_rtx): Declare. > (first_insn, last_insn, cur_insn_uid, last_location, first_label_num): Update. > (gen_reg_rtx): Update. > (init_virtual_regs): Do not tate emit_status argument. > (init_emit): Do not allocate emit. > * varasm.c (varasm_statuc): Move to function.h. > (n_deferred_constatns): Update accestor. > (init_varasm_status): Do not allocate varasm_status. > (force_const_mem, get_pool_size, output_constant_pool): Update. > * stmt.c (force_label_rtx): Do not use x_ prefixes. > (expand_nl_goto_receiver): Update get_arg_pointer_save_area.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |