[Gd-hackers] Fixing up the C backend
Rayiner Hashem
gtg990h at mail.gatech.edu
Fri Nov 10 02:19:32 CET 2006
Weird. I could'a sworn I remembered to attach it.
Let's try this: http://www.prism.gatech.edu/~gtg990h/c-backend-
fixup.diff
On Nov 9, 2006, at 6:37 PM, Rayiner Hashem wrote:
> I spent some time this week fixing up OD's C backend. It was in
> surprisingly good shape, all told.
>
> Attached is a preliminary patch against fundev trunk to fix and
> enable the C backend. It allows you to run through a three-stage
> bootstrap, ie: OD/C compiled with itself can compile itself cleanly.
>
> Below is a summary of the changes:
>
> 1) Bring c-run-time up to date, fixing compilation issues, and
> giving it a Makefile.in modeled on the one in lib/run-time/pentium-
> linux.
>
> 2) Make sure c-linker doesn't give the same variable both static
> and extern attributes.
>
> 3) Fix illegal behavior in unix-interface.dylan that OD/HARP accepts.
>
> 4) Update the configure and jam scripts appropriately.
>
> A few things are worth considering:
>
> 1) How do you do backend selection? Currently, I have all backends
> compiled-in, but selectable only via setting default-back-end().
>
> 2) The Jam changes are pretty ugly. I really don't know enough Jam
> to do this elegantly.
>
> 3) c-run-time should probably be moved out of the dfmc directory.
>
> 4) My fix to c-emit-object.dylan is a hack. The basic problem is
> that when the C and HARP back-ends encounter two lexical variables
> with the same name, they rename them by appending the frame-offset
> of the variable. However, implicit closure parameters created as a
> result of lambda lifting appear with the same frame-offset (this
> happens compiling harp/pentium-harp/bits.dylan).
>
> I'll have to think a bit to fix the last issue. Whether or not its
> illegal for two lexical variables in the same function to have the
> same frame-offset, the C backend doesn't otherwise care about frame-
> offsets anyway, so it shouldn't be using them for variable renaming.
>
> 5) I'm using the dummy threads implementation in the C runtime.
> I'll fix the pthreads implementation as soon as other things are in
> better shape.
>
> I think that covers it. I'd appreciate any feedback you guys have
> on the patch. Oh, and if you get compilation errors in the C code
> saying that funny symbols are undefined, make sure the linker isn't
> accidentally seeing OD/HARP-compiled libraries, because those are
> incompatible.
>
> Sincerely,
> Rayiner Hashem
>
>
> --
> Gd-hackers mailing list
> Gd-hackers at gwydiondylan.org
> https://www.opendylan.org/mailman/listinfo/gd-hackers
More information about the hackers
mailing list