diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 1588c6f00d7211ff6a996e1509010bf8a6cbf69b..f525643c9e9c659b24a7dbea4d54817897448dfb 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2011-02-03  Nick Clifton  <nickc@redhat.com>
+
+	* config/rx/predicates.md (rx_zs_comparison_operator): Remove
+	lt and ge.
+	* config/rx/rx.md (abssi2_flags): Use CC_ZSmode rather than
+	CC_ZSOmode.
+	* config/rx/rx.c (rx_print_operand): Use "lt" and "ge" suffixes
+	instead of "n" and "pz".
+	(flags_from_code): LT and GE tests need CC_FLAG_O as well as
+	CC_FLAG_S.
+
 2011-02-03  Jakub Jelinek  <jakub@redhat.com>
 
 	PR target/47312
diff --git a/gcc/config/rx/predicates.md b/gcc/config/rx/predicates.md
index 77b3353ac3e338ced850c4d53b7e06986a364b51..82cac42dadfbc57ea26b69d938c758d4ca9bf301 100644
--- a/gcc/config/rx/predicates.md
+++ b/gcc/config/rx/predicates.md
@@ -284,7 +284,7 @@
 )
 
 (define_predicate "rx_zs_comparison_operator"
-  (match_code "eq,ne,lt,ge")
+  (match_code "eq,ne")
 )
 
 ;; GT and LE omitted due to operand swap required.
diff --git a/gcc/config/rx/rx.c b/gcc/config/rx/rx.c
index 81991067b838ca9ff547cb1c003632a64ca7f5b5..839523fc873eff750b983224a93826ab62bdc043 100644
--- a/gcc/config/rx/rx.c
+++ b/gcc/config/rx/rx.c
@@ -450,10 +450,10 @@ rx_print_operand (FILE * file, rtx op, int letter)
 	    switch (code)
 	      {
 	      case LT:
-		ret = "n";
+		ret = "lt";
 		break;
 	      case GE:
-		ret = "pz";
+		ret = "ge";
 		break;
 	      case GT:
 		ret = "gt";
@@ -2625,7 +2625,7 @@ flags_from_code (enum rtx_code code)
     {
     case LT:
     case GE:
-      return CC_FLAG_S;
+      return CC_FLAG_S | CC_FLAG_O;
     case GT:
     case LE:
       return CC_FLAG_S | CC_FLAG_O | CC_FLAG_Z;
diff --git a/gcc/config/rx/rx.md b/gcc/config/rx/rx.md
index 99b46b5b2e28116c85f58abc0ba079248799a718..7629a886e5c709d990d9eae85ede21a0a369a59c 100644
--- a/gcc/config/rx/rx.md
+++ b/gcc/config/rx/rx.md
@@ -797,7 +797,10 @@
    (set (reg CC_REG)
 	(compare (abs:SI (match_dup 1))
 		 (const_int 0)))]
-  "reload_completed && rx_match_ccmode (insn, CC_ZSOmode)"
+  ;; Note - although the ABS instruction does set the O bit in the processor
+  ;; status word, it does not do so in a way that is comparable with the CMP
+  ;; instruction.  Hence we use CC_ZSmode rather than CC_ZSOmode.
+  "reload_completed && rx_match_ccmode (insn, CC_ZSmode)"
   "@
   abs\t%0
   abs\t%1, %0"