diff options
author | Josef Zlomek <zlomekj@suse.cz> | 2004-02-06 21:03:45 +0100 |
---|---|---|
committer | Josef Zlomek <zlomek@gcc.gnu.org> | 2004-02-06 20:03:45 +0000 |
commit | 014a1138d6ff79eff9aea704d5e8ae3f58fef5d1 (patch) | |
tree | f57616e19dba86e71b7eabf273b9af5e97701906 /gcc/config | |
parent | 298c28a8f4e43c22d3ad390699192f2dfa8fca70 (diff) | |
download | gcc-014a1138d6ff79eff9aea704d5e8ae3f58fef5d1.zip gcc-014a1138d6ff79eff9aea704d5e8ae3f58fef5d1.tar.gz gcc-014a1138d6ff79eff9aea704d5e8ae3f58fef5d1.tar.bz2 |
Josef Zlomek <zlomekj@suse.cz>
Josef Zlomek <zlomekj@suse.cz>
* Makefile.in (var-tracking.o): New.
* common.opt (fvar-tracking): New.
* flags.h (flag_var_tracking): New.
* gengtype.c (adjust_field_rtx_def): NOTE_INSN_VAR_LOCATION was added.
* opts.c (common_handle_option): Add OPT_fvar_tracking.
* print-rtl.c (print_rtx): NOTE_INSN_VAR_LOCATION was added.
* rtl.c (note_insn_name): Likewise.
* rtl.def (VAR_LOCATION): New.
* rtl.h (NOTE_VAR_LOCATION): New.
(NOTE_VAR_LOCATION_DECL): New.
(NOTE_VAR_LOCATION_LOC): New.
(enum insn_note): NOTE_INSN_VAR_LOCATION was added.
(variable_tracking_main): New exported function.
* timevar.def (TV_VAR_TRACKING): New.
* toplev.c (enum dump_file_index): Added DFI_vartrack.
(dump_file): "vartrack" was added (-dV).
(flag_var_tracking): New.
(f_options): "var-tracking" was added.
(rest_of_handle_variable_tracking): New function.
(rest_of_compilation): Run variable tracking.
(process_options): If user has not specified flag_var_tracking set it
according to optimize, debug_info_level and debug_hooks.
* tree.h (frame_base_decl): New.
* var-tracking.c: New file.
* config/ia64/ia64.c (ia64_flag_var_tracking): New variable.
(ia64_override_options): Set flags to run variable tracking in machine
dependent reorg instead of toplev.c.
(ia64_reorg): Run variable tracking if wanted.
* doc/invoke.texi: Mention variable tracking in -dV,
add and -fvar-tracking.
* doc/passes.texi: Added variable tracking pass.
Daniel Berlin <dberlin@dberlin.org>
* debug.h (struct gcc_debug_hooks): Added var_location debug hook.
* dbxout.c (dbx_debug_hooks): Likewise.
(xcoff_debug): Likewise.
* debug.c (do_nothing_debug_hooks): Likewise.
* dwarf2out.c (dwarf2_debug_hooks): Likewise.
* dwarfout.c (dwarf_debug_hooks): Likewise.
* sdbout.c (sdb_debug_hooks): Likewise.
* vmsdbgout.c (vmsdbg_debug_hooks): Likewise.
* final.c (final_scan_insn): Call var_location debug hook for each
NOTE_INSN_VAR_LOCATION.
Co-Authored-By: Daniel Berlin <dberlin@dberlin.org>
From-SVN: r77418
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/ia64/ia64.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c index 7c258d9..4764a1a 100644 --- a/gcc/config/ia64/ia64.c +++ b/gcc/config/ia64/ia64.c @@ -117,6 +117,10 @@ const char *ia64_tune_string; avoid the normal second scheduling pass. */ static int ia64_flag_schedule_insns2; +/* Determines whether we run variable tracking in machine dependent + reorganization. */ +static int ia64_flag_var_tracking; + /* Variables which are this size or smaller are put in the sdata/sbss sections. */ @@ -4785,6 +4789,11 @@ ia64_override_options (void) ia64_flag_schedule_insns2 = flag_schedule_insns_after_reload; flag_schedule_insns_after_reload = 0; + /* Variable tracking should be run after all optimizations which change order + of insns. It also needs a valid CFG. */ + ia64_flag_var_tracking = flag_var_tracking; + flag_var_tracking = 0; + ia64_section_threshold = g_switch_set ? g_switch_value : IA64_DEFAULT_GVALUE; init_machine_status = ia64_init_machine_status; @@ -7630,6 +7639,13 @@ ia64_reorg (void) fixup_errata (); emit_predicate_relation_info (); + + if (ia64_flag_var_tracking) + { + timevar_push (TV_VAR_TRACKING); + variable_tracking_main (); + timevar_pop (TV_VAR_TRACKING); + } } /* Return true if REGNO is used by the epilogue. */ |