x86/x64: Don't use undefined MUL/IMUL zero flag.

Reported by VrIgHtEr. #1376
This commit is contained in:
Mike Pall
2025-07-24 15:38:45 +02:00
parent e3fa3c48d8
commit c92d0cb192

View File

@@ -1841,7 +1841,8 @@ static void asm_intarith(ASMState *as, IRIns *ir, x86Arith xa)
RegSet allow = RSET_GPR;
Reg dest, right;
int32_t k = 0;
if (as->flagmcp == as->mcp) { /* Drop test r,r instruction. */
if (as->flagmcp == as->mcp && xa != XOg_X_IMUL) {
/* Drop test r,r instruction. */
MCode *p = as->mcp + ((LJ_64 && *as->mcp < XI_TESTb) ? 3 : 2);
MCode *q = p[0] == 0x0f ? p+1 : p;
if ((*q & 15) < 14) {