digitalmars.D.bugs - [Issue 19570] New: pragma(inline) is emitting symbols
- d-bugmail puremagic.com (28/28) Jan 10 2019 https://issues.dlang.org/show_bug.cgi?id=19570
https://issues.dlang.org/show_bug.cgi?id=19570 Issue ID: 19570 Summary: pragma(inline) is emitting symbols Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: critical Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: turkeyman gmail.com pragma(inline) doesn't seem to work right. pragma(inline, true) int foo() { return 10; } Don't make any call to this function, just put it alone in a source file and note that it is still emit to the object file (on linux at least). I understand the compiler may not guarantee that the function was inlined, and it *may* emit a symbol to the object file _when it's called_, but the basic semantic promise of the inline request doesn't seem to work; it should certainly NOT emit a symbol to the object file in cases where the function is never called (and try to inline when it is). There should only be a symbol in the object file in the case it failed to inline, and only if it's actually called. inline functions are useful for things like CTFE, where you want to use a function at compile time, and may _or may not_ use it at runtime, and do not want to eagerly emit it to the binary. --
Jan 10 2019