[M3commit] [modula3/cm3] b3c18e: Rework indirect calls to possibly nested procedure...

Jay jay.krell at cornell.edu
Tue Dec 1 20:41:33 CET 2015


I suggest one or two changes to the IR.


1. An "official" in-memory representation of a complete unit or program. Modern systems can afford it.


2. More information with function calls. Likely combining parameters with calls. No more start/end. All parameters must be locals (possibly uplevel) or parameters or globals or temporaries, never expressions. This is likely the case already.


And, aside, look what I do for C. I made it work somehow. I don't remember off hand but I did odd stuff also because of static links. Like maybe always passing one, even if null, as last parameter, because extra parameters are always allowed in C. I declare the function pointers with "..." (slightly different in C vs. C++).


The gcc backend passes static link in a register dedicated to it.

 - Jay

On Nov 30, 2015, at 2:00 PM, Rodney Bates <rodney.m.bates at acm.org> wrote:

> Moreover, CM3's seemingly nice idea of making IR operators
> method calls makes it very awkward to do idiom recognition or
> state-dependent handling of general-purpose operators.



More information about the M3commit mailing list