https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89716

            Bug ID: 89716
           Summary: Bogus warning -Wformat= in printf with __uint64_t
                    argument
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: optivec at gmx dot de
  Target Milestone: ---

With the latest pre-built GCC, coming with Ubuntu,
"GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.11) 5.4.0 20160609"

I get a bogus "warning: format '%llu' expects argument of type 'long long
unsigned int', but argument 2 has type '__uint64_t' {aka long unsigned int}'
[-Wformat=]"
printf( "x = %llu", x );

for the following short function:

#include <stdlib.h>
#include <stdio.h>
void testprint( void )
{
        __uint64_t x=0x0123456789abcdefLL;
        printf( "x = %llu", x );
}


The warning is nonsense in itself, as __uint64_t clearly is NOT "aka long
unsigned int". The compiled code is correct. So this appears to be a bug in the
preprocessor.

Reply via email to