For the lulz: ddmd vs libdparse lexer timings

Iain Buclaw via Digitalmars-d digitalmars-d at puremagic.com
Mon Jan 5 09:29:59 PST 2015


On 5 January 2015 at 12:11, Daniel Murphy via Digitalmars-d
<digitalmars-d at puremagic.com> wrote:
> "Iain Buclaw via Digitalmars-d"  wrote in message
> news:mailman.4146.1420457999.9932.digitalmars-d at puremagic.com...
>
>> That is correct for user code, but not druntime C bindings.
>>
>> GDC can compile the test in 3568 thanks to the GCC backend providing
>> the va_list struct a name (__va_list_tag).
>>
>> However it for sure cannot run the program though.  Only body-less
>> declarations in core.stdc.* are rewritten to ref va_list.
>
>
> Druntime and phobos rely on va_list converting to void*.  Should this
> a) be allowed on platforms where va_list is a pointer
> b) always be allowed
> c) never be allowed
> ???

For consistency? I would go with (c) as va_list could be anything,
even a struct (PPC). That and people shouldn't (*!*) be manipulating
va_list directly, though unfortunately we do for std.format, etc.

The only realistic option would be (a).


More information about the Digitalmars-d mailing list