On Wed, 13 Nov 2024 at 17:41, Richard (Rikki) Andrew Cattermole via Digitalmars-d <digitalmars-d@puremagic.com> wrote:
On 13/11/2024 8:22 PM, Manu wrote:
> On Wed, 13 Nov 2024 at 17:06, Richard (Rikki) Andrew Cattermole via
> Digitalmars-d <digitalmars-d@puremagic.com <mailto:digitalmars-
> d@puremagic.com>> wrote:
>
>     Likely:
>
>     https://github.com/dlang/dmd/blob/master/druntime/src/core/internal/
>     array/equality.d <https://github.com/dlang/dmd/blob/master/druntime/
>     src/core/internal/array/equality.d>
>
>
> Oh that's so obvious! You know when the answer is right in front of your
> nose, but you've convinced yourself it's somewhere else so you can't see
> it no matter how long you stare at it! :P
> Thanks fella! :)

This particular module has caused a lot of problems in -betterC.

It was fixed by turning on -allinst when -betterC is applied.

Hence this one is a well known internal detail :)
 

I really wish there was an official document which maintained a list of all the expressions that generate runtime calls inside the compiler... there's a hell of a lot of them!
If you sift through druntime, the fact that this code is such a mess is a really good indicator of some core language deficits. All these things handle SO MANY CASES.
A lot of it will resolve with move semantics and the proper emplace expression that Walter's working... the rest of it, I dunno.
Like, look at `template _arrayOp(Args...)`, that's pretty wild stuff!