Hello Camm, A new problem now, unfortunately, unseen before latest commit.
Not pressing as I belive I have a workaround. ==----- test.lisp ---- (defun test (obj1 &optional (obj2 nil)) (let ((obj2 (or obj2 t))) (cond ((and (null obj2) (stringp obj1) (pathname-type obj1)) (values obj1)) (t nil)))) ==-------------------- Issue seems to be with optimization. GCL knows OBJ2 above is non-null. The AND is transformed such that even if STRINGP returns NIL, PATHNAME-TYPE is still executed, leading to a type error. steve:tmp> gcl GCL (GNU Common Lisp) 2.7.0 ANSI Jun 30 2007 00:17:31 Source License: LGPL(gcl,gmp,pargcl), GPL(unexec,bfd,xgcl) Binary License: GPL due to GPL'ed components: (XGCL READLINE BFD UNEXEC) Modifications of this banner must retain notice of a compatible license Dedicated to the memory of W. Schelter Use (help) to get some basic information on how to use GCL. Temporary directory for compiler files set to /tmp/ >(si::use-fast-links nil) NIL >(compile-file "test.lisp") ;; Compiling test.lisp. ;; End of Pass 1. ;; End of Pass 2. ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, (Debug quality ignored) ;; Finished compiling test.o. #P"/home/steve/tmp/test.o" NIL NIL >(load "test.o") ;; Loading test.o ;; start address -T 0xa33e50 ;; Finished loading test.o 84 >(test (list)) Error: Signalled by TEST. Condition in TEST [or a callee]: INTERNAL-SIMPLE-TYPE-ERROR: NIL is not of type PATHNAME: Broken at TEST. Type :H for Help. 1 (Continue) Return to top level. >>:bt #0 TEST {obj1=nil,obj2=nil,loc2=nil,loc3=nil,loc4=nil,loc5=nil,loc6=nil} [ihs=3] #1 EVAL {loc0=nil,loc1=nil,loc2=nil,loc3=#<compiled-function test>} [ihs=2] >>:q Top level. >(disassemble 'test) ;; Compiling /tmp/gazonk_12078_0.lsp. ;; End of Pass 1. ;; End of Pass 2. ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, (Debug quality ignored) ;; Finished compiling /tmp/gazonk_12078_0.o. #include "gazonk_12078_0.h" void init_code(){do_init((void *)VV);} /* local entry for function TEST */ static object LI1(object V1,object first,...) { va_list ap; int narg = VFUN_NARGS; VMB1 VMS1 VMV1 {object V2; object V3; va_start(ap,first); V2= V1; narg -= 1; if (narg <= 0) goto T1; else { V3= first;} --narg; goto T2; goto T1; T1:; V3= Cnil; goto T2; T2:; goto TTL; TTL:; {object V4; if(((V3))==Cnil){ goto T6;} V4= (V3); goto T4; goto T6; T6:; V4= Ct; goto T4; T4:; (void)(type_of((V2))==t_string); base[0]= (V2); vs_top=(vs_base=base+0)+1; Lpathname_type(); vs_top=sup; V5= ({register object _z=vs_base[0];_z;}); if(!((V5)==(Cnil))){ goto T12;} goto T10; goto T12; T12:; goto T10; T10:; {object V6 = Cnil;VMR1 (V6);}} va_end(ap); base[0]=base[0]; return Cnil;} } #(#((%INIT . #((LET ((*DISABLE-RECOMPILE* T)) (MFVFUN 'TEST 0 131073 0) (ADD-HASH 'TEST '((T *) NULL) '((PATHNAME-TYPE (T) T) (STRINGP (T) BOOLEAN)) COMMON-LISP-USER LISPLAMBDA ! OBJ1 ,&OPTIONA! OBJ,DECLA,OPTIMIZ,SAFETY ,BLOCK TEST ,LE. ,OR.,T ,IF ,PATHNAME-TYPE,VALUES- '/tmp/gazonk_12078_0.lsp) (DEBUGGER 'TEST '(OBJ1 OBJ2))) (DO-RECOMPILE))))) static object LI1(object,object,...); #define VMB1 register object *base=vs_top; object V5; #define VMS1 register object *sup=vs_top+1;vs_top=sup; #define VMV1 vs_check; #define VMR1(VMT1) vs_top=base ; return(VMT1); #define VM1 1 static void * VVi[1]={ #define Cdata VV[0] (void *)(LI1) }; #define VV (VVi) /tmp/gazonk_12078_0.o: file format elf32-i386 Disassembly of section .text: 00000000 <init_code>: 0: 68 00 00 00 00 push $0x0 5: e8 fc ff ff ff call 6 <init_code+0x6> a: 58 pop %eax b: c3 ret 0000000c <LI1>: c: 53 push %ebx d: 8b 1d 00 00 00 00 mov 0x0,%ebx 13: 8d 43 04 lea 0x4(%ebx),%eax 16: 3b 05 00 00 00 00 cmp 0x0,%eax 1c: a3 00 00 00 00 mov %eax,0x0 21: 72 05 jb 28 <LI1+0x1c> 23: e8 fc ff ff ff call 24 <LI1+0x18> 28: 8b 44 24 08 mov 0x8(%esp),%eax 2c: 89 03 mov %eax,(%ebx) 2e: 8d 43 04 lea 0x4(%ebx),%eax 31: 89 1d 00 00 00 00 mov %ebx,0x0 37: a3 00 00 00 00 mov %eax,0x0 3c: e8 fc ff ff ff call 3d <LI1+0x31> 41: 89 1d 00 00 00 00 mov %ebx,0x0 47: b8 00 00 00 00 mov $0x0,%eax 4c: 5b pop %ebx 4d: c3 ret NIL Thanks again, Steve _______________________________________________ Axiom-developer mailing list Axiom-developer@nongnu.org http://lists.nongnu.org/mailman/listinfo/axiom-developer