> On May 28, 2018, at 12:03 PM, Richard Biener <richard.guent...@gmail.com>
> wrote:
>
> On May 28, 2018 12:45:04 PM GMT+02:00, Andreas Schwab <sch...@suse.de> wrote:
>> On Mai 28 2018, Richard Biener <richard.guent...@gmail.com> wrote:
>>
>>> It means there's no relocation that can express the result of 's.f -
>> &s.b'
>>> and the frontend doesn't consider this a constant expression (likely
>> because
>>> of the conversion).
>>
>> Shouldn't the frontend notice that s.f - &s.b by itself is a constant?
>
> Sure - the question is whether it is required to and why it doesn't.
This is a test case in the C torture test suite. The only reason
I can see for it being there is to verify that GCC resolves this as
a compile time constant.
The issue can be masked by changing the "long" in that test case to
a ptrdiff_t, which eliminates the conversion. Should I do that?
It would make the test pass, at the expense of masking this glitch.
By the way, I get the same error if I change the "long" to a "long long"
and them compile for 32-bit Intel.
paul