1 2025-11-12 Antoni Boucher <bouanto@zoho.com>
3 * jit-playback.cc: Support new function attributes.
4 * jit-recording.cc: Support new function attributes.
5 * libgccjit.h: Support new function attributes.
7 2025-10-26 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
9 * jit-recording.cc (recording::array_type::make_debug_string,
10 recording::array_type::write_reproducer): Use PRIu64 format
11 specifier for uint64_t.
13 2025-10-22 Antoni Boucher <bouanto@zoho.com>
15 * docs/topics/types.rst: Document new types.
16 * dummy-frontend.cc: Support new types in tree_type_to_jit_type.
17 * jit-common.h: Update NUM_GCC_JIT_TYPES.
18 * jit-playback.cc: Support new types in get_tree_node_for_type.
19 * jit-recording.cc: Support new types.
20 * libgccjit.h (gcc_jit_types): Add new types.
22 2025-10-20 Antoni Boucher <bouanto@zoho.com>
24 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_37): New ABI tag.
25 * docs/topics/types.rst: Document
26 gcc_jit_context_new_array_type_u64.
27 * jit-playback.cc (new_array_type): Change num_elements type to
29 * jit-playback.h (new_array_type): Change num_elements type to
31 * jit-recording.cc (recording::context::new_array_type): Change
32 num_elements type to uint64_t.
33 (recording::array_type::make_debug_string): Use uint64_t
35 (recording::array_type::write_reproducer): Switch to
36 gcc_jit_context_new_array_type_u64.
37 * jit-recording.h (class array_type): Change num_elements type
39 (new_array_type): Change num_elements type to uint64_t.
40 (num_elements): Change return type to uint64_t.
41 * libgccjit.cc (gcc_jit_context_new_array_type_u64):
43 * libgccjit.h (gcc_jit_context_new_array_type_u64):
45 * libgccjit.exports: New function.
46 * libgccjit.map: New function.
48 2025-10-20 Antoni Boucher <bouanto@zoho.com>
50 * jit-playback.cc (add_error, add_error_va): Send DK_ERROR to
52 (add_diagnostic): Call add_diagnostic instead of add_error.
53 * jit-recording.cc (DEFINE_DIAGNOSTIC_KIND): New define.
54 (recording::context::add_diagnostic): New function.
55 (recording::context::add_error): Send DK_ERROR to add_error_va.
56 (recording::context::add_error_va): New parameter diagnostic_kind.
57 * jit-recording.h (add_diagnostic): New function.
58 (add_error_va): New parameter diagnostic_kind.
59 * libgccjit.cc (jit_error): Send DK_ERROR to add_error_va.
61 2025-10-20 Antoni Boucher <bouanto@zoho.com>
64 * dummy-frontend.cc: Fix lang_tree_node.
65 * jit-common.h: New function (jit_tree_chain_next) used by
68 2025-10-20 Antoni Boucher <bouanto@zoho.com>
71 * dummy-frontend.cc: Support some missing types.
72 * jit-playback.h (get_abort_on_unsupported_target_builtin): New
74 * jit-recording.cc (get_abort_on_unsupported_target_builtin,
75 set_abort_on_unsupported_target_builtin): New functions.
76 * jit-recording.h (get_abort_on_unsupported_target_builtin,
77 set_abort_on_unsupported_target_builtin): New functions.
78 (m_abort_on_unsupported_target_builtin): New field.
80 (gcc_jit_context_set_abort_on_unsupported_target_builtin): New
83 (gcc_jit_context_set_abort_on_unsupported_target_builtin): New
85 * libgccjit.exports (LIBGCCJIT_ABI_36): New ABI tag.
86 * libgccjit.map (LIBGCCJIT_ABI_36): New ABI tag.
87 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_36): New ABI tag.
88 * docs/topics/contexts.rst: Document new function.
90 2025-10-08 Antoni Boucher <bouanto@zoho.com>
93 * Make-lang.in (JIT_OBJS): New variable.
94 * jit-playback.cc (replay): Include jit-target.h and initialize
96 * jit-playback.h (class populate_target_info): New class.
97 * jit-recording.cc (recording::context::populate_target_info): New
99 * jit-recording.h (recording::context::populate_target_info): New
101 (recording::context::m_populated_target_info): New field.
102 * libgccjit.cc: Include jit-target.h.
103 (struct gcc_jit_target_info): New struct.
104 (gcc_jit_context_get_target_info, gcc_jit_target_info_release,
105 gcc_jit_target_info_cpu_supports, gcc_jit_target_info_arch,
106 gcc_jit_target_info_supports_target_dependent_type): New functions.
107 * libgccjit.h (gcc_jit_context_get_target_info,
108 gcc_jit_target_info_release, gcc_jit_target_info_cpu_supports,
109 gcc_jit_target_info_arch,
110 gcc_jit_target_info_supports_target_dependent_type):
112 * libgccjit.map (LIBGCCJIT_ABI_35): New ABI tag.
113 * docs/topics/compilation.rst: Add documentation for the
114 functions gcc_jit_context_get_target_info, gcc_jit_target_info_release,
115 gcc_jit_target_info_cpu_supports, gcc_jit_target_info_arch,
116 gcc_jit_target_info_supports_target_dependent_type.
117 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_35): New ABI tag.
118 * jit-target-def.h: New file.
119 * jit-target.cc: New file.
120 * jit-target.def: New file.
121 * jit-target.h: New file.
123 2025-10-07 Jonathan Wakely <jwakely@redhat.com>
125 * docs/_build/texinfo/libgccjit.texi: Fix spelling.
126 * docs/internals/index.rst: Likewise.
128 2025-08-13 David Malcolm <dmalcolm@redhat.com>
131 * libgccjit++.h (context::new_struct_type): Replace use of
132 &fields[0] with fields.data ().
133 (context::new_function): Likewise for params.
134 (context::new_rvalue): Likewise for elements.
135 (context::new_call): Likewise for args.
136 (block::end_with_switch): Likewise for cases.
137 (block::end_with_extended_asm_goto): Likewise for goto_blocks.
138 (context::new_struct_ctor): Likewise for fields and values.
139 (context::new_array_ctor): Likewise for values.
141 2025-07-25 David Malcolm <dmalcolm@redhat.com>
143 * dummy-frontend.cc: Update usage of "diagnostic_info" to
144 explicitly refer to "diagnostics::diagnostic_info".
146 2025-07-25 David Malcolm <dmalcolm@redhat.com>
148 * dummy-frontend.cc: Update for diagnostic_t becoming
149 enum class diagnostics::kind.
151 2025-07-25 David Malcolm <dmalcolm@redhat.com>
153 * dummy-frontend.cc: Update for diagnostic_context becoming
154 diagnostics::context.
155 * jit-playback.h: Likewise.
157 2025-07-25 David Malcolm <dmalcolm@redhat.com>
159 * jit-playback.cc: Update for diagnostic_info moving into
160 namespace diagnostics.
161 * jit-playback.h: Likewise.
163 2025-07-25 David Malcolm <dmalcolm@redhat.com>
165 * dummy-frontend.cc: Update for move of diagnostics output formats
166 into namespace "diagnostics" as "sinks".
168 2025-04-28 David Malcolm <dmalcolm@redhat.com>
170 * dummy-frontend.cc: Drop include of "make-unique.h".
171 Replace uses of ::make_unique with std::make_unique.
173 2025-03-29 Iain Sandoe <iain@sandoe.co.uk>
175 * libgccjit.exports: Add symbols for ABI 28 to 34.
177 2025-03-13 Matthias Klose <doko@ubuntu.com>
179 * Make-lang.in (LIBGCCJIT_VERSION_NUM): Move to ../Makefile.in.
181 2025-02-13 David Malcolm <dmalcolm@redhat.com>
185 (jit_diagnostic_listener::on_report_diagnostic): Add
188 2025-02-07 Richard Biener <rguenther@suse.de>
191 * jit-playback.cc: Define INCLUDE_DLFCN_H.
192 * jit-result.cc: Likewise.
194 2025-01-24 David Malcolm <dmalcolm@redhat.com>
197 * jit-recording.cc (reproducer::get_identifier_as_rvalue): Handle
199 (reproducer::get_identifier_as_lvalue): Likewise.
200 (reproducer::get_identifier_as_type): Likewise.
201 (recording::ctor::write_reproducer): Use get_identifier_as_rvalue
202 rather than get_identifier when writing out gcc_jit_rvalue *
205 2025-01-22 David Malcolm <dmalcolm@redhat.com>
207 * dummy-frontend.cc (tree_type_to_jit_type): For POINTER_TYPE,
208 bail out if the inner call to tree_type_to_jit_type fails.
209 Don't abort on unknown types.
210 (jit_langhook_pushdecl): Replace gcc_unreachable with return of
213 2024-11-22 Andrew Pinski <quic_apinski@quicinc.com>
216 * dummy-frontend.cc (INCLUDE_MEMORY): Remove.
217 * jit-playback.cc (INCLUDE_MEMORY): Remove.
218 * jit-recording.cc (INCLUDE_MEMORY): Remove.
220 2024-11-20 Antoni Boucher <bouanto@zoho.com>
222 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_34): New ABI tag.
223 * docs/topics/contexts.rst: Document gcc_jit_context_set_output_ident.
224 * jit-playback.cc (set_output_ident): New method.
225 * jit-playback.h (set_output_ident): New method.
226 * jit-recording.cc (recording::context::set_output_ident,
227 recording::output_ident::output_ident,
228 recording::output_ident::~output_ident,
229 recording::output_ident::replay_into,
230 recording::output_ident::make_debug_string,
231 recording::output_ident::write_reproducer): New methods.
232 * jit-recording.h (class output_ident): New class.
233 * libgccjit.cc (gcc_jit_context_set_output_ident): New function.
234 * libgccjit.h (gcc_jit_context_set_output_ident): New function.
235 * libgccjit.map: New function.
237 2024-01-18 Antoni Boucher <bouanto@zoho.com>
239 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_33): New ABI tag.
240 * docs/topics/functions.rst: Document gcc_jit_function_new_temp.
241 * jit-playback.cc (new_local): Add support for temporary
243 * jit-recording.cc (recording::function::new_temp): New method.
244 (recording::local::write_reproducer): Support temporary
246 * jit-recording.h (new_temp): New method.
247 * libgccjit.cc (gcc_jit_function_new_temp): New function.
248 * libgccjit.h (gcc_jit_function_new_temp): New function.
249 * libgccjit.map: New function.
251 2024-11-20 Antoni Boucher <bouanto@zoho.com>
254 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_32): New ABI tag.
255 * docs/topics/functions.rst: Add documentation for the function
256 gcc_jit_context_get_target_builtin_function.
257 * dummy-frontend.cc: Include headers target.h, jit-recording.h,
258 print-tree.h, unordered_map and string, new variables (target_builtins,
259 target_function_types, and target_builtins_ctxt), new function
260 (tree_type_to_jit_type).
261 * jit-builtins.cc: Specify that the function types are not from
263 * jit-playback.cc: New argument is_target_builtin to new_function.
264 * jit-playback.h: New argument is_target_builtin to
266 * jit-recording.cc: New argument is_target_builtin to
267 new_function_type, function_type constructor and function
268 constructor, new function
269 (get_target_builtin_function).
270 * jit-recording.h: Include headers string and unordered_map, new
271 variable target_function_types, new argument is_target_builtin
272 to new_function_type, function_type and function, new functions
273 (get_target_builtin_function, copy).
274 * libgccjit.cc: New function
275 (gcc_jit_context_get_target_builtin_function).
276 * libgccjit.h: New function
277 (gcc_jit_context_get_target_builtin_function).
278 * libgccjit.map: New functions
279 (gcc_jit_context_get_target_builtin_function).
281 2024-11-20 Antoni Boucher <bouanto@zoho.com>
283 * jit-common.h: Add forward declaration of memento_of_get_aligned.
284 * jit-recording.h (type::is_same_type_as): Compare integer
286 (dyn_cast_aligned_type): New method.
287 (type::is_aligned, memento_of_get_aligned::is_same_type_as,
288 memento_of_get_aligned::is_aligned): new methods.
290 2024-11-20 Antoni Boucher <bouanto@zoho.com>
292 * docs/topics/contexts.rst: Add documentation for new option.
293 * jit-recording.cc (recording::context::get_str_option): New
295 * jit-recording.h (get_str_option): New method.
296 * libgccjit.cc (gcc_jit_context_new_function): Allow special
297 characters in function names.
298 * libgccjit.h (enum gcc_jit_str_option): New option.
300 2024-11-20 Antoni Boucher <bouanto@zoho.com>
303 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_31): New ABI tag.
304 * docs/topics/expressions.rst: Document
305 gcc_jit_context_new_rvalue_vector_perm and
306 gcc_jit_context_new_vector_access.
307 * jit-playback.cc (playback::context::new_rvalue_vector_perm,
308 common_mark_addressable_vec,
311 convert_vector_to_array_for_subscript,
312 new_vector_access): new functions.
313 * jit-playback.h (new_rvalue_vector_perm, new_vector_access):
315 * jit-recording.cc (recording::context::new_rvalue_vector_perm,
316 recording::context::new_vector_access,
317 memento_of_new_rvalue_vector_perm,
318 recording::memento_of_new_rvalue_vector_perm::replay_into,
319 recording::memento_of_new_rvalue_vector_perm::visit_children,
320 recording::memento_of_new_rvalue_vector_perm::make_debug_string,
321 recording::memento_of_new_rvalue_vector_perm::write_reproducer,
322 recording::vector_access::replay_into,
323 recording::vector_access::visit_children,
324 recording::vector_access::make_debug_string,
325 recording::vector_access::write_reproducer): New methods.
326 * jit-recording.h (class memento_of_new_rvalue_vector_perm,
327 class vector_access): New classes.
328 * libgccjit.cc (gcc_jit_context_new_vector_access,
329 gcc_jit_context_new_rvalue_vector_perm): New functions.
330 * libgccjit.h (gcc_jit_context_new_rvalue_vector_perm,
331 gcc_jit_context_new_vector_access): New functions.
332 * libgccjit.map: New functions.
334 2024-11-20 Antoni Boucher <bouanto@zoho.com>
337 * jit-playback.cc (new_rvalue_from_const): Fix to have the
338 correct value when cross-compiling.
340 2024-11-20 Antoni Boucher <bouanto@zoho.com>
342 * libgccjit.cc (RETURN_IF_FAIL_PRINTF3): New macro.
343 (gcc_jit_block_add_assignment_op): Add numeric checks.
345 2024-11-20 Antoni Boucher <bouanto@zoho.com>
347 * dummy-frontend.cc (jit_langhook_init): Send flag_signed_char
348 argument to build_common_tree_nodes.
350 2024-11-04 Antoni Boucher <bouanto@zoho.com>
352 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_30): New ABI tag.
353 * docs/topics/expressions.rst: Document gcc_jit_context_convert_vector.
354 * jit-playback.cc (convert_vector): New method.
355 * jit-playback.h: New method.
356 * jit-recording.cc (recording::context::new_convert_vector,
357 recording::convert_vector::replay_into,
358 recording::convert_vector::visit_children,
359 recording::convert_vector::make_debug_string,
360 recording::convert_vector::write_reproducer): New methods.
361 * jit-recording.h (class convert_vector): New class.
362 (context::new_convert_vector): New method.
363 * libgccjit.cc (gcc_jit_context_convert_vector): New function.
364 * libgccjit.h (gcc_jit_context_convert_vector): New function.
365 * libgccjit.map: New function.
367 2024-11-04 Antoni Boucher <bouanto@zoho.com>
369 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_29): New ABI tag.
370 * docs/topics/expressions.rst: Document gcc_jit_global_set_readonly.
371 * jit-playback.cc (global_new_decl, new_global,
372 new_global_initialized): New parameter readonly.
373 * jit-playback.h (global_new_decl, new_global,
374 new_global_initialized): New parameter readonly.
375 * jit-recording.cc (recording::global::replay_into): Use
377 (recording::global::write_reproducer): Dump reproducer for
378 gcc_jit_global_set_readonly.
379 * jit-recording.h (get_readonly, set_readonly): New methods.
380 (m_readonly): New attribute.
381 * libgccjit.cc (gcc_jit_global_set_readonly): New function.
382 (gcc_jit_block_add_assignment): Check that we don't assign to a
384 * libgccjit.h (gcc_jit_global_set_readonly): New function.
385 (LIBGCCJIT_HAVE_gcc_jit_global_set_readonly): New define.
386 * libgccjit.map: New function.
388 2024-11-04 Antoni Boucher <bouanto@zoho.com>
390 * jit-builtins.cc (ensure_optimization_builtins_exist): Add
393 2024-10-29 David Malcolm <dmalcolm@redhat.com>
396 * dummy-frontend.cc: Include "make-unique.h".
397 (class jit_diagnostic_listener): New.
398 (jit_begin_diagnostic): Update comment.
399 (jit_end_diagnostic): Drop call to add_diagnostic.
400 (jit_langhook_init): Set the output format to a new
401 jit_diagnostic_listener.
402 * jit-playback.cc (playback::context::add_diagnostic): Add "text"
403 param and use that rather than trying to get the text from a
405 * jit-playback.h (playback::context::add_diagnostic): Add "text"
408 2024-10-25 Jakub Jelinek <jakub@redhat.com>
410 * docs/examples/tut04-toyvm/toyvm.cc: Remove trailing whitespace.
412 2024-10-24 David Malcolm <dmalcolm@redhat.com>
413 Gaius Mulley <gaiusmod2@gmail.com>
416 * dummy-frontend.cc: Add #define INCLUDE_MEMORY.
417 * jit-playback.cc: Likewise.
418 * jit-recording.cc: Likewise.
420 2024-09-20 David Malcolm <dmalcolm@redhat.com>
423 * dummy-frontend.cc: Include "diagnostic-format-text.h".
424 (jit_begin_diagnostic): Convert first param from
425 diagnostic_context * to diagnostic_text_output_format &
426 (jit_end_diagnostic): Likewise. Update accordingly.
427 (jit_langhook_init): Update for renamings.
429 2024-09-18 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
431 * libgccjit.h: Include <sys/types.h>
433 2024-09-09 David Malcolm <dmalcolm@redhat.com>
436 * jit-playback.cc (add_diagnostic): Rename diagnostic_context's
437 "printer" field to "m_printer".
439 2024-09-02 Richard Sandiford <richard.sandiford@arm.com>
441 * jit-playback.cc (playback::block::add_extended_asm): Rename
442 ASM_INPUT_P to ASM_BASIC_P.
444 2024-07-24 David Malcolm <dmalcolm@redhat.com>
446 * jit-playback.cc (jit::playback_context::compile) Add a trailing
449 2024-07-05 Antoni Boucher <bouanto@zoho.com>
451 * jit-common.h: Add array_type class.
452 * jit-recording.h (type::dyn_cast_array_type,
453 memento_of_get_aligned::dyn_cast_array_type,
454 array_type::dyn_cast_array_type, array_type::is_same_type_as):
457 2024-07-05 Antoni Boucher <bouanto@zoho.com>
460 * docs/topics/types.rst: Document GCC_JIT_TYPE_BFLOAT16.
461 * jit-common.h: Update NUM_GCC_JIT_TYPES.
462 * jit-playback.cc (get_tree_node_for_type): Support bfloat16.
463 * jit-recording.cc (recording::memento_of_get_type::get_size,
464 recording::memento_of_get_type::dereference,
465 recording::memento_of_get_type::is_int,
466 recording::memento_of_get_type::is_signed,
467 recording::memento_of_get_type::is_float,
468 recording::memento_of_get_type::is_bool): Support bfloat16.
469 * libgccjit.h (enum gcc_jit_types): Add GCC_JIT_TYPE_BFLOAT16.
471 2024-06-29 Iain Sandoe <iain@sandoe.co.uk>
474 (recording::memento_of_typeinfo::make_debug_string): Default the value
476 (recording::memento_of_typeinfo::write_reproducer): Default the value
479 2024-06-27 Antoni Boucher <bouanto@zoho.com>
481 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_28): New ABI tag.
482 * docs/topics/expressions.rst: Document gcc_jit_context_new_alignof.
483 * jit-playback.cc (new_alignof): New method.
484 * jit-playback.h: New method.
485 * jit-recording.cc (recording::context::new_alignof): New
487 (recording::memento_of_sizeof::replay_into,
488 recording::memento_of_typeinfo::replay_into,
489 recording::memento_of_sizeof::make_debug_string,
490 recording::memento_of_typeinfo::make_debug_string,
491 recording::memento_of_sizeof::write_reproducer,
492 recording::memento_of_typeinfo::write_reproducer): Rename.
493 * jit-recording.h (enum type_info_type): New enum.
494 (class memento_of_sizeof class memento_of_typeinfo): Rename.
495 * libgccjit.cc (gcc_jit_context_new_alignof): New function.
496 * libgccjit.h (gcc_jit_context_new_alignof): New function.
497 * libgccjit.map: New function.
499 2024-06-25 Kewen Lin <linkw@linux.ibm.com>
501 * jit-recording.cc (recording::memento_of_get_type::get_size): Update
502 macros {FLOAT,DOUBLE,LONG_DOUBLE}_TYPE_SIZE by calling
503 targetm.c.mode_for_floating_type with
504 TI_{FLOAT,DOUBLE,LONG_DOUBLE}_TYPE.
506 2024-06-12 David Malcolm <dmalcolm@redhat.com>
508 * jit-recording.cc (recording::function::dump_to_dot): Update for
509 fields of pretty_printer becoming private.
511 2024-06-11 Andrew Pinski <quic_apinski@quicinc.com>
514 * jit-recording.cc: Define INCLUDE_SSTREAM before including
515 system.h and don't directly incldue sstream.
517 2024-04-09 Jakub Jelinek <jakub@redhat.com>
519 * docs/topics/expressions.rst (Constructor expressions): Fix
520 duplicated words; have have -> have.
522 2024-04-02 Iain Sandoe <iain@sandoe.co.uk>
524 * Make-lang.in: Implement exports list, and use a shared
526 * libgccjit.exports: New file.
528 2024-03-29 Guillaume Gomez <guillaume1.gomez@gmail.com>
530 * libgccjit.cc (gcc_jit_type_get_size): Add pointer support
532 2024-02-10 Jakub Jelinek <jakub@redhat.com>
534 * jit-playback.cc (new_bitcast): Use HOST_WIDE_INT_PRINT_DEC instead
535 of "%ld" and casts to long.
537 2024-02-02 Antoni Boucher <bouanto@zoho.com>
539 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_27): New ABI tag.
540 * docs/topics/expressions.rst: Document gcc_jit_context_new_sizeof.
541 * jit-playback.cc (new_sizeof): New method.
542 * jit-playback.h (new_sizeof): New method.
543 * jit-recording.cc (recording::context::new_sizeof,
544 recording::memento_of_sizeof::replay_into,
545 recording::memento_of_sizeof::make_debug_string,
546 recording::memento_of_sizeof::write_reproducer): New methods.
547 * jit-recording.h (class memento_of_sizeof): New class.
548 * libgccjit.cc (gcc_jit_context_new_sizeof): New function.
549 * libgccjit.h (gcc_jit_context_new_sizeof): New function.
550 * libgccjit.map: New function.
552 2024-01-19 Antoni Boucher <bouanto@zoho.com>
554 * jit-builtins.cc (ensure_optimization_builtins_exist): Add
557 2024-01-19 Antoni Boucher <bouanto@zoho.com>
559 * jit-recording.h (is_numeric_vector, vector_type::new_int): New
561 * libgccjit.cc (gcc_jit_context_new_unary_op,
562 gcc_jit_context_new_binary_op): add checks for
565 2024-01-12 Guillaume Gomez <guillaume1.gomez@gmail.com>
566 Antoni Boucher <bouanto@zoho.com>
568 * docs/topics/compatibility.rst: Add documentation for LIBGCCJIT_ABI_26.
569 * docs/topics/functions.rst: Add documentation for new functions.
570 * docs/topics/expressions.rst: Add documentation for new functions.
572 2024-01-12 Guillaume Gomez <guillaume1.gomez@gmail.com>
573 Antoni Boucher <bouanto@zoho.com>
575 * dummy-frontend.cc (handle_alias_attribute): New function.
576 (handle_always_inline_attribute): New function.
577 (handle_cold_attribute): New function.
578 (handle_fnspec_attribute): New function.
579 (handle_format_arg_attribute): New function.
580 (handle_format_attribute): New function.
581 (handle_noinline_attribute): New function.
582 (handle_target_attribute): New function.
583 (handle_used_attribute): New function.
584 (handle_visibility_attribute): New function.
585 (handle_weak_attribute): New function.
586 (handle_alias_ifunc_attribute): New function.
587 * jit-playback.cc (fn_attribute_to_string): New function.
588 (variable_attribute_to_string): New function.
589 (global_new_decl): Add attributes support.
590 (set_variable_attribute): New function.
591 (new_global): Add attributes support.
592 (new_global_initialized): Add attributes support.
593 (new_local): Add attributes support.
594 * jit-playback.h (fn_attribute_to_string): New function.
595 (set_variable_attribute): New function.
596 * jit-recording.cc (recording::lvalue::add_attribute): New function.
597 (recording::function::function): New function.
598 (recording::function::write_to_dump): Add attributes support.
599 (recording::function::add_attribute): New function.
600 (recording::function::add_string_attribute): New function.
601 (recording::function::add_integer_array_attribute): New function.
602 (recording::global::replay_into): Add attributes support.
603 (recording::local::replay_into): Add attributes support.
604 * jit-recording.h: Add attributes support.
605 * libgccjit.cc (gcc_jit_function_add_attribute): New function.
606 (gcc_jit_function_add_string_attribute): New function.
607 (gcc_jit_function_add_integer_array_attribute): New function.
608 (gcc_jit_lvalue_add_attribute): New function.
609 * libgccjit.h (enum gcc_jit_fn_attribute): New enum.
610 (gcc_jit_function_add_attribute): New function.
611 (gcc_jit_function_add_string_attribute): New function.
612 (gcc_jit_function_add_integer_array_attribute): New function.
613 (enum gcc_jit_variable_attribute): New function.
614 (gcc_jit_lvalue_add_string_attribute): New function.
615 * libgccjit.map: Declare new functions.
617 2023-12-06 David Malcolm <dmalcolm@redhat.com>
619 * dummy-frontend.cc (jit_begin_diagnostic): Make diagnostic_info
621 (jit_end_diagnostic): Likewise. Pass to add_diagnostic by
623 * jit-playback.cc (jit::playback::context::add_diagnostic):
624 Convert diagnostic_info to const reference.
625 * jit-playback.h (jit::playback::context::add_diagnostic):
628 2023-12-05 Richard Sandiford <richard.sandiford@arm.com>
630 * dummy-frontend.cc (jit_gnu_attribute_table): Add extra braces
631 to work around PR 16333 in older compilers.
632 (jit_format_attribute_table): Likewise.
634 2023-12-02 Richard Sandiford <richard.sandiford@arm.com>
636 * dummy-frontend.cc (jit_format_attribute_table): Change type to
637 scoped_attribute_specs, using...
638 (jit_format_attributes): ...this as the underlying array.
639 (jit_attribute_table): Change to an array of scoped_attribute_specs
641 (jit_gnu_attributes, jit_gnu_attribute_table): ...these new globals
642 for the original array. Include the format attributes.
643 (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Delete.
644 (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Delete.
645 (LANG_HOOKS_ATTRIBUTE_TABLE): Define.
647 2023-11-09 Guillaume Gomez <guillaume1.gomez@gmail.com>
651 2023-11-04 David Malcolm <dmalcolm@redhat.com>
653 * jit-playback.cc: Update for changes to diagnostic_context.
654 * jit-playback.h: Likewise.
656 2023-10-25 Vibhav Pant <vibhavp@gmail.com>
658 * jit-recording.cc (recording::global::write_to_dump): Fix
659 dump of string literal initializers.
661 2023-10-22 Iain Sandoe <iain@sandoe.co.uk>
663 * Make-lang.in: Handle Darwin rpaths.
665 2023-10-02 David Malcolm <dmalcolm@redhat.com>
667 * dummy-frontend.cc (jit_langhook_init): Update for change to
668 diagnostic_context callbacks.
670 2023-08-31 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
672 * jit-playback.cc: Change spelling to macOS.
674 2023-08-29 Guillaume Gomez <guillaume1.gomez@gmail.com>
676 * docs/topics/compatibility.rst: Add documentation for LIBGCCJIT_ABI_25.
677 * docs/topics/types.rst: Add documentation for gcc_jit_type_get_restrict.
679 2023-08-29 Guillaume Gomez <guillaume1.gomez@gmail.com>
681 * jit-playback.cc: Remove trailing whitespace characters.
682 * jit-playback.h: Add get_restrict method.
683 * jit-recording.cc: Add get_restrict methods.
684 * jit-recording.h: Add get_restrict methods.
685 * libgccjit++.h: Add get_restrict methods.
686 * libgccjit.cc: Add gcc_jit_type_get_restrict.
687 * libgccjit.h: Declare gcc_jit_type_get_restrict.
688 * libgccjit.map: Declare gcc_jit_type_get_restrict.
690 2023-02-16 Patrick Palka <ppalka@redhat.com>
692 * jit-dejagnu.h: Mechanically drop static from static inline
693 functions via s/^static inline/inline/g.
694 * jit-recording.h: Likewise.
696 2023-01-07 LIU Hao <lh_mouse@126.com>
699 * jit-w32.h: Define `WIN32_LEAN_AND_MEAN` before <windows.h>.
701 2022-12-21 Martin Liska <mliska@suse.cz>
703 * jit-playback.h: Use unused attribute.
705 2022-12-14 Antoni Boucher <bouanto@zoho.com>
706 Guillaume Gomez <guillaume1.gomez@gmail.com>
709 * jit-recording.h: Add vector_type::is_same_type_as method
711 2022-12-07 Antoni Boucher <bouanto@zoho.com>
712 Guillaume Gomez <guillaume1.gomez@gmail.com>
715 * jit-playback.cc: Fix vector float comparison
716 * jit-playback.h: Update comparison function signature
717 * jit-recording.cc: Update call for "new_comparison" function
718 * jit-recording.h: Fix vector float comparison
720 2022-11-20 Jeff Law <jlaw@ventanamicro.com>
723 * jit-playback.cc (playback::lvale::mark_addressable): Remove
726 2022-11-19 Jonathan Wakely <jwakely@redhat.com>
727 LIU Hao <lh_mouse@126.com>
729 * jit-playback.cc (playback::context::scoped_lock): Define RAII
731 (playback::context::compile): Use scoped_lock to acquire mutex
732 for the active playback context.
733 (jit_mutex): Change to std::mutex.
734 (playback::context::acquire_mutex): Rename to ...
735 (playback::context::lock): ... this.
736 (playback::context::release_mutex): Rename to ...
737 (playback::context::unlock): ... this.
738 * jit-playback.h (playback::context): Rename members and declare
740 * jit-recording.cc (INCLUDE_PTHREAD_H): Remove unused define.
741 * libgccjit.cc (version_mutex): Change to std::mutex.
742 (struct jit_version_info): Use std::lock_guard to acquire and
745 2022-11-14 Martin Liska <mliska@suse.cz>
748 2022-11-09 Martin Liska <mliska@suse.cz>
751 * docs/cp/index.rst: Moved to...
752 * doc/cp/index.rst: ...here.
753 * docs/cp/intro/index.rst: Moved to...
754 * doc/cp/intro/index.rst: ...here.
755 * docs/cp/intro/tutorial01.rst: Moved to...
756 * doc/cp/intro/tutorial01.rst: ...here.
757 * docs/cp/intro/tutorial02.rst: Moved to...
758 * doc/cp/intro/tutorial02.rst: ...here.
759 * docs/cp/intro/tutorial03.rst: Moved to...
760 * doc/cp/intro/tutorial03.rst: ...here.
761 * docs/cp/intro/tutorial04.rst: Moved to...
762 * doc/cp/intro/tutorial04.rst: ...here.
763 * docs/cp/topics/asm.rst: Moved to...
764 * doc/cp/topics/asm.rst: ...here.
765 * docs/cp/topics/compilation.rst: Moved to...
766 * doc/cp/topics/compilation.rst: ...here.
767 * docs/cp/topics/contexts.rst: Moved to...
768 * doc/cp/topics/contexts.rst: ...here.
769 * docs/cp/topics/expressions.rst: Moved to...
770 * doc/cp/topics/expressions.rst: ...here.
771 * docs/cp/topics/functions.rst: Moved to...
772 * doc/cp/topics/functions.rst: ...here.
773 * docs/cp/topics/index.rst: Moved to...
774 * doc/cp/topics/index.rst: ...here.
775 * docs/cp/topics/locations.rst: Moved to...
776 * doc/cp/topics/locations.rst: ...here.
777 * docs/cp/topics/objects.rst: Moved to...
778 * doc/cp/topics/objects.rst: ...here.
779 * docs/cp/topics/types.rst: Moved to...
780 * doc/cp/topics/types.rst: ...here.
781 * docs/examples/emit-alphabet.bf: Moved to...
782 * doc/examples/emit-alphabet.bf: ...here.
783 * docs/examples/tut01-hello-world.c: Moved to...
784 * doc/examples/tut01-hello-world.c: ...here.
785 * docs/examples/tut01-hello-world.cc: Moved to...
786 * doc/examples/tut01-hello-world.cc: ...here.
787 * docs/examples/tut02-square.c: Moved to...
788 * doc/examples/tut02-square.c: ...here.
789 * docs/examples/tut02-square.cc: Moved to...
790 * doc/examples/tut02-square.cc: ...here.
791 * docs/examples/tut03-sum-of-squares.c: Moved to...
792 * doc/examples/tut03-sum-of-squares.c: ...here.
793 * docs/examples/tut03-sum-of-squares.cc: Moved to...
794 * doc/examples/tut03-sum-of-squares.cc: ...here.
795 * docs/examples/tut04-toyvm/Makefile: Moved to...
796 * doc/examples/tut04-toyvm/Makefile: ...here.
797 * docs/examples/tut04-toyvm/factorial.toy: Moved to...
798 * doc/examples/tut04-toyvm/factorial.toy: ...here.
799 * docs/examples/tut04-toyvm/fibonacci.toy: Moved to...
800 * doc/examples/tut04-toyvm/fibonacci.toy: ...here.
801 * docs/examples/tut04-toyvm/toyvm.c: Moved to...
802 * doc/examples/tut04-toyvm/toyvm.c: ...here.
803 * docs/examples/tut04-toyvm/toyvm.cc: Moved to...
804 * doc/examples/tut04-toyvm/toyvm.cc: ...here.
805 * docs/examples/tut05-bf.c: Moved to...
806 * doc/examples/tut05-bf.c: ...here.
807 * docs/index.rst: Moved to...
808 * doc/index.rst: ...here.
809 * docs/internals/index.rst: Moved to...
810 * doc/internals/index.rst: ...here.
811 * docs/internals/test-hello-world.exe.log.txt: Moved to...
812 * doc/internals/test-hello-world.exe.log.txt: ...here.
813 * docs/_build/texinfo/libgccjit-figures/factorial.png: Moved to...
814 * doc/intro/factorial.png: ...here.
815 * docs/intro/index.rst: Moved to...
816 * doc/intro/index.rst: ...here.
817 * docs/_build/texinfo/libgccjit-figures/sum-of-squares.png: Moved to...
818 * doc/intro/sum-of-squares.png: ...here.
819 * docs/intro/tutorial01.rst: Moved to...
820 * doc/intro/tutorial01.rst: ...here.
821 * docs/intro/tutorial02.rst: Moved to...
822 * doc/intro/tutorial02.rst: ...here.
823 * docs/intro/tutorial03.rst: Moved to...
824 * doc/intro/tutorial03.rst: ...here.
825 * docs/intro/tutorial04.rst: Moved to...
826 * doc/intro/tutorial04.rst: ...here.
827 * docs/intro/tutorial05.rst: Moved to...
828 * doc/intro/tutorial05.rst: ...here.
829 * docs/topics/asm.rst: Moved to...
830 * doc/topics/asm.rst: ...here.
831 * docs/topics/compatibility.rst: Moved to...
832 * doc/topics/compatibility.rst: ...here.
833 * docs/topics/compilation.rst: Moved to...
834 * doc/topics/compilation.rst: ...here.
835 * docs/topics/contexts.rst: Moved to...
836 * doc/topics/contexts.rst: ...here.
837 * docs/topics/expressions.rst: Moved to...
838 * doc/topics/expressions.rst: ...here.
839 * docs/topics/function-pointers.rst: Moved to...
840 * doc/topics/function-pointers.rst: ...here.
841 * docs/topics/functions.rst: Moved to...
842 * doc/topics/functions.rst: ...here.
843 * docs/topics/index.rst: Moved to...
844 * doc/topics/index.rst: ...here.
845 * docs/topics/locations.rst: Moved to...
846 * doc/topics/locations.rst: ...here.
847 * docs/topics/objects.rst: Moved to...
848 * doc/topics/objects.rst: ...here.
849 * docs/topics/performance.rst: Moved to...
850 * doc/topics/performance.rst: ...here.
851 * docs/topics/types.rst: Moved to...
852 * doc/topics/types.rst: ...here.
853 * docs/Makefile: Removed.
854 * docs/_build/texinfo/Makefile: Removed.
855 * docs/_build/texinfo/libgccjit-figures/factorial1.png: Removed.
856 * docs/_build/texinfo/libgccjit-figures/sum-of-squares1.png: Removed.
857 * docs/_build/texinfo/libgccjit.texi: Removed.
858 * docs/conf.py: Removed.
859 * docs/intro/factorial.png: Removed.
860 * docs/intro/sum-of-squares.png: Removed.
861 * doc/conf.py: New file.
863 2022-11-14 Martin Liska <mliska@suse.cz>
866 2022-11-14 Martin Liska <mliska@suse.cz>
868 * Make-lang.in: Support --with-sphinx-build.
870 2022-11-14 Martin Liska <mliska@suse.cz>
873 2022-11-14 Martin Liska <mliska@suse.cz>
875 * doc/internals/index.rst: Fix cross manual refs.
876 * doc/topics/contexts.rst: Likewise.
878 2022-11-14 Martin Liska <mliska@suse.cz>
881 2022-11-14 Martin Liska <mliska@suse.cz>
884 Support installation if sphinx-build is missing.
886 2022-11-14 Martin Liska <mliska@suse.cz>
889 2022-11-14 Martin Liska <mliska@suse.cz>
891 * doc/cp/index.rst: Remove trailing .rst in toctree.
892 * doc/cp/intro/index.rst: Likewise.
893 * doc/cp/topics/index.rst: Likewise.
894 * doc/index.rst: Likewise.
895 * doc/intro/index.rst: Likewise.
896 * doc/topics/index.rst: Likewise.
897 * doc/indices-and-tables.rst: New file.
899 2022-11-11 Martin Liska <mliska@suse.cz>
901 * doc/cp/index.rst: Remove trailing .rst in toctree.
902 * doc/cp/intro/index.rst: Likewise.
903 * doc/cp/topics/index.rst: Likewise.
904 * doc/index.rst: Likewise.
905 * doc/intro/index.rst: Likewise.
906 * doc/topics/index.rst: Likewise.
907 * doc/indices-and-tables.rst: New file.
909 2022-11-09 Martin Liska <mliska@suse.cz>
912 Support installation if sphinx-build is missing.
914 2022-11-09 Martin Liska <mliska@suse.cz>
916 * doc/internals/index.rst: Fix cross manual refs.
917 * doc/topics/contexts.rst: Likewise.
919 2022-11-09 Martin Liska <mliska@suse.cz>
921 * Make-lang.in: Support --with-sphinx-build.
923 2022-11-09 Martin Liska <mliska@suse.cz>
926 * docs/cp/index.rst: Moved to...
927 * doc/cp/index.rst: ...here.
928 * docs/cp/intro/index.rst: Moved to...
929 * doc/cp/intro/index.rst: ...here.
930 * docs/cp/intro/tutorial01.rst: Moved to...
931 * doc/cp/intro/tutorial01.rst: ...here.
932 * docs/cp/intro/tutorial02.rst: Moved to...
933 * doc/cp/intro/tutorial02.rst: ...here.
934 * docs/cp/intro/tutorial03.rst: Moved to...
935 * doc/cp/intro/tutorial03.rst: ...here.
936 * docs/cp/intro/tutorial04.rst: Moved to...
937 * doc/cp/intro/tutorial04.rst: ...here.
938 * docs/cp/topics/asm.rst: Moved to...
939 * doc/cp/topics/asm.rst: ...here.
940 * docs/cp/topics/compilation.rst: Moved to...
941 * doc/cp/topics/compilation.rst: ...here.
942 * docs/cp/topics/contexts.rst: Moved to...
943 * doc/cp/topics/contexts.rst: ...here.
944 * docs/cp/topics/expressions.rst: Moved to...
945 * doc/cp/topics/expressions.rst: ...here.
946 * docs/cp/topics/functions.rst: Moved to...
947 * doc/cp/topics/functions.rst: ...here.
948 * docs/cp/topics/index.rst: Moved to...
949 * doc/cp/topics/index.rst: ...here.
950 * docs/cp/topics/locations.rst: Moved to...
951 * doc/cp/topics/locations.rst: ...here.
952 * docs/cp/topics/objects.rst: Moved to...
953 * doc/cp/topics/objects.rst: ...here.
954 * docs/cp/topics/types.rst: Moved to...
955 * doc/cp/topics/types.rst: ...here.
956 * docs/examples/emit-alphabet.bf: Moved to...
957 * doc/examples/emit-alphabet.bf: ...here.
958 * docs/examples/tut01-hello-world.c: Moved to...
959 * doc/examples/tut01-hello-world.c: ...here.
960 * docs/examples/tut01-hello-world.cc: Moved to...
961 * doc/examples/tut01-hello-world.cc: ...here.
962 * docs/examples/tut02-square.c: Moved to...
963 * doc/examples/tut02-square.c: ...here.
964 * docs/examples/tut02-square.cc: Moved to...
965 * doc/examples/tut02-square.cc: ...here.
966 * docs/examples/tut03-sum-of-squares.c: Moved to...
967 * doc/examples/tut03-sum-of-squares.c: ...here.
968 * docs/examples/tut03-sum-of-squares.cc: Moved to...
969 * doc/examples/tut03-sum-of-squares.cc: ...here.
970 * docs/examples/tut04-toyvm/Makefile: Moved to...
971 * doc/examples/tut04-toyvm/Makefile: ...here.
972 * docs/examples/tut04-toyvm/factorial.toy: Moved to...
973 * doc/examples/tut04-toyvm/factorial.toy: ...here.
974 * docs/examples/tut04-toyvm/fibonacci.toy: Moved to...
975 * doc/examples/tut04-toyvm/fibonacci.toy: ...here.
976 * docs/examples/tut04-toyvm/toyvm.c: Moved to...
977 * doc/examples/tut04-toyvm/toyvm.c: ...here.
978 * docs/examples/tut04-toyvm/toyvm.cc: Moved to...
979 * doc/examples/tut04-toyvm/toyvm.cc: ...here.
980 * docs/examples/tut05-bf.c: Moved to...
981 * doc/examples/tut05-bf.c: ...here.
982 * docs/index.rst: Moved to...
983 * doc/index.rst: ...here.
984 * docs/internals/index.rst: Moved to...
985 * doc/internals/index.rst: ...here.
986 * docs/internals/test-hello-world.exe.log.txt: Moved to...
987 * doc/internals/test-hello-world.exe.log.txt: ...here.
988 * docs/_build/texinfo/libgccjit-figures/factorial.png: Moved to...
989 * doc/intro/factorial.png: ...here.
990 * docs/intro/index.rst: Moved to...
991 * doc/intro/index.rst: ...here.
992 * docs/_build/texinfo/libgccjit-figures/sum-of-squares.png: Moved to...
993 * doc/intro/sum-of-squares.png: ...here.
994 * docs/intro/tutorial01.rst: Moved to...
995 * doc/intro/tutorial01.rst: ...here.
996 * docs/intro/tutorial02.rst: Moved to...
997 * doc/intro/tutorial02.rst: ...here.
998 * docs/intro/tutorial03.rst: Moved to...
999 * doc/intro/tutorial03.rst: ...here.
1000 * docs/intro/tutorial04.rst: Moved to...
1001 * doc/intro/tutorial04.rst: ...here.
1002 * docs/intro/tutorial05.rst: Moved to...
1003 * doc/intro/tutorial05.rst: ...here.
1004 * docs/topics/asm.rst: Moved to...
1005 * doc/topics/asm.rst: ...here.
1006 * docs/topics/compatibility.rst: Moved to...
1007 * doc/topics/compatibility.rst: ...here.
1008 * docs/topics/compilation.rst: Moved to...
1009 * doc/topics/compilation.rst: ...here.
1010 * docs/topics/contexts.rst: Moved to...
1011 * doc/topics/contexts.rst: ...here.
1012 * docs/topics/expressions.rst: Moved to...
1013 * doc/topics/expressions.rst: ...here.
1014 * docs/topics/function-pointers.rst: Moved to...
1015 * doc/topics/function-pointers.rst: ...here.
1016 * docs/topics/functions.rst: Moved to...
1017 * doc/topics/functions.rst: ...here.
1018 * docs/topics/index.rst: Moved to...
1019 * doc/topics/index.rst: ...here.
1020 * docs/topics/locations.rst: Moved to...
1021 * doc/topics/locations.rst: ...here.
1022 * docs/topics/objects.rst: Moved to...
1023 * doc/topics/objects.rst: ...here.
1024 * docs/topics/performance.rst: Moved to...
1025 * doc/topics/performance.rst: ...here.
1026 * docs/topics/types.rst: Moved to...
1027 * doc/topics/types.rst: ...here.
1028 * docs/Makefile: Removed.
1029 * docs/_build/texinfo/Makefile: Removed.
1030 * docs/_build/texinfo/libgccjit-figures/factorial1.png: Removed.
1031 * docs/_build/texinfo/libgccjit-figures/sum-of-squares1.png: Removed.
1032 * docs/_build/texinfo/libgccjit.texi: Removed.
1033 * docs/conf.py: Removed.
1034 * docs/intro/factorial.png: Removed.
1035 * docs/intro/sum-of-squares.png: Removed.
1036 * doc/conf.py: New file.
1038 2022-09-15 Richard Biener <rguenther@suse.de>
1040 * dummy-frontend.cc (jit_langhook_init): Do not initialize
1043 2022-08-09 Vibhav Pant <vibhavp@gmail.com>
1045 * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_context_new_bitcast): Move
1046 definition out of comment.
1048 2022-07-28 David Malcolm <dmalcolm@redhat.com>
1050 * docs/internals/index.rst: Remove reference to ".c" extensions
1053 2022-07-28 Martin Liška <mliska@suse.cz>
1055 * docs/cp/intro/tutorial02.rst:
1056 Shorten the assembly example so that there is not slider.
1057 * docs/cp/intro/tutorial04.rst: Likewise.
1058 * docs/intro/tutorial02.rst: Likewise.
1059 * docs/intro/tutorial04.rst: Likewise.
1060 * docs/topics/contexts.rst: Likewise.
1062 2022-07-28 marxin <mliska@suse.cz>
1064 * docs/index.rst: Remove reference to module index
1065 as we don't emit any.
1067 2022-07-28 marxin <mliska@suse.cz>
1069 * docs/cp/intro/tutorial02.rst: Use :expr:`type *` for pointers to a type
1070 * docs/cp/topics/asm.rst: Likewise.
1071 * docs/cp/topics/contexts.rst: Likewise.
1072 * docs/cp/topics/expressions.rst: Likewise.
1073 * docs/cp/topics/functions.rst: Likewise.
1074 * docs/cp/topics/objects.rst: Likewise.
1075 * docs/intro/tutorial02.rst: Likewise.
1076 * docs/intro/tutorial03.rst: Likewise.
1077 * docs/intro/tutorial04.rst: Likewise.
1078 * docs/intro/tutorial05.rst: Likewise.
1079 * docs/topics/compilation.rst: Likewise.
1080 * docs/topics/contexts.rst: Likewise.
1081 * docs/topics/objects.rst: Likewise.
1083 2022-07-28 marxin <mliska@suse.cz>
1085 * docs/cp/intro/tutorial04.rst: Use list-table.
1086 * docs/intro/tutorial04.rst: Likewise.
1087 * docs/intro/tutorial05.rst: Likewise.
1088 * docs/topics/compilation.rst: Likewise.
1089 * docs/topics/expressions.rst: Likewise.
1090 * docs/topics/types.rst: Likewise.
1092 2022-07-28 marxin <mliska@suse.cz>
1094 * docs/cp/topics/expressions.rst: Compact so that the generated
1095 output is also more compact.
1097 2022-07-28 marxin <mliska@suse.cz>
1099 * docs/cp/intro/tutorial02.rst: Use proper reference.
1100 * docs/cp/topics/contexts.rst: Likewise.
1101 * docs/cp/topics/functions.rst: Put `class` directive before a
1102 function as it is not allowed declaring a class in a fn.
1103 * docs/cp/topics/types.rst: Add template keyword.
1104 * docs/examples/tut04-toyvm/toyvm.c (toyvm_function_compile):
1105 Add removed comment used for code snippet ending detection.
1106 * docs/intro/tutorial04.rst: Fix to match the real comment.
1108 2022-07-28 marxin <mliska@suse.cz>
1110 * docs/cp/topics/expressions.rst: Use :expr: for basic types.
1111 * docs/topics/compilation.rst: Likewise.
1112 * docs/topics/expressions.rst: Likewise.
1113 * docs/topics/function-pointers.rst: Likewise.
1115 2022-07-28 marxin <mliska@suse.cz>
1117 * docs/conf.py: Add needs_sphinx = '3.0' where c:type was added.
1118 * docs/index.rst: Remove note about it.
1119 * docs/topics/compilation.rst: Use enum directive and reference.
1120 * docs/topics/contexts.rst: Likewise.
1121 * docs/topics/expressions.rst: Likewise.
1122 * docs/topics/functions.rst: Likewise.
1124 2022-07-14 Jonathan Wakely <jwakely@redhat.com>
1126 * jit-recording.h (recording::memento): Define copy constructor
1127 and copy assignment operator as deleted.
1128 (recording::string): Likewise.
1129 (recording::string::c_str): Add const qualifier.
1131 2022-06-29 Antoni Boucher <bouanto@zoho.com>
1134 * jit-playback.cc: Use the correct return type when folding in
1137 2022-06-29 Sergei Trofimovich <siarheit@google.com>
1140 * jit-playback.cc: Include <pthread.h> via "system.h" to avoid calloc()
1142 * jit-recording.cc: Ditto.
1143 * libgccjit.cc: Ditto.
1145 2022-06-10 Antoni Boucher <bouanto@zoho.com>
1148 * libgccjit.cc: Add support for floating-point types in
1149 gcc_jit_type_get_size.
1151 2022-06-08 Yang Yujie <yangyujie@loongson.cn>
1153 * Make-lang.in: only link objects from $(EXTRA_GCC_OBJS)
1154 that's not in $(EXTRA_OBJS) into libgccjit.
1156 2022-05-23 David Malcolm <dmalcolm@redhat.com>
1158 * jit-recording.h: Add "final" and "override" to all vfunc
1159 implementations that were missing them, as appropriate.
1161 2022-05-20 David Malcolm <dmalcolm@redhat.com>
1163 * jit-playback.h: Replace uses of "FINAL" and "OVERRIDE" with
1164 "final" and "override".
1165 * jit-recording.cc: Likewise.
1166 * jit-recording.h: Likewise.
1168 2022-05-16 Martin Liska <mliska@suse.cz>
1170 * jit-builtins.cc (find_builtin_by_name): Use ARRAY_SIZE.
1171 (get_string_for_type_id): Likewise.
1172 * jit-recording.cc (recording::context::context): Likewise.
1174 2022-04-14 Iain Sandoe <iain@sandoe.co.uk>
1176 * jit-playback.cc (new_bitcast): Cast values returned by tree_to_uhwi
1177 to 'long' to match the print format.
1179 2022-04-12 Antoni Boucher <bouanto@zoho.com>
1182 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1183 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_24): New ABI tag.
1184 * docs/topics/expressions.rst: Add documentation for the
1185 functions gcc_jit_lvalue_set_alignment and
1186 gcc_jit_lvalue_get_alignment.
1187 * jit-playback.h: New function (set_alignment).
1188 * jit-recording.cc: New function (set_alignment).
1189 * jit-recording.h: New functions (set_alignment, get_alignment)
1190 and new field (m_alignment).
1191 * libgccjit.cc: New functions (gcc_jit_lvalue_get_alignment,
1192 gcc_jit_lvalue_set_alignment)
1193 * libgccjit.h: New functions (gcc_jit_lvalue_get_alignment,
1194 gcc_jit_lvalue_set_alignment)
1195 * libgccjit.map (LIBGCCJIT_ABI_24): New ABI tag.
1197 2022-04-12 Antoni Boucher <bouanto@zoho.com>
1200 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1201 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_23): New ABI tag.
1202 * docs/topics/contexts.rst: Add documentation for the new
1203 function gcc_jit_context_set_bool_print_errors_to_stderr.
1204 * jit-common.h: New enum value
1205 (INNER_BOOL_OPTION_PRINT_ERRORS_TO_STDERR).
1206 * jit-recording.cc: Handle the new option
1207 INNER_BOOL_OPTION_PRINT_ERRORS_TO_STDERR.
1208 * libgccjit.cc: New function
1209 (gcc_jit_context_set_bool_print_errors_to_stderr).
1210 * libgccjit.h: New function
1211 (gcc_jit_context_set_bool_print_errors_to_stderr).
1212 * libgccjit.map (LIBGCCJIT_ABI_23): New ABI tag.
1214 2022-04-12 Antoni Boucher <bouanto@zoho.com>
1217 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1218 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_22): New ABI tag.
1219 * docs/topics/expressions.rst: Add documentation for the
1220 function gcc_jit_lvalue_set_register_name.
1221 * jit-playback.h: New function (set_register_name).
1222 * jit-recording.cc: New function (set_register_name) and add
1223 support for register variables.
1224 * jit-recording.h: New field (m_reg_name) and new function
1225 (set_register_name).
1226 * libgccjit.cc: New function (gcc_jit_lvalue_set_register_name).
1227 * libgccjit.h: New function (gcc_jit_lvalue_set_register_name).
1228 * libgccjit.map (LIBGCCJIT_ABI_22): New ABI tag.
1230 2022-04-12 Antoni Boucher <bouanto@zoho.com>
1233 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1234 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_21): New ABI tag.
1235 * docs/topics/expressions.rst: Add documentation for the
1236 function gcc_jit_context_new_bitcast.
1237 * jit-playback.cc: New function (new_bitcast).
1238 * jit-playback.h: New function (new_bitcast).
1239 * jit-recording.cc: New functions (new_bitcast,
1240 bitcast::replay_into, bitcast::visit_children,
1241 bitcast::make_debug_string, bitcast::write_reproducer).
1242 * jit-recording.h: New class (bitcast) and new function
1243 (new_bitcast, bitcast::replay_into, bitcast::visit_children,
1244 bitcast::make_debug_string, bitcast::write_reproducer,
1245 bitcast::get_precedence).
1246 * libgccjit.cc: New function (gcc_jit_context_new_bitcast)
1247 * libgccjit.h: New function (gcc_jit_context_new_bitcast)
1248 * libgccjit.map (LIBGCCJIT_ABI_21): New ABI tag.
1250 2022-04-12 Antoni Boucher <bouanto@zoho.com>
1253 * docs/_build/texinfo/libgccjit.texi: Regenerate
1254 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_20): New ABI tag.
1255 * docs/topics/types.rst: Add documentation for the new types
1256 GCC_JIT_TYPE_UINT8_T, GCC_JIT_TYPE_UINT16_T,
1257 GCC_JIT_TYPE_UINT32_T, GCC_JIT_TYPE_UINT64_T,
1258 GCC_JIT_TYPE_UINT128_T, GCC_JIT_TYPE_INT8_T, GCC_JIT_TYPE_INT16_T,
1259 GCC_JIT_TYPE_INT32_T, GCC_JIT_TYPE_INT64_T, GCC_JIT_TYPE_INT128_T and
1260 new functions (gcc_jit_compatible_types, gcc_jit_type_get_size).
1261 * jit-builtins.cc: Add support for BT_UINT128.
1262 * jit-common.h: Update the value of NUM_GCC_JIT_TYPES.
1263 * jit-playback.cc: Add support for the sized integer types.
1264 * jit-recording.cc: Add support for the sized integer types.
1265 * jit-recording.h: Add support for comparing integer types
1266 and new function (is_signed).
1267 * libgccjit.cc (gcc_jit_compatible_types): New.
1268 (gcc_jit_type_get_size) New.
1269 * libgccjit.h: New enum variants for gcc_jit_types
1270 (GCC_JIT_TYPE_UINT8_T, GCC_JIT_TYPE_UINT16_T,
1271 GCC_JIT_TYPE_UINT32_T, GCC_JIT_TYPE_UINT64_T,
1272 GCC_JIT_TYPE_UINT128_T, GCC_JIT_TYPE_INT8_T,
1273 GCC_JIT_TYPE_INT16_T, GCC_JIT_TYPE_INT32_T,
1274 GCC_JIT_TYPE_INT64_T, GCC_JIT_TYPE_INT128_T) and new functions
1275 (gcc_jit_compatible_types, gcc_jit_type_get_size).
1276 * libgccjit.map (LIBGCCJIT_ABI_20): New ABI tag.
1278 2022-04-06 David Malcolm <dmalcolm@redhat.com>
1281 * docs/_build/texinfo/factorial.png: Move to...
1282 * docs/_build/texinfo/libgccjit-figures/factorial.png: ...here.
1283 * docs/_build/texinfo/factorial1.png: Move to...
1284 * docs/_build/texinfo/libgccjit-figures/factorial1.png: ...here.
1285 * docs/_build/texinfo/sum-of-squares.png: Move to...
1286 * docs/_build/texinfo/libgccjit-figures/sum-of-squares.png: ...here.
1287 * docs/_build/texinfo/sum-of-squares1.png: Move to...
1288 * docs/_build/texinfo/libgccjit-figures/sum-of-squares1.png: ...here.
1290 2022-04-01 David Malcolm <dmalcolm@redhat.com>
1292 * docs/topics/expressions.rst: Fix formatting.
1293 * docs/topics/types.rst: Likewise.
1294 * docs/_build/texinfo/libgccjit.texi: Regenerate
1296 2022-04-01 Petter Tomner <tomner@kth.se>
1298 * docs/topics/compatibility.rst: Add 19 tag
1299 * docs/topics/compilation.rst: Linking
1300 * docs/topics/contexts.rst: Linking example
1301 * docs/topics/expressions.rst: Fix formatting and dropped 's'
1303 2022-03-07 Jakub Jelinek <jakub@redhat.com>
1305 * libgccjit.h: Fix up duplicated word issue in a comment.
1307 2022-01-17 Martin Liska <mliska@suse.cz>
1309 * config-lang.in: Rename .c names to .cc.
1310 * docs/_build/texinfo/libgccjit.texi: Likewise.
1311 * docs/internals/index.rst: Likewise.
1312 * jit-builtins.cc (builtins_manager::make_builtin_function): Likewise.
1313 * jit-playback.cc (fold_const_var): Likewise.
1314 (playback::context::~context): Likewise.
1315 (new_field): Likewise.
1316 (new_bitfield): Likewise.
1317 (new_compound_type): Likewise.
1318 (playback::compound_type::set_fields): Likewise.
1319 (global_set_init_rvalue): Likewise.
1320 (load_blob_in_ctor): Likewise.
1321 (new_global_initialized): Likewise.
1322 (double>): Likewise.
1323 (new_string_literal): Likewise.
1324 (as_truth_value): Likewise.
1325 (build_call): Likewise.
1326 (playback::context::build_cast): Likewise.
1327 (new_array_access): Likewise.
1328 (new_field_access): Likewise.
1329 (dereference): Likewise.
1330 (postprocess): Likewise.
1331 (add_jump): Likewise.
1332 (add_switch): Likewise.
1333 (build_goto_operands): Likewise.
1334 (playback::context::read_dump_file): Likewise.
1335 (init_types): Likewise.
1336 * jit-recording.cc (recording::context::get_int_type): Likewise.
1337 * jit-recording.h: Likewise.
1338 * libgccjit.cc (compatible_types): Likewise.
1339 (gcc_jit_context_acquire): Likewise.
1340 (gcc_jit_context_release): Likewise.
1341 (gcc_jit_context_new_child_context): Likewise.
1342 (gcc_jit_type_as_object): Likewise.
1343 (gcc_jit_context_get_type): Likewise.
1344 (gcc_jit_context_get_int_type): Likewise.
1345 (gcc_jit_type_get_pointer): Likewise.
1346 (gcc_jit_type_get_const): Likewise.
1347 (gcc_jit_type_get_volatile): Likewise.
1348 (gcc_jit_type_dyncast_array): Likewise.
1349 (gcc_jit_type_is_bool): Likewise.
1350 (gcc_jit_type_is_pointer): Likewise.
1351 (gcc_jit_type_is_integral): Likewise.
1352 (gcc_jit_type_dyncast_vector): Likewise.
1353 (gcc_jit_type_is_struct): Likewise.
1354 (gcc_jit_vector_type_get_num_units): Likewise.
1355 (gcc_jit_vector_type_get_element_type): Likewise.
1356 (gcc_jit_type_unqualified): Likewise.
1357 (gcc_jit_type_dyncast_function_ptr_type): Likewise.
1358 (gcc_jit_function_type_get_return_type): Likewise.
1359 (gcc_jit_function_type_get_param_count): Likewise.
1360 (gcc_jit_function_type_get_param_type): Likewise.
1361 (gcc_jit_context_new_array_type): Likewise.
1362 (gcc_jit_context_new_field): Likewise.
1363 (gcc_jit_field_as_object): Likewise.
1364 (gcc_jit_context_new_struct_type): Likewise.
1365 (gcc_jit_struct_as_type): Likewise.
1366 (gcc_jit_struct_set_fields): Likewise.
1367 (gcc_jit_struct_get_field_count): Likewise.
1368 (gcc_jit_context_new_union_type): Likewise.
1369 (gcc_jit_context_new_function_ptr_type): Likewise.
1370 (gcc_jit_param_as_rvalue): Likewise.
1371 (gcc_jit_context_new_function): Likewise.
1372 (gcc_jit_function_get_return_type): Likewise.
1373 (gcc_jit_function_dump_to_dot): Likewise.
1374 (gcc_jit_block_get_function): Likewise.
1375 (gcc_jit_global_set_initializer_rvalue): Likewise.
1376 (gcc_jit_rvalue_get_type): Likewise.
1377 (gcc_jit_context_new_rvalue_from_int): Likewise.
1378 (gcc_jit_context_one): Likewise.
1379 (gcc_jit_context_new_rvalue_from_double): Likewise.
1380 (gcc_jit_context_null): Likewise.
1381 (gcc_jit_context_new_string_literal): Likewise.
1382 (valid_binary_op_p): Likewise.
1383 (gcc_jit_context_new_binary_op): Likewise.
1384 (gcc_jit_context_new_comparison): Likewise.
1385 (gcc_jit_context_new_call): Likewise.
1386 (is_valid_cast): Likewise.
1387 (gcc_jit_context_new_cast): Likewise.
1388 (gcc_jit_object_get_context): Likewise.
1389 (gcc_jit_object_get_debug_string): Likewise.
1390 (gcc_jit_lvalue_access_field): Likewise.
1391 (gcc_jit_rvalue_access_field): Likewise.
1392 (gcc_jit_rvalue_dereference_field): Likewise.
1393 (gcc_jit_rvalue_dereference): Likewise.
1394 (gcc_jit_lvalue_get_address): Likewise.
1395 (gcc_jit_lvalue_set_tls_model): Likewise.
1396 (gcc_jit_lvalue_set_link_section): Likewise.
1397 (gcc_jit_function_new_local): Likewise.
1398 (gcc_jit_block_add_eval): Likewise.
1399 (gcc_jit_block_add_assignment): Likewise.
1400 (is_bool): Likewise.
1401 (gcc_jit_block_end_with_conditional): Likewise.
1402 (gcc_jit_block_add_comment): Likewise.
1403 (gcc_jit_block_end_with_jump): Likewise.
1404 (gcc_jit_block_end_with_return): Likewise.
1405 (gcc_jit_block_end_with_void_return): Likewise.
1406 (case_range_validator::case_range_validator): Likewise.
1407 (case_range_validator::validate): Likewise.
1408 (case_range_validator::get_wide_int): Likewise.
1409 (gcc_jit_block_end_with_switch): Likewise.
1410 (gcc_jit_context_set_str_option): Likewise.
1411 (gcc_jit_context_set_int_option): Likewise.
1412 (gcc_jit_context_set_bool_option): Likewise.
1413 (gcc_jit_context_set_bool_allow_unreachable_blocks): Likewise.
1414 (gcc_jit_context_set_bool_use_external_driver): Likewise.
1415 (gcc_jit_context_add_command_line_option): Likewise.
1416 (gcc_jit_context_add_driver_option): Likewise.
1417 (gcc_jit_context_enable_dump): Likewise.
1418 (gcc_jit_context_compile): Likewise.
1419 (gcc_jit_context_compile_to_file): Likewise.
1420 (gcc_jit_context_set_logfile): Likewise.
1421 (gcc_jit_context_dump_reproducer_to_file): Likewise.
1422 (gcc_jit_context_get_first_error): Likewise.
1423 (gcc_jit_context_get_last_error): Likewise.
1424 (gcc_jit_result_get_code): Likewise.
1425 (gcc_jit_result_get_global): Likewise.
1426 (gcc_jit_rvalue_set_bool_require_tail_call): Likewise.
1427 (gcc_jit_type_get_aligned): Likewise.
1428 (gcc_jit_type_get_vector): Likewise.
1429 (gcc_jit_function_get_address): Likewise.
1430 (gcc_jit_version_patchlevel): Likewise.
1431 (gcc_jit_block_add_extended_asm): Likewise.
1432 (gcc_jit_extended_asm_as_object): Likewise.
1433 (gcc_jit_extended_asm_set_volatile_flag): Likewise.
1434 (gcc_jit_extended_asm_set_inline_flag): Likewise.
1435 (gcc_jit_extended_asm_add_output_operand): Likewise.
1436 (gcc_jit_extended_asm_add_input_operand): Likewise.
1437 (gcc_jit_extended_asm_add_clobber): Likewise.
1438 * notes.txt: Likewise.
1440 2022-01-17 Martin Liska <mliska@suse.cz>
1442 * dummy-frontend.c: Moved to...
1443 * dummy-frontend.cc: ...here.
1444 * jit-builtins.c: Moved to...
1445 * jit-builtins.cc: ...here.
1446 * jit-logging.c: Moved to...
1447 * jit-logging.cc: ...here.
1448 * jit-playback.c: Moved to...
1449 * jit-playback.cc: ...here.
1450 * jit-recording.c: Moved to...
1451 * jit-recording.cc: ...here.
1452 * jit-result.c: Moved to...
1453 * jit-result.cc: ...here.
1454 * jit-spec.c: Moved to...
1455 * jit-spec.cc: ...here.
1456 * jit-tempdir.c: Moved to...
1457 * jit-tempdir.cc: ...here.
1458 * jit-w32.c: Moved to...
1459 * jit-w32.cc: ...here.
1460 * libgccjit.c: Moved to...
1461 * libgccjit.cc: ...here.
1463 2021-12-28 Martin Liska <mliska@suse.cz>
1465 * docs/_build/texinfo/libgccjit.texi: Replace http:// with https.
1466 * docs/cp/index.rst: Likewise.
1467 * docs/cp/intro/index.rst: Likewise.
1468 * docs/cp/intro/tutorial01.rst: Likewise.
1469 * docs/cp/intro/tutorial02.rst: Likewise.
1470 * docs/cp/intro/tutorial03.rst: Likewise.
1471 * docs/cp/intro/tutorial04.rst: Likewise.
1472 * docs/cp/topics/asm.rst: Likewise.
1473 * docs/cp/topics/compilation.rst: Likewise.
1474 * docs/cp/topics/contexts.rst: Likewise.
1475 * docs/cp/topics/expressions.rst: Likewise.
1476 * docs/cp/topics/functions.rst: Likewise.
1477 * docs/cp/topics/index.rst: Likewise.
1478 * docs/cp/topics/locations.rst: Likewise.
1479 * docs/cp/topics/objects.rst: Likewise.
1480 * docs/cp/topics/types.rst: Likewise.
1481 * docs/index.rst: Likewise.
1482 * docs/internals/index.rst: Likewise.
1483 * docs/intro/index.rst: Likewise.
1484 * docs/intro/tutorial01.rst: Likewise.
1485 * docs/intro/tutorial02.rst: Likewise.
1486 * docs/intro/tutorial03.rst: Likewise.
1487 * docs/intro/tutorial04.rst: Likewise.
1488 * docs/intro/tutorial05.rst: Likewise.
1489 * docs/topics/asm.rst: Likewise.
1490 * docs/topics/compatibility.rst: Likewise.
1491 * docs/topics/compilation.rst: Likewise.
1492 * docs/topics/contexts.rst: Likewise.
1493 * docs/topics/expressions.rst: Likewise.
1494 * docs/topics/function-pointers.rst: Likewise.
1495 * docs/topics/functions.rst: Likewise.
1496 * docs/topics/index.rst: Likewise.
1497 * docs/topics/locations.rst: Likewise.
1498 * docs/topics/objects.rst: Likewise.
1499 * docs/topics/performance.rst: Likewise.
1500 * docs/topics/types.rst: Likewise.
1502 2021-12-20 Martin Liska <mliska@suse.cz>
1504 * libgccjit.c (struct version_info): Rename to jit_version_info.
1505 (struct jit_version_info): Likewise.
1506 (gcc_jit_version_major): Likewise.
1507 (gcc_jit_version_minor): Likewise.
1508 (gcc_jit_version_patchlevel): Likewise.
1510 2021-12-14 Petter Tomner <tomner@kth.se>
1512 * jit-common.h: New enum
1513 * jit-playback.c : Folding an setting intitial
1514 (global_new_decl) : Handle const global generation
1515 (new_global) : New flag
1516 (global_set_init_rvalue) : New
1518 (new_global_initialized) : Flag
1519 (as_truth_value) : Fold
1520 (new_unary_op) : Fold
1521 (new_binary_op) : Fold
1522 (new_comparison) : Fold
1523 (new_array_access) : Fold
1524 (new_dereference) : Fold
1525 (get_address) : Fold
1527 (global_set_init_rvalue) : New
1531 (new_global_init_rvalue) : New
1533 (ctor) : New, inherits rvalue
1534 (global_init_rvalue) : New, inherits memento
1535 (type::is_union) : New
1536 * libgccjit++.h : New entrypoints, see C-header
1537 * libgccjit.c : See .h
1538 * libgccjit.h : New entrypoints
1539 (gcc_jit_context_new_array_constructor) : New
1540 (gcc_jit_context_new_struct_constructor) : New
1541 (gcc_jit_context_new_union_constructor) : New
1542 (gcc_jit_global_set_initializer_rvalue) : New
1543 (LIBGCCJIT_HAVE_CTORS) : New feuture macro
1544 * libgccjit.map : New entrypoints added to ABI 19
1545 * docs/topics/expressions.rst : Updated docs
1547 2021-12-12 Antoni Boucher <bouanto@zoho.com>
1550 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_18): New ABI
1552 * docs/topics/expressions.rst: Add documentation for the
1553 function gcc_jit_lvalue_set_link_section.
1554 * jit-playback.h: New function (set_link_section).
1555 * jit-recording.c: New function (set_link_section) and
1556 support for setting the link section.
1557 * jit-recording.h: New function (set_link_section) and new
1558 field m_link_section.
1559 * libgccjit.c: New function (gcc_jit_lvalue_set_link_section).
1560 * libgccjit.h: New function (gcc_jit_lvalue_set_link_section).
1561 * libgccjit.map (LIBGCCJIT_ABI_18): New ABI tag.
1563 2021-12-12 Antoni Boucher <bouanto@zoho.com>
1566 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_17): New ABI
1568 * docs/topics/expressions.rst: Add document for the function
1569 gcc_jit_lvalue_set_tls_model.
1570 * jit-playback.h: New function (set_tls_model).
1571 * jit-recording.c: New function (set_tls_model), new
1572 variables (tls_models and tls_model_enum_strings) and support
1573 for setting the tls model.
1574 * jit-recording.h: New function (set_tls_model) and new
1576 * libgccjit.c: New function (gcc_jit_lvalue_set_tls_model).
1577 * libgccjit.h: New function (gcc_jit_lvalue_set_tls_model)
1578 and new enum (gcc_jit_tls_model).
1579 * libgccjit.map (LIBGCCJIT_ABI_17): New ABI tag.
1581 2021-12-11 Antoni Boucher <bouanto@zoho.com>
1585 * jit-builtins.c: Implement missing types for builtins.
1586 * jit-recording.c:: Allow sending a volatile const void * as
1588 * jit-recording.h: New functions (is_volatile, is_const) and
1589 allow comparing qualified types.
1591 2021-12-10 David Malcolm <dmalcolm@redhat.com>
1594 * jit-playback.c (gcc::jit::playback::context::new_function): Set
1595 DECL_CONTEXT of the result_decl.
1597 2021-11-27 Petter Tomner <tomner@kth.se>
1599 * libgccjit.c: %ld -> %zu
1601 2021-11-24 Martin Liska <mliska@suse.cz>
1603 * jit-playback.c (function): Initialize m_blocks vector.
1605 2021-11-20 Antoni Boucher <bouanto@zoho.com>
1608 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_16): New ABI tag.
1609 * docs/topics/functions.rst: Add documentation for the
1610 functions gcc_jit_function_get_return_type and
1611 gcc_jit_function_get_param_count
1612 * docs/topics/types.rst: Add documentation for the functions
1613 gcc_jit_function_type_get_return_type,
1614 gcc_jit_function_type_get_param_count,
1615 gcc_jit_function_type_get_param_type,
1616 gcc_jit_type_unqualified, gcc_jit_type_dyncast_array,
1617 gcc_jit_type_is_bool,
1618 gcc_jit_type_dyncast_function_ptr_type,
1619 gcc_jit_type_is_integral, gcc_jit_type_is_pointer,
1620 gcc_jit_type_dyncast_vector,
1621 gcc_jit_vector_type_get_element_type,
1622 gcc_jit_vector_type_get_num_units,
1623 gcc_jit_struct_get_field, gcc_jit_type_is_struct,
1624 and gcc_jit_struct_get_field_count
1626 (gcc_jit_function_get_return_type, gcc_jit_function_get_param_count,
1627 gcc_jit_function_type_get_return_type,
1628 gcc_jit_function_type_get_param_count,
1629 gcc_jit_function_type_get_param_type, gcc_jit_type_unqualified,
1630 gcc_jit_type_dyncast_array, gcc_jit_type_is_bool,
1631 gcc_jit_type_dyncast_function_ptr_type, gcc_jit_type_is_integral,
1632 gcc_jit_type_is_pointer, gcc_jit_type_dyncast_vector,
1633 gcc_jit_vector_type_get_element_type,
1634 gcc_jit_vector_type_get_num_units, gcc_jit_struct_get_field,
1635 gcc_jit_type_is_struct, gcc_jit_struct_get_field_count): New
1637 (struct gcc_jit_function_type, struct gcc_jit_vector_type):
1640 (gcc_jit_function_get_return_type, gcc_jit_function_get_param_count,
1641 gcc_jit_function_type_get_return_type,
1642 gcc_jit_function_type_get_param_count,
1643 gcc_jit_function_type_get_param_type, gcc_jit_type_unqualified,
1644 gcc_jit_type_dyncast_array, gcc_jit_type_is_bool,
1645 gcc_jit_type_dyncast_function_ptr_type, gcc_jit_type_is_integral,
1646 gcc_jit_type_is_pointer, gcc_jit_type_dyncast_vector,
1647 gcc_jit_vector_type_get_element_type,
1648 gcc_jit_vector_type_get_num_units, gcc_jit_struct_get_field,
1649 gcc_jit_type_is_struct, gcc_jit_struct_get_field_count): New
1650 function declarations.
1651 (struct gcc_jit_function_type, struct gcc_jit_vector_type):
1653 * jit-recording.h: New functions (is_struct and is_vector)
1654 * libgccjit.map (LIBGCCJIT_ABI_16): New ABI tag.
1656 2021-11-12 David Malcolm <dmalcolm@redhat.com>
1659 * docs/examples/tut04-toyvm/toyvm.c (toyvm_function_compile):
1660 Increase size of buffer.
1661 * docs/examples/tut04-toyvm/toyvm.cc
1662 (compilation_state::create_function): Likewise.
1664 2021-09-10 Petter Tomner <tomner@kth.se>
1666 * jit-playback.c: Moved global var processing to after loc handling.
1667 Setting TYPE_NAME for fundamental types.
1668 Using common functions for finalizing globals.
1669 * jit-playback.h: New method init_types().
1670 Changed get_tree_node_for_type() to method.
1672 2021-08-19 Iain Sandoe <iain@sandoe.co.uk>
1674 * docs/examples/tut04-toyvm/toyvm.c: Include jit-dejagnu.h.
1675 * docs/examples/tut04-toyvm/toyvm.cc: Likewise.
1676 * jit-dejagnu.h: New file, imported from dejagnu-1.6.2 and
1677 patched for this application.
1679 2021-08-18 Iain Sandoe <iain@sandoe.co.uk>
1682 * Make-lang.in: Provide clauses for Darwin hosts.
1684 2021-07-18 Antoni Boucher <bouanto@zoho.com>
1687 * jit-playback.c (convert): Add support to handle truncation and
1688 extension in the convert function.
1690 2021-05-19 Martin Liska <mliska@suse.cz>
1693 * libgccjit.c (gcc_jit_context_new_function): Fix typos.
1695 2021-03-24 Matthias Klose <doko@ubuntu.com>
1697 * Make-lang.in (jit.sphinx.html, jit.sphinx.pdf): Use $(mkinstalldirs),
1698 (jit.install-headers): Depend on installdirs.
1700 2021-02-19 David Malcolm <dmalcolm@redhat.com>
1704 (gcc::jit::builtins_manager::get_builtin_function_by_id):
1705 Update assertion to reject BUILT_IN_NONE.
1706 (gcc::jit::builtins_manager::ensure_optimization_builtins_exist):
1709 (gcc::jit::builtins_manager::ensure_optimization_builtins_exist):
1711 * jit-playback.c (gcc::jit::playback::context::replay): Call it.
1712 Remove redundant conditional on bm.
1714 2021-01-14 David Malcolm <dmalcolm@redhat.com>
1716 * docs/cp/index.rst: Remove "Alpha" warning.
1717 * docs/index.rst: Likewise.
1718 * docs/_build/texinfo/libgccjit.texi: Regenerate
1720 2020-11-25 Martin Sebor <msebor@redhat.com>
1723 * jit-recording.c (recording::function::dump_to_dot): Avoid
1725 (recording::block::dump_to_dot): Same.
1727 2020-11-20 Jakub Jelinek <jakub@redhat.com>
1730 * Make-lang.in (jit.serial): Change from goal to a
1732 (.PHONY): Drop jit.serial and jit.prev.
1733 ($(LIBGCCJIT_FILENAME)): Depend on $(jit.serial) rather than
1736 2020-11-18 Jakub Jelinek <jakub@redhat.com>
1738 * Make-lang.in (jit.serial): New goal.
1739 (.PHONY): Add jit.serial jit.prev.
1740 ($(LIBGCCJIT_FILENAME)): Depend on jit.prev. Call LINK_PROGRESS.
1742 2020-11-12 David Malcolm <dmalcolm@redhat.com>
1745 * docs/cp/topics/asm.rst: New file.
1746 * docs/cp/topics/index.rst (Topic Reference): Add it.
1747 * docs/topics/asm.rst: New file.
1748 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_15): New.
1749 * docs/topics/functions.rst (Statements): Add link to extended
1751 * docs/topics/index.rst (Topic Reference): Add asm.rst.
1752 * docs/topics/objects.rst: Add gcc_jit_extended_asm to ASCII art.
1753 * docs/_build/texinfo/Makefile: Regenerate.
1754 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1755 * jit-common.h (gcc::jit::recording::extended_asm): New forward
1757 (gcc::jit::recording::top_level_asm): Likewise.
1758 * jit-playback.c: Include "stmt.h".
1759 (build_string): New.
1760 (gcc::jit::playback::context::new_string_literal): Disambiguate
1762 (gcc::jit::playback::context::add_top_level_asm): New.
1763 (build_operand_chain): New.
1764 (build_clobbers): New.
1765 (build_goto_operands): New.
1766 (gcc::jit::playback::block::add_extended_asm): New.
1767 * jit-playback.h (gcc::jit::playback::context::add_top_level_asm):
1769 (struct gcc::jit::playback::asm_operand): New struct.
1770 (gcc::jit::playback::block::add_extended_asm): New decl.
1771 * jit-recording.c (gcc::jit::recording::context::dump_to_file):
1772 Dump top-level asms.
1773 (gcc::jit::recording::context::add_top_level_asm): New.
1774 (gcc::jit::recording::block::add_extended_asm): New.
1775 (gcc::jit::recording::block::end_with_extended_asm_goto): New.
1776 (gcc::jit::recording::asm_operand::asm_operand): New.
1777 (gcc::jit::recording::asm_operand::print): New.
1778 (gcc::jit::recording::asm_operand::make_debug_string): New.
1779 (gcc::jit::recording::output_asm_operand::write_reproducer): New.
1780 (gcc::jit::recording::output_asm_operand::print): New.
1781 (gcc::jit::recording::input_asm_operand::write_reproducer): New.
1782 (gcc::jit::recording::input_asm_operand::print): New.
1783 (gcc::jit::recording::extended_asm::add_output_operand): New.
1784 (gcc::jit::recording::extended_asm::add_input_operand): New.
1785 (gcc::jit::recording::extended_asm::add_clobber): New.
1786 (gcc::jit::recording::extended_asm::replay_into): New.
1787 (gcc::jit::recording::extended_asm::make_debug_string): New.
1788 (gcc::jit::recording::extended_asm::write_flags): New.
1789 (gcc::jit::recording::extended_asm::write_clobbers): New.
1790 (gcc::jit::recording::extended_asm_simple::write_reproducer): New.
1791 (gcc::jit::recording::extended_asm::maybe_populate_playback_blocks):
1793 (gcc::jit::recording::extended_asm_goto::extended_asm_goto): New.
1794 (gcc::jit::recording::extended_asm_goto::replay_into): New.
1795 (gcc::jit::recording::extended_asm_goto::write_reproducer): New.
1796 (gcc::jit::recording::extended_asm_goto::get_successor_blocks):
1798 (gcc::jit::recording::extended_asm_goto::maybe_print_gotos): New.
1799 (gcc::jit::recording::extended_asm_goto::maybe_populate_playback_blocks):
1801 (gcc::jit::recording::top_level_asm::top_level_asm): New.
1802 (gcc::jit::recording::top_level_asm::replay_into): New.
1803 (gcc::jit::recording::top_level_asm::make_debug_string): New.
1804 (gcc::jit::recording::top_level_asm::write_to_dump): New.
1805 (gcc::jit::recording::top_level_asm::write_reproducer): New.
1807 (gcc::jit::recording::context::add_top_level_asm): New decl.
1808 (gcc::jit::recording::context::m_top_level_asms): New field.
1809 (gcc::jit::recording::block::add_extended_asm): New decl.
1810 (gcc::jit::recording::block::end_with_extended_asm_goto): New
1812 (gcc::jit::recording::asm_operand): New class.
1813 (gcc::jit::recording::output_asm_operand): New class.
1814 (gcc::jit::recording::input_asm_operand): New class.
1815 (gcc::jit::recording::extended_asm): New class.
1816 (gcc::jit::recording::extended_asm_simple): New class.
1817 (gcc::jit::recording::extended_asm_goto): New class.
1818 (gcc::jit::recording::top_level_asm): New class.
1819 * libgccjit++.h (gccjit::extended_asm): New forward decl.
1820 (gccjit::context::add_top_level_asm): New.
1821 (gccjit::block::add_extended_asm): New.
1822 (gccjit::block::end_with_extended_asm_goto): New.
1823 (gccjit::extended_asm): New class.
1824 (gccjit::extended_asm::extended_asm): New ctors.
1825 (gccjit::extended_asm::set_volatile_flag): New.
1826 (gccjit::extended_asm::set_inline_flag): New.
1827 (gccjit::extended_asm::add_output_operand): New.
1828 (gccjit::extended_asm::add_input_operand): New.
1829 (gccjit::extended_asm::add_clobber): New.
1830 (gccjit::extended_asm::get_inner_extended_asm): New.
1831 * libgccjit.c (struct gcc_jit_extended_asm): New.
1832 (jit_error): Make "loc" param take a gcc::jit::recording::location *
1833 rather than a gcc_jit_location *.
1834 (gcc_jit_block_add_extended_asm): New entrypoint.
1835 (gcc_jit_block_end_with_extended_asm_goto): New entrypoint.
1836 (gcc_jit_extended_asm_as_object): New entrypoint.
1837 (gcc_jit_extended_asm_set_volatile_flag): New entrypoint.
1838 (gcc_jit_extended_asm_set_inline_flag): New entrypoint.
1839 (gcc_jit_extended_asm_add_output_operand): New entrypoint.
1840 (gcc_jit_extended_asm_add_clobber): New entrypoint.
1841 (gcc_jit_context_add_top_level_asm): New entrypoint.
1842 * libgccjit.h: Add gcc_jit_extended_asm to ASCII art.
1843 (gcc_jit_extended_asm): New typedef.
1844 (LIBGCCJIT_HAVE_ASM_STATEMENTS): New define.
1845 (gcc_jit_block_add_extended_asm): New entrypoint.
1846 (gcc_jit_block_end_with_extended_asm_goto): New entrypoint.
1847 (gcc_jit_extended_asm_as_object): New entrypoint.
1848 (gcc_jit_extended_asm_set_volatile_flag): New entrypoint.
1849 (gcc_jit_extended_asm_set_inline_flag): New entrypoint.
1850 (gcc_jit_extended_asm_add_output_operand): New entrypoint.
1851 (gcc_jit_extended_asm_add_input_operand): New entrypoint.
1852 (gcc_jit_extended_asm_add_clobber): New entrypoint.
1853 (gcc_jit_context_add_top_level_asm): New entrypoint.
1854 * libgccjit.map (LIBGCCJIT_ABI_15): New.
1856 2020-11-12 David Malcolm <dmalcolm@redhat.com>
1858 * jit-recording.c (recording::context::new_string): Add "escaped"
1859 param and use it when creating the new recording::string instance.
1860 (recording::string::string): Add "escaped" param and use it to
1861 initialize m_escaped.
1862 (recording::string::make_debug_string): Replace check that first
1863 char is double-quote with use of m_escaped. Fix escaping of
1864 '\t' and '\n'. Set "escaped" on the result.
1865 * jit-recording.h (recording::context::new_string): Add "escaped"
1867 (recording::string::string): Add "escaped" param.
1868 (recording::string::m_escaped): New field.
1870 2020-11-12 David Malcolm <dmalcolm@redhat.com>
1872 * libgccjit.h: Fix typo in comment.
1874 2020-09-14 Andrea Corallo <andrea.corallo@arm.com>
1876 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1878 2020-09-11 Andrea Corallo <andrea.corallo@arm.com>
1880 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_14): New ABI tag.
1881 * docs/topics/expressions.rst (gcc_jit_global_set_initializer):
1882 Document new entry point in section 'Global variables'.
1883 * jit-playback.c (global_new_decl, global_finalize_lvalue): New
1885 (playback::context::new_global): Make use of global_new_decl,
1886 global_finalize_lvalue.
1887 (load_blob_in_ctor): New template function in use by the
1889 (playback::context::new_global_initialized): New method.
1890 * jit-playback.h (class context): Decl 'new_global_initialized',
1891 'global_new_decl', 'global_finalize_lvalue'.
1892 (lvalue::set_initializer): Add implementation.
1893 * jit-recording.c (recording::memento_of_get_pointer::get_size)
1894 (recording::memento_of_get_type::get_size): Add implementation.
1895 (recording::global::write_initializer_reproducer): New function in
1896 use by 'recording::global::write_reproducer'.
1897 (recording::global::replay_into)
1898 (recording::global::write_to_dump)
1899 (recording::global::write_reproducer): Handle
1901 * jit-recording.h (class type): Decl 'get_size' and
1903 * libgccjit++.h (class lvalue): Declare new 'set_initializer'
1905 (class lvalue): Decl 'is_global' and 'set_initializer'.
1906 (class global) Decl 'write_initializer_reproducer'. Add
1907 'm_initializer', 'm_initializer_num_bytes' fields. Implement
1908 'set_initializer'. Add a destructor to free 'm_initializer'.
1909 * libgccjit.c (gcc_jit_global_set_initializer): New function.
1910 * libgccjit.h (gcc_jit_global_set_initializer): New function
1912 * libgccjit.map (LIBGCCJIT_ABI_14): New ABI tag.
1914 2020-08-28 Martin Sebor <msebor@redhat.com>
1916 * jit-recording.c (recording::switch_::make_debug_string): Add argument
1919 2020-08-22 Andrea Corallo <andrea.corallo@arm.com>
1922 (gcc_jit_context_new_rvalue_from_int)
1923 (gcc_jit_context_new_rvalue_from_long)
1924 (gcc_jit_context_new_rvalue_from_double)
1925 (gcc_jit_context_new_rvalue_from_ptr): Update function heading
1928 2020-06-16 Nicolas Bértolo <nicolasbertolo@gmail.com>
1930 * Make-lang.in: Always define version, minor and release
1931 numbers. Create the Windows shared library as
1932 libgccjit-$(LIBGCCJIT_VERSION_NUM).dll.
1934 2020-06-03 David Malcolm <dmalcolm@redhat.com>
1937 * jit-builtins.c (builtins_manager::make_primitive_type):
1938 Implement BT_CONST_VOLATILE_PTR.
1940 2020-06-02 David Malcolm <dmalcolm@redhat.com>
1943 * dummy-frontend.c: Include "options.h", "stringpool.h", and
1945 (ATTR_EXCL): New, copied from lto/lto-lang.c.
1946 (attr_noreturn_exclusions): Likewise.
1947 (attr_returns_twice_exclusions): Likewise.
1948 (attr_const_pure_exclusions): Likewise.
1949 (jit_attribute_table): Likewise, copied from lto_attribute_table.
1950 (jit_format_attribute_table): Likewise, copied from
1951 lto_format_attribute_table.
1952 (handle_noreturn_attribute): New, copied from lto/lto-lang.c.
1953 (handle_leaf_attribute): Likewise.
1954 (handle_const_attribute): Likewise.
1955 (handle_malloc_attribute): Likewise.
1956 (handle_pure_attribute): Likewise.
1957 (handle_novops_attribute): Likewise.
1958 (get_nonnull_operand): Likewise.
1959 (handle_nonnull_attribute): Likewise.
1960 (handle_nothrow_attribute): Likewise.
1961 (handle_sentinel_attribute): Likewise.
1962 (handle_type_generic_attribute): Likewise.
1963 (handle_transaction_pure_attribute): Likewise.
1964 (handle_returns_twice_attribute): Likewise.
1965 (handle_patchable_function_entry_attribute): Likewise.
1966 (ignore_attribute): Likewise.
1967 (handle_format_attribute): Likewise.
1968 (handle_format_arg_attribute): Likewise.
1969 (handle_fnspec_attribute): Likewise.
1970 (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Define.
1971 (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Define.
1973 2020-05-28 Nicolas Bértolo <nicolasbertolo@gmail.com>
1975 * Make-lang.in: Remove extra slash. Build libgccjit.dll and its
1976 import library in Windows.
1977 * config-lang.in: Update comment about --enable-host-shared.
1978 * jit-w32.h: New file.
1979 * jit-w32.c: New file.
1980 (print_last_error): New function that prints the error
1981 string corresponding to GetLastError().
1982 (get_TOKEN_USER_current_user): Helper function used for getting
1983 the SID belonging to the current user.
1984 (create_directory_for_current_user): Helper function to create
1985 a directory with permissions such that only the current user can
1987 (win_mkdtemp): Create a temporary directory using Windows APIs.
1988 * jit-playback.c: Do not chmod files in Windows. Use LoadLibrary,
1989 FreeLibrary and GetProcAddress instead of libdl.
1990 * jit-result.h, jit-result.c: Introduce result::handle_t to
1991 abstract over the types used for dynamic library handles.
1992 * jit-tempdir.c: Do not use mkdtemp() in Windows, use
1995 2020-05-27 David Malcolm <dmalcolm@redhat.com>
1998 * dummy-frontend.c (LANG_HOOKS_DEEP_UNSHARING): Define to be true.
1999 * jit-playback.h (gcc::jit::playback::rvalue): Mark tree node with
2002 2020-05-27 Tom Tromey <tromey@gcc.gnu.org>
2005 * docs/conf.py (texinfo_documents): Set description.
2006 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2008 2020-05-26 David Malcolm <dmalcolm@redhat.com>
2011 * docs/topics/functions.rst
2012 (gcc_jit_context_get_builtin_function): Document.
2013 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2014 * dummy-frontend.c (jit_langhook_global_bindings_p): Remove
2016 * jit-builtins.c (type_names): New array.
2017 (get_string_for_type_id): New function.
2018 (gcc::jit::builtins_manager::make_primitive_type): Show name of
2019 type in error messages. Update cases to reflect the order in
2020 builtin-types.def. Implement cases for BT_INT8, BT_INT16,
2021 BT_UINT8, BT_CONST_PTR, BT_VOLATILE_PTR, BT_INT_PTR, BT_FLOAT_PTR,
2022 BT_CONST_DOUBLE_PTR, BT_SIZE, BT_CONST_SIZE.
2024 2020-05-26 David Malcolm <dmalcolm@redhat.com>
2026 * docs/topics/compatibility.rst: Fix underline.
2028 * docs/topics/types.rst: Fix missing blank line.
2029 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2031 2020-05-26 David Malcolm <dmalcolm@redhat.com>
2034 * docs/topics/expressions.rst (Unary Operations): Document that
2035 result_type of gcc_jit_context_new_unary_op must be a numeric type.
2036 (Binary Operations): Likewise for gcc_jit_context_new_binary_op.
2037 (Global variables): Document that "type" of
2038 gcc_jit_context_new_global must be non-`void`.
2039 * docs/topics/function-pointers.rst
2040 (gcc_jit_context_new_function_ptr_type): Document that the
2041 param_types must be non-void, but that return_type may be.
2042 * docs/topics/functions.rst (Params): Document that
2043 gcc_jit_context_new_param's type must be non-void.
2044 (Functions): Likewise for gcc_jit_function_new_local.
2045 * docs/topics/types.rst (gcc_jit_context_new_array_type): Document
2046 that the type must be non-void.
2047 (gcc_jit_context_new_field): Likewise.
2048 * docs/_build/texinfo/Makefile: Regenerate.
2049 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2050 * libgccjit.c (gcc_jit_context_new_array_type): Fail if
2051 element_type is void.
2052 (gcc_jit_context_new_field): Likewise for "type".
2053 (gcc_jit_context_new_function_ptr_type): Likewise for each
2054 element of param_types.
2055 (gcc_jit_context_new_param): Likewise for "type".
2056 (gcc_jit_context_new_global): Likewise.
2057 (gcc_jit_function_new_local): Likewise.
2058 (gcc_jit_type_get_aligned): Likewise.
2060 2020-03-31 Andrea Corallo <andrea.corallo@arm.com>
2061 David Malcolm <dmalcolm@redhat.com>
2063 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_13): New ABI tag
2064 plus add version paragraph.
2065 * libgccjit++.h (namespace gccjit::version): Add new namespace.
2066 * libgccjit.c (gcc_jit_version_major, gcc_jit_version_minor)
2067 (gcc_jit_version_patchlevel): New functions.
2068 * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_version): New macro.
2069 (gcc_jit_version_major, gcc_jit_version_minor)
2070 (gcc_jit_version_patchlevel): New functions.
2071 * libgccjit.map (LIBGCCJIT_ABI_13) New ABI tag.
2073 2020-03-23 Andrea Corallo <andrea.corallo@arm.com>
2076 (gcc::jit::playback::context m_recording_ctxt): Remove
2077 m_char_array_type_node field.
2079 (playback::context::context) Remove m_char_array_type_node from member
2081 (playback::context::new_string_literal) Fix logic to handle string
2084 2020-01-01 Jakub Jelinek <jakub@redhat.com>
2086 Update copyright years.
2088 2019-11-29 Julian Brown <julian@codesourcery.com>
2090 * jit-builtins.c (BT_DFLOAT32_PTR, BT_DFLOAT64_PTR, BT_DFLOAT128_PTR):
2091 Remove commented-out cases.
2093 2019-11-20 David Malcolm <dmalcolm@redhat.com>
2096 * jit-playback.c (gcc::jit::playback::context::make_fake_args):
2097 Update GCC_JIT_BOOL_OPTION_SELFCHECK_GC for new --param syntax.
2099 2019-08-13 Richard Sandiford <richard.sandiford@arm.com>
2102 * jit-playback.c (new_function): Use set_decl_built_in_function.
2104 2019-07-22 Andrea Corallo <andrea.corallo@arm.com>
2106 * jit-recording.c (unary_op_reproducer_strings): Make it extern.
2107 (binary_op_reproducer_strings): Likewise.
2108 * jit-recording.h (unary_op_reproducer_strings): Likewise.
2109 (binary_op_reproducer_strings): Likewise.
2110 * libgccjit.c (gcc_jit_context_new_unary_op): Check result_type to be a
2112 * libgccjit.c (gcc_jit_context_new_binary_op): Improve error message.
2114 2019-07-04 Andrea Corallo <andrea.corallo@arm.com>
2116 * libgccjit.c (gcc_jit_context_new_binary_op): Check result_type to be a
2119 2019-07-04 Andrea Corallo <andrea.corallo@arm.com>
2121 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_12): New ABI tag.
2122 * docs/topics/types.rst: Add gcc_jit_context_new_bitfield.
2123 * jit-common.h (namespace recording): Add class bitfield.
2125 (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): Add macros.
2126 (playback::context::new_bitfield): New method.
2127 (playback::compound_type::set_fields): Add bitfield support.
2128 (playback::lvalue::mark_addressable): Was jit_mark_addressable make this
2129 a method of lvalue plus return a bool to communicate success.
2130 (playback::lvalue::get_address): Check for jit_mark_addressable return
2132 * jit-playback.h (new_bitfield): New method.
2133 (class bitfield): New class.
2134 (class lvalue): Add jit_mark_addressable method.
2135 * jit-recording.c (recording::context::new_bitfield): New method.
2136 (recording::bitfield::replay_into): New method.
2137 (recording::bitfield::write_to_dump): Likewise.
2138 (recording::bitfield::make_debug_string): Likewise.
2139 (recording::bitfield::write_reproducer): Likewise.
2140 * jit-recording.h (class context): Add new_bitfield method.
2141 (class field): Make it derivable by class bitfield.
2142 (class bitfield): Add new class.
2143 * libgccjit++.h (class context): Add new_bitfield method.
2144 * libgccjit.c (struct gcc_jit_bitfield): New structure.
2145 (gcc_jit_context_new_bitfield): New function.
2147 (LIBGCCJIT_HAVE_gcc_jit_context_new_bitfield) New macro.
2148 (gcc_jit_context_new_bitfield): New function.
2149 * libgccjit.map (LIBGCCJIT_ABI_12) New ABI tag.
2151 2019-03-21 Jakub Jelinek <jakub@redhat.com>
2153 * jit-recording.c (reproducer::m_set_identifiers): Use false as Lazy
2154 in hash_set template param.
2156 2019-02-05 Andrea Corallo <andrea.corallo@arm.com>
2158 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_11): New ABI tag.
2159 * docs/topics/contexts.rst (Additional driver options): New
2161 * jit-playback.c (invoke_driver): Add call to append_driver_options.
2162 * jit-recording.c: Within namespace gcc::jit...
2163 (recording::context::~context): Free the optnames within
2165 (recording::context::add_driver_option): New method.
2166 (recording::context::append_driver_options): New method.
2167 (recording::context::dump_reproducer_to_file): Add driver
2169 * jit-recording.h: Within namespace gcc::jit...
2170 (recording::context::add_driver_option): New method.
2171 (recording::context::append_driver_options): New method.
2172 (recording::context::m_driver_options): New field.
2173 * libgccjit++.h (gccjit::context::add_driver_option): New
2175 * libgccjit.c (gcc_jit_context_add_driver_option): New API
2177 * libgccjit.h (gcc_jit_context_add_driver_option): New API
2179 (LIBGCCJIT_HAVE_gcc_jit_context_add_driver_option): New
2181 * libgccjit.map (LIBGCCJIT_ABI_11): New ABI tag.
2183 2019-01-01 Jakub Jelinek <jakub@redhat.com>
2185 Update copyright years.
2187 2018-11-15 David Malcolm <dmalcolm@redhat.com>
2190 * dummy-frontend.c (jit_begin_diagnostic): Add diagnostic_t param.
2192 2018-11-13 David Malcolm <dmalcolm@redhat.com>
2194 * jit-playback.c: Replace "source_location" with "location_t".
2196 2018-10-17 David Malcolm <dmalcolm@redhat.com>
2198 * Make-lang.in (selftest-jit): New.
2200 2018-06-28 Martin Liska <mliska@suse.cz>
2202 * jit-playback.c: Include opt-suggestions.h.
2204 2018-06-28 Martin Liska <mliska@suse.cz>
2206 * jit-playback.c (class auto_argvec): Moved to vec.h.
2207 (auto_argvec::~auto_argvec): Likewise.
2208 (compile): Use the renamed name.
2209 (invoke_driver): Likewise.
2211 2018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
2214 * Make-lang.in ($(LIBGCCJIT_FILENAME)): Add $(EXTRA_GCC_LIBS).
2216 2018-03-09 David Malcolm <dmalcolm@redhat.com>
2217 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
2221 * Make-lang.in (COMMA): New.
2222 (LIBGCCJIT_VERSION_SCRIPT_OPTION): New.
2223 (LIBGCCJIT_SONAME_OPTION): New.
2224 (jit): Move --version-script and -soname linker options to the
2227 2018-01-25 David Malcolm <dmalcolm@redhat.com>
2230 * jit-recording.h (gcc::jit::recording::union_): Remove fields
2231 "m_loc" and "m_name".
2233 2018-01-03 Jakub Jelinek <jakub@redhat.com>
2235 Update copyright years.
2237 2017-12-19 Jakub Jelinek <jakub@redhat.com>
2239 * jit-playback.c (get_type, playback::compile_to_file::copy_file,
2240 playback::context::acquire_mutex): Replace Yoda conditions with
2241 typical order conditions.
2242 * libgccjit.c (gcc_jit_context_new_struct_type,
2243 gcc_jit_struct_set_fields, gcc_jit_context_new_union_type,
2244 gcc_jit_context_new_function, gcc_jit_timer_pop): Likewise.
2245 * jit-builtins.c (matches_builtin): Likewise.
2246 * jit-recording.c (recording::compound_type::set_fields,
2247 recording::fields::write_reproducer, recording::rvalue::set_scope,
2248 recording::function::validate): Likewise.
2249 * jit-logging.c (logger::decref): Likewise.
2251 2017-11-30 Jakub Jelinek <jakub@redhat.com>
2254 (recording::memento_of_new_rvalue_from_const <long>::write_reproducer):
2255 Use ; instead of ;;.
2257 2017-11-28 Jakub Jelinek <jakub@redhat.com>
2259 * jit-playback.c (add_switch): Build SWITCH_EXPR using build2 instead
2260 of build3. Formatting fixes. Adjust funciton comment.
2262 2017-11-23 Tom de Vries <tom@codesourcery.com>
2264 * libgccjit.c (RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE): Wrap in
2265 JIT_{BEGIN,END}_STMT.
2267 2017-10-31 David Malcolm <dmalcolm@redhat.com>
2269 * docs/internals/index.rst (Running the test suite): Document
2270 PRESERVE_EXECUTABLES.
2271 (Running under valgrind): Add markup to RUN_UNDER_VALGRIND.
2272 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2274 2017-10-04 David Malcolm <dmalcolm@redhat.com>
2276 * docs/cp/topics/expressions.rst (Vector expressions): New
2278 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_10): New ABI tag.
2279 * docs/topics/expressions.rst (Vector expressions): New section.
2280 * docs/topics/types.rst (gcc_jit_type_get_vector): Add link to
2281 gcc_jit_context_new_rvalue_from_vector.
2282 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2283 * jit-common.h (gcc::jit:recording::vector_type): New forward
2286 (gcc::jit::playback::context::new_rvalue_from_vector): New method.
2288 (gcc::jit::playback::context::new_rvalue_from_vector): New method.
2289 * jit-recording.c: In namespace gcc::jit::
2290 (class comma_separated_string): New class.
2291 (comma_separated_string::comma_separated_string): New ctor,
2292 adapted from recording::call::make_debug_string.
2293 (comma_separated_string::~comma_separated_string): New dtor.
2294 In namespace gcc::jit::recording::
2295 (context::new_rvalue_from_vector): New method.
2296 (type::get_vector): Update for renaming of memento_of_get_vector.
2297 (class memento_of_get_vector): Rename to...
2298 (class vector_type): ..this.
2299 (memento_of_new_rvalue_from_vector::memento_of_new_rvalue_from_vector):
2301 (memento_of_new_rvalue_from_vector::replay_into): New method.
2302 (memento_of_new_rvalue_from_vector::visit_children): New method.
2303 (memento_of_new_rvalue_from_vector::make_debug_string): New
2305 (memento_of_new_rvalue_from_vector::write_reproducer): New method.
2306 (call::make_debug_string): Split out arg-printing code into ctor
2307 for comma_separated_string.
2308 * jit-recording.h: In namespace gcc::jit::recording::
2309 (context::new_rvalue_from_vector): New method.
2310 (type::dyn_cast_vector_type): New virtual function.
2311 (class memento_of_get_vector): Rename to...
2312 (class vector_type): ...this.
2313 (vector_type::unqualified): Remove this vfunc override in favor
2315 (vector_type::get_element_type): ...this new method.
2316 (vector_type::get_num_units): New method.
2317 (vector_type::dyn_cast_vector_type): New vfunc override.
2318 (class memento_of_new_rvalue_from_vector): New class.
2319 * libgccjit++.h (gccjit::context::new_rvalue): Add overload for
2321 * libgccjit.c (gcc_jit_context_new_binary_op): Strip off type
2322 qualifications when checking that both operands have same type.
2323 (gcc_jit_context_new_rvalue_from_vector): New API entrypoint.
2325 (LIBGCCJIT_HAVE_gcc_jit_context_new_rvalue_from_vector): New
2327 (gcc_jit_context_new_rvalue_from_vector): New API entrypoint.
2328 * libgccjit.map (LIBGCCJIT_ABI_10): New ABI tag.
2330 2017-09-28 David Malcolm <dmalcolm@redhat.com>
2332 * docs/topics/expressions.rst (Function calls): Add link to
2333 gcc_jit_context_new_function_ptr_type.
2334 (Function pointers): Convert to cross-references to
2335 function-pointers.rst, moving material there.
2336 * docs/topics/function-pointers.rst: New page.
2337 * docs/topics/index.rst: Add function-pointers.rst.
2338 * docs/topics/types.rst (Function pointer types): New section.
2339 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2341 2017-09-28 David Malcolm <dmalcolm@redhat.com>
2344 (gcc::jit::recording::function_type::is_same_type_as): New function.
2345 * jit-recording.h: In namespace gcc::jit::recording::
2346 (type::accepts_writes_from): Use is_same_type_as rather than pointer
2348 (type::is_same_type_as): New virtual function.
2349 (function_type::is_same_type_as): New override.
2351 2017-09-27 David Malcolm <dmalcolm@redhat.com>
2353 * docs/cp/topics/expressions.rst (Function pointers): New section.
2354 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_9): New tag.
2355 * docs/topics/expressions.rst (Function pointers): New section.
2356 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2357 * jit-common.h (class gcc::jit::recording::function_pointer): New
2359 * jit-playback.c (gcc::jit::playback::function::get_address): New
2361 * jit-playback.h (gcc::jit::playback::function::get_address): New
2363 * jit-recording.c: Within namespace gcc::jit::recording...
2364 (function::function): Initialize new field "m_fn_ptr_type".
2365 (function::get_address): New method.
2366 (function_pointer::replay_into): New method.
2367 (function_pointer::visit_children): New method.
2368 (function_pointer::make_debug_string): New method.
2369 (function_pointer::write_reproducer): New method.
2370 * jit-recording.h: Within namespace gcc::jit::recording...
2371 (function::get_address): New method.
2372 (function): Add field "m_fn_ptr_type".
2373 (class function_pointer): New subclass of rvalue.
2374 * libgccjit++.h (gccjit::function::get_address): New method.
2375 * libgccjit.c (gcc_jit_function_get_address): New function.
2376 * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_function_get_address): New
2378 (gcc_jit_function_get_address): New API entrypoint.
2379 * libgccjit.map (LIBGCCJIT_ABI_9): New tag.
2381 2017-09-14 David Malcolm <dmalcolm@redhat.com>
2384 * jit-builtins.c (matches_builtin): Ignore entries with a NULL
2387 2017-08-18 David Malcolm <dmalcolm@redhat.com>
2389 PR tree-optimization/46805
2390 * dummy-frontend.c (jit_langhook_parse_file): Handle vector types.
2392 2017-08-18 David Malcolm <dmalcolm@redhat.com>
2394 * jit-recording.c (class gcc::jit::reproducer): Rename field
2395 "m_identifiers" to "m_map_memento_to_identifier". Add field
2396 "m_set_identifiers" and struct hash_traits for it.
2397 (gcc::jit::reproducer::reproducer): Update for above.
2398 (convert_to_identifier): New function.
2399 (gcc::jit::reproducer::ensure_identifier_is_unique): New method.
2400 (gcc::jit::reproducer::make_identifier): Avoid appending the %p
2401 unless necessary for uniqueness. Update for field renaming.
2402 (gcc::jit::reproducer::get_identifier): Update for field renaming.
2404 2017-08-09 David Malcolm <dmalcolm@redhat.com>
2406 * docs/cp/topics/types.rst (Vector types): New section.
2407 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_8): New tag.
2408 * docs/topics/types.rst (gcc_jit_context_get_type): Fix typo in
2410 (Vector types): New section.
2411 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2412 * jit-playback.c (gcc::jit::playback::type::get_vector): New
2414 * jit-playback.h (gcc::jit::playback::type::get_vector): New
2416 * jit-recording.c: In namespace gcc::jit::recording::
2417 (type::get_vector): New method.
2418 (memento_of_get_aligned::write_reproducer): Fix typo
2420 (memento_of_get_vector::replay_into): New method.
2421 (memento_of_get_vector::make_debug_string): New method.
2422 (memento_of_get_vector::write_reproducer): New method.
2423 * jit-recording.h: In namespace gcc::jit::recording::
2424 (type::get_vector): New
2426 (class memento_of_get_vector): New class.
2427 * libgccjit++.h (gccjit::type::get_vector): New method.
2428 * libgccjit.c (gcc_jit_type_get_vector): New public entrypoint.
2429 * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_type_get_vector): New
2431 (gcc_jit_type_get_vector): New decl.
2432 * libgccjit.map (LIBGCCJIT_ABI_8): New ABI tag.
2434 2017-07-05 Richard Sandiford <richard.sandiford@linaro.org>
2435 Alan Hayward <alan.hayward@arm.com>
2436 David Sherwood <david.sherwood@arm.com>
2438 * dummy-frontend.c (jit_langhook_type_for_mode): Remove "enum" before
2441 2017-04-24 David Malcolm <dmalcolm@redhat.com>
2443 * docs/cp/topics/types.rst (gccjit::type::get_const): Remove
2445 (gccjit::type::get_aligned): Add.
2446 * docs/topics/compatibility.rst: Add LIBGCCJIT_ABI_7.
2447 * docs/topics/types.rst: Add gcc_jit_type_get_aligned.
2448 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2449 * jit-playback.c (gcc::jit::playback::type::get_aligned): New
2451 * jit-playback.h (gcc::jit::playback::type::get_aligned): New
2453 * jit-recording.c: Within namespace gcc::jit::recording...
2454 (type::get_aligned): New method.
2455 (memento_of_get_aligned::replay_into): New method.
2456 (memento_of_get_aligned::make_debug_string): New method.
2457 (memento_of_get_aligned::write_reproducer): New method.
2458 * jit-recording.h: Within namespace gcc::jit::recording...
2459 (type::get_aligned): New method.
2460 (type::accepts_writes_from): Strip off qualifications from
2461 this when comparing pointer equality.
2462 (decorated_type): New subclass of type, subsuming the
2463 commonality between memento_of_get_const and
2464 memento_of_get_volatile.
2465 (memento_of_get_const): Make a subclass of decorated_type,
2467 (memento_of_get_volatile): Likewise.
2468 (memento_of_get_aligned): Likewise.
2469 * libgccjit++.h: Within namespace gccjit...
2470 (type::get_const): New method.
2471 (type::get_aligned): New method.
2472 * libgccjit.c (gcc_jit_type_get_aligned): New function.
2473 * libgccjit.h (gcc_jit_type_get_aligned): New decl.
2474 * libgccjit.map (LIBGCCJIT_ABI_7): New
2475 (gcc_jit_type_get_aligned): Add.
2477 2017-01-19 David Malcolm <dmalcolm@redhat.com>
2479 * dummy-frontend.c (jit_langhook_type_for_size): Delete.
2480 (LANG_HOOKS_TYPE_FOR_SIZE): Don't redefine.
2482 2017-01-18 David Malcolm <dmalcolm@redhat.com>
2484 * dummy-frontend.c (jit_langhook_type_for_size): Implement, using
2485 lto's lto_type_for_size.
2487 2017-01-01 Jakub Jelinek <jakub@redhat.com>
2489 Update copyright years.
2491 2016-05-20 David Malcolm <dmalcolm@redhat.com>
2493 * docs/topics/compatibility.rst: Add LIBGCCJIT_ABI_6.
2494 * docs/topics/expressions.rst (Function calls): Add documentation
2495 of gcc_jit_rvalue_set_bool_require_tail_call.
2496 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2497 * jit-common.h (gcc::jit::recording::base_call): Add forward decl.
2498 * jit-playback.c: Within namespace gcc::jit::playback...
2499 (context::build_call) Add "require_tail_call" param and use it
2500 to set CALL_EXPR_MUST_TAIL_CALL.
2501 (context::new_call): Add "require_tail_call" param.
2502 (context::new_call_through_ptr): Likewise.
2503 * jit-playback.h: Within namespace gcc::jit::playback...
2504 (context::new_call: Add "require_tail_call" param.
2505 (context::new_call_through_ptr): Likewise.
2506 (context::build_call): Likewise.
2507 * jit-recording.c: Within namespace gcc::jit::recording...
2508 (base_call::base_call): New constructor.
2509 (base_call::write_reproducer_tail_call): New method.
2510 (call::call): Update for inheritance from base_call.
2511 (call::replay_into): Provide m_require_tail_call to call
2513 (call::write_reproducer): Call write_reproducer_tail_call.
2514 (call_through_ptr::call_through_ptr): Update for inheritance from
2516 (call_through_ptr::replay_into): Provide m_require_tail_call to call
2517 to new_call_through_ptr.
2518 (recording::call_through_ptr::write_reproducer): Call
2519 write_reproducer_tail_call.
2520 * jit-recording.h: Within namespace gcc::jit::recording...
2521 (rvalue::dyn_cast_base_call): New virtual function.
2522 (class base_call): New subclass of class rvalue.
2523 (class call): Inherit from base_call rather than directly from
2524 rvalue, moving get_precedence and m_args to base_call.
2525 (class call_through_ptr): Likewise.
2526 * libgccjit.c (gcc_jit_rvalue_set_bool_require_tail_call): New
2529 (LIBGCCJIT_HAVE_gcc_jit_rvalue_set_bool_require_tail_call): New
2531 (gcc_jit_rvalue_set_bool_require_tail_call): New function.
2532 * libgccjit.map (LIBGCCJIT_ABI_6): New.
2533 (gcc_jit_rvalue_set_bool_require_tail_call): Add.
2535 2016-05-17 David Malcolm <dmalcolm@redhat.com>
2537 * dummy-frontend.c: Include diagnostic.h.
2538 (jit_begin_diagnostic): New function.
2539 (jit_end_diagnostic): New function.
2540 (jit_langhook_init): Register jit_begin_diagnostic
2541 and jit_end_diagnostic with the global_dc.
2542 * jit-playback.c: Include diagnostic.h.
2543 (gcc::jit::playback::context::add_diagnostic): New method.
2544 * jit-playback.h (struct diagnostic_context): Add forward
2546 (gcc::jit::playback::context::add_diagnostic): New method.
2548 2016-05-17 David Malcolm <dmalcolm@redhat.com>
2550 * docs/topics/expressions.rst (Function calls): Document
2551 gcc_jit_context_new_call_through_ptr.
2552 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2554 2016-05-13 David Malcolm <dmalcolm@redhat.com>
2556 * jit-playback.h: Within namespace gcc:jit::playback...
2557 (compile_to_memory::postprocess): Mark with FINAL OVERRIDE.
2558 (compile_to_file::postprocess): Likewise.
2559 (function::finalizer): Likewise.
2560 (block::finalizer): Likewise.
2561 (source_file::finalizer): Likewise.
2562 (source_line::finalizer): Likewise.
2563 * jit-recording.c (gcc::jit::rvalue_usage_validator):: Likewise.
2564 * jit-recording.h: Within namespace gcc::jit::recording...
2565 (string::replay_into): Mark with FINAL OVERRIDE.
2566 (string::make_debug_string): Likewise.
2567 (string::write_reproducer): Likewise.
2568 (location::replay_into): Likewise.
2569 (location::dyn_cast_location): Likewise.
2570 (location::make_debug_string): Likewise.
2571 (location::write_reproducer): Likewise.
2572 (memento_of_get_type::dereference): Likewise.
2573 (memento_of_get_type::accepts_writes_from): Likewise.
2574 (memento_of_get_type::is_int): Likewise.
2575 (memento_of_get_type::is_float): Likewise.
2576 (memento_of_get_type::is_bool): Likewise.
2577 (memento_of_get_type::is_pointer): Likewise.
2578 (memento_of_get_type::is_array): Likewise.
2579 (memento_of_get_type::is_void): Likewise.
2580 (memento_of_get_type::replay_into): Likewise.
2581 (memento_of_get_type::make_debug_string): Likewise.
2582 (memento_of_get_type::write_reproducer): Likewise.
2583 (memento_of_get_pointer::dereference): Likewise.
2584 (memento_of_get_pointer::accepts_writes_from): Likewise.
2585 (memento_of_get_pointer::replay_into): Likewise.
2586 (memento_of_get_pointer::is_int): Likewise.
2587 (memento_of_get_pointer::is_float): Likewise.
2588 (memento_of_get_pointer::is_bool): Likewise.
2589 (memento_of_get_pointer::is_pointer): Likewise.
2590 (memento_of_get_pointer::is_array): Likewise.
2591 (memento_of_get_pointer::make_debug_string): Likewise.
2592 (memento_of_get_pointer::write_reproducer): Likewise.
2593 (memento_of_get_const::dereference): Likewise.
2594 (memento_of_get_const::accepts_writes_from): Likewise.
2595 (memento_of_get_const::unqualified): Likewise.
2596 (memento_of_get_const::is_int): Likewise.
2597 (memento_of_get_const::is_float): Likewise.
2598 (memento_of_get_const::is_bool): Likewise.
2599 (memento_of_get_const::is_pointer): Likewise.
2600 (memento_of_get_const::is_array): Likewise.
2601 (memento_of_get_const::void replay_into): Likewise;
2602 (memento_of_get_const::make_debug_string): Likewise.
2603 (memento_of_get_const::write_reproducer): Likewise.
2604 (memento_of_get_volatile::dereference): Likewise.
2605 (memento_of_get_volatile::unqualified): Likewise.
2606 (memento_of_get_volatile::is_int): Likewise.
2607 (memento_of_get_volatile::is_float): Likewise.
2608 (memento_of_get_volatile::is_bool): Likewise.
2609 (memento_of_get_volatile::is_pointer): Likewise.
2610 (memento_of_get_volatile::is_array): Likewise.
2611 (memento_of_get_volatile::replay_into): Likewise;
2612 (memento_of_get_volatile::make_debug_string): Likewise.
2613 (memento_of_get_volatile::write_reproducer): Likewise.
2614 (array_type::dereference): Likewise.
2615 (array_type::is_int): Likewise.
2616 (array_type::is_float): Likewise.
2617 (array_type::is_bool): Likewise.
2618 (array_type::is_pointer): Likewise.
2619 (array_type::is_array): Likewise.
2620 (array_type::replay_into): Likewise;
2621 (array_type::make_debug_string): Likewise.
2622 (array_type::write_reproducer): Likewise.
2623 (function_type::dereference): Likewise.
2624 (function_type::function_dyn_cast_function_type): Likewise.
2625 (function_type::function_as_a_function_type): Likewise.
2626 (function_type::is_int): Likewise.
2627 (function_type::is_float): Likewise.
2628 (function_type::is_bool): Likewise.
2629 (function_type::is_pointer): Likewise.
2630 (function_type::is_array): Likewise.
2631 (function_type::replay_into): Likewise;
2632 (function_type::make_debug_string): Likewise.
2633 (function_type::write_reproducer): Likewise.
2634 (field::replay_into): Likewise;
2635 (field::write_to_dump): Likewise.
2636 (field::make_debug_string): Likewise.
2637 (field::write_reproducer): Likewise.
2638 (compound_type::dereference): Likewise.
2639 (compound_type::is_int): Likewise.
2640 (compound_type::is_float): Likewise.
2641 (compound_type::is_bool): Likewise.
2642 (compound_type::is_pointer): Likewise.
2643 (compound_type::is_array): Likewise.
2644 (compound_type::has_known_size): Likewise.
2645 (struct_::dyn_cast_struct): Likewise.
2646 (struct_::replay_into): Likewise.
2647 (struct_::access_as_type): Likewise.
2648 (struct_::make_debug_string): Likewise.
2649 (struct_::write_reproducer): Likewise.
2650 (fields::replay_into): Likewise.
2651 (fields::write_to_dump): Likewise.
2652 (fields::make_debug_string): Likewise.
2653 (fields::write_reproducer): Likewise.
2654 (union_::replay_into): Likewise.
2655 (union_::make_debug_string): Likewise.
2656 (union_::write_reproducer): Likewise.
2657 (lvalue::access_as_rvalue): Mark with OVERRIDE.
2658 (param::replay_into): Mark with FINAL OVERRIDE.
2659 (param::visit_children): Likewise.
2660 (param::dyn_cast_param): Likewise.
2661 (param::access_as_rvalue): Likewise.
2662 (param::access_as_lvalue): Likewise.
2663 (param::make_debug_string): Likewise.
2664 (param::write_reproducer): Likewise.
2665 (param::get_precedence): Likewise.
2666 (function::replay_into): Likewise.
2667 (function::write_to_dump): Likewise.
2668 (function::make_debug_string): Likewise.
2669 (function::write_reproducer): Likewise.
2670 (block::write_to_dump): Likewise.
2671 (block::make_debug_string): Likewise.
2672 (block::write_reproducer): Likewise.
2673 (block::replay_into): Likewise.
2674 (global::replay_into): Likewise;
2675 (global::visit_children): Likewise.
2676 (global::write_to_dump): Likewise.
2677 (global::make_debug_string): Likewise.
2678 (global::write_reproducer): Likewise.
2679 (global::get_precedence): Likewise.
2680 (memento_of_new_rvalue_from_const::replay_into): Likewise.
2681 (memento_of_new_rvalue_from_const::visit_children): Likewise.
2682 (memento_of_new_rvalue_from_const::is_constant): Likewise.
2683 (memento_of_new_rvalue_from_const::get_wide_int): Likewise.
2684 (memento_of_new_rvalue_from_const::make_debug_string): Likewise.
2685 (memento_of_new_rvalue_from_const::write_reproducer): Likewise.
2686 (memento_of_new_rvalue_from_const::get_precedence): Likewise.
2687 (memento_of_new_string_literal::replay_into): Likewise.
2688 (memento_of_new_string_literal::visit_children): Likewise.
2689 (memento_of_new_string_literal::make_debug_string): Likewise.
2690 (memento_of_new_string_literal::write_reproducer): Likewise.
2691 (memento_of_new_string_literal::get_precedence): Likewise.
2692 (unary_op::replay_into): Likewise.
2693 (unary_op::visit_children): Likewise.
2694 (unary_op::make_debug_string): Likewise.
2695 (unary_op::write_reproducer): Likewise.
2696 (unary_op::get_precedence): Likewise.
2697 (binary_op::replay_into): Likewise.
2698 (binary_op::visit_children): Likewise.
2699 (binary_op::make_debug_string): Likewise.
2700 (binary_op::write_reproducer): Likewise.
2701 (binary_op::get_precedence): Likewise.
2702 (comparison::replay_into): Likewise.
2703 (comparison::visit_children): Likewise.
2704 (comparison::make_debug_string): Likewise.
2705 (comparison::write_reproducer): Likewise.
2706 (comparison::get_precedence): Likewise.
2707 (cast::replay_into): Likewise.
2708 (cast::visit_children): Likewise.
2709 (cast::make_debug_string): Likewise.
2710 (cast::write_reproducer): Likewise.
2711 (cast::get_precedence): Likewise.
2712 (call::replay_into): Likewise.
2713 (call::visit_children): Likewise.
2714 (call::make_debug_string): Likewise.
2715 (call::write_reproducer): Likewise.
2716 (call::get_precedence): Likewise.
2717 (call_through_ptr::replay_into): Likewise.
2718 (call_through_ptr::visit_children): Likewise.
2719 (call_through_ptr::make_debug_string): Likewise.
2720 (call_through_ptr::write_reproducer): Likewise.
2721 (call_through_ptr::get_precedence): Likewise.
2722 (array_access::replay_into): Likewise.
2723 (array_access::visit_children): Likewise.
2724 (array_access::make_debug_string): Likewise.
2725 (array_access::write_reproducer): Likewise.
2726 (array_access::get_precedence): Likewise.
2727 (access_field_of_lvalue::replay_into): Likewise.
2728 (access_field_of_lvalue::visit_children): Likewise.
2729 (access_field_of_lvalue::make_debug_string): Likewise.
2730 (access_field_of_lvalue::write_reproducer): Likewise.
2731 (access_field_of_lvalue::get_precedence): Likewise.
2732 (access_field_rvalue::replay_into): Likewise.
2733 (access_field_rvalue::visit_children): Likewise.
2734 (access_field_rvalue::make_debug_string): Likewise.
2735 (access_field_rvalue::write_reproducer): Likewise.
2736 (access_field_rvalue::get_precedence): Likewise.
2737 (dereference_field_rvalue::replay_into): Likewise.
2738 (dereference_field_rvalue::visit_children): Likewise.
2739 (dereference_field_rvalue::make_debug_string): Likewise.
2740 (dereference_field_rvalue::write_reproducer): Likewise.
2741 (dereference_field_rvalue::get_precedence): Likewise.
2742 (dereference_rvalue::replay_into): Likewise.
2743 (dereference_rvalue::visit_children): Likewise.
2744 (dereference_rvalue::make_debug_string): Likewise.
2745 (dereference_rvalue::write_reproducer): Likewise.
2746 (dereference_rvalue::get_precedence): Likewise.
2747 (get_address_of_lvalue::replay_into): Likewise.
2748 (get_address_of_lvalue::visit_children): Likewise.
2749 (get_address_of_lvalue::make_debug_string): Likewise.
2750 (get_address_of_lvalue::write_reproducer): Likewise.
2751 (get_address_of_lvalue::get_precedence): Likewise.
2752 (local::replay_into): Likewise.
2753 (local::visit_children): Likewise.
2754 (local::write_to_dump): Likewise.
2755 (local::make_debug_string): Likewise.
2756 (local::write_reproducer): Likewise.
2757 (local::get_precedence): Likewise.
2758 (statement::write_to_dump): Likewise.
2759 (eval::replay_into): Likewise.
2760 (eval::make_debug_string): Likewise.
2761 (eval::write_reproducer): Likewise.
2762 (assignment::replay_into): Likewise.
2763 (assignment::make_debug_string): Likewise.
2764 (assignment::write_reproducer): Likewise.
2765 (assignment_op::replay_into): Likewise.
2766 (assignment_op::make_debug_string): Likewise.
2767 (assignment_op::write_reproducer): Likewise.
2768 (comment::replay_into): Likewise.
2769 (comment::make_debug_string): Likewise.
2770 (comment::write_reproducer): Likewise.
2771 (conditional::replay_into): Likewise.
2772 (conditional::get_successor_blocks): Likewise.
2773 (conditional::make_debug_string): Likewise.
2774 (conditional::write_reproducer): Likewise.
2775 (jump::replay_into): Likewise.
2776 (jump::get_successor_blocks): Likewise.
2777 (jump::make_debug_string): Likewise.
2778 (jump::write_reproducer): Likewise.
2779 (return_::replay_into): Likewise.
2780 (return_::get_successor_blocks): Likewise.
2781 (return_::make_debug_string): Likewise.
2782 (return_::write_reproducer): Likewise.
2783 (case_::replay_into): Likewise.
2784 (case_::write_reproducer): Likewise.
2785 (case_::make_debug_string): Likewise.
2786 (switch_::replay_into): Likewise.
2787 (switch_::get_successor_blocks): Likewise.
2788 (switch_::make_debug_string): Likewise.
2789 (switch_::write_reproducer): Likewise.
2791 2016-02-08 David Malcolm <dmalcolm@redhat.com>
2793 * dummy-frontend.c (jit_langhook_init): Remove
2794 second argument to build_common_tree_nodes to
2797 2016-01-23 Iain Buclaw <ibuclaw@gdcproject.org>
2799 * jit-playback.c: Include pthread.h.
2801 2016-01-19 David Malcolm <dmalcolm@redhat.com>
2804 * jit-playback.c (gcc::jit::playback::compile_to_file::postprocess):
2805 Potentially add the temporary artifact to the tempdir's list of
2806 tempfiles needing additional cleanup.
2807 (gcc::jit::playback::context::extract_any_requested_dumps): Likewise
2809 * jit-tempdir.c (gcc::jit::tempdir::~tempdir): Clean up additional
2811 * jit-tempdir.h (gcc::jit::tempdir::add_temp_file): New method.
2812 (gcc::jit::tempdir::m_tempfiles): New field.
2813 * docs/cp/intro/tutorial04.rst: Update for changes to toyvm.cc.
2814 * docs/examples/tut04-toyvm/toyvm.cc (class compilation_result):
2816 (toyvm_function::compile): Change return type from function ptr
2817 to a compilation_result.
2818 (toyvm_function::get_function_name): New accessor.
2819 (toyvm_function::m_funcname): New field.
2820 (get_function_name): Convert to...
2821 (toyvm_function::make_function_name): ...this new method.
2822 (toyvm_function::parse): Call make_function_name.
2823 (toyvm_function::compile): Convert return type from function ptr
2824 to a compilation_result. Use get_function_name.
2825 (compilation_state::compile): Convert return type from
2826 gcc_jit_result * to a compilation_result.
2827 (test_script): Update for above changes, extracting the code from
2828 the compilation_result.
2830 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2832 2016-01-04 Jakub Jelinek <jakub@redhat.com>
2834 Update copyright years.
2836 2015-11-11 Andrew MacLeod <amacleod@redhat.com>
2838 * dummy-frontend.c: Remove unused header files.
2839 * jit-builtins.c: Likewise.
2840 * jit-playback.c: Likewise.
2841 * jit-recording.c: Likewise.
2842 * jit-spec.c: Likewise.
2843 * libgccjit.c: Likewise.
2845 2015-11-07 Richard Sandiford <richard.sandiford@arm.com>
2847 * jit-builtins.c: Don't undef DEF_BUILTIN.
2849 2015-10-29 Andrew MacLeod <amacleod@redhat.com>
2851 * dummy-frontend.c: Reorder #include's and remove duplicates.
2852 * jit-builtins.c: Likewise.
2853 * jit-playback.c: Likewise.
2854 * jit-recording.c: Likewise.
2855 * libgccjit.c: Likewise.
2857 2015-10-13 Jakub Jelinek <jakub@redhat.com>
2859 * jit-builtins.c (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
2860 DEF_FUNCTION_TYPE_11): Define.
2861 * jit-builtins.h (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
2862 DEF_FUNCTION_TYPE_11): Define.
2864 2015-09-30 Thomas Schwinge <thomas@codesourcery.com>
2865 Ulrich Drepper <drepper@gmail.com>
2867 * jit-builtins.h: Undefine DEF_FUNCTION_TYPE_VAR_6 after use.
2869 2015-09-30 Matthias Klose <doko@ubuntu.com>
2871 * jit-builtins.h Define DEF_FUNCTION_TYPE_VAR_6,
2872 remove DEF_FUNCTION_TYPE_VAR_11.
2873 * jit-builtins.c (builtins_manager::make_type): Define and handle
2874 DEF_FUNCTION_TYPE_VAR_6, remove DEF_FUNCTION_TYPE_VAR_11.
2876 2015-08-25 David Malcolm <dmalcolm@redhat.com>
2878 * docs/cp/topics/contexts.rst
2879 (gccjit::context::set_bool_use_external_driver): New.
2880 * docs/internals/test-hello-world.exe.log.txt: Update.
2881 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_5): New.
2882 * docs/topics/contexts.rst
2883 (gcc_jit_context_set_bool_use_external_driver): New.
2884 * jit-common.h (enum inner_bool_option): Add
2885 INNER_BOOL_OPTION_USE_EXTERNAL_DRIVER.
2886 * jit-playback.c (gcc_driver_name): New global.
2887 (gcc:jit::playback::context::invoke_driver): Split out second
2889 (gcc::jit::playback::context::invoke_embedded_driver): ...this new
2891 (gcc::jit::playback::context::invoke_external_driver): ...this new
2894 (gcc::jit::playback::context::get_inner_bool_option): New.
2895 (gcc::jit::playback::context::invoke_embedded_driver): New.
2896 (gcc::jit::playback::context::invoke_external_driver): New.
2897 * jit-recording.c (inner_bool_option_reproducer_strings):
2898 Add entry for INNER_BOOL_OPTION_USE_EXTERNAL_DRIVER.
2900 (gccjit::context::set_bool_use_external_driver): New.
2901 * libgccjit.c (gcc_jit_context_set_bool_use_external_driver): New.
2902 * libgccjit.h (gcc_jit_context_set_bool_use_external_driver): New.
2903 (LIBGCCJIT_HAVE_gcc_jit_context_set_bool_use_external_driver):
2905 * libgccjit.map (LIBGCCJIT_ABI_5): New.
2906 * notes.txt: Show invocation of embedded copy of driver.
2907 * docs/internals/test-hello-world.exe.log.txt: Update
2909 2015-08-13 David Malcolm <dmalcolm@redhat.com>
2911 * jit-playback.c (invoke_driver): On OS X, add
2912 "-Wl,-undefined,dynamic_lookup" to the driver arguments.
2914 2015-08-03 David Malcolm <dmalcolm@redhat.com>
2916 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_4): New.
2917 * docs/topics/contexts.rst (GCC_JIT_BOOL_OPTION_DUMP_SUMMARY):
2918 We no longer show a profile.
2919 * docs/topics/index.rst (Topic Reference): Add performance.rst.
2920 * docs/topics/performance.rst: New file.
2921 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2922 * jit-playback.c (gcc::jit::playback::context::compile): Add timer
2923 param when constructing the "toplev" instance.
2924 (gcc::jit::playback::context::acquire_mutex): Add timer param when
2925 constructing auto_timevar instance.
2926 (gcc::jit::playback::context::make_fake_args): If we have a timer,
2927 add "-ftime-report".
2928 (gcc::jit::playback::context::invoke_driver): Add timer param when
2929 constructing auto_timevar instance.
2930 (gcc::jit::playback::context::dlopen_built_dso): Likewise.
2931 * jit-playback.h (gcc::jit::playback::context::get_timer): New accessor.
2932 * jit-recording.c: Include timevar.h.
2933 (gcc::jit::recording::context::context): Initialize field "m_timer".
2934 * jit-recording.h: Add forward declaration of class timer.
2935 (gcc::jit::recording::context::set_timer): New method.
2936 (gcc::jit::recording::context::get_timer): New method.
2937 (gcc::jit::recording::context::m_timer): New field.
2938 * libgccjit++.h (gccjit::timer): New class.
2939 (gccjit::auto_time): New class.
2940 (gccjit::context::set_timer): New method.
2941 (gccjit::context::get_timer): New.
2942 (gccjit::timer::timer): New.
2943 (gccjit::timer::push): New.
2944 (gccjit::timer::pop): New.
2945 (timer::print): New.
2946 (timer::get_inner_timer): New.
2947 (timer::release): New.
2948 (auto_time::auto_time): New.
2949 (auto_time::~auto_time): New.
2950 * libgccjit.c: Include timevar.h.
2951 (struct gcc_jit_timer): New.
2952 (gcc_jit_timer_new): New function.
2953 (gcc_jit_timer_release): New function.
2954 (gcc_jit_context_set_timer): New function.
2955 (gcc_jit_context_get_timer): New function.
2956 (gcc_jit_timer_push): New function.
2957 (gcc_jit_timer_pop): New function.
2958 (gcc_jit_timer_print): New function.
2959 * libgccjit.h (LIBGCCJIT_HAVE_TIMING_API): New macro.
2960 (gcc_jit_timer): New typedef.
2961 (gcc_jit_timer_new): New function.
2962 (gcc_jit_timer_release): New function.
2963 (gcc_jit_context_set_timer): New function.
2964 (gcc_jit_context_get_timer): New function.
2965 (gcc_jit_timer_push): New function.
2966 (gcc_jit_timer_pop): New function.
2967 (gcc_jit_timer_print): New function.
2968 * libgccjit.map (LIBGCCJIT_ABI_4): New.
2969 (gcc_jit_timer_new): New function.
2970 (gcc_jit_timer_release): New function.
2971 (gcc_jit_context_set_timer): New function.
2972 (gcc_jit_context_get_timer): New function.
2973 (gcc_jit_timer_push): New function.
2974 (gcc_jit_timer_pop): New function.
2975 (gcc_jit_timer_print): New function.
2977 2015-07-23 David Malcolm <dmalcolm@redhat.com>
2979 * jit-playback.c (invoke_driver): Convert local "argvec"
2980 to an auto_argvec, so that it owns copies of the strings,
2981 rather than borrows them, updating ADD_ARG to use xstrdup
2982 and special-casing the NULL terminator to avoid
2983 xstrdup (NULL). Call add_multilib_driver_arguments at the front
2985 (MULTILIB_DEFAULTS): Provide a default definition.
2986 (multilib_defaults_raw): New constant array.
2987 (gcc::jit::playback::context::add_multilib_driver_arguments): New
2990 (gcc::jit::playback::context::add_multilib_driver_arguments): New
2992 * docs/internals/test-hello-world.exe.log.txt: Update.
2993 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2995 2015-07-16 David Malcolm <dmalcolm@redhat.com>
2997 * docs/internals/index.rst (Overview of code structure): Add note
2998 that the implementation is in C++, despite the .c extension.
2999 (Submitting patches): New subsection.
3000 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3002 2015-07-09 Andrew MacLeod <amacleod@redhat.com>
3004 * dummy-frontend.c: Adjust includes for flags.h changes.
3005 * jit-common.h: Likewise.
3006 * jit-playback.c: Likewise.
3008 2015-07-08 David Malcolm <dmalcolm@redhat.com>
3011 * libgccjit.c (gcc_jit_context_new_field): Show name of field in
3012 "unknown size" error message.
3013 (gcc_jit_struct_set_fields): Show name of struct in error message.
3014 (gcc_jit_context_new_global): Show name of global in
3015 "unknown size" error message.
3016 (gcc_jit_function_new_local): Likewise for local.
3018 2015-07-07 Andrew MacLeod <amacleod@redhat.com>
3020 * dummy-frontend.c: Adjust includes.
3021 * jit-common.h: Likewise.
3022 * jit-playback.c: Likewise.
3024 2015-07-07 David Malcolm <dmalcolm@redhat.com>
3027 * jit-recording.h: Within namespace gcc:jit::recording...
3028 (type::has_known_size): New virtual function.
3029 (struct_has_known_size): New function.
3030 * libgccjit.c (gcc_jit_context_new_field): Verify that the type
3032 (gcc_jit_context_new_global): Likewise.
3033 (gcc_jit_function_new_local): Likewise.
3035 2015-07-07 David Malcolm <dmalcolm@redhat.com>
3038 * dummy-frontend.c (jit_langhook_type_for_mode): Ensure that we
3039 handle modes QI, HI, SI, DI, TI.
3041 2015-07-01 David Malcolm <dmalcolm@redhat.com>
3044 * jit-playback.c (jit_mark_addressable): New function.
3045 (gcc::jit::playback::lvalue::get_address): Call
3046 jit_mark_addressable on the underlying tree.
3048 2015-07-01 David Malcolm <dmalcolm@redhat.com>
3050 * docs/topics/types.rst (gcc_jit_context_new_union_type): Add
3052 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3054 2015-07-01 David Malcolm <dmalcolm@redhat.com>
3056 * docs/topics/contexts.rst (gcc_jit_context_set_bool_option):
3057 Clarify lack of lifetime requirements on (const char *) parameter.
3058 * docs/topics/expressions.rst
3059 (gcc_jit_context_new_string_literal): Likewise.
3060 (gcc_jit_context_new_global): Likewise.
3061 * docs/topics/functions.rst (gcc_jit_context_new_param): Likewise.
3062 (gcc_jit_context_new_function): Likewise.
3063 (gcc_jit_function_new_block): Likewise.
3064 (gcc_jit_block_add_comment): Likewise.
3065 * docs/topics/locations.rst (gcc_jit_context_new_location):
3067 * docs/topics/types.rst (gcc_jit_context_new_field): Likewise.
3068 (gcc_jit_context_new_struct_type): Likewise.
3069 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3071 2015-06-30 David Malcolm <dmalcolm@redhat.com>
3073 * docs/cp/topics/functions.rst (Blocks): Add switch statements to
3074 list of ways to terminate a block.
3075 (gccjit::block::end_with_switch): Add function description.
3076 (gccjit::case_): Add class.
3077 (gccjit::context::new_case): Add function description.
3078 * docs/cp/topics/objects.rst: Add "case_" to class hierarchy.
3079 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_3): New.
3080 * docs/topics/functions.rst (Blocks): Add switch statements to
3081 list of ways to terminate a block.
3082 (gcc_jit_block_end_with_switch): Add function description.
3083 (gcc_jit_case): Add type.
3084 (gcc_jit_context_new_case): Add function description.
3085 (gcc_jit_case_as_object): Add function description.
3086 * docs/topics/objects.rst: Add gcc_jit_case to class hierarchy.
3087 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3088 * jit-common.h (gcc::jit::recording::case_): Add forward decl.
3089 (gcc::jit::playback::case_): Add forward decl.
3090 * jit-playback.c (add_case): New function.
3091 (gcc::jit::playback::block::add_switch): New function.
3092 * jit-playback.h (gcc::jit::playback::case_): New struct.
3093 (gcc::jit::playback::block::get_function): New method.
3094 (gcc::jit::playback::block::add_switch): New method.
3095 * jit-recording.c: Within namespace gcc::jit...
3096 (recording::context::new_case): New method.
3097 (recording::function::validate): Update for change to
3098 get_successor_blocks.
3099 (recording::block::end_with_switch): New method.
3100 (recording::block::get_successor_blocks): Update to support an
3101 arbitrary number of successor blocks.
3102 (recording::block::dump_edges_to_dot): Likewise.
3103 (memento_of_new_rvalue_from_const <int>::get_wide_int): New.
3104 (memento_of_new_rvalue_from_const <long>::get_wide_int): New.
3105 (memento_of_new_rvalue_from_const <double>::get_wide_int): New.
3106 (memento_of_new_rvalue_from_const <void *>::get_wide_int): New.
3107 (recording::statement::get_successor_blocks): Update to support an
3108 arbitrary number of successor blocks.
3109 (recording::conditional::get_successor_blocks): Likewise.
3110 (recording::jump::get_successor_blocks): Likewise.
3111 (recording::return_::get_successor_blocks): Likewise.
3112 (recording::case_::write_reproducer): New.
3113 (recording::case_::make_debug_string): New.
3114 (recording::switch_::switch_): New.
3115 (recording::switch_::replay_into): New.
3116 (recording::switch_::get_successor_blocks): New.
3117 (recording::switch_::make_debug_string): New.
3118 (recording::switch_::write_reproducer): New.
3119 * jit-recording.h: Within namespace gcc::jit::recording...
3120 (context::new_case): New.
3121 (rvalue::is_constant): New.
3122 (rvalue::get_wide_int): New.
3123 (block::end_with_switch): New.
3124 (block::get_successor_blocks): Update to support an arbitrary
3125 number of successor blocks.
3126 (memento_of_new_rvalue_from_const::is_constant): New.
3127 (memento_of_new_rvalue_from_const::get_wide_int): New.
3128 (statement::get_successor_blocks): Update to support an arbitrary
3129 number of successor blocks.
3130 (conditional::get_successor_blocks): Likewise.
3131 (jump::get_successor_blocks): Likewise.
3132 (return_::get_successor_blocks): Likewise.
3133 (case_): New subclass of memento.
3134 (switch_): New subclass of statement.
3135 * libgccjit++.h (gccjit::case_): New subclass of gccjit::object.
3136 (gccjit::context::new_case): New method.
3137 (gccjit::block::end_with_switch): New method.
3138 (gccjit::case_::case): New ctors.
3139 (gccjit::case_::get_inner_case): New method.
3140 * libgccjit.c: Include "typed-splay-tree.h"
3141 (struct gcc_jit_case): New.
3142 (gcc_jit_context_new_case): New function.
3143 (gcc_jit_case_as_object): New function.
3144 (valid_dest_for_switch): New function.
3145 (valid_case_for_switch): New function.
3146 (class api_call_validator): New class.
3147 (class case_range_validator): New class.
3148 (case_range_validator::case_range_validator): New.
3149 (case_range_validator::validate): New.
3150 (case_range_validator::case_compare): New.
3151 (case_range_validator::get_wide_int): new.
3152 (gcc_jit_block_end_with_switch): New.
3153 * libgccjit.h: Add gcc_jit_case to class hierarchy comment.
3154 (gcc_jit_case): New typedef.
3155 (gcc_jit_context_new_case): New function.
3156 (gcc_jit_case_as_object): New function.
3157 (gcc_jit_block_end_with_switch): New function.
3158 (LIBGCCJIT_HAVE_SWITCH_STATEMENTS): New.
3159 * libgccjit.map: Add gcc_jit_block_end_with_switch,
3160 gcc_jit_case_as_object and gcc_jit_context_new_case.
3162 2015-06-30 David Malcolm <dmalcolm@redhat.com>
3165 * docs/cp/topics/contexts.rst
3166 (gccjit::context::set_bool_allow_unreachable_blocks): New.
3167 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_2): New.
3168 * docs/topics/contexts.rst (Options): Add notes discussing the
3169 transition from enums to entrypoints for new options.
3170 (gcc_jit_context_set_bool_allow_unreachable_blocks): New.
3171 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3172 * jit-common.h (gcc::jit::inner_bool_option): New enum.
3173 * jit-recording.c: Within namespace gcc::jit...
3174 (recording::context::context): Handle m_inner_bool_options.
3175 (recording::context::set_inner_bool_option): New.
3176 (inner_bool_option_reproducer_strings): New.
3177 (recording::context::log_all_options): Log the "inner" bool
3179 (recording::context::log_inner_bool_option): New.
3180 (recording::context::dump_reproducer_to_file): Write initializers
3181 for "inner" bool options.
3182 (recording::function::validate): Don't check for block
3183 reachability if INNER_BOOL_OPTION_ALLOW_UNREACHABLE_BLOCKS is set.
3184 * jit-recording.h: Within namespace gcc::jit...
3185 (recording::context::set_inner_bool_option): New.
3186 (recording::context::get_inner_bool_option): New.
3187 (recording::context::log_inner_bool_option): New.
3188 (recording::context::m_inner_bool_options): New.
3190 (gccjit::context::set_bool_allow_unreachable_blocks): New.
3192 (gcc_jit_context_set_bool_allow_unreachable_blocks): New.
3193 * libgccjit.h: Add note about options present in the
3194 initial release of libgccjit.
3195 (gcc_jit_context_set_bool_allow_unreachable_blocks): New API
3197 (LIBGCCJIT_HAVE_gcc_jit_context_set_bool_allow_unreachable_blocks):
3199 * libgccjit.map (LIBGCCJIT_ABI_2): New, containing...
3200 (gcc_jit_context_set_bool_allow_unreachable_blocks): ...this new
3203 2015-06-30 David Malcolm <dmalcolm@redhat.com>
3206 * docs/cp/topics/contexts.rst (Additional command-line options):
3208 * docs/topics/compatibility.rst: New file.
3209 * docs/topics/contexts.rst (Additional command-line options): New
3211 * docs/topics/index.rst: Add compatibility.rst.
3212 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3213 * jit-playback.c (make_fake_args): Add call to
3214 append_command_line_options.
3215 * jit-recording.c: Within namespace gcc::jit...
3216 (recording::context::~context): Free the optnames within
3217 m_command_line_options.
3218 (recording::context::set_bool_option): Likewise.
3219 (recording::context::add_command_line_option): New method.
3220 (recording::context::append_command_line_options): New method.
3221 (recording::context::dump_reproducer_to_file): Add command-line
3223 * jit-recording.h: Within namespace gcc::jit...
3224 (recording::context::add_command_line_option): New method.
3225 (recording::context::append_command_line_options): New method.
3226 (recording::context::m_command_line_options): New field.
3227 * libgccjit++.h (gccjit::context::add_command_line_option): New
3229 * libgccjit.c (gcc_jit_context_add_command_line_option): New API
3231 * libgccjit.h (gcc_jit_context_add_command_line_option): New API
3233 (LIBGCCJIT_HAVE_gcc_jit_context_add_command_line_option): New
3235 * libgccjit.map: Put existing symbols within LIBGCCJIT_ABI_0; add
3236 LIBGCCJIT_ABI_1 and gcc_jit_context_add_command_line_option.
3238 2015-06-30 David Malcolm <dmalcolm@redhat.com>
3241 (gcc::jit::recording::context::dump_reproducer_to_file):
3242 Add pragma to generated reproducers to disable -Wunused-variable.
3243 Fix handling of NULL string options.
3245 2015-06-30 David Malcolm <dmalcolm@redhat.com>
3247 * docs/cp/topics/expressions.rst: Remove stray semicolon.
3248 * docs/cp/topics/functions.rst: Remove stray backslash.
3249 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3251 2015-06-25 Andrew MacLeod <amacleod@redhat.com>
3253 * dummy-frontend.c: Remove ipa-ref.h and plugin-api.h from include list.
3254 * jit-playback.c: Likewise.
3256 2015-06-25 Andrew Macleod <amacleod@redhat.com>
3258 * jit-common.h: Don't include alias.h.
3260 2015-06-17 David Malcolm <dmalcolm@redhat.com>
3262 * libgccjit.c (gcc_jit_lvalue_access_field): Verify that the field
3263 is for the correct struct.
3264 (gcc_jit_rvalue_access_field): Likewise.
3266 2015-06-17 Andrew MacLeod <amacleod@redhat.com>
3268 * dummy-frontend.c: Do not include input.h, line-map.h or is-a.h.
3269 * jit-common.h: Likewise.
3270 * jit-playback.c: Likewise.
3272 2015-06-16 David Malcolm <dmalcolm@redhat.com>
3275 * jit-recording.c: Within namespace gcc::jit::recording::
3276 (rvalue::get_debug_string_parens): New function.
3277 (binary_op::make_debug_string): Update to mimic C precedence
3279 (binary_op_precedence): New array.
3280 (binary_op::get_precedence): New function.
3281 (comparison::make_debug_string): Update to mimic C precedence
3283 (comparison_precedence): New array.
3284 (comparison::get_precedence): New function.
3285 (cast::make_debug_string): Update to mimic C precedence rules.
3286 (call::make_debug_string): Likewise.
3287 (call_through_ptr::make_debug_string): Likewise.
3288 (array_access::make_debug_string): Likewise.
3289 (access_field_of_lvalue::make_debug_string): Likewise.
3290 (access_field_rvalue::make_debug_string): Likewise.
3291 (dereference_field_rvalue::make_debug_string): Likewise.
3292 (dereference_rvalue::make_debug_string): Likewise.
3293 (get_address_of_lvalue::make_debug_string): Likewise.
3294 * jit-recording.h: Within namespace gcc::jit::recording::
3295 (precedence): New enum.
3296 (rvalue::rvalue): Initialize field "m_parenthesized_string".
3297 (rvalue::get_debug_string_parens): New method.
3298 (rvalue::get_precedence): New pure virtual function.
3299 (rvalue::m_parenthesized_string): New field.
3300 (param::get_precedence): New function.
3301 (global::get_precedence): New function.
3302 (memento_of_new_rvalue_from_const::get_precedence): New function.
3303 (memento_of_new_string_literal::get_precedence): New function.
3304 (unary_op::get_precedence): New function.
3305 (binary_op::get_precedence): New function.
3306 (comparison::get_precedence): New function.
3307 (cast::get_precedence): New function.
3308 (call::get_precedence): New function.
3309 (call_through_ptr::get_precedence): New function.
3310 (array_access::get_precedence): New function.
3311 (access_field_of_lvalue::get_precedence): New function.
3312 (access_field_rvalue::get_precedence): New function.
3313 (dereference_field_rvalue::get_precedence): New function.
3314 (dereference_rvalue::get_precedence): New function.
3315 (get_address_of_lvalue::get_precedence): New function.
3316 (local::get_precedence): New function.
3318 2015-06-09 Matthias Klose <doko@ubuntu.com>
3320 * Make-lang.in (jit.install-common): Install headers using INSTALL_DATA.
3322 2015-06-08 Andrew MacLeod <amacleod@redhat.com>
3324 * dummy-frontend.c : Adjust include files.
3325 * jit-common.h : Likewise.
3326 * jit-playback.c : Likewise.
3328 2015-06-05 David Malcolm <dmalcolm@redhat.com>
3331 (jit_langhook_post_compilation_parsing_cleanups): Remove.
3332 (LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS): Remove
3333 * jit-playback.c (gcc::jit::playback::context::new_global): Add
3334 call to varpool_node::finalize_decl.
3335 (gcc::jit::playback::context::finalize_global_decls): Remove.
3337 (gcc::jit::playback::context::finalize_global_decls): Remove.
3339 2015-06-05 David Malcolm <dmalcolm@redhat.com>
3341 * dummy-frontend.c (jit_langhook_write_globals): Rename to...
3342 (jit_langhook_post_compilation_parsing_cleanups): ...this, and
3343 eliminate calls to finalize_compilation_unit and
3344 write_global_decls_2.
3345 (LANG_HOOKS_WRITE_GLOBALS): Rename to...
3346 (LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS): ...this and
3347 redirect from jit_langhook_write_globals to
3348 jit_langhook_post_compilation_parsing_cleanups.
3350 (gcc::jit::playback::context::write_global_decls_1): Rename to...
3351 (gcc::jit::playback::context::finalize_global_decls): ...this.
3352 (gcc::jit::playback::context::write_global_decls_1): Delete.
3354 (gcc::jit::playback::context::write_global_decls_1): Rename to...
3355 (gcc::jit::playback::context::finalize_global_decls): ...this.
3356 (gcc::jit::playback::context::write_global_decls_1): Delete.
3358 2015-06-04 Andrew MacLeod <amacleod@redhat.com>
3360 * dummy-frontend.c: Adjust includes for restructured coretypes.h.
3361 * jit-common.h: Likewise.
3362 * jit-playback.c: Likewise.
3364 2015-05-12 David Malcolm <dmalcolm@redhat.com>
3366 * jit-builtins.c: Include vec.h before target.h.
3368 2015-04-27 Jim Wilson <jim.wilson@linaro.org>
3370 * Make-lang.in (jit.mostlyclean): Remove shared libraries and object
3373 2015-04-09 David Malcolm <dmalcolm@redhat.com>
3376 * docs/cp/topics/expressions.rst (Simple expressions): Fix copy
3377 and paste error in description of gccjit::context::one.
3378 * docs/topics/expressions.rst (Simple expressions): Likewise in
3379 description of gcc_jit_context_one.
3380 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3382 2015-03-13 Uros Bizjak <ubizjak@gmail.com>
3384 * jit-recording.c (dump::write): Also check vasprintf return value.
3385 (recording::context::add_error_va): Ditto.
3386 (recording::string::from_printf): Ditto.
3388 2015-03-13 David Malcolm <dmalcolm@redhat.com>
3390 * docs/internals/index.rst (Packaging notes): New section.
3391 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3393 2015-03-05 David Malcolm <dmalcolm@redhat.com>
3395 * docs/cp/intro/tutorial03.rst: Add missing arguments to
3396 gccjit::block::end_with_conditional call. Add on_true/on_false
3397 comments. Tweak the wording.
3398 * docs/intro/tutorial03.rst: Add missing arguments to
3399 gcc_jit_block_end_with_conditional call. Add some clarifying
3401 * docs/topics/compilation.rst: Tweak the wording to avoid an
3402 ambiguous use of "this".
3403 * docs/topics/contexts.rst: Fix a typo.
3404 * docs/topics/expressions.rst (GCC_JIT_BINARY_OP_MINUS): Remove
3406 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3408 2015-02-24 Thomas Schwinge <thomas@codesourcery.com>
3411 * jit-builtins.c (DEF_FUNCTION_TYPE_VAR_8)
3412 (DEF_FUNCTION_TYPE_VAR_12): Remove macros.
3413 (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros.
3414 * jit-builtins.h (DEF_FUNCTION_TYPE_VAR_8)
3415 (DEF_FUNCTION_TYPE_VAR_12): Remove macros.
3416 (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros.
3418 2015-02-04 David Malcolm <dmalcolm@redhat.com>
3421 * docs/conf.py (html_theme): Change from 'pyramid'
3424 2015-02-04 David Malcolm <dmalcolm@redhat.com>
3426 * docs/topics/contexts.rst (gcc_jit_context_acquire): Fix
3428 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3430 2015-02-03 David Malcolm <dmalcolm@redhat.com>
3432 * jit-logging.h (gcc::jit::log_user::log): Make const.
3433 * jit-recording.c (gcc::jit::recording::context::set_str_option):
3434 Log the new value of the option.
3435 (gcc::jit::recording::context::set_int_option): Likewise.
3436 (gcc::jit::recording::context::set_bool_option): Likewise.
3437 (gcc::jit::recording::context::compile): Log the value of all
3439 (gcc::jit::recording::context::compile_to_file): Likewise.
3440 (gcc::jit::recording::context::log_all_options): New function.
3441 (gcc::jit::recording::context::log_str_option): New function.
3442 (gcc::jit::recording::context::log_int_option): New function.
3443 (gcc::jit::recording::context::log_bool_option): New function.
3444 * jit-recording.h (gcc::jit::recording::context::log_all_options):
3446 (gcc::jit::recording::context::log_str_option): New function.
3447 (gcc::jit::recording::context::log_int_option): New function.
3448 (gcc::jit::recording::context::log_bool_option): New function.
3449 * docs/internals/test-hello-world.exe.log.txt: Update for above
3451 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3453 2015-02-03 David Malcolm <dmalcolm@redhat.com>
3456 * Make-lang.in (jit_OBJS): Add jit/jit-spec.o and gcc.o.
3457 (LIBGCCJIT_FILENAME): Add EXTRA_GCC_OBJS.
3458 * jit-playback.c: Include gcc.h.
3459 (gcc::jit::playback::context::compile): Move mutex acquisition
3460 to before the call to make_fake_args.
3461 (append_arg_from_driver): New function.
3462 (gcc::jit::playback::context::make_fake_args): On the first call,
3463 call into driver_get_configure_time_options to get configure-time
3464 default options and cache them. Add them to the args for
3466 * jit-spec.c: New source file.
3467 * docs/internals/test-hello-world.exe.log.txt: Update to reflect
3469 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3471 2015-02-02 David Malcolm <dmalcolm@redhat.com>
3474 * dummy-frontend.c (jit_langhook_type_for_mode): Support
3475 TYPE_MODE (long_long_integer_type_node).
3477 2015-01-27 David Malcolm <dmalcolm@redhat.com>
3479 * docs/internals/test-hello-world.exe.log.txt: Add example version
3481 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3482 * jit-common.h (gcc::jit::dump::get_file): New accessor.
3483 * jit-logging.c: Include toplev.h.
3484 (gcc::jit::logger::logger): Log the GCC version.
3485 * jit-recording.c: Include toplev.h.
3486 (gcc:jit::recording::context::dump_reproducer_to_file): Log the
3489 2015-01-26 David Malcolm <dmalcolm@redhat.com>
3491 * docs/topics/compilation.rst (gcc_jit_result_get_code): Fix typo.
3492 * docs/topics/contexts.rst (gcc_jit_context_get_last_error): The
3493 error buffer is only valid until the next call to the context.
3494 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3495 * libgccjit.h (gcc_jit_context_get_first_error): Reword the
3496 comment to omit mention of compiling.
3497 (gcc_jit_context_get_last_error): The error buffer is only valid
3498 until the next call to the context.
3500 2015-01-26 David Malcolm <dmalcolm@redhat.com>
3503 * config-lang.in (compilers): Drop "libgccjit.so".
3505 2015-01-23 David Malcolm <dmalcolm@redhat.com>
3508 * jit-playback.c (gcc::jit::playback::context::compile): Construct
3509 toplev instances with init_signals=false.
3511 2015-01-19 David Malcolm <dmalcolm@redhat.com>
3513 * docs/cp/topics/results.rst: Rename to...
3514 * docs/cp/topics/compilation.rst: ...this, and add section on
3515 ahead-of-time compilation.
3516 * docs/cp/topics/index.rst: Update for renaming of results.rst
3518 * docs/examples/emit-alphabet.bf: New file, a sample "brainf"
3520 * docs/examples/tut05-bf.c: New file, implementing a compiler
3522 * docs/internals/test-hello-world.exe.log.txt: Update to reflect
3523 changes to logger output.
3524 * docs/intro/index.rst: Add tutorial05.rst
3525 * docs/intro/tutorial05.rst: New file.
3526 * docs/topics/results.rst: Rename to...
3527 * docs/topics/compilation.rst: ...this, and add section on
3528 ahead-of-time compilation.
3529 * docs/topics/index.rst: Update for renaming of results.rst to
3531 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3532 * jit-playback.c (gcc::jit::playback::context::compile): Convert
3533 return type from result * to void. Move the code to convert to
3534 dso and dlopen the result to a new pure virtual "postprocess"
3536 (gcc::jit::playback::compile_to_memory::compile_to_memory): New
3538 (gcc::jit::playback::compile_to_memory::postprocess): New
3539 function, based on playback::context::compile.
3540 (gcc::jit::playback::compile_to_file::compile_to_file): New
3542 (gcc::jit::playback::compile_to_file::postprocess): New function.
3543 (gcc::jit::playback::compile_to_file::copy_file): New function.
3544 (gcc::jit::playback::context::convert_to_dso): Move internals
3546 (gcc::jit::playback::context::invoke_driver): New method. Add
3547 "-shared" and "-c" options to driver's argv as needed.
3548 * jit-playback.h: Include "timevar.h".
3549 (gcc::jit::playback::context::compile): Convert return type from
3551 (gcc::jit::playback::context::postprocess): New pure virtual
3552 function, making this an abstract base class.
3553 (gcc::jit::playback::context::get_tempdir): New accessor.
3554 (gcc::jit::playback::context::invoke_driver): New function.
3555 (class gcc::jit::playback::compile_to_memory): New subclass of
3557 (class gcc::jit::playback::compile_to_file): Likewise.
3558 * jit-recording.c (gcc::jit::recording::context::compile): Use a
3559 playback::compile_to_memory, and extract its result.
3560 (gcc::jit::recording::context::compile_to_file): New function.
3561 * jit-recording.h (gcc::jit::recording::context::compile_to_file):
3563 * libgccjit++.h (gccjit::context::compile_to_file): New method.
3564 * libgccjit.c (gcc_jit_context_compile): Update log message to
3565 clarify that this is an in-memory compile.
3566 (gcc_jit_context_compile_to_file): New function.
3567 * libgccjit.h (gcc_jit_context): Clarify that you can compile
3568 a context more than once, and that you can compile to a file
3569 as well as to memory.
3570 (gcc_jit_result): Clarify that this is the result of an
3571 in-memory compilation.
3572 (gcc_jit_context_compile): Clarify that you can compile, and that
3573 this is an in-memory compilation.
3574 (enum gcc_jit_output_kind): New enum.
3575 (gcc_jit_context_compile_to_file): New function.
3576 (gcc_jit_context_enable_dump): Clarify comment to cover both forms
3578 * libgccjit.map (gcc_jit_context_compile_to_file): New API
3580 * notes.txt: Update to show the playback::context::postprocess
3583 2015-01-19 David Malcolm <dmalcolm@redhat.com>
3586 (gcc::jit::recording::memento_of_new_string_literal::make_debug_string):
3587 Add missing format string.
3589 2015-01-16 David Malcolm <dmalcolm@redhat.com>
3591 * Make-lang.in (lang_checks_parallelized): Add "check-jit".
3592 (check_jit_parallelize): Set this to an arbitrary value (10).
3594 2015-01-16 Jakub Jelinek <jakub@redhat.com>
3596 * jit-builtins.h (DEF_FUNCTION_TYPE_VAR_5): Fix spelling of
3598 (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12): Define and
3600 * jit-builtins.c (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12):
3603 2015-01-15 Richard Sandiford <richard.sandiford@arm.com>
3605 Update copyright years in docs/.
3607 2015-01-15 David Malcolm <dmalcolm@redhat.com>
3609 * libgccjit.c (gcc_jit_block_add_assignment_op): Check that the
3610 lvalue and the rvalue are of compatible type.
3612 2015-01-13 David Malcolm <dmalcolm@redhat.com>
3614 * docs/cp/topics/contexts.rst (Debugging): Add
3615 gccjit::context::dump_reproducer_to_file.
3616 * docs/internals/index.rst (Design notes): New section,
3617 discussing input validation and
3618 gcc_jit_context_dump_reproducer_to_file.
3619 * docs/topics/contexts.rst (Debugging): Add
3620 gcc_jit_context_dump_reproducer_to_file.
3621 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3622 * jit-common.h (gcc::jit::dump::get_context): New accessor.
3623 * jit-recording.c: Include "hash-map.h".
3624 Within namespace ::gcc::jit...
3625 (dump::write): Flush each line.
3626 (dump::make_location): Pass false for new param "created_by_user".
3627 (class allocator): New class.
3628 (allocator::~allocator): New function.
3629 (allocator::xstrdup_printf): New function.
3630 (allocator::xstrdup_printf_va): New function.
3631 (class reproducer): New subclass of dump.
3632 (reproducer::reproducer): New function.
3633 (reproducer::write_params): New function.
3634 (reproducer::write_args): New function.
3635 (reproducer::make_identifier): New function.
3636 (reproducer::make_tmp_identifier): New function.
3637 (reproducer::get_identifier): New pair of functions.
3638 (reproducer::get_identifier_as_rvalue): New function.
3639 (reproducer::get_identifier_as_lvalue): New function.
3640 (reproducer::get_identifier_as_type): New function.
3641 (reproducer::xstrdup_printf): New function.
3642 (recording::context::context): Initialize m_toplevel_ctxt.
3643 (recording::context::new_location): Add param created_by_user.
3644 (str_option_reproducer_strings): New table of strings.
3645 (int_option_reproducer_strings): Likewise.
3646 (bool_option_reproducer_strings): Likewise.
3647 (get_type_enum_strings): Likewise.
3648 (names_of_function_kinds): Likewise.
3649 (global_kind_reproducer_strings): Likewise.
3650 (unary_op_reproducer_strings): Likewise.
3651 (binary_op_reproducer_strings): Likewise.
3652 (comparison_reproducer_strings): Likewise.
3653 Within namespace ::gcc::jit::recording::...
3654 (context::dump_reproducer_to_file): New function.
3655 (string::write_reproducer): Likewise.
3656 (location::write_reproducer): Likewise.
3657 (type::access_as_type): Likewise.
3658 (memento_of_get_type::write_reproducer): Likewise.
3659 (memento_of_get_pointer::write_reproducer): Likewise.
3660 (memento_of_get_const::write_reproducer): Likewise.
3661 (memento_of_get_volatile::write_reproducer): Likewise.
3662 (array_type::write_reproducer): Likewise.
3663 (function_type::write_reproducer): Likewise.
3664 (function_type::write_deferred_reproducer): Likewise.
3665 (field::write_reproducer): Likewise.
3666 (struct_::access_as_type): Likewise.
3667 (struct_::write_reproducer): Likewise.
3668 (union_::write_reproducer): Likewise.
3669 (fields::write_reproducer): Likewise.
3670 (rvalue::access_as_rvalue): Likewise.
3671 (lvalue::access_as_rvalue): Likewise.
3672 (lvalue::access_as_lvalue): Likewise.
3673 (param::access_as_rvalue): Likewise.
3674 (param::access_as_lvalue): Likewise.
3675 (param::write_reproducer): Likewise.
3676 (function::write_reproducer): Likewise.
3677 (block::write_reproducer): Likewise.
3678 (global::write_reproducer): Likewise.
3679 (memento_of_new_rvalue_from_const <int>::write_reproducer):
3681 (memento_of_new_rvalue_from_const <long>::write_reproducer):
3683 (memento_of_new_rvalue_from_const <double>::write_reproducer):
3685 (memento_of_new_rvalue_from_const <void *>::write_reproducer):
3687 (memento_of_new_string_literal::write_reproducer): Likewise.
3688 (unary_op::write_reproducer): Likewise.
3689 (binary_op::write_reproducer): Likewise.
3690 (comparison::write_reproducer): Likewise.
3691 (cast::write_reproducer): Likewise.
3692 (call::write_reproducer): Likewise.
3693 (call_through_ptr::write_reproducer): Likewise.
3694 (array_access::write_reproducer): Likewise.
3695 (access_field_of_lvalue::write_reproducer): Likewise.
3696 (access_field_rvalue::write_reproducer): Likewise.
3697 (dereference_field_rvalue::write_reproducer): Likewise.
3698 (dereference_rvalue::write_reproducer): Likewise.
3699 (get_address_of_lvalue::write_reproducer): Likewise.
3700 (local::write_reproducer): Likewise.
3701 (eval::write_reproducer): Likewise.
3702 (assignment::write_reproducer): Likewise.
3703 (assignment_op::write_reproducer): Likewise.
3704 (comment::write_reproducer): Likewise.
3705 (conditional::write_reproducer): Likewise.
3706 (jump::write_reproducer): Likewise.
3707 (return_::write_reproducer): Likewise.
3708 * jit-recording.h (gcc::jit::reproducer): New forward declararion.
3709 Within namespace ::gcc::jit::recording::...
3710 (context::new_location): Add "created_by_user" param.
3711 (context::dump_reproducer_to_file): New method.
3712 (context::m_toplevel_ctxt): New field.
3713 (memento::write_reproducer): New pure virtual function.
3714 (memento::dyn_cast_location): New virtual function.
3715 (string::write_reproducer):
3716 (location::location): Add "created_by_user" param.
3717 (location::dyn_cast_location): New function.
3718 (location::created_by_user): New accessor.
3719 (location::write_reproducer): New function.
3720 (location::m_created_by_user): New field.
3721 (type::access_as_type): New virtual function.
3722 (location::write_reproducer): Likewise.
3723 (type::access_as_type): Likewise.
3724 (memento_of_get_type::write_reproducer): Likewise.
3725 (memento_of_get_pointer::write_reproducer): Likewise.
3726 (memento_of_get_const::write_reproducer): Likewise.
3727 (memento_of_get_volatile::write_reproducer): Likewise.
3728 (array_type::write_reproducer): Likewise.
3729 (function_type::write_reproducer): Likewise.
3730 (function_type::write_deferred_reproducer): Likewise.
3731 (field::write_reproducer): Likewise.
3732 (struct_::access_as_type): Likewise.
3733 (struct_::write_reproducer): Likewise.
3734 (union_::write_reproducer): Likewise.
3735 (union_::m_fields): Remove stray unused field.
3736 (fields::length): New accessor.
3737 (fields::get_field): New accessor.
3738 (fields::write_reproducer): New function.
3739 (rvalue::access_as_rvalue): Likewise.
3740 (lvalue::access_as_rvalue): Likewise.
3741 (lvalue::access_as_lvalue): Likewise.
3742 (param::access_as_rvalue): Likewise.
3743 (param::access_as_lvalue): Likewise.
3744 (param::write_reproducer): Likewise.
3745 (function::write_reproducer): Likewise.
3746 (block::write_reproducer): Likewise.
3747 (global::write_reproducer): Likewise.
3748 (memento_of_new_rvalue_from_const <HOST_TYPE>::write_reproducer):
3750 (memento_of_new_string_literal::write_reproducer): Likewise.
3751 (unary_op::write_reproducer): Likewise.
3752 (binary_op::write_reproducer): Likewise.
3753 (comparison::write_reproducer): Likewise.
3754 (cast::write_reproducer): Likewise.
3755 (call::write_reproducer): Likewise.
3756 (call_through_ptr::write_reproducer): Likewise.
3757 (array_access::write_reproducer): Likewise.
3758 (access_field_of_lvalue::write_reproducer): Likewise.
3759 (access_field_rvalue::write_reproducer): Likewise.
3760 (dereference_field_rvalue::write_reproducer): Likewise.
3761 (dereference_rvalue::write_reproducer): Likewise.
3762 (get_address_of_lvalue::write_reproducer): Likewise.
3763 (local::write_reproducer): Likewise.
3764 (eval::write_reproducer): Likewise.
3765 (assignment::write_reproducer): Likewise.
3766 (assignment_op::write_reproducer): Likewise.
3767 (comment::write_reproducer): Likewise.
3768 (conditional::write_reproducer): Likewise.
3769 (jump::write_reproducer): Likewise.
3770 (return_::write_reproducer): Likewise.
3771 * libgccjit++.h (gccjit::context::dump_reproducer_to_file): New.
3772 * libgccjit.c (gcc_jit_context_new_location): Pass "true" as
3773 param "created_by_user".
3774 (gcc_jit_context_dump_reproducer_to_file): New API entrypoint.
3775 * libgccjit.h (gcc_jit_context_dump_reproducer_to_file): New API
3777 * libgccjit.map (gcc_jit_context_dump_reproducer_to_file): New API
3780 2015-01-12 David Malcolm <dmalcolm@redhat.com>
3782 * jit-recording.c (class gcc::jit::rvalue_usage_validator): New.
3783 (gcc::jit::rvalue_usage_validator::rvalue_usage_validator): New
3785 (gcc::jit::rvalue_usage_validator::visit): New function.
3786 (gcc::jit::recording::rvalue::verify_valid_within_stmt): New
3788 (gcc::jit::recording::rvalue::set_scope): New function.
3789 (gcc::jit::recording::function::function): Call set_scope on each
3790 param, issuing errors for any params that already have a function.
3791 (gcc::jit::recording::block::add_eval): Return the new statement;
3792 update the comment given that some error-checking now happens after
3794 (gcc::jit::recording::block::add_assignment): Likewise.
3795 (gcc::jit::recording::block::add_assignment_op): Likewise.
3796 (gcc::jit::recording::block::add_comment): Likewise.
3797 (gcc::jit::recording::block::end_with_conditional): Likewise.
3798 (gcc::jit::recording::block::end_with_jump): Likewise.
3799 (gcc::jit::recording::block::end_with_return): Likewise.
3800 (gcc::jit::recording::block::validate): Add a comment.
3801 (gcc::jit::recording::unary_op::visit_children): New function.
3802 (gcc::jit::recording::binary_op::visit_children): New function.
3803 (gcc::jit::recording::comparison::visit_children): New function.
3804 (gcc::jit::recording::cast::visit_children): New function.
3805 (gcc::jit::recording::call::visit_children): New function.
3806 (gcc::jit::recording::call_through_ptr::visit_children): New function.
3807 (gcc::jit::recording::array_access::visit_children): New function.
3808 (gcc::jit::recording::access_field_of_lvalue::visit_children): New
3810 (gcc::jit::recording::access_field_rvalue::visit_children): New
3812 (gcc::jit::recording::dereference_field_rvalue::visit_children):
3814 (gcc::jit::recording::dereference_rvalue::visit_children): New
3816 (gcc::jit::recording::get_address_of_lvalue::visit_children): New
3818 * jit-recording.h: Within namespace gcc::jit::recording...
3819 (class rvalue_visitor): New.
3820 (rvalue::rvalue): Initialize m_scope.
3821 (rvalue::get_loc): New accessor.
3822 (rvalue::verify_valid_within_stmt): New function.
3823 (rvalue::visit_children): New pure virtual function.
3824 (rvalue::set_scope): New function.
3825 (rvalue::get_scope): New function.
3826 (rvalue::dyn_cast_param): New function.
3827 (rvalue::m_scope): New field.
3828 (param::visit_children): New empty function.
3829 (param::dyn_cast_param): New function.
3830 (function::get_loc): New function.
3831 (block::add_eval): Return the new statement.
3832 (block::add_assignment): Likewise.
3833 (block::add_assignment_op): Likewise.
3834 (block::add_comment): Likewise.
3835 (block::end_with_conditional): Likewise.
3836 (block::end_with_jump): Likewise.
3837 (block::end_with_return): Likewise.
3838 (global::visit_children): New function.
3839 (memento_of_new_rvalue_from_const<HOST_TYPE>::visit_children):
3841 (memento_of_new_string_literal::visit_children): New function.
3842 (unary_op::visit_children): New function.
3843 (binary_op::visit_children): New function.
3844 (comparison::visit_children): New function.
3845 (cast::visit_children): New function.
3846 (call::visit_children): New function.
3847 (call_through_ptr::visit_children): New function.
3848 (array_access::visit_children): New function.
3849 (access_field_of_lvalue::visit_children): New function.
3850 (access_field_rvalue::visit_children): New function.
3851 (dereference_field_rvalue::visit_children): New function.
3852 (dereference_rvalue::visit_children): New function.
3853 (get_address_of_lvalue::visit_children): New function.
3854 (local::local): Call set_scope.
3855 (local::visit_children): New function.
3856 (statement::get_block): Make public.
3857 * libgccjit.c (RETURN_VAL_IF_FAIL_PRINTF5): New macro.
3858 (RETURN_NULL_IF_FAIL_PRINTF5): New macro.
3859 (gcc_jit_context_new_function): Verify that each param has
3860 not yet been used for creating another function.
3861 (gcc_jit_block_add_eval): After creating the stmt, verify
3862 that the rvalue expression tree is valid to use within it.
3863 (gcc_jit_block_add_assignment): Likewise for the lvalue and
3864 rvalue expression trees.
3865 (gcc_jit_block_add_assignment_op): Likewise.
3866 (gcc_jit_block_end_with_conditional): Likewise for the boolval
3868 (gcc_jit_block_end_with_return): Likewise for the rvalue
3870 (gcc_jit_block_end_with_void_return): Remove return of "void",
3871 now that block::end_with_return is now non-void.
3873 2015-01-12 David Malcolm <dmalcolm@redhat.com>
3875 * jit-playback.c (gcc::jit::playback::context::read_dump_file):
3876 Add missing fclose on error-handling path.
3878 2015-01-12 David Malcolm <dmalcolm@redhat.com>
3880 * docs/cp/topics/expressions.rst (Global variables): Add
3881 enum gcc_jit_global_kind param to gccjit::context::new_global.
3882 * docs/topics/expressions.rst (Global variables): Likewise.
3883 Document the new enum.
3884 * docs/topics/results.rst (Compilation results): Document
3886 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3887 * dummy-frontend.c (jit_langhook_write_globals): Call into the
3888 playback context's write_global_decls_1 and write_global_decls_2
3889 before and after calling symtab->finalize_compilation_unit ().
3890 * jit-playback.c: Include "debug.h".
3891 (gcc::jit::playback::context::new_global): Add "kind" param and
3892 use it to set TREE_PUBLIC, TREE_STATIC and DECL_EXTERNAL on the
3893 underlying VAR_DECL. Call varpool_node::get_create on the
3894 VAR_DECL, and add it to m_globals.
3895 (gcc::jit::playback::context::write_global_decls_1): New function.
3896 (gcc::jit::playback::context::write_global_decls_2): New function.
3897 * jit-playback.h (gcc::jit::playback::context::context): Call
3898 create on m_globals.
3899 (gcc::jit::playback::context::new_global): Add "kind" param.
3900 (gcc::jit::playback::context::write_global_decls_1): New function.
3901 (gcc::jit::playback::context::write_global_decls_2): New function.
3902 (gcc::jit::playback::context::m_globals): New field.
3903 * jit-recording.c (gcc::jit::recording::context::context):
3904 Initialize m_globals.
3905 (gcc::jit::recording::context::new_global): Add param "kind".
3906 Add the new global to m_globals.
3907 (gcc::jit::recording::context::dump_to_file): Dump the globals.
3908 (gcc::jit::recording::global::replay_into): Add field m_kind.
3909 (gcc::jit::recording::global::write_to_dump): New override.
3910 * jit-recording.h (gcc::jit::recording::context::new_global): Add
3912 (gcc::jit::recording::context::m_globals): New field.
3913 (gcc::jit::recording::global::global): Add param kind.
3914 (gcc::jit::recording::global::write_to_dump): New override.
3915 (gcc::jit::recording::global::m_kind): New field.
3916 * jit-result.c (gcc::jit::result::get_global): New function.
3917 * jit-result.h (gcc::jit::result::get_global): New function.
3918 * libgccjit++.h (gccjit::context::new_global): Add "kind" param.
3919 * libgccjit.c (gcc_jit_context_new_global): Likewise.
3920 (gcc_jit_result_get_global): New API entrypoint.
3921 * libgccjit.h (gcc_jit_result_get_global): New API entrypoint.
3922 (enum gcc_jit_global_kind): New enum.
3923 (gcc_jit_context_new_global): API change: add "kind" param.
3924 * libgccjit.map (gcc_jit_result_get_global): New symbol.
3926 2015-01-09 David Malcolm <dmalcolm@redhat.com>
3928 * dummy-frontend.c: Include "fixed-value.h", "alias.h", "flags.h",
3929 "symtab.h", "inchash.h". Move include of "hash-set.h" much
3931 * jit-builtins.c: Remove redundant includes of "opts.h" and
3933 * jit-common.h: Include "hash-set.h", "input.h", "vec.h",
3934 "double-int.h", "alias.h", "flags.h", "symtab.h", "inchash.h".
3935 * jit-playback.c: Include "hashtab.h", "machmode.h", "input.h",
3936 "statistics.h", "vec.h", "double-int.h", "real.h",
3937 "fixed-value.h", "alias.h", "flags.h", "symtab.h", "tree-core.h",
3938 "inchash.h", "fold-const.h". Move include of "hash-set.h" to
3940 * jit-recording.c: Remove redundant includes of "opts.h" and
3943 2015-01-09 David Malcolm <dmalcolm@redhat.com>
3945 * docs/cp/topics/expressions.rst (Simple expressions): Use
3946 ":c:type:" for C types. Document new overload of
3947 gcc::jit::context::new_rvalue.
3948 * docs/topics/expressions.rst (Simple expressions): Use
3949 ":c:type:" for C types. Document new entrypoint
3950 gcc_jit_context_new_rvalue_from_long.
3951 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3952 * jit-playback.c: Within namespace gcc::jit::playback...
3953 (context::new_rvalue_from_int): Eliminate in favor of...
3954 (context::new_rvalue_from_const <int>): ...this.
3955 (context::new_rvalue_from_double): Eliminate in favor of...
3956 (context::new_rvalue_from_const <double>): ...this.
3957 (context::new_rvalue_from_const <long>): New.
3958 (context::new_rvalue_from_ptr): Eliminate in favor of...
3959 (context::new_rvalue_from_const <void *>): ...this.
3960 * jit-playback.h: Within namespace gcc::jit::playback...
3961 (context::new_rvalue_from_int): Eliminate in favor of...
3962 (context::new_rvalue_from_const <HOST_TYPE>): ...this.
3963 (context::new_rvalue_from_double): Likewise.
3964 (context::new_rvalue_from_ptr): Likewise.
3965 * jit-recording.c: Within namespace gcc::jit::recording...
3966 (context::new_rvalue_from_int): Eliminate.
3967 (context::new_rvalue_from_double): Likewise.
3968 (context::new_rvalue_from_ptr): Likewise.
3969 (class memento_of_new_rvalue_from_const <int>):
3970 Add explicit specialization.
3971 (class memento_of_new_rvalue_from_const <long>):
3973 (class memento_of_new_rvalue_from_const <double>):
3975 (class memento_of_new_rvalue_from_const <void *>):
3977 (memento_of_new_rvalue_from_int::replay_into):
3979 (memento_of_new_rvalue_from_const <HOST_TYPE>::replay_into):
3981 (memento_of_new_rvalue_from_double::replay_into):
3983 (memento_of_new_rvalue_from_ptr::replay_into):
3984 ...and this to be deleted.
3985 (memento_of_new_rvalue_from_int::make_debug_string):
3987 (memento_of_new_rvalue_from_const <int>::make_debug_string):
3989 (memento_of_new_rvalue_from_double::make_debug_string):
3991 (memento_of_new_rvalue_from_const <double>::make_debug_string):
3993 (memento_of_new_rvalue_from_ptr::make_debug_string)
3995 (memento_of_new_rvalue_from_const <void *>::make_debug_string):
3997 (memento_of_new_rvalue_from_const <long>::make_debug_string):
3999 * jit-recording.h: Within namespace gcc::jit::recording...
4000 (context::new_rvalue_from_int): Eliminate.
4001 (context::new_rvalue_from_double): Likewise.
4002 (context::new_rvalue_from_ptr): Likewise, all in favor of...
4003 (context::new_rvalue_from_const <HOST_TYPE>): New family of
4005 (class memento_of_new_rvalue_from_int): Eliminate.
4006 (class memento_of_new_rvalue_from_double): Likewise.
4007 (class memento_of_new_rvalue_from_ptr): Likewise.
4008 (class memento_of_new_rvalue_from_const <HOST_TYPE>): New family
4009 of rvalue subclasses.
4010 * libgccjit++.h (gccjit::context::new_rvalue): New overload, for
4012 * libgccjit.c (gcc_jit_context_new_rvalue_from_int): Update for
4013 rewriting of recording::context::new_rvalue_from_int to
4014 recording::context::new_rvalue_from_const <int>.
4015 (gcc_jit_context_new_rvalue_from_long): New API entrypoint.
4016 (gcc_jit_context_new_rvalue_from_double): Update for
4017 rewriting of recording::context::new_rvalue_from_double to
4018 recording::context::new_rvalue_from_const <double>.
4019 (gcc_jit_context_new_rvalue_from_ptr): Update for
4020 rewriting of recording::context::new_rvalue_from_ptr to
4021 recording::context::new_rvalue_from_const <void *>.
4022 * libgccjit.h (gcc_jit_context_new_rvalue_from_long): New API
4024 * libgccjit.map (gcc_jit_context_new_rvalue_from_long): Likewise.
4026 2015-01-09 David Malcolm <dmalcolm@redhat.com>
4029 * docs/internals/test-hello-world.exe.log.txt: Update, the log now
4030 shows tempdir creation/cleanup.
4031 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4032 * jit-logging.h (class gcc::jit::log_user): Add gcc::jit::tempdir
4033 to the list of subclasses in the comment.
4034 * jit-playback.c (gcc::jit::playback::context::context): Add a
4035 comment clarifying when the tempdir gets cleaned up.
4036 (gcc::jit::playback::context::compile): Pass the context's logger,
4037 if any, to the tempdir.
4038 (gcc::jit::playback::context::dlopen_built_dso): When creating the
4039 gcc::jit::result, if GCC_JIT_BOOL_OPTION_DEBUGINFO is set, hand
4040 over ownership of the tempdir to it.
4041 * jit-result.c: Include "jit-tempdir.h".
4042 (gcc::jit::result::result): Add tempdir param, saving it as
4044 (gcc::jit::result::~result): Delete m_tempdir.
4045 * jit-result.h (gcc::jit::result::result): Add tempdir param.
4046 (gcc::jit::result::m_tempdir): New field.
4047 * jit-tempdir.c (gcc::jit::tempdir::tempdir): Add logger param;
4049 (gcc::jit::tempdir::create): Add JIT_LOG_SCOPE to log entry/exit,
4050 and log m_path_template and m_path_tempdir.
4051 (gcc::jit::tempdir::~tempdir): Add JIT_LOG_SCOPE to log
4052 entry/exit, and log the unlink and rmdir calls.
4053 * jit-tempdir.h: Include "jit-logging.h".
4054 (class gcc::jit::tempdir): Make this be a subclass of log_user.
4055 (gcc::jit::tempdir::tempdir): Add logger param.
4056 * notes.txt: Update to show the two possible places where the
4057 tempdir can be cleaned up.
4059 2015-01-08 David Malcolm <dmalcolm@redhat.com>
4061 * libgccjit.h (struct gcc_jit_context): Rewrite the descriptive
4064 2015-01-08 David Malcolm <dmalcolm@redhat.com>
4066 * docs/topics/contexts.rst (Error-handling): Document new
4067 entrypoint gcc_jit_context_get_last_error.
4068 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4069 * jit-recording.c (gcc::jit::recording::context::context):
4070 Initialize new fields "m_last_error_str" and
4071 "m_owns_last_error_str".
4072 (gcc::jit::recording::context::~context): Clean up
4073 m_last_error_str, if needed.
4074 (gcc::jit::recording::context::add_error_va): Update
4075 m_last_error_str and m_owns_last_error_str, freeing the old
4076 value if appropriate.
4077 (gcc::jit::recording::context::get_last_error): New function.
4078 * jit-recording.h (gcc::jit::recording::context::get_last_error):
4080 (gcc::jit::recording::context): New fields m_last_error_str and
4081 m_owns_last_error_str.
4082 * libgccjit.c (gcc_jit_context_get_last_error): New function.
4083 * libgccjit.h (gcc_jit_context_get_last_error): New declaration.
4084 * libgccjit.map (gcc_jit_context_get_last_error): New function.
4086 2015-01-08 David Malcolm <dmalcolm@redhat.com>
4088 * Make-lang.in (jit_OBJS): Add jit/jit-logging.o.
4089 * docs/internals/index.rst (Overview of code structure): Mention
4090 gcc_jit_context_set_logfile, and embed the example logfile.
4091 * docs/internals/test-hello-world.exe.log.txt: New file: example
4093 * docs/topics/contexts.rst (Debugging): Add documentation
4094 for gcc_jit_context_set_logfile.
4095 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4096 * dummy-frontend.c: Include "jit-logging.h".
4097 (jit_langhook_init): Assert that there is an active playback
4098 context. If it has a logger, log entry/exit to this function.
4099 (jit_langhook_write_globals): Likewise.
4100 * jit-common.h (gcc::jit::logger): New forward declaration.
4101 * jit-logging.c: New file.
4102 * jit-logging.h: New file.
4103 * jit-playback.c: Include "jit-logging.h".
4104 (gcc::jit::playback::context::context): Initialize the log_user
4105 base class from the recording context's logger (if any). Use
4106 JIT_LOG_SCOPE to log entry/exit from the function body.
4107 (gcc::jit::playback::context::~context): Use JIT_LOG_SCOPE to
4108 log entry/exit from the function body.
4109 (gcc::jit::playback::build_stmt_list): Likewise.
4110 (gcc::jit::playback::function::postprocess): Likewise.
4111 (gcc::jit::playback::context::compile): Likewise. Log the
4112 entry/exit to toplev::main and toplev::finalize. Log the
4113 fake argv passed to toplev::main.
4114 (gcc::jit::playback::context::acquire_mutex): Use JIT_LOG_SCOPE to
4115 log entry/exit from the function body.
4116 (gcc::jit::playback::context::release_mutex): Likewise.
4117 (gcc::jit::playback::context::make_fake_args): Likewise.
4118 (gcc::jit::playback::context::extract_any_requested_dumps):
4120 (gcc::jit::playback::context::convert_to_dso): Likewise. Also,
4121 log the arguments that the driver is invoked with.
4122 (gcc::jit::playback::context::dlopen_built_dso): Likewise. Pass
4123 the logger to the result object.
4124 (gcc::jit::playback::context::replay): Use JIT_LOG_SCOPE to
4125 log entry/exit from the function body.
4126 (gcc::jit::playback::context::dump_generated_code): Likewise.
4127 (gcc::jit::playback::context::handle_locations): Likewise.
4128 * jit-playback.h (gcc::jit::playback::context): Make this be
4129 a subclass of gcc::jit::log_user.
4130 * jit-recording.c: Include "jit-logging.h".
4131 (gcc::jit::recording::context::context: Initialize the logger to
4132 NULL for root contexts, or to the parent's logger for child
4134 (gcc::jit::recording::context::~context): Use JIT_LOG_SCOPE to
4135 log entry/exit from the function body.
4136 (gcc::jit::recording::context::replay_into): Likewise.
4137 (gcc::jit::recording::context::disassociate_from_playback):
4139 (gcc::jit::recording::context::compile): Likewise.
4140 (recording::context::add_error_va): Likewise. Also, log the
4142 (gcc::jit::recording::context::validate): Use JIT_LOG_SCOPE to
4143 log entry/exit from the function body.
4144 * jit-recording.h: Include "jit-logging.h".
4145 (gcc::jit::recording::context): Make this be a subclass of
4147 * jit-result.c: Include "jit-common.h" and "jit-logging.h".
4148 (gcc::jit::result::result): Add logger param, recording it.
4149 Use JIT_LOG_SCOPE to log entry/exit from the function body.
4150 (gcc::jit::result::~result(): Use JIT_LOG_SCOPE to
4151 log entry/exit from the function body.
4152 (gcc::jit::result::get_code): Likewise.
4153 * jit-result.h (gcc::jit::result): Make this be a subclass of
4155 (gcc::jit::result::result): Add logger parameter.
4156 * libgccjit++.h (gccjit::context::set_logfile): New function.
4157 * libgccjit.c: Include "jit-logging.h".
4158 (gcc_jit_context_acquire): Log the context.
4159 (gcc_jit_context_release): Use JIT_LOG_FUNC to
4160 log entry/exit from the function body, and log the context.
4161 (gcc_jit_context_new_child_context): Likewise, logging both
4163 (gcc_jit_context_new_location): Use JIT_LOG_FUNC to
4164 log entry/exit from the function body.
4165 (gcc_jit_context_get_type): Likewise.
4166 (gcc_jit_context_get_int_type): Likewise.
4167 (gcc_jit_context_new_array_type): Likewise.
4168 (gcc_jit_context_new_field): Likewise.
4169 (gcc_jit_context_new_struct_type): Likewise.
4170 (gcc_jit_context_new_opaque_struct): Likewise.
4171 (gcc_jit_struct_set_fields): Likewise.
4172 (gcc_jit_context_new_union_type): Likewise.
4173 (gcc_jit_context_new_function_ptr_type): Likewise.
4174 (gcc_jit_context_new_param): Likewise.
4175 (gcc_jit_context_new_function): Likewise.
4176 (gcc_jit_context_get_builtin_function): Likewise.
4177 (gcc_jit_function_get_param): Likewise.
4178 (gcc_jit_function_dump_to_dot): Likewise.
4179 (gcc_jit_function_new_block): Likewise.
4180 (gcc_jit_context_new_global): Likewise.
4181 (gcc_jit_context_new_rvalue_from_int): Likewise.
4182 (gcc_jit_context_zero): Likewise.
4183 (gcc_jit_context_one): Likewise.
4184 (gcc_jit_context_new_rvalue_from_double): Likewise.
4185 (gcc_jit_context_new_rvalue_from_ptr): Likewise.
4186 (gcc_jit_context_null): Likewise.
4187 (gcc_jit_context_new_string_literal): Likewise.
4188 (gcc_jit_context_new_unary_op): Likewise.
4189 (gcc_jit_context_new_binary_op): Likewise.
4190 (gcc_jit_context_new_comparison): Likewise.
4191 (gcc_jit_context_new_call): Likewise.
4192 (gcc_jit_context_new_call_through_ptr): Likewise.
4193 (gcc_jit_context_new_cast): Likewise.
4194 (gcc_jit_context_new_array_access): Likewise.
4195 (gcc_jit_lvalue_access_field): Likewise.
4196 (gcc_jit_rvalue_access_field): Likewise.
4197 (gcc_jit_rvalue_dereference_field): Likewise.
4198 (gcc_jit_rvalue_dereference): Likewise.
4199 (gcc_jit_lvalue_get_address): Likewise.
4200 (gcc_jit_function_new_local): Likewise.
4201 (gcc_jit_block_add_eval): Likewise.
4202 (gcc_jit_block_add_assignment): Likewise.
4203 (gcc_jit_block_add_assignment_op): Likewise.
4204 (gcc_jit_block_end_with_conditional): Likewise.
4205 (gcc_jit_block_add_comment): Likewise.
4206 (gcc_jit_block_end_with_jump): Likewise.
4207 (gcc_jit_block_end_with_return): Likewise.
4208 (gcc_jit_block_end_with_void_return): Likewise.
4209 (gcc_jit_context_set_str_option): Likewise.
4210 (gcc_jit_context_set_int_option): Likewise.
4211 (gcc_jit_context_set_bool_option): Likewise.
4212 (gcc_jit_context_enable_dump): Likewise.
4213 (gcc_jit_context_compile): Likewise. Also log the context,
4215 (gcc_jit_context_dump_to_file): Likewise.
4216 (gcc_jit_context_set_logfile): New function.
4217 (gcc_jit_context_get_first_error): Use JIT_LOG_FUNC to
4218 log entry/exit from the function body.
4219 (gcc_jit_result_get_code): Likewise. Also log the fnname)
4220 and the ptr to be returned.
4221 (gcc_jit_result_release): Likewise. Also log the result.
4222 * libgccjit.h: Include <stdio.h>, since we need FILE *.
4223 (gcc_jit_context_set_logfile): New declaration.
4224 * libgccjit.map (gcc_jit_context_set_logfile): New.
4226 2015-01-07 David Malcolm <dmalcolm@redhat.com>
4228 * jit-recording.h (gcc::jit::recording::type::is_void): New
4230 (gcc::jit::recording::memento_of_get_type::is_void): New
4231 function, overriding default implementation.
4232 * libgccjit.c (gcc_jit_rvalue_dereference): Verify that
4233 the underlying type is not "void".
4235 2015-01-07 David Malcolm <dmalcolm@redhat.com>
4237 * docs/topics/expressions.rst (Unary Operations): Add
4238 GCC_JIT_UNARY_OP_ABS.
4239 * jit-playback.c (gcc::jit::playback::context::new_unary_op):
4241 * jit-recording.c (unary_op_strings): Likewise.
4242 * libgccjit.c (gcc_jit_context_new_unary_op): Update checking
4243 of "op" to reflect addition of GCC_JIT_UNARY_OP_ABS.
4244 * libgccjit.h (enum gcc_jit_unary_op): Add GCC_JIT_UNARY_OP_ABS.
4245 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4247 2015-01-07 David Malcolm <dmalcolm@redhat.com>
4249 * jit-recording.h (gcc::jit::recording::memento_of_get_type): Fix
4252 2015-01-07 David Malcolm <dmalcolm@redhat.com>
4254 * TODO.rst (Test suite): Remove item about running C++ testcases.
4255 * docs/internals/index.rst (Working on the JIT library): Add
4256 "c++" to the enabled languages in the suggested "configure"
4257 invocation, and add a description of why this is necessary.
4258 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4260 2015-01-07 David Malcolm <dmalcolm@redhat.com>
4262 * docs/internals/index.rst: Update to reflect that built
4263 testcases are now test-foo.c.exe, rather than test-foo.exe.
4264 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4266 2015-01-05 Jakub Jelinek <jakub@redhat.com>
4268 Update copyright years.
4270 2014-12-19 David Malcolm <dmalcolm@redhat.com>
4272 * jit-playback.c (gcc::jit::playback::context::build_cast): In
4273 case BOOLEAN_TYPE, don't assume that the source expression is
4276 2014-12-19 David Malcolm <dmalcolm@redhat.com>
4278 * jit-recording.c (gcc::jit::recording::context::context): When
4279 copying string options from a parent context, take a copy of the
4280 underlying buffers, rather than simply copying the pointer.
4282 2014-12-19 David Malcolm <dmalcolm@redhat.com>
4284 * jit-recording.c (gcc::jit::recording::context::set_str_option):
4287 2014-12-11 David Malcolm <dmalcolm@redhat.com>
4289 * docs/cp/topics/contexts.rst (gccjit::context::set_str_option):
4290 Document new function.
4291 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4293 2014-12-10 Ulrich Drepper <drepper@gmail.com>
4295 Minor interface cleanups of libgccjit
4296 * jit-playback.c (convert_to_dso): Use auto_vec instead
4297 of automatic array to build up command line.
4298 * jit-recording.c (recording::context::set_str_option):
4299 Make copy of the string.
4300 (recording::context::~context): Free string options.
4301 * jit-recording.h (recording::context): Adjust type
4302 of m_str_options member.
4303 * libgccjit.h: Adjust comment about
4304 gcc_jit_context_set_str_option parameter being used after
4306 Update comment now that all interfaces are copy strings
4308 * libgccjit++.h (gccjit::context): Add set_str_option
4311 2014-12-10 David Malcolm <dmalcolm@redhat.com>
4313 * docs/cp/index.rst: New file.
4314 * docs/cp/intro/index.rst: New file.
4315 * docs/cp/intro/tutorial01.rst: New file.
4316 * docs/cp/intro/tutorial02.rst: New file.
4317 * docs/cp/intro/tutorial03.rst: New file.
4318 * docs/cp/intro/tutorial04.rst: New file.
4319 * docs/cp/topics/contexts.rst: New file.
4320 * docs/cp/topics/expressions.rst: New file.
4321 * docs/cp/topics/functions.rst: New file.
4322 * docs/cp/topics/index.rst: New file.
4323 * docs/cp/topics/locations.rst: New file.
4324 * docs/cp/topics/objects.rst: New file.
4325 * docs/cp/topics/results.rst: New file.
4326 * docs/cp/topics/types.rst: New file.
4327 * docs/examples/tut01-hello-world.cc: New file.
4328 * docs/examples/tut02-square.c: Fix missing newline in output.
4329 * docs/examples/tut02-square.cc: New file.
4330 * docs/examples/tut03-sum-of-squares.cc: New file.
4331 * docs/examples/tut04-toyvm/toyvm.cc: New file.
4332 * docs/index.rst: Move summary to above the table of contents.
4333 Add text about the C vs C++ APIs.
4334 * docs/topics/contexts.rst: Fix a typo.
4336 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4337 * docs/_build/texinfo/factorial1.png: New file.
4338 * docs/_build/texinfo/sum-of-squares1.png: New file.
4340 2014-12-09 David Malcolm <dmalcolm@redhat.com>
4342 * docs/examples/tut04-toyvm/toyvm.c (toyvm_function_compile): Move
4343 logic for determine "funcname" to new function...
4344 (get_function_name): ...here, adding logic to skip any leading
4345 path from the filename.
4346 (toyvm_function_parse): Use the filename for fn_filename, rather
4347 than "name", so that the debugger can locate the source .toy
4349 (toyvm_function_parse): Don't fclose a NULL FILE *.
4351 2014-12-09 David Malcolm <dmalcolm@redhat.com>
4354 * docs/internals/index.rst (Running under valgrind): New
4356 (docs/_build/texinfo/libgccjit.texi): Regenerate.
4358 2014-12-09 David Malcolm <dmalcolm@redhat.com>
4361 * Make-lang.in (jit_OBJS): Add jit/jit-tempdir.o.
4362 * jit-common.h (gcc::jit::tempdir): New forward decl.
4363 * jit-playback.c: Include jit-tempdir.h.
4364 (gcc::jit::playback::context::context): Initialize m_tempdir.
4365 (gcc::jit::playback::context::~context): Move tempdir
4366 cleanup to new file jit-tempdir.c
4367 (make_tempdir_path_template): Move to new file jit-tempdir.c.
4368 (gcc::jit::playback::context::compile): Move tempdir creation
4369 to new tempdir object in new file jit-tempdir.c.
4370 (gcc::jit::playback::context::make_fake_args): Get path from
4371 tempdir object rather than from member data.
4372 (gcc::jit::playback::context::convert_to_dso): Likewise.
4373 (gcc::jit::playback::context::dlopen_built_dso): Likewise.
4374 (gcc::jit::playback::context::dump_generated_code): Likewise.
4375 (gcc::jit::playback::context::get_path_c_file): New function.
4376 (gcc::jit::playback::context::get_path_s_file): New function.
4377 (gcc::jit::playback::context::get_path_so_file): New function.
4378 * jit-playback.h (gcc::jit::playback::context::get_path_c_file):
4380 (gcc::jit::playback::context::get_path_s_file): New function.
4381 (gcc::jit::playback::context::get_path_so_file): New function.
4382 (gcc::jit::playback::context): Move fields "m_path_template",
4383 "m_path_tempdir", "m_path_c_file", "m_path_s_file",
4384 "m_path_so_file" to new jit::tempdir class; add field "m_tempdir".
4385 * jit-tempdir.c: New file.
4386 * jit-tempdir.h: New file.
4388 2014-12-09 David Malcolm <dmalcolm@redhat.com>
4390 * jit-playback.c (gcc::jit::playback::context::compile): Acquire the
4391 mutex here, immediately before using toplev, and release it here, on
4392 each exit path after acquisition.
4393 (jit_mutex): Move this variable here, from jit-recording.c.
4394 (gcc::jit::playback::context::acquire_mutex): New function, based on
4395 code in jit-recording.c.
4396 (gcc::jit::playback::context::release_mutex): Likewise.
4397 * jit-playback.h (gcc::jit::playback::context::acquire_mutex): New
4399 (gcc::jit::playback::context::release_mutex): New function.
4400 * jit-recording.c (jit_mutex): Move this variable to jit-playback.c.
4401 (gcc::jit::recording::context::compile): Move mutex-handling from
4402 here into jit-playback.c's gcc::jit::playback::context::compile.
4403 * notes.txt: Update to show the new locations of ACQUIRE_MUTEX
4406 2014-12-09 David Malcolm <dmalcolm@redhat.com>
4408 * jit-playback.c (gcc::jit::playback::context::compile): Move the
4410 (gcc::jit::playback::context::dlopen_built_dso): ...this new
4412 * jit-playback.h (gcc::jit::playback::context::dlopen_built_dso):
4415 2014-12-09 David Malcolm <dmalcolm@redhat.com>
4418 * docs/topics/contexts.rst (Debugging): Add description of
4419 gcc_jit_context_enable_dump.
4420 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4421 * jit-playback.c: Include context.h.
4422 (class auto_argvec): New class.
4423 (auto_argvec::~auto_argvec): New function.
4424 (gcc::jit::playback::context::compile): Convert fake_args to be
4425 an auto_argvec, so that it can contain dynamically-allocated
4426 strings. Construct a vec of all requested dumps, and pass it to
4427 make_fake_args. Extract requested dumps between the calls to
4428 toplev::main and toplev::finalize.
4429 (gcc::jit::playback::context::make_fake_args): Convert param
4430 "argvec" to be a vec <char *>, and gain a "requested_dumps"
4431 param. Convert to dynamically-allocated arg strings by converting
4432 ADD_ARG to take a copy of the arg, and add ADD_ARG_TAKE_OWNERSHIP
4433 for args that are already a copy. Add args for all requested dumps.
4434 (gcc::jit::playback::context::extract_any_requested_dumps): New
4436 (gcc::jit::playback::context::read_dump_file): New function.
4437 * jit-playback.h (gcc::jit::playback::context::make_fake_args):
4438 Convert param "argvec" to be a vec <char *>, and gain a
4439 "requested_dumps" param.
4440 (gcc::jit::playback::context::extract_any_requested_dumps): New
4442 (gcc::jit::playback::context::read_dump_file): New function.
4443 * jit-recording.c (gcc::jit::recording::context::enable_dump): New
4445 (gcc::jit::recording::context::get_all_requested_dumps): New
4447 * jit-recording.h (gcc::jit::recording::requested_dump): New
4449 (gcc::jit::recording::context::enable_dump): New function.
4450 (gcc::jit::recording::context::get_all_requested_dumps): New
4452 (gcc::jit::recording::context::m_requested_dumps): New field.
4453 * libgccjit.c (gcc_jit_context_enable_dump): New API entrypoint.
4454 * libgccjit.h (gcc_jit_context_enable_dump): New API entrypoint.
4455 * libgccjit.map (gcc_jit_context_enable_dump): New API entrypoint.
4457 2014-12-08 David Malcolm <dmalcolm@redhat.com>
4459 * libgccjit++.h: Indent the forward declarations of the classes to
4460 show the inheritance hierarchy.
4462 2014-12-08 David Malcolm <dmalcolm@redhat.com>
4464 * notes.txt: Show the beginning and ending of
4465 recording::context::compile vs playback::context::compile. Show
4466 the creation and unlinking of the tempdir. Show toplev::finalize.
4467 Move "RELEASE MUTEX" to the correct location. Show
4468 gcc_jit_result_release, and indicate where the
4469 dlopen/dlsym/dlclose occur.
4471 2014-12-01 David Malcolm <dmalcolm@redhat.com>
4473 * docs/examples/tut02-square.c (main): Release the context
4474 earlier, to show that this is possible. Update error-handling
4475 to avoid a double-release of the context, and to avoid
4476 releasing a NULL result.
4477 * docs/intro/tutorial02.rst: Discuss gcc_jit_context_release.
4478 * docs/topics/functions.rst (GCC_JIT_FUNCTION_EXPORTED): Emphasize
4479 * docs/topics/results.rst (gcc_jit_result): Mention that this
4480 controls the lifetimes of machine code functions.
4481 (gcc_jit_result_get_code): Spell out the requirements for this
4482 to succeed, and the lifetime of the result.
4483 (gcc_jit_result_release): Mention that this invalidates any code
4484 that was obtained from the result.
4485 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4487 2014-12-01 David Malcolm <dmalcolm@redhat.com>
4490 * docs/intro/tutorial02.rst: Spell out lifetime of generated code.
4491 Add description of error-handling, taken in part from...
4492 * docs/topics/contexts.rst (Error-handling): Expand, and move some
4493 content to tutorial02.rst.
4494 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4496 2014-12-01 David Malcolm <dmalcolm@redhat.com>
4499 * docs/topics/types.rst (Standard types) Add new enum values to
4500 the table of enum gcc_jit_types: GCC_JIT_TYPE_COMPLEX_FLOAT,
4501 GCC_JIT_TYPE_COMPLEX_DOUBLE, GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE.
4502 Widen the left-hand column so that
4503 GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE will fit.
4504 * docs/_build/texinfo/libgccjit.texi: Regenerate.
4506 * jit-builtins.c: Include stringpool.h and jit-playback.h.
4507 Move everything out of the gcc::jit::recording namespace into
4509 (struct builtin_data): Add fields "fnclass", "attr", and
4511 (DEF_BUILTIN): Update macro so populate the new fields.
4512 (builtins_manager::builtins_manager): Update for move out of
4513 recording namespace. Initialize the m_attributes array.
4514 (builtins_manager::get_builtin_function): Likewise.
4515 (builtins_manager::get_builtin_function_by_id): New function.
4516 (builtins_manager::make_builtin_function): Update for move out of
4517 recording namespace. Add fix for PR jit/64020 by detecting
4518 specific builtin ids and having them ensure that builtins for
4519 other ids are created as necessary.
4520 (builtins_manager::get_type): Update for move out of recording
4522 (builtins_manager::make_type): Likewise. Add some missing
4524 (builtins_manager::make_primitive_type): Update for move out of
4525 recording namespace. Implement the three BT_COMPLEX_ cases and
4527 (builtins_manager::make_fn_type): Update for move out of recording
4529 (builtins_manager::make_ptr_type): Likewise.
4530 (builtins_manager::finish_playback): New function.
4531 (builtins_manager::get_class): New function.
4532 (builtins_manager::implicit_p): New function.
4533 (builtins_manager::get_attrs_tree): Two new functions.
4534 (builtins_manager::make_attrs_tree): New function.
4536 * jit-builtins.h: Move everything out of the gcc::jit::recording
4537 namespace into just gcc::jit.
4538 (enum built_in_attribute): New.
4539 (builtins_manager::builtins_manager): Update decl for namespace
4541 (builtins_manager::get_builtin_function): Likewise.
4542 (builtins_manager::get_class): New.
4543 (builtins_manager::implicit_p): New.
4544 (builtins_manager::get_attrs_tree): Two new functions.
4545 (builtins_manager::make_attrs_tree): New function.
4546 (builtins_manager::finish_playback): New.
4547 (builtins_manager::get_builtin_function_by_id): New.
4548 (builtins_manager::make_builtin_function): Update decl for
4550 (builtins_manager::get_type): Likewise.
4551 (builtins_manager::make_type): Likewise.
4552 (builtins_manager::make_primitive_type): Likewise.
4553 (builtins_manager::make_fn_type): Likewise.
4554 (builtins_manager::make_ptr_type): Likewise.
4555 (builtins_manager): Likewise for fields. Add new field
4558 * jit-common.h (NUM_GCC_JIT_TYPES): Update.
4559 (builtins_manager): Update forward decl to reflect namespace
4562 * jit-playback.c: Include attribs.h and jit-builtins.h.
4563 (gcc::jit::playback::context::get_tree_node_for_type): Add cases
4564 for the new COMPLEX_ types.
4565 (gcc::jit::playback::context::new_function): If creating a
4566 builtin, set the DECL_BUILT_IN_CLASS and attributes on the fndecl,
4567 and call set_builtin_decl.
4568 (gcc::jit::playback::context::replay): If we have a
4569 builtins_manager, call its finish_playback method when we're done.
4572 (gcc::jit::playback::context::get_builtins_manager): New function.
4575 (gcc::jit::recording::context::get_builtins_manager): New function.
4576 (gcc::jit::recording::get_builtin_function): Use
4577 get_builtins_manager, in case we're a child context.
4578 (gcc::jit::recording::memento_of_get_type::dereference): Add the
4580 (gcc::jit::recording::memento_of_get_type::is_int): Likewise.
4581 (gcc::jit::recording::memento_of_get_type::is_float): Likewise.
4582 (gcc::jit::recording::memento_of_get_type::is_bool): Likewise.
4583 (get_type_strings): Likewise.
4586 (gcc::jit::recording::context::get_builtins_manager): New.
4588 * libgccjit.h (enum gcc_jit_types): Add
4589 GCC_JIT_TYPE_COMPLEX_FLOAT, GCC_JIT_TYPE_COMPLEX_DOUBLE,
4590 GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE.
4592 2014-12-01 David Malcolm <dmalcolm@redhat.com>
4595 (gcc::jit::recording::builtins_manager::get_builtin_function):
4596 Check for NULL return from make_builtin_function.
4597 (gcc::jit::recording::builtins_manager::make_builtin_function):
4598 Check for NULL return from get_type.
4600 2014-12-01 David Malcolm <dmalcolm@redhat.com>
4602 * jit-playback.c (gcc::jit::playback::context::compile): Move DSO
4603 creation code into...
4604 (gcc::jit::playback::context::convert_to_dso): New function.
4605 * jit-playback.h (gcc::jit::playback::context::convert_to_dso):
4608 2014-12-01 David Malcolm <dmalcolm@redhat.com>
4610 * jit-playback.c (gcc::jit::playback::context::compile): Use an
4611 auto_vec<const char *> rather than a const char *[20] for the
4612 top-level argv, and move the logic to build it to...
4613 (gcc::jit::playback::context::make_fake_args): New function.
4614 * jit-playback.h (gcc::jit::playback::context::make_fake_args):
4617 2014-12-01 David Malcolm <dmalcolm@redhat.com>
4619 * Make-lang.in (jit_OBJS): Add jit/jit-result.o.
4620 * jit-playback.c: Include new header jit-result.h.
4621 (gcc::jit::result::result): Move to new file jit-result.c.
4622 (gcc::jit::result::~result): Likewise.
4623 (gcc::jit::playback::result): Likewise.
4624 * jit-recording.h (class gcc::jit::result): Move to new
4625 header jit-result.h.
4626 * jit-result.c: New file, to contain...
4627 (gcc::jit::result::result): Move here from jit-playback.c,
4628 removing erroneous "playback" namespace from comment.
4629 (gcc::jit::result::~result): Likewise.
4630 (gcc::jit::playback::result): Likewise.
4631 * jit-result.h: New file, to contain...
4632 (class gcc::jit::result): Move from jit-recording.h.
4633 * libgccjit.c: Include jit-result.h.
4634 (gcc_jit_result_get_code): Update comment to reflect move
4636 (gcc_jit_result_release): Likewise.
4638 2014-12-01 David Malcolm <dmalcolm@redhat.com>
4641 * docs/examples/tut04-toyvm/toyvm.c
4642 (toyvm_compiled_function): New typedef.
4643 (toyvm_compiled_func) Rename to...
4644 (toyvm_compiled_code) ...this.
4645 (struct toyvm_compiled_function): New struct.
4646 (toyvm_function_compile): Return a toyvm_compiled_function *
4647 rather than a toyvm_compiled_func, so that the caller can fully
4648 clean things up. Free "funcname".
4649 (test_script): Update for change to toyvm_function_compile.
4650 Clean up the toyvm_compiled_function.
4652 (docs/intro/tutorial04.rst): Update to reflect the above changes,
4653 and to better spell out the lifetime of the compiled code.
4655 2014-12-01 David Malcolm <dmalcolm@redhat.com>
4659 (gcc::jit::recording::builtins_manager::make_fn_type): Call the
4660 context's new_function_type method, rather than directly creating
4661 a function_type instance.
4663 (gcc::jit::recording::context::new_function_type): New method,
4664 adapted from part of...
4665 (gcc::jit::recording::context::new_function_ptr_type): ...this.
4666 Update to call new_function_type.
4668 (gcc::jit::recording::context::new_function_type): New method.
4670 2014-12-01 David Malcolm <dmalcolm@redhat.com>
4673 * jit-playback.c: Ensure that ctxt_progname is non-NULL.
4675 2014-11-19 David Malcolm <dmalcolm@redhat.com>
4678 * jit-playback.c (gcc::jit::playback::compound_type::set_fields):
4679 Convert param from const vec<playback::field *> & to
4680 const auto_vec<playback::field *> *.
4681 (gcc::jit::playback::context::new_function_type): Convert param
4682 "param_types" from vec<type *> * to const auto_vec<type *> *.
4683 (gcc::jit::playback::context::new_function): Convert param
4684 "params" from vec<param *> * to const auto_vec<param *> *.
4685 (gcc::jit::playback::context::build_call): Convert param "args"
4686 from vec<rvalue *> to const auto_vec<rvalue *> *.
4687 (gcc::jit::playback::context::new_call): Likewise.
4688 (gcc::jit::playback::context::new_call_through_ptr): Likewise.
4689 (wrapper_finalizer): New function.
4690 (gcc::jit::playback::wrapper::operator new): Call the finalizer
4691 variant of ggc_internal_cleared_alloc, supplying
4693 (gcc::jit::playback::function::finalizer): New.
4694 (gcc::jit::playback::block::finalizer): New.
4695 (gcc::jit::playback::source_file::finalizer): New.
4696 (gcc::jit::playback::source_line::finalizer): New.
4699 (gcc::jit::playback::context::new_function_type): Convert param
4700 "param_types" from vec<type *> * to const auto_vec<type *> *.
4701 (gcc::jit::playback::context::new_function): Convert param
4702 "params" from vec<param *> * to const auto_vec<param *> *.
4703 (gcc::jit::playback::context::new_call): Convert param
4704 "args" from vec<rvalue *> to const auto_vec<rvalue *> *.
4705 (gcc::jit::playback::context::new_call_through_ptr): Likewise.
4706 (gcc::jit::playback::context::build_call): Likewise.
4707 (gcc::jit::playback::context): Convert fields "m_functions",
4708 "m_source_files", "m_cached_locations" from vec to auto_vec.
4709 (gcc::jit::playback::wrapper::finalizer): New virtual function.
4710 (gcc::jit::playback::compound_type::set_fields): Convert param fro
4711 const vec<playback::field *> & to
4712 const auto_vec<playback::field *> *.
4713 (gcc::jit::playback::function::finalizer): New.
4714 (gcc::jit::playback::block::finalizer): New.
4715 (gcc::jit::playback::source_file::finalizer): New.
4716 (gcc::jit::playback::source_line::finalizer): New.
4719 (gcc::jit::recording::function_type::replay_into): Convert local
4720 from a vec into an auto_vec.
4721 (gcc::jit::recording::fields::replay_into): Likewise.
4722 (gcc::jit::recording::function::replay_into): Likewise.
4723 (gcc::jit::recording::call::replay_into): Likewise.
4724 (gcc::jit::recording::call_through_ptr::replay_into): Likewise.
4726 * jit-recording.h (gcc::jit::recording::context): Convert fields
4727 "m_mementos", "m_compound_types", "m_functions" from vec<> to
4729 (gcc::jit::recording::function_type::get_param_types): Convert
4730 return type from vec<type *> to const vec<type *> &.
4731 (gcc::jit::recording::function_type): Convert field
4732 "m_param_types" from a vec<> to an auto_vec<>.
4733 (gcc::jit::recording::fields): Likewise for field "m_fields".
4734 (gcc::jit::recording::function::get_params): Convert return type
4735 from vec <param *> to const vec<param *> &.
4736 (gcc::jit::recording::function): Convert fields "m_params",
4737 "m_locals", "m_blocks" from vec<> to auto_vec<>.
4738 (gcc::jit::recording::block): Likewise for field "m_statements".
4739 vec<> to auto_vec<>.
4740 (gcc::jit::recording::call): Likewise for field "m_args".
4741 (gcc::jit::recording::call_through_ptr): Likewise.
4743 2014-11-19 David Malcolm <dmalcolm@redhat.com>
4746 * jit-recording.c (recording::function::validate): Convert
4747 "worklist" from vec<> to autovec<> to fix a leak.
4749 2014-11-11 David Malcolm <dmalcolm@redhat.com>
4751 * ChangeLog.jit: New.
4753 * Make-lang.in: New.
4755 * config-lang.in: New.
4756 * docs/Makefile: New.
4757 * docs/_build/texinfo/Makefile: New.
4758 * docs/_build/texinfo/factorial.png: New.
4759 * docs/_build/texinfo/libgccjit.texi: New.
4760 * docs/_build/texinfo/sum-of-squares.png: New.
4761 * docs/conf.py: New.
4762 * docs/examples/tut01-hello-world.c: New.
4763 * docs/examples/tut02-square.c: New.
4764 * docs/examples/tut03-sum-of-squares.c: New.
4765 * docs/examples/tut04-toyvm/Makefile: New.
4766 * docs/examples/tut04-toyvm/factorial.toy: New.
4767 * docs/examples/tut04-toyvm/fibonacci.toy: New.
4768 * docs/examples/tut04-toyvm/toyvm.c: New.
4769 * docs/index.rst: New.
4770 * docs/internals/index.rst: New.
4771 * docs/intro/factorial.png: New.
4772 * docs/intro/index.rst: New.
4773 * docs/intro/sum-of-squares.png: New.
4774 * docs/intro/tutorial01.rst: New.
4775 * docs/intro/tutorial02.rst: New.
4776 * docs/intro/tutorial03.rst: New.
4777 * docs/intro/tutorial04.rst: New.
4778 * docs/topics/contexts.rst: New.
4779 * docs/topics/expressions.rst: New.
4780 * docs/topics/functions.rst: New.
4781 * docs/topics/index.rst: New.
4782 * docs/topics/locations.rst: New.
4783 * docs/topics/objects.rst: New.
4784 * docs/topics/results.rst: New.
4785 * docs/topics/types.rst: New.
4786 * dummy-frontend.c: New.
4787 * jit-builtins.c: New.
4788 * jit-builtins.h: New.
4789 * jit-common.h: New.
4790 * jit-playback.c: New.
4791 * jit-playback.h: New.
4792 * jit-recording.c: New.
4793 * jit-recording.h: New.
4794 * libgccjit++.h: New.
4797 * libgccjit.map: New.
4800 2013-07-26 David Malcolm <dmalcolm@redhat.com>
4804 Copyright (C) 2013-2025 Free Software Foundation, Inc.
4806 Copying and distribution of this file, with or without modification,
4807 are permitted in any medium without royalty provided the copyright
4808 notice and this notice are preserved.