error: 'aux_closure' undeclared (first use in this function)

Daniel Kochmański daniel at turtleware.eu
Fri Apr 8 05:57:38 UTC 2016


Hej, I believe I've fixed this bug recently. Could you check with the git head version?

Regards, Daniel

Dnia 7 kwietnia 2016 23:36:59 CEST, Tomas Hlavaty <tom at logand.com> napisał(a):
>Hi,
>
>I was curious how far would ecl get when compiling sbcl and found that
>ecl seems to struggle with compiling local functions (error log
>bellow).
>
>The problem is that the huge function parse-lambda-list being compiled
>has a flet (scan-opt/key) inside, which is compiled into a separate C
>function which does not see the other stuff, namely "volatile struct
>ecl_cclosure aux_closure;" is missing in the separate C function for
>flet scan-opt/key.
>
>I could not find a reduced testcase but I guess this is a bug in the
>ecl
>compiler?
>
>Tomas
>
>=====
>
>;;; Compiling src/compiler/parse-lambda-list.lisp.
>;;; OPTIMIZE levels: Safety=2, Space=0, Speed=3, Debug=0
>;;;
>;;; Compiling (DEFMACRO LAMBDA-LIST-KEYWORD-MASK ...).
>;;; Compiling (DEFUN LL-KWDS-RESTP ...).
>;;; Compiling (DEFUN LL-KWDS-KEYP ...).
>;;; Compiling (DEFUN LL-KWDS-ALLOWP ...).
>;;; Compiling (DEFUN PARSE-LAMBDA-LIST ...).
>;;; Compiling (DEFUN PARSE-DS-LAMBDA-LIST ...).
>;;; Compiling (DEFMACRO WITH-DS-LAMBDA-LIST-PARTS ...).
>;;; Compiling (DEFUN PARSE-OPTIONAL-ARG-SPEC ...).
>;;; Compiling (DEFUN PARSE-KEY-ARG-SPEC ...).
>;;; Compiling (DEFUN META-ABSTRACTIFY-DS-LAMBDA-LIST ...).
>;;; Compiling (DEFUN MAKE-LAMBDA-LIST ...).
>;;; Compiling (DEFUN UNPARSE-DS-LAMBDA-LIST ...).
>;;; Compiling (DEFUN DS-LAMBDA-LIST-VARIABLES ...).
>;;; Compiling (DEFUN DS-LAMBDA-LIST-MATCH-P ...).
>;;; Compiling (DEFUN DS-LAMBDA-LIST-MATCHER ...).
>;;; Compiling (DEFUN EMIT-DS-LAMBDA-LIST-MATCH ...).
>;;; Compiling (DEFUN EMIT-DS-BIND-CHECK ...).
>;;; Compiling (DEFUN EXPAND-DS-BIND ...).
>;;; Compiling (DEFUN COMPILER-MACRO-ARGS ...).
>;;; Compiling (DEFUN GET-DS-BIND-CONTEXT ...).
>;;; Compiling (DEFUN DS-BIND-ERROR ...).
>;;; Compiling (DEFUN CHECK-DS-BIND-KEYS ...).
>;;; Compiling (DEFUN CHECK-DS-LIST ...).
>;;; Compiling (DEFUN CHECK-DS-LIST/&REST ...).
>;;; Compiling (DEFUN CHECK-DS-LIST/&KEY ...).
>;;; Compiling (DEFUN CMACRO-CHECK-DS-LIST/&KEY ...).
>;;; Compiling (DEFUN DS-GETF ...).
>;;; Compiling (DEF!MACRO NAMED-DS-BIND ...).
>;;; Compiling (DEFUN MAKE-MACRO-LAMBDA ...).
>;;; Compiling (DEFVAR *STRIP-LAMBA-LIST-RETAIN-AUX* ...).
>;;; Compiling (DEFUN STRIP-LAMBDA-LIST ...).
>;;; End of Pass 1.
>;;; Emitting code for LAMBDA-LIST-KEYWORD-MASK.
>;;; Emitting code for LL-KWDS-RESTP.
>;;; Emitting code for LL-KWDS-KEYP.
>;;; Emitting code for LL-KWDS-ALLOWP.
>;;; Emitting code for PARSE-LAMBDA-LIST.
>;;; Emitting code for CROAK.
>;;; Emitting code for DEFAULTP.
>;;; Emitting code for NEED-BINDABLE.
>;;; Emitting code for NEED-SYMBOL.
>;;; Emitting code for NEED-ARG.
>;;; Emitting code for REPORT-SUSPICIOUS.
>;;; Emitting code for CHECK-SUSPICIOUS.
>;;; Emitting code for PROBABLY-LL-KEYWORD-P.
>;;; Emitting code for DESTRUCTURING-P.
>;;; Emitting code for SCAN-OPT/KEY.
>;;; Emitting code for PARSE-DS-LAMBDA-LIST.
>;;; Emitting code for PARSE*.
>;;; Emitting code for PARSE.
>;;; Emitting code for #:G116.
>;;; Emitting code for #:G117.
>;;; Emitting code for WITH-DS-LAMBDA-LIST-PARTS.
>;;; Emitting code for PARSE-OPTIONAL-ARG-SPEC.
>;;; Emitting code for PARSE-KEY-ARG-SPEC.
>;;; Emitting code for META-ABSTRACTIFY-DS-LAMBDA-LIST.
>;;; Emitting code for RECURSE.
>;;; Emitting code for PROCESS-OPT/KEY.
>;;; Emitting code for #:G175.
>;;; Emitting code for MAKE-LAMBDA-LIST.
>;;; Emitting code for UNPARSE-DS-LAMBDA-LIST.
>;;; Emitting code for MEMOIZE.
>;;; Emitting code for RECURSE.
>;;; Emitting code for MAYBE-DEFAULT.
>;;; Emitting code for PROCESS-OPT.
>;;; Emitting code for #:G230.
>;;; Emitting code for DS-LAMBDA-LIST-VARIABLES.
>;;; Emitting code for SCAN.
>;;; Emitting code for SUPPLIEDP-VAR.
>;;; Emitting code for COPY.
>;;; Emitting code for RECURSE.
>;;; Emitting code for DS-LAMBDA-LIST-MATCH-P.
>;;; Emitting code for RECURSE.
>;;; Emitting code for DS-LAMBDA-LIST-MATCHER.
>;;; Emitting code for EMIT-DS-LAMBDA-LIST-MATCH.
>;;; Emitting code for EMIT-DS-BIND-CHECK.
>;;; Emitting code for EXPAND-DS-BIND.
>;;; Emitting code for DESCEND.
>;;; Emitting code for GEN-TEST.
>;;; Emitting code for BIND-IF.
>;;; Emitting code for BIND-PAT.
>;;; Emitting code for CAST/POP.
>;;; Emitting code for COMPILER-MACRO-ARGS.
>;;; Emitting code for GET-DS-BIND-CONTEXT.
>;;; Emitting code for DS-BIND-ERROR.
>;;; Emitting code for CHECK-DS-BIND-KEYS.
>;;; Emitting code for CHECK-DS-LIST.
>;;; Emitting code for CHECK-DS-LIST/&REST.
>;;; Emitting code for CHECK-DS-LIST/&KEY.
>;;; Emitting code for CMACRO-CHECK-DS-LIST/&KEY.
>;;; Emitting code for DS-GETF.
>;;; Emitting code for NAMED-DS-BIND.
>;;; Emitting code for MAKE-MACRO-LAMBDA.
>;;; Emitting code for #:G485.
>;;; Emitting code for STRIP-LAMBDA-LIST.
>;;; Emitting code for #:G489.
>;;; Emitting code for #:G509.
>In file included from
>/nix/store/4ha569nsijgnp7ywq89prpn6643h132m-ecl-16.1.2/include/ecl/ecl.h:84:0,
>from
>/nix/store/4ha569nsijgnp7ywq89prpn6643h132m-ecl-16.1.2/include/ecl/ecl-cmp.h:29,
>                 from obj/from-host/src/compiler/parse-lambda-list.c:5:
>obj/from-host/src/compiler/parse-lambda-list.c: In function
>'LC14scan_opt_key':
>obj/from-host/src/compiler/parse-lambda-list.c:1222:15: error:
>'aux_closure' undeclared (first use in this function)
>if
>(Null((aux_closure.env=env0,cl_env_copy->function=(cl_object)&aux_closure,LC12defaultp(2,
>v5arg, v2what_kind)))) { goto L8; }
>               ^
>/nix/store/4ha569nsijgnp7ywq89prpn6643h132m-ecl-16.1.2/include/ecl/cons.h:27:27:
>note: in definition of macro 'Null'
> #define Null(x)         ((x)==ECL_NIL)
>                           ^
>obj/from-host/src/compiler/parse-lambda-list.c:1222:15: note: each
>undeclared identifier is reported only once for each function it
>appears in
>if
>(Null((aux_closure.env=env0,cl_env_copy->function=(cl_object)&aux_closure,LC12defaultp(2,
>v5arg, v2what_kind)))) { goto L8; }
>               ^
>/nix/store/4ha569nsijgnp7ywq89prpn6643h132m-ecl-16.1.2/include/ecl/cons.h:27:27:
>note: in definition of macro 'Null'
> #define Null(x)         ((x)==ECL_NIL)
>                           ^
>obj/from-host/src/compiler/parse-lambda-list.c:1222:31: error: 'env0'
>undeclared (first use in this function)
>if
>(Null((aux_closure.env=env0,cl_env_copy->function=(cl_object)&aux_closure,LC12defaultp(2,
>v5arg, v2what_kind)))) { goto L8; }
>                               ^
>/nix/store/4ha569nsijgnp7ywq89prpn6643h132m-ecl-16.1.2/include/ecl/cons.h:27:27:
>note: in definition of macro 'Null'
> #define Null(x)         ((x)==ECL_NIL)
>                           ^
>;;; Internal error:
>;;;   ** Error code 1 when executing
>;;; (RUN-PROGRAM "gcc" ("-I."
>"-I/nix/store/4ha569nsijgnp7ywq89prpn6643h132m-ecl-16.1.2/include/"
>"-I/nix/store/6f3nbgg28xxyq2mdzdxl0j06dry90sgl-gmp-5.1.3/include"
>"-I/nix/store/nnjvmplfmzpc22ls4p9h4c7c61rppzc5-libffi-3.2.1/include"
>"-D_GNU_SOURCE" ...))
>Condition of type: SIMPLE-ERROR
>couldn't compile "src/compiler/parse-lambda-list.lisp"
>
>Available restarts:
>
>1. (RESTART-TOPLEVEL) Go back to Top-Level REPL.
>
>Broken at SB-COLD::LOAD-OR-CLOAD-XCOMPILER. In: #<process TOP-LEVEL>.
>File:
>#P"/tmp/nix-build-sbcl-1.3.3.drv-0/sbcl-1.3.3/src/cold/defun-load-or-cload-xcompiler.lisp"
>(Position #1305)
>>> 

-- 
Sent from my Android device with K-9 Mail. Please excuse my brevity.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20160408/650c87ed/attachment.html>


More information about the ecl-devel mailing list