+2018-09-20 Maciej W. Rozycki <macro@linux-mips.org>
+
+ * config/tc-s12z.c (lex_opr): Use an auxiliary unsigned variable
+ in encoding a constant operand.
+
2018-09-20 Maciej W. Rozycki <macro@linux-mips.org>
* config/tc-ppc.c (ppc_dwsect): Use `valueT' rather than
buffer[3] = 0;
if (exp->X_op == O_constant)
{
- if (exp->X_add_number < (0x1U << 14))
+ valueT value = exp->X_add_number;
+
+ if (value < (0x1U << 14))
{
*xb = 0x00;
*n_bytes = 2;
- *xb |= exp->X_add_number >> 8;
- buffer[1] = exp->X_add_number;
+ *xb |= value >> 8;
+ buffer[1] = value;
}
- else if (exp->X_add_number < (0x1U << 19))
+ else if (value < (0x1U << 19))
{
*xb = 0xf8;
- if (exp->X_add_number & (0x1U << 17))
+ if (value & (0x1U << 17))
*xb |= 0x04;
- if (exp->X_add_number & (0x1U << 16))
+ if (value & (0x1U << 16))
*xb |= 0x01;
*n_bytes = 3;
- buffer[1] = exp->X_add_number >> 8;
- buffer[2] = exp->X_add_number;
+ buffer[1] = value >> 8;
+ buffer[2] = value;
}
else
{
*xb = 0xfa;
*n_bytes = 4;
- buffer[1] = exp->X_add_number >> 16;
- buffer[2] = exp->X_add_number >> 8;
- buffer[3] = exp->X_add_number;
+ buffer[1] = value >> 16;
+ buffer[2] = value >> 8;
+ buffer[3] = value;
}
}
return 1;