[c++] don't expand &a.b to pointer arithmetic
Andreas Schwab
schwab@suse.de
Tue Aug 31 19:17:00 GMT 2004
"Giovanni Bajo" <rasky@develer.com> writes:
> 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])
I understand that, but that's not what glibc is currently using. We need
to fixinclude it.
Andreas.
--
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux AG, MaxfeldstraÃe 5, 90409 Nürnberg, Germany
Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
More information about the Gcc-patches
mailing list