From: Cyrus H. <ch...@bo...> - 2006-01-07 19:30:52
|
Hi Juho, Turns out I was having another problem, which was causing this symptom to show up. I was trying to reference an alien variable in a library that recently switched to using the GCC 4 visibility stuff and had made a variable hidden. Unhiding the variable makes the problem go away. So I think this was a case of programmer error on my part. Your patch looks reasonable, but I know nothing about x86-64 asm or how to generate anything to test it. Thanks for the prompt response and my apologies for the half-baked problem report. Cyrus On Jan 6, 2006, at 7:06 PM, Juho Snellman wrote: > <ch...@bo...> wrote: >> I noticed there were some recent changes to the way we emit MOV >> instructions on x86-64. I know nothing about x86-64, but I am seeing >> an error: > > Probably just a coincidence. The problem has always existed (and has > always been detected by the compiler at the same stage). Basically the > float sap setters were bogus in situations where the return value was > used, e.g. > > (defun foo (sap) > (let ((x (setf (sb-vm::sap-ref-double sap 0) 1d0))) > (1+ x))) > >> bogus arguments to MOV: #<SB-C:TN t1[FLOAT0]> <SB-C:TN t2[FLOAT1]> in >> SB-VM::MOV-INST-EMITTER. I don't think I'm doing anything obviously >> wrong (stale fasls, etc...). >> >> This is happening during a DEFINE-ALIEN-CALLBACK. Stack trace >> attached. >> >> Any suggestions? > > Does the following patch fix this for you? > > Index: src/compiler/x86-64/macros.lisp > =================================================================== > RCS file: /cvsroot/sbcl/sbcl/src/compiler/x86-64/macros.lisp,v > retrieving revision 1.15 > diff -u -r1.15 macros.lisp > --- src/compiler/x86-64/macros.lisp 15 Nov 2005 12:49:30 -0000 1.15 > +++ src/compiler/x86-64/macros.lisp 7 Jan 2006 02:50:16 -0000 > @@ -19,7 +19,13 @@ > (once-only ((n-dst dst) > (n-src src)) > `(unless (location= ,n-dst ,n-src) > - (inst mov ,n-dst ,n-src)))) > + (sc-case ,n-dst > + (single-reg > + (inst movss ,n-dst ,n-src)) > + (double-reg > + (inst movsd ,n-dst ,n-src)) > + (t > + (inst mov ,n-dst ,n-src)))))) > > (defmacro make-ea-for-object-slot (ptr slot lowtag) > `(make-ea :qword :base ,ptr :disp (- (* ,slot n-word- > bytes) ,lowtag))) > > -- > Juho Snellman > > > > ------------------------------------------------------- > This SF.net email is sponsored by: Splunk Inc. Do you grep through > log files > for problems? Stop! Download the new AJAX search engine that makes > searching your log files as easy as surfing the web. DOWNLOAD > SPLUNK! > http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click > _______________________________________________ > Sbcl-devel mailing list > Sbc...@li... > https://lists.sourceforge.net/lists/listinfo/sbcl-devel |