On 27-Jul-07, at 5:28 PM, Christian Jaeger wrote:
Hello
I've just discovered that tcc¹ is able to compile the C code generated by Gambit.
Great! I have toyed with TCC (not in the context of Gambit) and I think it is a neat tiny and fast C compiler.
In simple cases the compiled object files work just flawlessly (albeit ~3 times slower than when compiled with gcc in a fixnum-loop microbenchmark, but that's ok). When I compile one of my bigger modules (which takes 3 seconds for compilation from Scheme to C and 17 seconds to compile from C to binary with gcc 4.1.2, and only 1 second to compile from C to binary with tcc 0.9.23), it's doing wrong calculations (I'm doing signal processing, with tcc it just outputs zeroes all the time).
Are you sure TCC implements floating point?
The way I've used tcc in the above tests was by just linking tcc into the PATH as gcc (mkdir ~/bin; ln -s /usr/bin/tcc ~/bin/gcc; PATH="~/bin:$PATH";
Another way would be to tweak the file ~~/bin/gsc-cc-o which is called by gsc to compile the generated source code to the .o1 file.
start gsc interactively and use compile-file (through chjmodule) as usual). Should I take a different approach? Or should I start debugging problems / send bug reports with code when compiled with tcc?
Having 5 times faster compile times would help development in those cases where using the interpreter isn't possible (because it is too slow or because the modules are including FFI code), albeit it's not a high priority. (Alternatively I might possibly speed up gcc by not using single-host and no -O flag. How can I achieve those settings from inside gsc (when using |compile-file|), btw?)
You have to change ~~/bin/gsc-cc-o so that no options are passed to gcc, and then you pass the C compiler options you want as the third option of compile-file:
(compile-file "foo.scm" '() "-O0")
The arguments of compile-file are:
(compile-file <filename> [<options> [<cc-options> [<ld-options>]]])
I'll add this to the documentation...
Marc