[Bug c/50347] New: unexpected -Wconversion error from gcc builtin

gcc.hall at gmail dot com gcc-bugzilla@gcc.gnu.org
Sat Sep 10 08:45:00 GMT 2011


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50347

             Bug #: 50347
           Summary: unexpected -Wconversion error from gcc builtin
    Classification: Unclassified
           Product: gcc
           Version: 4.6.1
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: c
        AssignedTo: unassigned@gcc.gnu.org
        ReportedBy: gcc.hall@gmail.com


This message is produced from the code example below.

bug.c: In function 'main':
bug.c:17:2: warning: conversion to 'long long int' from 'long long unsigned
int' may change the sign of the result [-Wsign-conversion]

builtin_ffsll is documented as:-
Built-in Function: int __builtin_ffsll (unsigned long long)

    Similar to __builtin_ffs, except the argument type is unsigned long long. 

Note this does not happen with the other similar builtin's (__ctzll for
example)

-----------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>

int
main( int argc, char *argv[] )
{
  if( argc > 1 )
  {
    char *tail;
    unsigned long long n = strtoull( argv[1], &tail, 0 );
    if( tail == argv[1] )
      return 1;

    int lsb = __builtin_ffsll( n );

    printf("lsb = %d\n", lsb );
  }
  return 0;
}
-------------------------------------------------------------------
* gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/libexec/gcc/i686-pc-linux-gnu/4.6.1/lto-wrapper
Target: i686-pc-linux-gnu
Configured with: ../gcc-4.6.1/configure
Thread model: posix
gcc version 4.6.1 (GCC)



More information about the Gcc-bugs mailing list