title: Is FLAGS/EFLAGS part of "CC" (condition control) for clobber list?
body: <p>This is a follow up to <a href="https://stackoverflow.com/questions/21516852/what-is-qm-in-extended-assembler">What is &quot;=qm&quot; in extended assembler</a>.</p>
  
  <p>When using <code>RDRAND</code>, it sets (or unsets) the Carry Flag (<code>CF</code>):</p>
  
  <pre><code>char rc;
  unsigned int val;
  
  __asm__ volatile(
      "rdrand %0 ; setc %1"
      : "=r" (val), "=qm" (rc)
  );
  
  // 1 = success, 0 = underflow
  if(rc) {
      // use val
      ...
  }
  </code></pre>
  
  <p>Are the <code>FLAGS</code> and <code>EFLAGS</code> registers considered part of condition control so that it conveys the proper information to the compiler? Should the above be written as:</p>
  
  <pre><code>__asm__ volatile(
      "rdrand %0 ; setc %1"
      : "=r" (val), "=qm" (rc)
      :
      : "cc"
  );
  </code></pre>
  
  <p>Or is the use of <code>"cc"</code> spurious?</p>
  
  <p>I know its harmless to use if unneeded. From <a href="http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html" rel="nofollow noreferrer">Extended ASM</a>:</p>
  
  <blockquote>
    <p>If your assembler instruction can alter the condition code register,
    add ‘cc’ to the list of clobbered registers. GCC on some machines
    represents the condition codes as a specific hardware register; ‘cc’
    serves to name this register. On other machines, the condition code is
    handled differently, and specifying ‘cc’ has no effect. But it is
    valid no matter what the machine.</p>
  </blockquote>
  
  <p>If its spurious, what architectures does it apply to? (I presume ARM and the <code>CPSR</code> register, but I could be mistaken).</p>