start-sanitize-v850
+Thu Jul 31 15:13:43 1997  Jeffrey A Law  (law@cygnus.com)
+
+       * config/tc-v850.c (md_assemble): Sign extend constants value
+       for hi and hi0 expressions.
+       (v850_insert_operand): Enable range checking for generic 16bit
+       operands.
+
 Tue Jul 29 14:20:43 1997  Jeffrey A Law  (law@cygnus.com)
 
        * config/tc-v850.c (md_assemble): Turn on fx_no_overflow for
 
                      }
 
                    case BFD_RELOC_HI16:
-                     ex.X_add_number = ((ex.X_add_number >> 16) & 0xffff);
-                     break;
+                     {
+                       /* Truncate, then sign extend the value.  */
+                       int temp = (ex.X_add_number >> 16) & 0xffff;
+
+                       /* XXX Assumes 32bit ints! */
+                       temp = (temp << 16) >> 16;
+                       ex.X_add_number = temp;
+                       break;
+                     }
 
                    case BFD_RELOC_HI16_S:
-                     ex.X_add_number = ((ex.X_add_number >> 16) & 0xffff)
-                       + ((ex.X_add_number >> 15) & 1);
-                     break;
+                     {
+                       /* Truncate, then sign extend the value.  */
+                       int temp = (ex.X_add_number >> 16) & 0xffff;
+
+                       temp += (ex.X_add_number >> 15) & 1;
+
+                       /* XXX Assumes 32bit ints! */
+                       temp = (temp << 16) >> 16;
+                       ex.X_add_number = temp;
+                       break;
+                     }
 
                    default:
                      break;
      char *file;
      unsigned int line;
 {
-  if (operand->bits != 16)
+  if (operand->bits != 32)
     {
       long min, max;
       offsetT test;