[Issue 23890] New: "Warning: cannot inline function" in core.lifetime
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri May 5 08:20:05 UTC 2023
https://issues.dlang.org/show_bug.cgi?id=23890
Issue ID: 23890
Summary: "Warning: cannot inline function" in core.lifetime
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: regression
Priority: P1
Component: druntime
Assignee: nobody at puremagic.com
Reporter: dlang-bugzilla at thecybershadow.net
This code produces a warning inside Druntime, that the user cannot do much
about:
/////////////////////////// test.d ///////////////////////////
import core.lifetime;
auto fctr(alias fun, State...)(State state)
{
struct Pred
{
State state;
static if (state.length)
private this(State state)
{
static foreach (i; 0 .. state.length)
moveEmplace(state[i], this.state[i]);
}
auto opCall(this This, Args...)(auto ref Args args)
{
return fun(state, args);
}
}
static if (state.length)
return Pred(forward!state);
else
return Pred.init;
}
unittest
{
struct NC
{
@disable this();
@disable this(this);
int i;
this(int i) { this.i = i; }
}
auto f = fctr!((ref a, ref b) => a.i + b.i)(NC(2), NC(3));
assert(f() == 5);
}
//////////////////////////////////////////////////////////////
Command: dmd -o- -unittest -wi test.d
Output:
.../druntime/core/lifetime.d(1558): Warning: cannot inline function
`test.__unittest_L30_C1.fctr!((ref a, ref b) => a.i + b.i, NC,
NC).fctr.fwd!(_param_0).fwd`
.../druntime/core/lifetime.d(1558): Warning: cannot inline function
`test.__unittest_L30_C1.fctr!((ref a, ref b) => a.i + b.i, NC,
NC).fctr.fwd!(_param_1).fwd`
.../druntime/core/lifetime.d(2582): Warning: cannot inline function
`core.lifetime.wipe!(NC).wipe`
Most likely introduced in https://github.com/dlang/druntime/pull/3653.
--
More information about the Digitalmars-d-bugs
mailing list