Tue 18 Nov 2014 05:40:36 PM UTC, original submission:
I have a little program that I wrote some years ago and compiled with SmallEiffel (probably 0.75 as I never bothered to follow the later syntax changes). When I try to compile this program with Adler, it crashes compile_to_c. I've packaged up various tarballs which I hope will help you work out what's going wrong. Each tarball expands into a directory with the same name as the tarball.
Original.tgz is the original code, but with all the syntax changes I think are necessary to make it compile under Adler. It includes the traceback from the crash of adler compile_to_c conpiled -no_check-no_gc -no_strip (I've also included the command file that compiles compile_to_c).
Compiles.tgz is the same code slightly modified, which Adler compile_to_c compiles correctly. It has been changed in the following way.
The program computes anagrams from a lexicon and a string of letters. It compiles the lexicon internally into a word-tree composed of LEXICAL_TREE_ITEMs, but in the original program I wrote all the nescessary code for LEXICAL_TREE_ITEM as a generalised MULTI_WAY_TREE_ITEM. LEXICAL_TREE_ITEM inherits this and redefines the make feature to have fixed limits of 'a' to 'z'. All I've done in compiles.tgz is eliminate MULTI_WAY_TREE_ITEM and put its code into LEXICAL_TREE_ITEM.
These two examples are only really interesting because they show that it is the inheritance of MULTI_WAY_TREE_ITEM that causes the problem. So, I have reduced the code to the minimum number of lines that I can get which crashes compile_to_c in the same way (with the same end to the traceback). This is in minimum-crash.tgz.
On the way to deriving minimum-crash.tgz I was suprised to find that it was the climb feature, not just the make feature that has to be called to make compile_to_c crash, so I've also included minimum-compiles.tgz as an example of stripped down code which I expected to crash compile_to_c, but which doesn't.
|