[Openmcl-devel] Problem with array indexing on ARM

Waldek Hebisch hebisch at math.uni.wroc.pl
Fri Dec 28 02:45:25 UTC 2012


With the following:

(DEFMACRO |sub_SI| (X Y)
          `(THE FIXNUM (- (THE FIXNUM ,X) (THE FIXNUM ,Y))))

(defmacro QSETAREF2O (m i j r oi oj)
    `(setf (aref (the (simple-array T (* *)) ,m)
                 (|sub_SI| ,i ,oi)
                 (|sub_SI| ,j ,oj))
           ,r))

(DEFUN |qsetelt!| (|m| |i| |j| |r|)
  (QSETAREF2O |m| |i| |j| |r| 1 1))

in file "ts2.lisp" I get:

$ /home/hebisch/lisp/ccl/scripts/ccl
Welcome to Clozure Common Lisp Version 1.9-dev  (LinuxARM32)!
? (compile-file "ts2.lisp")
#P"/home/hebisch/fricas/axp1/ax-build1/ts2.lafsl"
NIL
NIL
? (load "ts2.lafsl")
#P"/home/hebisch/fricas/axp1/ax-build1/ts2.lafsl"
? (setf m (make-array '(2 2)))
#2A((0 0) (0 0))
? (|qsetelt!| m 2 2 17)
17
? m
#2A((0 17) (0 0))


So, an elemnt of the first row is modified instead of element
of the second row.

This is on Raspberry Pi using recent trunk recompiled to use
hard float ABI.

-- 
                              Waldek Hebisch
hebisch at math.uni.wroc.pl 



More information about the Openmcl-devel mailing list