re PR testsuite/35843 (-fdump-rtl-expand does not exist anymore)
authorJan Hubicka <jh@suse.cz>
Fri, 25 Apr 2008 23:14:40 +0000 (01:14 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Fri, 25 Apr 2008 23:14:40 +0000 (23:14 +0000)
PR testsuite/35843
* cfgexpand.c (pass_expand): Turn into RTL pass.
* passes.c (execute_one_pass): Do pass typechecking after execution.
* tree-pass.h (pass_expand): Turn into RTL pass.

* function.h (struct rtl_data): Move here fields
accesses_prior_frames, calls_eh_return, saves_all_registers,
has_nonlocal_goto, has_asm_statement, is_thunk,
all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
arg_pointer_save_area_init from struct function; turn into bool.
(struct function): Move
calls_eh_return, saves_all_registers, has_nonlocal_goto,
has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
tail_call_emit, arg_pointer_save_area_init
into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
(current_function_returns_struct, current_function_returns_pcc_struct,
current_function_calls_setjmp, current_function_calls_alloca,
current_function_accesses_prior_frames,
current_function_calls_eh_return, current_function_is_thunk,
current_function_stdarg, current_function_profile,
current_function_limit_stack, current_function_uses_pic_offset_table,
current_function_uses_const_pool, current_function_has_nonlocal_label,
current_function_saves_all_registers,
current_function_has_nonlocal_goto,
current_function_has_asm_statement): Remove accesor macros.
* ra-conflict.c (global_conflicts): Update.
* tree-tailcall.c (suitable_for_tail_opt_p): Update.
(suitable_for_tail_call_opt_p): Update.
* builtins.c (expand_builtin_return_addr): Update.
(expand_builtin_setjmp_setup): Update.
(expand_builtin_nonlocal_goto): Update.
* final.c (final_start_function): Update.
(profile_function): Update.
(leaf_function_p): Update.
(only_leaf_regs_used): Update.
* df-scan.c (df_get_exit_block_use_set): Update.
* dojump.c (clear_pending_stack_adjust): Update.
* tree-stdarg.c (gate_optimize_stdarg): Update.
* gimple-low.c (lower_function_body): Update.
* global.c (compute_regsets): Update.
(global_alloc): Update.
* dwarf2out.c (dwarf2out_begin_prologue): Update.
* expr.c (expand_assignment): Update.
* dse.c (dse_step0): Update.
(dse_step1): Update.
* c-decl.c (store_parm_decls): Update.
* local-alloc.c (combine_regs): Update.
(find_free_reg): Update.
* function.c (assign_parms_augmented_arg_list): Update.
(assign_parm_find_data_types): Update.
(assign_parms): Update.
(allocate_struct_function): Update.
(expand_function_start): Update.
(expand_function_end): Update.
(get_arg_pointer_save_area): Update.
(thread_prologue_and_epilogue_insns): Update.
(rest_of_match_asm_constraints): Update.
* stor-layout.c (variable_size): Update.
* gcse.c (gcse_main): Update.
(bypass_jumps): Update.
* gimplify.c (gimplify_function_tree): Update.
* calls.c (emit_call_1): Update.
(expand_call): Update.
* bt-load.c (compute_defs_uses_and_gen): Update.
* except.c (sjlj_assign_call_site_values): Update.
(sjlj_emit_function_enter): Update.
(can_throw_external): Update.
(set_nothrow_function_flags): Update.
(expand_builtin_unwind_init): Update.
(expand_eh_return): Update.
(convert_to_eh_region_ranges): Update.
(output_function_exception_table): Update.
* emit-rtl.c (gen_tmp_stack_mem): Update.
* cfgexpand.c (expand_used_vars): Update.
(tree_expand_cfg): Update.
* cfgcleanup.c (rest_of_handle_jump): Update.
* explow.c (allocate_dynamic_stack_space): Update.
* varasm.c (assemble_start_function): Update.
(force_const_mem): Update.
(mark_constant_pool): Update.
* tree-optimize.c (tree_rest_of_compilation): Update.
* stack-ptr-mod.c (notice_stack_pointer_modification): Update.
* tree-cfg.c (notice_special_calls): Update.
(is_ctrl_altering_stmt): Update.
(tree_can_make_abnormal_goto): Update.
(tree_purge_dead_abnormal_call_edges): Update.
* config/alpha/predicates.md: Update.
* config/alpha/alpha.c (alpha_sa_mask): Update.
(alpha_sa_size): Update.
(alpha_does_function_need_gp): Update.
(alpha_expand_prologue): Update.
(alpha_start_function): Update.
(alpha_output_function_end_prologue): Update.
(alpha_expand_epilogue): Update.
* config/frv/frv.c (frv_stack_info): Update.
(frv_expand_epilogue): Update.
* config/s390/s390.c (s390_regs_ever_clobbered): Update.
(s390_register_info): Update.
(s390_frame_info): Update.
(s390_init_frame_layout): Update.
(s390_can_eliminate): Update.
(save_gprs): Update.
* config/spu/spu.c (spu_split_immediate): Update.
(need_to_save_reg): Update.
(spu_expand_prologue): Update.
(spu_expand_epilogue): Update.
* config/sparc/sparc.md: Update.
* config/sparc/sparc.c (eligible_for_return_delay): Update.
(sparc_tls_got): Update.
(legitimize_pic_address): Update.
(sparc_emit_call_insn): Update.
(sparc_expand_prologue): Update.
(output_return): Update.
(print_operand): Update.
(sparc_function_ok_for_sibcall): Update.
* config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
* config/m32r/m32r.md: Update.
* config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
(m32r_compute_frame_size): Update.
(m32r_expand_prologue): Update.
(m32r_expand_epilogue): Update.
(m32r_legitimize_pic_address): Update.
* config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
* config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
* config/i386/i386.c (ix86_frame_pointer_required): Update.
(gen_push): Update.
(ix86_save_reg): Update.
(ix86_compute_frame_layout): Update.
(ix86_expand_prologue): Update.
(ix86_expand_epilogue): Update.
* config/sh/sh.c (output_stack_adjust): Update.
(calc_live_regs): Update.
(sh5_schedule_saves): Update.
(sh_expand_prologue): Update.
(sh_expand_epilogue): Update.
(sh_setup_incoming_varargs): Update.
(sh_allocate_initial_value): Update.
(sh_get_pr_initial_val): Update.
* config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
* config/sh/sh.md (label:): Update.
* config/avr/avr.c (out_movhi_mr_r): Update.
* config/crx/crx.h (enum): Update.
* config/xtensa/xtensa.h (along): Update.
* config/stormy16/stormy16.c Update.
(xstormy16_compute_stack_layout): Update.
* config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
(fr30_expand_prologue): Update.
* config/cris/cris.c (cris_conditional_register_usage): Update.
(cris_reg_saved_in_regsave_area): Update.
(cris_initial_frame_pointer_offset): Update.
(cris_simple_epilogue): Update.
(cris_expand_prologue): Update.
(cris_expand_epilogue): Update.
(cris_expand_pic_call_address): Update.
(cris_asm_output_symbol_ref): Update.
(cris_asm_output_label_ref): Update.
* config/cris/cris.md Update.
* config/iq2000/iq2000.c (compute_frame_size): Update.
(iq2000_expand_epilogue): Update.
* config/mt/mt.h (save_direction): Update.
* config/mn10300/mn10300.c (mn10300_function_value): Update.
* config/ia64/ia64.c (ia64_compute_frame_size): Update.
(ia64_secondary_reload_class): Update.
* config/m68k/m68k.c (m68k_save_reg): Update.
(m68k_expand_prologue): Update.
(m68k_expand_epilogue): Update.
(legitimize_pic_address): Update.
* config/rs6000/rs6000.c (rs6000_got_register): Update.
(first_reg_to_save): Update.
(first_altivec_reg_to_save): Update.
(compute_vrsave_mask): Update.
(compute_save_world_info): Update.
(rs6000_stack_info): Update.
(spe_func_has_64bit_regs_p): Update.
(rs6000_ra_ever_killed): Update.
(rs6000_emit_eh_reg_restore): Update.
(rs6000_emit_allocate_stack): Update.
(rs6000_emit_prologue): Update.
(rs6000_emit_epilogue): Update.
(rs6000_output_function_epilogue): Update.
(output_profile_hook): Update.
(rs6000_elf_declare_function_name): Update.
* config/rs6000/rs6000.h (rs6000_args): Update.
* config/rs6000/rs6000.md: Update.
* config/mcore/mcore.c (mcore_expand_prolog): Update.
* config/arc/arc.c (arc_output_function_epilogue): Update.
* config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
* config/darwin.c (machopic_function_base_name): Update.
* config/score/score3.c (score3_compute_frame_size): Update.
(rpush): Update.
(rpop): Update.
(score3_epilogue): Update.
* config/score/score7.c (score7_compute_frame_size): Update.
(score7_prologue): Update.
(score7_epilogue): Update.
* config/score/score.h (FRAME_POINTER_REQUIRED): Update.
* config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
* config/arm/arm.c (use_return_insn): Update.
(require_pic_register): Update.
(arm_load_pic_register): Update.
(arm_compute_save_reg0_reg12_mask): Update.
(arm_compute_save_reg_mask): Update.
(thumb1_compute_save_reg_mask): Update.
(output_return_instruction): Update.
(arm_output_function_prologue): Update.
(arm_output_epilogue): Update.
(arm_get_frame_offsets): Update.
(arm_expand_prologue): Update.
(thumb_pushpop): Update.
(thumb_exit): Update.
(thumb1_expand_prologue): Update.
(thumb1_expand_epilogue): Update.
(arm_unwind_emit): Update.
(arm_output_fn_unwind): Update.
* config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
* config/arm/arm.md: Update.
* config/pa/pa.md: Update.
* config/pa/pa.c (legitimize_pic_address): Update.
(compute_frame_size): Update.
(hppa_expand_prologue): Update.
(hppa_expand_epilogue): Update.
(borx_reg_operand): Update.
* config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
(HARD_REGNO_RENAME_OK): Update.
* config/mips/mips.c (mips_global_pointer): Update.
(mips_save_reg_p): Update.
(mips_compute_frame_info): Update.
(mips_frame_pointer_required): Update.
(mips_expand_prologue): Update.
(mips_expand_epilogue): Update.
(mips_can_use_return_insn): Update.
(mips_reorg_process_insns): Update.
* config/v850/v850.c (compute_register_save_size): Update.
* config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
* config/mmix/mmix.c (along): Update.
(mmix_expand_epilogue): Update.
* config/bfin/bfin.c (legitimize_pic_address): Update.
(must_save_p): Update.
(stack_frame_needed_p): Update.
(add_to_reg): Update.
(bfin_expand_prologue): Update.
* stmt.c (expand_asm_operands): Update.
* reload1.c (reload): Update.
(init_elim_table): Update.

From-SVN: r134682

91 files changed:
gcc/ChangeLog
gcc/bt-load.c
gcc/builtins.c
gcc/c-decl.c
gcc/calls.c
gcc/cfgcleanup.c
gcc/cfgexpand.c
gcc/config/alpha/alpha.c
gcc/config/alpha/predicates.md
gcc/config/arc/arc.c
gcc/config/arc/arc.h
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/arm.md
gcc/config/arm/linux-elf.h
gcc/config/avr/avr.c
gcc/config/bfin/bfin.c
gcc/config/cris/cris.c
gcc/config/cris/cris.md
gcc/config/crx/crx.h
gcc/config/darwin.c
gcc/config/fr30/fr30.c
gcc/config/frv/frv.c
gcc/config/i386/i386.c
gcc/config/i386/linux.h
gcc/config/ia64/ia64.c
gcc/config/iq2000/iq2000.c
gcc/config/m32r/m32r.c
gcc/config/m32r/m32r.h
gcc/config/m32r/m32r.md
gcc/config/m68k/m68k.c
gcc/config/mcore/mcore.c
gcc/config/mips/mips.c
gcc/config/mmix/mmix.c
gcc/config/mmix/mmix.h
gcc/config/mn10300/mn10300.c
gcc/config/mt/mt.h
gcc/config/pa/pa.c
gcc/config/pa/pa.h
gcc/config/pa/pa.md
gcc/config/rs6000/rs6000.c
gcc/config/rs6000/rs6000.h
gcc/config/rs6000/rs6000.md
gcc/config/s390/s390.c
gcc/config/score/score.h
gcc/config/score/score3.c
gcc/config/score/score7.c
gcc/config/sh/sh.c
gcc/config/sh/sh.h
gcc/config/sh/sh.md
gcc/config/sparc/sparc.c
gcc/config/sparc/sparc.h
gcc/config/sparc/sparc.md
gcc/config/spu/spu.c
gcc/config/stormy16/stormy16.c
gcc/config/v850/v850.c
gcc/config/xtensa/xtensa.h
gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/cp/method.c
gcc/cp/typeck.c
gcc/df-scan.c
gcc/dojump.c
gcc/dse.c
gcc/dwarf2out.c
gcc/emit-rtl.c
gcc/except.c
gcc/explow.c
gcc/expr.c
gcc/final.c
gcc/fortran/ChangeLog
gcc/fortran/trans-decl.c
gcc/function.c
gcc/function.h
gcc/gcse.c
gcc/gimple-low.c
gcc/gimplify.c
gcc/global.c
gcc/local-alloc.c
gcc/passes.c
gcc/ra-conflict.c
gcc/reload1.c
gcc/stack-ptr-mod.c
gcc/stmt.c
gcc/stor-layout.c
gcc/tree-cfg.c
gcc/tree-optimize.c
gcc/tree-pass.h
gcc/tree-stdarg.c
gcc/tree-tailcall.c
gcc/varasm.c

index b6824f5ee6319d0e5f69e6c9fb71bd05569829a3..374615b45463609bfd52650a85b947898a2e9742 100644 (file)
@@ -1,3 +1,252 @@
+2008-04-25  Jan Hubicka  <jh@suse.cz>
+
+       PR testsuite/35843
+       * cfgexpand.c (pass_expand): Turn into RTL pass.
+       * passes.c (execute_one_pass): Do pass typechecking after execution.
+       * tree-pass.h (pass_expand): Turn into RTL pass.
+
+       * function.h (struct rtl_data): Move here fields
+       accesses_prior_frames, calls_eh_return, saves_all_registers,
+       has_nonlocal_goto, has_asm_statement, is_thunk,
+       all_throwers_are_sibcalls, limit_stack, profile, uses_const_pool,
+       uses_pic_offset_table, uses_eh_lsda, tail_call_emit,
+       arg_pointer_save_area_init from struct function; turn into bool.
+       (struct function): Move
+       calls_eh_return, saves_all_registers, has_nonlocal_goto,
+       has_asm_statement, is_thunk, all_throwers_are_sibcalls, limit_stack,
+       profile, uses_const_pool, uses_pic_offset_table, uses_eh_lsda,
+       tail_call_emit, arg_pointer_save_area_init
+       into struct rtl_data.  Remove recursive_call_emit and gimplified flags.
+       (current_function_returns_struct, current_function_returns_pcc_struct,
+       current_function_calls_setjmp, current_function_calls_alloca,
+       current_function_accesses_prior_frames,
+       current_function_calls_eh_return, current_function_is_thunk,
+       current_function_stdarg, current_function_profile,
+       current_function_limit_stack, current_function_uses_pic_offset_table,
+       current_function_uses_const_pool, current_function_has_nonlocal_label,
+       current_function_saves_all_registers,
+       current_function_has_nonlocal_goto,
+       current_function_has_asm_statement): Remove accesor macros.
+       * ra-conflict.c (global_conflicts): Update.
+       * tree-tailcall.c (suitable_for_tail_opt_p): Update.
+       (suitable_for_tail_call_opt_p): Update.
+       * builtins.c (expand_builtin_return_addr): Update.
+       (expand_builtin_setjmp_setup): Update.
+       (expand_builtin_nonlocal_goto): Update.
+       * final.c (final_start_function): Update.
+       (profile_function): Update.
+       (leaf_function_p): Update.
+       (only_leaf_regs_used): Update.
+       * df-scan.c (df_get_exit_block_use_set): Update.
+       * dojump.c (clear_pending_stack_adjust): Update.
+       * tree-stdarg.c (gate_optimize_stdarg): Update.
+       * gimple-low.c (lower_function_body): Update.
+       * global.c (compute_regsets): Update.
+       (global_alloc): Update.
+       * dwarf2out.c (dwarf2out_begin_prologue): Update.
+       * expr.c (expand_assignment): Update.
+       * dse.c (dse_step0): Update.
+       (dse_step1): Update.
+       * c-decl.c (store_parm_decls): Update.
+       * local-alloc.c (combine_regs): Update.
+       (find_free_reg): Update.
+       * function.c (assign_parms_augmented_arg_list): Update.
+       (assign_parm_find_data_types): Update.
+       (assign_parms): Update.
+       (allocate_struct_function): Update.
+       (expand_function_start): Update.
+       (expand_function_end): Update.
+       (get_arg_pointer_save_area): Update.
+       (thread_prologue_and_epilogue_insns): Update.
+       (rest_of_match_asm_constraints): Update.
+       * stor-layout.c (variable_size): Update.
+       * gcse.c (gcse_main): Update.
+       (bypass_jumps): Update.
+       * gimplify.c (gimplify_function_tree): Update.
+       * calls.c (emit_call_1): Update.
+       (expand_call): Update.
+       * bt-load.c (compute_defs_uses_and_gen): Update.
+       * except.c (sjlj_assign_call_site_values): Update.
+       (sjlj_emit_function_enter): Update.
+       (can_throw_external): Update.
+       (set_nothrow_function_flags): Update.
+       (expand_builtin_unwind_init): Update.
+       (expand_eh_return): Update.
+       (convert_to_eh_region_ranges): Update.
+       (output_function_exception_table): Update.
+       * emit-rtl.c (gen_tmp_stack_mem): Update.
+       * cfgexpand.c (expand_used_vars): Update.
+       (tree_expand_cfg): Update.
+       * cfgcleanup.c (rest_of_handle_jump): Update.
+       * explow.c (allocate_dynamic_stack_space): Update.
+       * varasm.c (assemble_start_function): Update.
+       (force_const_mem): Update.
+       (mark_constant_pool): Update.
+       * tree-optimize.c (tree_rest_of_compilation): Update.
+       * stack-ptr-mod.c (notice_stack_pointer_modification): Update.
+       * tree-cfg.c (notice_special_calls): Update.
+       (is_ctrl_altering_stmt): Update.
+       (tree_can_make_abnormal_goto): Update.
+       (tree_purge_dead_abnormal_call_edges): Update.
+       * config/alpha/predicates.md: Update.
+       * config/alpha/alpha.c (alpha_sa_mask): Update.
+       (alpha_sa_size): Update.
+       (alpha_does_function_need_gp): Update.
+       (alpha_expand_prologue): Update.
+       (alpha_start_function): Update.
+       (alpha_output_function_end_prologue): Update.
+       (alpha_expand_epilogue): Update.
+       * config/frv/frv.c (frv_stack_info): Update.
+       (frv_expand_epilogue): Update.
+       * config/s390/s390.c (s390_regs_ever_clobbered): Update.
+       (s390_register_info): Update.
+       (s390_frame_info): Update.
+       (s390_init_frame_layout): Update.
+       (s390_can_eliminate): Update.
+       (save_gprs): Update.
+       * config/spu/spu.c (spu_split_immediate): Update.
+       (need_to_save_reg): Update.
+       (spu_expand_prologue): Update.
+       (spu_expand_epilogue): Update.
+       * config/sparc/sparc.md: Update.
+       * config/sparc/sparc.c (eligible_for_return_delay): Update.
+       (sparc_tls_got): Update.
+       (legitimize_pic_address): Update.
+       (sparc_emit_call_insn): Update.
+       (sparc_expand_prologue): Update.
+       (output_return): Update.
+       (print_operand): Update.
+       (sparc_function_ok_for_sibcall): Update.
+       * config/sparc/sparc.h (EXIT_IGNORE_STACK): Update.
+       * config/m32r/m32r.md: Update.
+       * config/m32r/m32r.c (MUST_SAVE_RETURN_ADDR): Update.
+       (m32r_compute_frame_size): Update.
+       (m32r_expand_prologue): Update.
+       (m32r_expand_epilogue): Update.
+       (m32r_legitimize_pic_address): Update.
+       * config/m32r/m32r.h (FRAME_POINTER_REQUIRED): Update.
+       * config/i386/linux.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
+       * config/i386/i386.c (ix86_frame_pointer_required): Update.
+       (gen_push): Update.
+       (ix86_save_reg): Update.
+       (ix86_compute_frame_layout): Update.
+       (ix86_expand_prologue): Update.
+       (ix86_expand_epilogue): Update.
+       * config/sh/sh.c (output_stack_adjust): Update.
+       (calc_live_regs): Update.
+       (sh5_schedule_saves): Update.
+       (sh_expand_prologue): Update.
+       (sh_expand_epilogue): Update.
+       (sh_setup_incoming_varargs): Update.
+       (sh_allocate_initial_value): Update.
+       (sh_get_pr_initial_val): Update.
+       * config/sh/sh.h (SHMEDIA_REGS_STACK_ADJUST): Update.
+       * config/sh/sh.md (label:): Update.
+       * config/avr/avr.c (out_movhi_mr_r): Update.
+       * config/crx/crx.h (enum): Update.
+       * config/xtensa/xtensa.h (along): Update.
+       * config/stormy16/stormy16.c Update.
+       (xstormy16_compute_stack_layout): Update.
+       * config/fr30/fr30.c (MUST_SAVE_RETURN_POINTER): Update.
+       (fr30_expand_prologue): Update.
+       * config/cris/cris.c (cris_conditional_register_usage): Update.
+       (cris_reg_saved_in_regsave_area): Update.
+       (cris_initial_frame_pointer_offset): Update.
+       (cris_simple_epilogue): Update.
+       (cris_expand_prologue): Update.
+       (cris_expand_epilogue): Update.
+       (cris_expand_pic_call_address): Update.
+       (cris_asm_output_symbol_ref): Update.
+       (cris_asm_output_label_ref): Update.
+       * config/cris/cris.md Update.
+       * config/iq2000/iq2000.c (compute_frame_size): Update.
+       (iq2000_expand_epilogue): Update.
+       * config/mt/mt.h (save_direction): Update.
+       * config/mn10300/mn10300.c (mn10300_function_value): Update.
+       * config/ia64/ia64.c (ia64_compute_frame_size): Update.
+       (ia64_secondary_reload_class): Update.
+       * config/m68k/m68k.c (m68k_save_reg): Update.
+       (m68k_expand_prologue): Update.
+       (m68k_expand_epilogue): Update.
+       (legitimize_pic_address): Update.
+       * config/rs6000/rs6000.c (rs6000_got_register): Update.
+       (first_reg_to_save): Update.
+       (first_altivec_reg_to_save): Update.
+       (compute_vrsave_mask): Update.
+       (compute_save_world_info): Update.
+       (rs6000_stack_info): Update.
+       (spe_func_has_64bit_regs_p): Update.
+       (rs6000_ra_ever_killed): Update.
+       (rs6000_emit_eh_reg_restore): Update.
+       (rs6000_emit_allocate_stack): Update.
+       (rs6000_emit_prologue): Update.
+       (rs6000_emit_epilogue): Update.
+       (rs6000_output_function_epilogue): Update.
+       (output_profile_hook): Update.
+       (rs6000_elf_declare_function_name): Update.
+       * config/rs6000/rs6000.h (rs6000_args): Update.
+       * config/rs6000/rs6000.md: Update.
+       * config/mcore/mcore.c (mcore_expand_prolog): Update.
+       * config/arc/arc.c (arc_output_function_epilogue): Update.
+       * config/arc/arc.h (FRAME_POINTER_REQUIRED): Update.
+       * config/darwin.c (machopic_function_base_name): Update.
+       * config/score/score3.c (score3_compute_frame_size): Update.
+       (rpush): Update.
+       (rpop): Update.
+       (score3_epilogue): Update.
+       * config/score/score7.c (score7_compute_frame_size): Update.
+       (score7_prologue): Update.
+       (score7_epilogue): Update.
+       * config/score/score.h (FRAME_POINTER_REQUIRED): Update.
+       * config/arm/linux-elf.h (SUBTARGET_FRAME_POINTER_REQUIRED): Update.
+       * config/arm/arm.c (use_return_insn): Update.
+       (require_pic_register): Update.
+       (arm_load_pic_register): Update.
+       (arm_compute_save_reg0_reg12_mask): Update.
+       (arm_compute_save_reg_mask): Update.
+       (thumb1_compute_save_reg_mask): Update.
+       (output_return_instruction): Update.
+       (arm_output_function_prologue): Update.
+       (arm_output_epilogue): Update.
+       (arm_get_frame_offsets): Update.
+       (arm_expand_prologue): Update.
+       (thumb_pushpop): Update.
+       (thumb_exit): Update.
+       (thumb1_expand_prologue): Update.
+       (thumb1_expand_epilogue): Update.
+       (arm_unwind_emit): Update.
+       (arm_output_fn_unwind): Update.
+       * config/arm/arm.h (FRAME_POINTER_REQUIRED): Update.
+       * config/arm/arm.md: Update.
+       * config/pa/pa.md: Update.
+       * config/pa/pa.c (legitimize_pic_address): Update.
+       (compute_frame_size): Update.
+       (hppa_expand_prologue): Update.
+       (hppa_expand_epilogue): Update.
+       (borx_reg_operand): Update.
+       * config/pa/pa.h (FRAME_POINTER_REQUIRED): Update.
+       (HARD_REGNO_RENAME_OK): Update.
+       * config/mips/mips.c (mips_global_pointer): Update.
+       (mips_save_reg_p): Update.
+       (mips_compute_frame_info): Update.
+       (mips_frame_pointer_required): Update.
+       (mips_expand_prologue): Update.
+       (mips_expand_epilogue): Update.
+       (mips_can_use_return_insn): Update.
+       (mips_reorg_process_insns): Update.
+       * config/v850/v850.c (compute_register_save_size): Update.
+       * config/mmix/mmix.h (FRAME_POINTER_REQUIRED): Update.
+       * config/mmix/mmix.c (along): Update.
+       (mmix_expand_epilogue): Update.
+       * config/bfin/bfin.c (legitimize_pic_address): Update.
+       (must_save_p): Update.
+       (stack_frame_needed_p): Update.
+       (add_to_reg): Update.
+       (bfin_expand_prologue): Update.
+       * stmt.c (expand_asm_operands): Update.
+       * reload1.c (reload): Update.
+       (init_elim_table): Update.
+
 2008-04-25  Bob Wilson  <bob.wilson@acm.org>
        
        * optabs.c (expand_float): Fix REG_EQUAL for UNSIGNED_FLOAT libcall.
index 188faeb4f74217c93b1fa15d876e65aaae6ecb49..6feefbbf7af1ac68b639c7485a8b70de7e77f162 100644 (file)
@@ -508,7 +508,7 @@ compute_defs_uses_and_gen (fibheap_t all_btr_defs, btr_def *def_array,
                  note_other_use_this_block (regno, info.users_this_bb);
                }
              /* Check for the blockage emitted by expand_nl_goto_receiver.  */
-             else if (current_function_has_nonlocal_label
+             else if (cfun->has_nonlocal_label
                       && GET_CODE (PATTERN (insn)) == UNSPEC_VOLATILE)
                {
                  btr_user user;
index 54cbde53e0e8cc231fa11651bb792ac472609c24..765294b1be3328b2d082d05c3e16d51e095ec6a5 100644 (file)
@@ -587,7 +587,7 @@ expand_builtin_return_addr (enum built_in_function fndecl_code, int count)
       tem = hard_frame_pointer_rtx;
 
       /* Tell reload not to eliminate the frame pointer.  */
-      current_function_accesses_prior_frames = 1;
+      crtl->accesses_prior_frames = 1;
     }
 #endif
 
@@ -690,10 +690,10 @@ expand_builtin_setjmp_setup (rtx buf_addr, rtx receiver_label)
 
   /* Tell optimize_save_area_alloca that extra work is going to
      need to go on during alloca.  */
-  current_function_calls_setjmp = 1;
+  cfun->calls_setjmp = 1;
 
   /* We have a nonlocal label.   */
-  current_function_has_nonlocal_label = 1;
+  cfun->has_nonlocal_label = 1;
 }
 
 /* Construct the trailing part of a __builtin_setjmp call.  This is
@@ -877,7 +877,7 @@ expand_builtin_nonlocal_goto (tree exp)
   r_sp = gen_rtx_MEM (STACK_SAVEAREA_MODE (SAVE_NONLOCAL),
                      plus_constant (r_save_area, GET_MODE_SIZE (Pmode)));
 
-  current_function_has_nonlocal_goto = 1;
+  crtl->has_nonlocal_goto = 1;
 
 #ifdef HAVE_nonlocal_goto
   /* ??? We no longer need to pass the static chain value, afaik.  */
index 872fb8af30b8c52ced58ed894eb33323364a3daa..979b03c36d2443ecbd3f225194877c35393ec049 100644 (file)
@@ -6637,7 +6637,7 @@ store_parm_decls (void)
      call expand_expr to calculate the size of a variable-sized array.
      We haven't necessarily assigned RTL to all variables yet, so it's
      not safe to try to expand expressions involving them.  */
-  cfun->x_dont_save_pending_sizes_p = 1;
+  cfun->dont_save_pending_sizes_p = 1;
 }
 \f
 /* Emit diagnostics that require gimple input for detection.  Operate on
index 7d42de9f13aa9862471c02be18bc44d9873b2d6f..126037d4a423caa8a9250d5f5cf745e8cc0f4ddb 100644 (file)
@@ -399,7 +399,7 @@ emit_call_1 (rtx funexp, tree fntree, tree fndecl ATTRIBUTE_UNUSED,
     {
       REG_NOTES (call_insn) = gen_rtx_EXPR_LIST (REG_SETJMP, const0_rtx,
                                                 REG_NOTES (call_insn));
-      current_function_calls_setjmp = 1;
+      cfun->calls_setjmp = 1;
     }
 
   SIBLING_CALL_P (call_insn) = ((ecf_flags & ECF_SIBCALL) != 0);
@@ -2122,7 +2122,7 @@ expand_call (tree exp, rtx target, int ignore)
     type_arg_types = TYPE_ARG_TYPES (funtype);
 
   if (flags & ECF_MAY_BE_ALLOCA)
-    current_function_calls_alloca = 1;
+    cfun->calls_alloca = 1;
 
   /* If struct_value_rtx is 0, it means pass the address
      as if it were an extra parameter.  Put the argument expression
@@ -2299,8 +2299,6 @@ expand_call (tree exp, rtx target, int ignore)
   if (crtl->preferred_stack_boundary < preferred_stack_boundary
       && fndecl != current_function_decl)
     crtl->preferred_stack_boundary = preferred_stack_boundary;
-  if (fndecl == current_function_decl)
-    cfun->recursive_call_emit = true;
 
   preferred_unit_stack_boundary = preferred_stack_boundary / BITS_PER_UNIT;
 
@@ -3160,7 +3158,7 @@ expand_call (tree exp, rtx target, int ignore)
   if (tail_call_insns)
     {
       emit_insn (tail_call_insns);
-      cfun->tail_call_emit = true;
+      crtl->tail_call_emit = true;
     }
   else
     emit_insn (normal_call_insns);
index 203963e02ccfb6764a8bbf0e27d6fbd5f9f4e265..aae9ca0009dd2222f2a78d5f5582ca3e953ecdaf 100644 (file)
@@ -2176,7 +2176,7 @@ rest_of_handle_jump (void)
 {
   delete_unreachable_blocks ();
 
-  if (cfun->tail_call_emit)
+  if (crtl->tail_call_emit)
     fixup_tail_calls ();
   return 0;
 }
index 00abf1e7e536eabbe91fb0495ab89a321873ae15..273c6ac864aeed36ecf38dcbfc0e3e3a9bb2aea5 100644 (file)
@@ -1177,7 +1177,7 @@ expand_used_vars (void)
      stack guard: protect-all, alloca used, protected decls present.  */
   if (flag_stack_protect == 2
       || (flag_stack_protect
-         && (current_function_calls_alloca || has_protected_decls)))
+         && (cfun->calls_alloca || has_protected_decls)))
     create_stack_guard ();
 
   /* Assign rtl to each variable based on these partitions.  */
@@ -1874,7 +1874,7 @@ tree_expand_cfg (void)
   /* Honor stack protection warnings.  */
   if (warn_stack_protect)
     {
-      if (current_function_calls_alloca)
+      if (cfun->calls_alloca)
        warning (OPT_Wstack_protector, 
                 "not protecting local variables: variable length buffer");
       if (has_short_buffer && !crtl->stack_protect_guard)
@@ -1982,10 +1982,10 @@ tree_expand_cfg (void)
   return 0;
 }
 
-struct gimple_opt_pass pass_expand =
+struct rtl_opt_pass pass_expand =
 {
  {
-  GIMPLE_PASS,
+  RTL_PASS,
   "expand",                            /* name */
   NULL,                                 /* gate */
   tree_expand_cfg,                     /* execute */
index 867bb08dd5ccc37fefdb2b8747bc681755b3feb7..ed44a88d9ec67437a28e05020c395070bb614749 100644 (file)
@@ -7072,7 +7072,7 @@ alpha_sa_mask (unsigned long *imaskP, unsigned long *fmaskP)
   /* When outputting a thunk, we don't have valid register life info,
      but assemble_start_function wants to output .frame and .mask
      directives.  */
-  if (current_function_is_thunk)
+  if (crtl->is_thunk)
     {
       *imaskP = 0;
       *fmaskP = 0;
@@ -7095,7 +7095,7 @@ alpha_sa_mask (unsigned long *imaskP, unsigned long *fmaskP)
       }
 
   /* We need to restore these for the handler.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       for (i = 0; ; ++i)
        {
@@ -7149,7 +7149,7 @@ alpha_sa_size (void)
       alpha_procedure_type
        = (sa_size || get_frame_size() != 0
           || crtl->outgoing_args_size
-          || current_function_stdarg || current_function_calls_alloca
+          || cfun->stdarg || cfun->calls_alloca
           || frame_pointer_needed)
          ? PT_STACK : PT_REGISTER;
 
@@ -7182,7 +7182,7 @@ alpha_sa_size (void)
 
       vms_base_regno
        = (frame_pointer_needed
-          || current_function_has_nonlocal_label
+          || cfun->has_nonlocal_label
           || alpha_procedure_type == PT_STACK
           || crtl->outgoing_args_size)
          ? REG_PV : HARD_FRAME_POINTER_REGNUM;
@@ -7298,18 +7298,18 @@ alpha_does_function_need_gp (void)
     return 0;
 
   /* We need the gp to load the address of __mcount.  */
-  if (TARGET_PROFILING_NEEDS_GP && current_function_profile)
+  if (TARGET_PROFILING_NEEDS_GP && crtl->profile)
     return 1;
 
   /* The code emitted by alpha_output_mi_thunk_osf uses the gp.  */
-  if (current_function_is_thunk)
+  if (crtl->is_thunk)
     return 1;
 
   /* The nonlocal receiver pattern assumes that the gp is valid for
      the nested function.  Reasonable because it's almost always set
      correctly already.  For the cases where that's wrong, make sure
      the nested function loads its gp on entry.  */
-  if (current_function_has_nonlocal_goto)
+  if (crtl->has_nonlocal_goto)
     return 1;
 
   /* If we need a GP (we have a LDSYM insn or a CALL_INSN), load it first.
@@ -7479,7 +7479,7 @@ alpha_expand_prologue (void)
      the call to mcount ourselves, rather than having the linker do it
      magically in response to -pg.  Since _mcount has special linkage,
      don't represent the call as a call.  */
-  if (TARGET_PROFILING_NEEDS_GP && current_function_profile)
+  if (TARGET_PROFILING_NEEDS_GP && crtl->profile)
     emit_insn (gen_prologue_mcount ());
 
   if (TARGET_ABI_UNICOSMK)
@@ -7825,7 +7825,7 @@ alpha_start_function (FILE *file, const char *fnname,
         Otherwise, do it here.  */
       if (TARGET_ABI_OSF
           && ! alpha_function_needs_gp
-         && ! current_function_is_thunk)
+         && ! crtl->is_thunk)
        {
          putc ('$', file);
          assemble_name (file, fnname);
@@ -7936,7 +7936,7 @@ alpha_output_function_end_prologue (FILE *file)
     fputs ("\t.prologue 0\n", file);
   else if (!flag_inhibit_size_directive)
     fprintf (file, "\t.prologue %d\n",
-            alpha_function_needs_gp || current_function_is_thunk);
+            alpha_function_needs_gp || crtl->is_thunk);
 }
 
 /* Write function epilogue.  */
@@ -8002,7 +8002,7 @@ alpha_expand_epilogue (void)
   fp_offset = 0;
   sa_reg = stack_pointer_rtx;
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     eh_ofs = EH_RETURN_STACKADJ_RTX;
   else
     eh_ofs = NULL_RTX;
@@ -8113,7 +8113,7 @@ alpha_expand_epilogue (void)
         register so as not to interfere with a potential fp restore,
         which must be consecutive with an SP restore.  */
       if (frame_size < 32768
-         && ! (TARGET_ABI_UNICOSMK && current_function_calls_alloca))
+         && ! (TARGET_ABI_UNICOSMK && cfun->calls_alloca))
        sp_adj2 = GEN_INT (frame_size);
       else if (TARGET_ABI_UNICOSMK)
        {
index 8b00633a44a5f3a4192b1fc0024be1fb00b776ab..bc6fc8429805487e7ac2516a06cb8cf061cfd90a 100644 (file)
   tree op_decl, cfun_sec, op_sec;
 
   /* If profiling is implemented via linker tricks, we can't jump
-     to the nogp alternate entry point.  Note that current_function_profile
+     to the nogp alternate entry point.  Note that crtl->profile
      would not be correct, since that doesn't indicate if the target
      function uses profiling.  */
   /* ??? TARGET_PROFILING_NEEDS_GP isn't really the right test,
index cf0f7b64dfa8617f347da8b5528fe9f9b7cf8280..b5e2cb965477bdf26cde247ca3b4531d04251946 100644 (file)
@@ -1283,7 +1283,7 @@ arc_output_function_epilogue (FILE *file, HOST_WIDE_INT size)
       unsigned int pretend_size = current_frame_info.pretend_size;
       unsigned int frame_size = size - pretend_size;
       int restored, fp_restored_p;
-      int can_trust_sp_p = !current_function_calls_alloca;
+      int can_trust_sp_p = !cfun->calls_alloca;
       const char *sp_str = reg_names[STACK_POINTER_REGNUM];
       const char *fp_str = reg_names[FRAME_POINTER_REGNUM];
 
index 06aa4035d1b51c6f3598ad4d99f2de2750b1bbd3..ea40fb23ab777b5e373b98479efc31dee6a47bf2 100644 (file)
@@ -520,7 +520,7 @@ extern enum reg_class arc_regno_reg_class[FIRST_PSEUDO_REGISTER];
    frame pointer.  This expression is evaluated in the reload pass.
    If its value is nonzero the function will have a frame pointer.  */
 #define FRAME_POINTER_REQUIRED \
-(current_function_calls_alloca)
+(cfun->calls_alloca)
 
 /* C statement to store the difference between the frame pointer
    and the stack pointer values immediately after the function prologue.  */
index d788af6740f8f98ee004b01a8af26e483f594ed1..82f8352eac2613c1e1da3d6cbc7e182d31c38b8e 100644 (file)
@@ -1656,9 +1656,9 @@ use_return_insn (int iscond, rtx sibling)
   if (crtl->args.pretend_args_size
       || cfun->machine->uses_anonymous_args
       /* Or if the function calls __builtin_eh_return () */
-      || current_function_calls_eh_return
+      || crtl->calls_eh_return
       /* Or if the function calls alloca */
-      || current_function_calls_alloca
+      || cfun->calls_alloca
       /* Or if there is a stack adjustment.  However, if the stack pointer
         is saved on the stack, we can use a pre-incrementing stack load.  */
       || !(stack_adjust == 0 || (TARGET_APCS_FRAME && frame_pointer_needed
@@ -3373,7 +3373,7 @@ require_pic_register (void)
      We don't want those calls to affect any assumptions about the real
      function; and further, we can't call entry_of_function() until we
      start the real expansion process.  */
-  if (!current_function_uses_pic_offset_table)
+  if (!crtl->uses_pic_offset_table)
     {
       gcc_assert (can_create_pseudo_p ());
       if (arm_pic_register != INVALID_REGNUM)
@@ -3384,7 +3384,7 @@ require_pic_register (void)
             if we are being called as part of the cost-estimation
             process.  */
          if (current_ir_type () != IR_GIMPLE)
-           current_function_uses_pic_offset_table = 1;
+           crtl->uses_pic_offset_table = 1;
        }
       else
        {
@@ -3397,7 +3397,7 @@ require_pic_register (void)
             process.  */
          if (current_ir_type () != IR_GIMPLE)
            {
-             current_function_uses_pic_offset_table = 1;
+             crtl->uses_pic_offset_table = 1;
              start_sequence ();
 
              arm_load_pic_register (0UL);
@@ -3595,7 +3595,7 @@ arm_load_pic_register (unsigned long saved_regs ATTRIBUTE_UNUSED)
   rtx l1, labelno, pic_tmp, pic_tmp2, pic_rtx, pic_reg;
   rtx global_offset_table;
 
-  if (current_function_uses_pic_offset_table == 0 || TARGET_SINGLE_PIC_BASE)
+  if (crtl->uses_pic_offset_table == 0 || TARGET_SINGLE_PIC_BASE)
     return;
 
   gcc_assert (flag_pic);
@@ -10734,7 +10734,7 @@ arm_compute_save_reg0_reg12_mask (void)
       if (flag_pic
          && !TARGET_SINGLE_PIC_BASE
          && arm_pic_register != INVALID_REGNUM
-         && current_function_uses_pic_offset_table)
+         && crtl->uses_pic_offset_table)
        save_reg_mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
     }
   else
@@ -10755,7 +10755,7 @@ arm_compute_save_reg0_reg12_mask (void)
          && !TARGET_SINGLE_PIC_BASE
          && arm_pic_register != INVALID_REGNUM
          && (df_regs_ever_live_p (PIC_OFFSET_TABLE_REGNUM)
-             || current_function_uses_pic_offset_table))
+             || crtl->uses_pic_offset_table))
        save_reg_mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
 
       /* The prologue will copy SP into R0, so save it.  */
@@ -10764,7 +10764,7 @@ arm_compute_save_reg0_reg12_mask (void)
     }
 
   /* Save registers so the exception handler can modify them.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       unsigned int i;
 
@@ -10825,7 +10825,7 @@ arm_compute_save_reg_mask (void)
       || (save_reg_mask
          && optimize_size
          && ARM_FUNC_TYPE (func_type) == ARM_FT_NORMAL
-         && !current_function_calls_eh_return))
+         && !crtl->calls_eh_return))
     save_reg_mask |= 1 << LR_REGNUM;
 
   if (cfun->machine->lr_save_eliminated)
@@ -10887,7 +10887,7 @@ thumb1_compute_save_reg_mask (void)
   if (flag_pic
       && !TARGET_SINGLE_PIC_BASE
       && arm_pic_register != INVALID_REGNUM
-      && current_function_uses_pic_offset_table)
+      && crtl->uses_pic_offset_table)
     mask |= 1 << PIC_OFFSET_TABLE_REGNUM;
 
   /* See if we might need r11 for calls to _interwork_r11_call_via_rN().  */
@@ -11002,7 +11002,7 @@ output_return_instruction (rtx operand, int really_return, int reverse)
       return "";
     }
 
-  gcc_assert (!current_function_calls_alloca || really_return);
+  gcc_assert (!cfun->calls_alloca || really_return);
 
   sprintf (conditional, "%%?%%%c0", reverse ? 'D' : 'd');
 
@@ -11268,7 +11268,7 @@ arm_output_function_prologue (FILE *f, HOST_WIDE_INT frame_size)
   if (cfun->machine->lr_save_eliminated)
     asm_fprintf (f, "\t%@ link register save eliminated.\n");
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     asm_fprintf (f, "\t@ Calls __builtin_eh_return.\n");
 
   return_used_this_function = 0;
@@ -11315,7 +11315,7 @@ arm_output_epilogue (rtx sibling)
 
   /* If we are throwing an exception, then we really must be doing a
      return, so we can't tail-call.  */
-  gcc_assert (!current_function_calls_eh_return || really_return);
+  gcc_assert (!crtl->calls_eh_return || really_return);
 
   offsets = arm_get_frame_offsets ();
   saved_regs_mask = offsets->saved_regs_mask;
@@ -11446,7 +11446,7 @@ arm_output_epilogue (rtx sibling)
         special function exit sequence, or we are not really returning.  */
       if (really_return
          && ARM_FUNC_TYPE (func_type) == ARM_FT_NORMAL
-         && !current_function_calls_eh_return)
+         && !crtl->calls_eh_return)
        /* Delete the LR from the register mask, so that the LR on
           the stack is loaded into the PC in the register mask.  */
        saved_regs_mask &= ~ (1 << LR_REGNUM);
@@ -11463,7 +11463,7 @@ arm_output_epilogue (rtx sibling)
          occur.  If the stack pointer already points at the right
          place, then omit the subtraction.  */
       if (offsets->outgoing_args != (1 + (int) bit_count (saved_regs_mask))
-         || current_function_calls_alloca)
+         || cfun->calls_alloca)
        asm_fprintf (f, "\tsub\t%r, %r, #%d\n", SP_REGNUM, FP_REGNUM,
                     4 * bit_count (saved_regs_mask));
       print_multi_reg (f, "ldmfd\t%r, ", SP_REGNUM, saved_regs_mask, 0);
@@ -11523,10 +11523,10 @@ arm_output_epilogue (rtx sibling)
              count = offsets->saved_regs - offsets->saved_args;
              if (optimize_size
                  && count != 0
-                 && !current_function_calls_eh_return
+                 && !crtl->calls_eh_return
                  && bit_count(saved_regs_mask) * 4 == count
                  && !IS_INTERRUPT (func_type)
-                 && !cfun->tail_call_emit)
+                 && !crtl->tail_call_emit)
                {
                  unsigned long mask;
                  mask = (1 << (arm_size_return_regs() / 4)) - 1;
@@ -11628,7 +11628,7 @@ arm_output_epilogue (rtx sibling)
          && really_return
          && crtl->args.pretend_args_size == 0
          && saved_regs_mask & (1 << LR_REGNUM)
-         && !current_function_calls_eh_return)
+         && !crtl->calls_eh_return)
        {
          saved_regs_mask &= ~ (1 << LR_REGNUM);
          saved_regs_mask |=   (1 << PC_REGNUM);
@@ -11675,7 +11675,7 @@ arm_output_epilogue (rtx sibling)
     return "";
 
   /* Stack adjustment for exception handler.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     asm_fprintf (f, "\tadd\t%r, %r, %r\n", SP_REGNUM, SP_REGNUM,
                 ARM_EH_STACKADJ_REGNUM);
 
@@ -12133,7 +12133,7 @@ arm_get_frame_offsets (void)
            }
 
          if (reg == -1 && arm_size_return_regs () <= 12
-             && !cfun->tail_call_emit)
+             && !crtl->tail_call_emit)
            {
              /* Push/pop an argument register (r3) if all callee saved
                 registers are already being pushed.  */
@@ -12664,7 +12664,7 @@ arm_expand_prologue (void)
      scheduling in the prolog.  Similarly if we want non-call exceptions
      using the EABI unwinder, to prevent faulting instructions from being
      swapped with a stack adjustment.  */
-  if (current_function_profile || !TARGET_SCHED_PROLOG
+  if (crtl->profile || !TARGET_SCHED_PROLOG
       || (ARM_EABI_UNWIND_TABLES && flag_non_call_exceptions))
     emit_insn (gen_blockage ());
 
@@ -16180,7 +16180,7 @@ thumb_pushpop (FILE *f, unsigned long mask, int push, int *cfa_offset,
     {
       /* Catch popping the PC.  */
       if (TARGET_INTERWORK || TARGET_BACKTRACE
-         || current_function_calls_eh_return)
+         || crtl->calls_eh_return)
        {
          /* The PC is never poped directly, instead
             it is popped into r3 and then BX is used.  */
@@ -16255,7 +16255,7 @@ thumb_exit (FILE *f, int reg_containing_return_addr)
      return.  */
   if (pops_needed == 0)
     {
-      if (current_function_calls_eh_return)
+      if (crtl->calls_eh_return)
        asm_fprintf (f, "\tadd\t%r, %r\n", SP_REGNUM, ARM_EH_STACKADJ_REGNUM);
 
       asm_fprintf (f, "\tbx\t%r\n", reg_containing_return_addr);
@@ -16267,7 +16267,7 @@ thumb_exit (FILE *f, int reg_containing_return_addr)
   else if (!TARGET_INTERWORK
           && !TARGET_BACKTRACE
           && !is_called_in_ARM_mode (current_function_decl)
-          && !current_function_calls_eh_return)
+          && !crtl->calls_eh_return)
     {
       asm_fprintf (f, "\tpop\t{%r}\n", PC_REGNUM);
       return;
@@ -16278,7 +16278,7 @@ thumb_exit (FILE *f, int reg_containing_return_addr)
 
   /* If returning via __builtin_eh_return, the bottom three registers
      all contain information needed for the return.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     size = 12;
   else
     {
@@ -16489,7 +16489,7 @@ thumb_exit (FILE *f, int reg_containing_return_addr)
       asm_fprintf (f, "\tmov\t%r, %r\n", LAST_ARG_REGNUM, IP_REGNUM);
     }
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     asm_fprintf (f, "\tadd\t%r, %r\n", SP_REGNUM, ARM_EH_STACKADJ_REGNUM);
 
   /* Return to caller.  */
@@ -16995,7 +16995,7 @@ thumb1_expand_prologue (void)
      scheduling in the prolog.  Similarly if we want non-call exceptions
      using the EABI unwinder, to prevent faulting instructions from being
      swapped with a stack adjustment.  */
-  if (current_function_profile || !TARGET_SCHED_PROLOG
+  if (crtl->profile || !TARGET_SCHED_PROLOG
       || (ARM_EABI_UNWIND_TABLES && flag_non_call_exceptions))
     emit_insn (gen_blockage ());
 
@@ -17045,7 +17045,7 @@ thumb1_expand_epilogue (void)
      the stack adjustment will not be deleted.  */
   emit_insn (gen_prologue_use (stack_pointer_rtx));
 
-  if (current_function_profile || !TARGET_SCHED_PROLOG)
+  if (crtl->profile || !TARGET_SCHED_PROLOG)
     emit_insn (gen_blockage ());
 
   /* Emit a clobber for each insn that will be restored in the epilogue,
@@ -18633,7 +18633,7 @@ arm_unwind_emit (FILE * asm_out_file, rtx insn)
   if (!ARM_EABI_UNWIND_TABLES)
     return;
 
-  if (!(flag_unwind_tables || cfun->uses_eh_lsda)
+  if (!(flag_unwind_tables || crtl->uses_eh_lsda)
       && (TREE_NOTHROW (current_function_decl)
          || cfun->all_throwers_are_sibcalls))
     return;
@@ -18722,7 +18722,7 @@ arm_output_fn_unwind (FILE * f, bool prologue)
       /* If this function will never be unwound, then mark it as such.
          The came condition is used in arm_unwind_emit to suppress
         the frame annotations.  */
-      if (!(flag_unwind_tables || cfun->uses_eh_lsda)
+      if (!(flag_unwind_tables || crtl->uses_eh_lsda)
          && (TREE_NOTHROW (current_function_decl)
              || cfun->all_throwers_are_sibcalls))
        fputs("\t.cantunwind\n", f);
index a340441d3862e29724e617caf00723215c4a13c0..b6e182c0d22e41bc76014b777b2bec26abca4c8a 100644 (file)
@@ -999,7 +999,7 @@ extern int arm_structure_size_boundary;
 #endif
 
 #define FRAME_POINTER_REQUIRED                                 \
-  (current_function_has_nonlocal_label                         \
+  (cfun->has_nonlocal_label                            \
    || SUBTARGET_FRAME_POINTER_REQUIRED                         \
    || (TARGET_ARM && TARGET_APCS_FRAME && ! leaf_function_p ()))
 
@@ -2402,7 +2402,7 @@ extern int making_const_table;
         {                                              \
           if (is_called_in_ARM_mode (DECL)             \
              || (TARGET_THUMB1 && !TARGET_THUMB1_ONLY  \
-                 && current_function_is_thunk))        \
+                 && crtl->is_thunk))   \
             fprintf (STREAM, "\t.code 32\n") ;         \
           else if (TARGET_THUMB1)                      \
            fprintf (STREAM, "\t.code\t16\n\t.thumb_func\n") ;  \
index dcac1346281985f9b3a020f85a7627ab96a77fb4..c66ea74d2afd231796ea650dfc266437609811d0 100644 (file)
   [(clobber (const_int 0))]
   "TARGET_EITHER"
   "
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     emit_insn (gen_prologue_use (gen_rtx_REG (Pmode, 2)));
   if (TARGET_THUMB1)
     thumb1_expand_epilogue ();
index 54eba14436f73bfc09c5bca5d5ef02edeab1ba9e..ca56f7bb66905f622ab9667ef35f91fd54816cf2 100644 (file)
   emit_insn (gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (SImode, LR_REGNUM)))
 
 /* The GNU/Linux profiler needs a frame pointer.  */
-#define SUBTARGET_FRAME_POINTER_REQUIRED current_function_profile
+#define SUBTARGET_FRAME_POINTER_REQUIRED crtl->profile
 
 /* Add .note.GNU-stack.  */
 #undef NEED_INDICATE_EXEC_STACK
index c440729b4226de08b2ae9fba04e06ec5849eebf9..7248fd6a27cdd8496c59c620af3d13d465ea02d1 100644 (file)
@@ -2735,7 +2735,7 @@ out_movhi_mr_r (rtx insn, rtx op[], int *l)
 int
 frame_pointer_required_p (void)
 {
-  return (current_function_calls_alloca
+  return (cfun->calls_alloca
          || crtl->args.info.nregs == 0
          || get_frame_size () > 0);
 }
index d1a5c80d2a8012e5f388cc0e7d4488e7c9af9d2d..87a1d9360b42d525d5bf4fd0452dca5cc600985c 100644 (file)
@@ -307,7 +307,7 @@ legitimize_pic_address (rtx orig, rtx reg, rtx picreg)
 
       emit_move_insn (reg, new);
       if (picreg == pic_offset_table_rtx)
-       current_function_uses_pic_offset_table = 1;
+       crtl->uses_pic_offset_table = 1;
       return reg;
     }
 
@@ -364,7 +364,7 @@ must_save_p (bool is_inthandler, unsigned regno)
   if (D_REGNO_P (regno))
     {
       bool is_eh_return_reg = false;
-      if (current_function_calls_eh_return)
+      if (crtl->calls_eh_return)
        {
          unsigned j;
          for (j = 0; ; j++)
@@ -389,7 +389,7 @@ must_save_p (bool is_inthandler, unsigned regno)
               && (is_inthandler || !call_used_regs[regno]))
              || (!TARGET_FDPIC
                  && regno == PIC_OFFSET_TABLE_REGNUM
-                 && (current_function_uses_pic_offset_table
+                 && (crtl->uses_pic_offset_table
                      || (TARGET_ID_SHARED_LIBRARY && !current_function_is_leaf))));
     }
   else
@@ -452,7 +452,7 @@ stack_frame_needed_p (void)
 {
   /* EH return puts a new return address into the frame using an
      address relative to the frame pointer.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     return true;
   return frame_pointer_needed;
 }
@@ -854,7 +854,7 @@ add_to_reg (rtx reg, HOST_WIDE_INT value, int frame, int epilogue_p)
            if ((df_regs_ever_live_p (i) && ! call_used_regs[i])
                || (!TARGET_FDPIC
                    && i == PIC_OFFSET_TABLE_REGNUM
-                   && (current_function_uses_pic_offset_table
+                   && (crtl->uses_pic_offset_table
                        || (TARGET_ID_SHARED_LIBRARY
                            && ! current_function_is_leaf))))
              break;
@@ -1167,13 +1167,13 @@ bfin_expand_prologue (void)
       return;
     }
 
-  if (current_function_limit_stack
+  if (crtl->limit_stack
       || TARGET_STACK_CHECK_L1)
     {
       HOST_WIDE_INT offset
        = bfin_initial_elimination_offset (ARG_POINTER_REGNUM,
                                           STACK_POINTER_REGNUM);
-      rtx lim = current_function_limit_stack ? stack_limit_rtx : NULL_RTX;
+      rtx lim = crtl->limit_stack ? stack_limit_rtx : NULL_RTX;
       rtx p2reg = gen_rtx_REG (Pmode, REG_P2);
 
       if (!lim)
@@ -1219,7 +1219,7 @@ bfin_expand_prologue (void)
 
   if (TARGET_ID_SHARED_LIBRARY
       && !TARGET_SEP_DATA
-      && (current_function_uses_pic_offset_table
+      && (crtl->uses_pic_offset_table
          || !current_function_is_leaf))
     bfin_load_pic_reg (pic_offset_table_rtx);
 }
index 87fef5a2f902b64f4b939d3eaf36c2e440fce377..b197956b774485806958f37f3634b57fb33db051 100644 (file)
@@ -412,13 +412,13 @@ cris_conditional_register_usage (void)
     reg_names[CRIS_CC0_REGNUM] = "ccr";
 }
 
-/* Return current_function_uses_pic_offset_table.  For use in cris.md,
+/* Return crtl->uses_pic_offset_table.  For use in cris.md,
    since some generated files do not include function.h.  */
 
 int
 cris_cfun_uses_pic_table (void)
 {
-  return current_function_uses_pic_offset_table;
+  return crtl->uses_pic_offset_table;
 }
 
 /* Given an rtx, return the text string corresponding to the CODE of X.
@@ -604,7 +604,7 @@ cris_reg_saved_in_regsave_area (unsigned int regno, bool got_really_used)
                  && !call_used_regs[regno + 1]))))
      && (regno != FRAME_POINTER_REGNUM || !frame_pointer_needed)
      && regno != CRIS_SRP_REGNUM)
-    || (current_function_calls_eh_return
+    || (crtl->calls_eh_return
        && (regno == EH_RETURN_DATA_REGNO (0)
            || regno == EH_RETURN_DATA_REGNO (1)
            || regno == EH_RETURN_DATA_REGNO (2)
@@ -1188,7 +1188,7 @@ cris_initial_frame_pointer_offset (void)
   int offs = 0;
   bool got_really_used = false;
 
-  if (current_function_uses_pic_offset_table)
+  if (crtl->uses_pic_offset_table)
     {
       push_topmost_sequence ();
       got_really_used
@@ -1703,7 +1703,7 @@ cris_simple_epilogue (void)
       || crtl->args.pretend_args_size
       || crtl->args.size
       || crtl->outgoing_args_size
-      || current_function_calls_eh_return
+      || crtl->calls_eh_return
 
       /* If we're not supposed to emit prologue and epilogue, we must
         not emit return-type instructions.  */
@@ -1714,7 +1714,7 @@ cris_simple_epilogue (void)
   if (TARGET_V32 && cris_return_address_on_stack ())
     return false;
 
-  if (current_function_uses_pic_offset_table)
+  if (crtl->uses_pic_offset_table)
     {
       push_topmost_sequence ();
       got_really_used
@@ -2751,7 +2751,7 @@ cris_expand_prologue (void)
 
   CRIS_ASSERT (size >= 0);
 
-  if (current_function_uses_pic_offset_table)
+  if (crtl->uses_pic_offset_table)
     {
       /* A reference may have been optimized out (like the abort () in
         fde_split in unwind-dw2-fde.c, at least 3.2.1) so check that
@@ -3030,7 +3030,7 @@ cris_expand_epilogue (void)
   if (!TARGET_PROLOGUE_EPILOGUE)
     return;
 
-  if (current_function_uses_pic_offset_table)
+  if (crtl->uses_pic_offset_table)
     {
       /* A reference may have been optimized out (like the abort () in
         fde_split in unwind-dw2-fde.c, at least 3.2.1) so check that
@@ -3173,7 +3173,7 @@ cris_expand_epilogue (void)
      the return address on the stack.  */
   if (return_address_on_stack && pretend == 0)
     {
-      if (TARGET_V32 || current_function_calls_eh_return)
+      if (TARGET_V32 || crtl->calls_eh_return)
        {
          rtx mem;
          rtx insn;
@@ -3189,7 +3189,7 @@ cris_expand_epilogue (void)
          REG_NOTES (insn)
            = alloc_EXPR_LIST (REG_INC, stack_pointer_rtx, REG_NOTES (insn));
 
-         if (current_function_calls_eh_return)
+         if (crtl->calls_eh_return)
            emit_insn (gen_addsi3 (stack_pointer_rtx,
                                   stack_pointer_rtx,
                                   gen_rtx_raw_REG (SImode,
@@ -3231,7 +3231,7 @@ cris_expand_epilogue (void)
     }
 
   /* Perform the "physical" unwinding that the EH machinery calculated.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     emit_insn (gen_addsi3 (stack_pointer_rtx,
                           stack_pointer_rtx,
                           gen_rtx_raw_REG (SImode,
@@ -3484,7 +3484,7 @@ cris_expand_pic_call_address (rtx *opp)
                 for v32.  */
              rtx tem, rm, ro;
              gcc_assert (can_create_pseudo_p ());
-             current_function_uses_pic_offset_table = 1;
+             crtl->uses_pic_offset_table = 1;
              tem = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, op),
                                    TARGET_V32
                                    ? CRIS_UNSPEC_PLT_PCREL
@@ -3519,7 +3519,7 @@ cris_expand_pic_call_address (rtx *opp)
              rtx tem, mem, rm, ro;
 
              gcc_assert (can_create_pseudo_p ());
-             current_function_uses_pic_offset_table = 1;
+             crtl->uses_pic_offset_table = 1;
              tem = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, op),
                                    CRIS_UNSPEC_PLTGOTREAD);
              rm = gen_reg_rtx (Pmode);
@@ -3591,7 +3591,7 @@ cris_asm_output_symbol_ref (FILE *file, rtx x)
      assemble_name (file, str);
 
      /* Sanity check.  */
-     if (!TARGET_V32 && !current_function_uses_pic_offset_table)
+     if (!TARGET_V32 && !crtl->uses_pic_offset_table)
        output_operand_lossage ("PIC register isn't set up");
     }
   else
@@ -3608,7 +3608,7 @@ cris_asm_output_label_ref (FILE *file, char *buf)
       assemble_name (file, buf);
 
       /* Sanity check.  */
-      if (!TARGET_V32 && !current_function_uses_pic_offset_table)
+      if (!TARGET_V32 && !crtl->uses_pic_offset_table)
        internal_error ("emitting PIC operand, but PIC register isn't set up");
     }
   else
index 97353cd8df003ac38c38b000d4c912806f97cc15..e466204786e035b860efc396f2f4c14c877a5a80 100644 (file)
            /* FIXME: add a REG_EQUAL (or is it REG_EQUIV) note to the
               destination register for the symbol.  It might not be
               worth it.  Measure.  */
-           current_function_uses_pic_offset_table = 1;
+           crtl->uses_pic_offset_table = 1;
            if (t == cris_rel_symbol)
              {
                /* Change a "move.d sym(+offs),rN" into (allocate register rM)
                  {
                    /* We still uses GOT-relative addressing for
                       pre-v32.  */
-                   current_function_uses_pic_offset_table = 1;
+                   crtl->uses_pic_offset_table = 1;
                    tem = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, sym),
                                          CRIS_UNSPEC_GOTREL);
                    if (offs != 0)
index c636dec3fd4c1967fd570f74948a52ee2789a05a..c3e1e203113bff1dbd206f818221c98306882106 100644 (file)
@@ -277,7 +277,7 @@ enum reg_class
 
 #define FIRST_PARM_OFFSET(FNDECL)  0
 
-#define FRAME_POINTER_REQUIRED (current_function_calls_alloca)
+#define FRAME_POINTER_REQUIRED (cfun->calls_alloca)
 
 #define ELIMINABLE_REGS \
   { \
index 6c2de252fe3de62307d70f1f43f1f071d6555e21..388998333411dbcc805e82efe4884131f629bff6 100644 (file)
@@ -278,7 +278,7 @@ machopic_function_base_name (void)
   if (function_base == NULL)
     function_base = ggc_alloc_string ("<pic base>", sizeof ("<pic base>"));
 
-  current_function_uses_pic_offset_table = 1;
+  crtl->uses_pic_offset_table = 1;
 
   return function_base;
 }
index 78f7775c65829d38db3293b8685ebf5b6458d115..1dd1a523ac0ec022a4bcd0f30061a571fbb6e841 100644 (file)
@@ -140,7 +140,7 @@ static int fr30_arg_partial_bytes (CUMULATIVE_ARGS *, enum machine_mode,
    && ! call_used_regs [regno]         )
 
 #define MUST_SAVE_FRAME_POINTER         (df_regs_ever_live_p (FRAME_POINTER_REGNUM)  || frame_pointer_needed)
-#define MUST_SAVE_RETURN_POINTER (df_regs_ever_live_p (RETURN_POINTER_REGNUM) || current_function_profile)
+#define MUST_SAVE_RETURN_POINTER (df_regs_ever_live_p (RETURN_POINTER_REGNUM) || crtl->profile)
 
 #if UNITS_PER_WORD == 4
 #define WORD_ALIGN(SIZE) (((SIZE) + 3) & ~3)
@@ -349,7 +349,7 @@ fr30_expand_prologue (void)
       RTX_FRAME_RELATED_P (insn) = 1;
     }
 
-  if (current_function_profile)
+  if (crtl->profile)
     emit_insn (gen_blockage ());
 }
 
index badc45e7ab63075cdbb298bf434654a810553bbd..a89c8bb9416ae7fae25e5bb002e48ba772a0d2f0 100644 (file)
@@ -1172,7 +1172,7 @@ frv_stack_info (void)
          for (regno = first; regno <= last; regno++)
            {
              if ((df_regs_ever_live_p (regno) && !call_used_regs[regno])
-                 || (current_function_calls_eh_return
+                 || (crtl->calls_eh_return
                      && (regno >= FIRST_EH_REGNUM && regno <= LAST_EH_REGNUM))
                  || (!TARGET_FDPIC && flag_pic
                      && cfun->uses_pic_offset_table && regno == PIC_REGNO))
@@ -1957,7 +1957,7 @@ frv_expand_epilogue (bool emit_return)
     }
 
   /* If this function uses eh_return, add the final stack adjustment now.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     emit_insn (gen_stack_adjust (sp, sp, EH_RETURN_STACKADJ_RTX));
 
   if (emit_return)
index 70b650b165827a199025ae8d5037996d796702b0..2df9683f457af41888eff90c44a1788dbc249f70 100644 (file)
@@ -5783,7 +5783,7 @@ ix86_frame_pointer_required (void)
          || ix86_current_function_calls_tls_descriptor))
     return 1;
 
-  if (current_function_profile)
+  if (crtl->profile)
     return 1;
 
   return 0;
@@ -5993,7 +5993,7 @@ gen_push (rtx arg)
 static unsigned int
 ix86_select_alt_pic_regnum (void)
 {
-  if (current_function_is_leaf && !current_function_profile
+  if (current_function_is_leaf && !crtl->profile
       && !ix86_current_function_calls_tls_descriptor)
     {
       int i;
@@ -6012,16 +6012,16 @@ ix86_save_reg (unsigned int regno, int maybe_eh_return)
   if (pic_offset_table_rtx
       && regno == REAL_PIC_OFFSET_TABLE_REGNUM
       && (df_regs_ever_live_p (REAL_PIC_OFFSET_TABLE_REGNUM)
-         || current_function_profile
-         || current_function_calls_eh_return
-         || current_function_uses_const_pool))
+         || crtl->profile
+         || crtl->calls_eh_return
+         || crtl->uses_const_pool))
     {
       if (ix86_select_alt_pic_regnum () != INVALID_REGNUM)
        return 0;
       return 1;
     }
 
-  if (current_function_calls_eh_return && maybe_eh_return)
+  if (crtl->calls_eh_return && maybe_eh_return)
     {
       unsigned i;
       for (i = 0; ; i++)
@@ -6185,7 +6185,7 @@ ix86_compute_frame_layout (struct ix86_frame *frame)
      expander assumes that last crtl->outgoing_args_size
      of stack frame are unused.  */
   if (ACCUMULATE_OUTGOING_ARGS
-      && (!current_function_is_leaf || current_function_calls_alloca
+      && (!current_function_is_leaf || cfun->calls_alloca
          || ix86_current_function_calls_tls_descriptor))
     {
       offset += crtl->outgoing_args_size;
@@ -6196,7 +6196,7 @@ ix86_compute_frame_layout (struct ix86_frame *frame)
 
   /* Align stack boundary.  Only needed if we're calling another function
      or using alloca.  */
-  if (!current_function_is_leaf || current_function_calls_alloca
+  if (!current_function_is_leaf || cfun->calls_alloca
       || ix86_current_function_calls_tls_descriptor)
     frame->padding2 = ((offset + preferred_alignment - 1)
                       & -preferred_alignment) - offset;
@@ -6246,7 +6246,7 @@ ix86_compute_frame_layout (struct ix86_frame *frame)
           (long)frame->hard_frame_pointer_offset);
   fprintf (stderr, "stack_pointer_offset: %ld\n", (long)frame->stack_pointer_offset);
   fprintf (stderr, "current_function_is_leaf: %ld\n", (long)current_function_is_leaf);
-  fprintf (stderr, "current_function_calls_alloca: %ld\n", (long)current_function_calls_alloca);
+  fprintf (stderr, "cfun->calls_alloca: %ld\n", (long)cfun->calls_alloca);
   fprintf (stderr, "x86_current_function_calls_tls_descriptor: %ld\n", (long)ix86_current_function_calls_tls_descriptor);
 #endif
 }
@@ -6531,7 +6531,7 @@ ix86_expand_prologue (void)
   pic_reg_used = false;
   if (pic_offset_table_rtx
       && (df_regs_ever_live_p (REAL_PIC_OFFSET_TABLE_REGNUM)
-         || current_function_profile))
+         || crtl->profile))
     {
       unsigned int alt_pic_reg_used = ix86_select_alt_pic_regnum ();
 
@@ -6566,7 +6566,7 @@ ix86_expand_prologue (void)
 
   /* Prevent function calls from being scheduled before the call to mcount.
      In the pic_reg_used case, make sure that the got load isn't deleted.  */
-  if (current_function_profile)
+  if (crtl->profile)
     {
       if (pic_reg_used)
        emit_insn (gen_prologue_use (pic_offset_table_rtx));
@@ -6621,7 +6621,7 @@ ix86_expand_epilogue (int style)
      eh_return: the eax and edx registers are marked as saved, but not
      restored along this path.  */
   offset = frame.nregs;
-  if (current_function_calls_eh_return && style != 2)
+  if (crtl->calls_eh_return && style != 2)
     offset -= 2;
   offset *= -UNITS_PER_WORD;
 
@@ -6643,7 +6643,7 @@ ix86_expand_epilogue (int style)
       || (frame_pointer_needed && TARGET_USE_LEAVE
          && cfun->machine->use_fast_prologue_epilogue
          && frame.nregs == 1)
-      || current_function_calls_eh_return)
+      || crtl->calls_eh_return)
     {
       /* Restore registers.  We can use ebp or esp to address the memory
         locations.  If both are available, default to ebp, since offsets
index ac8149885fc0701d7614bf06e6d27b1b61d0520a..ec5dc4e2230a9aef15003ad8582a1940c10c098a 100644 (file)
@@ -55,7 +55,7 @@ along with GCC; see the file COPYING3.  If not see
    frame, so we cannot allow profiling without a frame pointer.  */
 
 #undef SUBTARGET_FRAME_POINTER_REQUIRED
-#define SUBTARGET_FRAME_POINTER_REQUIRED current_function_profile
+#define SUBTARGET_FRAME_POINTER_REQUIRED crtl->profile
 
 #undef SIZE_TYPE
 #define SIZE_TYPE "unsigned int"
index 5b48eba14f517b0d212330bcc8a3a1cc0bfaddbb..22d0c0a3ce1db75c9faa5fe7261f11b9eabee691 100644 (file)
@@ -2379,7 +2379,7 @@ ia64_compute_frame_size (HOST_WIDE_INT size)
      Likewise for -a profiling for the bb_init_func argument.  For -ax
      profiling, we need two output registers for the two bb_init_trace_func
      arguments.  */
-  if (current_function_profile)
+  if (crtl->profile)
     i = MAX (i, 1);
 #endif
   current_frame_info.n_output_regs = i;
@@ -2460,7 +2460,7 @@ ia64_compute_frame_size (HOST_WIDE_INT size)
       /* Similarly for gp.  Note that if we're calling setjmp, the stacked
         registers are clobbered, so we fall back to the stack.  */
       current_frame_info.r[reg_save_gp]
-       = (current_function_calls_setjmp ? 0 : find_gr_spill (reg_save_gp, 1));
+       = (cfun->calls_setjmp ? 0 : find_gr_spill (reg_save_gp, 1));
       if (current_frame_info.r[reg_save_gp] == 0)
        {
          SET_HARD_REG_BIT (mask, GR_REG (1));
@@ -5058,7 +5058,7 @@ ia64_secondary_reload_class (enum reg_class class,
       /* ??? This happens if we cse/gcse a BImode value across a call,
         and the function has a nonlocal goto.  This is because global
         does not allocate call crossing pseudos to hard registers when
-        current_function_has_nonlocal_goto is true.  This is relatively
+        crtl->has_nonlocal_goto is true.  This is relatively
         common for C++ programs that use exceptions.  To reproduce,
         return NO_REGS and compile libstdc++.  */
       if (GET_CODE (x) == MEM)
index 1baf6eb73bbc79b3a424f812f2deb26b9157760d..995b93bdc1d65d5da436280975eeba36622b4458 100644 (file)
@@ -1619,7 +1619,7 @@ compute_frame_size (HOST_WIDE_INT size)
 
   /* If a function dynamically allocates the stack and
      has 0 for STACK_DYNAMIC_OFFSET then allocate some stack space.  */
-  if (args_size == 0 && current_function_calls_alloca)
+  if (args_size == 0 && cfun->calls_alloca)
     args_size = 4 * UNITS_PER_WORD;
 
   total_size = var_size + args_size + extra_size;
@@ -1635,7 +1635,7 @@ compute_frame_size (HOST_WIDE_INT size)
     }
 
   /* We need to restore these for the handler.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       unsigned int i;
 
@@ -2064,7 +2064,7 @@ iq2000_expand_epilogue (void)
 
       save_restore_insns (0);
 
-      if (current_function_calls_eh_return)
+      if (crtl->calls_eh_return)
        {
          rtx eh_ofs = EH_RETURN_STACKADJ_RTX;
          emit_insn (gen_addsi3 (eh_ofs, eh_ofs, tsize_rtx));
@@ -2073,14 +2073,14 @@ iq2000_expand_epilogue (void)
 
       emit_insn (gen_blockage ());
 
-      if (tsize != 0 || current_function_calls_eh_return)
+      if (tsize != 0 || crtl->calls_eh_return)
        {
          emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
                                 tsize_rtx));
        }
     }
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       /* Perform the additional bump for __throw.  */
       emit_move_insn (gen_rtx_REG (Pmode, HARD_FRAME_POINTER_REGNUM),
index ea4e7f85c5c2f10da5451f142de87fdc32795781..64b7e5f63ab4c0e771106f762f38ebe3a6193220 100644 (file)
@@ -1253,7 +1253,7 @@ static struct m32r_frame_info zero_frame_info;
    && (df_regs_ever_live_p (regno) && (!call_really_used_regs[regno] || interrupt_p)))
 
 #define MUST_SAVE_FRAME_POINTER (df_regs_ever_live_p (FRAME_POINTER_REGNUM))
-#define MUST_SAVE_RETURN_ADDR   (df_regs_ever_live_p (RETURN_ADDR_REGNUM) || current_function_profile)
+#define MUST_SAVE_RETURN_ADDR   (df_regs_ever_live_p (RETURN_ADDR_REGNUM) || crtl->profile)
 
 #define SHORT_INSN_SIZE 2      /* Size of small instructions.  */
 #define LONG_INSN_SIZE 4       /* Size of long instructions.  */
@@ -1272,8 +1272,8 @@ m32r_compute_frame_size (int size)        /* # of var. bytes allocated.  */
   unsigned int gmask;
   enum m32r_function_type fn_type;
   int interrupt_p;
-  int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table
-                                  | current_function_profile);
+  int pic_reg_used = flag_pic && (crtl->uses_pic_offset_table
+                                  | crtl->profile);
 
   var_size     = M32R_STACK_ALIGN (size);
   args_size    = M32R_STACK_ALIGN (crtl->outgoing_args_size);
@@ -1372,8 +1372,8 @@ m32r_expand_prologue (void)
   int regno;
   int frame_size;
   unsigned int gmask;
-  int pic_reg_used = flag_pic && (current_function_uses_pic_offset_table
-                                  | current_function_profile);
+  int pic_reg_used = flag_pic && (crtl->uses_pic_offset_table
+                                  | crtl->profile);
 
   if (! current_frame_info.initialized)
     m32r_compute_frame_size (get_frame_size ());
@@ -1434,7 +1434,7 @@ m32r_expand_prologue (void)
   if (frame_pointer_needed)
     emit_insn (gen_movsi (frame_pointer_rtx, stack_pointer_rtx));
 
-  if (current_function_profile)
+  if (crtl->profile)
     /* Push lr for mcount (form_pc, x).  */
     emit_insn (gen_movsi_push (stack_pointer_rtx,
                                gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM)));
@@ -1443,10 +1443,10 @@ m32r_expand_prologue (void)
     {
       m32r_load_pic_register ();
       m32r_reload_lr (stack_pointer_rtx,
-                      (current_function_profile ? 0 : frame_size));
+                      (crtl->profile ? 0 : frame_size));
     }
 
-  if (current_function_profile && !pic_reg_used)
+  if (crtl->profile && !pic_reg_used)
     emit_insn (gen_blockage ());
 }
 
@@ -1519,7 +1519,7 @@ m32r_expand_epilogue (void)
       unsigned int var_size = current_frame_info.var_size;
       unsigned int args_size = current_frame_info.args_size;
       unsigned int gmask = current_frame_info.gmask;
-      int can_trust_sp_p = !current_function_calls_alloca;
+      int can_trust_sp_p = !cfun->calls_alloca;
 
       if (flag_exceptions)
         emit_insn (gen_blockage ());
@@ -1664,7 +1664,7 @@ m32r_legitimize_pic_address (rtx orig, rtx reg)
       else
         address = reg;
 
-      current_function_uses_pic_offset_table = 1;
+      crtl->uses_pic_offset_table = 1;
 
       if (GET_CODE (orig) == LABEL_REF
           || (GET_CODE (orig) == SYMBOL_REF && SYMBOL_REF_LOCAL_P (orig)))
index d1ac1c81d218b4fe924f9478c26350db9b3a1162..0c9e31853edb567ea59cff403b5c4c3a9ac96143 100644 (file)
@@ -768,7 +768,7 @@ extern enum reg_class m32r_regno_reg_class[FIRST_PSEUDO_REGISTER];
 /* A C expression which is nonzero if a function must have and use a
    frame pointer.  This expression is evaluated in the reload pass.
    If its value is nonzero the function will have a frame pointer.  */
-#define FRAME_POINTER_REQUIRED current_function_calls_alloca
+#define FRAME_POINTER_REQUIRED cfun->calls_alloca
 
 #if 0
 /* C statement to store the difference between the frame pointer
index 84cf4f954e044802baa168910e2dbc349b10f9fa..b33f624eddef8c674ff170450852236eebd4570c 100644 (file)
   "
 {
   if (flag_pic)
-    current_function_uses_pic_offset_table = 1;
+    crtl->uses_pic_offset_table = 1;
 }")
 
 (define_insn "*call_via_reg"
   "
 {
   if (flag_pic)
-    current_function_uses_pic_offset_table = 1;
+    crtl->uses_pic_offset_table = 1;
 }")
 
 (define_insn "*call_value_via_reg"
   int call26_p = call26_operand (operands[1], FUNCTION_MODE);
 
   if (flag_pic)
-    current_function_uses_pic_offset_table = 1;
+    crtl->uses_pic_offset_table = 1;
 
   if (! call26_p)
     {
index 0c38fbdfd19659ae9e5fe357d94896feb9b88878..3fdd756ada9180eefa6f4811c382f1fadefda841 100644 (file)
@@ -863,20 +863,20 @@ m68k_save_reg (unsigned int regno, bool interrupt_handler)
 {
   if (flag_pic && regno == PIC_REG)
     {
-      if (current_function_saves_all_registers)
+      if (crtl->saves_all_registers)
        return true;
-      if (current_function_uses_pic_offset_table)
+      if (crtl->uses_pic_offset_table)
        return true;
       /* Reload may introduce constant pool references into a function
         that thitherto didn't need a PIC register.  Note that the test
         above will not catch that case because we will only set
-        current_function_uses_pic_offset_table when emitting
+        crtl->uses_pic_offset_table when emitting
         the address reloads.  */
-      if (current_function_uses_const_pool)
+      if (crtl->uses_const_pool)
        return true;
     }
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       unsigned int i;
       for (i = 0; ; i++)
@@ -986,7 +986,7 @@ m68k_expand_prologue (void)
 
   /* If the stack limit is a symbol, we can check it here,
      before actually allocating the space.  */
-  if (current_function_limit_stack
+  if (crtl->limit_stack
       && GET_CODE (stack_limit_rtx) == SYMBOL_REF)
     {
       limit = plus_constant (stack_limit_rtx, current_frame.size + 4);
@@ -1073,7 +1073,7 @@ m68k_expand_prologue (void)
 
   /* If the stack limit is not a symbol, check it here.
      This has the disadvantage that it may be too late...  */
-  if (current_function_limit_stack)
+  if (crtl->limit_stack)
     {
       if (REG_P (stack_limit_rtx))
        {
@@ -1119,7 +1119,7 @@ m68k_expand_prologue (void)
 
   if (flag_pic
       && !TARGET_SEP_DATA
-      && current_function_uses_pic_offset_table)
+      && crtl->uses_pic_offset_table)
     insn = emit_insn (gen_load_got (pic_offset_table_rtx));
 }
 \f
@@ -1160,7 +1160,7 @@ m68k_expand_epilogue (bool sibcall_p)
      What we really need to know there is if there could be pending
      stack adjustment needed at that point.  */
   restore_from_sp = (!frame_pointer_needed
-                    || (!current_function_calls_alloca
+                    || (!cfun->calls_alloca
                         && current_function_is_leaf));
 
   /* fsize_with_regs is the size we need to adjust the sp when
@@ -1298,7 +1298,7 @@ m68k_expand_epilogue (bool sibcall_p)
                           stack_pointer_rtx,
                           GEN_INT (fsize_with_regs)));
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     emit_insn (gen_addsi3 (stack_pointer_rtx,
                           stack_pointer_rtx,
                           EH_RETURN_STACKADJ_RTX));
@@ -2046,7 +2046,7 @@ legitimize_pic_address (rtx orig, enum machine_mode mode ATTRIBUTE_UNUSED,
       pic_ref = gen_rtx_MEM (Pmode,
                             gen_rtx_PLUS (Pmode,
                                           pic_offset_table_rtx, orig));
-      current_function_uses_pic_offset_table = 1;
+      crtl->uses_pic_offset_table = 1;
       MEM_READONLY_P (pic_ref) = 1;
       emit_move_insn (reg, pic_ref);
       return reg;
index d9d3398b498e2a5647310d5a35f00ffb432b0607..940c833dc3e7405f3563a85bea751797ef4915eb 100644 (file)
@@ -1938,7 +1938,7 @@ mcore_expand_prolog (void)
       
       ASM_OUTPUT_CG_NODE (asm_out_file, mcore_current_function_name, space_allocated);
 
-      if (current_function_calls_alloca)
+      if (cfun->calls_alloca)
        ASM_OUTPUT_CG_EDGE (asm_out_file, mcore_current_function_name, "alloca", 1);
 
       /* 970425: RBE:
index d69169f13a748e977713c3071120c23ea405d931..94a1427453317c9d961cd956b5b6b6d7e0aac596 100644 (file)
@@ -7656,12 +7656,12 @@ mips_global_pointer (void)
 
   /* FUNCTION_PROFILER includes a jal macro, so we need to give it
      a valid gp.  */
-  if (current_function_profile)
+  if (crtl->profile)
     return GLOBAL_POINTER_REGNUM;
 
   /* If the function has a nonlocal goto, $gp must hold the correct
      global pointer for the target function.  */
-  if (current_function_has_nonlocal_goto)
+  if (crtl->has_nonlocal_goto)
     return GLOBAL_POINTER_REGNUM;
 
   /* If the gp is never referenced, there's no need to initialize it.
@@ -7678,7 +7678,7 @@ mips_global_pointer (void)
      In cases like these, reload will have added the constant to the pool
      but no instruction will yet refer to it.  */
   if (!df_regs_ever_live_p (GLOBAL_POINTER_REGNUM)
-      && !current_function_uses_const_pool
+      && !crtl->uses_const_pool
       && !mips_function_has_gp_insn ())
     return 0;
 
@@ -7719,7 +7719,7 @@ mips_save_reg_p (unsigned int regno)
     return TARGET_CALL_SAVED_GP && cfun->machine->global_pointer == regno;
 
   /* Check call-saved registers.  */
-  if ((current_function_saves_all_registers || df_regs_ever_live_p (regno))
+  if ((crtl->saves_all_registers || df_regs_ever_live_p (regno))
       && !call_really_used_regs[regno])
     return true;
 
@@ -7737,7 +7737,7 @@ mips_save_reg_p (unsigned int regno)
     return true;
 
   /* Check for registers that must be saved for FUNCTION_PROFILER.  */
-  if (current_function_profile && MIPS_SAVE_REG_FOR_PROFILING_P (regno))
+  if (crtl->profile && MIPS_SAVE_REG_FOR_PROFILING_P (regno))
     return true;
 
   /* We need to save the incoming return address if it is ever clobbered
@@ -7746,7 +7746,7 @@ mips_save_reg_p (unsigned int regno)
      value in FPRs.  */
   if (regno == GP_REG_FIRST + 31
       && (df_regs_ever_live_p (regno)
-         || current_function_calls_eh_return
+         || crtl->calls_eh_return
          || mips16_cfun_returns_in_fpr_p ()))
     return true;
 
@@ -7837,7 +7837,7 @@ mips_compute_frame_info (void)
         allocate the stack and have 0 for STACK_DYNAMIC_OFFSET, since it
         looks like we are trying to create a second frame pointer to the
         function, so allocate some stack space to make it happy.  */
-      if (current_function_calls_alloca)
+      if (cfun->calls_alloca)
        frame->args_size = REG_PARM_STACK_SPACE (cfun->decl);
       else
        frame->args_size = 0;
@@ -7864,7 +7864,7 @@ mips_compute_frame_info (void)
 
   /* If this function calls eh_return, we must also save and restore the
      EH data registers.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     for (i = 0; EH_RETURN_DATA_REGNO (i) != INVALID_REGNUM; i++)
       {
        frame->num_gp++;
@@ -7952,7 +7952,7 @@ mips_frame_pointer_required (void)
 {
   /* If the function contains dynamic stack allocations, we need to
      use the frame pointer to access the static parts of the frame.  */
-  if (current_function_calls_alloca)
+  if (cfun->calls_alloca)
     return true;
 
   /* In MIPS16 mode, we need a frame pointer for a large frame; otherwise,
@@ -8489,7 +8489,7 @@ mips_expand_prologue (void)
 
   /* If we are profiling, make sure no instructions are scheduled before
      the call to mcount.  */
-  if (current_function_profile)
+  if (crtl->profile)
     emit_insn (gen_blockage ());
 }
 \f
@@ -8627,7 +8627,7 @@ mips_expand_epilogue (bool sibcall_p)
 
   /* Add in the __builtin_eh_return stack adjustment.  We need to
      use a temporary in MIPS16 code.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       if (TARGET_MIPS16)
        {
@@ -8669,7 +8669,7 @@ mips_can_use_return_insn (void)
   if (!reload_completed)
     return false;
 
-  if (current_function_profile)
+  if (crtl->profile)
     return false;
 
   /* In MIPS16 mode, a function that returns a floating-point value
@@ -11475,7 +11475,7 @@ mips_reorg_process_insns (void)
 
   /* Profiled functions can't be all noreorder because the profiler
      support uses assembler macros.  */
-  if (current_function_profile)
+  if (crtl->profile)
     cfun->machine->all_noreorder_p = false;
 
   /* Code compiled with -mfix-vr4120 can't be all noreorder because
index 3a408438c626d9b41fb81d9a7ff06de7f6791308..2807d08d956b9f7bfe8dae9bb306c7ecee48648e 100644 (file)
@@ -69,7 +69,7 @@ along with GCC; see the file COPYING3.  If not see
       || !leaf_function_p ()))
 
 #define IS_MMIX_EH_RETURN_DATA_REG(REGNO)      \
- (current_function_calls_eh_return             \
+ (crtl->calls_eh_return                \
   && (EH_RETURN_DATA_REGNO (0) == REGNO                \
       || EH_RETURN_DATA_REGNO (1) == REGNO     \
       || EH_RETURN_DATA_REGNO (2) == REGNO     \
@@ -96,7 +96,7 @@ along with GCC; see the file COPYING3.  If not see
 #define MMIX_POP_ARGUMENT()                                            \
  ((! TARGET_ABI_GNU                                                    \
    && crtl->return_rtx != NULL                         \
-   && ! current_function_returns_struct)                               \
+   && ! cfun->returns_struct)                          \
   ? (GET_CODE (crtl->return_rtx) == PARALLEL                   \
      ? GET_NUM_ELEM (XVEC (crtl->return_rtx, 0)) : 1)  \
   : 0)
@@ -2207,7 +2207,7 @@ mmix_expand_epilogue (void)
   if (stack_space_to_deallocate != 0)
     mmix_emit_sp_add (stack_space_to_deallocate);
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     /* Adjust the (normal) stack-pointer to that of the receiver.
        FIXME: It would be nice if we could also adjust the register stack
        here, but we need to express it through DWARF 2 too.  */
index 19aab6f4b27e69198fa128f85ed86fbca90541f9..7e38eab1941ff2d0207a06a52cead2d252ea144b 100644 (file)
@@ -591,7 +591,7 @@ enum reg_class
 /* Node: Elimination */
 /* FIXME: Is this requirement built-in?  Anyway, we should try to get rid
    of it; we can deduce the value.  */
-#define FRAME_POINTER_REQUIRED  current_function_has_nonlocal_label
+#define FRAME_POINTER_REQUIRED  cfun->has_nonlocal_label
 
 /* The frame-pointer is stored in a location that either counts to the
    offset of incoming parameters, or that counts to the offset of the
index 1effca344739681652e1e0ef9aa275538b29a005..ea7392bb0f936832deb535f5305f8794396d87d4 100644 (file)
@@ -1599,7 +1599,7 @@ mn10300_function_value (const_tree valtype, const_tree func, int outgoing)
   if (! POINTER_TYPE_P (valtype))
     return gen_rtx_REG (mode, FIRST_DATA_REGNUM);
   else if (! TARGET_PTR_A0D0 || ! outgoing
-          || current_function_returns_struct)
+          || cfun->returns_struct)
     return gen_rtx_REG (mode, FIRST_ADDRESS_REGNUM);
 
   rv = gen_rtx_PARALLEL (mode, rtvec_alloc (2));
index 67a8185573dbfb528b143498e2303b88754784be..de20d40eb5a9bd3b521e879297206c01166572b0 100644 (file)
@@ -422,7 +422,7 @@ enum save_direction
          handlers.  */                                         \
        || (interrupt_handler && call_used_regs[regno]          \
           && !current_function_is_leaf)                        \
-       ||(current_function_calls_eh_return                     \
+       ||(crtl->calls_eh_return                        \
           && (regno == GPR_R7 || regno == GPR_R8))             \
        )                                                       \
   )
index 3fff521df558ad1ab5b1c2cd7b4c904e61b88824..525572eb7c07e48beb590a3ecdea907e6dbb761b 100644 (file)
@@ -698,7 +698,7 @@ legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg)
                                                REG_NOTES (insn));
          LABEL_NUSES (orig)++;
        }
-      current_function_uses_pic_offset_table = 1;
+      crtl->uses_pic_offset_table = 1;
       return reg;
     }
   if (GET_CODE (orig) == SYMBOL_REF)
@@ -745,7 +745,7 @@ legitimize_pic_address (rtx orig, enum machine_mode mode, rtx reg)
                                                         UNSPEC_DLTIND14R)));
        }
 
-      current_function_uses_pic_offset_table = 1;
+      crtl->uses_pic_offset_table = 1;
       mark_reg_pointer (reg, BITS_PER_UNIT);
       insn = emit_move_insn (reg, pic_ref);
 
@@ -3531,7 +3531,7 @@ compute_frame_size (HOST_WIDE_INT size, int *fregs_live)
   /* If the current function calls __builtin_eh_return, then we need
      to allocate stack space for registers that will hold data for
      the exception handler.  */
-  if (DO_FRAME_NOTES && current_function_calls_eh_return)
+  if (DO_FRAME_NOTES && crtl->calls_eh_return)
     {
       unsigned int i;
 
@@ -3679,7 +3679,7 @@ hppa_expand_prologue (void)
   /* Save RP first.  The calling conventions manual states RP will
      always be stored into the caller's frame at sp - 20 or sp - 16
      depending on which ABI is in use.  */
-  if (df_regs_ever_live_p (2) || current_function_calls_eh_return)
+  if (df_regs_ever_live_p (2) || crtl->calls_eh_return)
     {
       store_reg (2, TARGET_64BIT ? -16 : -20, STACK_POINTER_REGNUM);
       rp_saved = true;
@@ -3779,7 +3779,7 @@ hppa_expand_prologue (void)
       /* Saving the EH return data registers in the frame is the simplest
         way to get the frame unwind information emitted.  We put them
         just before the general registers.  */
-      if (DO_FRAME_NOTES && current_function_calls_eh_return)
+      if (DO_FRAME_NOTES && crtl->calls_eh_return)
        {
          unsigned int i, regno;
 
@@ -3811,7 +3811,7 @@ hppa_expand_prologue (void)
 
       /* Saving the EH return data registers in the frame is the simplest
          way to get the frame unwind information emitted.  */
-      if (DO_FRAME_NOTES && current_function_calls_eh_return)
+      if (DO_FRAME_NOTES && crtl->calls_eh_return)
        {
          unsigned int i, regno;
 
@@ -4113,7 +4113,7 @@ hppa_expand_epilogue (void)
 
       /* If the current function calls __builtin_eh_return, then we need
          to restore the saved EH data registers.  */
-      if (DO_FRAME_NOTES && current_function_calls_eh_return)
+      if (DO_FRAME_NOTES && crtl->calls_eh_return)
        {
          unsigned int i, regno;
 
@@ -4141,7 +4141,7 @@ hppa_expand_epilogue (void)
 
       /* If the current function calls __builtin_eh_return, then we need
          to restore the saved EH data registers.  */
-      if (DO_FRAME_NOTES && current_function_calls_eh_return)
+      if (DO_FRAME_NOTES && crtl->calls_eh_return)
        {
          unsigned int i, regno;
 
@@ -4238,7 +4238,7 @@ hppa_expand_epilogue (void)
   if (ret_off != 0)
     load_reg (2, ret_off, STACK_POINTER_REGNUM);
 
-  if (DO_FRAME_NOTES && current_function_calls_eh_return)
+  if (DO_FRAME_NOTES && crtl->calls_eh_return)
     {
       rtx sa = EH_RETURN_STACKADJ_RTX;
 
@@ -8496,7 +8496,7 @@ borx_reg_operand (rtx op, enum machine_mode mode)
      profitable to do so when the frame pointer is being eliminated.  */
   if (!reload_completed
       && flag_omit_frame_pointer
-      && !current_function_calls_alloca
+      && !cfun->calls_alloca
       && op == frame_pointer_rtx)
     return 0;
 
index bcbacb4c69cc7d4ce775ab16c10fa18c4acb0191..541f2e3069fcb8fd5a65ed4a1d355f606493bf1c 100644 (file)
@@ -366,13 +366,13 @@ typedef struct machine_function GTY(())
 
 /* Value should be nonzero if functions must have frame pointers.  */
 #define FRAME_POINTER_REQUIRED \
-  (current_function_calls_alloca)
+  (cfun->calls_alloca)
 
 /* Don't allow hard registers to be renamed into r2 unless r2
    is already live or already being saved (due to eh).  */
 
 #define HARD_REGNO_RENAME_OK(OLD_REG, NEW_REG) \
-  ((NEW_REG) != 2 || df_regs_ever_live_p (2) || current_function_calls_eh_return)
+  ((NEW_REG) != 2 || df_regs_ever_live_p (2) || crtl->calls_eh_return)
 
 /* C statement to store the difference between the frame pointer
    and the stack pointer values immediately after the function prologue.
@@ -791,7 +791,7 @@ extern int may_call_alloca;
 
 #define EXIT_IGNORE_STACK      \
  (get_frame_size () != 0       \
-  || current_function_calls_alloca || crtl->outgoing_args_size)
+  || cfun->calls_alloca || crtl->outgoing_args_size)
 
 /* Output assembler code for a block containing the constant parts
    of a trampoline, leaving space for the variable parts.\
index ee6037a75b6e2fc555017e7a0d24d3b54a0d5046..5f1d73893fda6f87c558cb36219edcd88bacddd7 100644 (file)
    (use (reg:SI 2))]
   "!TARGET_NO_SPACE_REGS
    && !TARGET_PA_20
-   && flag_pic && current_function_calls_eh_return"
+   && flag_pic && crtl->calls_eh_return"
   "ldsid (%%sr0,%%r2),%%r1\;mtsp %%r1,%%sr0\;be%* 0(%%sr0,%%r2)"
   [(set_attr "type" "branch")
    (set_attr "length" "12")])
         using space registers.  */
       if (!TARGET_NO_SPACE_REGS
          && !TARGET_PA_20
-         && flag_pic && current_function_calls_eh_return)
+         && flag_pic && crtl->calls_eh_return)
        x = gen_return_external_pic ();
       else
        x = gen_return_internal ();
index bf209630a482c1f0c129891db55ccc68aee2e6d5..ec9f83173d43934b7d354dc53c7307318a04f59a 100644 (file)
@@ -11465,7 +11465,7 @@ rs6000_got_register (rtx value ATTRIBUTE_UNUSED)
       && !df_regs_ever_live_p (RS6000_PIC_OFFSET_TABLE_REGNUM))
     df_set_regs_ever_live (RS6000_PIC_OFFSET_TABLE_REGNUM, true);
 
-  current_function_uses_pic_offset_table = 1;
+  crtl->uses_pic_offset_table = 1;
 
   return pic_offset_table_rtx;
 }
@@ -14144,7 +14144,7 @@ first_reg_to_save (void)
 
 #if TARGET_MACHO
   if (flag_pic
-      && current_function_uses_pic_offset_table
+      && crtl->uses_pic_offset_table
       && first_reg > RS6000_PIC_OFFSET_TABLE_REGNUM)
     return RS6000_PIC_OFFSET_TABLE_REGNUM;
 #endif
@@ -14181,7 +14181,7 @@ first_altivec_reg_to_save (void)
   /* On Darwin, the unwind routines are compiled without
      TARGET_ALTIVEC, and use save_world to save/restore the
      altivec registers when necessary.  */
-  if (DEFAULT_ABI == ABI_DARWIN && current_function_calls_eh_return
+  if (DEFAULT_ABI == ABI_DARWIN && crtl->calls_eh_return
       && ! TARGET_ALTIVEC)
     return FIRST_ALTIVEC_REGNO + 20;
 
@@ -14205,7 +14205,7 @@ compute_vrsave_mask (void)
   /* On Darwin, the unwind routines are compiled without
      TARGET_ALTIVEC, and use save_world to save/restore the
      call-saved altivec registers when necessary.  */
-  if (DEFAULT_ABI == ABI_DARWIN && current_function_calls_eh_return
+  if (DEFAULT_ABI == ABI_DARWIN && crtl->calls_eh_return
       && ! TARGET_ALTIVEC)
     mask |= 0xFFF;
 
@@ -14247,7 +14247,7 @@ compute_save_world_info (rs6000_stack_t *info_ptr)
   info_ptr->world_save_p
     = (WORLD_SAVE_P (info_ptr)
        && DEFAULT_ABI == ABI_DARWIN
-       && ! (current_function_calls_setjmp && flag_exceptions)
+       && ! (cfun->calls_setjmp && flag_exceptions)
        && info_ptr->first_fp_reg_save == FIRST_SAVED_FP_REGNO
        && info_ptr->first_gp_reg_save == FIRST_SAVED_GP_REGNO
        && info_ptr->first_altivec_reg_save == FIRST_SAVED_ALTIVEC_REGNO
@@ -14432,7 +14432,7 @@ rs6000_stack_info (void)
   if (((TARGET_TOC && TARGET_MINIMAL_TOC)
        || (flag_pic == 1 && DEFAULT_ABI == ABI_V4)
        || (flag_pic && DEFAULT_ABI == ABI_DARWIN))
-      && current_function_uses_const_pool
+      && crtl->uses_const_pool
       && info_ptr->first_gp_reg_save > RS6000_PIC_OFFSET_TABLE_REGNUM)
     first_gp = RS6000_PIC_OFFSET_TABLE_REGNUM;
   else
@@ -14468,14 +14468,14 @@ rs6000_stack_info (void)
 
   /* Determine if we need to save the link register.  */
   if ((DEFAULT_ABI == ABI_AIX
-       && current_function_profile
+       && crtl->profile
        && !TARGET_PROFILE_KERNEL)
 #ifdef TARGET_RELOCATABLE
       || (TARGET_RELOCATABLE && (get_pool_size () != 0))
 #endif
       || (info_ptr->first_fp_reg_save != 64
          && !FP_SAVE_INLINE (info_ptr->first_fp_reg_save))
-      || (DEFAULT_ABI == ABI_V4 && current_function_calls_alloca)
+      || (DEFAULT_ABI == ABI_V4 && cfun->calls_alloca)
       || info_ptr->calls_p
       || rs6000_ra_ever_killed ())
     {
@@ -14496,7 +14496,7 @@ rs6000_stack_info (void)
   /* If the current function calls __builtin_eh_return, then we need
      to allocate stack space for registers that will hold data for
      the exception handler.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       unsigned int i;
       for (i = 0; EH_RETURN_DATA_REGNO (i) != INVALID_REGNUM; ++i)
@@ -14715,9 +14715,9 @@ spe_func_has_64bit_regs_p (void)
 
   /* Functions that save and restore all the call-saved registers will
      need to save/restore the registers in 64-bits.  */
-  if (current_function_calls_eh_return
-      || current_function_calls_setjmp
-      || current_function_has_nonlocal_goto)
+  if (crtl->calls_eh_return
+      || cfun->calls_setjmp
+      || crtl->has_nonlocal_goto)
     return true;
 
   insns = get_insns ();
@@ -14969,7 +14969,7 @@ rs6000_ra_ever_killed (void)
   rtx reg;
   rtx insn;
 
-  if (current_function_is_thunk)
+  if (crtl->is_thunk)
     return 0;
 
   /* regs_ever_live has LR marked as used if any sibcalls are present,
@@ -15125,7 +15125,7 @@ rs6000_emit_eh_reg_restore (rtx source, rtx scratch)
       rtx tmp;
 
       if (frame_pointer_needed
-         || current_function_calls_alloca
+         || cfun->calls_alloca
          || info->total_size > 32767)
        {
          tmp = gen_frame_mem (Pmode, frame_rtx);
@@ -15264,7 +15264,7 @@ rs6000_emit_allocate_stack (HOST_WIDE_INT size, int copy_r12)
       return;
     }
 
-  if (current_function_limit_stack)
+  if (crtl->limit_stack)
     {
       if (REG_P (stack_limit_rtx)
          && REGNO (stack_limit_rtx) > 1
@@ -15620,14 +15620,14 @@ rs6000_emit_prologue (void)
                          && no_global_regs_above (info->first_gp_reg_save));
   saving_FPRs_inline = (info->first_fp_reg_save == 64
                        || FP_SAVE_INLINE (info->first_fp_reg_save)
-                       || current_function_calls_eh_return
+                       || crtl->calls_eh_return
                        || cfun->machine->ra_need_lr);
 
   /* For V.4, update stack before we do any saving and set back pointer.  */
   if (! WORLD_SAVE_P (info)
       && info->push_p
       && (DEFAULT_ABI == ABI_V4
-         || current_function_calls_eh_return))
+         || crtl->calls_eh_return))
     {
       if (info->total_size < 32767)
        sp_offset = info->total_size;
@@ -15670,7 +15670,7 @@ rs6000_emit_prologue (void)
                  && info->cr_save_offset == 4
                  && info->push_p
                  && info->lr_save_p
-                 && (!current_function_calls_eh_return
+                 && (!crtl->calls_eh_return
                       || info->ehrd_offset == -432)
                  && info->vrsave_save_offset == -224
                  && info->altivec_save_offset == -416);
@@ -15967,7 +15967,7 @@ rs6000_emit_prologue (void)
 
   /* ??? There's no need to emit actual instructions here, but it's the
      easiest way to get the frame unwind information emitted.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       unsigned int i, regno;
 
@@ -16033,7 +16033,7 @@ rs6000_emit_prologue (void)
   /* Update stack and set back pointer unless this is V.4,
      for which it was done previously.  */
   if (!WORLD_SAVE_P (info) && info->push_p
-      && !(DEFAULT_ABI == ABI_V4 || current_function_calls_eh_return))
+      && !(DEFAULT_ABI == ABI_V4 || crtl->calls_eh_return))
     {
       if (info->total_size < 32767)
       sp_offset = info->total_size;
@@ -16161,7 +16161,7 @@ rs6000_emit_prologue (void)
 
 #if TARGET_MACHO
   if (DEFAULT_ABI == ABI_DARWIN
-      && flag_pic && current_function_uses_pic_offset_table)
+      && flag_pic && crtl->uses_pic_offset_table)
     {
       rtx lr = gen_rtx_REG (Pmode, LR_REGNO);
       rtx src = machopic_function_base_sym ();
@@ -16280,11 +16280,11 @@ rs6000_emit_epilogue (int sibcall)
                         && info->first_gp_reg_save < 31
                         && no_global_regs_above (info->first_gp_reg_save));
   restoring_FPRs_inline = (sibcall
-                          || current_function_calls_eh_return
+                          || crtl->calls_eh_return
                           || info->first_fp_reg_save == 64
                           || FP_SAVE_INLINE (info->first_fp_reg_save));
   use_backchain_to_restore_sp = (frame_pointer_needed
-                                || current_function_calls_alloca
+                                || cfun->calls_alloca
                                 || info->total_size > 32767);
   using_mtcr_multiple = (rs6000_cpu == PROCESSOR_PPC601
                         || rs6000_cpu == PROCESSOR_PPC603
@@ -16311,7 +16311,7 @@ rs6000_emit_epilogue (int sibcall)
                       + LAST_ALTIVEC_REGNO + 1 - info->first_altivec_reg_save
                       + 63 + 1 - info->first_fp_reg_save);
 
-      strcpy (rname, ((current_function_calls_eh_return) ?
+      strcpy (rname, ((crtl->calls_eh_return) ?
                      "*eh_rest_world_r10" : "*rest_world"));
       alloc_rname = ggc_strdup (rname);
 
@@ -16473,7 +16473,7 @@ rs6000_emit_epilogue (int sibcall)
     }
   else if (info->push_p
           && DEFAULT_ABI != ABI_V4
-          && !current_function_calls_eh_return)
+          && !crtl->calls_eh_return)
     {
       emit_insn (TARGET_32BIT
                 ? gen_addsi3 (sp_reg_rtx, sp_reg_rtx,
@@ -16553,7 +16553,7 @@ rs6000_emit_epilogue (int sibcall)
                    gen_rtx_REG (Pmode, 0));
 
   /* Load exception handler data registers, if needed.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       unsigned int i, regno;
 
@@ -16750,7 +16750,7 @@ rs6000_emit_epilogue (int sibcall)
               : gen_adddi3 (sp_reg_rtx, sp_reg_rtx,
                             GEN_INT (sp_offset)));
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       rtx sa = EH_RETURN_STACKADJ_RTX;
       emit_insn (TARGET_32BIT
@@ -16880,7 +16880,7 @@ rs6000_output_function_epilogue (FILE *file,
      System V.4 Powerpc's (and the embedded ABI derived from it) use a
      different traceback table.  */
   if (DEFAULT_ABI == ABI_AIX && ! flag_inhibit_size_directive
-      && rs6000_traceback != traceback_none && !current_function_is_thunk)
+      && rs6000_traceback != traceback_none && !crtl->is_thunk)
     {
       const char *fname = NULL;
       const char *language_string = lang_hooks.name;
@@ -17864,13 +17864,13 @@ output_profile_hook (int labelno ATTRIBUTE_UNUSED)
       int caller_addr_regno = LR_REGNO;
 
       /* Be conservative and always set this, at least for now.  */
-      current_function_uses_pic_offset_table = 1;
+      crtl->uses_pic_offset_table = 1;
 
 #if TARGET_MACHO
       /* For PIC code, set up a stub and collect the caller's address
         from r0, which is where the prologue puts it.  */
       if (MACHOPIC_INDIRECT
-         && current_function_uses_pic_offset_table)
+         && crtl->uses_pic_offset_table)
        caller_addr_regno = 0;
 #endif
       emit_library_call (gen_rtx_SYMBOL_REF (Pmode, mcount_name),
@@ -20646,7 +20646,7 @@ rs6000_elf_declare_function_name (FILE *file, const char *name, tree decl)
 
   if (TARGET_RELOCATABLE
       && !TARGET_SECURE_PLT
-      && (get_pool_size () != 0 || current_function_profile)
+      && (get_pool_size () != 0 || crtl->profile)
       && uses_TOC ())
     {
       char buf[256];
index ed20d8bd024c198592993bd124450f1c39fe2c05..1bde282172b4040f34f26693f9bcfa06457a0721 100644 (file)
@@ -1552,7 +1552,7 @@ typedef struct rs6000_args
 #define        EPILOGUE_USES(REGNO)                                    \
   ((reload_completed && (REGNO) == LR_REGNO)                   \
    || (TARGET_ALTIVEC && (REGNO) == VRSAVE_REGNO)              \
-   || (current_function_calls_eh_return                                \
+   || (crtl->calls_eh_return                           \
        && TARGET_AIX                                           \
        && (REGNO) == 2))
 
index cac5fd1f36b3a7c081deafdd6dfe7548f4793c86..8cd405e92751702dcc49b773aead8fbdae7f7758 100644 (file)
   emit_move_insn (chain, stack_bot);
 
   /* Check stack bounds if necessary.  */
-  if (current_function_limit_stack)
+  if (crtl->limit_stack)
     {
       rtx available;
       available = expand_binop (Pmode, sub_optab,
index f2a1947f5ae2b559f61462e833f323b029b31f87..6dab692c2a6f3f762c60710acce551e02f54ac62 100644 (file)
@@ -6438,9 +6438,9 @@ s390_regs_ever_clobbered (int *regs_ever_clobbered)
      may use the eh registers, but the code which sets these registers is not
      contained in that function.  Hence s390_regs_ever_clobbered is not able to
      deal with this automatically.  */
-  if (current_function_calls_eh_return || cfun->machine->has_landing_pad_p)
+  if (crtl->calls_eh_return || cfun->machine->has_landing_pad_p)
     for (i = 0; EH_RETURN_DATA_REGNO (i) != INVALID_REGNUM ; i++)
-      if (current_function_calls_eh_return 
+      if (crtl->calls_eh_return 
          || (cfun->machine->has_landing_pad_p 
              && df_regs_ever_live_p (EH_RETURN_DATA_REGNO (i))))
        regs_ever_clobbered[EH_RETURN_DATA_REGNO (i)] = 1;
@@ -6449,7 +6449,7 @@ s390_regs_ever_clobbered (int *regs_ever_clobbered)
      This flag is also set for the unwinding code in libgcc.
      See expand_builtin_unwind_init.  For regs_ever_live this is done by
      reload.  */
-  if (current_function_has_nonlocal_label)
+  if (cfun->has_nonlocal_label)
     for (i = 0; i < 16; i++)
       if (!call_really_used_regs[i])
        regs_ever_clobbered[i] = 1;
@@ -6554,16 +6554,16 @@ s390_register_info (int clobbered_regs[])
        || TARGET_TPF_PROFILING
        || cfun->machine->split_branches_pending_p
        || cfun_frame_layout.save_return_addr_p
-       || current_function_calls_eh_return
-       || current_function_stdarg);
+       || crtl->calls_eh_return
+       || cfun->stdarg);
 
   clobbered_regs[STACK_POINTER_REGNUM]
     |= (!current_function_is_leaf
        || TARGET_TPF_PROFILING
        || cfun_save_high_fprs_p
        || get_frame_size () > 0
-       || current_function_calls_alloca
-       || current_function_stdarg);
+       || cfun->calls_alloca
+       || cfun->stdarg);
 
   for (i = 6; i < 16; i++)
     if (df_regs_ever_live_p (i) || clobbered_regs[i])
@@ -6616,7 +6616,7 @@ s390_register_info (int clobbered_regs[])
        }
     }
 
-  if (current_function_stdarg)
+  if (cfun->stdarg)
     {
       /* Varargs functions need to save gprs 2 to 6.  */
       if (cfun->va_list_gpr_size
@@ -6738,8 +6738,8 @@ s390_frame_info (void)
       && !TARGET_TPF_PROFILING
       && cfun_frame_layout.frame_size == 0
       && !cfun_save_high_fprs_p
-      && !current_function_calls_alloca
-      && !current_function_stdarg)
+      && !cfun->calls_alloca
+      && !cfun->stdarg)
     return;
 
   if (!TARGET_PACKED_STACK)
@@ -6800,7 +6800,7 @@ s390_init_frame_layout (void)
 
       /* Try to predict whether we'll need the base register.  */
       base_used = cfun->machine->split_branches_pending_p
-                 || current_function_uses_const_pool
+                 || crtl->uses_const_pool
                  || (!DISP_IN_RANGE (frame_size)
                      && !CONST_OK_FOR_K (frame_size));
 
@@ -6961,8 +6961,8 @@ s390_can_eliminate (int from, int to)
 
   /* Make sure we actually saved the return address.  */
   if (from == RETURN_ADDRESS_POINTER_REGNUM)
-    if (!current_function_calls_eh_return
-       && !current_function_stdarg
+    if (!crtl->calls_eh_return
+       && !cfun->stdarg
        && !cfun_frame_layout.save_return_addr_p)
       return false;
 
@@ -7075,7 +7075,7 @@ save_gprs (rtx base, int offset, int first, int last)
                             gen_rtx_REG (Pmode, first),
                             GEN_INT (last - first + 1));
 
-  if (first <= 6 && current_function_stdarg)
+  if (first <= 6 && cfun->stdarg)
     for (i = 0; i < XVECLEN (PATTERN (insn), 0); i++)
       {
        rtx mem = XEXP (XVECEXP (PATTERN (insn), 0, i), 0);
index ffb5af891eed53792b83975beff3f94ec977d475..fe6e6f9b770f628edaed279d0dc3ce9a325738b1 100644 (file)
@@ -549,7 +549,7 @@ extern enum reg_class score_char_to_class[256];
    Zero means the frame pointer need not be set up (and parms
    may be accessed via the stack pointer) in functions that seem suitable.
    This is computed in `reload', in reload1.c.  */
-#define FRAME_POINTER_REQUIRED          current_function_calls_alloca
+#define FRAME_POINTER_REQUIRED          cfun->calls_alloca
 
 #define ELIMINABLE_REGS                                \
   {{ ARG_POINTER_REGNUM, STACK_POINTER_REGNUM},        \
index 1399bee15cb8eeb570f36b388524eb5a360ff609..3114bcd1c55c82297c05177a94baf9bc5be6e2c6 100644 (file)
@@ -189,7 +189,7 @@ score3_compute_frame_size (HOST_WIDE_INT size)
   if (f->var_size == 0 && current_function_is_leaf)
     f->args_size = f->cprestore_size = 0;
 
-  if (f->args_size == 0 && current_function_calls_alloca)
+  if (f->args_size == 0 && cfun->calls_alloca)
     f->args_size = UNITS_PER_WORD;
 
   f->total_size = f->var_size + f->args_size + f->cprestore_size;
@@ -202,7 +202,7 @@ score3_compute_frame_size (HOST_WIDE_INT size)
         }
     }
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       unsigned int i;
       for (i = 0;; ++i)
@@ -1467,7 +1467,7 @@ rpush (int rd, int cnt)
   rtx mem = gen_rtx_MEM (SImode, gen_rtx_PRE_DEC (SImode, stack_pointer_rtx));
   rtx reg = gen_rtx_REG (SImode, rd);
 
-  if (!current_function_calls_eh_return)
+  if (!crtl->calls_eh_return)
     MEM_READONLY_P (mem) = 1;
 
   if (cnt == 1)
@@ -1581,7 +1581,7 @@ rpop (int rd, int cnt)
   rtx mem = gen_rtx_MEM (SImode, gen_rtx_POST_INC (SImode, stack_pointer_rtx));
   rtx reg = gen_rtx_REG (SImode, rd);
 
-  if (!current_function_calls_eh_return)
+  if (!crtl->calls_eh_return)
     MEM_READONLY_P (mem) = 1;
 
   if (cnt == 1)
@@ -1625,7 +1625,7 @@ score3_epilogue (int sibcall_p)
   if (base != stack_pointer_rtx)
     emit_move_insn (stack_pointer_rtx, base);
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     emit_insn (gen_add3_insn (stack_pointer_rtx,
                               stack_pointer_rtx,
                               EH_RETURN_STACKADJ_RTX));
index 2796e2e0d24d276952292e083c0ee697592e191c..74031c2c6ae878e34d803178c6b1b103ba956f0f 100644 (file)
@@ -188,7 +188,7 @@ score7_compute_frame_size (HOST_WIDE_INT size)
   if (f->var_size == 0 && current_function_is_leaf)
     f->args_size = f->cprestore_size = 0;
 
-  if (f->args_size == 0 && current_function_calls_alloca)
+  if (f->args_size == 0 && cfun->calls_alloca)
     f->args_size = UNITS_PER_WORD;
 
   f->total_size = f->var_size + f->args_size + f->cprestore_size;
@@ -201,7 +201,7 @@ score7_compute_frame_size (HOST_WIDE_INT size)
         }
     }
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     {
       unsigned int i;
       for (i = 0;; ++i)
@@ -1428,7 +1428,7 @@ score7_prologue (void)
           rtx mem = gen_rtx_MEM (SImode,
                                  gen_rtx_PRE_DEC (SImode, stack_pointer_rtx));
           rtx reg = gen_rtx_REG (SImode, regno);
-          if (!current_function_calls_eh_return)
+          if (!crtl->calls_eh_return)
             MEM_READONLY_P (mem) = 1;
           EMIT_PL (emit_insn (gen_pushsi_score7 (mem, reg)));
         }
@@ -1508,7 +1508,7 @@ score7_epilogue (int sibcall_p)
   if (base != stack_pointer_rtx)
     emit_move_insn (stack_pointer_rtx, base);
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     emit_insn (gen_add3_insn (stack_pointer_rtx,
                               stack_pointer_rtx,
                               EH_RETURN_STACKADJ_RTX));
@@ -1521,7 +1521,7 @@ score7_epilogue (int sibcall_p)
                                  gen_rtx_POST_INC (SImode, stack_pointer_rtx));
           rtx reg = gen_rtx_REG (SImode, regno);
 
-          if (!current_function_calls_eh_return)
+          if (!crtl->calls_eh_return)
             MEM_READONLY_P (mem) = 1;
 
           emit_insn (gen_popsi_score7 (reg, mem));
index 6b20ee3071d66207a79b58bd851f68b88b9c4790..cd1013dfdc6e2075ccce64303c9bdcf12c19a758 100644 (file)
@@ -5646,7 +5646,7 @@ output_stack_adjust (int size, rtx reg, int epilogue_p,
                    }
                  for (i = 0; i < nreg; i++)
                    CLEAR_HARD_REG_BIT (temps, FIRST_RET_REG + i);
-                 if (current_function_calls_eh_return)
+                 if (crtl->calls_eh_return)
                    {
                      CLEAR_HARD_REG_BIT (temps, EH_RETURN_STACKADJ_REGNO);
                      for (i = 0; i <= 3; i++)
@@ -5980,7 +5980,7 @@ calc_live_regs (HARD_REG_SET *live_regs_mask)
   if (TARGET_SHCOMPACT
       && ((crtl->args.info.call_cookie
           & ~ CALL_COOKIE_RET_TRAMP (1))
-         || current_function_saves_all_registers))
+         || crtl->saves_all_registers))
     pr_live = 1;
   has_call = TARGET_SHMEDIA ? ! leaf_function_p () : pr_live;
   for (count = 0, reg = FIRST_PSEUDO_REGISTER; reg-- != 0; )
@@ -6010,7 +6010,7 @@ calc_live_regs (HARD_REG_SET *live_regs_mask)
             || (df_regs_ever_live_p (reg)
                 && (!call_really_used_regs[reg]
                     || (trapa_handler && reg == FPSCR_REG && TARGET_FPU_ANY)))
-            || (current_function_calls_eh_return
+            || (crtl->calls_eh_return
                 && (reg == EH_RETURN_DATA_REGNO (0)
                     || reg == EH_RETURN_DATA_REGNO (1)
                     || reg == EH_RETURN_DATA_REGNO (2)
@@ -6160,7 +6160,7 @@ sh5_schedule_saves (HARD_REG_SET *live_regs_mask, save_schedule *schedule,
          && ! FUNCTION_ARG_REGNO_P (i)
          && i != FIRST_RET_REG
          && ! (cfun->static_chain_decl != NULL && i == STATIC_CHAIN_REGNUM)
-         && ! (current_function_calls_eh_return
+         && ! (crtl->calls_eh_return
                && (i == EH_RETURN_STACKADJ_REGNO
                    || ((unsigned) i >= EH_RETURN_DATA_REGNO (0)
                        && (unsigned) i <= EH_RETURN_DATA_REGNO (3)))))
@@ -6305,7 +6305,7 @@ sh_expand_prologue (void)
     }
 
   /* Emit the code for SETUP_VARARGS.  */
-  if (current_function_stdarg)
+  if (cfun->stdarg)
     {
       if (TARGET_VARARGS_PRETEND_ARGS (current_function_decl))
        {
@@ -6850,7 +6850,7 @@ sh_expand_epilogue (bool sibcall_p)
                       + crtl->args.info.stack_regs * 8,
                       stack_pointer_rtx, e, NULL);
 
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     emit_insn (GEN_ADD3 (stack_pointer_rtx, stack_pointer_rtx,
                         EH_RETURN_STACKADJ_RTX));
 
@@ -7864,7 +7864,7 @@ sh_setup_incoming_varargs (CUMULATIVE_ARGS *ca,
                           int *pretend_arg_size,
                           int second_time ATTRIBUTE_UNUSED)
 {
-  gcc_assert (current_function_stdarg);
+  gcc_assert (cfun->stdarg);
   if (TARGET_VARARGS_PRETEND_ARGS (current_function_decl))
     {
       int named_parm_regs, anon_parm_regs;
@@ -9216,7 +9216,7 @@ sh_allocate_initial_value (rtx hard_reg)
          && ! (TARGET_SHCOMPACT
                && ((crtl->args.info.call_cookie
                     & ~ CALL_COOKIE_RET_TRAMP (1))
-                   || current_function_saves_all_registers)))
+                   || crtl->saves_all_registers)))
        x = hard_reg;
       else
        x = gen_frame_mem (Pmode, return_address_pointer_rtx);
@@ -10612,7 +10612,7 @@ sh_get_pr_initial_val (void)
   if (TARGET_SHCOMPACT
       && ((crtl->args.info.call_cookie
           & ~ CALL_COOKIE_RET_TRAMP (1))
-         || current_function_saves_all_registers))
+         || crtl->saves_all_registers))
     return gen_frame_mem (SImode, return_address_pointer_rtx);
 
   /* If we haven't finished rtl generation, there might be a nonlocal label
index eb37106348ffe09314d9a5624005d8b445a43ebd..67a6e3923fbd02fcc6e7458bd2eccf6c95740bad 100644 (file)
@@ -1359,7 +1359,7 @@ extern char sh_additional_register_names[ADDREGNAMES_SIZE] \
 #define DEFAULT_PCC_STRUCT_RETURN 0
 
 #define SHMEDIA_REGS_STACK_ADJUST() \
-  (TARGET_SHCOMPACT && current_function_saves_all_registers \
+  (TARGET_SHCOMPACT && crtl->saves_all_registers \
    ? (8 * (/* r28-r35 */ 8 + /* r44-r59 */ 16 + /* tr5-tr7 */ 3) \
       + (TARGET_FPU_ANY ? 4 * (/* fr36 - fr63 */ 28) : 0)) \
    : 0)
index cfcf1b23d1962cdb0c72374df5b60138a6ca0a8a..837fd2e0484989146f71db332e4de3852efd2774 100644 (file)
@@ -5067,7 +5067,7 @@ label:
   [(set (match_dup 0) (match_dup 1))]
   "
 {
-  if (TARGET_SHCOMPACT && current_function_saves_all_registers)
+  if (TARGET_SHCOMPACT && crtl->saves_all_registers)
     operands[1] = gen_frame_mem (SImode, return_address_pointer_rtx);
 }")
 
index 962ed9fe3bce667a9237112b33a792e845fb7e9b..2758e4d848539f7670bdd56f19f3dab54f7840d2 100644 (file)
@@ -2639,7 +2639,7 @@ eligible_for_return_delay (rtx trial)
 
   /* If the function uses __builtin_eh_return, the eh_return machinery
      occupies the delay slot.  */
-  if (current_function_calls_eh_return)
+  if (crtl->calls_eh_return)
     return 0;
 
   /* In the case of a true leaf function, anything can go into the slot.  */
@@ -3084,7 +3084,7 @@ sparc_tls_got (void)
   rtx temp;
   if (flag_pic)
     {
-      current_function_uses_pic_offset_table = 1;
+      crtl->uses_pic_offset_table = 1;
       return pic_offset_table_rtx;
     }
 
@@ -3300,7 +3300,7 @@ legitimize_pic_address (rtx orig, enum machine_mode mode ATTRIBUTE_UNUSED,
       pic_ref = gen_const_mem (Pmode,
                               gen_rtx_PLUS (Pmode,
                                             pic_offset_table_rtx, address));
-      current_function_uses_pic_offset_table = 1;
+      crtl->uses_pic_offset_table = 1;
       insn = emit_move_insn (reg, pic_ref);
       /* Put a REG_EQUAL note on this insn, so that it can be optimized
         by loop.  */
@@ -3342,7 +3342,7 @@ legitimize_pic_address (rtx orig, enum machine_mode mode ATTRIBUTE_UNUSED,
     /* ??? Why do we do this?  */
     /* Now movsi_pic_label_ref uses it, but we ought to be checking that
        the register is live instead, in case it is eliminated.  */
-    current_function_uses_pic_offset_table = 1;
+    crtl->uses_pic_offset_table = 1;
 
   return orig;
 }
@@ -3479,7 +3479,7 @@ sparc_emit_call_insn (rtx pat, rtx addr)
          : !SYMBOL_REF_LOCAL_P (addr)))
     {
       use_reg (&CALL_INSN_FUNCTION_USAGE (insn), pic_offset_table_rtx);
-      current_function_uses_pic_offset_table = 1;
+      crtl->uses_pic_offset_table = 1;
     }
 }
 \f
@@ -4099,7 +4099,7 @@ sparc_expand_prologue (void)
     emit_save_or_restore_regs (SORR_SAVE);
 
   /* Load the PIC register if needed.  */
-  if (flag_pic && current_function_uses_pic_offset_table)
+  if (flag_pic && crtl->uses_pic_offset_table)
     load_pic_register (false);
 }
  
@@ -4235,7 +4235,7 @@ output_return (rtx insn)
         semantics of restore/return.  We simply output the jump to the
         return address and the insn in the delay slot (if any).  */
 
-      gcc_assert (! current_function_calls_eh_return);
+      gcc_assert (! crtl->calls_eh_return);
 
       return "jmp\t%%o7+%)%#";
     }
@@ -4246,7 +4246,7 @@ output_return (rtx insn)
         combined with the 'restore' instruction or put in the delay slot of
         the 'return' instruction.  */
 
-      if (current_function_calls_eh_return)
+      if (crtl->calls_eh_return)
        {
          /* If the function uses __builtin_eh_return, the eh_return
             machinery occupies the delay slot.  */
@@ -6780,7 +6780,7 @@ print_operand (FILE *file, rtx x, int code)
         The call emitted is the same when sparc_std_struct_return is 
         present. */
      if (! TARGET_ARCH64
-        && current_function_returns_struct
+        && cfun->returns_struct
         && ! sparc_std_struct_return
         && (TREE_CODE (DECL_SIZE (DECL_RESULT (current_function_decl)))
             == INTEGER_CST)
@@ -7863,7 +7863,7 @@ sparc_function_ok_for_sibcall (tree decl, tree exp ATTRIBUTE_UNUSED)
 {
   return (decl
          && flag_delayed_branch
-         && (TARGET_ARCH64 || ! current_function_returns_struct)
+         && (TARGET_ARCH64 || ! cfun->returns_struct)
          && !(TARGET_VXWORKS_RTP
               && flag_pic
               && !targetm.binds_local_p (decl)));
index eed016470b1229ad9b177119486ea8667fda4d5b..e9f0f2ab5c2435e47c976c6e22ce220d1e0e3cad 100644 (file)
@@ -1678,11 +1678,11 @@ do {                                                                    \
 
 #define EXIT_IGNORE_STACK      \
  (get_frame_size () != 0       \
-  || current_function_calls_alloca || crtl->outgoing_args_size)
+  || cfun->calls_alloca || crtl->outgoing_args_size)
 
 /* Define registers used by the epilogue and return instruction.  */
 #define EPILOGUE_USES(REGNO) ((REGNO) == 31 \
-  || (current_function_calls_eh_return && (REGNO) == 1))
+  || (crtl->calls_eh_return && (REGNO) == 1))
 \f
 /* Length in units of the trampoline for entering a nested function.  */
 
@@ -1724,7 +1724,7 @@ do {                                                                      \
 /* This is the offset of the return address to the true next instruction to be
    executed for the current function.  */
 #define RETURN_ADDR_OFFSET \
-  (8 + 4 * (! TARGET_ARCH64 && current_function_returns_struct))
+  (8 + 4 * (! TARGET_ARCH64 && cfun->returns_struct))
 
 /* The current return address is in %i7.  The return address of anything
    farther back is in the register window save area at [%fp+60].  */
index daf172ccbb11d84b81f9690b9aeb3aa582c17d59..c02c7094df26599127134e32f1754b097ebf2c06 100644 (file)
   (symbol_ref "flag_pic != 0"))
 
 (define_attr "calls_alloca" "false,true"
-  (symbol_ref "current_function_calls_alloca != 0"))
+  (symbol_ref "cfun->calls_alloca != 0"))
 
 (define_attr "calls_eh_return" "false,true"
-   (symbol_ref "current_function_calls_eh_return !=0 "))
+   (symbol_ref "crtl->calls_eh_return !=0 "))
    
 (define_attr "leaf_function" "false,true"
   (symbol_ref "current_function_uses_only_leaf_regs != 0"))
        (minus:SI (match_dup 5) (match_dup 4)))]
   "flag_pic"
 {
-  current_function_uses_pic_offset_table = 1;
+  crtl->uses_pic_offset_table = 1;
   operands[2] = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
   if (!can_create_pseudo_p ())
     {
         (minus:DI (match_dup 5) (match_dup 4)))]
   "TARGET_ARCH64 && flag_pic"
 {
-  current_function_uses_pic_offset_table = 1;
+  crtl->uses_pic_offset_table = 1;
   operands[2] = gen_rtx_SYMBOL_REF (Pmode, "_GLOBAL_OFFSET_TABLE_");
   if (!can_create_pseudo_p ())
     {
   [(unspec_volatile [(const_int 0)] UNSPECV_SETJMP)]
   ""
 {
-  if (! current_function_calls_alloca)
+  if (! cfun->calls_alloca)
     return "";
   if (! TARGET_V9)
     return "\tta\t3\n";
index d37f27bc1793c5ee5bc02975cad39d6e3921779a..ad41994d5a5ef104389795eb4f20ac15713315e3 100644 (file)
@@ -1592,7 +1592,7 @@ spu_split_immediate (rtx * ops)
            {
              rtx pic_reg = get_pic_reg ();
              emit_insn (gen_addsi3 (ops[0], ops[0], pic_reg));
-             current_function_uses_pic_offset_table = 1;
+             crtl->uses_pic_offset_table = 1;
            }
          return flag_pic || c == IC_IL2s;
        }
@@ -1618,7 +1618,7 @@ need_to_save_reg (int regno, int saving)
     return 1;
   if (flag_pic
       && regno == PIC_OFFSET_TABLE_REGNUM
-      && (!saving || current_function_uses_pic_offset_table)
+      && (!saving || crtl->uses_pic_offset_table)
       && (!saving
          || !current_function_is_leaf || df_regs_ever_live_p (LAST_ARG_REGNUM)))
     return 1;
@@ -1739,7 +1739,7 @@ spu_expand_prologue (void)
   emit_note (NOTE_INSN_DELETED);
 
   if (flag_pic && optimize == 0)
-    current_function_uses_pic_offset_table = 1;
+    crtl->uses_pic_offset_table = 1;
 
   if (spu_naked_function_p (current_function_decl))
     return;
@@ -1753,7 +1753,7 @@ spu_expand_prologue (void)
     + crtl->args.pretend_args_size;
 
   if (!current_function_is_leaf
-      || current_function_calls_alloca || total_size > 0)
+      || cfun->calls_alloca || total_size > 0)
     total_size += STACK_POINTER_OFFSET;
 
   /* Save this first because code after this might use the link
@@ -1776,7 +1776,7 @@ spu_expand_prologue (void)
          }
     }
 
-  if (flag_pic && current_function_uses_pic_offset_table)
+  if (flag_pic && crtl->uses_pic_offset_table)
     {
       rtx pic_reg = get_pic_reg ();
       insn = emit_insn (gen_load_pic_offset (pic_reg, scratch_reg_0));
@@ -1878,12 +1878,12 @@ spu_expand_epilogue (bool sibcall_p)
     + crtl->args.pretend_args_size;
 
   if (!current_function_is_leaf
-      || current_function_calls_alloca || total_size > 0)
+      || cfun->calls_alloca || total_size > 0)
     total_size += STACK_POINTER_OFFSET;
 
   if (total_size > 0)
     {
-      if (current_function_calls_alloca)
+      if (cfun->calls_alloca)
        frame_emit_load (STACK_POINTER_REGNUM, sp_reg, 0);
       else
        frame_emit_add_imm (sp_reg, sp_reg, total_size, scratch_reg_0);
index 99aea1ce6603fe468a5e30a7b57f057edfb51895..6cbe52d5048de44a525e2a215f88015124f91183 100644 (file)
@@ -996,7 +996,7 @@ xstormy16_compute_stack_layout (void)
     if (REG_NEEDS_SAVE (regno, ifun))
       layout.register_save_size += UNITS_PER_WORD;
   
-  if (current_function_stdarg)
+  if (cfun->stdarg)
     layout.stdarg_save_size = NUM_ARGUMENT_REGISTERS * UNITS_PER_WORD;
   else
     layout.stdarg_save_size = 0;
index c99841a31a44b17385439dec679b5ec03fc93553..2a0f30936413bd4490ccb0f26f80da34356336dd 100644 (file)
@@ -1386,7 +1386,7 @@ compute_register_save_size (long * p_reg_saved)
   long reg_saved = 0;
 
   /* Count the return pointer if we need to save it.  */
-  if (current_function_profile && !call_p)
+  if (crtl->profile && !call_p)
     {
       df_set_regs_ever_live (LINK_POINTER_REGNUM, true);
       call_p = 1;
index b78b25f5aa868a4bdf4cb0bf73a1cf761ee169dd..17fd4971fa686c78c9620bdc16ef38774628db2c 100644 (file)
@@ -23,7 +23,7 @@ along with GCC; see the file COPYING3.  If not see
 #include "xtensa-config.h"
 
 /* Standard GCC variables that we reference.  */
-extern int current_function_calls_alloca;
+extern int cfun->calls_alloca;
 extern int optimize;
 
 /* External variables defined in xtensa.c.  */
index 9c116c31ef269765c5539d0c6a5f5daa14d48d1f..74b1b15a22395148288b7e04c006425589675547 100644 (file)
@@ -1,3 +1,9 @@
+2008-04-25  Jan Hubicka  <jh@suse.cz>
+
+       * typeck.c (check_return_expr): Update.
+       * decl.c (start_preparsed_function): Update.
+       * method.c (use_thunk): Update.
+
 2008-04-24  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/35758
index 76950c3c2f003a47b60604cb92c25133fbb226d7..221b30040d7ae0d6516a1371863f0c2d00478f3e 100644 (file)
@@ -11278,7 +11278,7 @@ start_preparsed_function (tree decl1, tree attrs, int flags)
      call expand_expr to calculate the size of a variable-sized array.
      We haven't necessarily assigned RTL to all variables yet, so it's
      not safe to try to expand expressions involving them.  */
-  cfun->x_dont_save_pending_sizes_p = 1;
+  cfun->dont_save_pending_sizes_p = 1;
 
   /* Start the statement-tree, start the tree now.  */
   DECL_SAVED_TREE (decl1) = push_stmt_list ();
index 03cd44390909a85dc782b4b402a87c7ba722c316..45358b2c5f4cbb2bd97648fa3b092644ef224a4a 100644 (file)
@@ -437,7 +437,7 @@ use_thunk (tree thunk_fndecl, bool emit_p)
       BLOCK_VARS (fn_block) = a;
       DECL_INITIAL (thunk_fndecl) = fn_block;
       init_function_start (thunk_fndecl);
-      current_function_is_thunk = 1;
+      crtl->is_thunk = 1;
       assemble_start_function (thunk_fndecl, fnname);
 
       targetm.asm_out.output_mi_thunk (asm_out_file, thunk_fndecl,
index cd733bfe326d12fc71b85032d69ac8c3d7eb6504..42779562a88d2b379398462d2749af655bad55fd 100644 (file)
@@ -7138,7 +7138,7 @@ check_return_expr (tree retval, bool *no_warning)
       if (retval == error_mark_node)
        return retval;
       /* We can't initialize a register from a AGGR_INIT_EXPR.  */
-      else if (! current_function_returns_struct
+      else if (! cfun->returns_struct
               && TREE_CODE (retval) == TARGET_EXPR
               && TREE_CODE (TREE_OPERAND (retval, 1)) == AGGR_INIT_EXPR)
        retval = build2 (COMPOUND_EXPR, TREE_TYPE (retval), retval,
index 4a733d6955cb15227f48ea5c1c414241026e2287..79714e92a08964cfac37e4f7e2e30fb38598763c 100644 (file)
@@ -3871,7 +3871,7 @@ df_get_exit_block_use_set (bitmap exit_block_uses)
   
 #ifdef EH_RETURN_DATA_REGNO
   /* Mark the registers that will contain data for the handler.  */
-  if (reload_completed && current_function_calls_eh_return)
+  if (reload_completed && crtl->calls_eh_return)
     for (i = 0; ; ++i)
       {
        unsigned regno = EH_RETURN_DATA_REGNO (i);
@@ -3883,7 +3883,7 @@ df_get_exit_block_use_set (bitmap exit_block_uses)
 
 #ifdef EH_RETURN_STACKADJ_RTX
   if ((!HAVE_epilogue || ! epilogue_completed)
-      && current_function_calls_eh_return)
+      && crtl->calls_eh_return)
     {
       rtx tmp = EH_RETURN_STACKADJ_RTX;
       if (tmp && REG_P (tmp))
@@ -3893,7 +3893,7 @@ df_get_exit_block_use_set (bitmap exit_block_uses)
 
 #ifdef EH_RETURN_HANDLER_RTX
   if ((!HAVE_epilogue || ! epilogue_completed)
-      && current_function_calls_eh_return)
+      && crtl->calls_eh_return)
     {
       rtx tmp = EH_RETURN_HANDLER_RTX;
       if (tmp && REG_P (tmp))
index e7afb7ef0a8540b02150b82d7bfd3c82beef78d4..e1d2fb2c5c3521459888fdb1b79175668f60bc34 100644 (file)
@@ -70,7 +70,7 @@ void
 clear_pending_stack_adjust (void)
 {
   if (optimize > 0
-      && (! flag_omit_frame_pointer || current_function_calls_alloca)
+      && (! flag_omit_frame_pointer || cfun->calls_alloca)
       && EXIT_IGNORE_STACK
       && ! (DECL_INLINE (current_function_decl) && ! flag_no_inline))
     discard_pending_stack_adjust ();
index 9d19b7071eec4bd40929026bc8ec8b03a0c436f5..6984e19bd9586ab0fd151ec7dfdff3c15605a26e 100644 (file)
--- a/gcc/dse.c
+++ b/gcc/dse.c
@@ -531,7 +531,7 @@ struct clear_alias_mode_holder
 
 static alloc_pool clear_alias_mode_pool;
 
-/* This is true except if current_function_stdarg -- i.e. we cannot do
+/* This is true except if cfun->stdarg -- i.e. we cannot do
    this for vararg functions because they play games with the frame.  */
 static bool stores_off_frame_dead_at_return;
 
@@ -718,7 +718,7 @@ dse_step0 (void)
   bb_table = XCNEWVEC (bb_info_t, last_basic_block);
   rtx_group_next_id = 0;
 
-  stores_off_frame_dead_at_return = !current_function_stdarg;
+  stores_off_frame_dead_at_return = !cfun->stdarg;
 
   init_alias_analysis ();
   
@@ -2163,7 +2163,7 @@ dse_step1 (void)
              && (EDGE_COUNT (bb->succs) == 0
                  || (single_succ_p (bb)
                      && single_succ (bb) == EXIT_BLOCK_PTR
-                     && ! current_function_calls_eh_return)))
+                     && ! crtl->calls_eh_return)))
            {
              insn_info_t i_ptr = active_local_stores;
              while (i_ptr)
index 2c7f3184e7cfdc195f4f3de7b62def29a95018d2..7625947049d18957d41d66cb55cc7dcb7fd060f8 100644 (file)
@@ -2657,8 +2657,8 @@ dwarf2out_begin_prologue (unsigned int line ATTRIBUTE_UNUSED,
   fde->dw_fde_cfi = NULL;
   fde->funcdef_number = current_function_funcdef_no;
   fde->nothrow = TREE_NOTHROW (current_function_decl);
-  fde->uses_eh_lsda = cfun->uses_eh_lsda;
-  fde->all_throwers_are_sibcalls = cfun->all_throwers_are_sibcalls;
+  fde->uses_eh_lsda = crtl->uses_eh_lsda;
+  fde->all_throwers_are_sibcalls = crtl->all_throwers_are_sibcalls;
 
   args_size = old_args_size = 0;
 
index b8b19d6d224ef7eccb75b73c1392998bcd78102f..2fc2f92126a24fbcbdee30b7e947f9bd8ca9b521 100644 (file)
@@ -678,7 +678,7 @@ gen_tmp_stack_mem (enum machine_mode mode, rtx addr)
 {
   rtx mem = gen_rtx_MEM (mode, addr);
   MEM_NOTRAP_P (mem) = 1;
-  if (!current_function_calls_alloca)
+  if (!cfun->calls_alloca)
     set_mem_alias_set (mem, get_frame_alias_set ());
   return mem;
 }
index 9480658b506c34ef92ede073b412b2af0c7e6109..f8bacd5902bcd36cc92ee65c13e99014268cfc62 100644 (file)
@@ -1691,7 +1691,7 @@ sjlj_assign_call_site_values (rtx dispatch_label, struct sjlj_lp_info *lp_info)
        r->landing_pad = dispatch_label;
        lp_info[i].action_index = collect_one_action_chain (ar_hash, r);
        if (lp_info[i].action_index != -1)
-         cfun->uses_eh_lsda = 1;
+         crtl->uses_eh_lsda = 1;
       }
 
   htab_delete (ar_hash);
@@ -1817,7 +1817,7 @@ sjlj_emit_function_enter (rtx dispatch_label)
   emit_move_insn (mem, eh_personality_libfunc);
 
   mem = adjust_address (fc, Pmode, sjlj_fc_lsda_ofs);
-  if (cfun->uses_eh_lsda)
+  if (crtl->uses_eh_lsda)
     {
       char buf[20];
       rtx sym;
@@ -2746,7 +2746,7 @@ can_throw_external (const_rtx insn)
   return can_throw_external_1 (INTVAL (XEXP (note, 0)), false);
 }
 
-/* Set TREE_NOTHROW and cfun->all_throwers_are_sibcalls.  */
+/* Set TREE_NOTHROW and crtl->all_throwers_are_sibcalls.  */
 
 unsigned int
 set_nothrow_function_flags (void)
@@ -2761,13 +2761,13 @@ set_nothrow_function_flags (void)
 
   TREE_NOTHROW (current_function_decl) = 1;
 
-  /* Assume cfun->all_throwers_are_sibcalls until we encounter
+  /* Assume crtl->all_throwers_are_sibcalls until we encounter
      something that can throw an exception.  We specifically exempt
      CALL_INSNs that are SIBLING_CALL_P, as these are really jumps,
      and can't throw.  Most CALL_INSNs are not SIBLING_CALL_P, so this
      is optimistic.  */
 
-  cfun->all_throwers_are_sibcalls = 1;
+  crtl->all_throwers_are_sibcalls = 1;
 
   if (! flag_exceptions)
     return 0;
@@ -2779,7 +2779,7 @@ set_nothrow_function_flags (void)
 
        if (!CALL_P (insn) || !SIBLING_CALL_P (insn))
          {
-           cfun->all_throwers_are_sibcalls = 0;
+           crtl->all_throwers_are_sibcalls = 0;
            return 0;
          }
       }
@@ -2792,7 +2792,7 @@ set_nothrow_function_flags (void)
 
        if (!CALL_P (insn) || !SIBLING_CALL_P (insn))
          {
-           cfun->all_throwers_are_sibcalls = 0;
+           crtl->all_throwers_are_sibcalls = 0;
            return 0;
          }
       }
@@ -2829,7 +2829,7 @@ expand_builtin_unwind_init (void)
 {
   /* Set this so all the registers get saved in our frame; we need to be
      able to copy the saved values for any registers from frames we unwind.  */
-  current_function_saves_all_registers = 1;
+  crtl->saves_all_registers = 1;
 
 #ifdef SETUP_FRAME_ADDRESSES
   SETUP_FRAME_ADDRESSES ();
@@ -2952,7 +2952,7 @@ expand_eh_return (void)
   if (! crtl->eh.ehr_label)
     return;
 
-  current_function_calls_eh_return = 1;
+  crtl->calls_eh_return = 1;
 
 #ifdef EH_RETURN_STACKADJ_RTX
   emit_move_insn (EH_RETURN_STACKADJ_RTX, const0_rtx);
@@ -3248,7 +3248,7 @@ convert_to_eh_region_ranges (void)
        /* Existence of catch handlers, or must-not-throw regions
           implies that an lsda is needed (even if empty).  */
        if (this_action != -1)
-         cfun->uses_eh_lsda = 1;
+         crtl->uses_eh_lsda = 1;
 
        /* Delay creation of region notes for no-action regions
           until we're sure that an lsda will be required.  */
@@ -3599,7 +3599,7 @@ output_function_exception_table (const char * ARG_UNUSED (fnname))
   int tt_format_size = 0;
 
   /* Not all functions need anything.  */
-  if (! cfun->uses_eh_lsda)
+  if (! crtl->uses_eh_lsda)
     return;
 
   if (eh_personality_libfunc)
index 77d814789e41c0a91ba170744735b9f84ef6c70a..d3cc01b9701b12223893c65883f80535e18b199d 100644 (file)
@@ -1081,7 +1081,7 @@ allocate_dynamic_stack_space (rtx size, rtx target, int known_align)
     return virtual_stack_dynamic_rtx;
 
   /* Otherwise, show we're calling alloca or equivalent.  */
-  current_function_calls_alloca = 1;
+  cfun->calls_alloca = 1;
 
   /* Ensure the size is in the proper mode.  */
   if (GET_MODE (size) != VOIDmode && GET_MODE (size) != Pmode)
@@ -1129,7 +1129,7 @@ allocate_dynamic_stack_space (rtx size, rtx target, int known_align)
      would use reg notes to store the "optimized" size and fix things
      up later.  These days we know this information before we ever
      start building RTL so the reg notes are unnecessary.  */
-  if (!current_function_calls_setjmp)
+  if (!cfun->calls_setjmp)
     {
       int align = PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT;
 
@@ -1236,7 +1236,7 @@ allocate_dynamic_stack_space (rtx size, rtx target, int known_align)
 #endif
 
       /* Check stack bounds if necessary.  */
-      if (current_function_limit_stack)
+      if (crtl->limit_stack)
        {
          rtx available;
          rtx space_available = gen_label_rtx ();
index 1bb3d820c8c354e4eb3ff68b7d47f4b178bbd1c5..141904f123131e16ef90ce71dca7a7a66c50e844 100644 (file)
@@ -4339,8 +4339,8 @@ expand_assignment (tree to, tree from, bool nontemporal)
      the place the value is being stored, use a safe function when copying
      a value through a pointer into a structure value return block.  */
   if (TREE_CODE (to) == RESULT_DECL && TREE_CODE (from) == INDIRECT_REF
-      && current_function_returns_struct
-      && !current_function_returns_pcc_struct)
+      && cfun->returns_struct
+      && !cfun->returns_pcc_struct)
     {
       rtx from_rtx, size;
 
index 177c17687d598d384ce92434e7696dfaa8d24b80..ccef70f00f1e3f1f51a944bc1154ff5da3962e93 100644 (file)
@@ -1505,7 +1505,7 @@ final_start_function (rtx first ATTRIBUTE_UNUSED, FILE *file,
   /* The Sun386i and perhaps other machines don't work right
      if the profiling code comes after the prologue.  */
 #ifdef PROFILE_BEFORE_PROLOGUE
-  if (current_function_profile)
+  if (crtl->profile)
     profile_function (file);
 #endif /* PROFILE_BEFORE_PROLOGUE */
 
@@ -1550,7 +1550,7 @@ static void
 profile_after_prologue (FILE *file ATTRIBUTE_UNUSED)
 {
 #ifndef PROFILE_BEFORE_PROLOGUE
-  if (current_function_profile)
+  if (crtl->profile)
     profile_function (file);
 #endif /* not PROFILE_BEFORE_PROLOGUE */
 }
@@ -1562,7 +1562,7 @@ profile_function (FILE *file ATTRIBUTE_UNUSED)
 # define NO_PROFILE_COUNTERS   0
 #endif
 #if defined(ASM_OUTPUT_REG_PUSH)
-  int sval = current_function_returns_struct;
+  int sval = cfun->returns_struct;
   rtx svrtx = targetm.calls.struct_value_rtx (TREE_TYPE (current_function_decl), 1);
 #if defined(STATIC_CHAIN_INCOMING_REGNUM) || defined(STATIC_CHAIN_REGNUM)
   int cxt = cfun->static_chain_decl != NULL;
@@ -3813,7 +3813,7 @@ leaf_function_p (void)
   rtx insn;
   rtx link;
 
-  if (current_function_profile || profile_arc_flag)
+  if (crtl->profile || profile_arc_flag)
     return 0;
 
   for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
@@ -3888,7 +3888,7 @@ only_leaf_regs_used (void)
        && ! permitted_reg_in_leaf_functions[i])
       return 0;
 
-  if (current_function_uses_pic_offset_table
+  if (crtl->uses_pic_offset_table
       && pic_offset_table_rtx != 0
       && REG_P (pic_offset_table_rtx)
       && ! permitted_reg_in_leaf_functions[REGNO (pic_offset_table_rtx)])
index b469063990e32ee83ebb389c131516d4454ea84b..ee39ef18c3c7382566f05b10ca9d6d235a1f9977 100644 (file)
@@ -1,3 +1,7 @@
+2008-04-25  Jan Hubicka  <jh@suse.cz>
+
+       * trans-decl.c (trans_function_start): Update.
+
 2008-04-25  Tobias Burnus  <burnus@net-b.de>
            Daniel Franke <franke.daniel@gmail.com>
 
index 84b059b1a78c27b976861a4db8569575aba70f40..4e6dddbf5013371ad4d5d310d9cc408237ab51e6 100644 (file)
@@ -1601,7 +1601,7 @@ trans_function_start (gfc_symbol * sym)
      call expand_expr to calculate the size of a variable-sized array.
      We haven't necessarily assigned RTL to all variables yet, so it's
      not safe to try to expand expressions involving them.  */
-  cfun->x_dont_save_pending_sizes_p = 1;
+  cfun->dont_save_pending_sizes_p = 1;
 
   /* function.c requires a push at the start of the function.  */
   pushlevel (0);
index c804c5e32f031224535ee8a4a7262a2c03e6adb6..5d70ddd3f9ff71398f7556e0f3891ca406cdb2cb 100644 (file)
@@ -1969,7 +1969,7 @@ assign_parms_augmented_arg_list (struct assign_parm_data_all *all)
 
   /* If struct value address is treated as the first argument, make it so.  */
   if (aggregate_value_p (DECL_RESULT (fndecl), fndecl)
-      && ! current_function_returns_pcc_struct
+      && ! cfun->returns_pcc_struct
       && targetm.calls.struct_value_rtx (TREE_TYPE (fndecl), 1) == 0)
     {
       tree type = build_pointer_type (TREE_TYPE (fntype));
@@ -2008,7 +2008,7 @@ assign_parm_find_data_types (struct assign_parm_data_all *all, tree parm,
   memset (data, 0, sizeof (*data));
 
   /* NAMED_ARG is a mis-nomer.  We really mean 'non-varadic'. */
-  if (!current_function_stdarg)
+  if (!cfun->stdarg)
     data->named_arg = 1;  /* No varadic parms.  */
   else if (TREE_CHAIN (parm))
     data->named_arg = 1;  /* Not the last non-varadic parm. */
@@ -2967,7 +2967,7 @@ assign_parms (tree fndecl)
          continue;
        }
 
-      if (current_function_stdarg && !TREE_CHAIN (parm))
+      if (cfun->stdarg && !TREE_CHAIN (parm))
        assign_parms_setup_varargs (&all, &data, false);
 
       /* Find out where the parameter arrives in this function.  */
@@ -3859,12 +3859,12 @@ allocate_struct_function (tree fndecl, bool abstract_p)
       if (!abstract_p && aggregate_value_p (result, fndecl))
        {
 #ifdef PCC_STATIC_STRUCT_RETURN
-         current_function_returns_pcc_struct = 1;
+         cfun->returns_pcc_struct = 1;
 #endif
-         current_function_returns_struct = 1;
+         cfun->returns_struct = 1;
        }
 
-      current_function_stdarg
+      cfun->stdarg
        = (fntype
           && TYPE_ARG_TYPES (fntype) != 0
           && (TREE_VALUE (tree_last (TYPE_ARG_TYPES (fntype)))
@@ -4103,11 +4103,11 @@ expand_function_start (tree subr)
      valid operands of arithmetic insns.  */
   init_recog_no_volatile ();
 
-  current_function_profile
+  crtl->profile
     = (profile_flag
        && ! DECL_NO_INSTRUMENT_FUNCTION_ENTRY_EXIT (subr));
 
-  current_function_limit_stack
+  crtl->limit_stack
     = (stack_limit_rtx != NULL_RTX && ! DECL_NO_LIMIT_STACK (subr));
 
   /* Make the label for return statements to jump to.  Do not special
@@ -4126,7 +4126,7 @@ expand_function_start (tree subr)
       rtx value_address = 0;
 
 #ifdef PCC_STATIC_STRUCT_RETURN
-      if (current_function_returns_pcc_struct)
+      if (cfun->returns_pcc_struct)
        {
          int size = int_size_in_bytes (TREE_TYPE (DECL_RESULT (subr)));
          value_address = assemble_static_space (size);
@@ -4244,7 +4244,7 @@ expand_function_start (tree subr)
 
   parm_birth_insn = get_last_insn ();
 
-  if (current_function_profile)
+  if (crtl->profile)
     {
 #ifdef PROFILE_HOOK
       PROFILE_HOOK (current_function_funcdef_no);
@@ -4366,7 +4366,7 @@ expand_function_end (void)
 
   /* If arg_pointer_save_area was referenced only from a nested
      function, we will not have initialized it yet.  Do that now.  */
-  if (arg_pointer_save_area && ! cfun->arg_pointer_save_area_init)
+  if (arg_pointer_save_area && ! crtl->arg_pointer_save_area_init)
     get_arg_pointer_save_area ();
 
   /* If we are doing stack checking and this function makes calls,
@@ -4523,9 +4523,9 @@ expand_function_end (void)
 
      If returning a structure PCC style,
      the caller also depends on this value.
-     And current_function_returns_pcc_struct is not necessarily set.  */
-  if (current_function_returns_struct
-      || current_function_returns_pcc_struct)
+     And cfun->returns_pcc_struct is not necessarily set.  */
+  if (cfun->returns_struct
+      || cfun->returns_pcc_struct)
     {
       rtx value_address = DECL_RTL (DECL_RESULT (current_function_decl));
       tree type = TREE_TYPE (DECL_RESULT (current_function_decl));
@@ -4584,7 +4584,7 @@ expand_function_end (void)
      an accurate stack pointer to exit the function,
      insert some code to save and restore the stack pointer.  */
   if (! EXIT_IGNORE_STACK
-      && current_function_calls_alloca)
+      && cfun->calls_alloca)
     {
       rtx tem = 0;
 
@@ -4610,7 +4610,7 @@ get_arg_pointer_save_area (void)
       arg_pointer_save_area = ret;
     }
 
-  if (! cfun->arg_pointer_save_area_init)
+  if (! crtl->arg_pointer_save_area_init)
     {
       rtx seq;
 
@@ -4737,7 +4737,7 @@ thread_prologue_and_epilogue_insns (void)
 
       /* Insert an explicit USE for the frame pointer 
          if the profiling is on and the frame pointer is required.  */
-      if (current_function_profile && frame_pointer_needed)
+      if (crtl->profile && frame_pointer_needed)
         emit_insn (gen_rtx_USE (VOIDmode, hard_frame_pointer_rtx));
 
       /* Retain a map of the prologue insns.  */
@@ -4748,7 +4748,7 @@ thread_prologue_and_epilogue_insns (void)
       /* Ensure that instructions are not moved into the prologue when
         profiling is on.  The call to the profiling routine can be
         emitted within the live range of a call-clobbered register.  */
-      if (current_function_profile)
+      if (crtl->profile)
         emit_insn (gen_blockage ());
 #endif
 
@@ -5343,7 +5343,7 @@ rest_of_match_asm_constraints (void)
   rtx insn, pat, *p_sets;
   int noutputs;
 
-  if (!cfun->has_asm_statement)
+  if (!crtl->has_asm_statement)
     return 0;
 
   df_set_flags (DF_DEFER_INSN_RESCAN);
index e98ffff88e78cd3a49927135eb2646a863ef1b3e..2e88f97ad7f74ea8368509f2090ec457deb922fa 100644 (file)
@@ -334,6 +334,59 @@ struct rtl_data GTY(())
   /* If some insns can be deferred to the delay slots of the epilogue, the
      delay list for them is recorded here.  */
   rtx epilogue_delay_list;
+
+  /* Nonzero if function being compiled called builtin_return_addr or
+     builtin_frame_address with nonzero count.  */
+  bool accesses_prior_frames;
+
+  /* Nonzero if the function calls __builtin_eh_return.  */
+  bool calls_eh_return;
+
+  /* Nonzero if function saves all registers, e.g. if it has a nonlocal
+     label that can reach the exit block via non-exceptional paths. */
+  bool saves_all_registers;
+
+  /* Nonzero if function being compiled has nonlocal gotos to parent
+     function.  */
+  bool has_nonlocal_goto;
+  
+  /* Nonzero if function being compiled has an asm statement.  */
+  bool has_asm_statement;
+
+  /* Nonzero if the current function is a thunk, i.e., a lightweight
+     function implemented by the output_mi_thunk hook) that just
+     adjusts one of its arguments and forwards to another
+     function.  */
+  bool is_thunk;
+
+  /* This bit is used by the exception handling logic.  It is set if all
+     calls (if any) are sibling calls.  Such functions do not have to
+     have EH tables generated, as they cannot throw.  A call to such a
+     function, however, should be treated as throwing if any of its callees
+     can throw.  */
+  bool all_throwers_are_sibcalls;
+
+  /* Nonzero if stack limit checking should be enabled in the current
+     function.  */
+  bool limit_stack;
+
+  /* Nonzero if profiling code should be generated.  */
+  bool profile;
+
+  /* Nonzero if the current function uses the constant pool.  */
+  bool uses_const_pool;
+
+  /* Nonzero if the current function uses pic_offset_table_rtx.  */
+  bool uses_pic_offset_table;
+
+  /* Nonzero if the current function needs an lsda for exception handling.  */
+  bool uses_eh_lsda;
+
+  /* Set when the tail call has been produced.  */
+  bool tail_call_emit;
+
+  /* Nonzero if code to initialize arg_pointer_save_area has been emitted.  */
+  bool arg_pointer_save_area_init;
 };
 
 #define return_label (crtl->x_return_label)
@@ -437,50 +490,10 @@ struct function GTY(())
      either as a subroutine or builtin.  */
   unsigned int calls_alloca : 1;
 
-  /* Nonzero if function being compiled called builtin_return_addr or
-     builtin_frame_address with nonzero count.  */
-  unsigned int accesses_prior_frames : 1;
-
-  /* Nonzero if the function calls __builtin_eh_return.  */
-  unsigned int calls_eh_return : 1;
-
-
   /* Nonzero if function being compiled receives nonlocal gotos
      from nested functions.  */
   unsigned int has_nonlocal_label : 1;
 
-  /* Nonzero if function saves all registers, e.g. if it has a nonlocal
-     label that can reach the exit block via non-exceptional paths. */
-  unsigned int saves_all_registers : 1;
-
-  /* Nonzero if function being compiled has nonlocal gotos to parent
-     function.  */
-  unsigned int has_nonlocal_goto : 1;
-  
-  /* Nonzero if function being compiled has an asm statement.  */
-  unsigned int has_asm_statement : 1;
-
-  /* Nonzero if the current function is a thunk, i.e., a lightweight
-     function implemented by the output_mi_thunk hook) that just
-     adjusts one of its arguments and forwards to another
-     function.  */
-  unsigned int is_thunk : 1;
-
-  /* This bit is used by the exception handling logic.  It is set if all
-     calls (if any) are sibling calls.  Such functions do not have to
-     have EH tables generated, as they cannot throw.  A call to such a
-     function, however, should be treated as throwing if any of its callees
-     can throw.  */
-  unsigned int all_throwers_are_sibcalls : 1;
-
-  /* Nonzero if profiling code should be generated.  */
-  unsigned int profile : 1;
-
-  /* Nonzero if stack limit checking should be enabled in the current
-     function.  */
-  unsigned int limit_stack : 1;
-
-
   /* Nonzero if current function uses stdarg.h or equivalent.  */
   unsigned int stdarg : 1;
 
@@ -491,34 +504,10 @@ struct function GTY(())
      variable-sized type, then the size of the parameter is computed
      when the function body is entered.  However, some front-ends do
      not desire this behavior.  */
-  unsigned int x_dont_save_pending_sizes_p : 1;
-
-  /* Nonzero if the current function uses the constant pool.  */
-  unsigned int uses_const_pool : 1;
-
-  /* Nonzero if the current function uses pic_offset_table_rtx.  */
-  unsigned int uses_pic_offset_table : 1;
-
-  /* Nonzero if the current function needs an lsda for exception handling.  */
-  unsigned int uses_eh_lsda : 1;
-
-  /* Nonzero if code to initialize arg_pointer_save_area has been emitted.  */
-  unsigned int arg_pointer_save_area_init : 1;
+  unsigned int dont_save_pending_sizes_p : 1;
 
   unsigned int after_inlining : 1;
 
-  /* Set when the call to function itself has been emit.  */
-  unsigned int recursive_call_emit : 1;
-
-
-  /* Set when the tail call has been produced.  */
-  unsigned int tail_call_emit : 1;
-
-  /* FIXME tuples: This bit is temporarily here to mark when a
-     function has been gimplified, so we can make sure we're not
-     creating non GIMPLE tuples after gimplification.  */
-  unsigned int gimplified : 1;
-
   /* Fields below this point are not set for abstract functions; see
      allocate_struct_function.  */
 
@@ -563,23 +552,7 @@ extern void pop_cfun (void);
 extern void instantiate_decl_rtl (rtx x);
 
 /* For backward compatibility... eventually these should all go away.  */
-#define current_function_returns_struct (cfun->returns_struct)
-#define current_function_returns_pcc_struct (cfun->returns_pcc_struct)
-#define current_function_calls_setjmp (cfun->calls_setjmp)
-#define current_function_calls_alloca (cfun->calls_alloca)
-#define current_function_accesses_prior_frames (cfun->accesses_prior_frames)
-#define current_function_calls_eh_return (cfun->calls_eh_return)
-#define current_function_is_thunk (cfun->is_thunk)
-#define current_function_stdarg (cfun->stdarg)
-#define current_function_profile (cfun->profile)
 #define current_function_funcdef_no (cfun->funcdef_no)
-#define current_function_limit_stack (cfun->limit_stack)
-#define current_function_uses_pic_offset_table (cfun->uses_pic_offset_table)
-#define current_function_uses_const_pool (cfun->uses_const_pool)
-#define current_function_has_nonlocal_label (cfun->has_nonlocal_label)
-#define current_function_saves_all_registers (cfun->saves_all_registers)
-#define current_function_has_nonlocal_goto (cfun->has_nonlocal_goto)
-#define current_function_has_asm_statement (cfun->has_asm_statement)
 
 #define current_loops (cfun->x_current_loops)
 #define dom_computed (cfun->cfg->x_dom_computed)
index 20bb0804d2e4ab699ace0a1d09341472e6eda4ac..477d4d3ef071f9354cc783cdbd3c4dacf1933145 100644 (file)
@@ -658,7 +658,7 @@ gcse_main (rtx f ATTRIBUTE_UNUSED)
 
   /* We do not construct an accurate cfg in functions which call
      setjmp, so just punt to be safe.  */
-  if (current_function_calls_setjmp)
+  if (cfun->calls_setjmp)
     return 0;
 
   /* Assume that we do not need to run jump optimizations after gcse.  */
@@ -6575,7 +6575,7 @@ bypass_jumps (void)
 
   /* We do not construct an accurate cfg in functions which call
      setjmp, so just punt to be safe.  */
-  if (current_function_calls_setjmp)
+  if (cfun->calls_setjmp)
     return 0;
 
   /* Identify the basic block information for this function, including
index 89de67a088c1f12c556116936b1a52201c248d76..fd1a19dfd3264b64b639271488f37a475b3f8f2e 100644 (file)
@@ -122,7 +122,7 @@ lower_function_body (void)
       disp_label = create_artificial_label ();
       /* This mark will create forward edges from every call site.  */
       DECL_NONLOCAL (disp_label) = 1;
-      current_function_has_nonlocal_label = 1;
+      cfun->has_nonlocal_label = 1;
       x = build1 (LABEL_EXPR, void_type_node, disp_label);
       tsi_link_after (&i, x, TSI_CONTINUE_LINKING);
 
index 12db4e4d35d22fb0ea7cd1375f408c32e851583e..2e8ffef4430094354a2a490766bafebafde12528 100644 (file)
@@ -6603,7 +6603,6 @@ gimplify_function_tree (tree fndecl)
       DECL_SAVED_TREE (fndecl) = bind;
     }
 
-  cfun->gimplified = true;
   current_function_decl = oldfn;
   pop_cfun ();
 }
index f88da11032138aefb15188c04e7530abf292b619..befdc9f367cd6504b6d050303f77fba5742c2bb5 100644 (file)
@@ -249,7 +249,7 @@ compute_regsets (HARD_REG_SET *elim_set,
 #endif
   int need_fp
     = (! flag_omit_frame_pointer
-       || (current_function_calls_alloca && EXIT_IGNORE_STACK)
+       || (cfun->calls_alloca && EXIT_IGNORE_STACK)
        || FRAME_POINTER_REQUIRED);
 
   max_regno = max_reg_num ();
@@ -378,7 +378,7 @@ global_alloc (void)
     if (REG_N_REFS (i) != 0 && REG_LIVE_LENGTH (i) != -1
        /* Don't allocate pseudos that cross calls,
           if this function receives a nonlocal goto.  */
-       && (! current_function_has_nonlocal_label
+       && (! cfun->has_nonlocal_label
            || REG_N_CALLS_CROSSED (i) == 0))
       {
        int blk = regno_basic_block (i);
index 33e5a297c1d190deeb8fb1f59548597b93976181..af97caf0173c59ba7d33a2eef5246260ff5b4140 100644 (file)
@@ -2008,7 +2008,7 @@ combine_regs (rtx usedreg, rtx setreg, int may_save_copy, int insn_number,
   if (reg_qty[sreg] >= -1
       /* If we are not going to let any regs live across calls,
         don't tie a call-crossing reg to a non-call-crossing reg.  */
-      || (current_function_has_nonlocal_label
+      || (cfun->has_nonlocal_label
          && ((REG_N_CALLS_CROSSED (ureg) > 0)
              != (REG_N_CALLS_CROSSED (sreg) > 0))))
     return 0;
@@ -2229,7 +2229,7 @@ find_free_reg (enum reg_class class, enum machine_mode mode, int qtyno,
 
   /* Don't let a pseudo live in a reg across a function call
      if we might get a nonlocal goto.  */
-  if (current_function_has_nonlocal_label
+  if (cfun->has_nonlocal_label
       && qty[qtyno].n_calls_crossed > 0)
     return -1;
 
index b8ed3e6f76aab315135c94786a930631e8a11a7b..2d05171e7125053482dde1fa519eab1e166b889f 100644 (file)
@@ -1074,11 +1074,7 @@ execute_one_pass (struct opt_pass *pass)
   if (pass->type == SIMPLE_IPA_PASS)
     gcc_assert (!cfun && !current_function_decl);
   else
-    {
-      gcc_assert (cfun && current_function_decl);
-      gcc_assert (!(cfun->curr_properties & PROP_trees)
-                 || pass->type != RTL_PASS);
-    }
+    gcc_assert (cfun && current_function_decl);
 
   current_pass = pass;
   /* See if we're supposed to run this pass.  */
@@ -1174,6 +1170,10 @@ execute_one_pass (struct opt_pass *pass)
       dump_file = NULL;
     }
 
+  if (pass->type != SIMPLE_IPA_PASS)
+    gcc_assert (!(cfun->curr_properties & PROP_trees)
+               || pass->type != RTL_PASS);
+
   current_pass = NULL;
   /* Reset in_gimple_form to not break non-unit-at-a-time mode.  */
   in_gimple_form = false;
index a4f9e5f4ea17d3b2921446a808b277d720434aad..f97d9a89ee231057740737b6323d5f61c9ccbc0d 100644 (file)
@@ -1220,7 +1220,7 @@ global_conflicts (void)
          /* No need to record conflicts for call clobbered regs if we have
             nonlocal labels around, as we don't ever try to allocate such
             regs in this case.  */
-         if (! current_function_has_nonlocal_label)
+         if (! cfun->has_nonlocal_label)
            for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
              if (call_used_regs [i])
                record_one_conflict (allocnos_live, &hard_regs_live, i);
index 7dc593f68ad41a4911cd8652a71e0eb5a6b35999..13b8e6f7ef0e3e2c9b5627b3956f4a630cce8248 100644 (file)
@@ -742,11 +742,11 @@ reload (rtx first, int global)
   /* A function that has a nonlocal label that can reach the exit
      block via non-exceptional paths must save all call-saved
      registers.  */
-  if (current_function_has_nonlocal_label
+  if (cfun->has_nonlocal_label
       && has_nonexceptional_receiver ())
-    current_function_saves_all_registers = 1;
+    crtl->saves_all_registers = 1;
 
-  if (current_function_saves_all_registers)
+  if (crtl->saves_all_registers)
     for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
       if (! call_used_regs[i] && ! fixed_regs[i] && ! LOCAL_REGNO (i))
        df_set_regs_ever_live (i, true);
@@ -3721,9 +3721,9 @@ init_elim_table (void)
                             the frame pointer in that case.  At some point,
                             we should improve this by emitting the
                             sp-adjusting insns for this case.  */
-                         || (current_function_calls_alloca
+                         || (cfun->calls_alloca
                              && EXIT_IGNORE_STACK)
-                         || current_function_accesses_prior_frames
+                         || crtl->accesses_prior_frames
                          || FRAME_POINTER_REQUIRED);
 
   num_eliminable = 0;
index e37fcc3e302f8f4e7c1f2410e055530971652467..99e5f75178ffc05c7e90d55b471469c27c4e958e 100644 (file)
@@ -57,7 +57,7 @@ notice_stack_pointer_modification (void)
 
   /* Assume that the stack pointer is unchanging if alloca hasn't
      been used.  */
-  current_function_sp_is_unchanging = !current_function_calls_alloca;
+  current_function_sp_is_unchanging = !cfun->calls_alloca;
   if (current_function_sp_is_unchanging)
     FOR_EACH_BB (bb)
       FOR_BB_INSNS (bb, insn)
index aeea50970f61d884596bac2f731f39accaded151..ba4c49d4d8795251da36724446d3ebb9a54904e0 100644 (file)
@@ -1077,7 +1077,7 @@ expand_asm_operands (tree string, tree outputs, tree inputs,
     if (real_output_rtx[i])
       emit_move_insn (real_output_rtx[i], output_rtx[i]);
 
-  cfun->has_asm_statement = 1;
+  crtl->has_asm_statement = 1;
   free_temp_slots ();
 }
 
index 67e4c25fbdc25104e25947f5c3d20a6026baf888..41c8fefc1088d964872eac225fbe4d250579d716 100644 (file)
@@ -138,7 +138,7 @@ variable_size (tree size)
      places.  */
   save = skip_simple_arithmetic (size);
 
-  if (cfun && cfun->x_dont_save_pending_sizes_p)
+  if (cfun && cfun->dont_save_pending_sizes_p)
     /* The front-end doesn't want us to keep a list of the expressions
        that determine sizes for variable size objects.  Trust it.  */
     return size;
index d45b277b512a58c894d461cddbdf163140ef0374..5dc9d045a90ded537440aa1bfc8175414f422459 100644 (file)
@@ -1808,9 +1808,9 @@ notice_special_calls (tree t)
   int flags = call_expr_flags (t);
 
   if (flags & ECF_MAY_BE_ALLOCA)
-    current_function_calls_alloca = true;
+    cfun->calls_alloca = true;
   if (flags & ECF_RETURNS_TWICE)
-    current_function_calls_setjmp = true;
+    cfun->calls_setjmp = true;
 }
 
 
@@ -1820,8 +1820,8 @@ notice_special_calls (tree t)
 void
 clear_special_calls (void)
 {
-  current_function_calls_alloca = false;
-  current_function_calls_setjmp = false;
+  cfun->calls_alloca = false;
+  cfun->calls_setjmp = false;
 }
 
 
@@ -2495,7 +2495,7 @@ is_ctrl_altering_stmt (const_tree t)
     {
       /* A non-pure/const CALL_EXPR alters flow control if the current
         function has nonlocal labels.  */
-      if (TREE_SIDE_EFFECTS (call) && current_function_has_nonlocal_label)
+      if (TREE_SIDE_EFFECTS (call) && cfun->has_nonlocal_label)
        return true;
 
       /* A CALL_EXPR also alters control flow if it does not return.  */
@@ -2545,7 +2545,7 @@ tree_can_make_abnormal_goto (const_tree t)
   if (TREE_CODE (t) == WITH_SIZE_EXPR)
     t = TREE_OPERAND (t, 0);
   if (TREE_CODE (t) == CALL_EXPR)
-    return TREE_SIDE_EFFECTS (t) && current_function_has_nonlocal_label;
+    return TREE_SIDE_EFFECTS (t) && cfun->has_nonlocal_label;
   return false;
 }
 
@@ -6580,7 +6580,7 @@ tree_purge_dead_abnormal_call_edges (basic_block bb)
 {
   bool changed = tree_purge_dead_eh_edges (bb);
 
-  if (current_function_has_nonlocal_label)
+  if (cfun->has_nonlocal_label)
     {
       tree stmt = last_stmt (bb);
       edge_iterator ei;
index b6a9b93ef2812f0aefefe0530ac39763c95dbcff..8c53e6f28b6ffb8ff70c378a9b22cec2e7922a1f 100644 (file)
@@ -411,7 +411,7 @@ tree_rest_of_compilation (tree fndecl)
      call expand_expr to calculate the size of a variable-sized array.
      We haven't necessarily assigned RTL to all variables yet, so it's
      not safe to try to expand expressions involving them.  */
-  cfun->x_dont_save_pending_sizes_p = 1;
+  cfun->dont_save_pending_sizes_p = 1;
   
   tree_register_cfg_hooks ();
 
index 0934e14a0552f1a0dedf3807548066aecd3ea282..b82e62024cdbe435cb903a3d0e01d4388d16319e 100644 (file)
@@ -335,7 +335,6 @@ extern struct gimple_opt_pass pass_simple_dse;
 extern struct gimple_opt_pass pass_nrv;
 extern struct gimple_opt_pass pass_mark_used_blocks;
 extern struct gimple_opt_pass pass_rename_ssa_copies;
-extern struct gimple_opt_pass pass_expand;
 extern struct gimple_opt_pass pass_rest_of_compilation;
 extern struct gimple_opt_pass pass_sink_code;
 extern struct gimple_opt_pass pass_fre;
@@ -373,6 +372,7 @@ extern struct gimple_opt_pass pass_free_datastructures;
 extern struct gimple_opt_pass pass_init_datastructures;
 extern struct gimple_opt_pass pass_fixup_cfg;
 
+extern struct rtl_opt_pass pass_expand;
 extern struct rtl_opt_pass pass_init_function;
 extern struct rtl_opt_pass pass_jump;
 extern struct rtl_opt_pass pass_rtl_eh;
index 54693d11bece4fc9a97b3a181fb16b5f645344a4..f1595fe99bc66ce39c0e008941916d7fef348292 100644 (file)
@@ -595,7 +595,7 @@ static bool
 gate_optimize_stdarg (void)
 {
   /* This optimization is only for stdarg functions.  */
-  return current_function_stdarg != 0;
+  return cfun->stdarg != 0;
 }
 
 
index a4430ec34e2e39ce17034e8039d0155d89cff4b0..0458c8aec60e652938db88fa2bd64b4af17fddbf 100644 (file)
@@ -135,7 +135,7 @@ suitable_for_tail_opt_p (void)
   referenced_var_iterator rvi;
   tree var;
 
-  if (current_function_stdarg)
+  if (cfun->stdarg)
     return false;
 
   /* No local variable nor structure field should be call-clobbered.  We
@@ -164,7 +164,7 @@ suitable_for_tail_call_opt_p (void)
 
   /* alloca (until we have stack slot life analysis) inhibits
      sibling call optimizations, but not tail recursion.  */
-  if (current_function_calls_alloca)
+  if (cfun->calls_alloca)
     return false;
 
   /* If we are using sjlj exceptions, we may need to add a call to
@@ -176,7 +176,7 @@ suitable_for_tail_call_opt_p (void)
   /* Any function that calls setjmp might have longjmp called from
      any called function.  ??? We really should represent this
      properly in the CFG so that this needn't be special cased.  */
-  if (current_function_calls_setjmp)
+  if (cfun->calls_setjmp)
     return false;
 
   /* ??? It is OK if the argument of a function is taken in some cases,
index 518fe8a70546689d80f6b7a5729581d7fa3112fb..7c860d6830bfbe44e7bcb3352f1b5a4ba14aba22 100644 (file)
@@ -1633,7 +1633,7 @@ assemble_start_function (tree decl, const char *fnname)
       /* When the function starts with a cold section, we need to explicitly
         align the hot section and write out the hot section label.
         But if the current function is a thunk, we do not have a CFG.  */
-      if (!current_function_is_thunk
+      if (!crtl->is_thunk
          && BB_PARTITION (ENTRY_BLOCK_PTR->next_bb) == BB_COLD_PARTITION)
        {
          switch_to_section (text_section);
@@ -3486,7 +3486,7 @@ force_const_mem (enum machine_mode mode, rtx x)
     return NULL_RTX;
 
   /* Record that this function has used a constant pool entry.  */
-  current_function_uses_const_pool = 1;
+  crtl->uses_const_pool = 1;
 
   /* Decide which pool to use.  */
   pool = (targetm.use_blocks_for_constant_p (mode, x)
@@ -3800,7 +3800,7 @@ mark_constant_pool (void)
 {
   rtx insn, link;
 
-  if (!current_function_uses_const_pool && n_deferred_constants == 0)
+  if (!crtl->uses_const_pool && n_deferred_constants == 0)
     return;
 
   for (insn = get_insns (); insn; insn = NEXT_INSN (insn))