From dbdc44db15ef9daa24d92c59d4e158f3963a172f Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Sun, 7 Mar 2021 20:19:20 +0100 Subject: [PATCH] Allow for `comp-native-driver-options' to work as a file-local variable. --- lisp/emacs-lisp/bytecomp.el | 5 ++++- lisp/emacs-lisp/comp.el | 4 ++++ src/comp.c | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 4169b0756df..3ee8113c4f4 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el @@ -2272,7 +2272,10 @@ With argument ARG, insert value in current buffer after the form." (defvar comp-speed) (push `(comp-speed . ,comp-speed) byte-native-qualities) (defvar comp-debug) - (push `(comp-debug . ,comp-debug) byte-native-qualities)) + (push `(comp-debug . ,comp-debug) byte-native-qualities) + (defvar comp-native-driver-options) + (push `(comp-native-driver-options . ,comp-native-driver-options) + byte-native-qualities)) ;; Compile the forms from the input buffer. (while (progn diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 70e10644ca8..cedbb786237 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -712,6 +712,8 @@ Returns ELT." :documentation "Default speed for this compilation unit.") (debug comp-debug :type number :documentation "Default debug level for this compilation unit.") + (driver-options comp-native-driver-options :type list + :documentation "Options for the GCC driver.") (top-level-forms () :type list :documentation "List of spilled top level forms.") (funcs-h (make-hash-table :test #'equal) :type hash-table @@ -1298,6 +1300,8 @@ clashes." byte-native-qualities) (comp-ctxt-debug comp-ctxt) (alist-get 'comp-debug byte-native-qualities) + (comp-ctxt-driver-options comp-ctxt) (alist-get 'comp-native-driver-options + byte-native-qualities) (comp-ctxt-top-level-forms comp-ctxt) (cl-loop for form in (reverse byte-to-native-top-level-forms) diff --git a/src/comp.c b/src/comp.c index bea9945bbfe..b2d8b8ec987 100644 --- a/src/comp.c +++ b/src/comp.c @@ -516,6 +516,7 @@ typedef struct { typedef struct { EMACS_INT speed; EMACS_INT debug; + Lisp_Object driver_options; gcc_jit_context *ctxt; gcc_jit_type *void_type; gcc_jit_type *bool_type; @@ -4333,7 +4334,7 @@ DEFUN ("comp-native-driver-options-effective-p", static void add_driver_options (void) { - Lisp_Object options = Fsymbol_value (Qcomp_native_driver_options); + Lisp_Object options = comp.driver_options; #if defined (LIBGCCJIT_HAVE_gcc_jit_context_add_driver_option) \ || defined (WINDOWSNT) @@ -4400,6 +4401,7 @@ DEFUN ("comp--compile-ctxt-to-file", Fcomp__compile_ctxt_to_file, eassert (comp.speed < INT_MAX); comp.debug = XFIXNUM (CALL1I (comp-ctxt-debug, Vcomp_ctxt)); eassert (comp.debug < INT_MAX); + comp.driver_options = CALL1I (comp-ctxt-driver-options, Vcomp_ctxt); if (comp.debug) gcc_jit_context_set_bool_option (comp.ctxt, -- 2.39.5