OSDN Git Service

* cgen-ibld.in (insert_normal): Support CGEN_IFLD_SIGN_OPT.
authorgeoffk <geoffk>
Sun, 1 Jul 2001 02:48:45 +0000 (02:48 +0000)
committergeoffk <geoffk>
Sun, 1 Jul 2001 02:48:45 +0000 (02:48 +0000)
opcodes/ChangeLog
opcodes/cgen-ibld.in

index d7dc563..c6af91e 100644 (file)
@@ -1,3 +1,7 @@
+2001-06-30  Geoffrey Keating  <geoffk@redhat.com>
+
+       * cgen-ibld.in (insert_normal): Support CGEN_IFLD_SIGN_OPT.
+
 2001-06-28  Geoffrey Keating  <geoffk@redhat.com>
 
        * cgen-asm.c (cgen_parse_keyword): Allow any first character.
index ca2f1e5..0ca4200 100644 (file)
@@ -145,7 +145,22 @@ insert_normal (cd, value, attrs, word_offset, start, length, word_length,
     }
 
   /* Ensure VALUE will fit.  */
-  if (! CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED))
+  if (CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGN_OPT))
+    {
+      long minval = - (1L << (length - 1));
+      unsigned long maxval = mask;
+      
+      if ((value > 0 && (unsigned long) value > maxval)
+         || value < minval)
+       {
+         /* xgettext:c-format */
+         sprintf (errbuf,
+                  _("operand out of range (%ld not between %ld and %lu)"),
+                  value, minval, maxval);
+         return errbuf;
+       }
+    }
+  else if (! CGEN_BOOL_ATTR (attrs, CGEN_IFLD_SIGNED))
     {
       unsigned long maxval = mask;