What registers are protected by "cc" in a clobberlist when using inline assembly?

Jeffrey Walton noloader@gmail.com
Tue Feb 4 21:16:00 GMT 2014


I'm having trouble locating information on the register(s) protected
by adding "cc" to a clobber list.

Can anyone confirm (1) FLAGS/EFLAGS on x86/c64, and (2) CPSR on ARM?

The reason I ask is I came across some code that sets the Carry Flag
(CF) on success, but "cc" was not specified in a clobber list:

    char rc;
    unsigned int val;

    __asm__ volatile(
        "rdrand %0 ; setc %1"
        : "=r" (val), "=qm" (rc)
    );

    // 1 = success, 0 = underflow
    if(rc) {
        // use val
        ...
    }

So I'm trying to understand why "cc" was not specified.

Thanks in advance. (And my apologies if this should have gone to a
Binutils list).



More information about the Gcc-help mailing list