[M3devel] calling conventions..
Jay K
jay.krell at cornell.edu
Fri Sep 14 12:58:14 CEST 2012
Our calling convention handling seems kind of messed up.
results_on_left: this could be removed; frontend could presume backends know how to return structs by value It appears we set it "wrong" currently, e.g. on AMD64_DARWIN, but it only matters for interop with unusual C code. standard_structs: this could be removed; frontend could presume backend can pass structs by value m3x86 already implements this It should be easier for most other backends, including m3cc. args_left_to_right: this could be removed; frontend could presume it is always true, and backend could do the reversing; m3cc already does It is currently a convenience for M3x86.m3 though.
Which leaves the only thing about a calling convention its name/id.
And then, as I proposed years ago, you might as well let allplatforms support all calling convention names, even if theyare meaningless. That way you could unfork large swaths of <*extern*>that vary only because Win32 specifies a calling convention.Heck, look at how NT/amd64 C compiler works -- it accepts and ignorescalling conventions too, for source compatibility with NT/x86.
(You see, I'm looking at all the code that looks at "backend mode".)
- Jay
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20120914/bdb2072d/attachment-0001.html>
More information about the M3devel
mailing list