aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Oliva <aoliva@redhat.com>2010-06-14 19:18:04 +0000
committerAlexandre Oliva <aoliva@gcc.gnu.org>2010-06-14 19:18:04 +0000
commitc11b0b3b811ccc0a7321843f5d6af42c44af6eea (patch)
treefff5fede01f524fbf10d82bdd032fc95b619e852
parent2465dcc257488294138948de82a734c31b504ecf (diff)
downloadgcc-c11b0b3b811ccc0a7321843f5d6af42c44af6eea.zip
gcc-c11b0b3b811ccc0a7321843f5d6af42c44af6eea.tar.gz
gcc-c11b0b3b811ccc0a7321843f5d6af42c44af6eea.tar.bz2
re PR debug/43656 ("-fcompare-debug failure" with "-O2 -fschedule-insns -fsched-pressure -funroll-loops -fgraphite-identity")
PR debug/43656 * haifa-sched.c (setup_insn_reg_pressure_info, update_register_pressure): Reject debug insns. (ready_sort): Don't setup reg pressure for debug insns. (schedule_insn): Don't update reg pressure for debug insns. From-SVN: r160761
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/haifa-sched.c9
2 files changed, 15 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c4f9c04..ea90541 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2010-06-14 Alexandre Oliva <aoliva@redhat.com>
+
+ PR debug/43656
+ * haifa-sched.c (setup_insn_reg_pressure_info,
+ update_register_pressure): Reject debug insns.
+ (ready_sort): Don't setup reg pressure for debug insns.
+ (schedule_insn): Don't update reg pressure for debug insns.
+
2010-06-14 Richard Guenther <rguenther@suse.de>
* lto-streamer.c (cached_bp): Remove.
diff --git a/gcc/haifa-sched.c b/gcc/haifa-sched.c
index 2effed2..8d7149f 100644
--- a/gcc/haifa-sched.c
+++ b/gcc/haifa-sched.c
@@ -1124,6 +1124,8 @@ setup_insn_reg_pressure_info (rtx insn)
struct reg_use_data *use;
static int death[N_REG_CLASSES];
+ gcc_checking_assert (!DEBUG_INSN_P (insn));
+
excess_cost_change = 0;
for (i = 0; i < ira_reg_class_cover_size; i++)
death[ira_reg_class_cover[i]] = 0;
@@ -1500,7 +1502,8 @@ ready_sort (struct ready_list *ready)
if (sched_pressure_p)
{
for (i = 0; i < ready->n_ready; i++)
- setup_insn_reg_pressure_info (first[i]);
+ if (!DEBUG_INSN_P (first[i]))
+ setup_insn_reg_pressure_info (first[i]);
}
SCHED_SORT (first, ready->n_ready);
}
@@ -1564,6 +1567,8 @@ update_register_pressure (rtx insn)
struct reg_use_data *use;
struct reg_set_data *set;
+ gcc_checking_assert (!DEBUG_INSN_P (insn));
+
for (use = INSN_REG_USE_LIST (insn); use != NULL; use = use->next_insn_use)
if (dying_use_p (use) && bitmap_bit_p (curr_reg_live, use->regno))
mark_regno_birth_or_death (use->regno, false);
@@ -1684,7 +1689,7 @@ schedule_insn (rtx insn)
fputc ('\n', sched_dump);
}
- if (sched_pressure_p)
+ if (sched_pressure_p && !DEBUG_INSN_P (insn))
update_reg_and_insn_max_reg_pressure (insn);
/* Scheduling instruction should have all its dependencies resolved and