https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87984

--- Comment #9 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
Actually, no long division needed, broken with a plain move as well:

__attribute__((weak))
int f(void)
{
    int o=0, i;
    for (i=0; i<3; i++) {
        register int a asm("eax");
        a = 1;
        asm("add %1, %0" : "+r"(o) : "r"(a));
        asm("xor %%eax, %%eax" ::: "eax");
    }
    return o;
}

int main()
{
    if (f() != 3)
        __builtin_abort();
    return 0;
}

Reply via email to