- if (regmask != NULL && ops[j].operand[0].type == OPT_REG)
- *regmask |= 1 << ops[j].operand[0].reg;
+ k = check_for_stp(j + 1, i);
+ if (k != -1) {
+ // push ecx; fstp dword ptr [esp]
+ ret = parse_stack_esp_offset(&ops[k],
+ ops[k].operand[0].name, &offset);
+ if (ret == 0 && offset == 0) {
+ if (!pp->arg[arg].type.is_float)
+ ferr(&ops[i], "arg %d should be float\n", arg + 1);
+ mark_float_arg(&ops[k], pp, arg, regmask_ffca);
+ }
+ }
+
+ if (pp->arg[arg].datap == NULL) {
+ pp->arg[arg].datap = &ops[j];
+ if (regmask != NULL && ops[j].operand[0].type == OPT_REG)
+ *regmask |= 1 << ops[j].operand[0].reg;
+ }