On 06/02/2015 04:46 PM, H. Peter Anvin wrote:
For the x86 backend explicitly, is doing something like:
_Bool x;
asm("blah ; setc %0" : "=qm" (x));
... guaranteed to be safe for older versions of gcc?
I believe so, for the restricted set of conditions I expect you're asking.
In particular:
(1) Linux has always defined _Bool as a byte (indeed, afaik only Darwin
has ever done otherwise).
(2) You must really produce 0/1 from the asm; the compiler doesn't re-do
the canonicalization afterward, and afaik we do rely on that in the
optimizers. But certainly that's true for any version of GCC.
r~