[openib-general] Re: Re: [PATCH 1/2] (fixed) mthca: max_inline_data support
Michael S. Tsirkin
mst at mellanox.co.il
Tue May 17 15:10:54 PDT 2005
Quoting r. Grant Grundler <iod00d at hp.com>:
> Subject: Re: Re: [PATCH 1/2] (fixed) mthca: max_inline_data support
>
> On Tue, May 17, 2005 at 10:08:58AM -0700, Roland Dreier wrote:
> > Michael> Another problem is that fls may return 32 and you end up
> > Michael> with 1 << 32 which AFAIK has undefined behaviour in C.
>
> AFAIK, this is only true for ILP32 C compilers.
> LP64 C compiler must allow >32 values.
>
IFAIK it undefined if int is 32 bit. It seems that's the case with gcc
even on 64 bit systems. At least on x86_64 with gcc 3.3.3, int is 32 bit,
so:
~>cat x.c
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
int foo(int arg, int shift)
{
return arg << shift;
}
int main(int argc, char **argv)
{
printf("1<<32 = %ld\n", foo(1, 32));
return 0;
}
~>gcc x.c
~>./a.out
1<<32 = 1
--
MST - Michael S. Tsirkin
More information about the general
mailing list