------- Comment #10 from hjl dot tools at gmail dot com 2009-12-10 14:41 ------- This is what I got from Sun:
Solaris x86-64 compiler does not support this x86-64 psABI requirement for _Bool : "When a value of type _Bool is passed in a register or on the stack, the upper 63 bits of the eightbyte shall be zero" Solaris x86-64 compiler processes it like char or byte. i.e. When a value of type _Bool is passed in a register or on the stack, the bits1-31 of the eightbyte shall be zero and upper 32bits should be left undefined. Thus current behavior of Sun compiler is that which described by option 2. i.e. following solution looks the best from the point of view of Solaris x86-64 compiler : "2. Remove that paragraph in the psABI and keep gcc ASIS. It will make _Bool consistent independent of if it is used for function parameters. Both gcc and icc always treat _Bool as char even if it is returned from a function. It may break compatibilities among x86-64 compilers. But we have such problems anyway for gcc 4.3 and 4.4. " -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42324