summaryrefslogtreecommitdiff
path: root/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0385-PR-debug-47590.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0385-PR-debug-47590.patch')
-rw-r--r--meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0385-PR-debug-47590.patch490
1 files changed, 0 insertions, 490 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0385-PR-debug-47590.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0385-PR-debug-47590.patch
deleted file mode 100644
index cf623ba61..000000000
--- a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0385-PR-debug-47590.patch
+++ /dev/null
@@ -1,490 +0,0 @@
-From d457844076501a1f81fa5f867326a2018a61ac98 Mon Sep 17 00:00:00 2001
-From: aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
-Date: Sat, 4 Jun 2011 10:15:48 +0000
-Subject: [PATCH] PR debug/47590
- * target.def (delay_sched2, delay_vartrack): New.
- * doc/tm.texi.in: Update.
- * doc/tm.texi: Rebuild.
- * sched-rgn.c (gate_handle_sched2): Fail if delay_sched2.
- * var-tracking.c (gate_handle_var_tracking): Likewise.
- * config/bfin/bfin.c (bfin_flag_schedule_insns2): Drop.
- (bfin_flag_var_tracking): Drop.
- (output_file_start): Don't save and override flag_var_tracking.
- (bfin_option_override): Ditto flag_schedule_insns_after_reload.
- (bfin_reorg): Test original variables.
- (TARGET_DELAY_SCHED2, TARGET_DELAY_VARTRACK): Define.
- * config/ia64/ia64.c (ia64_flag_schedule_insns2): Drop.
- (ia64_flag_var_tracking): Drop.
- (TARGET_DELAY_SCHED2, TARGET_DELAY_VARTRACK): Define.
- (ia64_file_start): Don't save and override flag_var_tracking.
- (ia64_override_options_after_change): Ditto
- flag_schedule_insns_after_reload.
- (ia64_reorg): Test original variables.
- * config/picochip/picochip.c (picochip_flag_schedule_insns2): Drop.
- (picochip_flag_var_tracking): Drop.
- (TARGET_DELAY_SCHED2, TARGET_DELAY_VARTRACK): Define.
- (picochip_option_override): Don't save and override
- flag_schedule_insns_after_reload.
- (picochip_asm_file_start): Ditto flag_var_tracking.
- (picochip_reorg): Test original variables.
- * config/spu/spu.c (spu_flag_var_tracking): Drop.
- (TARGET_DELAY_VARTRACK): Define.
- (spu_var_tracking): New.
- (spu_machine_dependent_reorg): Call it.
- (asm_file_start): Don't save and override flag_var_tracking.
-
-git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174637 138bc75d-0d04-0410-961f-82ee72b054a4
-
-index a6f2a38..60cd09e 100644
---- a/gcc/config/bfin/bfin.c
-+++ b/gcc/config/bfin/bfin.c
-@@ -88,14 +88,6 @@ static int ret_regs[] = FUNCTION_RETURN_REGISTERS;
- /* Nonzero if -mshared-library-id was given. */
- static int bfin_lib_id_given;
-
--/* Nonzero if -fschedule-insns2 was given. We override it and
-- call the scheduler ourselves during reorg. */
--static int bfin_flag_schedule_insns2;
--
--/* Determines whether we run variable tracking in machine dependent
-- reorganization. */
--static int bfin_flag_var_tracking;
--
- /* -mcpu support */
- bfin_cpu_t bfin_cpu_type = BFIN_CPU_UNKNOWN;
-
-@@ -356,13 +348,6 @@ output_file_start (void)
- FILE *file = asm_out_file;
- int i;
-
-- /* Variable tracking should be run after all optimizations which change order
-- of insns. It also needs a valid CFG. This can't be done in
-- bfin_option_override, because flag_var_tracking is finalized after
-- that. */
-- bfin_flag_var_tracking = flag_var_tracking;
-- flag_var_tracking = 0;
--
- fprintf (file, ".file \"%s\";\n", input_filename);
-
- for (i = 0; arg_regs[i] >= 0; i++)
-@@ -2725,11 +2710,6 @@ bfin_option_override (void)
-
- flag_schedule_insns = 0;
-
-- /* Passes after sched2 can break the helpful TImode annotations that
-- haifa-sched puts on every insn. Just do scheduling in reorg. */
-- bfin_flag_schedule_insns2 = flag_schedule_insns_after_reload;
-- flag_schedule_insns_after_reload = 0;
--
- init_machine_status = bfin_init_machine_status;
- }
-
-@@ -5502,7 +5482,7 @@ bfin_reorg (void)
- with old MDEP_REORGS that are not CFG based. Recompute it now. */
- compute_bb_for_insn ();
-
-- if (bfin_flag_schedule_insns2)
-+ if (flag_schedule_insns_after_reload)
- {
- splitting_for_sched = 1;
- split_all_insns ();
-@@ -5531,7 +5511,7 @@ bfin_reorg (void)
-
- workaround_speculation ();
-
-- if (bfin_flag_var_tracking)
-+ if (flag_var_tracking)
- {
- timevar_push (TV_VAR_TRACKING);
- variable_tracking_main ();
-@@ -6702,4 +6682,14 @@ bfin_conditional_register_usage (void)
- #undef TARGET_TRAMPOLINE_INIT
- #define TARGET_TRAMPOLINE_INIT bfin_trampoline_init
-
-+/* Passes after sched2 can break the helpful TImode annotations that
-+ haifa-sched puts on every insn. Just do scheduling in reorg. */
-+#undef TARGET_DELAY_SCHED2
-+#define TARGET_DELAY_SCHED2 true
-+
-+/* Variable tracking should be run after all optimizations which
-+ change order of insns. It also needs a valid CFG. */
-+#undef TARGET_DELAY_VARTRACK
-+#define TARGET_DELAY_VARTRACK true
-+
- struct gcc_target targetm = TARGET_INITIALIZER;
-diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
-index 1d3f8b1..71de697 100644
---- a/gcc/config/ia64/ia64.c
-+++ b/gcc/config/ia64/ia64.c
-@@ -105,14 +105,6 @@ static const char * const ia64_output_reg_names[8] =
- /* Which cpu are we scheduling for. */
- enum processor_type ia64_tune = PROCESSOR_ITANIUM2;
-
--/* Determines whether we run our final scheduling pass or not. We always
-- 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. */
-
-@@ -634,6 +626,14 @@ static const struct default_options ia64_option_optimization_table[] =
- #undef TARGET_PREFERRED_RELOAD_CLASS
- #define TARGET_PREFERRED_RELOAD_CLASS ia64_preferred_reload_class
-
-+#undef TARGET_DELAY_SCHED2
-+#define TARGET_DELAY_SCHED2 true
-+
-+/* Variable tracking should be run after all optimizations which
-+ change order of insns. It also needs a valid CFG. */
-+#undef TARGET_DELAY_VARTRACK
-+#define TARGET_DELAY_VARTRACK true
-+
- struct gcc_target targetm = TARGET_INITIALIZER;
-
- typedef enum
-@@ -2389,13 +2389,6 @@ ia64_expand_atomic_op (enum rtx_code code, rtx mem, rtx val,
- static void
- ia64_file_start (void)
- {
-- /* Variable tracking should be run after all optimizations which change order
-- of insns. It also needs a valid CFG. This can't be done in
-- ia64_option_override, because flag_var_tracking is finalized after
-- that. */
-- ia64_flag_var_tracking = flag_var_tracking;
-- flag_var_tracking = 0;
--
- default_file_start ();
- emit_safe_across_calls ();
- }
-@@ -5733,9 +5726,6 @@ ia64_option_override (void)
- static void
- ia64_override_options_after_change (void)
- {
-- ia64_flag_schedule_insns2 = flag_schedule_insns_after_reload;
-- flag_schedule_insns_after_reload = 0;
--
- if (optimize >= 3
- && !global_options_set.x_flag_selective_scheduling
- && !global_options_set.x_flag_selective_scheduling2)
-@@ -9407,7 +9397,7 @@ ia64_reorg (void)
- if (optimize == 0)
- split_all_insns ();
-
-- if (optimize && ia64_flag_schedule_insns2
-+ if (optimize && flag_schedule_insns_after_reload
- && dbg_cnt (ia64_sched2))
- {
- timevar_push (TV_SCHED2);
-@@ -9537,7 +9527,7 @@ ia64_reorg (void)
-
- emit_predicate_relation_info ();
-
-- if (ia64_flag_var_tracking)
-+ if (flag_var_tracking)
- {
- timevar_push (TV_VAR_TRACKING);
- variable_tracking_main ();
-diff --git a/gcc/config/picochip/picochip.c b/gcc/config/picochip/picochip.c
-index 1ca95b4..dd4e34e 100644
---- a/gcc/config/picochip/picochip.c
-+++ b/gcc/config/picochip/picochip.c
-@@ -149,13 +149,6 @@ const char *picochip_regnames[] = REGISTER_NAMES;
-
- /* Target scheduling information. */
-
--/* Determine whether we run our final scheduling pass or not. We always
-- avoid the normal second scheduling pass. */
--int picochip_flag_schedule_insns2;
--
--/* Check if variable tracking needs to be run. */
--int picochip_flag_var_tracking;
--
- /* This flag indicates whether the next instruction to be output is a
- VLIW continuation instruction. It is used to communicate between
- final_prescan_insn and asm_output_opcode. */
-@@ -343,6 +336,17 @@ static const struct default_options picochip_option_optimization_table[] =
- #undef TARGET_EXCEPT_UNWIND_INFO
- #define TARGET_EXCEPT_UNWIND_INFO sjlj_except_unwind_info
-
-+/* The 2nd scheduling pass option is switched off, and a machine
-+ dependent reorganisation ensures that it is run later on, after the
-+ second jump optimisation. */
-+#undef TARGET_DELAY_SCHED2
-+#define TARGET_DELAY_SCHED2 true
-+
-+/* Variable tracking should be run after all optimizations which
-+ change order of insns. It also needs a valid CFG. */
-+#undef TARGET_DELAY_VARTRACK
-+#define TARGET_DELAY_VARTRACK true
-+
- struct gcc_target targetm = TARGET_INITIALIZER;
-
-
-@@ -356,10 +360,7 @@ picochip_return_in_memory(const_tree type, const_tree fntype ATTRIBUTE_UNUSED)
- return ((unsigned HOST_WIDE_INT) int_size_in_bytes (type) > 4);
- }
-
--/* Allow some options to be overriden. In particular, the 2nd
-- scheduling pass option is switched off, and a machine dependent
-- reorganisation ensures that it is run later on, after the second
-- jump optimisation. */
-+/* Allow some options to be overriden. */
-
- static void
- picochip_option_override (void)
-@@ -396,18 +397,16 @@ picochip_option_override (void)
- if (optimize >= 1)
- flag_section_anchors = 1;
-
-- /* Turn off the second scheduling pass, and move it to
-- picochip_reorg, to avoid having the second jump optimisation
-- trash the instruction modes (e.g., instructions are changed to
-- TImode to mark the beginning of cycles). Two types of DFA
-- scheduling are possible: space and speed. In both cases,
-- instructions are reordered to avoid stalls (e.g., memory loads
-- stall for one cycle). Speed scheduling will also enable VLIW
-- instruction packing. VLIW instructions use more code space, so
-- VLIW scheduling is disabled when scheduling for size. */
-- picochip_flag_schedule_insns2 = flag_schedule_insns_after_reload;
-- flag_schedule_insns_after_reload = 0;
-- if (picochip_flag_schedule_insns2)
-+ /* The second scheduling pass runs within picochip_reorg, to avoid
-+ having the second jump optimisation trash the instruction modes
-+ (e.g., instructions are changed to TImode to mark the beginning
-+ of cycles). Two types of DFA scheduling are possible: space and
-+ speed. In both cases, instructions are reordered to avoid stalls
-+ (e.g., memory loads stall for one cycle). Speed scheduling will
-+ also enable VLIW instruction packing. VLIW instructions use more
-+ code space, so VLIW scheduling is disabled when scheduling for
-+ size. */
-+ if (flag_schedule_insns_after_reload)
- {
- if (optimize_size)
- picochip_schedule_type = DFA_TYPE_SPACE;
-@@ -461,7 +460,6 @@ picochip_option_override (void)
- error ("invalid mul type specified (%s) - expected mac, mul or none",
- picochip_mul_type_string);
- }
--
- }
-
-
-@@ -1813,13 +1811,6 @@ picochip_asm_file_start (void)
- fprintf (asm_out_file, "// Has multiply: Yes (Mac unit)\n");
- else
- fprintf (asm_out_file, "// Has multiply: No\n");
--
-- /* Variable tracking should be run after all optimizations which change order
-- of insns. It also needs a valid CFG. This can't be done in
-- picochip_option_override, because flag_var_tracking is finalized after
-- that. */
-- picochip_flag_var_tracking = flag_var_tracking;
-- flag_var_tracking = 0;
- }
-
- /* Output the end of an ASM file. */
-@@ -3369,15 +3360,16 @@ picochip_reorg (void)
- delete_insn (prologue_end_note);
- }
- }
-- if (picochip_flag_var_tracking)
-- {
-- timevar_push (TV_VAR_TRACKING);
-- variable_tracking_main ();
-- /* We also have to deal with variable tracking notes in the middle
-- of VLIW packets. */
-- reorder_var_tracking_notes();
-- timevar_pop (TV_VAR_TRACKING);
-- }
-+
-+ if (flag_var_tracking)
-+ {
-+ timevar_push (TV_VAR_TRACKING);
-+ variable_tracking_main ();
-+ /* We also have to deal with variable tracking notes in the
-+ middle of VLIW packets. */
-+ reorder_var_tracking_notes();
-+ timevar_pop (TV_VAR_TRACKING);
-+ }
- }
-
- /* Return the ALU character identifier for the current
-diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c
-index d80d86d..5c30a6e 100644
---- a/gcc/config/spu/spu.c
-+++ b/gcc/config/spu/spu.c
-@@ -245,10 +245,6 @@ int spu_tune;
- inserted in pairs, so we round down. */
- int spu_hint_dist = (8*4) - (2*4);
-
--/* Determines whether we run variable tracking in machine dependent
-- reorganization. */
--static int spu_flag_var_tracking;
--
- enum spu_immediate {
- SPU_NONE,
- SPU_IL,
-@@ -495,6 +491,11 @@ static const struct attribute_spec spu_attribute_table[] =
- #undef TARGET_REF_MAY_ALIAS_ERRNO
- #define TARGET_REF_MAY_ALIAS_ERRNO spu_ref_may_alias_errno
-
-+/* Variable tracking should be run after all optimizations which
-+ change order of insns. It also needs a valid CFG. */
-+#undef TARGET_DELAY_VARTRACK
-+#define TARGET_DELAY_VARTRACK true
-+
- struct gcc_target targetm = TARGET_INITIALIZER;
-
- static void
-@@ -2686,6 +2687,19 @@ insert_hbrp (void)
-
- static int in_spu_reorg;
-
-+static void
-+spu_var_tracking (void)
-+{
-+ if (flag_var_tracking)
-+ {
-+ df_analyze ();
-+ timevar_push (TV_VAR_TRACKING);
-+ variable_tracking_main ();
-+ timevar_pop (TV_VAR_TRACKING);
-+ df_finish_pass (false);
-+ }
-+}
-+
- /* Insert branch hints. There are no branch optimizations after this
- pass, so it's safe to set our branch hints now. */
- static void
-@@ -2705,6 +2719,7 @@ spu_machine_dependent_reorg (void)
- function might have hinted a call or return. */
- insert_hbrp ();
- pad_bb ();
-+ spu_var_tracking ();
- return;
- }
-
-@@ -2911,14 +2926,7 @@ spu_machine_dependent_reorg (void)
- XVECEXP (unspec, 0, 0) = plus_constant (label_ref, offset);
- }
-
-- if (spu_flag_var_tracking)
-- {
-- df_analyze ();
-- timevar_push (TV_VAR_TRACKING);
-- variable_tracking_main ();
-- timevar_pop (TV_VAR_TRACKING);
-- df_finish_pass (false);
-- }
-+ spu_var_tracking ();
-
- free_bb_for_insn ();
-
-@@ -7049,19 +7057,6 @@ spu_libgcc_shift_count_mode (void)
- static void
- asm_file_start (void)
- {
-- /* Variable tracking should be run after all optimizations which
-- change order of insns. It also needs a valid CFG. Therefore,
-- *if* we make nontrivial changes in machine-dependent reorg,
-- run variable tracking after those. However, if we do not run
-- our machine-dependent reorg pass, we must still run the normal
-- variable tracking pass (or else we will ICE in final since
-- debug insns have not been removed). */
-- if (TARGET_BRANCH_HINTS && optimize)
-- {
-- spu_flag_var_tracking = flag_var_tracking;
-- flag_var_tracking = 0;
-- }
--
- default_file_start ();
- }
-
-diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
-index 85e1d88..f7c0cce 100644
---- a/gcc/doc/tm.texi
-+++ b/gcc/doc/tm.texi
-@@ -9430,6 +9430,14 @@ tables, and hence is desirable if it works.
- True if the @code{.debug_pubtypes} and @code{.debug_pubnames} sections should be emitted. These sections are not used on most platforms, and in particular GDB does not use them.
- @end deftypevr
-
-+@deftypevr {Target Hook} bool TARGET_DELAY_SCHED2
-+True if sched2 is not to be run at its normal place. This usually means it will be run as part of machine-specific reorg.
-+@end deftypevr
-+
-+@deftypevr {Target Hook} bool TARGET_DELAY_VARTRACK
-+True if vartrack is not to be run at its normal place. This usually means it will be run as part of machine-specific reorg.
-+@end deftypevr
-+
- @defmac ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2})
- A C statement to issue assembly directives that create a difference
- @var{lab1} minus @var{lab2}, using an integer of the given @var{size}.
-diff --git a/gcc/doc/tm.texi.in b/gcc/doc/tm.texi.in
-index a799bc4..40acf65 100644
---- a/gcc/doc/tm.texi.in
-+++ b/gcc/doc/tm.texi.in
-@@ -9388,6 +9388,10 @@ tables, and hence is desirable if it works.
-
- @hook TARGET_WANT_DEBUG_PUB_SECTIONS
-
-+@hook TARGET_DELAY_SCHED2
-+
-+@hook TARGET_DELAY_VARTRACK
-+
- @defmac ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2})
- A C statement to issue assembly directives that create a difference
- @var{lab1} minus @var{lab2}, using an integer of the given @var{size}.
-diff --git a/gcc/sched-rgn.c b/gcc/sched-rgn.c
-index 6c4fd46..e6400b6 100644
---- a/gcc/sched-rgn.c
-+++ b/gcc/sched-rgn.c
-@@ -3518,7 +3518,7 @@ gate_handle_sched2 (void)
- {
- #ifdef INSN_SCHEDULING
- return optimize > 0 && flag_schedule_insns_after_reload
-- && dbg_cnt (sched2_func);
-+ && !targetm.delay_sched2 && dbg_cnt (sched2_func);
- #else
- return 0;
- #endif
-diff --git a/gcc/target.def b/gcc/target.def
-index 57134cb..ecacd44 100644
---- a/gcc/target.def
-+++ b/gcc/target.def
-@@ -2723,6 +2723,16 @@ DEFHOOKPOD
- in particular GDB does not use them.",
- bool, false)
-
-+DEFHOOKPOD
-+(delay_sched2, "True if sched2 is not to be run at its normal place. \
-+This usually means it will be run as part of machine-specific reorg.",
-+bool, false)
-+
-+DEFHOOKPOD
-+(delay_vartrack, "True if vartrack is not to be run at its normal place. \
-+This usually means it will be run as part of machine-specific reorg.",
-+bool, false)
-+
- /* Leave the boolean fields at the end. */
-
- /* Empty macro arguments are undefined in C90, so use an empty macro. */
-diff --git a/gcc/var-tracking.c b/gcc/var-tracking.c
-index b7ba0b9..ab141c1 100644
---- a/gcc/var-tracking.c
-+++ b/gcc/var-tracking.c
-@@ -8615,7 +8615,7 @@ variable_tracking_main (void)
- static bool
- gate_handle_var_tracking (void)
- {
-- return (flag_var_tracking);
-+ return (flag_var_tracking && !targetm.delay_vartrack);
- }
-
-
---
-1.7.0.4
-