[Openmcl-devel] Miscompiled code?

Gary Byers gb at clozure.com
Mon Jan 23 13:42:22 PST 2012


That (at least the case that you reported) should be fixed in the trunk
as of r15173.  The bug has indeed been there since 1.6.

It's hard to say whether or not the other similar-looking cases are in
fact the same bug.  This bug's a little hard to explain, but it has to
do with a call to VECTOR occurring just before a LET that involves a
simple memory reference (the SVREF in QREFELT); the x86 backend
sometimes didn't see that a stack location involved in both
expressions contained distinct values and wound up trying to FUNCALL
the CAR of one of VECTOR's arguments.

I don't know of other idioms that're similar enough to cause similar-
looking errors.

Thanks for reporting this; if you still have problems and can distill
them to cases that're as easy to reproduce as this one was, that'd be
very helpful.

On Mon, 23 Jan 2012, Waldek Hebisch wrote:

> The attached code does not work with current trunk.  It used
> to work in 1.5 era and works with other List implementation.
> Transcripit below.  This is on 64-bit Core2 running Debian 6.0
> (and image from about 2 week old trunk).  I got the same error
> on different machine with trunk from yesterday (after rebuilding
> the image).
> BTW, I getting several failures which look similar, this is
> minimalized version of just one.
> hebisch at hera:~/kompi/axp104$ ../ccl2/scripts/ccl64
> Welcome to Clozure Common Lisp Version 1.8-dev-r15159M-trunk  (LinuxX8664)!
> ? (load (compile-file "PRS1.lisp"))
> ;Compiler warnings for "PRS1.lisp" :
> ;   In LETT: Unused lexical variable L
> ;   In |pseudoDivide|: Unused lexical variable Q
> ;   In |semiSubResultantGcdEuclidean2|: Unused lexical variable VP
> ;   In MYDEG: Unused lexical variable TT
> ;   In an anonymous lambda form at position 2932: Undeclared free variable DD
> ;   In an anonymous lambda form at position 2952: Undeclared free variable A1
> ;   In an anonymous lambda form at position 2992: Undeclared free variable A2
> #P"/home/n/k/hebisch/kompi/axp104/PRS1.lx64fsl"
> ? (|semiSubResultantGcdEuclidean2| a1 a2 dd)
>> Error: (0 . 1) is not of type (OR SYMBOL FUNCTION), and can't be FUNCALLed or APPLYed
>> While executing: |semiSubResultantGcdEuclidean2|, in process listener(1).
>> Type :POP to abort, :R for a list of available restarts.
>> Type :? for other options.
> --
>                              Waldek Hebisch
> hebisch at math.uni.wroc.pl

More information about the Openmcl-devel mailing list