]> git.eshelyaron.com Git - emacs.git/commit
Port to C compilers that lack size-0 arrays
authorPaul Eggert <eggert@cs.ucla.edu>
Fri, 3 Dec 2021 03:01:33 +0000 (19:01 -0800)
committerPaul Eggert <eggert@cs.ucla.edu>
Fri, 3 Dec 2021 03:03:14 +0000 (19:03 -0800)
commit9c222b9c1a7f91497a37567b4d7de3a511fff069
treea0e9016aac8318734b5e9d744f9cc1502bef72f3
parentfed35a89517aa4e282273f7e3c75bafd4e698ce4
Port to C compilers that lack size-0 arrays

The C standard does not allow size-zero arrays, so redo struct
Lisp_Subr to not use size-zero arrays when native compilation is
not being used.  Formerly, the code was using size-zero arrays (a
GNU C extension) to avoid using memory unnecessarily when
HAVE_NATIVE_COMP is not defined.  Replace this hack with the
more-traditional hack of putting the relevant members inside
‘#ifdef HAVE_NATIVE_COMP’.
* src/alloc.c (cleanup_vector, mark_object):
* src/comp.c (make_subr):
* src/data.c (Fsubr_native_lambda_list, Fsubr_native_comp_unit):
* src/eval.c (init_eval_once, funcall_lambda):
* src/lisp.h (SUBR_NATIVE_COMPILEDP, SUBR_NATIVE_COMPILED_DYNP)
(SUBR_TYPE):
* src/lread.c (Fload):
Conditionally compile with ‘#ifdef HAVE_NATIVE_COMP’ instead of
with ‘if (NATIVE_COMP_FLAG)’.  Redo members like native_comp_u[0]
to be plain native_comp_u.  Put all uses of these members inside
‘#ifdef HAVE_NATIVE_COMP’.
* src/lisp.h (struct Lisp_Subr): Members native_comp_u,
native_c_name, lambda_list, type are now all ifdeffed out if
HAVE_NATIVE_COMP is not defined, instead of being size-zero
arrays.  All uses changed.
* src/pdumper.c (dump_subr, dump_cold_native_subr)
(dump_do_dump_relocation):
* src/comp.h (NATIVE_COMP_FLAG): Remove; no longer needed.
src/alloc.c
src/comp.c
src/comp.h
src/data.c
src/eval.c
src/lisp.h
src/lread.c
src/pdumper.c