summaryrefslogtreecommitdiff
path: root/gcc/sched.c
diff options
context:
space:
mode:
authorwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1993-01-20 01:13:48 +0000
committerwilson <wilson@138bc75d-0d04-0410-961f-82ee72b054a4>1993-01-20 01:13:48 +0000
commitf2e02181c0f0ca3c98d0ecb6ddc4013195a0eaca (patch)
treeff7968ec9bda75028a592175e30e5d7969d32df4 /gcc/sched.c
parentcc22288d34842540e89b4e3d0e2257fdb4538c2d (diff)
downloadgcc-f2e02181c0f0ca3c98d0ecb6ddc4013195a0eaca.tar.gz
(sched_analyze_1, sched_analyze_2): Ifdef out code added
for handling psuedo register equivalents that was added Dec 31 1992. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@3290 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched.c')
-rw-r--r--gcc/sched.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/gcc/sched.c b/gcc/sched.c
index 7df147ac42b..5483fc8375a 100644
--- a/gcc/sched.c
+++ b/gcc/sched.c
@@ -1610,6 +1610,16 @@ sched_analyze_1 (x, insn)
add_dependence (insn, reg_last_sets[regno], REG_DEP_OUTPUT);
reg_last_sets[regno] = insn;
+#if 0
+ /* ??? This code has two serious problems:
+ 1) It can cause an infinite loop if regno is mentioned in
+ its reg_known_value.
+ 2) It can cause execution time exponential in the size of the
+ input if there are long chains of reg_known_values pointing
+ to other reg_known_values.
+ This code was specifically added to handle fake argument pointers.
+ It may need to be rewritten to just handle that specific case. */
+
/* Pseudos that are REG_EQUIV to something may be replaced
by that during reloading, so we can potentially read
quantities mentioned in those addresses. */
@@ -1617,6 +1627,7 @@ sched_analyze_1 (x, insn)
if (reg_known_value[regno] != regno_reg_rtx[regno])
if (GET_CODE (reg_known_value[regno]) == MEM)
sched_analyze_2 (XEXP (reg_known_value[regno], 0), insn);
+#endif
/* Don't let it cross a call after scheduling if it doesn't
already cross one. */
@@ -1770,11 +1781,22 @@ sched_analyze_2 (x, insn)
if (reg_last_sets[regno])
add_dependence (insn, reg_last_sets[regno], 0);
+#if 0
+ /* ??? This code has two serious problems:
+ 1) It can cause an infinite loop if regno is mentioned in
+ its reg_known_value.
+ 2) It can cause execution time exponential in the size of the
+ input if there are long chains of reg_known_values pointing
+ to other reg_known_values.
+ This code was specifically added to handle fake argument pointers.
+ It may need to be rewritten to just handle that specific case. */
+
/* Pseudos that are REG_EQUIV to something may be replaced
by that, so we depend on anything mentioned there too. */
if (! reload_completed)
if (reg_known_value[regno] != regno_reg_rtx[regno])
sched_analyze_2 (reg_known_value[regno], insn);
+#endif
/* If the register does not already cross any calls, then add this
insn to the sched_before_next_call list so that it will still