Closed
Description
This generator has a size of 4 Bytes:
let mut gen = |mut x| {
loop {
drop(x);
yield;
x = makeit();
useit(&x);
}
};
This one is 16 Bytes in size, even though it also does not need to keep x
alive across the yield
:
let mut gen = |mut x| {
loop {
drop(x);
x = yield;
useit(&x);
}
};
(where makeit
is a fn returning a usize
, and useit
is a fn taking &usize
)
This seems to be fallout from #69302. Either the layout calculation soundness fix exposed it, or the visitor changes in there caused it.
This means that #69033 will increase the size of futures created from async fns, unless this bug is fixed.
Metadata
Metadata
Assignees
Labels
Area: Async & AwaitArea: CoroutinesAsync-await issues that have been triaged during a working group meeting.Category: This is a bug.`#![feature(coroutines)]`Issue: Problems and improvements with respect to binary size of generated code.Relevant to the compiler team, which will review and decide on the PR/issue.
Type
Projects
Status
Done