Validity of cast(void*)size_t.max
Steven Schveighoffer
schveiguy at yahoo.com
Mon Mar 5 18:28:43 UTC 2018
On 3/5/18 1:08 PM, Stefan Koch wrote:
> On Monday, 5 March 2018 at 18:04:20 UTC, Nordlöw wrote:
>> On Monday, 5 March 2018 at 16:07:49 UTC, Steven Schveighoffer wrote:
>>> No, I mean you call holeKey at *runtime*. Inlined, it's just
>>> returning a constant, so it should reduce to a constant.
>>
>> A compile-time constant visible to the optimizer?
>
> Yes indeed. For gdc and ldc the optimisation is guranteed and I am quite
> dmd can do this as well. As long as you don't have too many statements.
Note, I think the error is bogus, you should be able to create
hard-coded addresses of data at compile time -- I'm not sure how you
would do hardware registers otherwise.
Another possibility I thought of:
struct Dummy
{
size_t nullValue;
void *holeKey;
}
enum holeKey = &(cast(Dummy *)null).holeKey;
But this fails as well
Error: dereference of null pointer null
-Steve
More information about the Digitalmars-d-learn
mailing list