Weird warnings about inline failure
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\hash.d(298): warning : cannot inline function `core.internal.hash.hashOf!(const(void)*).hashOf`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(787): warning : cannot inline function `core.internal.convert.toUbyte!(Variant).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(787): warning : cannot inline function `core.internal.convert.toUbyte!(Value).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(748): warning : cannot inline function `core.internal.convert.toUbyte!(Flags).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\hash.d(298): warning : cannot inline function `core.internal.hash.hashOf!(const(Element)*).hashOf`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(787): warning : cannot inline function `core.internal.convert.toUbyte!(EmberBindingTableEntry).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(748): warning : cannot inline function `core.internal.convert.toUbyte!(EmberBindingType).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(687): warning : cannot inline function `core.internal.convert.toUbyte!ubyte.toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(787): warning : cannot inline function `core.internal.convert.toUbyte!(EmberNetworkParameters).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(748): warning : cannot inline function `core.internal.convert.toUbyte!(EmberJoinMethod).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(787): warning : cannot inline function `core.internal.convert.toUbyte!(EmberChildData).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(748): warning : cannot inline function `core.internal.convert.toUbyte!(EmberNodeType).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(787): warning : cannot inline function `core.internal.convert.toUbyte!(EmberApsFrame).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\convert.d(748): warning : cannot inline function `core.internal.convert.toUbyte!(EmberApsOption).toUbyte`
1>C:\dev\D\dmd2\windows\bin\..\..\src\druntime\import\core\internal\newaa.d(114): warning : cannot inline function `core.internal.newaa.compat_key!(string, const(char)[]).compat_key`
I've spent hours trying to chase this weird spam of warnings I've suddenly encountered. It came out of nowhere while writing code that seemed completely unrelated. I removed that code, it went away; I tried putting it somewhere else and it came back, I removed that code and stashed the task then started doing something different, and it came back again while writing a completely different thing. I removed line by line until it disappeared, and then I add one line and it appears again. I got it to the point where any one random line of code will make this spam of warnings return.
My guess is; my binary (or maybe my AST) is sitting right on some size threshold where DMD's inliner just gives up for some reason... has anyone heard of anything odd like this with the inliner? The code I'm writing doesn't interact with the inliner in any way at all... but maybe it just adds enough code mass that something else somewhere else falls of its perch?
Are you using master? I've recently touched too many parts of the inliner so it's likely a bug.
If you are using master and don't mind rebuilding DMD, can you try flipping this switch to true and see what it spits out? https://github.com/dlang/dmd/blob/b9bdc48cbc12a519232b680c92505d201a210b1b/compiler/src/dmd/inline.d#L128
I have also changed a bit about inlining not too long ago: forced inlining didn't reliably work across module boundaries. When fixing this, these messages appeared when compiling with -wi, revealing that dmd was never able to inline these functions despite pragma(inline, true).
I guess these messages appear when using associative arrays that are now lowered to templates. Most of these warnings should be fixed by now (have you tried a recent nightly build?), but recently I have seen compat_key being complained about, too.