[cfe-users] Does Integrated Assembler need Output Operands listed as Clobbered?
Jeffrey Walton via cfe-users
cfe-users at lists.llvm.org
Fri Jan 29 11:47:36 PST 2016
We have a user reporting a crash under Apple's Clang 7.0.2. The code is:
__asm__ volatile(
#if BOOL_X64 || BOOL_X32
".byte 0x48, 0x0f, 0xc7, 0xf0;\n" // rdrand rax
#else
".byte 0x0f, 0xc7, 0xf0;\n" // rdrand eax
#endif
"setc %1; "
: "=a" (val), "=qm" (rc)
:
: "cc"
);
The byte instructions are the op-codes for 'rdrand' instruction. Apple
Clang was late to provide them, so we have an implementation
regardless of downlevel compilers. They are also available for
downlevel GCC compilers in a hosted environment where the iron
provides a modern CPU.
The same user reports adding EAX or RAX as a clobber clears the issue.
Does Clang's Integrated Assembler need Output Operands listed as Clobbered?
Thanks in advance.
More information about the cfe-users
mailing list