aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Earnshaw <rearnsha@arm.com>2004-08-29 21:07:37 +0000
committerRichard Earnshaw <rearnsha@gcc.gnu.org>2004-08-29 21:07:37 +0000
commit6903ecd4918625b0d1117747d1500079f4fb9a12 (patch)
treeb7474d4fdb7d9ed9d0210dacaa8e9f133f277f5d /gcc
parentea9bfbf28f9d011716e6d903c063f851a716b9dd (diff)
downloadgcc-6903ecd4918625b0d1117747d1500079f4fb9a12.zip
gcc-6903ecd4918625b0d1117747d1500079f4fb9a12.tar.gz
gcc-6903ecd4918625b0d1117747d1500079f4fb9a12.tar.bz2
sched-deps.c (get_condition): Rewrite using jump support functions.
* sched-deps.c (get_condition): Rewrite using jump support functions. Use reversed_comparison_code. (conditions_mutex_p): Use reversed_comparison_code. From-SVN: r86736
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/sched-deps.c30
2 files changed, 22 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index aeb65ca..7f08697 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-08-29 Richard Earnshaw <rearnsha@arm.com>
+
+ * sched-deps.c (get_condition): Rewrite using jump support functions.
+ Use reversed_comparison_code.
+ (conditions_mutex_p): Use reversed_comparison_code.
+
2004-08-29 Richard Sandiford <rsandifo@redhat.com>
* config/mips/mips.c (override_options): Disable hot/cold partitioning
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index 7b8496c..18f3d39 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -145,23 +145,25 @@ get_condition (rtx insn)
if (pat == 0)
return 0;
+
if (GET_CODE (pat) == COND_EXEC)
return COND_EXEC_TEST (pat);
- if (!JUMP_P (insn))
- return 0;
- if (GET_CODE (pat) != SET || SET_SRC (pat) != pc_rtx)
- return 0;
- if (GET_CODE (SET_DEST (pat)) != IF_THEN_ELSE)
+
+ if (!any_condjump_p (insn) || !onlyjump_p (insn))
return 0;
- pat = SET_DEST (pat);
- cond = XEXP (pat, 0);
- if (GET_CODE (XEXP (cond, 1)) == LABEL_REF
- && XEXP (cond, 2) == pc_rtx)
+
+ cond = XEXP (SET_SRC (pc_set (insn)), 0);
+ if (XEXP (cond, 2) == pc_rtx)
return cond;
- else if (GET_CODE (XEXP (cond, 2)) == LABEL_REF
- && XEXP (cond, 1) == pc_rtx)
- return gen_rtx_fmt_ee (reverse_condition (GET_CODE (cond)), GET_MODE (cond),
- XEXP (cond, 0), XEXP (cond, 1));
+ else if (XEXP (cond, 1) == pc_rtx)
+ {
+ enum rtx_code revcode = reversed_comparison_code (cond, insn);
+
+ if (revcode == UNKNOWN)
+ return 0;
+ return gen_rtx_fmt_ee (revcode, GET_MODE (cond), XEXP (cond, 0),
+ XEXP (cond, 1));
+ }
else
return 0;
}
@@ -173,7 +175,7 @@ conditions_mutex_p (rtx cond1, rtx cond2)
{
if (COMPARISON_P (cond1)
&& COMPARISON_P (cond2)
- && GET_CODE (cond1) == reverse_condition (GET_CODE (cond2))
+ && GET_CODE (cond1) == reversed_comparison_code (cond2, NULL)
&& XEXP (cond1, 0) == XEXP (cond2, 0)
&& XEXP (cond1, 1) == XEXP (cond2, 1))
return 1;