TCGArg b, bool b_const, TCGLabel *l)
{
intptr_t offset;
- bool need_cmp;
+ bool need_cmp = true;
- if (b_const && b == 0 && (c == TCG_COND_EQ || c == TCG_COND_NE)) {
- need_cmp = false;
- } else {
- need_cmp = true;
+ switch (c) {
+ case TCG_COND_EQ:
+ case TCG_COND_NE:
+ if (b_const && b == 0) {
+ need_cmp = false;
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (need_cmp) {
tcg_out_cmp(s, ext, c, a, b, b_const);
}
if (need_cmp) {
tcg_out_insn(s, 3202, B_C, c, offset);
- } else if (c == TCG_COND_EQ) {
- tcg_out_insn(s, 3201, CBZ, ext, a, offset);
} else {
- tcg_out_insn(s, 3201, CBNZ, ext, a, offset);
+ switch (c) {
+ case TCG_COND_EQ:
+ tcg_out_insn(s, 3201, CBZ, ext, a, offset);
+ break;
+ case TCG_COND_NE:
+ tcg_out_insn(s, 3201, CBNZ, ext, a, offset);
+ break;
+ default:
+ g_assert_not_reached();
+ }
}
}