Weird DMD codegen issue

Stanislav Blinov stanislav.blinov at gmail.com
Thu Nov 4 16:32:54 UTC 2021


So I have a function:

```d
auto foo(C, K)(Strukt1* s, Strukt2 a, uint b, scope C c, scope K 
k, out Strukt3 r)
{ /* ... */ }
```

Where return type is `Strukt4`. dmd borks the first argument on 
call (at least on Linux). Workarounds so far I found:

1) adding `extern(C)`
2) reducing number of parameters - five is fine, as soon as I add 
the sixth or more - it breaks (but not with `extern(C)`).

Problem is, I tried reproducing it outside of codebase, with no 
success :( Does that sound familiar to anyone? Maybe there's 
already a report about this on bugzilla? Any pointers on tracking 
this down?


More information about the Digitalmars-d mailing list