This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [c++] don't expand &a.b to pointer arithmetic


Andreas Schwab wrote:

>>         * class.c (build_base_path): Use build_address directly.
>>         * typeck.c (build_unary_op): Don't lower &a.b to pointer
>>         arithmetic directly.
>>         * typeck2.c (store_init_value): Don't assume !TREE_CONSTANT
>>         means !initializer_constant_valid_p.
> 
> This causes this expression
> 
> # define _SC_GR0_OFFSET \
> (((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0)
> 
> to no longer being an integral constant expression, which breaks building
> the java library on ia64-linux.

Correct, that is *not* an integral constant expression in C++. Try with:

#define _SC_GR0_OFFSET   __builtin_offsetof(struct sigcontext, sc_gr[0])

Giovanni Bajo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]