racket/pkgs/compiler-lib/compiler/private
Matthew Flatt 6603fe3ad4 cs: improve single-value and no-return tracking
New `#%app/no-return` and `#%app/value` functions at the Chez Scheme
level allow schemify to communicate that function calls will not
return or will return a single value. The schmeify pass may have this
information because a Racket-level primitive is declared that way
(such as `error` or `raise-argument-error` for no-return, or most
functions for single-valued) or because single-valuedness is inferred.

There's currently no inference for no-return functions, because those
are relatively rare. An `#%app/value` is used by schemify only for
imported, non-inlined functions, since cp0 can already deal with local
functions and primitives.

There's a start here at adapting the "optimize.rktl" test suite for CS
--- and that effort triggered these improvements plus some other
low-hanging fruit. But a lot more is needed to adapt "optimize.rktl"
and to make some additional optimizations happen.
2020-12-11 13:29:35 -07:00
..
chez.rkt cs: simplify and improve handling of literals 2020-11-22 06:02:40 -07:00
deserialize.rkt cs: improve single-value and no-return tracking 2020-12-11 13:29:35 -07:00
language.rkt raco exe: add ++lang support 2018-09-02 07:53:47 -06:00