Last night I introduced the following pragmatics changes into the C code
generator:

  1. Functions returning unit are now emitted to C as functions
     returning void.

  2. Parameters of unit type are no longer emitted in the corresponding
     C declarations or definitions, and are not passed at apply time.

     Note that by the time we reach the C code generator, an SSA pass
     has already been applied. This means that any side effects of the
     expression that computed the suppressed value still occur.

     This particular change wasn't critical; it was merely the simplest
     way to implement (3) below.

  3. If [after unit-type argument suppression] a procedure accepts no
     arguments, it will be explicitly emitted in C as taking no
     arguments.

The change is not a "deep" change: a procedure accepting an argument of
type (pair int unit) will still generate a C structure containing an
element of type bitc_unit_t. This should perhaps be optimized at some
later point.

I believe that these changes are all sensible. Since these
implementation choices have significant impact on linkage with other
languages, I believe that once we settle on a final set of pragmatic
representations of this form, they should be added to the specification
as implementation requirements.


shap

_______________________________________________
bitc-dev mailing list
[email protected]
http://www.coyotos.org/mailman/listinfo/bitc-dev

Reply via email to