2021-01-08 Nick Clifton <nickc@redhat.com>
+ PR 27129
+ * aarch64-dis.c (determine_disassembling_preference): Move call to
+ aarch64_match_operands_constraint outside of the assertion.
+ * aarch64-asm.c (aarch64_ins_limm_1): Remove call to assert.
+ Replace with a return of FALSE.
+
PR 27139
* aarch64-opc.c (aarch64_sys_regs): Treat id_aa64mmfr2_el1 as a
core system register.
const aarch64_inst *inst, bfd_boolean invert_p,
aarch64_operand_error *errors ATTRIBUTE_UNUSED)
{
+ bfd_boolean res;
aarch64_insn value;
uint64_t imm = info->imm.value;
int esize = aarch64_get_qualifier_esize (inst->operands[0].qualifier);
if (invert_p)
imm = ~imm;
- /* The constraint check should have guaranteed this wouldn't happen. */
- assert (aarch64_logical_immediate_p (imm, esize, &value));
-
- insert_fields (code, value, 0, 3, self->fields[2], self->fields[1],
- self->fields[0]);
- return TRUE;
+ /* The constraint check should guarantee that this will work. */
+ res = aarch64_logical_immediate_p (imm, esize, &value);
+ if (res)
+ insert_fields (code, value, 0, 3, self->fields[2], self->fields[1],
+ self->fields[0]);
+ return res;
}
/* Insert logical/bitmask immediate for e.g. the last operand in
successfully converted to the form of ALIAS. */
if (convert_to_alias (©, alias) == 1)
{
+ int res;
aarch64_replace_opcode (©, alias);
- assert (aarch64_match_operands_constraint (©, NULL));
+ res = aarch64_match_operands_constraint (©, NULL);
+ assert (res == 1);
DEBUG_TRACE ("succeed with %s via conversion", alias->name);
memcpy (inst, ©, sizeof (aarch64_inst));
return;