Worker/wrapper: Preserve float barriers (#21150)
Issue #21150 (closed) shows that worker/wrapper allocated a worker function for a function with multiple calls that said "called at most once" when the first argument was absent. That's bad!
This patch makes it so that WW preserves at least one non-one-shot value lambda
(see Note [Preserving float barriers]
) by passing around void#
in place of
absent arguments.
Fixes #21150 (closed).
Since the fix is pretty similar to Note [Protecting the last value argument]
,
I put the logic in finishWorkerArgs
. There I realised (#21204 (closed)) that
-ffun-to-thunk
is basically useless with -ffull-laziness
, so I deprecated
the flag and simplified finishWorkerArgs
.
Fixes #21204 (closed).