[Bench!][Mir] +54%..+185% performance boost for Mersenne Twister.

Joseph Rushton Wakeling via Digitalmars-d digitalmars-d at puremagic.com
Sun Jan 8 05:16:29 PST 2017


On Sunday, 8 January 2017 at 02:51:51 UTC, Andrei Alexandrescu 
wrote:
> This indicates a compiler bug in dmd itself, so the best 
> outcome for this library work would be a reduced compiler bug + 
> a simple library workaround. -- Andrei

Yes, that much is clear -- sorry if I wasn't clear enough myself. 
  I'm asking for eyes on the problem because reducing it to a 
minimal example appears non-trivial, while the bug itself looks 
serious beyond its effect on this PR.

For what it's worth:

   * it appears to be a backend issue, not frontend (using dmd 
with the same
     frontend as the latest ldc doesn't make a difference);

   * creating an `enum` manifest constant from the CTFE function 
works fine,
     but assigning to the runtime struct field from that enum 
produces the
     same mostly-zeros result;

   * it definitely doesn't appear to be something as trivial as 
just default
     initializing a struct instance (or a struct instance 
including a static
     array of more than a certain size) being the problem.

I will keep trying to reduce it to a minimal example, but 
CTFE-related backend bugs are not something I have a lot of 
experience with tracking down, hence the request for help.

Would filing an issue still be helpful at this stage, even 
without a minimal example?


More information about the Digitalmars-d mailing list