This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


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).


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]