Re: Compiler warnings in ccache 3.2.3
Joel Rosdahl <[email protected]> Mon, 17 Aug 2015 21:04:14 +0200
| Newsgroups | gmane.comp.compilers.ccache |
|---|---|
| Message-ID | <CAK8D=pin4RMrq92pgOtwhY8Jv_xZYYMB=9_34jZrQDxrH-4McA@mail.gmail.com> |
> > I got a few warnings about assignments of pointers to "bool" values. I > think these are legitimate gripes, because on platforms where bool is only > a byte wide, the net effect will be to assign the pointer's low-order byte > to the bool. There's at least a 1-in-256 chance of a non-null pointer > erroneously converting to a "false" boolean value (maybe more than that, if > the pointer is likely to be aligned ...). Well, as I interpret the C99 standard, bool from stdbool.h (AKA _Bool) is guaranteed to only contain 1 or 0: "6.3.1.2 Boolean type When any scalar value is converted to _Bool, the result is 0 if the value compares equal to 0; otherwise, the result is 1." However, ccache's system.h has fallback code on systems that don't have stdbool.h and then a bool can be typedef-ed to be a signed char, which is something I didn't think of when writing the code in question. (I guess you are on such an "antique" non-C99 system?) I propose the attached patches to fix this. Thanks, applied. -- Joel