Skip to content

Worker/wrapper: Preserve float barriers (#21150)

Sebastian Graf requested to merge wip/T21150 into master

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).

Edited by Sebastian Graf

Merge request reports