On Mon, Dec 19, 2016 at 05:12:25PM +0100, Florian Weimer wrote: > On 12/19/2016 05:00 PM, Neal Gompa wrote: > > Hello, > > > > I just imported lugaru and attempted to build it for rawhide, but it > > failed in such a strange way on ppc64le, with errors saying it can't > > convert bool to vectorized ints. > > > > Full build log: > > https://kojipkgs.fedoraproject.org//work/tasks/9921/16959921/build.log > > > > I fully expected lugaru to build properly on all architectures, as it > > has nothing that makes it special in this regard. What's going on > > here? > > bool is a very special type on POWER because it's four bytes and not just > one byte, as on most other architectures. Related to this, the compiler No, only on powerpc*-*-darwin*. On powerpc*-*-linux* it is one byte like elsewhere. > supplies a type __bool, and what I suspect is happening is that a header > included by the project contains > > #define bool __bool > > The most common source is <altivec.h> from GCC. These days (for several GCC releases), powerpc as well as spu and recently also s390 (z13) use conditional macros for bool, vector, pixel and _Bool, which expand differently depending on what is the following token. But the conditional macros are defined only in the non-strict C/C++ modes, the above is compiled with -std=c++11 rather than -std=gnu++11, but then one shouldn't include altivec.h if they want standard behavior. Alternative is to include altivec.h and #undef vector #undef pixel #undef bool and then of course you need to use __vector, __pixel and __bool instead of vector, pixel or bool if you want the Altivec-ish behavior rather than standard. Jakub _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx