https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95582
--- Comment #10 from Eric Botcazou <ebotcazou at gcc dot gnu.org> --- > Yeah, that was for vector components. Not that I like it much. Can > the middle-end assume that the Ada boolean types only contain 0 or 1 > or are there other values that are supposed to be well-defined > true or false values? The only well-defined values are 0 and 1, but all the bits up to the precision need to be preserved in "nonlogical contexts". So it's a standard boolean type in "logical contexts" (with binary logic) and an integral type with precision 8 in "nonlogical contexts", the possibly issues arising of course at the transition. In practice this works fine without special handling in almost all cases, you just need to be careful when you're manipulating bit patterns.