aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndrea Corallo2019-06-30 13:30:49 +0200
committerAndrea Corallo2020-01-01 11:33:47 +0100
commit0bdbd4a6012be487e440521e331c6dfc330c2197 (patch)
tree8950091fa730007e1b141ab7393da1d8493dc54d /src
parent45c1b64ce68ea4416141d66af07bb24f4fda9930 (diff)
downloademacs-0bdbd4a6012be487e440521e331c6dfc330c2197.tar.gz
emacs-0bdbd4a6012be487e440521e331c6dfc330c2197.zip
introduce stack_el_t
Diffstat (limited to 'src')
-rw-r--r--src/comp.c145
1 files changed, 75 insertions, 70 deletions
diff --git a/src/comp.c b/src/comp.c
index fa5b6217169..027090dc6ee 100644
--- a/src/comp.c
+++ b/src/comp.c
@@ -47,7 +47,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
47 CHECK_STACK; \ 47 CHECK_STACK; \
48 gcc_jit_block_add_assignment (comp.block->gcc_bb, \ 48 gcc_jit_block_add_assignment (comp.block->gcc_bb, \
49 NULL, \ 49 NULL, \
50 *stack, \ 50 (stack)->gcc_lval, \
51 gcc_jit_lvalue_as_rvalue(obj)); \ 51 gcc_jit_lvalue_as_rvalue(obj)); \
52 stack++; \ 52 stack++; \
53 } while (0) 53 } while (0)
@@ -57,7 +57,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
57 CHECK_STACK; \ 57 CHECK_STACK; \
58 gcc_jit_block_add_assignment (comp.block->gcc_bb, \ 58 gcc_jit_block_add_assignment (comp.block->gcc_bb, \
59 NULL, \ 59 NULL, \
60 *stack, \ 60 (stack)->gcc_lval, \
61 (obj)); \ 61 (obj)); \
62 stack++; \ 62 stack++; \
63 } while (0) 63 } while (0)
@@ -69,7 +69,7 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
69 CHECK_STACK; \ 69 CHECK_STACK; \
70 gcc_jit_block_add_assignment (prologue_bb, \ 70 gcc_jit_block_add_assignment (prologue_bb, \
71 NULL, \ 71 NULL, \
72 *stack, \ 72 (stack)->gcc_lval, \
73 gcc_jit_param_as_rvalue(obj)); \ 73 gcc_jit_param_as_rvalue(obj)); \
74 stack++; \ 74 stack++; \
75 } while (0) 75 } while (0)
@@ -80,31 +80,31 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
80 80
81#define POP0 81#define POP0
82 82
83#define POP1 \ 83#define POP1 \
84 do { \ 84 do { \
85 stack--; \ 85 stack--; \
86 CHECK_STACK; \ 86 CHECK_STACK; \
87 args[0] = gcc_jit_lvalue_as_rvalue (*stack); \ 87 args[0] = gcc_jit_lvalue_as_rvalue ((stack)->gcc_lval); \
88 } while (0) 88 } while (0)
89 89
90#define POP2 \ 90#define POP2 \
91 do { \ 91 do { \
92 stack--; \ 92 stack--; \
93 CHECK_STACK; \ 93 CHECK_STACK; \
94 args[1] = gcc_jit_lvalue_as_rvalue (*stack); \ 94 args[1] = gcc_jit_lvalue_as_rvalue ((stack)->gcc_lval); \
95 stack--; \ 95 stack--; \
96 args[0] = gcc_jit_lvalue_as_rvalue (*stack); \ 96 args[0] = gcc_jit_lvalue_as_rvalue ((stack)->gcc_lval); \
97 } while (0) 97 } while (0)
98 98
99#define POP3 \ 99#define POP3 \
100 do { \ 100 do { \
101 stack--; \ 101 stack--; \
102 CHECK_STACK; \ 102 CHECK_STACK; \
103 args[2] = gcc_jit_lvalue_as_rvalue (*stack); \ 103 args[2] = gcc_jit_lvalue_as_rvalue ((stack)->gcc_lval); \
104 stack--; \ 104 stack--; \
105 args[1] = gcc_jit_lvalue_as_rvalue (*stack); \ 105 args[1] = gcc_jit_lvalue_as_rvalue ((stack)->gcc_lval); \
106 stack--; \ 106 stack--; \
107 args[0] = gcc_jit_lvalue_as_rvalue (*stack); \ 107 args[0] = gcc_jit_lvalue_as_rvalue ((stack)->gcc_lval); \
108 } while (0) 108 } while (0)
109 109
110/* Fetch the next byte from the bytecode stream. */ 110/* Fetch the next byte from the bytecode stream. */
@@ -146,11 +146,11 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
146 This is done by passing a reference to the first obj involved on the stack. 146 This is done by passing a reference to the first obj involved on the stack.
147*/ 147*/
148 148
149#define EMIT_CALL_N_REF(name, nargs) \ 149#define EMIT_CALL_N_REF(name, nargs) \
150 do { \ 150 do { \
151 DISCARD (nargs); \ 151 DISCARD (nargs); \
152 res = emit_call_n_ref ((name), (nargs), *stack); \ 152 res = emit_call_n_ref ((name), (nargs), (stack)->gcc_lval); \
153 PUSH_RVAL (res); \ 153 PUSH_RVAL (res); \
154 } while (0) 154 } while (0)
155 155
156#define EMIT_ARITHCOMPARE(comparison) \ 156#define EMIT_ARITHCOMPARE(comparison) \
@@ -176,10 +176,15 @@ do { \
176 basic_block_t *(name); \ 176 basic_block_t *(name); \
177 SAFE_ALLOCA_BLOCK ((name), (func), STR(name)) 177 SAFE_ALLOCA_BLOCK ((name), (func), STR(name))
178 178
179/* Element of the meta stack. */
180typedef struct {
181 gcc_jit_lvalue *gcc_lval;
182} stack_el_t;
183
179typedef struct { 184typedef struct {
180 gcc_jit_block *gcc_bb; 185 gcc_jit_block *gcc_bb;
181 /* When non zero indicates a stack pointer restart. */ 186 /* When non zero indicates a stack pointer restart. */
182 gcc_jit_lvalue **top; 187 stack_el_t *top;
183 bool terminated; 188 bool terminated;
184} basic_block_t; 189} basic_block_t;
185 190
@@ -298,14 +303,14 @@ bcall0 (Lisp_Object f)
298 order. */ 303 order. */
299 304
300INLINE static void 305INLINE static void
301pop (unsigned n, gcc_jit_lvalue ***stack_ref, gcc_jit_rvalue *args[]) 306pop (unsigned n, stack_el_t **stack_ref, gcc_jit_rvalue *args[])
302{ 307{
303 gcc_jit_lvalue **stack = *stack_ref; 308 stack_el_t *stack = *stack_ref;
304 309
305 while (n--) 310 while (n--)
306 { 311 {
307 stack--; 312 stack--;
308 args[n] = gcc_jit_lvalue_as_rvalue (*stack); 313 args[n] = gcc_jit_lvalue_as_rvalue (stack->gcc_lval);
309 } 314 }
310 315
311 *stack_ref = stack; 316 *stack_ref = stack;
@@ -2039,9 +2044,9 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2039 2044
2040 /* Meta-stack we use to flat the bytecode written for push and pop 2045 /* Meta-stack we use to flat the bytecode written for push and pop
2041 Emacs VM.*/ 2046 Emacs VM.*/
2042 gcc_jit_lvalue **stack_base, **stack, **stack_over; 2047 stack_el_t *stack_base, *stack, *stack_over;
2043 stack_base = stack = 2048 SAFE_NALLOCA (stack_base, sizeof (stack_el_t), stack_depth);
2044 (gcc_jit_lvalue **) xmalloc (stack_depth * sizeof (gcc_jit_lvalue *)); 2049 stack = stack_base;
2045 stack_over = stack_base + stack_depth; 2050 stack_over = stack_base + stack_depth;
2046 2051
2047 if (FIXNUMP (args_template)) 2052 if (FIXNUMP (args_template))
@@ -2081,13 +2086,13 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2081 "local"); 2086 "local");
2082 2087
2083 for (int i = 0; i < stack_depth; ++i) 2088 for (int i = 0; i < stack_depth; ++i)
2084 stack[i] = gcc_jit_context_new_array_access ( 2089 stack[i].gcc_lval = gcc_jit_context_new_array_access (
2085 comp.ctxt, 2090 comp.ctxt,
2086 NULL, 2091 NULL,
2087 gcc_jit_lvalue_as_rvalue (meta_stack_array), 2092 gcc_jit_lvalue_as_rvalue (meta_stack_array),
2088 gcc_jit_context_new_rvalue_from_int (comp.ctxt, 2093 gcc_jit_context_new_rvalue_from_int (comp.ctxt,
2089 comp.int_type, 2094 comp.int_type,
2090 i)); 2095 i));
2091 2096
2092 gcc_jit_block *prologue_bb = 2097 gcc_jit_block *prologue_bb =
2093 gcc_jit_function_new_block (comp.func, "prologue"); 2098 gcc_jit_function_new_block (comp.func, "prologue");
@@ -2132,15 +2137,16 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2132 goto stack_ref; 2137 goto stack_ref;
2133 CASE (Bstack_ref5); 2138 CASE (Bstack_ref5);
2134 stack_ref: 2139 stack_ref:
2135 PUSH_LVAL (stack_base[(stack - stack_base) - (op - Bstack_ref) - 1]); 2140 PUSH_LVAL (
2141 stack_base[(stack - stack_base) - (op - Bstack_ref) - 1].gcc_lval);
2136 break; 2142 break;
2137 2143
2138 CASE (Bstack_ref6); 2144 CASE (Bstack_ref6);
2139 PUSH_LVAL (stack_base[(stack - stack_base) - FETCH - 1]); 2145 PUSH_LVAL (stack_base[(stack - stack_base) - FETCH - 1].gcc_lval);
2140 break; 2146 break;
2141 2147
2142 CASE (Bstack_ref7); 2148 CASE (Bstack_ref7);
2143 PUSH_LVAL (stack_base[(stack - stack_base) - FETCH2 - 1]); 2149 PUSH_LVAL (stack_base[(stack - stack_base) - FETCH2 - 1].gcc_lval);
2144 break; 2150 break;
2145 2151
2146 CASE (Bvarref7); 2152 CASE (Bvarref7);
@@ -2262,7 +2268,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2262 { 2268 {
2263 ptrdiff_t nargs = op + 1; 2269 ptrdiff_t nargs = op + 1;
2264 DISCARD (nargs); 2270 DISCARD (nargs);
2265 res = emit_call_n_ref ("Ffuncall", nargs, *stack); 2271 res = emit_call_n_ref ("Ffuncall", nargs, stack->gcc_lval);
2266 PUSH_RVAL (res); 2272 PUSH_RVAL (res);
2267 break; 2273 break;
2268 } 2274 }
@@ -2365,7 +2371,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2365 2371
2366 emit_cond_jump (res, push_h_val_block, &bb_map[pc]); 2372 emit_cond_jump (res, push_h_val_block, &bb_map[pc]);
2367 2373
2368 gcc_jit_lvalue **stack_to_restore = stack; 2374 stack_el_t *stack_to_restore = stack;
2369 /* This emit the handler part. */ 2375 /* This emit the handler part. */
2370 2376
2371 basic_block_t *bb_orig = comp.block; 2377 basic_block_t *bb_orig = comp.block;
@@ -2384,10 +2390,10 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2384 NULL, 2390 NULL,
2385 comp.handler_next_field))); 2391 comp.handler_next_field)));
2386 /* PUSH (c->val); */ 2392 /* PUSH (c->val); */
2387 PUSH_LVAL ( 2393 PUSH_LVAL (gcc_jit_rvalue_dereference_field (
2388 gcc_jit_rvalue_dereference_field (gcc_jit_lvalue_as_rvalue (c), 2394 gcc_jit_lvalue_as_rvalue (c),
2389 NULL, 2395 NULL,
2390 comp.handler_val_field)); 2396 comp.handler_val_field));
2391 bb_map[handler_pc].top = stack; 2397 bb_map[handler_pc].top = stack;
2392 comp.block = bb_orig; 2398 comp.block = bb_orig;
2393 2399
@@ -2501,7 +2507,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2501 DECL_AND_SAFE_ALLOCA_BLOCK (sub1_fcall_block, comp.func); 2507 DECL_AND_SAFE_ALLOCA_BLOCK (sub1_fcall_block, comp.func);
2502 2508
2503 gcc_jit_rvalue *tos_as_num = 2509 gcc_jit_rvalue *tos_as_num =
2504 emit_XFIXNUM (gcc_jit_lvalue_as_rvalue (TOS)); 2510 emit_XFIXNUM (gcc_jit_lvalue_as_rvalue (TOS.gcc_lval));
2505 2511
2506 emit_cond_jump ( 2512 emit_cond_jump (
2507 gcc_jit_context_new_binary_op ( 2513 gcc_jit_context_new_binary_op (
@@ -2510,7 +2516,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2510 GCC_JIT_BINARY_OP_LOGICAL_AND, 2516 GCC_JIT_BINARY_OP_LOGICAL_AND,
2511 comp.bool_type, 2517 comp.bool_type,
2512 emit_cast (comp.bool_type, 2518 emit_cast (comp.bool_type,
2513 emit_FIXNUMP (gcc_jit_lvalue_as_rvalue (TOS))), 2519 emit_FIXNUMP (gcc_jit_lvalue_as_rvalue (TOS.gcc_lval))),
2514 gcc_jit_context_new_comparison (comp.ctxt, 2520 gcc_jit_context_new_comparison (comp.ctxt,
2515 NULL, 2521 NULL,
2516 GCC_JIT_COMPARISON_NE, 2522 GCC_JIT_COMPARISON_NE,
@@ -2532,7 +2538,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2532 comp.block = sub1_inline_block; 2538 comp.block = sub1_inline_block;
2533 gcc_jit_block_add_assignment (sub1_inline_block->gcc_bb, 2539 gcc_jit_block_add_assignment (sub1_inline_block->gcc_bb,
2534 NULL, 2540 NULL,
2535 TOS, 2541 TOS.gcc_lval,
2536 emit_make_fixnum (sub1_inline_res)); 2542 emit_make_fixnum (sub1_inline_res));
2537 2543
2538 comp.block = sub1_fcall_block; 2544 comp.block = sub1_fcall_block;
@@ -2561,7 +2567,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2561 DECL_AND_SAFE_ALLOCA_BLOCK (add1_fcall_block, comp.func); 2567 DECL_AND_SAFE_ALLOCA_BLOCK (add1_fcall_block, comp.func);
2562 2568
2563 gcc_jit_rvalue *tos_as_num = 2569 gcc_jit_rvalue *tos_as_num =
2564 emit_XFIXNUM (gcc_jit_lvalue_as_rvalue (TOS)); 2570 emit_XFIXNUM (gcc_jit_lvalue_as_rvalue (TOS.gcc_lval));
2565 2571
2566 emit_cond_jump ( 2572 emit_cond_jump (
2567 gcc_jit_context_new_binary_op ( 2573 gcc_jit_context_new_binary_op (
@@ -2570,7 +2576,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2570 GCC_JIT_BINARY_OP_LOGICAL_AND, 2576 GCC_JIT_BINARY_OP_LOGICAL_AND,
2571 comp.bool_type, 2577 comp.bool_type,
2572 emit_cast (comp.bool_type, 2578 emit_cast (comp.bool_type,
2573 emit_FIXNUMP (gcc_jit_lvalue_as_rvalue (TOS))), 2579 emit_FIXNUMP (gcc_jit_lvalue_as_rvalue (TOS.gcc_lval))),
2574 gcc_jit_context_new_comparison (comp.ctxt, 2580 gcc_jit_context_new_comparison (comp.ctxt,
2575 NULL, 2581 NULL,
2576 GCC_JIT_COMPARISON_NE, 2582 GCC_JIT_COMPARISON_NE,
@@ -2593,7 +2599,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2593 gcc_jit_block_add_assignment (add1_inline_block->gcc_bb 2599 gcc_jit_block_add_assignment (add1_inline_block->gcc_bb
2594 , 2600 ,
2595 NULL, 2601 NULL,
2596 TOS, 2602 TOS.gcc_lval,
2597 emit_make_fixnum (add1_inline_res)); 2603 emit_make_fixnum (add1_inline_res));
2598 comp.block = add1_fcall_block; 2604 comp.block = add1_fcall_block;
2599 POP1; 2605 POP1;
@@ -2645,7 +2651,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2645 DECL_AND_SAFE_ALLOCA_BLOCK (negate_fcall_block, comp.func); 2651 DECL_AND_SAFE_ALLOCA_BLOCK (negate_fcall_block, comp.func);
2646 2652
2647 gcc_jit_rvalue *tos_as_num = 2653 gcc_jit_rvalue *tos_as_num =
2648 emit_XFIXNUM (gcc_jit_lvalue_as_rvalue (TOS)); 2654 emit_XFIXNUM (gcc_jit_lvalue_as_rvalue (TOS.gcc_lval));
2649 2655
2650 emit_cond_jump ( 2656 emit_cond_jump (
2651 gcc_jit_context_new_binary_op ( 2657 gcc_jit_context_new_binary_op (
@@ -2654,7 +2660,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2654 GCC_JIT_BINARY_OP_LOGICAL_AND, 2660 GCC_JIT_BINARY_OP_LOGICAL_AND,
2655 comp.bool_type, 2661 comp.bool_type,
2656 emit_cast (comp.bool_type, 2662 emit_cast (comp.bool_type,
2657 emit_FIXNUMP (gcc_jit_lvalue_as_rvalue (TOS))), 2663 emit_FIXNUMP (gcc_jit_lvalue_as_rvalue (TOS.gcc_lval))),
2658 gcc_jit_context_new_comparison (comp.ctxt, 2664 gcc_jit_context_new_comparison (comp.ctxt,
2659 NULL, 2665 NULL,
2660 GCC_JIT_COMPARISON_NE, 2666 GCC_JIT_COMPARISON_NE,
@@ -2675,7 +2681,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2675 comp.block = negate_inline_block; 2681 comp.block = negate_inline_block;
2676 gcc_jit_block_add_assignment (negate_inline_block->gcc_bb, 2682 gcc_jit_block_add_assignment (negate_inline_block->gcc_bb,
2677 NULL, 2683 NULL,
2678 TOS, 2684 TOS.gcc_lval,
2679 emit_make_fixnum (negate_inline_res)); 2685 emit_make_fixnum (negate_inline_res));
2680 2686
2681 comp.block = negate_fcall_block; 2687 comp.block = negate_fcall_block;
@@ -2827,7 +2833,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2827 CASE (Bgotoifnilelsepop); 2833 CASE (Bgotoifnilelsepop);
2828 op = FETCH2; 2834 op = FETCH2;
2829 emit_comparison_jump (GCC_JIT_COMPARISON_EQ, 2835 emit_comparison_jump (GCC_JIT_COMPARISON_EQ,
2830 gcc_jit_lvalue_as_rvalue (TOS), 2836 gcc_jit_lvalue_as_rvalue (TOS.gcc_lval),
2831 nil, 2837 nil,
2832 &bb_map[op], &bb_map[pc]); 2838 &bb_map[op], &bb_map[pc]);
2833 bb_map[op].top = stack; 2839 bb_map[op].top = stack;
@@ -2837,7 +2843,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2837 CASE (Bgotoifnonnilelsepop); 2843 CASE (Bgotoifnonnilelsepop);
2838 op = FETCH2; 2844 op = FETCH2;
2839 emit_comparison_jump (GCC_JIT_COMPARISON_NE, 2845 emit_comparison_jump (GCC_JIT_COMPARISON_NE,
2840 gcc_jit_lvalue_as_rvalue (TOS), 2846 gcc_jit_lvalue_as_rvalue (TOS.gcc_lval),
2841 nil, 2847 nil,
2842 &bb_map[op], &bb_map[pc]); 2848 &bb_map[op], &bb_map[pc]);
2843 bb_map[op].top = stack; 2849 bb_map[op].top = stack;
@@ -2857,7 +2863,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
2857 break; 2863 break;
2858 2864
2859 CASE (Bdup); 2865 CASE (Bdup);
2860 PUSH_LVAL (TOS); 2866 PUSH_LVAL (TOS.gcc_lval);
2861 break; 2867 break;
2862 2868
2863 CASE (Bsave_excursion); 2869 CASE (Bsave_excursion);
@@ -3022,7 +3028,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
3022 op = FETCH - 128; 3028 op = FETCH - 128;
3023 op += pc; 3029 op += pc;
3024 emit_comparison_jump (GCC_JIT_COMPARISON_EQ, 3030 emit_comparison_jump (GCC_JIT_COMPARISON_EQ,
3025 gcc_jit_lvalue_as_rvalue (TOS), 3031 gcc_jit_lvalue_as_rvalue (TOS.gcc_lval),
3026 nil, 3032 nil,
3027 &bb_map[op], &bb_map[pc]); 3033 &bb_map[op], &bb_map[pc]);
3028 bb_map[op].top = stack; 3034 bb_map[op].top = stack;
@@ -3033,7 +3039,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
3033 op = FETCH - 128; 3039 op = FETCH - 128;
3034 op += pc; 3040 op += pc;
3035 emit_comparison_jump (GCC_JIT_COMPARISON_NE, 3041 emit_comparison_jump (GCC_JIT_COMPARISON_NE,
3036 gcc_jit_lvalue_as_rvalue (TOS), 3042 gcc_jit_lvalue_as_rvalue (TOS.gcc_lval),
3037 nil, 3043 nil,
3038 &bb_map[op], &bb_map[pc]); 3044 &bb_map[op], &bb_map[pc]);
3039 bb_map[op].top = stack; 3045 bb_map[op].top = stack;
@@ -3052,7 +3058,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
3052 if (op > 0) 3058 if (op > 0)
3053 gcc_jit_block_add_assignment (comp.block->gcc_bb, 3059 gcc_jit_block_add_assignment (comp.block->gcc_bb,
3054 NULL, 3060 NULL,
3055 *(stack - op), 3061 (*(stack - op)).gcc_lval,
3056 args[0]); 3062 args[0]);
3057 break; 3063 break;
3058 3064
@@ -3061,7 +3067,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
3061 POP1; 3067 POP1;
3062 gcc_jit_block_add_assignment (comp.block->gcc_bb, 3068 gcc_jit_block_add_assignment (comp.block->gcc_bb,
3063 NULL, 3069 NULL,
3064 *(stack - op), 3070 (*(stack - op)).gcc_lval,
3065 args[0]); 3071 args[0]);
3066 break; 3072 break;
3067 3073
@@ -3073,7 +3079,7 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
3073 POP1; 3079 POP1;
3074 gcc_jit_block_add_assignment (comp.block->gcc_bb, 3080 gcc_jit_block_add_assignment (comp.block->gcc_bb,
3075 NULL, 3081 NULL,
3076 *(stack - op - 1), 3082 (*(stack - op - 1)).gcc_lval,
3077 args[0]); 3083 args[0]);
3078 } 3084 }
3079 3085
@@ -3122,7 +3128,6 @@ compile_f (const char *lisp_f_name, const char *c_f_name,
3122 error ("Something went wrong"); 3128 error ("Something went wrong");
3123 3129
3124 exit: 3130 exit:
3125 xfree (stack_base);
3126 xfree (bb_map); 3131 xfree (bb_map);
3127 SAFE_FREE (); 3132 SAFE_FREE ();
3128 return comp_res; 3133 return comp_res;