Hello,

I am trying to use vec.h to implement a vector of pointers:

typedef void* handle_t;

DEF_VEC_I(handle_t);
DEF_VEC_ALLOC_I(handle_t,heap);

extern VEC(handle_t,heap) *handles;

It does not compile:

In function 'VEC_handle_t_must_be_integral_type':
error: wrong type argument to bit-complement

The reason is the bit-complement test to decide if the supplied type
is integral or
not. It does not compile if void* is used:

 (void)~(void*)0;

However, it is obviously possible to use void pointers along with
ints because they are equivalent on x86 as specified in i386.h:

#define Pmode (TARGET_64BIT ? DImode : SImode)

Therefore, we should use the mode of a constant of the type in
question to support void pointer vectors. That is, I would like to
use the following test:

__builtin_mode( (T) 0) == (TARGET_64BIT ? DImode : SImode)

Is a builtin like this available in GCC or not? Thanks,

Alexey

Reply via email to