On Wed, May 28, 2014 at 03:47:52PM +0200, Richard Biener wrote:
> On Wed, May 28, 2014 at 3:15 PM, FX <fxcoud...@gmail.com> wrote:
> >> After lengthy IRC discussions, what Richard and I can live with is
> >> && !defined(__clang__) in this particular case that uses longlong.h
> >> in GCC sources, with a comment why.
> >
> > I’ll test this patch and commit if there is no problem. But right now, 
> > current trunk doesn’t build on x86_64-apple-darwin due to error below. 
> > Richard, could this be due to your revision 211013?
> 
> Hum, yeah.  But why does it even warn if sizeof (long) == sizeof (long long)?

Because using the right format strings is important for portability.

> I suppose casting the result of CWI_ELT () to uint64_t fixes this.  Do
> similar errors happen elsewhere?
> 
> (the hex printfs expect unsigned types but CWI_ELT returns a signed
> HWI)

I think the sign shouldn't be a problem, but perhaps there is a mismatch
between HOST_WIDE_INT definition and HOST_WIDE_INT_PRINT_HEX?

Defining HOST_WIDE_INT to long long or long based on whether long is 64-bit
or not, but using PRIx64 etc. unconditionally is just wrong, either
HOST_WIDE_INT should be uint64_t and then you should use PRI*64, or it is
not, and then you should keep using what has been used in the past,
different macros depending on how HOST_WIDE_INT is defined.

        Jakub

Reply via email to