Hi,
On Wed, 9 Dec 2009, H.J. Lu wrote:
> > ... because this part can only be guaranteed by the ABI. Without the
> > above language a compiler would be free to implement any non-zero byte as
> > true for parameter passing without violating the ABI.
> >
>
> Aren't bits in the _Bool byte of"bar" specified by the psABI
Right now they are specified in the psABI, you suggested to remove that
specification.
> or the C language standard already?
Nope. If you don't look at the specific value of a _Bool (by e.g. storing
it in some global variable) the C standard doesn't say anything about what
this value must be, except that the true/false behaviour has to be
preserved. As-if rules and so on. The psABI needs to be more specific.
> ---
> extern unsigned int bartmp;
> extern _Bool bar;
>
> void foo()
> {
> bartmp = bar;
> }
> ---
>
> Why should the _Bool byte in "void foo(_Bool bar)" be any different?
Because it can be different when the psABI doesn't say otherwise.
Ciao,
Michael.