On Thu, May 16, 2013 at 3:22 PM, Matthew Mondor <mm_li...@pulsar-zone.net> wrote: > Would it be possible to indicate what you expect different below? > >> /* Compiler: ECL 13.4.1 */ >> /* Date: 2013/5/16 16:00 (yyyy/mm/dd) */ >> /* Machine: Linux 3.8.7-201.fc18.x86_64 x86_64 */ >> /* Source: var.lisp */ >> #include <ecl/ecl-cmp.h> >> #include "var.eclh" >> /* function definition for TAK */ >> /* optimize speed 3, debug 0, space 0, safety 0 */ >> static cl_object L1tak(cl_object v1x, cl_object v2y, cl_object v3z) >> { >> cl_object T0; >> const cl_env_ptr cl_env_copy = ecl_process_env(); >> cl_object value0; >> cl_fixnum v4x; >> cl_fixnum v5y; >> cl_fixnum v6z; >> v4x = ecl_fixnum(v1x); >> v5y = ecl_fixnum(v2y); >> v6z = ecl_fixnum(v3z); >> TTL: >> if ((v5y)<(v4x)) { goto L1; } >> value0 = ecl_make_fixnum(v6z); >> cl_env_copy->nvalues = 1; >> return value0; >> L1:; >> { >> cl_fixnum v7; >> T0 = ecl_make_integer((v4x)-1); >> v7 = ecl_fixnum(L1tak(T0, ecl_make_fixnum(v5y), ecl_make_fixnum(v6z))); >> { >> cl_fixnum v8; >> T0 = ecl_make_integer((v5y)-1); >> v8 = ecl_fixnum(L1tak(T0, ecl_make_fixnum(v6z), ecl_make_fixnum(v4x))); >> T0 = ecl_make_integer((v6z)-1); >> v6z = ecl_fixnum(L1tak(T0, ecl_make_fixnum(v4x), ecl_make_fixnum(v5y))); >> v5y = v8; >> v4x = v7; >> } >> } >> goto TTL; >> } > > Above I can see inline use of < rather than a generic comparison > function call, as well as inline use of -1 instead of a generic > substraction function call, along with the required conversions to > fixnum...
Sorry for the missing context; the doc page I got the 'tak' example from indicates that this is the sort of output you should expect: /* local entry for function TAK */ static int LI1(register int V1,register int V2,register int V3) { VT3 VLEX3 CLSR3 TTL: if (V2 < V1) { goto L2;} return(V3); L2: { int V5; V5 = LI1((V1)-1,V2,V3); { int V6; V6 = LI1((V2)-1,V3,V1); V3 = LI1((V3)-1,V1,V2); V2 = V6; V1 = V5;}} goto TTL; ;;; Note: Tail-recursive call of TAK was replaced by iteration. } Note the signature of Ll1 and the lack of conversion functions. I am simply interested to see how good the ECL compiler is compared to hand-coding C, and type information is obviously a large part of that. Cheers, Jason ------------------------------------------------------------------------------ AlienVault Unified Security Management (USM) platform delivers complete security visibility with the essential security capabilities. Easily and efficiently configure, manage, and operate all of your security controls from a single console and one unified framework. Download a free trial. http://p.sf.net/sfu/alienvault_d2d _______________________________________________ Ecls-list mailing list Ecls-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ecls-list