hans@sybil.cs.Buffalo.EDU (Hans Chalupsky) (11/30/89)
I just managed to pin down a bug in the Allegro CL compiler for Sun-4's that gave me a headache for the last few weeks. It's a problem with inline compilation of the function LAST (inline is default). If this is already common knowledge or 3.0.1.beta.sun4.1 is an obsolete version - just ignore the rest of the article. I'll file an official bug report but it will probably take a while for the fix to migrate to the users. The following script shows that FOO if run interpreted executes the side effect of PRINTing only once. After compilation of FOO printing is done twice. Explicitly disallowing inline compilation for LAST before compilation of FOO gives a compiled version that works. Here's the script: Allegro CL 3.0.1.beta.sun4.1 [sun4] (9/12/89 22:12) Copyright (C) 1985-1988, Franz Inc., Berkeley, CA, USA <cl> <cl> (defun foo (l) (last (print l))) FOO <cl> (foo '(1 2 3)) (1 2 3) (3) <cl> (compile 'foo) FOO <cl> (foo '(1 2 3)) (1 2 3) (1 2 3) (3) <cl> (defun foo (l) (last (print l))) FOO <cl> (proclaim '(notinline last)) T <cl> (compile 'foo) FOO <cl> (foo '(1 2 3)) (1 2 3) (3) <cl> hans@cs.buffalo.edu Hans Chalupsky, Dept. of CS, 226 Bell Hall, SUNY@Buffalo, NY 14260.
layer@snooze.Franz.COM (Kevin Layer) (12/01/89)
In article <13966@eerie.acsu.Buffalo.EDU> hans@sybil.cs.buffalo.edu (Hans Chalupsky) writes: >I just managed to pin down a bug in the Allegro CL compiler for Sun-4's that >gave me a headache for the last few weeks. It's a problem with inline >compilation of the function LAST (inline is default). If this is already >common knowledge or 3.0.1.beta.sun4.1 is an obsolete version - just ignore >the rest of the article. I'll file an official bug report but it will >probably take a while for the fix to migrate to the users. We have a patch for this bug. Contact cl-bugs@franz.com if you need it. Kevin Layer, Franz Inc. 1995 University Avenue, Suite 275 layer@Franz.COM (internet) Berkeley, CA 94704 uunet!franz!layer (uucp) Phone: (415) 548-3600; FAX: (415) 548-8253