diff -urN gcc-4.1.2/gcc/config/arm/predicates.md ../../../../old-tmp/work/arm-oabi-angstrom-linux/gcc-cross-4.1.2-backup/gcc-4.1.2/gcc/config/arm/predicates.md
--- gcc-4.1.2/gcc/config/arm/predicates.md	2005-09-11 17:38:02.000000000 +1000
+++ gcc-4.1.2/gcc/config/arm/predicates.md	2007-05-30 12:15:54.000000000 +1000
@@ -171,8 +171,14 @@
   (match_code "eq,ne"))
 
 ;; True for comparisons other than LTGT or UNEQ.
+(define_special_predicate "arm_comparison_operator"
+;  (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,unordered,ordered,unlt,unle,unge,ungt")) ;; original - no LTGT or UNEQ
+;  (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltgt,ltu,unordered,ordered,uneq,unlt,unle,unge,ungt")) ;; everything?
+;; True for comparisons other than GE, GEU, UNLT, unordered or ordered. - Cirrus Version - must include ge?
-(define_special_predicate "arm_comparison_operator"
+;(define_special_predicate "arm_comparison_operator"
-  (match_code "eq,ne,le,lt,ge,gt,geu,gtu,leu,ltu,unordered,ordered,unlt,unle,unge,ungt"))
+(match_code "eq,ne,le,lt,ge,geu,gt,gtu,leu,ltgt,ltu,uneq,unle,unge,ungt")) ;; bad codes removed?
+;(match_code "eq,ne,le,lt,gt,gtu,leu,ltgt,ltu,uneq,unle,unge,ungt")) ;; bad codes removed + ge / geu removed
+
 
 (define_special_predicate "minmax_operator"
   (and (match_code "smin,smax,umin,umax")
