https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88662

--- Comment #18 from Joseph S. Myers <jsm28 at gcc dot gnu.org> ---
What aspects of the psABI for bool do you say GCC does not respect?

For memory representations, the ABI says "Booleans\index{boolean}, when stored
in a memory object, are stored as
single byte objects the value of which is always 0 (\code{false}) or 1
(\code{true}).". Does GCC store some other value, or does it fail to interpret
byte values of 0 or 1 appropriately?

For argument passing and return, the ABI says "When a value of a type of class
INTEGER is returned or passed in a register
or on the stack, the excess bits that would not be present in the
memory representation of the type (see figure~\ref{basic-types}) are
unspecified.\footnote{That is, the consumer side of those values needs
to extend them or use short form instruction variants.  As in the
memory representation, for a value of type \code{_Bool}, the lowest 8
bits are significant, together forming the value 0 or 1.}". Does GCC pass or
return some other value in the low 8 bits, or does GCC misinterpret register
values for arguments or return values where the low 8 bits are 0 or 1 but the
higher bits are unspecified?

Reply via email to