]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/jit/ChangeLog
Daily bump.
[thirdparty/gcc.git] / gcc / jit / ChangeLog
CommitLineData
5b6ce16a
GA
12022-11-11 Martin Liska <mliska@suse.cz>
2
3 * doc/cp/index.rst: Remove trailing .rst in toctree.
4 * doc/cp/intro/index.rst: Likewise.
5 * doc/cp/topics/index.rst: Likewise.
6 * doc/index.rst: Likewise.
7 * doc/intro/index.rst: Likewise.
8 * doc/topics/index.rst: Likewise.
9 * doc/indices-and-tables.rst: New file.
10
1cdfd0e5
GA
112022-11-09 Martin Liska <mliska@suse.cz>
12
13 * Make-lang.in:
14 Support installation if sphinx-build is missing.
15
162022-11-09 Martin Liska <mliska@suse.cz>
17
18 * doc/internals/index.rst: Fix cross manual refs.
19 * doc/topics/contexts.rst: Likewise.
20
212022-11-09 Martin Liska <mliska@suse.cz>
22
23 * Make-lang.in: Support --with-sphinx-build.
24
252022-11-09 Martin Liska <mliska@suse.cz>
26
27 * Make-lang.in:
28 * docs/cp/index.rst: Moved to...
29 * doc/cp/index.rst: ...here.
30 * docs/cp/intro/index.rst: Moved to...
31 * doc/cp/intro/index.rst: ...here.
32 * docs/cp/intro/tutorial01.rst: Moved to...
33 * doc/cp/intro/tutorial01.rst: ...here.
34 * docs/cp/intro/tutorial02.rst: Moved to...
35 * doc/cp/intro/tutorial02.rst: ...here.
36 * docs/cp/intro/tutorial03.rst: Moved to...
37 * doc/cp/intro/tutorial03.rst: ...here.
38 * docs/cp/intro/tutorial04.rst: Moved to...
39 * doc/cp/intro/tutorial04.rst: ...here.
40 * docs/cp/topics/asm.rst: Moved to...
41 * doc/cp/topics/asm.rst: ...here.
42 * docs/cp/topics/compilation.rst: Moved to...
43 * doc/cp/topics/compilation.rst: ...here.
44 * docs/cp/topics/contexts.rst: Moved to...
45 * doc/cp/topics/contexts.rst: ...here.
46 * docs/cp/topics/expressions.rst: Moved to...
47 * doc/cp/topics/expressions.rst: ...here.
48 * docs/cp/topics/functions.rst: Moved to...
49 * doc/cp/topics/functions.rst: ...here.
50 * docs/cp/topics/index.rst: Moved to...
51 * doc/cp/topics/index.rst: ...here.
52 * docs/cp/topics/locations.rst: Moved to...
53 * doc/cp/topics/locations.rst: ...here.
54 * docs/cp/topics/objects.rst: Moved to...
55 * doc/cp/topics/objects.rst: ...here.
56 * docs/cp/topics/types.rst: Moved to...
57 * doc/cp/topics/types.rst: ...here.
58 * docs/examples/emit-alphabet.bf: Moved to...
59 * doc/examples/emit-alphabet.bf: ...here.
60 * docs/examples/tut01-hello-world.c: Moved to...
61 * doc/examples/tut01-hello-world.c: ...here.
62 * docs/examples/tut01-hello-world.cc: Moved to...
63 * doc/examples/tut01-hello-world.cc: ...here.
64 * docs/examples/tut02-square.c: Moved to...
65 * doc/examples/tut02-square.c: ...here.
66 * docs/examples/tut02-square.cc: Moved to...
67 * doc/examples/tut02-square.cc: ...here.
68 * docs/examples/tut03-sum-of-squares.c: Moved to...
69 * doc/examples/tut03-sum-of-squares.c: ...here.
70 * docs/examples/tut03-sum-of-squares.cc: Moved to...
71 * doc/examples/tut03-sum-of-squares.cc: ...here.
72 * docs/examples/tut04-toyvm/Makefile: Moved to...
73 * doc/examples/tut04-toyvm/Makefile: ...here.
74 * docs/examples/tut04-toyvm/factorial.toy: Moved to...
75 * doc/examples/tut04-toyvm/factorial.toy: ...here.
76 * docs/examples/tut04-toyvm/fibonacci.toy: Moved to...
77 * doc/examples/tut04-toyvm/fibonacci.toy: ...here.
78 * docs/examples/tut04-toyvm/toyvm.c: Moved to...
79 * doc/examples/tut04-toyvm/toyvm.c: ...here.
80 * docs/examples/tut04-toyvm/toyvm.cc: Moved to...
81 * doc/examples/tut04-toyvm/toyvm.cc: ...here.
82 * docs/examples/tut05-bf.c: Moved to...
83 * doc/examples/tut05-bf.c: ...here.
84 * docs/index.rst: Moved to...
85 * doc/index.rst: ...here.
86 * docs/internals/index.rst: Moved to...
87 * doc/internals/index.rst: ...here.
88 * docs/internals/test-hello-world.exe.log.txt: Moved to...
89 * doc/internals/test-hello-world.exe.log.txt: ...here.
90 * docs/_build/texinfo/libgccjit-figures/factorial.png: Moved to...
91 * doc/intro/factorial.png: ...here.
92 * docs/intro/index.rst: Moved to...
93 * doc/intro/index.rst: ...here.
94 * docs/_build/texinfo/libgccjit-figures/sum-of-squares.png: Moved to...
95 * doc/intro/sum-of-squares.png: ...here.
96 * docs/intro/tutorial01.rst: Moved to...
97 * doc/intro/tutorial01.rst: ...here.
98 * docs/intro/tutorial02.rst: Moved to...
99 * doc/intro/tutorial02.rst: ...here.
100 * docs/intro/tutorial03.rst: Moved to...
101 * doc/intro/tutorial03.rst: ...here.
102 * docs/intro/tutorial04.rst: Moved to...
103 * doc/intro/tutorial04.rst: ...here.
104 * docs/intro/tutorial05.rst: Moved to...
105 * doc/intro/tutorial05.rst: ...here.
106 * docs/topics/asm.rst: Moved to...
107 * doc/topics/asm.rst: ...here.
108 * docs/topics/compatibility.rst: Moved to...
109 * doc/topics/compatibility.rst: ...here.
110 * docs/topics/compilation.rst: Moved to...
111 * doc/topics/compilation.rst: ...here.
112 * docs/topics/contexts.rst: Moved to...
113 * doc/topics/contexts.rst: ...here.
114 * docs/topics/expressions.rst: Moved to...
115 * doc/topics/expressions.rst: ...here.
116 * docs/topics/function-pointers.rst: Moved to...
117 * doc/topics/function-pointers.rst: ...here.
118 * docs/topics/functions.rst: Moved to...
119 * doc/topics/functions.rst: ...here.
120 * docs/topics/index.rst: Moved to...
121 * doc/topics/index.rst: ...here.
122 * docs/topics/locations.rst: Moved to...
123 * doc/topics/locations.rst: ...here.
124 * docs/topics/objects.rst: Moved to...
125 * doc/topics/objects.rst: ...here.
126 * docs/topics/performance.rst: Moved to...
127 * doc/topics/performance.rst: ...here.
128 * docs/topics/types.rst: Moved to...
129 * doc/topics/types.rst: ...here.
130 * docs/Makefile: Removed.
131 * docs/_build/texinfo/Makefile: Removed.
132 * docs/_build/texinfo/libgccjit-figures/factorial1.png: Removed.
133 * docs/_build/texinfo/libgccjit-figures/sum-of-squares1.png: Removed.
134 * docs/_build/texinfo/libgccjit.texi: Removed.
135 * docs/conf.py: Removed.
136 * docs/intro/factorial.png: Removed.
137 * docs/intro/sum-of-squares.png: Removed.
138 * doc/conf.py: New file.
139
d0fc05e8
GA
1402022-09-15 Richard Biener <rguenther@suse.de>
141
142 * dummy-frontend.cc (jit_langhook_init): Do not initialize
143 void_list_node.
144
6d001ec1
GA
1452022-08-09 Vibhav Pant <vibhavp@gmail.com>
146
147 * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_context_new_bitcast): Move
148 definition out of comment.
149
af086d19
GA
1502022-07-28 David Malcolm <dmalcolm@redhat.com>
151
152 * docs/internals/index.rst: Remove reference to ".c" extensions
153 of source files.
154
1552022-07-28 Martin Liška <mliska@suse.cz>
156
157 * docs/cp/intro/tutorial02.rst:
158 Shorten the assembly example so that there is not slider.
159 * docs/cp/intro/tutorial04.rst: Likewise.
160 * docs/intro/tutorial02.rst: Likewise.
161 * docs/intro/tutorial04.rst: Likewise.
162 * docs/topics/contexts.rst: Likewise.
163
1642022-07-28 marxin <mliska@suse.cz>
165
166 * docs/index.rst: Remove reference to module index
167 as we don't emit any.
168
1692022-07-28 marxin <mliska@suse.cz>
170
171 * docs/cp/intro/tutorial02.rst: Use :expr:`type *` for pointers to a type
172 * docs/cp/topics/asm.rst: Likewise.
173 * docs/cp/topics/contexts.rst: Likewise.
174 * docs/cp/topics/expressions.rst: Likewise.
175 * docs/cp/topics/functions.rst: Likewise.
176 * docs/cp/topics/objects.rst: Likewise.
177 * docs/intro/tutorial02.rst: Likewise.
178 * docs/intro/tutorial03.rst: Likewise.
179 * docs/intro/tutorial04.rst: Likewise.
180 * docs/intro/tutorial05.rst: Likewise.
181 * docs/topics/compilation.rst: Likewise.
182 * docs/topics/contexts.rst: Likewise.
183 * docs/topics/objects.rst: Likewise.
184
1852022-07-28 marxin <mliska@suse.cz>
186
187 * docs/cp/intro/tutorial04.rst: Use list-table.
188 * docs/intro/tutorial04.rst: Likewise.
189 * docs/intro/tutorial05.rst: Likewise.
190 * docs/topics/compilation.rst: Likewise.
191 * docs/topics/expressions.rst: Likewise.
192 * docs/topics/types.rst: Likewise.
193
1942022-07-28 marxin <mliska@suse.cz>
195
196 * docs/cp/topics/expressions.rst: Compact so that the generated
197 output is also more compact.
198
1992022-07-28 marxin <mliska@suse.cz>
200
201 * docs/cp/intro/tutorial02.rst: Use proper reference.
202 * docs/cp/topics/contexts.rst: Likewise.
203 * docs/cp/topics/functions.rst: Put `class` directive before a
204 function as it is not allowed declaring a class in a fn.
205 * docs/cp/topics/types.rst: Add template keyword.
206 * docs/examples/tut04-toyvm/toyvm.c (toyvm_function_compile):
207 Add removed comment used for code snippet ending detection.
208 * docs/intro/tutorial04.rst: Fix to match the real comment.
209
2102022-07-28 marxin <mliska@suse.cz>
211
212 * docs/cp/topics/expressions.rst: Use :expr: for basic types.
213 * docs/topics/compilation.rst: Likewise.
214 * docs/topics/expressions.rst: Likewise.
215 * docs/topics/function-pointers.rst: Likewise.
216
2172022-07-28 marxin <mliska@suse.cz>
218
219 * docs/conf.py: Add needs_sphinx = '3.0' where c:type was added.
220 * docs/index.rst: Remove note about it.
221 * docs/topics/compilation.rst: Use enum directive and reference.
222 * docs/topics/contexts.rst: Likewise.
223 * docs/topics/expressions.rst: Likewise.
224 * docs/topics/functions.rst: Likewise.
225
e0e07bc7
GA
2262022-07-14 Jonathan Wakely <jwakely@redhat.com>
227
228 * jit-recording.h (recording::memento): Define copy constructor
229 and copy assignment operator as deleted.
230 (recording::string): Likewise.
231 (recording::string::c_str): Add const qualifier.
232
ce600bc4
GA
2332022-06-29 Antoni Boucher <bouanto@zoho.com>
234
235 PR jit/105812
236 * jit-playback.cc: Use the correct return type when folding in
237 as_truth_value.
238
2392022-06-29 Sergei Trofimovich <siarheit@google.com>
240
241 PR c++/106102
242 * jit-playback.cc: Include <pthread.h> via "system.h" to avoid calloc()
243 poisoning.
244 * jit-recording.cc: Ditto.
245 * libgccjit.cc: Ditto.
246
ef1e4d80
GA
2472022-06-10 Antoni Boucher <bouanto@zoho.com>
248
249 PR jit/105829
250 * libgccjit.cc: Add support for floating-point types in
251 gcc_jit_type_get_size.
252
02b4e2de
GA
2532022-06-08 Yang Yujie <yangyujie@loongson.cn>
254
255 * Make-lang.in: only link objects from $(EXTRA_GCC_OBJS)
256 that's not in $(EXTRA_OBJS) into libgccjit.
257
168fc8bd
GA
2582022-05-23 David Malcolm <dmalcolm@redhat.com>
259
260 * jit-recording.h: Add "final" and "override" to all vfunc
261 implementations that were missing them, as appropriate.
262
57f2ce6a
GA
2632022-05-20 David Malcolm <dmalcolm@redhat.com>
264
265 * jit-playback.h: Replace uses of "FINAL" and "OVERRIDE" with
266 "final" and "override".
267 * jit-recording.cc: Likewise.
268 * jit-recording.h: Likewise.
269
702bd11f
GA
2702022-05-16 Martin Liska <mliska@suse.cz>
271
272 * jit-builtins.cc (find_builtin_by_name): Use ARRAY_SIZE.
273 (get_string_for_type_id): Likewise.
274 * jit-recording.cc (recording::context::context): Likewise.
275
031bd52e
GA
2762022-04-14 Iain Sandoe <iain@sandoe.co.uk>
277
278 * jit-playback.cc (new_bitcast): Cast values returned by tree_to_uhwi
279 to 'long' to match the print format.
280
504dae1d
GA
2812022-04-12 Antoni Boucher <bouanto@zoho.com>
282
283 PR jit/104293
284 * docs/_build/texinfo/libgccjit.texi: Regenerate.
285 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_24): New ABI tag.
286 * docs/topics/expressions.rst: Add documentation for the
287 functions gcc_jit_lvalue_set_alignment and
288 gcc_jit_lvalue_get_alignment.
289 * jit-playback.h: New function (set_alignment).
290 * jit-recording.cc: New function (set_alignment).
291 * jit-recording.h: New functions (set_alignment, get_alignment)
292 and new field (m_alignment).
293 * libgccjit.cc: New functions (gcc_jit_lvalue_get_alignment,
294 gcc_jit_lvalue_set_alignment)
295 * libgccjit.h: New functions (gcc_jit_lvalue_get_alignment,
296 gcc_jit_lvalue_set_alignment)
297 * libgccjit.map (LIBGCCJIT_ABI_24): New ABI tag.
298
2992022-04-12 Antoni Boucher <bouanto@zoho.com>
300
301 PR jit/104073
302 * docs/_build/texinfo/libgccjit.texi: Regenerate.
303 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_23): New ABI tag.
304 * docs/topics/contexts.rst: Add documentation for the new
305 function gcc_jit_context_set_bool_print_errors_to_stderr.
306 * jit-common.h: New enum value
307 (INNER_BOOL_OPTION_PRINT_ERRORS_TO_STDERR).
308 * jit-recording.cc: Handle the new option
309 INNER_BOOL_OPTION_PRINT_ERRORS_TO_STDERR.
310 * libgccjit.cc: New function
311 (gcc_jit_context_set_bool_print_errors_to_stderr).
312 * libgccjit.h: New function
313 (gcc_jit_context_set_bool_print_errors_to_stderr).
314 * libgccjit.map (LIBGCCJIT_ABI_23): New ABI tag.
315
3162022-04-12 Antoni Boucher <bouanto@zoho.com>
317
318 PR jit/104072
319 * docs/_build/texinfo/libgccjit.texi: Regenerate.
320 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_22): New ABI tag.
321 * docs/topics/expressions.rst: Add documentation for the
322 function gcc_jit_lvalue_set_register_name.
323 * jit-playback.h: New function (set_register_name).
324 * jit-recording.cc: New function (set_register_name) and add
325 support for register variables.
326 * jit-recording.h: New field (m_reg_name) and new function
327 (set_register_name).
328 * libgccjit.cc: New function (gcc_jit_lvalue_set_register_name).
329 * libgccjit.h: New function (gcc_jit_lvalue_set_register_name).
330 * libgccjit.map (LIBGCCJIT_ABI_22): New ABI tag.
331
3322022-04-12 Antoni Boucher <bouanto@zoho.com>
333
334 PR jit/104071
335 * docs/_build/texinfo/libgccjit.texi: Regenerate.
336 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_21): New ABI tag.
337 * docs/topics/expressions.rst: Add documentation for the
338 function gcc_jit_context_new_bitcast.
339 * jit-playback.cc: New function (new_bitcast).
340 * jit-playback.h: New function (new_bitcast).
341 * jit-recording.cc: New functions (new_bitcast,
342 bitcast::replay_into, bitcast::visit_children,
343 bitcast::make_debug_string, bitcast::write_reproducer).
344 * jit-recording.h: New class (bitcast) and new function
345 (new_bitcast, bitcast::replay_into, bitcast::visit_children,
346 bitcast::make_debug_string, bitcast::write_reproducer,
347 bitcast::get_precedence).
348 * libgccjit.cc: New function (gcc_jit_context_new_bitcast)
349 * libgccjit.h: New function (gcc_jit_context_new_bitcast)
350 * libgccjit.map (LIBGCCJIT_ABI_21): New ABI tag.
351
3522022-04-12 Antoni Boucher <bouanto@zoho.com>
353
354 PR target/95325
355 * docs/_build/texinfo/libgccjit.texi: Regenerate
356 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_20): New ABI tag.
357 * docs/topics/types.rst: Add documentation for the new types
358 GCC_JIT_TYPE_UINT8_T, GCC_JIT_TYPE_UINT16_T,
359 GCC_JIT_TYPE_UINT32_T, GCC_JIT_TYPE_UINT64_T,
360 GCC_JIT_TYPE_UINT128_T, GCC_JIT_TYPE_INT8_T, GCC_JIT_TYPE_INT16_T,
361 GCC_JIT_TYPE_INT32_T, GCC_JIT_TYPE_INT64_T, GCC_JIT_TYPE_INT128_T and
362 new functions (gcc_jit_compatible_types, gcc_jit_type_get_size).
363 * jit-builtins.cc: Add support for BT_UINT128.
364 * jit-common.h: Update the value of NUM_GCC_JIT_TYPES.
365 * jit-playback.cc: Add support for the sized integer types.
366 * jit-recording.cc: Add support for the sized integer types.
367 * jit-recording.h: Add support for comparing integer types
368 and new function (is_signed).
369 * libgccjit.cc (gcc_jit_compatible_types): New.
370 (gcc_jit_type_get_size) New.
371 * libgccjit.h: New enum variants for gcc_jit_types
372 (GCC_JIT_TYPE_UINT8_T, GCC_JIT_TYPE_UINT16_T,
373 GCC_JIT_TYPE_UINT32_T, GCC_JIT_TYPE_UINT64_T,
374 GCC_JIT_TYPE_UINT128_T, GCC_JIT_TYPE_INT8_T,
375 GCC_JIT_TYPE_INT16_T, GCC_JIT_TYPE_INT32_T,
376 GCC_JIT_TYPE_INT64_T, GCC_JIT_TYPE_INT128_T) and new functions
377 (gcc_jit_compatible_types, gcc_jit_type_get_size).
378 * libgccjit.map (LIBGCCJIT_ABI_20): New ABI tag.
379
80eb8ec6
GA
3802022-04-06 David Malcolm <dmalcolm@redhat.com>
381
382 PR jit/102824
383 * docs/_build/texinfo/factorial.png: Move to...
384 * docs/_build/texinfo/libgccjit-figures/factorial.png: ...here.
385 * docs/_build/texinfo/factorial1.png: Move to...
386 * docs/_build/texinfo/libgccjit-figures/factorial1.png: ...here.
387 * docs/_build/texinfo/sum-of-squares.png: Move to...
388 * docs/_build/texinfo/libgccjit-figures/sum-of-squares.png: ...here.
389 * docs/_build/texinfo/sum-of-squares1.png: Move to...
390 * docs/_build/texinfo/libgccjit-figures/sum-of-squares1.png: ...here.
391
8af4270d
GA
3922022-04-01 David Malcolm <dmalcolm@redhat.com>
393
394 * docs/topics/expressions.rst: Fix formatting.
395 * docs/topics/types.rst: Likewise.
396 * docs/_build/texinfo/libgccjit.texi: Regenerate
397
3982022-04-01 Petter Tomner <tomner@kth.se>
399
400 * docs/topics/compatibility.rst: Add 19 tag
401 * docs/topics/compilation.rst: Linking
402 * docs/topics/contexts.rst: Linking example
403 * docs/topics/expressions.rst: Fix formatting and dropped 's'
404
e6533e2e
GA
4052022-03-07 Jakub Jelinek <jakub@redhat.com>
406
407 * libgccjit.h: Fix up duplicated word issue in a comment.
408
fc829782
GA
4092022-01-17 Martin Liska <mliska@suse.cz>
410
411 * config-lang.in: Rename .c names to .cc.
412 * docs/_build/texinfo/libgccjit.texi: Likewise.
413 * docs/internals/index.rst: Likewise.
414 * jit-builtins.cc (builtins_manager::make_builtin_function): Likewise.
415 * jit-playback.cc (fold_const_var): Likewise.
416 (playback::context::~context): Likewise.
417 (new_field): Likewise.
418 (new_bitfield): Likewise.
419 (new_compound_type): Likewise.
420 (playback::compound_type::set_fields): Likewise.
421 (global_set_init_rvalue): Likewise.
422 (load_blob_in_ctor): Likewise.
423 (new_global_initialized): Likewise.
424 (double>): Likewise.
425 (new_string_literal): Likewise.
426 (as_truth_value): Likewise.
427 (build_call): Likewise.
428 (playback::context::build_cast): Likewise.
429 (new_array_access): Likewise.
430 (new_field_access): Likewise.
431 (dereference): Likewise.
432 (postprocess): Likewise.
433 (add_jump): Likewise.
434 (add_switch): Likewise.
435 (build_goto_operands): Likewise.
436 (playback::context::read_dump_file): Likewise.
437 (init_types): Likewise.
438 * jit-recording.cc (recording::context::get_int_type): Likewise.
439 * jit-recording.h: Likewise.
440 * libgccjit.cc (compatible_types): Likewise.
441 (gcc_jit_context_acquire): Likewise.
442 (gcc_jit_context_release): Likewise.
443 (gcc_jit_context_new_child_context): Likewise.
444 (gcc_jit_type_as_object): Likewise.
445 (gcc_jit_context_get_type): Likewise.
446 (gcc_jit_context_get_int_type): Likewise.
447 (gcc_jit_type_get_pointer): Likewise.
448 (gcc_jit_type_get_const): Likewise.
449 (gcc_jit_type_get_volatile): Likewise.
450 (gcc_jit_type_dyncast_array): Likewise.
451 (gcc_jit_type_is_bool): Likewise.
452 (gcc_jit_type_is_pointer): Likewise.
453 (gcc_jit_type_is_integral): Likewise.
454 (gcc_jit_type_dyncast_vector): Likewise.
455 (gcc_jit_type_is_struct): Likewise.
456 (gcc_jit_vector_type_get_num_units): Likewise.
457 (gcc_jit_vector_type_get_element_type): Likewise.
458 (gcc_jit_type_unqualified): Likewise.
459 (gcc_jit_type_dyncast_function_ptr_type): Likewise.
460 (gcc_jit_function_type_get_return_type): Likewise.
461 (gcc_jit_function_type_get_param_count): Likewise.
462 (gcc_jit_function_type_get_param_type): Likewise.
463 (gcc_jit_context_new_array_type): Likewise.
464 (gcc_jit_context_new_field): Likewise.
465 (gcc_jit_field_as_object): Likewise.
466 (gcc_jit_context_new_struct_type): Likewise.
467 (gcc_jit_struct_as_type): Likewise.
468 (gcc_jit_struct_set_fields): Likewise.
469 (gcc_jit_struct_get_field_count): Likewise.
470 (gcc_jit_context_new_union_type): Likewise.
471 (gcc_jit_context_new_function_ptr_type): Likewise.
472 (gcc_jit_param_as_rvalue): Likewise.
473 (gcc_jit_context_new_function): Likewise.
474 (gcc_jit_function_get_return_type): Likewise.
475 (gcc_jit_function_dump_to_dot): Likewise.
476 (gcc_jit_block_get_function): Likewise.
477 (gcc_jit_global_set_initializer_rvalue): Likewise.
478 (gcc_jit_rvalue_get_type): Likewise.
479 (gcc_jit_context_new_rvalue_from_int): Likewise.
480 (gcc_jit_context_one): Likewise.
481 (gcc_jit_context_new_rvalue_from_double): Likewise.
482 (gcc_jit_context_null): Likewise.
483 (gcc_jit_context_new_string_literal): Likewise.
484 (valid_binary_op_p): Likewise.
485 (gcc_jit_context_new_binary_op): Likewise.
486 (gcc_jit_context_new_comparison): Likewise.
487 (gcc_jit_context_new_call): Likewise.
488 (is_valid_cast): Likewise.
489 (gcc_jit_context_new_cast): Likewise.
490 (gcc_jit_object_get_context): Likewise.
491 (gcc_jit_object_get_debug_string): Likewise.
492 (gcc_jit_lvalue_access_field): Likewise.
493 (gcc_jit_rvalue_access_field): Likewise.
494 (gcc_jit_rvalue_dereference_field): Likewise.
495 (gcc_jit_rvalue_dereference): Likewise.
496 (gcc_jit_lvalue_get_address): Likewise.
497 (gcc_jit_lvalue_set_tls_model): Likewise.
498 (gcc_jit_lvalue_set_link_section): Likewise.
499 (gcc_jit_function_new_local): Likewise.
500 (gcc_jit_block_add_eval): Likewise.
501 (gcc_jit_block_add_assignment): Likewise.
502 (is_bool): Likewise.
503 (gcc_jit_block_end_with_conditional): Likewise.
504 (gcc_jit_block_add_comment): Likewise.
505 (gcc_jit_block_end_with_jump): Likewise.
506 (gcc_jit_block_end_with_return): Likewise.
507 (gcc_jit_block_end_with_void_return): Likewise.
508 (case_range_validator::case_range_validator): Likewise.
509 (case_range_validator::validate): Likewise.
510 (case_range_validator::get_wide_int): Likewise.
511 (gcc_jit_block_end_with_switch): Likewise.
512 (gcc_jit_context_set_str_option): Likewise.
513 (gcc_jit_context_set_int_option): Likewise.
514 (gcc_jit_context_set_bool_option): Likewise.
515 (gcc_jit_context_set_bool_allow_unreachable_blocks): Likewise.
516 (gcc_jit_context_set_bool_use_external_driver): Likewise.
517 (gcc_jit_context_add_command_line_option): Likewise.
518 (gcc_jit_context_add_driver_option): Likewise.
519 (gcc_jit_context_enable_dump): Likewise.
520 (gcc_jit_context_compile): Likewise.
521 (gcc_jit_context_compile_to_file): Likewise.
522 (gcc_jit_context_set_logfile): Likewise.
523 (gcc_jit_context_dump_reproducer_to_file): Likewise.
524 (gcc_jit_context_get_first_error): Likewise.
525 (gcc_jit_context_get_last_error): Likewise.
526 (gcc_jit_result_get_code): Likewise.
527 (gcc_jit_result_get_global): Likewise.
528 (gcc_jit_rvalue_set_bool_require_tail_call): Likewise.
529 (gcc_jit_type_get_aligned): Likewise.
530 (gcc_jit_type_get_vector): Likewise.
531 (gcc_jit_function_get_address): Likewise.
532 (gcc_jit_version_patchlevel): Likewise.
533 (gcc_jit_block_add_extended_asm): Likewise.
534 (gcc_jit_extended_asm_as_object): Likewise.
535 (gcc_jit_extended_asm_set_volatile_flag): Likewise.
536 (gcc_jit_extended_asm_set_inline_flag): Likewise.
537 (gcc_jit_extended_asm_add_output_operand): Likewise.
538 (gcc_jit_extended_asm_add_input_operand): Likewise.
539 (gcc_jit_extended_asm_add_clobber): Likewise.
540 * notes.txt: Likewise.
541
5422022-01-17 Martin Liska <mliska@suse.cz>
543
544 * dummy-frontend.c: Moved to...
545 * dummy-frontend.cc: ...here.
546 * jit-builtins.c: Moved to...
547 * jit-builtins.cc: ...here.
548 * jit-logging.c: Moved to...
549 * jit-logging.cc: ...here.
550 * jit-playback.c: Moved to...
551 * jit-playback.cc: ...here.
552 * jit-recording.c: Moved to...
553 * jit-recording.cc: ...here.
554 * jit-result.c: Moved to...
555 * jit-result.cc: ...here.
556 * jit-spec.c: Moved to...
557 * jit-spec.cc: ...here.
558 * jit-tempdir.c: Moved to...
559 * jit-tempdir.cc: ...here.
560 * jit-w32.c: Moved to...
561 * jit-w32.cc: ...here.
562 * libgccjit.c: Moved to...
563 * libgccjit.cc: ...here.
564
054e57e4
GA
5652021-12-28 Martin Liska <mliska@suse.cz>
566
567 * docs/_build/texinfo/libgccjit.texi: Replace http:// with https.
568 * docs/cp/index.rst: Likewise.
569 * docs/cp/intro/index.rst: Likewise.
570 * docs/cp/intro/tutorial01.rst: Likewise.
571 * docs/cp/intro/tutorial02.rst: Likewise.
572 * docs/cp/intro/tutorial03.rst: Likewise.
573 * docs/cp/intro/tutorial04.rst: Likewise.
574 * docs/cp/topics/asm.rst: Likewise.
575 * docs/cp/topics/compilation.rst: Likewise.
576 * docs/cp/topics/contexts.rst: Likewise.
577 * docs/cp/topics/expressions.rst: Likewise.
578 * docs/cp/topics/functions.rst: Likewise.
579 * docs/cp/topics/index.rst: Likewise.
580 * docs/cp/topics/locations.rst: Likewise.
581 * docs/cp/topics/objects.rst: Likewise.
582 * docs/cp/topics/types.rst: Likewise.
583 * docs/index.rst: Likewise.
584 * docs/internals/index.rst: Likewise.
585 * docs/intro/index.rst: Likewise.
586 * docs/intro/tutorial01.rst: Likewise.
587 * docs/intro/tutorial02.rst: Likewise.
588 * docs/intro/tutorial03.rst: Likewise.
589 * docs/intro/tutorial04.rst: Likewise.
590 * docs/intro/tutorial05.rst: Likewise.
591 * docs/topics/asm.rst: Likewise.
592 * docs/topics/compatibility.rst: Likewise.
593 * docs/topics/compilation.rst: Likewise.
594 * docs/topics/contexts.rst: Likewise.
595 * docs/topics/expressions.rst: Likewise.
596 * docs/topics/function-pointers.rst: Likewise.
597 * docs/topics/functions.rst: Likewise.
598 * docs/topics/index.rst: Likewise.
599 * docs/topics/locations.rst: Likewise.
600 * docs/topics/objects.rst: Likewise.
601 * docs/topics/performance.rst: Likewise.
602 * docs/topics/types.rst: Likewise.
603
7631a4d1
GA
6042021-12-20 Martin Liska <mliska@suse.cz>
605
606 * libgccjit.c (struct version_info): Rename to jit_version_info.
607 (struct jit_version_info): Likewise.
608 (gcc_jit_version_major): Likewise.
609 (gcc_jit_version_minor): Likewise.
610 (gcc_jit_version_patchlevel): Likewise.
611
9c6586bc
GA
6122021-12-14 Petter Tomner <tomner@kth.se>
613
614 * jit-common.h: New enum
615 * jit-playback.c : Folding an setting intitial
616 (global_new_decl) : Handle const global generation
617 (new_global) : New flag
618 (global_set_init_rvalue) : New
619 (new_ctor) : New
620 (new_global_initialized) : Flag
621 (as_truth_value) : Fold
622 (new_unary_op) : Fold
623 (new_binary_op) : Fold
624 (new_comparison) : Fold
625 (new_array_access) : Fold
626 (new_dereference) : Fold
627 (get_address) : Fold
628 * jit-playback.h :
629 (global_set_init_rvalue) : New
630 (new_ctor) : New
631 * jit-recording.c :
632 * jit-recording.h :
633 (new_global_init_rvalue) : New
634 (new_ctor) : New
635 (ctor) : New, inherits rvalue
636 (global_init_rvalue) : New, inherits memento
637 (type::is_union) : New
638 * libgccjit++.h : New entrypoints, see C-header
639 * libgccjit.c : See .h
640 * libgccjit.h : New entrypoints
641 (gcc_jit_context_new_array_constructor) : New
642 (gcc_jit_context_new_struct_constructor) : New
643 (gcc_jit_context_new_union_constructor) : New
644 (gcc_jit_global_set_initializer_rvalue) : New
645 (LIBGCCJIT_HAVE_CTORS) : New feuture macro
646 * libgccjit.map : New entrypoints added to ABI 19
647 * docs/topics/expressions.rst : Updated docs
648
c8dcf64b
GA
6492021-12-12 Antoni Boucher <bouanto@zoho.com>
650
651 PR target/100688
652 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_18): New ABI
653 tag.
654 * docs/topics/expressions.rst: Add documentation for the
655 function gcc_jit_lvalue_set_link_section.
656 * jit-playback.h: New function (set_link_section).
657 * jit-recording.c: New function (set_link_section) and
658 support for setting the link section.
659 * jit-recording.h: New function (set_link_section) and new
660 field m_link_section.
661 * libgccjit.c: New function (gcc_jit_lvalue_set_link_section).
662 * libgccjit.h: New function (gcc_jit_lvalue_set_link_section).
663 * libgccjit.map (LIBGCCJIT_ABI_18): New ABI tag.
664
e8decbe7
GA
6652021-12-12 Antoni Boucher <bouanto@zoho.com>
666
667 PR target/95415
668 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_17): New ABI
669 tag.
670 * docs/topics/expressions.rst: Add document for the function
671 gcc_jit_lvalue_set_tls_model.
672 * jit-playback.h: New function (set_tls_model).
673 * jit-recording.c: New function (set_tls_model), new
674 variables (tls_models and tls_model_enum_strings) and support
675 for setting the tls model.
676 * jit-recording.h: New function (set_tls_model) and new
677 field m_tls_model.
678 * libgccjit.c: New function (gcc_jit_lvalue_set_tls_model).
679 * libgccjit.h: New function (gcc_jit_lvalue_set_tls_model)
680 and new enum (gcc_jit_tls_model).
681 * libgccjit.map (LIBGCCJIT_ABI_17): New ABI tag.
682
6832021-12-11 Antoni Boucher <bouanto@zoho.com>
684
685 PR target/96066
686 PR target/96067
687 * jit-builtins.c: Implement missing types for builtins.
688 * jit-recording.c:: Allow sending a volatile const void * as
689 argument.
690 * jit-recording.h: New functions (is_volatile, is_const) and
691 allow comparing qualified types.
692
0bceef16
GA
6932021-12-10 David Malcolm <dmalcolm@redhat.com>
694
695 PR jit/103562
696 * jit-playback.c (gcc::jit::playback::context::new_function): Set
697 DECL_CONTEXT of the result_decl.
698
d62c8c74
GA
6992021-11-27 Petter Tomner <tomner@kth.se>
700
701 * libgccjit.c: %ld -> %zu
702
d9ca4b45
GA
7032021-11-24 Martin Liska <mliska@suse.cz>
704
705 * jit-playback.c (function): Initialize m_blocks vector.
706
f658f1d7
GA
7072021-11-20 Antoni Boucher <bouanto@zoho.com>
708
709 PR target/96889
710 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_16): New ABI tag.
711 * docs/topics/functions.rst: Add documentation for the
712 functions gcc_jit_function_get_return_type and
713 gcc_jit_function_get_param_count
714 * docs/topics/types.rst: Add documentation for the functions
715 gcc_jit_function_type_get_return_type,
716 gcc_jit_function_type_get_param_count,
717 gcc_jit_function_type_get_param_type,
718 gcc_jit_type_unqualified, gcc_jit_type_dyncast_array,
719 gcc_jit_type_is_bool,
720 gcc_jit_type_dyncast_function_ptr_type,
721 gcc_jit_type_is_integral, gcc_jit_type_is_pointer,
722 gcc_jit_type_dyncast_vector,
723 gcc_jit_vector_type_get_element_type,
724 gcc_jit_vector_type_get_num_units,
725 gcc_jit_struct_get_field, gcc_jit_type_is_struct,
726 and gcc_jit_struct_get_field_count
727 * libgccjit.c:
728 (gcc_jit_function_get_return_type, gcc_jit_function_get_param_count,
729 gcc_jit_function_type_get_return_type,
730 gcc_jit_function_type_get_param_count,
731 gcc_jit_function_type_get_param_type, gcc_jit_type_unqualified,
732 gcc_jit_type_dyncast_array, gcc_jit_type_is_bool,
733 gcc_jit_type_dyncast_function_ptr_type, gcc_jit_type_is_integral,
734 gcc_jit_type_is_pointer, gcc_jit_type_dyncast_vector,
735 gcc_jit_vector_type_get_element_type,
736 gcc_jit_vector_type_get_num_units, gcc_jit_struct_get_field,
737 gcc_jit_type_is_struct, gcc_jit_struct_get_field_count): New
738 functions.
739 (struct gcc_jit_function_type, struct gcc_jit_vector_type):
740 New types.
741 * libgccjit.h:
742 (gcc_jit_function_get_return_type, gcc_jit_function_get_param_count,
743 gcc_jit_function_type_get_return_type,
744 gcc_jit_function_type_get_param_count,
745 gcc_jit_function_type_get_param_type, gcc_jit_type_unqualified,
746 gcc_jit_type_dyncast_array, gcc_jit_type_is_bool,
747 gcc_jit_type_dyncast_function_ptr_type, gcc_jit_type_is_integral,
748 gcc_jit_type_is_pointer, gcc_jit_type_dyncast_vector,
749 gcc_jit_vector_type_get_element_type,
750 gcc_jit_vector_type_get_num_units, gcc_jit_struct_get_field,
751 gcc_jit_type_is_struct, gcc_jit_struct_get_field_count): New
752 function declarations.
753 (struct gcc_jit_function_type, struct gcc_jit_vector_type):
754 New types.
755 * jit-recording.h: New functions (is_struct and is_vector)
756 * libgccjit.map (LIBGCCJIT_ABI_16): New ABI tag.
757
af2852b9
GA
7582021-11-12 David Malcolm <dmalcolm@redhat.com>
759
760 PR jit/103199
761 * docs/examples/tut04-toyvm/toyvm.c (toyvm_function_compile):
762 Increase size of buffer.
763 * docs/examples/tut04-toyvm/toyvm.cc
764 (compilation_state::create_function): Likewise.
765
a26206ec
GA
7662021-09-10 Petter Tomner <tomner@kth.se>
767
768 * jit-playback.c: Moved global var processing to after loc handling.
769 Setting TYPE_NAME for fundamental types.
770 Using common functions for finalizing globals.
771 * jit-playback.h: New method init_types().
772 Changed get_tree_node_for_type() to method.
773
b57fba5e
GA
7742021-08-19 Iain Sandoe <iain@sandoe.co.uk>
775
776 * docs/examples/tut04-toyvm/toyvm.c: Include jit-dejagnu.h.
777 * docs/examples/tut04-toyvm/toyvm.cc: Likewise.
778 * jit-dejagnu.h: New file, imported from dejagnu-1.6.2 and
779 patched for this application.
780
6e529985
GA
7812021-08-18 Iain Sandoe <iain@sandoe.co.uk>
782
783 PR jit/100613
784 * Make-lang.in: Provide clauses for Darwin hosts.
785
bdea84c4
GA
7862021-07-18 Antoni Boucher <bouanto@zoho.com>
787
788 PR target/95498
789 * jit-playback.c (convert): Add support to handle truncation and
790 extension in the convert function.
791
65f32e5d
GA
7922021-05-19 Martin Liska <mliska@suse.cz>
793
794 PR testsuite/100658
795 * libgccjit.c (gcc_jit_context_new_function): Fix typos.
796
8bf52ffa
GA
7972021-03-24 Matthias Klose <doko@ubuntu.com>
798
799 * Make-lang.in (jit.sphinx.html, jit.sphinx.pdf): Use $(mkinstalldirs),
800 (jit.install-headers): Depend on installdirs.
801
50352c6c
GA
8022021-02-19 David Malcolm <dmalcolm@redhat.com>
803
804 PR jit/99126
805 * jit-builtins.c
806 (gcc::jit::builtins_manager::get_builtin_function_by_id):
807 Update assertion to reject BUILT_IN_NONE.
808 (gcc::jit::builtins_manager::ensure_optimization_builtins_exist):
809 New.
810 * jit-builtins.h
811 (gcc::jit::builtins_manager::ensure_optimization_builtins_exist):
812 New decl.
813 * jit-playback.c (gcc::jit::playback::context::replay): Call it.
814 Remove redundant conditional on bm.
815
5fff80fd
GA
8162021-01-14 David Malcolm <dmalcolm@redhat.com>
817
818 * docs/cp/index.rst: Remove "Alpha" warning.
819 * docs/index.rst: Likewise.
820 * docs/_build/texinfo/libgccjit.texi: Regenerate
821
360258da
GA
8222020-11-25 Martin Sebor <msebor@redhat.com>
823
824 PR bootstrap/94982
825 * jit-recording.c (recording::function::dump_to_dot): Avoid
826 -Wformat-diag.
827 (recording::block::dump_to_dot): Same.
828
82e5048e
GA
8292020-11-20 Jakub Jelinek <jakub@redhat.com>
830
831 PR other/97911
832 * Make-lang.in (jit.serial): Change from goal to a
833 variable.
834 (.PHONY): Drop jit.serial and jit.prev.
835 ($(LIBGCCJIT_FILENAME)): Depend on $(jit.serial) rather than
836 jit.serial.
837
25bb75f8
GA
8382020-11-18 Jakub Jelinek <jakub@redhat.com>
839
840 * Make-lang.in (jit.serial): New goal.
841 (.PHONY): Add jit.serial jit.prev.
842 ($(LIBGCCJIT_FILENAME)): Depend on jit.prev. Call LINK_PROGRESS.
843
a5a11525
GA
8442020-11-12 David Malcolm <dmalcolm@redhat.com>
845
846 PR jit/87291
847 * docs/cp/topics/asm.rst: New file.
848 * docs/cp/topics/index.rst (Topic Reference): Add it.
849 * docs/topics/asm.rst: New file.
850 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_15): New.
851 * docs/topics/functions.rst (Statements): Add link to extended
852 asm.
853 * docs/topics/index.rst (Topic Reference): Add asm.rst.
854 * docs/topics/objects.rst: Add gcc_jit_extended_asm to ASCII art.
855 * docs/_build/texinfo/Makefile: Regenerate.
856 * docs/_build/texinfo/libgccjit.texi: Regenerate.
857 * jit-common.h (gcc::jit::recording::extended_asm): New forward
858 decl.
859 (gcc::jit::recording::top_level_asm): Likewise.
860 * jit-playback.c: Include "stmt.h".
861 (build_string): New.
862 (gcc::jit::playback::context::new_string_literal): Disambiguate
863 build_string call.
864 (gcc::jit::playback::context::add_top_level_asm): New.
865 (build_operand_chain): New.
866 (build_clobbers): New.
867 (build_goto_operands): New.
868 (gcc::jit::playback::block::add_extended_asm): New.
869 * jit-playback.h (gcc::jit::playback::context::add_top_level_asm):
870 New decl.
871 (struct gcc::jit::playback::asm_operand): New struct.
872 (gcc::jit::playback::block::add_extended_asm): New decl.
873 * jit-recording.c (gcc::jit::recording::context::dump_to_file):
874 Dump top-level asms.
875 (gcc::jit::recording::context::add_top_level_asm): New.
876 (gcc::jit::recording::block::add_extended_asm): New.
877 (gcc::jit::recording::block::end_with_extended_asm_goto): New.
878 (gcc::jit::recording::asm_operand::asm_operand): New.
879 (gcc::jit::recording::asm_operand::print): New.
880 (gcc::jit::recording::asm_operand::make_debug_string): New.
881 (gcc::jit::recording::output_asm_operand::write_reproducer): New.
882 (gcc::jit::recording::output_asm_operand::print): New.
883 (gcc::jit::recording::input_asm_operand::write_reproducer): New.
884 (gcc::jit::recording::input_asm_operand::print): New.
885 (gcc::jit::recording::extended_asm::add_output_operand): New.
886 (gcc::jit::recording::extended_asm::add_input_operand): New.
887 (gcc::jit::recording::extended_asm::add_clobber): New.
888 (gcc::jit::recording::extended_asm::replay_into): New.
889 (gcc::jit::recording::extended_asm::make_debug_string): New.
890 (gcc::jit::recording::extended_asm::write_flags): New.
891 (gcc::jit::recording::extended_asm::write_clobbers): New.
892 (gcc::jit::recording::extended_asm_simple::write_reproducer): New.
893 (gcc::jit::recording::extended_asm::maybe_populate_playback_blocks):
894 New.
895 (gcc::jit::recording::extended_asm_goto::extended_asm_goto): New.
896 (gcc::jit::recording::extended_asm_goto::replay_into): New.
897 (gcc::jit::recording::extended_asm_goto::write_reproducer): New.
898 (gcc::jit::recording::extended_asm_goto::get_successor_blocks):
899 New.
900 (gcc::jit::recording::extended_asm_goto::maybe_print_gotos): New.
901 (gcc::jit::recording::extended_asm_goto::maybe_populate_playback_blocks):
902 New.
903 (gcc::jit::recording::top_level_asm::top_level_asm): New.
904 (gcc::jit::recording::top_level_asm::replay_into): New.
905 (gcc::jit::recording::top_level_asm::make_debug_string): New.
906 (gcc::jit::recording::top_level_asm::write_to_dump): New.
907 (gcc::jit::recording::top_level_asm::write_reproducer): New.
908 * jit-recording.h
909 (gcc::jit::recording::context::add_top_level_asm): New decl.
910 (gcc::jit::recording::context::m_top_level_asms): New field.
911 (gcc::jit::recording::block::add_extended_asm): New decl.
912 (gcc::jit::recording::block::end_with_extended_asm_goto): New
913 decl.
914 (gcc::jit::recording::asm_operand): New class.
915 (gcc::jit::recording::output_asm_operand): New class.
916 (gcc::jit::recording::input_asm_operand): New class.
917 (gcc::jit::recording::extended_asm): New class.
918 (gcc::jit::recording::extended_asm_simple): New class.
919 (gcc::jit::recording::extended_asm_goto): New class.
920 (gcc::jit::recording::top_level_asm): New class.
921 * libgccjit++.h (gccjit::extended_asm): New forward decl.
922 (gccjit::context::add_top_level_asm): New.
923 (gccjit::block::add_extended_asm): New.
924 (gccjit::block::end_with_extended_asm_goto): New.
925 (gccjit::extended_asm): New class.
926 (gccjit::extended_asm::extended_asm): New ctors.
927 (gccjit::extended_asm::set_volatile_flag): New.
928 (gccjit::extended_asm::set_inline_flag): New.
929 (gccjit::extended_asm::add_output_operand): New.
930 (gccjit::extended_asm::add_input_operand): New.
931 (gccjit::extended_asm::add_clobber): New.
932 (gccjit::extended_asm::get_inner_extended_asm): New.
933 * libgccjit.c (struct gcc_jit_extended_asm): New.
934 (jit_error): Make "loc" param take a gcc::jit::recording::location *
935 rather than a gcc_jit_location *.
936 (gcc_jit_block_add_extended_asm): New entrypoint.
937 (gcc_jit_block_end_with_extended_asm_goto): New entrypoint.
938 (gcc_jit_extended_asm_as_object): New entrypoint.
939 (gcc_jit_extended_asm_set_volatile_flag): New entrypoint.
940 (gcc_jit_extended_asm_set_inline_flag): New entrypoint.
941 (gcc_jit_extended_asm_add_output_operand): New entrypoint.
942 (gcc_jit_extended_asm_add_clobber): New entrypoint.
943 (gcc_jit_context_add_top_level_asm): New entrypoint.
944 * libgccjit.h: Add gcc_jit_extended_asm to ASCII art.
945 (gcc_jit_extended_asm): New typedef.
946 (LIBGCCJIT_HAVE_ASM_STATEMENTS): New define.
947 (gcc_jit_block_add_extended_asm): New entrypoint.
948 (gcc_jit_block_end_with_extended_asm_goto): New entrypoint.
949 (gcc_jit_extended_asm_as_object): New entrypoint.
950 (gcc_jit_extended_asm_set_volatile_flag): New entrypoint.
951 (gcc_jit_extended_asm_set_inline_flag): New entrypoint.
952 (gcc_jit_extended_asm_add_output_operand): New entrypoint.
953 (gcc_jit_extended_asm_add_input_operand): New entrypoint.
954 (gcc_jit_extended_asm_add_clobber): New entrypoint.
955 (gcc_jit_context_add_top_level_asm): New entrypoint.
956 * libgccjit.map (LIBGCCJIT_ABI_15): New.
957
9582020-11-12 David Malcolm <dmalcolm@redhat.com>
959
960 * jit-recording.c (recording::context::new_string): Add "escaped"
961 param and use it when creating the new recording::string instance.
962 (recording::string::string): Add "escaped" param and use it to
963 initialize m_escaped.
964 (recording::string::make_debug_string): Replace check that first
965 char is double-quote with use of m_escaped. Fix escaping of
966 '\t' and '\n'. Set "escaped" on the result.
967 * jit-recording.h (recording::context::new_string): Add "escaped"
968 param.
969 (recording::string::string): Add "escaped" param.
970 (recording::string::m_escaped): New field.
971
9722020-11-12 David Malcolm <dmalcolm@redhat.com>
973
974 * libgccjit.h: Fix typo in comment.
975
50a71cd0
GA
9762020-09-14 Andrea Corallo <andrea.corallo@arm.com>
977
978 * docs/_build/texinfo/libgccjit.texi: Regenerate.
979
ac35c090
GA
9802020-09-11 Andrea Corallo <andrea.corallo@arm.com>
981
982 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_14): New ABI tag.
983 * docs/topics/expressions.rst (gcc_jit_global_set_initializer):
984 Document new entry point in section 'Global variables'.
985 * jit-playback.c (global_new_decl, global_finalize_lvalue): New
986 method.
987 (playback::context::new_global): Make use of global_new_decl,
988 global_finalize_lvalue.
989 (load_blob_in_ctor): New template function in use by the
990 following.
991 (playback::context::new_global_initialized): New method.
992 * jit-playback.h (class context): Decl 'new_global_initialized',
993 'global_new_decl', 'global_finalize_lvalue'.
994 (lvalue::set_initializer): Add implementation.
995 * jit-recording.c (recording::memento_of_get_pointer::get_size)
996 (recording::memento_of_get_type::get_size): Add implementation.
997 (recording::global::write_initializer_reproducer): New function in
998 use by 'recording::global::write_reproducer'.
999 (recording::global::replay_into)
1000 (recording::global::write_to_dump)
1001 (recording::global::write_reproducer): Handle
1002 initialized case.
1003 * jit-recording.h (class type): Decl 'get_size' and
1004 'num_elements'.
1005 * libgccjit++.h (class lvalue): Declare new 'set_initializer'
1006 method.
1007 (class lvalue): Decl 'is_global' and 'set_initializer'.
1008 (class global) Decl 'write_initializer_reproducer'. Add
1009 'm_initializer', 'm_initializer_num_bytes' fields. Implement
1010 'set_initializer'. Add a destructor to free 'm_initializer'.
1011 * libgccjit.c (gcc_jit_global_set_initializer): New function.
1012 * libgccjit.h (gcc_jit_global_set_initializer): New function
1013 declaration.
1014 * libgccjit.map (LIBGCCJIT_ABI_14): New ABI tag.
1015
8f7ea26a
GA
10162020-08-28 Martin Sebor <msebor@redhat.com>
1017
1018 * jit-recording.c (recording::switch_::make_debug_string): Add argument
1019 to a call.
1020
e769f970
GA
10212020-08-22 Andrea Corallo <andrea.corallo@arm.com>
1022
1023 * libgccjit.c:
1024 (gcc_jit_context_new_rvalue_from_int)
1025 (gcc_jit_context_new_rvalue_from_long)
1026 (gcc_jit_context_new_rvalue_from_double)
1027 (gcc_jit_context_new_rvalue_from_ptr): Update function heading
1028 comments.
1029
6fb94d67
GA
10302020-06-16 Nicolas Bértolo <nicolasbertolo@gmail.com>
1031
1032 * Make-lang.in: Always define version, minor and release
1033 numbers. Create the Windows shared library as
1034 libgccjit-$(LIBGCCJIT_VERSION_NUM).dll.
1035
9a5b7438
GA
10362020-06-03 David Malcolm <dmalcolm@redhat.com>
1037
1038 PR jit/95306
1039 * jit-builtins.c (builtins_manager::make_primitive_type):
1040 Implement BT_CONST_VOLATILE_PTR.
1041
a9312a79
GA
10422020-06-02 David Malcolm <dmalcolm@redhat.com>
1043
1044 PR jit/95426
1045 * dummy-frontend.c: Include "options.h", "stringpool.h", and
1046 "attribs.h".
1047 (ATTR_EXCL): New, copied from lto/lto-lang.c.
1048 (attr_noreturn_exclusions): Likewise.
1049 (attr_returns_twice_exclusions): Likewise.
1050 (attr_const_pure_exclusions): Likewise.
1051 (jit_attribute_table): Likewise, copied from lto_attribute_table.
1052 (jit_format_attribute_table): Likewise, copied from
1053 lto_format_attribute_table.
1054 (handle_noreturn_attribute): New, copied from lto/lto-lang.c.
1055 (handle_leaf_attribute): Likewise.
1056 (handle_const_attribute): Likewise.
1057 (handle_malloc_attribute): Likewise.
1058 (handle_pure_attribute): Likewise.
1059 (handle_novops_attribute): Likewise.
1060 (get_nonnull_operand): Likewise.
1061 (handle_nonnull_attribute): Likewise.
1062 (handle_nothrow_attribute): Likewise.
1063 (handle_sentinel_attribute): Likewise.
1064 (handle_type_generic_attribute): Likewise.
1065 (handle_transaction_pure_attribute): Likewise.
1066 (handle_returns_twice_attribute): Likewise.
1067 (handle_patchable_function_entry_attribute): Likewise.
1068 (ignore_attribute): Likewise.
1069 (handle_format_attribute): Likewise.
1070 (handle_format_arg_attribute): Likewise.
1071 (handle_fnspec_attribute): Likewise.
1072 (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Define.
1073 (LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Define.
1074
53ffb43a
GA
10752020-05-28 Nicolas Bértolo <nicolasbertolo@gmail.com>
1076
1077 * Make-lang.in: Remove extra slash. Build libgccjit.dll and its
1078 import library in Windows.
1079 * config-lang.in: Update comment about --enable-host-shared.
1080 * jit-w32.h: New file.
1081 * jit-w32.c: New file.
1082 (print_last_error): New function that prints the error
1083 string corresponding to GetLastError().
1084 (get_TOKEN_USER_current_user): Helper function used for getting
1085 the SID belonging to the current user.
1086 (create_directory_for_current_user): Helper function to create
1087 a directory with permissions such that only the current user can
1088 access it.
1089 (win_mkdtemp): Create a temporary directory using Windows APIs.
1090 * jit-playback.c: Do not chmod files in Windows. Use LoadLibrary,
1091 FreeLibrary and GetProcAddress instead of libdl.
1092 * jit-result.h, jit-result.c: Introduce result::handle_t to
1093 abstract over the types used for dynamic library handles.
1094 * jit-tempdir.c: Do not use mkdtemp() in Windows, use
1095 win_mkdtemp().
1096
61f3b605
GA
10972020-05-27 David Malcolm <dmalcolm@redhat.com>
1098
1099 PR jit/95314
1100 * dummy-frontend.c (LANG_HOOKS_DEEP_UNSHARING): Define to be true.
1101 * jit-playback.h (gcc::jit::playback::rvalue): Mark tree node with
1102 TREE_VISITED.
1103
11042020-05-27 Tom Tromey <tromey@gcc.gnu.org>
1105
1106 PR jit/91330
1107 * docs/conf.py (texinfo_documents): Set description.
1108 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1109
c3a4169b
GA
11102020-05-26 David Malcolm <dmalcolm@redhat.com>
1111
1112 PR jit/95306
1113 * docs/topics/functions.rst
1114 (gcc_jit_context_get_builtin_function): Document.
1115 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1116 * dummy-frontend.c (jit_langhook_global_bindings_p): Remove
1117 gcc_unreachable.
1118 * jit-builtins.c (type_names): New array.
1119 (get_string_for_type_id): New function.
1120 (gcc::jit::builtins_manager::make_primitive_type): Show name of
1121 type in error messages. Update cases to reflect the order in
1122 builtin-types.def. Implement cases for BT_INT8, BT_INT16,
1123 BT_UINT8, BT_CONST_PTR, BT_VOLATILE_PTR, BT_INT_PTR, BT_FLOAT_PTR,
1124 BT_CONST_DOUBLE_PTR, BT_SIZE, BT_CONST_SIZE.
1125
11262020-05-26 David Malcolm <dmalcolm@redhat.com>
1127
1128 * docs/topics/compatibility.rst: Fix underline.
1129 Fix missing labels.
1130 * docs/topics/types.rst: Fix missing blank line.
1131 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1132
11332020-05-26 David Malcolm <dmalcolm@redhat.com>
1134
1135 PR jit/95296
1136 * docs/topics/expressions.rst (Unary Operations): Document that
1137 result_type of gcc_jit_context_new_unary_op must be a numeric type.
1138 (Binary Operations): Likewise for gcc_jit_context_new_binary_op.
1139 (Global variables): Document that "type" of
1140 gcc_jit_context_new_global must be non-`void`.
1141 * docs/topics/function-pointers.rst
1142 (gcc_jit_context_new_function_ptr_type): Document that the
1143 param_types must be non-void, but that return_type may be.
1144 * docs/topics/functions.rst (Params): Document that
1145 gcc_jit_context_new_param's type must be non-void.
1146 (Functions): Likewise for gcc_jit_function_new_local.
1147 * docs/topics/types.rst (gcc_jit_context_new_array_type): Document
1148 that the type must be non-void.
1149 (gcc_jit_context_new_field): Likewise.
1150 * docs/_build/texinfo/Makefile: Regenerate.
1151 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1152 * libgccjit.c (gcc_jit_context_new_array_type): Fail if
1153 element_type is void.
1154 (gcc_jit_context_new_field): Likewise for "type".
1155 (gcc_jit_context_new_function_ptr_type): Likewise for each
1156 element of param_types.
1157 (gcc_jit_context_new_param): Likewise for "type".
1158 (gcc_jit_context_new_global): Likewise.
1159 (gcc_jit_function_new_local): Likewise.
1160 (gcc_jit_type_get_aligned): Likewise.
1161
63b2923d
A
11622020-03-31 Andrea Corallo <andrea.corallo@arm.com>
1163 David Malcolm <dmalcolm@redhat.com>
1164
1165 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_13): New ABI tag
1166 plus add version paragraph.
1167 * libgccjit++.h (namespace gccjit::version): Add new namespace.
1168 * libgccjit.c (gcc_jit_version_major, gcc_jit_version_minor)
1169 (gcc_jit_version_patchlevel): New functions.
1170 * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_version): New macro.
1171 (gcc_jit_version_major, gcc_jit_version_minor)
1172 (gcc_jit_version_patchlevel): New functions.
1173 * libgccjit.map (LIBGCCJIT_ABI_13) New ABI tag.
1174
0cd55f9d
A
11752020-03-23 Andrea Corallo <andrea.corallo@arm.com>
1176
1177 * jit-playback.h
1178 (gcc::jit::playback::context m_recording_ctxt): Remove
1179 m_char_array_type_node field.
1180 * jit-playback.c
1181 (playback::context::context) Remove m_char_array_type_node from member
1182 initializer list.
1183 (playback::context::new_string_literal) Fix logic to handle string
1184 length > 200.
1185
8d9254fc
JJ
11862020-01-01 Jakub Jelinek <jakub@redhat.com>
1187
1188 Update copyright years.
1189
70ce1ab9
JB
11902019-11-29 Julian Brown <julian@codesourcery.com>
1191
1192 * jit-builtins.c (BT_DFLOAT32_PTR, BT_DFLOAT64_PTR, BT_DFLOAT128_PTR):
1193 Remove commented-out cases.
1194
56e04525
DM
11952019-11-20 David Malcolm <dmalcolm@redhat.com>
1196
1197 PR jit/92483
1198 * jit-playback.c (gcc::jit::playback::context::make_fake_args):
1199 Update GCC_JIT_BOOL_OPTION_SELFCHECK_GC for new --param syntax.
1200
4d732405
RS
12012019-08-13 Richard Sandiford <richard.sandiford@arm.com>
1202
1203 PR middle-end/91421
1204 * jit-playback.c (new_function): Use set_decl_built_in_function.
1205
ab20d992 12062019-07-22 Andrea Corallo <andrea.corallo@arm.com>
9afb91b2
AC
1207
1208 * jit-recording.c (unary_op_reproducer_strings): Make it extern.
1209 (binary_op_reproducer_strings): Likewise.
1210 * jit-recording.h (unary_op_reproducer_strings): Likewise.
1211 (binary_op_reproducer_strings): Likewise.
1212 * libgccjit.c (gcc_jit_context_new_unary_op): Check result_type to be a
1213 numeric type.
1214 * libgccjit.c (gcc_jit_context_new_binary_op): Improve error message.
1215
ab20d992 12162019-07-04 Andrea Corallo <andrea.corallo@arm.com>
2b442504
AC
1217
1218 * libgccjit.c (gcc_jit_context_new_binary_op): Check result_type to be a
1219 numeric type.
1220
ab20d992 12212019-07-04 Andrea Corallo <andrea.corallo@arm.com>
ee118c14
AC
1222
1223 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_12): New ABI tag.
1224 * docs/topics/types.rst: Add gcc_jit_context_new_bitfield.
1225 * jit-common.h (namespace recording): Add class bitfield.
1226 * jit-playback.c:
1227 (DECL_C_BIT_FIELD, SET_DECL_C_BIT_FIELD): Add macros.
1228 (playback::context::new_bitfield): New method.
1229 (playback::compound_type::set_fields): Add bitfield support.
1230 (playback::lvalue::mark_addressable): Was jit_mark_addressable make this
1231 a method of lvalue plus return a bool to communicate success.
1232 (playback::lvalue::get_address): Check for jit_mark_addressable return
1233 value.
1234 * jit-playback.h (new_bitfield): New method.
1235 (class bitfield): New class.
1236 (class lvalue): Add jit_mark_addressable method.
1237 * jit-recording.c (recording::context::new_bitfield): New method.
1238 (recording::bitfield::replay_into): New method.
1239 (recording::bitfield::write_to_dump): Likewise.
1240 (recording::bitfield::make_debug_string): Likewise.
1241 (recording::bitfield::write_reproducer): Likewise.
1242 * jit-recording.h (class context): Add new_bitfield method.
1243 (class field): Make it derivable by class bitfield.
1244 (class bitfield): Add new class.
1245 * libgccjit++.h (class context): Add new_bitfield method.
1246 * libgccjit.c (struct gcc_jit_bitfield): New structure.
1247 (gcc_jit_context_new_bitfield): New function.
1248 * libgccjit.h
1249 (LIBGCCJIT_HAVE_gcc_jit_context_new_bitfield) New macro.
1250 (gcc_jit_context_new_bitfield): New function.
1251 * libgccjit.map (LIBGCCJIT_ABI_12) New ABI tag.
1252
36a3a7a3
JJ
12532019-03-21 Jakub Jelinek <jakub@redhat.com>
1254
1255 * jit-recording.c (reproducer::m_set_identifiers): Use false as Lazy
1256 in hash_set template param.
1257
ab20d992 12582019-02-05 Andrea Corallo <andrea.corallo@arm.com>
216090cc
AC
1259
1260 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_11): New ABI tag.
1261 * docs/topics/contexts.rst (Additional driver options): New
1262 section.
1263 * jit-playback.c (invoke_driver): Add call to append_driver_options.
1264 * jit-recording.c: Within namespace gcc::jit...
1265 (recording::context::~context): Free the optnames within
1266 m_driver_options.
1267 (recording::context::add_driver_option): New method.
1268 (recording::context::append_driver_options): New method.
1269 (recording::context::dump_reproducer_to_file): Add driver
1270 options.
1271 * jit-recording.h: Within namespace gcc::jit...
1272 (recording::context::add_driver_option): New method.
1273 (recording::context::append_driver_options): New method.
1274 (recording::context::m_driver_options): New field.
1275 * libgccjit++.h (gccjit::context::add_driver_option): New
1276 method.
1277 * libgccjit.c (gcc_jit_context_add_driver_option): New API
1278 entrypoint.
1279 * libgccjit.h (gcc_jit_context_add_driver_option): New API
1280 entrypoint.
1281 (LIBGCCJIT_HAVE_gcc_jit_context_add_driver_option): New
1282 macro.
1283 * libgccjit.map (LIBGCCJIT_ABI_11): New ABI tag.
1284
a5544970
JJ
12852019-01-01 Jakub Jelinek <jakub@redhat.com>
1286
1287 Update copyright years.
1288
478dd60d
DM
12892018-11-15 David Malcolm <dmalcolm@redhat.com>
1290
1291 PR other/19165
1292 * dummy-frontend.c (jit_begin_diagnostic): Add diagnostic_t param.
1293
620e594b
DM
12942018-11-13 David Malcolm <dmalcolm@redhat.com>
1295
1296 * jit-playback.c: Replace "source_location" with "location_t".
1297
033eb567
DM
12982018-10-17 David Malcolm <dmalcolm@redhat.com>
1299
1300 * Make-lang.in (selftest-jit): New.
1301
98086b2b
ML
13022018-06-28 Martin Liska <mliska@suse.cz>
1303
1304 * jit-playback.c: Include opt-suggestions.h.
1305
3de37a5d
ML
13062018-06-28 Martin Liska <mliska@suse.cz>
1307
1308 * jit-playback.c (class auto_argvec): Moved to vec.h.
1309 (auto_argvec::~auto_argvec): Likewise.
1310 (compile): Use the renamed name.
1311 (invoke_driver): Likewise.
1312
ea143da7
RO
13132018-03-21 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
1314
1315 PR jit/84288
1316 * Make-lang.in ($(LIBGCCJIT_FILENAME)): Add $(EXTRA_GCC_LIBS).
1317
deb3da39
DM
13182018-03-09 David Malcolm <dmalcolm@redhat.com>
1319 Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>
1320
1321 PR jit/64089
1322 PR jit/84288
1323 * Make-lang.in (COMMA): New.
1324 (LIBGCCJIT_VERSION_SCRIPT_OPTION): New.
1325 (LIBGCCJIT_SONAME_OPTION): New.
1326 (jit): Move --version-script and -soname linker options to the
1327 above.
1328
9aba6f77
DM
13292018-01-25 David Malcolm <dmalcolm@redhat.com>
1330
1331 PR jit/81672
1332 * jit-recording.h (gcc::jit::recording::union_): Remove fields
1333 "m_loc" and "m_name".
1334
85ec4feb
JJ
13352018-01-03 Jakub Jelinek <jakub@redhat.com>
1336
1337 Update copyright years.
1338
01512446
JJ
13392017-12-19 Jakub Jelinek <jakub@redhat.com>
1340
1341 * jit-playback.c (get_type, playback::compile_to_file::copy_file,
1342 playback::context::acquire_mutex): Replace Yoda conditions with
1343 typical order conditions.
1344 * libgccjit.c (gcc_jit_context_new_struct_type,
1345 gcc_jit_struct_set_fields, gcc_jit_context_new_union_type,
1346 gcc_jit_context_new_function, gcc_jit_timer_pop): Likewise.
1347 * jit-builtins.c (matches_builtin): Likewise.
1348 * jit-recording.c (recording::compound_type::set_fields,
1349 recording::fields::write_reproducer, recording::rvalue::set_scope,
1350 recording::function::validate): Likewise.
1351 * jit-logging.c (logger::decref): Likewise.
1352
5de73c05
JJ
13532017-11-30 Jakub Jelinek <jakub@redhat.com>
1354
1355 * jit-recording.c
1356 (recording::memento_of_new_rvalue_from_const <long>::write_reproducer):
1357 Use ; instead of ;;.
1358
9e851845
JJ
13592017-11-28 Jakub Jelinek <jakub@redhat.com>
1360
1361 * jit-playback.c (add_switch): Build SWITCH_EXPR using build2 instead
1362 of build3. Formatting fixes. Adjust funciton comment.
1363
120e92fc
TV
13642017-11-23 Tom de Vries <tom@codesourcery.com>
1365
1366 * libgccjit.c (RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE): Wrap in
1367 JIT_{BEGIN,END}_STMT.
1368
77f4ead7
DM
13692017-10-31 David Malcolm <dmalcolm@redhat.com>
1370
1371 * docs/internals/index.rst (Running the test suite): Document
1372 PRESERVE_EXECUTABLES.
1373 (Running under valgrind): Add markup to RUN_UNDER_VALGRIND.
1374 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1375
6069fe72
DM
13762017-10-04 David Malcolm <dmalcolm@redhat.com>
1377
1378 * docs/cp/topics/expressions.rst (Vector expressions): New
1379 section.
1380 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_10): New ABI tag.
1381 * docs/topics/expressions.rst (Vector expressions): New section.
1382 * docs/topics/types.rst (gcc_jit_type_get_vector): Add link to
1383 gcc_jit_context_new_rvalue_from_vector.
1384 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1385 * jit-common.h (gcc::jit:recording::vector_type): New forward
1386 decl.
1387 * jit-playback.c
1388 (gcc::jit::playback::context::new_rvalue_from_vector): New method.
1389 * jit-playback.h
1390 (gcc::jit::playback::context::new_rvalue_from_vector): New method.
1391 * jit-recording.c: In namespace gcc::jit::
1392 (class comma_separated_string): New class.
1393 (comma_separated_string::comma_separated_string): New ctor,
1394 adapted from recording::call::make_debug_string.
1395 (comma_separated_string::~comma_separated_string): New dtor.
1396 In namespace gcc::jit::recording::
1397 (context::new_rvalue_from_vector): New method.
1398 (type::get_vector): Update for renaming of memento_of_get_vector.
1399 (class memento_of_get_vector): Rename to...
1400 (class vector_type): ..this.
1401 (memento_of_new_rvalue_from_vector::memento_of_new_rvalue_from_vector):
1402 New ctor.
1403 (memento_of_new_rvalue_from_vector::replay_into): New method.
1404 (memento_of_new_rvalue_from_vector::visit_children): New method.
1405 (memento_of_new_rvalue_from_vector::make_debug_string): New
1406 method.
1407 (memento_of_new_rvalue_from_vector::write_reproducer): New method.
1408 (call::make_debug_string): Split out arg-printing code into ctor
1409 for comma_separated_string.
1410 * jit-recording.h: In namespace gcc::jit::recording::
1411 (context::new_rvalue_from_vector): New method.
1412 (type::dyn_cast_vector_type): New virtual function.
1413 (class memento_of_get_vector): Rename to...
1414 (class vector_type): ...this.
1415 (vector_type::unqualified): Remove this vfunc override in favor
1416 of...
1417 (vector_type::get_element_type): ...this new method.
1418 (vector_type::get_num_units): New method.
1419 (vector_type::dyn_cast_vector_type): New vfunc override.
1420 (class memento_of_new_rvalue_from_vector): New class.
1421 * libgccjit++.h (gccjit::context::new_rvalue): Add overload for
1422 vector of rvalue.
1423 * libgccjit.c (gcc_jit_context_new_binary_op): Strip off type
1424 qualifications when checking that both operands have same type.
1425 (gcc_jit_context_new_rvalue_from_vector): New API entrypoint.
1426 * libgccjit.h
1427 (LIBGCCJIT_HAVE_gcc_jit_context_new_rvalue_from_vector): New
1428 macro.
1429 (gcc_jit_context_new_rvalue_from_vector): New API entrypoint.
1430 * libgccjit.map (LIBGCCJIT_ABI_10): New ABI tag.
1431
ecd5156d
DM
14322017-09-28 David Malcolm <dmalcolm@redhat.com>
1433
1434 * docs/topics/expressions.rst (Function calls): Add link to
1435 gcc_jit_context_new_function_ptr_type.
1436 (Function pointers): Convert to cross-references to
1437 function-pointers.rst, moving material there.
1438 * docs/topics/function-pointers.rst: New page.
1439 * docs/topics/index.rst: Add function-pointers.rst.
1440 * docs/topics/types.rst (Function pointer types): New section.
1441 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1442
5a47aa2c
DM
14432017-09-28 David Malcolm <dmalcolm@redhat.com>
1444
1445 * jit-recording.c
1446 (gcc::jit::recording::function_type::is_same_type_as): New function.
1447 * jit-recording.h: In namespace gcc::jit::recording::
1448 (type::accepts_writes_from): Use is_same_type_as rather than pointer
1449 equality.
1450 (type::is_same_type_as): New virtual function.
1451 (function_type::is_same_type_as): New override.
1452
15a65e63
DM
14532017-09-27 David Malcolm <dmalcolm@redhat.com>
1454
1455 * docs/cp/topics/expressions.rst (Function pointers): New section.
1456 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_9): New tag.
1457 * docs/topics/expressions.rst (Function pointers): New section.
1458 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1459 * jit-common.h (class gcc::jit::recording::function_pointer): New
1460 forward decl.
1461 * jit-playback.c (gcc::jit::playback::function::get_address): New
1462 method.
1463 * jit-playback.h (gcc::jit::playback::function::get_address): New
1464 method decl.
1465 * jit-recording.c: Within namespace gcc::jit::recording...
1466 (function::function): Initialize new field "m_fn_ptr_type".
1467 (function::get_address): New method.
1468 (function_pointer::replay_into): New method.
1469 (function_pointer::visit_children): New method.
1470 (function_pointer::make_debug_string): New method.
1471 (function_pointer::write_reproducer): New method.
1472 * jit-recording.h: Within namespace gcc::jit::recording...
1473 (function::get_address): New method.
1474 (function): Add field "m_fn_ptr_type".
1475 (class function_pointer): New subclass of rvalue.
1476 * libgccjit++.h (gccjit::function::get_address): New method.
1477 * libgccjit.c (gcc_jit_function_get_address): New function.
1478 * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_function_get_address): New
1479 macro.
1480 (gcc_jit_function_get_address): New API entrypoint.
1481 * libgccjit.map (LIBGCCJIT_ABI_9): New tag.
1482
595ced60
DM
14832017-09-14 David Malcolm <dmalcolm@redhat.com>
1484
1485 PR jit/82174
1486 * jit-builtins.c (matches_builtin): Ignore entries with a NULL
1487 name.
1488
953e520d
DM
14892017-08-18 David Malcolm <dmalcolm@redhat.com>
1490
1491 PR tree-optimization/46805
1492 * dummy-frontend.c (jit_langhook_parse_file): Handle vector types.
1493
519d0798
DM
14942017-08-18 David Malcolm <dmalcolm@redhat.com>
1495
1496 * jit-recording.c (class gcc::jit::reproducer): Rename field
1497 "m_identifiers" to "m_map_memento_to_identifier". Add field
1498 "m_set_identifiers" and struct hash_traits for it.
1499 (gcc::jit::reproducer::reproducer): Update for above.
1500 (convert_to_identifier): New function.
1501 (gcc::jit::reproducer::ensure_identifier_is_unique): New method.
1502 (gcc::jit::reproducer::make_identifier): Avoid appending the %p
1503 unless necessary for uniqueness. Update for field renaming.
1504 (gcc::jit::reproducer::get_identifier): Update for field renaming.
1505
47ee1b7c
DM
15062017-08-09 David Malcolm <dmalcolm@redhat.com>
1507
1508 * docs/cp/topics/types.rst (Vector types): New section.
1509 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_8): New tag.
1510 * docs/topics/types.rst (gcc_jit_context_get_type): Fix typo in
1511 example.
1512 (Vector types): New section.
1513 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1514 * jit-playback.c (gcc::jit::playback::type::get_vector): New
1515 method.
1516 * jit-playback.h (gcc::jit::playback::type::get_vector): New
1517 method.
1518 * jit-recording.c: In namespace gcc::jit::recording::
1519 (type::get_vector): New method.
1520 (memento_of_get_aligned::write_reproducer): Fix typo
1521 in leading comment.
1522 (memento_of_get_vector::replay_into): New method.
1523 (memento_of_get_vector::make_debug_string): New method.
1524 (memento_of_get_vector::write_reproducer): New method.
1525 * jit-recording.h: In namespace gcc::jit::recording::
1526 (type::get_vector): New
1527 method.
1528 (class memento_of_get_vector): New class.
1529 * libgccjit++.h (gccjit::type::get_vector): New method.
1530 * libgccjit.c (gcc_jit_type_get_vector): New public entrypoint.
1531 * libgccjit.h (LIBGCCJIT_HAVE_gcc_jit_type_get_vector): New
1532 define.
1533 (gcc_jit_type_get_vector): New decl.
1534 * libgccjit.map (LIBGCCJIT_ABI_8): New ABI tag.
1535
b8506a8a
RS
15362017-07-05 Richard Sandiford <richard.sandiford@linaro.org>
1537 Alan Hayward <alan.hayward@arm.com>
1538 David Sherwood <david.sherwood@arm.com>
1539
1540 * dummy-frontend.c (jit_langhook_type_for_mode): Remove "enum" before
1541 "machine_mode".
1542
0ebd1f00
DM
15432017-04-24 David Malcolm <dmalcolm@redhat.com>
1544
1545 * docs/cp/topics/types.rst (gccjit::type::get_const): Remove
1546 comment.
1547 (gccjit::type::get_aligned): Add.
1548 * docs/topics/compatibility.rst: Add LIBGCCJIT_ABI_7.
1549 * docs/topics/types.rst: Add gcc_jit_type_get_aligned.
1550 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1551 * jit-playback.c (gcc::jit::playback::type::get_aligned): New
1552 method.
1553 * jit-playback.h (gcc::jit::playback::type::get_aligned): New
1554 method.
1555 * jit-recording.c: Within namespace gcc::jit::recording...
1556 (type::get_aligned): New method.
1557 (memento_of_get_aligned::replay_into): New method.
1558 (memento_of_get_aligned::make_debug_string): New method.
1559 (memento_of_get_aligned::write_reproducer): New method.
1560 * jit-recording.h: Within namespace gcc::jit::recording...
1561 (type::get_aligned): New method.
1562 (type::accepts_writes_from): Strip off qualifications from
1563 this when comparing pointer equality.
1564 (decorated_type): New subclass of type, subsuming the
1565 commonality between memento_of_get_const and
1566 memento_of_get_volatile.
1567 (memento_of_get_const): Make a subclass of decorated_type,
1568 rather than type.
1569 (memento_of_get_volatile): Likewise.
1570 (memento_of_get_aligned): Likewise.
1571 * libgccjit++.h: Within namespace gccjit...
1572 (type::get_const): New method.
1573 (type::get_aligned): New method.
1574 * libgccjit.c (gcc_jit_type_get_aligned): New function.
1575 * libgccjit.h (gcc_jit_type_get_aligned): New decl.
1576 * libgccjit.map (LIBGCCJIT_ABI_7): New
1577 (gcc_jit_type_get_aligned): Add.
1578
8a3a6ab4
DM
15792017-01-19 David Malcolm <dmalcolm@redhat.com>
1580
1581 * dummy-frontend.c (jit_langhook_type_for_size): Delete.
1582 (LANG_HOOKS_TYPE_FOR_SIZE): Don't redefine.
1583
b37589b0
DM
15842017-01-18 David Malcolm <dmalcolm@redhat.com>
1585
1586 * dummy-frontend.c (jit_langhook_type_for_size): Implement, using
1587 lto's lto_type_for_size.
1588
cbe34bb5
JJ
15892017-01-01 Jakub Jelinek <jakub@redhat.com>
1590
1591 Update copyright years.
1592
15c671a7
DM
15932016-05-20 David Malcolm <dmalcolm@redhat.com>
1594
1595 * docs/topics/compatibility.rst: Add LIBGCCJIT_ABI_6.
1596 * docs/topics/expressions.rst (Function calls): Add documentation
1597 of gcc_jit_rvalue_set_bool_require_tail_call.
1598 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1599 * jit-common.h (gcc::jit::recording::base_call): Add forward decl.
1600 * jit-playback.c: Within namespace gcc::jit::playback...
1601 (context::build_call) Add "require_tail_call" param and use it
1602 to set CALL_EXPR_MUST_TAIL_CALL.
1603 (context::new_call): Add "require_tail_call" param.
1604 (context::new_call_through_ptr): Likewise.
1605 * jit-playback.h: Within namespace gcc::jit::playback...
1606 (context::new_call: Add "require_tail_call" param.
1607 (context::new_call_through_ptr): Likewise.
1608 (context::build_call): Likewise.
1609 * jit-recording.c: Within namespace gcc::jit::recording...
1610 (base_call::base_call): New constructor.
1611 (base_call::write_reproducer_tail_call): New method.
1612 (call::call): Update for inheritance from base_call.
1613 (call::replay_into): Provide m_require_tail_call to call
1614 to new_call.
1615 (call::write_reproducer): Call write_reproducer_tail_call.
1616 (call_through_ptr::call_through_ptr): Update for inheritance from
1617 base_call.
1618 (call_through_ptr::replay_into): Provide m_require_tail_call to call
1619 to new_call_through_ptr.
1620 (recording::call_through_ptr::write_reproducer): Call
1621 write_reproducer_tail_call.
1622 * jit-recording.h: Within namespace gcc::jit::recording...
1623 (rvalue::dyn_cast_base_call): New virtual function.
1624 (class base_call): New subclass of class rvalue.
1625 (class call): Inherit from base_call rather than directly from
1626 rvalue, moving get_precedence and m_args to base_call.
1627 (class call_through_ptr): Likewise.
1628 * libgccjit.c (gcc_jit_rvalue_set_bool_require_tail_call): New
1629 function.
1630 * libgccjit.h
1631 (LIBGCCJIT_HAVE_gcc_jit_rvalue_set_bool_require_tail_call): New
1632 macro.
1633 (gcc_jit_rvalue_set_bool_require_tail_call): New function.
1634 * libgccjit.map (LIBGCCJIT_ABI_6): New.
1635 (gcc_jit_rvalue_set_bool_require_tail_call): Add.
1636
6b5423a5
DM
16372016-05-17 David Malcolm <dmalcolm@redhat.com>
1638
1639 * dummy-frontend.c: Include diagnostic.h.
1640 (jit_begin_diagnostic): New function.
1641 (jit_end_diagnostic): New function.
1642 (jit_langhook_init): Register jit_begin_diagnostic
1643 and jit_end_diagnostic with the global_dc.
1644 * jit-playback.c: Include diagnostic.h.
1645 (gcc::jit::playback::context::add_diagnostic): New method.
1646 * jit-playback.h (struct diagnostic_context): Add forward
1647 declaration.
1648 (gcc::jit::playback::context::add_diagnostic): New method.
1649
f51703a8
DM
16502016-05-17 David Malcolm <dmalcolm@redhat.com>
1651
1652 * docs/topics/expressions.rst (Function calls): Document
1653 gcc_jit_context_new_call_through_ptr.
1654 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1655
54ece5e2
DM
16562016-05-13 David Malcolm <dmalcolm@redhat.com>
1657
1658 * jit-playback.h: Within namespace gcc:jit::playback...
1659 (compile_to_memory::postprocess): Mark with FINAL OVERRIDE.
1660 (compile_to_file::postprocess): Likewise.
1661 (function::finalizer): Likewise.
1662 (block::finalizer): Likewise.
1663 (source_file::finalizer): Likewise.
1664 (source_line::finalizer): Likewise.
1665 * jit-recording.c (gcc::jit::rvalue_usage_validator):: Likewise.
1666 * jit-recording.h: Within namespace gcc::jit::recording...
1667 (string::replay_into): Mark with FINAL OVERRIDE.
1668 (string::make_debug_string): Likewise.
1669 (string::write_reproducer): Likewise.
1670 (location::replay_into): Likewise.
1671 (location::dyn_cast_location): Likewise.
1672 (location::make_debug_string): Likewise.
1673 (location::write_reproducer): Likewise.
1674 (memento_of_get_type::dereference): Likewise.
1675 (memento_of_get_type::accepts_writes_from): Likewise.
1676 (memento_of_get_type::is_int): Likewise.
1677 (memento_of_get_type::is_float): Likewise.
1678 (memento_of_get_type::is_bool): Likewise.
1679 (memento_of_get_type::is_pointer): Likewise.
1680 (memento_of_get_type::is_array): Likewise.
1681 (memento_of_get_type::is_void): Likewise.
1682 (memento_of_get_type::replay_into): Likewise.
1683 (memento_of_get_type::make_debug_string): Likewise.
1684 (memento_of_get_type::write_reproducer): Likewise.
1685 (memento_of_get_pointer::dereference): Likewise.
1686 (memento_of_get_pointer::accepts_writes_from): Likewise.
1687 (memento_of_get_pointer::replay_into): Likewise.
1688 (memento_of_get_pointer::is_int): Likewise.
1689 (memento_of_get_pointer::is_float): Likewise.
1690 (memento_of_get_pointer::is_bool): Likewise.
1691 (memento_of_get_pointer::is_pointer): Likewise.
1692 (memento_of_get_pointer::is_array): Likewise.
1693 (memento_of_get_pointer::make_debug_string): Likewise.
1694 (memento_of_get_pointer::write_reproducer): Likewise.
1695 (memento_of_get_const::dereference): Likewise.
1696 (memento_of_get_const::accepts_writes_from): Likewise.
1697 (memento_of_get_const::unqualified): Likewise.
1698 (memento_of_get_const::is_int): Likewise.
1699 (memento_of_get_const::is_float): Likewise.
1700 (memento_of_get_const::is_bool): Likewise.
1701 (memento_of_get_const::is_pointer): Likewise.
1702 (memento_of_get_const::is_array): Likewise.
1703 (memento_of_get_const::void replay_into): Likewise;
1704 (memento_of_get_const::make_debug_string): Likewise.
1705 (memento_of_get_const::write_reproducer): Likewise.
1706 (memento_of_get_volatile::dereference): Likewise.
1707 (memento_of_get_volatile::unqualified): Likewise.
1708 (memento_of_get_volatile::is_int): Likewise.
1709 (memento_of_get_volatile::is_float): Likewise.
1710 (memento_of_get_volatile::is_bool): Likewise.
1711 (memento_of_get_volatile::is_pointer): Likewise.
1712 (memento_of_get_volatile::is_array): Likewise.
1713 (memento_of_get_volatile::replay_into): Likewise;
1714 (memento_of_get_volatile::make_debug_string): Likewise.
1715 (memento_of_get_volatile::write_reproducer): Likewise.
1716 (array_type::dereference): Likewise.
1717 (array_type::is_int): Likewise.
1718 (array_type::is_float): Likewise.
1719 (array_type::is_bool): Likewise.
1720 (array_type::is_pointer): Likewise.
1721 (array_type::is_array): Likewise.
1722 (array_type::replay_into): Likewise;
1723 (array_type::make_debug_string): Likewise.
1724 (array_type::write_reproducer): Likewise.
1725 (function_type::dereference): Likewise.
1726 (function_type::function_dyn_cast_function_type): Likewise.
1727 (function_type::function_as_a_function_type): Likewise.
1728 (function_type::is_int): Likewise.
1729 (function_type::is_float): Likewise.
1730 (function_type::is_bool): Likewise.
1731 (function_type::is_pointer): Likewise.
1732 (function_type::is_array): Likewise.
1733 (function_type::replay_into): Likewise;
1734 (function_type::make_debug_string): Likewise.
1735 (function_type::write_reproducer): Likewise.
1736 (field::replay_into): Likewise;
1737 (field::write_to_dump): Likewise.
1738 (field::make_debug_string): Likewise.
1739 (field::write_reproducer): Likewise.
1740 (compound_type::dereference): Likewise.
1741 (compound_type::is_int): Likewise.
1742 (compound_type::is_float): Likewise.
1743 (compound_type::is_bool): Likewise.
1744 (compound_type::is_pointer): Likewise.
1745 (compound_type::is_array): Likewise.
1746 (compound_type::has_known_size): Likewise.
1747 (struct_::dyn_cast_struct): Likewise.
1748 (struct_::replay_into): Likewise.
1749 (struct_::access_as_type): Likewise.
1750 (struct_::make_debug_string): Likewise.
1751 (struct_::write_reproducer): Likewise.
1752 (fields::replay_into): Likewise.
1753 (fields::write_to_dump): Likewise.
1754 (fields::make_debug_string): Likewise.
1755 (fields::write_reproducer): Likewise.
1756 (union_::replay_into): Likewise.
1757 (union_::make_debug_string): Likewise.
1758 (union_::write_reproducer): Likewise.
1759 (lvalue::access_as_rvalue): Mark with OVERRIDE.
1760 (param::replay_into): Mark with FINAL OVERRIDE.
1761 (param::visit_children): Likewise.
1762 (param::dyn_cast_param): Likewise.
1763 (param::access_as_rvalue): Likewise.
1764 (param::access_as_lvalue): Likewise.
1765 (param::make_debug_string): Likewise.
1766 (param::write_reproducer): Likewise.
1767 (param::get_precedence): Likewise.
1768 (function::replay_into): Likewise.
1769 (function::write_to_dump): Likewise.
1770 (function::make_debug_string): Likewise.
1771 (function::write_reproducer): Likewise.
1772 (block::write_to_dump): Likewise.
1773 (block::make_debug_string): Likewise.
1774 (block::write_reproducer): Likewise.
1775 (block::replay_into): Likewise.
1776 (global::replay_into): Likewise;
1777 (global::visit_children): Likewise.
1778 (global::write_to_dump): Likewise.
1779 (global::make_debug_string): Likewise.
1780 (global::write_reproducer): Likewise.
1781 (global::get_precedence): Likewise.
1782 (memento_of_new_rvalue_from_const::replay_into): Likewise.
1783 (memento_of_new_rvalue_from_const::visit_children): Likewise.
1784 (memento_of_new_rvalue_from_const::is_constant): Likewise.
1785 (memento_of_new_rvalue_from_const::get_wide_int): Likewise.
1786 (memento_of_new_rvalue_from_const::make_debug_string): Likewise.
1787 (memento_of_new_rvalue_from_const::write_reproducer): Likewise.
1788 (memento_of_new_rvalue_from_const::get_precedence): Likewise.
1789 (memento_of_new_string_literal::replay_into): Likewise.
1790 (memento_of_new_string_literal::visit_children): Likewise.
1791 (memento_of_new_string_literal::make_debug_string): Likewise.
1792 (memento_of_new_string_literal::write_reproducer): Likewise.
1793 (memento_of_new_string_literal::get_precedence): Likewise.
1794 (unary_op::replay_into): Likewise.
1795 (unary_op::visit_children): Likewise.
1796 (unary_op::make_debug_string): Likewise.
1797 (unary_op::write_reproducer): Likewise.
1798 (unary_op::get_precedence): Likewise.
1799 (binary_op::replay_into): Likewise.
1800 (binary_op::visit_children): Likewise.
1801 (binary_op::make_debug_string): Likewise.
1802 (binary_op::write_reproducer): Likewise.
1803 (binary_op::get_precedence): Likewise.
1804 (comparison::replay_into): Likewise.
1805 (comparison::visit_children): Likewise.
1806 (comparison::make_debug_string): Likewise.
1807 (comparison::write_reproducer): Likewise.
1808 (comparison::get_precedence): Likewise.
1809 (cast::replay_into): Likewise.
1810 (cast::visit_children): Likewise.
1811 (cast::make_debug_string): Likewise.
1812 (cast::write_reproducer): Likewise.
1813 (cast::get_precedence): Likewise.
1814 (call::replay_into): Likewise.
1815 (call::visit_children): Likewise.
1816 (call::make_debug_string): Likewise.
1817 (call::write_reproducer): Likewise.
1818 (call::get_precedence): Likewise.
1819 (call_through_ptr::replay_into): Likewise.
1820 (call_through_ptr::visit_children): Likewise.
1821 (call_through_ptr::make_debug_string): Likewise.
1822 (call_through_ptr::write_reproducer): Likewise.
1823 (call_through_ptr::get_precedence): Likewise.
1824 (array_access::replay_into): Likewise.
1825 (array_access::visit_children): Likewise.
1826 (array_access::make_debug_string): Likewise.
1827 (array_access::write_reproducer): Likewise.
1828 (array_access::get_precedence): Likewise.
1829 (access_field_of_lvalue::replay_into): Likewise.
1830 (access_field_of_lvalue::visit_children): Likewise.
1831 (access_field_of_lvalue::make_debug_string): Likewise.
1832 (access_field_of_lvalue::write_reproducer): Likewise.
1833 (access_field_of_lvalue::get_precedence): Likewise.
1834 (access_field_rvalue::replay_into): Likewise.
1835 (access_field_rvalue::visit_children): Likewise.
1836 (access_field_rvalue::make_debug_string): Likewise.
1837 (access_field_rvalue::write_reproducer): Likewise.
1838 (access_field_rvalue::get_precedence): Likewise.
1839 (dereference_field_rvalue::replay_into): Likewise.
1840 (dereference_field_rvalue::visit_children): Likewise.
1841 (dereference_field_rvalue::make_debug_string): Likewise.
1842 (dereference_field_rvalue::write_reproducer): Likewise.
1843 (dereference_field_rvalue::get_precedence): Likewise.
1844 (dereference_rvalue::replay_into): Likewise.
1845 (dereference_rvalue::visit_children): Likewise.
1846 (dereference_rvalue::make_debug_string): Likewise.
1847 (dereference_rvalue::write_reproducer): Likewise.
1848 (dereference_rvalue::get_precedence): Likewise.
1849 (get_address_of_lvalue::replay_into): Likewise.
1850 (get_address_of_lvalue::visit_children): Likewise.
1851 (get_address_of_lvalue::make_debug_string): Likewise.
1852 (get_address_of_lvalue::write_reproducer): Likewise.
1853 (get_address_of_lvalue::get_precedence): Likewise.
1854 (local::replay_into): Likewise.
1855 (local::visit_children): Likewise.
1856 (local::write_to_dump): Likewise.
1857 (local::make_debug_string): Likewise.
1858 (local::write_reproducer): Likewise.
1859 (local::get_precedence): Likewise.
1860 (statement::write_to_dump): Likewise.
1861 (eval::replay_into): Likewise.
1862 (eval::make_debug_string): Likewise.
1863 (eval::write_reproducer): Likewise.
1864 (assignment::replay_into): Likewise.
1865 (assignment::make_debug_string): Likewise.
1866 (assignment::write_reproducer): Likewise.
1867 (assignment_op::replay_into): Likewise.
1868 (assignment_op::make_debug_string): Likewise.
1869 (assignment_op::write_reproducer): Likewise.
1870 (comment::replay_into): Likewise.
1871 (comment::make_debug_string): Likewise.
1872 (comment::write_reproducer): Likewise.
1873 (conditional::replay_into): Likewise.
1874 (conditional::get_successor_blocks): Likewise.
1875 (conditional::make_debug_string): Likewise.
1876 (conditional::write_reproducer): Likewise.
1877 (jump::replay_into): Likewise.
1878 (jump::get_successor_blocks): Likewise.
1879 (jump::make_debug_string): Likewise.
1880 (jump::write_reproducer): Likewise.
1881 (return_::replay_into): Likewise.
1882 (return_::get_successor_blocks): Likewise.
1883 (return_::make_debug_string): Likewise.
1884 (return_::write_reproducer): Likewise.
1885 (case_::replay_into): Likewise.
1886 (case_::write_reproducer): Likewise.
1887 (case_::make_debug_string): Likewise.
1888 (switch_::replay_into): Likewise.
1889 (switch_::get_successor_blocks): Likewise.
1890 (switch_::make_debug_string): Likewise.
1891 (switch_::write_reproducer): Likewise.
1892
f258ad62
DM
18932016-02-08 David Malcolm <dmalcolm@redhat.com>
1894
1895 * dummy-frontend.c (jit_langhook_init): Remove
1896 second argument to build_common_tree_nodes to
1897 track r233218.
1898
1c652ccb
IB
18992016-01-23 Iain Buclaw <ibuclaw@gdcproject.org>
1900
1901 * jit-playback.c: Include pthread.h.
1902
199501ea
DM
19032016-01-19 David Malcolm <dmalcolm@redhat.com>
1904
1905 PR jit/69144
1906 * jit-playback.c (gcc::jit::playback::compile_to_file::postprocess):
1907 Potentially add the temporary artifact to the tempdir's list of
1908 tempfiles needing additional cleanup.
1909 (gcc::jit::playback::context::extract_any_requested_dumps): Likewise
1910 for the dumpfile.
1911 * jit-tempdir.c (gcc::jit::tempdir::~tempdir): Clean up additional
1912 tempfiles.
1913 * jit-tempdir.h (gcc::jit::tempdir::add_temp_file): New method.
1914 (gcc::jit::tempdir::m_tempfiles): New field.
1915 * docs/cp/intro/tutorial04.rst: Update for changes to toyvm.cc.
1916 * docs/examples/tut04-toyvm/toyvm.cc (class compilation_result):
1917 New.
1918 (toyvm_function::compile): Change return type from function ptr
1919 to a compilation_result.
1920 (toyvm_function::get_function_name): New accessor.
1921 (toyvm_function::m_funcname): New field.
1922 (get_function_name): Convert to...
1923 (toyvm_function::make_function_name): ...this new method.
1924 (toyvm_function::parse): Call make_function_name.
1925 (toyvm_function::compile): Convert return type from function ptr
1926 to a compilation_result. Use get_function_name.
1927 (compilation_state::compile): Convert return type from
1928 gcc_jit_result * to a compilation_result.
1929 (test_script): Update for above changes, extracting the code from
1930 the compilation_result.
1931 (main): Likewise.
1932 * docs/_build/texinfo/libgccjit.texi: Regenerate.
1933
818ab71a
JJ
19342016-01-04 Jakub Jelinek <jakub@redhat.com>
1935
1936 Update copyright years.
1937
69f293c9
AM
19382015-11-11 Andrew MacLeod <amacleod@redhat.com>
1939
1940 * dummy-frontend.c: Remove unused header files.
1941 * jit-builtins.c: Likewise.
1942 * jit-playback.c: Likewise.
1943 * jit-recording.c: Likewise.
1944 * jit-spec.c: Likewise.
1945 * libgccjit.c: Likewise.
1946
0aad0198
RS
19472015-11-07 Richard Sandiford <richard.sandiford@arm.com>
1948
1949 * jit-builtins.c: Don't undef DEF_BUILTIN.
1950
2adfab87
AM
19512015-10-29 Andrew MacLeod <amacleod@redhat.com>
1952
1953 * dummy-frontend.c: Reorder #include's and remove duplicates.
1954 * jit-builtins.c: Likewise.
1955 * jit-playback.c: Likewise.
1956 * jit-recording.c: Likewise.
1957 * libgccjit.c: Likewise.
1958
d9a6bd32
JJ
19592015-10-13 Jakub Jelinek <jakub@redhat.com>
1960
1961 * jit-builtins.c (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
1962 DEF_FUNCTION_TYPE_11): Define.
1963 * jit-builtins.h (DEF_FUNCTION_TYPE_9, DEF_FUNCTION_TYPE_10,
1964 DEF_FUNCTION_TYPE_11): Define.
1965
fa83660d
TS
19662015-09-30 Thomas Schwinge <thomas@codesourcery.com>
1967 Ulrich Drepper <drepper@gmail.com>
1968
1969 * jit-builtins.h: Undefine DEF_FUNCTION_TYPE_VAR_6 after use.
1970
20a44562
MK
19712015-09-30 Matthias Klose <doko@ubuntu.com>
1972
1973 * jit-builtins.h Define DEF_FUNCTION_TYPE_VAR_6,
1974 remove DEF_FUNCTION_TYPE_VAR_11.
1975 * jit-builtins.c (builtins_manager::make_type): Define and handle
1976 DEF_FUNCTION_TYPE_VAR_6, remove DEF_FUNCTION_TYPE_VAR_11.
1977
9376dd63
DM
19782015-08-25 David Malcolm <dmalcolm@redhat.com>
1979
1980 * docs/cp/topics/contexts.rst
1981 (gccjit::context::set_bool_use_external_driver): New.
1982 * docs/internals/test-hello-world.exe.log.txt: Update.
1983 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_5): New.
1984 * docs/topics/contexts.rst
1985 (gcc_jit_context_set_bool_use_external_driver): New.
1986 * jit-common.h (enum inner_bool_option): Add
1987 INNER_BOOL_OPTION_USE_EXTERNAL_DRIVER.
1988 * jit-playback.c (gcc_driver_name): New global.
1989 (gcc:jit::playback::context::invoke_driver): Split out second
1990 half into...
1991 (gcc::jit::playback::context::invoke_embedded_driver): ...this new
1992 function, and...
1993 (gcc::jit::playback::context::invoke_external_driver): ...this new
1994 function.
1995 * jit-playback.h
1996 (gcc::jit::playback::context::get_inner_bool_option): New.
1997 (gcc::jit::playback::context::invoke_embedded_driver): New.
1998 (gcc::jit::playback::context::invoke_external_driver): New.
1999 * jit-recording.c (inner_bool_option_reproducer_strings):
2000 Add entry for INNER_BOOL_OPTION_USE_EXTERNAL_DRIVER.
2001 * libgccjit++.h
2002 (gccjit::context::set_bool_use_external_driver): New.
2003 * libgccjit.c (gcc_jit_context_set_bool_use_external_driver): New.
2004 * libgccjit.h (gcc_jit_context_set_bool_use_external_driver): New.
2005 (LIBGCCJIT_HAVE_gcc_jit_context_set_bool_use_external_driver):
2006 New.
2007 * libgccjit.map (LIBGCCJIT_ABI_5): New.
2008 * notes.txt: Show invocation of embedded copy of driver.
2009 * docs/internals/test-hello-world.exe.log.txt: Update
2010
baf3fbad
DM
20112015-08-13 David Malcolm <dmalcolm@redhat.com>
2012
2013 * jit-playback.c (invoke_driver): On OS X, add
2014 "-Wl,-undefined,dynamic_lookup" to the driver arguments.
2015
afed3459
DM
20162015-08-03 David Malcolm <dmalcolm@redhat.com>
2017
2018 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_4): New.
2019 * docs/topics/contexts.rst (GCC_JIT_BOOL_OPTION_DUMP_SUMMARY):
2020 We no longer show a profile.
2021 * docs/topics/index.rst (Topic Reference): Add performance.rst.
2022 * docs/topics/performance.rst: New file.
2023 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2024 * jit-playback.c (gcc::jit::playback::context::compile): Add timer
2025 param when constructing the "toplev" instance.
2026 (gcc::jit::playback::context::acquire_mutex): Add timer param when
2027 constructing auto_timevar instance.
2028 (gcc::jit::playback::context::make_fake_args): If we have a timer,
2029 add "-ftime-report".
2030 (gcc::jit::playback::context::invoke_driver): Add timer param when
2031 constructing auto_timevar instance.
2032 (gcc::jit::playback::context::dlopen_built_dso): Likewise.
2033 * jit-playback.h (gcc::jit::playback::context::get_timer): New accessor.
2034 * jit-recording.c: Include timevar.h.
2035 (gcc::jit::recording::context::context): Initialize field "m_timer".
2036 * jit-recording.h: Add forward declaration of class timer.
2037 (gcc::jit::recording::context::set_timer): New method.
2038 (gcc::jit::recording::context::get_timer): New method.
2039 (gcc::jit::recording::context::m_timer): New field.
2040 * libgccjit++.h (gccjit::timer): New class.
2041 (gccjit::auto_time): New class.
2042 (gccjit::context::set_timer): New method.
2043 (gccjit::context::get_timer): New.
2044 (gccjit::timer::timer): New.
2045 (gccjit::timer::push): New.
2046 (gccjit::timer::pop): New.
2047 (timer::print): New.
2048 (timer::get_inner_timer): New.
2049 (timer::release): New.
2050 (auto_time::auto_time): New.
2051 (auto_time::~auto_time): New.
2052 * libgccjit.c: Include timevar.h.
2053 (struct gcc_jit_timer): New.
2054 (gcc_jit_timer_new): New function.
2055 (gcc_jit_timer_release): New function.
2056 (gcc_jit_context_set_timer): New function.
2057 (gcc_jit_context_get_timer): New function.
2058 (gcc_jit_timer_push): New function.
2059 (gcc_jit_timer_pop): New function.
2060 (gcc_jit_timer_print): New function.
2061 * libgccjit.h (LIBGCCJIT_HAVE_TIMING_API): New macro.
2062 (gcc_jit_timer): New typedef.
2063 (gcc_jit_timer_new): New function.
2064 (gcc_jit_timer_release): New function.
2065 (gcc_jit_context_set_timer): New function.
2066 (gcc_jit_context_get_timer): New function.
2067 (gcc_jit_timer_push): New function.
2068 (gcc_jit_timer_pop): New function.
2069 (gcc_jit_timer_print): New function.
2070 * libgccjit.map (LIBGCCJIT_ABI_4): New.
2071 (gcc_jit_timer_new): New function.
2072 (gcc_jit_timer_release): New function.
2073 (gcc_jit_context_set_timer): New function.
2074 (gcc_jit_context_get_timer): New function.
2075 (gcc_jit_timer_push): New function.
2076 (gcc_jit_timer_pop): New function.
2077 (gcc_jit_timer_print): New function.
2078
eb3982c1
DM
20792015-07-23 David Malcolm <dmalcolm@redhat.com>
2080
2081 * jit-playback.c (invoke_driver): Convert local "argvec"
2082 to an auto_argvec, so that it owns copies of the strings,
2083 rather than borrows them, updating ADD_ARG to use xstrdup
2084 and special-casing the NULL terminator to avoid
2085 xstrdup (NULL). Call add_multilib_driver_arguments at the front
2086 of the arguments.
2087 (MULTILIB_DEFAULTS): Provide a default definition.
2088 (multilib_defaults_raw): New constant array.
2089 (gcc::jit::playback::context::add_multilib_driver_arguments): New
2090 method.
2091 * jit-playback.h
2092 (gcc::jit::playback::context::add_multilib_driver_arguments): New
2093 method.
2094 * docs/internals/test-hello-world.exe.log.txt: Update.
2095 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2096
1470e75f
DM
20972015-07-16 David Malcolm <dmalcolm@redhat.com>
2098
2099 * docs/internals/index.rst (Overview of code structure): Add note
2100 that the implementation is in C++, despite the .c extension.
2101 (Submitting patches): New subsection.
2102 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2103
1916bcb5
AM
21042015-07-09 Andrew MacLeod <amacleod@redhat.com>
2105
2106 * dummy-frontend.c: Adjust includes for flags.h changes.
2107 * jit-common.h: Likewise.
2108 * jit-playback.c: Likewise.
2109
58c5ad40
DM
21102015-07-08 David Malcolm <dmalcolm@redhat.com>
2111
2112 PR jit/66783
2113 * libgccjit.c (gcc_jit_context_new_field): Show name of field in
2114 "unknown size" error message.
2115 (gcc_jit_struct_set_fields): Show name of struct in error message.
2116 (gcc_jit_context_new_global): Show name of global in
2117 "unknown size" error message.
2118 (gcc_jit_function_new_local): Likewise for local.
2119
c7131fb2
AM
21202015-07-07 Andrew MacLeod <amacleod@redhat.com>
2121
2122 * dummy-frontend.c: Adjust includes.
2123 * jit-common.h: Likewise.
2124 * jit-playback.c: Likewise.
2125
3457d39e
DM
21262015-07-07 David Malcolm <dmalcolm@redhat.com>
2127
2128 PR jit/66783
2129 * jit-recording.h: Within namespace gcc:jit::recording...
2130 (type::has_known_size): New virtual function.
2131 (struct_has_known_size): New function.
2132 * libgccjit.c (gcc_jit_context_new_field): Verify that the type
2133 has a known size.
2134 (gcc_jit_context_new_global): Likewise.
2135 (gcc_jit_function_new_local): Likewise.
2136
bada4bed
DM
21372015-07-07 David Malcolm <dmalcolm@redhat.com>
2138
2139 PR jit/66779
2140 * dummy-frontend.c (jit_langhook_type_for_mode): Ensure that we
2141 handle modes QI, HI, SI, DI, TI.
2142
e09abfa4
DM
21432015-07-01 David Malcolm <dmalcolm@redhat.com>
2144
2145 PR jit/66700
2146 * jit-playback.c (jit_mark_addressable): New function.
2147 (gcc::jit::playback::lvalue::get_address): Call
2148 jit_mark_addressable on the underlying tree.
2149
e807aeaa
DM
21502015-07-01 David Malcolm <dmalcolm@redhat.com>
2151
2152 * docs/topics/types.rst (gcc_jit_context_new_union_type): Add
2153 documentation.
2154 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2155
c575221a
DM
21562015-07-01 David Malcolm <dmalcolm@redhat.com>
2157
2158 * docs/topics/contexts.rst (gcc_jit_context_set_bool_option):
2159 Clarify lack of lifetime requirements on (const char *) parameter.
2160 * docs/topics/expressions.rst
2161 (gcc_jit_context_new_string_literal): Likewise.
2162 (gcc_jit_context_new_global): Likewise.
2163 * docs/topics/functions.rst (gcc_jit_context_new_param): Likewise.
2164 (gcc_jit_context_new_function): Likewise.
2165 (gcc_jit_function_new_block): Likewise.
2166 (gcc_jit_block_add_comment): Likewise.
2167 * docs/topics/locations.rst (gcc_jit_context_new_location):
2168 Likewise.
2169 * docs/topics/types.rst (gcc_jit_context_new_field): Likewise.
2170 (gcc_jit_context_new_struct_type): Likewise.
2171 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2172
ec5d0088
DM
21732015-06-30 David Malcolm <dmalcolm@redhat.com>
2174
2175 * docs/cp/topics/functions.rst (Blocks): Add switch statements to
2176 list of ways to terminate a block.
2177 (gccjit::block::end_with_switch): Add function description.
2178 (gccjit::case_): Add class.
2179 (gccjit::context::new_case): Add function description.
2180 * docs/cp/topics/objects.rst: Add "case_" to class hierarchy.
2181 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_3): New.
2182 * docs/topics/functions.rst (Blocks): Add switch statements to
2183 list of ways to terminate a block.
2184 (gcc_jit_block_end_with_switch): Add function description.
2185 (gcc_jit_case): Add type.
2186 (gcc_jit_context_new_case): Add function description.
2187 (gcc_jit_case_as_object): Add function description.
2188 * docs/topics/objects.rst: Add gcc_jit_case to class hierarchy.
2189 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2190 * jit-common.h (gcc::jit::recording::case_): Add forward decl.
2191 (gcc::jit::playback::case_): Add forward decl.
2192 * jit-playback.c (add_case): New function.
2193 (gcc::jit::playback::block::add_switch): New function.
2194 * jit-playback.h (gcc::jit::playback::case_): New struct.
2195 (gcc::jit::playback::block::get_function): New method.
2196 (gcc::jit::playback::block::add_switch): New method.
2197 * jit-recording.c: Within namespace gcc::jit...
2198 (recording::context::new_case): New method.
2199 (recording::function::validate): Update for change to
2200 get_successor_blocks.
2201 (recording::block::end_with_switch): New method.
2202 (recording::block::get_successor_blocks): Update to support an
2203 arbitrary number of successor blocks.
2204 (recording::block::dump_edges_to_dot): Likewise.
2205 (memento_of_new_rvalue_from_const <int>::get_wide_int): New.
2206 (memento_of_new_rvalue_from_const <long>::get_wide_int): New.
2207 (memento_of_new_rvalue_from_const <double>::get_wide_int): New.
2208 (memento_of_new_rvalue_from_const <void *>::get_wide_int): New.
2209 (recording::statement::get_successor_blocks): Update to support an
2210 arbitrary number of successor blocks.
2211 (recording::conditional::get_successor_blocks): Likewise.
2212 (recording::jump::get_successor_blocks): Likewise.
2213 (recording::return_::get_successor_blocks): Likewise.
2214 (recording::case_::write_reproducer): New.
2215 (recording::case_::make_debug_string): New.
2216 (recording::switch_::switch_): New.
2217 (recording::switch_::replay_into): New.
2218 (recording::switch_::get_successor_blocks): New.
2219 (recording::switch_::make_debug_string): New.
2220 (recording::switch_::write_reproducer): New.
2221 * jit-recording.h: Within namespace gcc::jit::recording...
2222 (context::new_case): New.
2223 (rvalue::is_constant): New.
2224 (rvalue::get_wide_int): New.
2225 (block::end_with_switch): New.
2226 (block::get_successor_blocks): Update to support an arbitrary
2227 number of successor blocks.
2228 (memento_of_new_rvalue_from_const::is_constant): New.
2229 (memento_of_new_rvalue_from_const::get_wide_int): New.
2230 (statement::get_successor_blocks): Update to support an arbitrary
2231 number of successor blocks.
2232 (conditional::get_successor_blocks): Likewise.
2233 (jump::get_successor_blocks): Likewise.
2234 (return_::get_successor_blocks): Likewise.
2235 (case_): New subclass of memento.
2236 (switch_): New subclass of statement.
2237 * libgccjit++.h (gccjit::case_): New subclass of gccjit::object.
2238 (gccjit::context::new_case): New method.
2239 (gccjit::block::end_with_switch): New method.
2240 (gccjit::case_::case): New ctors.
2241 (gccjit::case_::get_inner_case): New method.
2242 * libgccjit.c: Include "typed-splay-tree.h"
2243 (struct gcc_jit_case): New.
2244 (gcc_jit_context_new_case): New function.
2245 (gcc_jit_case_as_object): New function.
2246 (valid_dest_for_switch): New function.
2247 (valid_case_for_switch): New function.
2248 (class api_call_validator): New class.
2249 (class case_range_validator): New class.
2250 (case_range_validator::case_range_validator): New.
2251 (case_range_validator::validate): New.
2252 (case_range_validator::case_compare): New.
2253 (case_range_validator::get_wide_int): new.
2254 (gcc_jit_block_end_with_switch): New.
2255 * libgccjit.h: Add gcc_jit_case to class hierarchy comment.
2256 (gcc_jit_case): New typedef.
2257 (gcc_jit_context_new_case): New function.
2258 (gcc_jit_case_as_object): New function.
2259 (gcc_jit_block_end_with_switch): New function.
2260 (LIBGCCJIT_HAVE_SWITCH_STATEMENTS): New.
2261 * libgccjit.map: Add gcc_jit_block_end_with_switch,
2262 gcc_jit_case_as_object and gcc_jit_context_new_case.
2263
6a3603e3
DM
22642015-06-30 David Malcolm <dmalcolm@redhat.com>
2265
2266 PR jit/66546
2267 * docs/cp/topics/contexts.rst
2268 (gccjit::context::set_bool_allow_unreachable_blocks): New.
2269 * docs/topics/compatibility.rst (LIBGCCJIT_ABI_2): New.
2270 * docs/topics/contexts.rst (Options): Add notes discussing the
2271 transition from enums to entrypoints for new options.
2272 (gcc_jit_context_set_bool_allow_unreachable_blocks): New.
2273 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2274 * jit-common.h (gcc::jit::inner_bool_option): New enum.
2275 * jit-recording.c: Within namespace gcc::jit...
2276 (recording::context::context): Handle m_inner_bool_options.
2277 (recording::context::set_inner_bool_option): New.
2278 (inner_bool_option_reproducer_strings): New.
2279 (recording::context::log_all_options): Log the "inner" bool
2280 options.
2281 (recording::context::log_inner_bool_option): New.
2282 (recording::context::dump_reproducer_to_file): Write initializers
2283 for "inner" bool options.
2284 (recording::function::validate): Don't check for block
2285 reachability if INNER_BOOL_OPTION_ALLOW_UNREACHABLE_BLOCKS is set.
2286 * jit-recording.h: Within namespace gcc::jit...
2287 (recording::context::set_inner_bool_option): New.
2288 (recording::context::get_inner_bool_option): New.
2289 (recording::context::log_inner_bool_option): New.
2290 (recording::context::m_inner_bool_options): New.
2291 * libgccjit++.h
2292 (gccjit::context::set_bool_allow_unreachable_blocks): New.
2293 * libgccjit.c
2294 (gcc_jit_context_set_bool_allow_unreachable_blocks): New.
2295 * libgccjit.h: Add note about options present in the
2296 initial release of libgccjit.
2297 (gcc_jit_context_set_bool_allow_unreachable_blocks): New API
2298 entrypoint.
2299 (LIBGCCJIT_HAVE_gcc_jit_context_set_bool_allow_unreachable_blocks):
2300 New macro.
2301 * libgccjit.map (LIBGCCJIT_ABI_2): New, containing...
2302 (gcc_jit_context_set_bool_allow_unreachable_blocks): ...this new
2303 entrypoint.
2304
fa22c20d
DM
23052015-06-30 David Malcolm <dmalcolm@redhat.com>
2306
2307 PR jit/66628
2308 * docs/cp/topics/contexts.rst (Additional command-line options):
2309 New section.
2310 * docs/topics/compatibility.rst: New file.
2311 * docs/topics/contexts.rst (Additional command-line options): New
2312 section.
2313 * docs/topics/index.rst: Add compatibility.rst.
2314 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2315 * jit-playback.c (make_fake_args): Add call to
2316 append_command_line_options.
2317 * jit-recording.c: Within namespace gcc::jit...
2318 (recording::context::~context): Free the optnames within
2319 m_command_line_options.
2320 (recording::context::set_bool_option): Likewise.
2321 (recording::context::add_command_line_option): New method.
2322 (recording::context::append_command_line_options): New method.
2323 (recording::context::dump_reproducer_to_file): Add command-line
2324 options.
2325 * jit-recording.h: Within namespace gcc::jit...
2326 (recording::context::add_command_line_option): New method.
2327 (recording::context::append_command_line_options): New method.
2328 (recording::context::m_command_line_options): New field.
2329 * libgccjit++.h (gccjit::context::add_command_line_option): New
2330 method.
2331 * libgccjit.c (gcc_jit_context_add_command_line_option): New API
2332 entrypoint.
2333 * libgccjit.h (gcc_jit_context_add_command_line_option): New API
2334 entrypoint.
2335 (LIBGCCJIT_HAVE_gcc_jit_context_add_command_line_option): New
2336 macro.
2337 * libgccjit.map: Put existing symbols within LIBGCCJIT_ABI_0; add
2338 LIBGCCJIT_ABI_1 and gcc_jit_context_add_command_line_option.
2339
a6314e15
DM
23402015-06-30 David Malcolm <dmalcolm@redhat.com>
2341
2342 * jit-recording.c
2343 (gcc::jit::recording::context::dump_reproducer_to_file):
2344 Add pragma to generated reproducers to disable -Wunused-variable.
2345 Fix handling of NULL string options.
2346
adb6d84b
DM
23472015-06-30 David Malcolm <dmalcolm@redhat.com>
2348
2349 * docs/cp/topics/expressions.rst: Remove stray semicolon.
2350 * docs/cp/topics/functions.rst: Remove stray backslash.
2351 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2352
f0889939
AM
23532015-06-25 Andrew MacLeod <amacleod@redhat.com>
2354
2355 * dummy-frontend.c: Remove ipa-ref.h and plugin-api.h from include list.
2356 * jit-playback.c: Likewise.
2357
9cad7a76
AM
23582015-06-25 Andrew Macleod <amacleod@redhat.com>
2359
2360 * jit-common.h: Don't include alias.h.
2361
41571b55
DM
23622015-06-17 David Malcolm <dmalcolm@redhat.com>
2363
2364 * libgccjit.c (gcc_jit_lvalue_access_field): Verify that the field
2365 is for the correct struct.
2366 (gcc_jit_rvalue_access_field): Likewise.
2367
abb226c9
AM
23682015-06-17 Andrew MacLeod <amacleod@redhat.com>
2369
2370 * dummy-frontend.c: Do not include input.h, line-map.h or is-a.h.
2371 * jit-common.h: Likewise.
2372 * jit-playback.c: Likewise.
2373
bd93aa1a
DM
23742015-06-16 David Malcolm <dmalcolm@redhat.com>
2375
2376 PR jit/66539
2377 * jit-recording.c: Within namespace gcc::jit::recording::
2378 (rvalue::get_debug_string_parens): New function.
2379 (binary_op::make_debug_string): Update to mimic C precedence
2380 rules.
2381 (binary_op_precedence): New array.
2382 (binary_op::get_precedence): New function.
2383 (comparison::make_debug_string): Update to mimic C precedence
2384 rules.
2385 (comparison_precedence): New array.
2386 (comparison::get_precedence): New function.
2387 (cast::make_debug_string): Update to mimic C precedence rules.
2388 (call::make_debug_string): Likewise.
2389 (call_through_ptr::make_debug_string): Likewise.
2390 (array_access::make_debug_string): Likewise.
2391 (access_field_of_lvalue::make_debug_string): Likewise.
2392 (access_field_rvalue::make_debug_string): Likewise.
2393 (dereference_field_rvalue::make_debug_string): Likewise.
2394 (dereference_rvalue::make_debug_string): Likewise.
2395 (get_address_of_lvalue::make_debug_string): Likewise.
2396 * jit-recording.h: Within namespace gcc::jit::recording::
2397 (precedence): New enum.
2398 (rvalue::rvalue): Initialize field "m_parenthesized_string".
2399 (rvalue::get_debug_string_parens): New method.
2400 (rvalue::get_precedence): New pure virtual function.
2401 (rvalue::m_parenthesized_string): New field.
2402 (param::get_precedence): New function.
2403 (global::get_precedence): New function.
2404 (memento_of_new_rvalue_from_const::get_precedence): New function.
2405 (memento_of_new_string_literal::get_precedence): New function.
2406 (unary_op::get_precedence): New function.
2407 (binary_op::get_precedence): New function.
2408 (comparison::get_precedence): New function.
2409 (cast::get_precedence): New function.
2410 (call::get_precedence): New function.
2411 (call_through_ptr::get_precedence): New function.
2412 (array_access::get_precedence): New function.
2413 (access_field_of_lvalue::get_precedence): New function.
2414 (access_field_rvalue::get_precedence): New function.
2415 (dereference_field_rvalue::get_precedence): New function.
2416 (dereference_rvalue::get_precedence): New function.
2417 (get_address_of_lvalue::get_precedence): New function.
2418 (local::get_precedence): New function.
2419
83c1b80e
MK
24202015-06-09 Matthias Klose <doko@ubuntu.com>
2421
2422 * Make-lang.in (jit.install-common): Install headers using INSTALL_DATA.
2423
13fdf2e2
AM
24242015-06-08 Andrew MacLeod <amacleod@redhat.com>
2425
2426 * dummy-frontend.c : Adjust include files.
2427 * jit-common.h : Likewise.
2428 * jit-playback.c : Likewise.
2429
e4753451
DM
24302015-06-05 David Malcolm <dmalcolm@redhat.com>
2431
2432 * dummy-frontend.c
2433 (jit_langhook_post_compilation_parsing_cleanups): Remove.
2434 (LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS): Remove
2435 * jit-playback.c (gcc::jit::playback::context::new_global): Add
2436 call to varpool_node::finalize_decl.
2437 (gcc::jit::playback::context::finalize_global_decls): Remove.
2438 * jit-playback.h
2439 (gcc::jit::playback::context::finalize_global_decls): Remove.
2440
e7547bc6
DM
24412015-06-05 David Malcolm <dmalcolm@redhat.com>
2442
2443 * dummy-frontend.c (jit_langhook_write_globals): Rename to...
2444 (jit_langhook_post_compilation_parsing_cleanups): ...this, and
2445 eliminate calls to finalize_compilation_unit and
2446 write_global_decls_2.
2447 (LANG_HOOKS_WRITE_GLOBALS): Rename to...
2448 (LANG_HOOKS_POST_COMPILATION_PARSING_CLEANUPS): ...this and
2449 redirect from jit_langhook_write_globals to
2450 jit_langhook_post_compilation_parsing_cleanups.
2451 * jit-playback.c
2452 (gcc::jit::playback::context::write_global_decls_1): Rename to...
2453 (gcc::jit::playback::context::finalize_global_decls): ...this.
2454 (gcc::jit::playback::context::write_global_decls_1): Delete.
2455 * jit-playback.h
2456 (gcc::jit::playback::context::write_global_decls_1): Rename to...
2457 (gcc::jit::playback::context::finalize_global_decls): ...this.
2458 (gcc::jit::playback::context::write_global_decls_1): Delete.
2459
ecb9f223
AM
24602015-06-04 Andrew MacLeod <amacleod@redhat.com>
2461
2462 * dummy-frontend.c: Adjust includes for restructured coretypes.h.
2463 * jit-common.h: Likewise.
2464 * jit-playback.c: Likewise.
2465
2637afb7
DM
24662015-05-12 David Malcolm <dmalcolm@redhat.com>
2467
2468 * jit-builtins.c: Include vec.h before target.h.
2469
46bf0b0a
JW
24702015-04-27 Jim Wilson <jim.wilson@linaro.org>
2471
2472 * Make-lang.in (jit.mostlyclean): Remove shared libraries and object
2473 files.
2474
51c5c6b5
DM
24752015-04-09 David Malcolm <dmalcolm@redhat.com>
2476
2477 PR jit/65691
2478 * docs/cp/topics/expressions.rst (Simple expressions): Fix copy
2479 and paste error in description of gccjit::context::one.
2480 * docs/topics/expressions.rst (Simple expressions): Likewise in
2481 description of gcc_jit_context_one.
2482 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2483
f40fd895
UB
24842015-03-13 Uros Bizjak <ubizjak@gmail.com>
2485
2486 * jit-recording.c (dump::write): Also check vasprintf return value.
2487 (recording::context::add_error_va): Ditto.
2488 (recording::string::from_printf): Ditto.
2489
18eb0d13
DM
24902015-03-13 David Malcolm <dmalcolm@redhat.com>
2491
2492 * docs/internals/index.rst (Packaging notes): New section.
2493 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2494
7ef96183
DM
24952015-03-05 David Malcolm <dmalcolm@redhat.com>
2496
2497 * docs/cp/intro/tutorial03.rst: Add missing arguments to
2498 gccjit::block::end_with_conditional call. Add on_true/on_false
2499 comments. Tweak the wording.
2500 * docs/intro/tutorial03.rst: Add missing arguments to
2501 gcc_jit_block_end_with_conditional call. Add some clarifying
2502 comments.
2503 * docs/topics/compilation.rst: Tweak the wording to avoid an
2504 ambiguous use of "this".
2505 * docs/topics/contexts.rst: Fix a typo.
2506 * docs/topics/expressions.rst (GCC_JIT_BINARY_OP_MINUS): Remove
2507 a stray backtick.
2508 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2509
56a9f6bc
TS
25102015-02-24 Thomas Schwinge <thomas@codesourcery.com>
2511
2512 PR libgomp/64625
2513 * jit-builtins.c (DEF_FUNCTION_TYPE_VAR_8)
2514 (DEF_FUNCTION_TYPE_VAR_12): Remove macros.
2515 (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros.
2516 * jit-builtins.h (DEF_FUNCTION_TYPE_VAR_8)
2517 (DEF_FUNCTION_TYPE_VAR_12): Remove macros.
2518 (DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros.
2519
a4be4e91
DM
25202015-02-04 David Malcolm <dmalcolm@redhat.com>
2521
2522 PR jit/64257
2523 * docs/conf.py (html_theme): Change from 'pyramid'
2524 to 'sphinxdoc'.
2525
f435bff3
DM
25262015-02-04 David Malcolm <dmalcolm@redhat.com>
2527
2528 * docs/topics/contexts.rst (gcc_jit_context_acquire): Fix
2529 typo.
2530 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2531
0ed4f017
DM
25322015-02-03 David Malcolm <dmalcolm@redhat.com>
2533
2534 * jit-logging.h (gcc::jit::log_user::log): Make const.
2535 * jit-recording.c (gcc::jit::recording::context::set_str_option):
2536 Log the new value of the option.
2537 (gcc::jit::recording::context::set_int_option): Likewise.
2538 (gcc::jit::recording::context::set_bool_option): Likewise.
2539 (gcc::jit::recording::context::compile): Log the value of all
2540 options.
2541 (gcc::jit::recording::context::compile_to_file): Likewise.
2542 (gcc::jit::recording::context::log_all_options): New function.
2543 (gcc::jit::recording::context::log_str_option): New function.
2544 (gcc::jit::recording::context::log_int_option): New function.
2545 (gcc::jit::recording::context::log_bool_option): New function.
2546 * jit-recording.h (gcc::jit::recording::context::log_all_options):
2547 New function.
2548 (gcc::jit::recording::context::log_str_option): New function.
2549 (gcc::jit::recording::context::log_int_option): New function.
2550 (gcc::jit::recording::context::log_bool_option): New function.
2551 * docs/internals/test-hello-world.exe.log.txt: Update for above
2552 changes.
2553 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2554
2cb844ce
DM
25552015-02-03 David Malcolm <dmalcolm@redhat.com>
2556
2557 PR jit/64810
2558 * Make-lang.in (jit_OBJS): Add jit/jit-spec.o and gcc.o.
2559 (LIBGCCJIT_FILENAME): Add EXTRA_GCC_OBJS.
2560 * jit-playback.c: Include gcc.h.
2561 (gcc::jit::playback::context::compile): Move mutex acquisition
2562 to before the call to make_fake_args.
2563 (append_arg_from_driver): New function.
2564 (gcc::jit::playback::context::make_fake_args): On the first call,
2565 call into driver_get_configure_time_options to get configure-time
2566 default options and cache them. Add them to the args for
2567 toplev::main.
2568 * jit-spec.c: New source file.
2569 * docs/internals/test-hello-world.exe.log.txt: Update to reflect
2570 above changes.
2571 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2572
16a71c50
DM
25732015-02-02 David Malcolm <dmalcolm@redhat.com>
2574
2575 PR jit/64810
2576 * dummy-frontend.c (jit_langhook_type_for_mode): Support
2577 TYPE_MODE (long_long_integer_type_node).
2578
53c04ec9
DM
25792015-01-27 David Malcolm <dmalcolm@redhat.com>
2580
2581 * docs/internals/test-hello-world.exe.log.txt: Add example version
2582 lines.
2583 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2584 * jit-common.h (gcc::jit::dump::get_file): New accessor.
2585 * jit-logging.c: Include toplev.h.
2586 (gcc::jit::logger::logger): Log the GCC version.
2587 * jit-recording.c: Include toplev.h.
2588 (gcc:jit::recording::context::dump_reproducer_to_file): Log the
2589 GCC version.
2590
dc44ee3a
DM
25912015-01-26 David Malcolm <dmalcolm@redhat.com>
2592
2593 * docs/topics/compilation.rst (gcc_jit_result_get_code): Fix typo.
2594 * docs/topics/contexts.rst (gcc_jit_context_get_last_error): The
2595 error buffer is only valid until the next call to the context.
2596 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2597 * libgccjit.h (gcc_jit_context_get_first_error): Reword the
2598 comment to omit mention of compiling.
2599 (gcc_jit_context_get_last_error): The error buffer is only valid
2600 until the next call to the context.
2601
3349605d
DM
26022015-01-26 David Malcolm <dmalcolm@redhat.com>
2603
2604 PR jit/64708
2605 * config-lang.in (compilers): Drop "libgccjit.so".
2606
6fc2d0f3
DM
26072015-01-23 David Malcolm <dmalcolm@redhat.com>
2608
2609 PR jit/64721
2610 * jit-playback.c (gcc::jit::playback::context::compile): Construct
2611 toplev instances with init_signals=false.
2612
fdce7209
DM
26132015-01-19 David Malcolm <dmalcolm@redhat.com>
2614
2615 * docs/cp/topics/results.rst: Rename to...
2616 * docs/cp/topics/compilation.rst: ...this, and add section on
2617 ahead-of-time compilation.
2618 * docs/cp/topics/index.rst: Update for renaming of results.rst
2619 to compilation.rst.
2620 * docs/examples/emit-alphabet.bf: New file, a sample "brainf"
2621 script.
2622 * docs/examples/tut05-bf.c: New file, implementing a compiler
2623 for "brainf".
2624 * docs/internals/test-hello-world.exe.log.txt: Update to reflect
2625 changes to logger output.
2626 * docs/intro/index.rst: Add tutorial05.rst
2627 * docs/intro/tutorial05.rst: New file.
2628 * docs/topics/results.rst: Rename to...
2629 * docs/topics/compilation.rst: ...this, and add section on
2630 ahead-of-time compilation.
2631 * docs/topics/index.rst: Update for renaming of results.rst to
2632 compilation.rst.
2633 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2634 * jit-playback.c (gcc::jit::playback::context::compile): Convert
2635 return type from result * to void. Move the code to convert to
2636 dso and dlopen the result to a new pure virtual "postprocess"
2637 method.
2638 (gcc::jit::playback::compile_to_memory::compile_to_memory): New
2639 function.
2640 (gcc::jit::playback::compile_to_memory::postprocess): New
2641 function, based on playback::context::compile.
2642 (gcc::jit::playback::compile_to_file::compile_to_file): New
2643 function.
2644 (gcc::jit::playback::compile_to_file::postprocess): New function.
2645 (gcc::jit::playback::compile_to_file::copy_file): New function.
2646 (gcc::jit::playback::context::convert_to_dso): Move internals
2647 to...
2648 (gcc::jit::playback::context::invoke_driver): New method. Add
2649 "-shared" and "-c" options to driver's argv as needed.
2650 * jit-playback.h: Include "timevar.h".
2651 (gcc::jit::playback::context::compile): Convert return type from
2652 result * to void.
2653 (gcc::jit::playback::context::postprocess): New pure virtual
2654 function, making this an abstract base class.
2655 (gcc::jit::playback::context::get_tempdir): New accessor.
2656 (gcc::jit::playback::context::invoke_driver): New function.
2657 (class gcc::jit::playback::compile_to_memory): New subclass of
2658 playback::context.
2659 (class gcc::jit::playback::compile_to_file): Likewise.
2660 * jit-recording.c (gcc::jit::recording::context::compile): Use a
2661 playback::compile_to_memory, and extract its result.
2662 (gcc::jit::recording::context::compile_to_file): New function.
2663 * jit-recording.h (gcc::jit::recording::context::compile_to_file):
2664 New function.
2665 * libgccjit++.h (gccjit::context::compile_to_file): New method.
2666 * libgccjit.c (gcc_jit_context_compile): Update log message to
2667 clarify that this is an in-memory compile.
2668 (gcc_jit_context_compile_to_file): New function.
2669 * libgccjit.h (gcc_jit_context): Clarify that you can compile
2670 a context more than once, and that you can compile to a file
2671 as well as to memory.
2672 (gcc_jit_result): Clarify that this is the result of an
2673 in-memory compilation.
2674 (gcc_jit_context_compile): Clarify that you can compile, and that
2675 this is an in-memory compilation.
2676 (enum gcc_jit_output_kind): New enum.
2677 (gcc_jit_context_compile_to_file): New function.
2678 (gcc_jit_context_enable_dump): Clarify comment to cover both forms
2679 of compilation.
2680 * libgccjit.map (gcc_jit_context_compile_to_file): New API
2681 entrypoint.
2682 * notes.txt: Update to show the playback::context::postprocess
2683 virtual function.
2684
450e225b
DM
26852015-01-19 David Malcolm <dmalcolm@redhat.com>
2686
2687 * jit-recording.c
2688 (gcc::jit::recording::memento_of_new_string_literal::make_debug_string):
2689 Add missing format string.
2690
499de348
DM
26912015-01-16 David Malcolm <dmalcolm@redhat.com>
2692
2693 * Make-lang.in (lang_checks_parallelized): Add "check-jit".
2694 (check_jit_parallelize): Set this to an arbitrary value (10).
2695
e989e68d
JJ
26962015-01-16 Jakub Jelinek <jakub@redhat.com>
2697
2698 * jit-builtins.h (DEF_FUNCTION_TYPE_VAR_5): Fix spelling of
2699 last argument.
2700 (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12): Define and
2701 undef afterwards.
2702 * jit-builtins.c (DEF_FUNCTION_TYPE_VAR_8, DEF_FUNCTION_TYPE_VAR_12):
2703 Likewise.
2704
179ed8f5
RS
27052015-01-15 Richard Sandiford <richard.sandiford@arm.com>
2706
2707 Update copyright years in docs/.
2708
96a87981
DM
27092015-01-15 David Malcolm <dmalcolm@redhat.com>
2710
2711 * libgccjit.c (gcc_jit_block_add_assignment_op): Check that the
2712 lvalue and the rvalue are of compatible type.
2713
86d0ac88
DM
27142015-01-13 David Malcolm <dmalcolm@redhat.com>
2715
2716 * docs/cp/topics/contexts.rst (Debugging): Add
2717 gccjit::context::dump_reproducer_to_file.
2718 * docs/internals/index.rst (Design notes): New section,
2719 discussing input validation and
2720 gcc_jit_context_dump_reproducer_to_file.
2721 * docs/topics/contexts.rst (Debugging): Add
2722 gcc_jit_context_dump_reproducer_to_file.
2723 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2724 * jit-common.h (gcc::jit::dump::get_context): New accessor.
2725 * jit-recording.c: Include "hash-map.h".
2726 Within namespace ::gcc::jit...
2727 (dump::write): Flush each line.
2728 (dump::make_location): Pass false for new param "created_by_user".
2729 (class allocator): New class.
2730 (allocator::~allocator): New function.
2731 (allocator::xstrdup_printf): New function.
2732 (allocator::xstrdup_printf_va): New function.
2733 (class reproducer): New subclass of dump.
2734 (reproducer::reproducer): New function.
2735 (reproducer::write_params): New function.
2736 (reproducer::write_args): New function.
2737 (reproducer::make_identifier): New function.
2738 (reproducer::make_tmp_identifier): New function.
2739 (reproducer::get_identifier): New pair of functions.
2740 (reproducer::get_identifier_as_rvalue): New function.
2741 (reproducer::get_identifier_as_lvalue): New function.
2742 (reproducer::get_identifier_as_type): New function.
2743 (reproducer::xstrdup_printf): New function.
2744 (recording::context::context): Initialize m_toplevel_ctxt.
2745 (recording::context::new_location): Add param created_by_user.
2746 (str_option_reproducer_strings): New table of strings.
2747 (int_option_reproducer_strings): Likewise.
2748 (bool_option_reproducer_strings): Likewise.
2749 (get_type_enum_strings): Likewise.
2750 (names_of_function_kinds): Likewise.
2751 (global_kind_reproducer_strings): Likewise.
2752 (unary_op_reproducer_strings): Likewise.
2753 (binary_op_reproducer_strings): Likewise.
2754 (comparison_reproducer_strings): Likewise.
2755 Within namespace ::gcc::jit::recording::...
2756 (context::dump_reproducer_to_file): New function.
2757 (string::write_reproducer): Likewise.
2758 (location::write_reproducer): Likewise.
2759 (type::access_as_type): Likewise.
2760 (memento_of_get_type::write_reproducer): Likewise.
2761 (memento_of_get_pointer::write_reproducer): Likewise.
2762 (memento_of_get_const::write_reproducer): Likewise.
2763 (memento_of_get_volatile::write_reproducer): Likewise.
2764 (array_type::write_reproducer): Likewise.
2765 (function_type::write_reproducer): Likewise.
2766 (function_type::write_deferred_reproducer): Likewise.
2767 (field::write_reproducer): Likewise.
2768 (struct_::access_as_type): Likewise.
2769 (struct_::write_reproducer): Likewise.
2770 (union_::write_reproducer): Likewise.
2771 (fields::write_reproducer): Likewise.
2772 (rvalue::access_as_rvalue): Likewise.
2773 (lvalue::access_as_rvalue): Likewise.
2774 (lvalue::access_as_lvalue): Likewise.
2775 (param::access_as_rvalue): Likewise.
2776 (param::access_as_lvalue): Likewise.
2777 (param::write_reproducer): Likewise.
2778 (function::write_reproducer): Likewise.
2779 (block::write_reproducer): Likewise.
2780 (global::write_reproducer): Likewise.
2781 (memento_of_new_rvalue_from_const <int>::write_reproducer):
2782 Likewise.
2783 (memento_of_new_rvalue_from_const <long>::write_reproducer):
2784 Likewise.
2785 (memento_of_new_rvalue_from_const <double>::write_reproducer):
2786 Likewise.
2787 (memento_of_new_rvalue_from_const <void *>::write_reproducer):
2788 Likewise.
2789 (memento_of_new_string_literal::write_reproducer): Likewise.
2790 (unary_op::write_reproducer): Likewise.
2791 (binary_op::write_reproducer): Likewise.
2792 (comparison::write_reproducer): Likewise.
2793 (cast::write_reproducer): Likewise.
2794 (call::write_reproducer): Likewise.
2795 (call_through_ptr::write_reproducer): Likewise.
2796 (array_access::write_reproducer): Likewise.
2797 (access_field_of_lvalue::write_reproducer): Likewise.
2798 (access_field_rvalue::write_reproducer): Likewise.
2799 (dereference_field_rvalue::write_reproducer): Likewise.
2800 (dereference_rvalue::write_reproducer): Likewise.
2801 (get_address_of_lvalue::write_reproducer): Likewise.
2802 (local::write_reproducer): Likewise.
2803 (eval::write_reproducer): Likewise.
2804 (assignment::write_reproducer): Likewise.
2805 (assignment_op::write_reproducer): Likewise.
2806 (comment::write_reproducer): Likewise.
2807 (conditional::write_reproducer): Likewise.
2808 (jump::write_reproducer): Likewise.
2809 (return_::write_reproducer): Likewise.
2810 * jit-recording.h (gcc::jit::reproducer): New forward declararion.
2811 Within namespace ::gcc::jit::recording::...
2812 (context::new_location): Add "created_by_user" param.
2813 (context::dump_reproducer_to_file): New method.
2814 (context::m_toplevel_ctxt): New field.
2815 (memento::write_reproducer): New pure virtual function.
2816 (memento::dyn_cast_location): New virtual function.
2817 (string::write_reproducer):
2818 (location::location): Add "created_by_user" param.
2819 (location::dyn_cast_location): New function.
2820 (location::created_by_user): New accessor.
2821 (location::write_reproducer): New function.
2822 (location::m_created_by_user): New field.
2823 (type::access_as_type): New virtual function.
2824 (location::write_reproducer): Likewise.
2825 (type::access_as_type): Likewise.
2826 (memento_of_get_type::write_reproducer): Likewise.
2827 (memento_of_get_pointer::write_reproducer): Likewise.
2828 (memento_of_get_const::write_reproducer): Likewise.
2829 (memento_of_get_volatile::write_reproducer): Likewise.
2830 (array_type::write_reproducer): Likewise.
2831 (function_type::write_reproducer): Likewise.
2832 (function_type::write_deferred_reproducer): Likewise.
2833 (field::write_reproducer): Likewise.
2834 (struct_::access_as_type): Likewise.
2835 (struct_::write_reproducer): Likewise.
2836 (union_::write_reproducer): Likewise.
2837 (union_::m_fields): Remove stray unused field.
2838 (fields::length): New accessor.
2839 (fields::get_field): New accessor.
2840 (fields::write_reproducer): New function.
2841 (rvalue::access_as_rvalue): Likewise.
2842 (lvalue::access_as_rvalue): Likewise.
2843 (lvalue::access_as_lvalue): Likewise.
2844 (param::access_as_rvalue): Likewise.
2845 (param::access_as_lvalue): Likewise.
2846 (param::write_reproducer): Likewise.
2847 (function::write_reproducer): Likewise.
2848 (block::write_reproducer): Likewise.
2849 (global::write_reproducer): Likewise.
2850 (memento_of_new_rvalue_from_const <HOST_TYPE>::write_reproducer):
2851 Likewise.
2852 (memento_of_new_string_literal::write_reproducer): Likewise.
2853 (unary_op::write_reproducer): Likewise.
2854 (binary_op::write_reproducer): Likewise.
2855 (comparison::write_reproducer): Likewise.
2856 (cast::write_reproducer): Likewise.
2857 (call::write_reproducer): Likewise.
2858 (call_through_ptr::write_reproducer): Likewise.
2859 (array_access::write_reproducer): Likewise.
2860 (access_field_of_lvalue::write_reproducer): Likewise.
2861 (access_field_rvalue::write_reproducer): Likewise.
2862 (dereference_field_rvalue::write_reproducer): Likewise.
2863 (dereference_rvalue::write_reproducer): Likewise.
2864 (get_address_of_lvalue::write_reproducer): Likewise.
2865 (local::write_reproducer): Likewise.
2866 (eval::write_reproducer): Likewise.
2867 (assignment::write_reproducer): Likewise.
2868 (assignment_op::write_reproducer): Likewise.
2869 (comment::write_reproducer): Likewise.
2870 (conditional::write_reproducer): Likewise.
2871 (jump::write_reproducer): Likewise.
2872 (return_::write_reproducer): Likewise.
2873 * libgccjit++.h (gccjit::context::dump_reproducer_to_file): New.
2874 * libgccjit.c (gcc_jit_context_new_location): Pass "true" as
2875 param "created_by_user".
2876 (gcc_jit_context_dump_reproducer_to_file): New API entrypoint.
2877 * libgccjit.h (gcc_jit_context_dump_reproducer_to_file): New API
2878 entrypoint.
2879 * libgccjit.map (gcc_jit_context_dump_reproducer_to_file): New API
2880 entrypoint.
2881
f6f2b019
DM
28822015-01-12 David Malcolm <dmalcolm@redhat.com>
2883
2884 * jit-recording.c (class gcc::jit::rvalue_usage_validator): New.
2885 (gcc::jit::rvalue_usage_validator::rvalue_usage_validator): New
2886 ctor.
2887 (gcc::jit::rvalue_usage_validator::visit): New function.
2888 (gcc::jit::recording::rvalue::verify_valid_within_stmt): New
2889 function.
2890 (gcc::jit::recording::rvalue::set_scope): New function.
2891 (gcc::jit::recording::function::function): Call set_scope on each
2892 param, issuing errors for any params that already have a function.
2893 (gcc::jit::recording::block::add_eval): Return the new statement;
2894 update the comment given that some error-checking now happens after
2895 this returns.
2896 (gcc::jit::recording::block::add_assignment): Likewise.
2897 (gcc::jit::recording::block::add_assignment_op): Likewise.
2898 (gcc::jit::recording::block::add_comment): Likewise.
2899 (gcc::jit::recording::block::end_with_conditional): Likewise.
2900 (gcc::jit::recording::block::end_with_jump): Likewise.
2901 (gcc::jit::recording::block::end_with_return): Likewise.
2902 (gcc::jit::recording::block::validate): Add a comment.
2903 (gcc::jit::recording::unary_op::visit_children): New function.
2904 (gcc::jit::recording::binary_op::visit_children): New function.
2905 (gcc::jit::recording::comparison::visit_children): New function.
2906 (gcc::jit::recording::cast::visit_children): New function.
2907 (gcc::jit::recording::call::visit_children): New function.
2908 (gcc::jit::recording::call_through_ptr::visit_children): New function.
2909 (gcc::jit::recording::array_access::visit_children): New function.
2910 (gcc::jit::recording::access_field_of_lvalue::visit_children): New
2911 function.
2912 (gcc::jit::recording::access_field_rvalue::visit_children): New
2913 function.
2914 (gcc::jit::recording::dereference_field_rvalue::visit_children):
2915 New function.
2916 (gcc::jit::recording::dereference_rvalue::visit_children): New
2917 function.
2918 (gcc::jit::recording::get_address_of_lvalue::visit_children): New
2919 function.
2920 * jit-recording.h: Within namespace gcc::jit::recording...
2921 (class rvalue_visitor): New.
2922 (rvalue::rvalue): Initialize m_scope.
2923 (rvalue::get_loc): New accessor.
2924 (rvalue::verify_valid_within_stmt): New function.
2925 (rvalue::visit_children): New pure virtual function.
2926 (rvalue::set_scope): New function.
2927 (rvalue::get_scope): New function.
2928 (rvalue::dyn_cast_param): New function.
2929 (rvalue::m_scope): New field.
2930 (param::visit_children): New empty function.
2931 (param::dyn_cast_param): New function.
2932 (function::get_loc): New function.
2933 (block::add_eval): Return the new statement.
2934 (block::add_assignment): Likewise.
2935 (block::add_assignment_op): Likewise.
2936 (block::add_comment): Likewise.
2937 (block::end_with_conditional): Likewise.
2938 (block::end_with_jump): Likewise.
2939 (block::end_with_return): Likewise.
2940 (global::visit_children): New function.
2941 (memento_of_new_rvalue_from_const<HOST_TYPE>::visit_children):
2942 New function.
2943 (memento_of_new_string_literal::visit_children): New function.
2944 (unary_op::visit_children): New function.
2945 (binary_op::visit_children): New function.
2946 (comparison::visit_children): New function.
2947 (cast::visit_children): New function.
2948 (call::visit_children): New function.
2949 (call_through_ptr::visit_children): New function.
2950 (array_access::visit_children): New function.
2951 (access_field_of_lvalue::visit_children): New function.
2952 (access_field_rvalue::visit_children): New function.
2953 (dereference_field_rvalue::visit_children): New function.
2954 (dereference_rvalue::visit_children): New function.
2955 (get_address_of_lvalue::visit_children): New function.
2956 (local::local): Call set_scope.
2957 (local::visit_children): New function.
2958 (statement::get_block): Make public.
2959 * libgccjit.c (RETURN_VAL_IF_FAIL_PRINTF5): New macro.
2960 (RETURN_NULL_IF_FAIL_PRINTF5): New macro.
2961 (gcc_jit_context_new_function): Verify that each param has
2962 not yet been used for creating another function.
2963 (gcc_jit_block_add_eval): After creating the stmt, verify
2964 that the rvalue expression tree is valid to use within it.
2965 (gcc_jit_block_add_assignment): Likewise for the lvalue and
2966 rvalue expression trees.
2967 (gcc_jit_block_add_assignment_op): Likewise.
2968 (gcc_jit_block_end_with_conditional): Likewise for the boolval
2969 expression tree.
2970 (gcc_jit_block_end_with_return): Likewise for the rvalue
2971 expression tree.
2972 (gcc_jit_block_end_with_void_return): Remove return of "void",
2973 now that block::end_with_return is now non-void.
2974
1c35cc2c
DM
29752015-01-12 David Malcolm <dmalcolm@redhat.com>
2976
2977 * jit-playback.c (gcc::jit::playback::context::read_dump_file):
2978 Add missing fclose on error-handling path.
2979
791cfef8
DM
29802015-01-12 David Malcolm <dmalcolm@redhat.com>
2981
2982 * docs/cp/topics/expressions.rst (Global variables): Add
2983 enum gcc_jit_global_kind param to gccjit::context::new_global.
2984 * docs/topics/expressions.rst (Global variables): Likewise.
2985 Document the new enum.
2986 * docs/topics/results.rst (Compilation results): Document
2987 globals-handling.
2988 * docs/_build/texinfo/libgccjit.texi: Regenerate.
2989 * dummy-frontend.c (jit_langhook_write_globals): Call into the
2990 playback context's write_global_decls_1 and write_global_decls_2
2991 before and after calling symtab->finalize_compilation_unit ().
2992 * jit-playback.c: Include "debug.h".
2993 (gcc::jit::playback::context::new_global): Add "kind" param and
2994 use it to set TREE_PUBLIC, TREE_STATIC and DECL_EXTERNAL on the
2995 underlying VAR_DECL. Call varpool_node::get_create on the
2996 VAR_DECL, and add it to m_globals.
2997 (gcc::jit::playback::context::write_global_decls_1): New function.
2998 (gcc::jit::playback::context::write_global_decls_2): New function.
2999 * jit-playback.h (gcc::jit::playback::context::context): Call
3000 create on m_globals.
3001 (gcc::jit::playback::context::new_global): Add "kind" param.
3002 (gcc::jit::playback::context::write_global_decls_1): New function.
3003 (gcc::jit::playback::context::write_global_decls_2): New function.
3004 (gcc::jit::playback::context::m_globals): New field.
3005 * jit-recording.c (gcc::jit::recording::context::context):
3006 Initialize m_globals.
3007 (gcc::jit::recording::context::new_global): Add param "kind".
3008 Add the new global to m_globals.
3009 (gcc::jit::recording::context::dump_to_file): Dump the globals.
3010 (gcc::jit::recording::global::replay_into): Add field m_kind.
3011 (gcc::jit::recording::global::write_to_dump): New override.
3012 * jit-recording.h (gcc::jit::recording::context::new_global): Add
3013 param "kind".
3014 (gcc::jit::recording::context::m_globals): New field.
3015 (gcc::jit::recording::global::global): Add param kind.
3016 (gcc::jit::recording::global::write_to_dump): New override.
3017 (gcc::jit::recording::global::m_kind): New field.
3018 * jit-result.c (gcc::jit::result::get_global): New function.
3019 * jit-result.h (gcc::jit::result::get_global): New function.
3020 * libgccjit++.h (gccjit::context::new_global): Add "kind" param.
3021 * libgccjit.c (gcc_jit_context_new_global): Likewise.
3022 (gcc_jit_result_get_global): New API entrypoint.
3023 * libgccjit.h (gcc_jit_result_get_global): New API entrypoint.
3024 (enum gcc_jit_global_kind): New enum.
3025 (gcc_jit_context_new_global): API change: add "kind" param.
3026 * libgccjit.map (gcc_jit_result_get_global): New symbol.
3027
860e981c
DM
30282015-01-09 David Malcolm <dmalcolm@redhat.com>
3029
3030 * dummy-frontend.c: Include "fixed-value.h", "alias.h", "flags.h",
3031 "symtab.h", "inchash.h". Move include of "hash-set.h" much
3032 earlier.
3033 * jit-builtins.c: Remove redundant includes of "opts.h" and
3034 "tree.h".
3035 * jit-common.h: Include "hash-set.h", "input.h", "vec.h",
3036 "double-int.h", "alias.h", "flags.h", "symtab.h", "inchash.h".
3037 * jit-playback.c: Include "hashtab.h", "machmode.h", "input.h",
3038 "statistics.h", "vec.h", "double-int.h", "real.h",
3039 "fixed-value.h", "alias.h", "flags.h", "symtab.h", "tree-core.h",
3040 "inchash.h", "fold-const.h". Move include of "hash-set.h" to
3041 earlier.
3042 * jit-recording.c: Remove redundant includes of "opts.h" and
3043 "tree.h".
3044
ccce3b2a
DM
30452015-01-09 David Malcolm <dmalcolm@redhat.com>
3046
3047 * docs/cp/topics/expressions.rst (Simple expressions): Use
3048 ":c:type:" for C types. Document new overload of
3049 gcc::jit::context::new_rvalue.
3050 * docs/topics/expressions.rst (Simple expressions): Use
3051 ":c:type:" for C types. Document new entrypoint
3052 gcc_jit_context_new_rvalue_from_long.
3053 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3054 * jit-playback.c: Within namespace gcc::jit::playback...
3055 (context::new_rvalue_from_int): Eliminate in favor of...
3056 (context::new_rvalue_from_const <int>): ...this.
3057 (context::new_rvalue_from_double): Eliminate in favor of...
3058 (context::new_rvalue_from_const <double>): ...this.
3059 (context::new_rvalue_from_const <long>): New.
3060 (context::new_rvalue_from_ptr): Eliminate in favor of...
3061 (context::new_rvalue_from_const <void *>): ...this.
3062 * jit-playback.h: Within namespace gcc::jit::playback...
3063 (context::new_rvalue_from_int): Eliminate in favor of...
3064 (context::new_rvalue_from_const <HOST_TYPE>): ...this.
3065 (context::new_rvalue_from_double): Likewise.
3066 (context::new_rvalue_from_ptr): Likewise.
3067 * jit-recording.c: Within namespace gcc::jit::recording...
3068 (context::new_rvalue_from_int): Eliminate.
3069 (context::new_rvalue_from_double): Likewise.
3070 (context::new_rvalue_from_ptr): Likewise.
3071 (class memento_of_new_rvalue_from_const <int>):
3072 Add explicit specialization.
3073 (class memento_of_new_rvalue_from_const <long>):
3074 Likewise.
3075 (class memento_of_new_rvalue_from_const <double>):
3076 Likewise.
3077 (class memento_of_new_rvalue_from_const <void *>):
3078 Likewise.
3079 (memento_of_new_rvalue_from_int::replay_into):
3080 Generalize into...
3081 (memento_of_new_rvalue_from_const <HOST_TYPE>::replay_into):
3082 ...this...
3083 (memento_of_new_rvalue_from_double::replay_into):
3084 ...allowing this...
3085 (memento_of_new_rvalue_from_ptr::replay_into):
3086 ...and this to be deleted.
3087 (memento_of_new_rvalue_from_int::make_debug_string):
3088 Convert to...
3089 (memento_of_new_rvalue_from_const <int>::make_debug_string):
3090 ...this.
3091 (memento_of_new_rvalue_from_double::make_debug_string):
3092 Convert to...
3093 (memento_of_new_rvalue_from_const <double>::make_debug_string):
3094 ...this.
3095 (memento_of_new_rvalue_from_ptr::make_debug_string)
3096 Convert to...
3097 (memento_of_new_rvalue_from_const <void *>::make_debug_string):
3098 ...this.
3099 (memento_of_new_rvalue_from_const <long>::make_debug_string):
3100 New function.
3101 * jit-recording.h: Within namespace gcc::jit::recording...
3102 (context::new_rvalue_from_int): Eliminate.
3103 (context::new_rvalue_from_double): Likewise.
3104 (context::new_rvalue_from_ptr): Likewise, all in favor of...
3105 (context::new_rvalue_from_const <HOST_TYPE>): New family of
3106 methods.
3107 (class memento_of_new_rvalue_from_int): Eliminate.
3108 (class memento_of_new_rvalue_from_double): Likewise.
3109 (class memento_of_new_rvalue_from_ptr): Likewise.
3110 (class memento_of_new_rvalue_from_const <HOST_TYPE>): New family
3111 of rvalue subclasses.
3112 * libgccjit++.h (gccjit::context::new_rvalue): New overload, for
3113 "long".
3114 * libgccjit.c (gcc_jit_context_new_rvalue_from_int): Update for
3115 rewriting of recording::context::new_rvalue_from_int to
3116 recording::context::new_rvalue_from_const <int>.
3117 (gcc_jit_context_new_rvalue_from_long): New API entrypoint.
3118 (gcc_jit_context_new_rvalue_from_double): Update for
3119 rewriting of recording::context::new_rvalue_from_double to
3120 recording::context::new_rvalue_from_const <double>.
3121 (gcc_jit_context_new_rvalue_from_ptr): Update for
3122 rewriting of recording::context::new_rvalue_from_ptr to
3123 recording::context::new_rvalue_from_const <void *>.
3124 * libgccjit.h (gcc_jit_context_new_rvalue_from_long): New API
3125 entrypoint.
3126 * libgccjit.map (gcc_jit_context_new_rvalue_from_long): Likewise.
3127
d2286af3
DM
31282015-01-09 David Malcolm <dmalcolm@redhat.com>
3129
3130 PR jit/64206
3131 * docs/internals/test-hello-world.exe.log.txt: Update, the log now
3132 shows tempdir creation/cleanup.
3133 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3134 * jit-logging.h (class gcc::jit::log_user): Add gcc::jit::tempdir
3135 to the list of subclasses in the comment.
3136 * jit-playback.c (gcc::jit::playback::context::context): Add a
3137 comment clarifying when the tempdir gets cleaned up.
3138 (gcc::jit::playback::context::compile): Pass the context's logger,
3139 if any, to the tempdir.
3140 (gcc::jit::playback::context::dlopen_built_dso): When creating the
3141 gcc::jit::result, if GCC_JIT_BOOL_OPTION_DEBUGINFO is set, hand
3142 over ownership of the tempdir to it.
3143 * jit-result.c: Include "jit-tempdir.h".
3144 (gcc::jit::result::result): Add tempdir param, saving it as
3145 m_tempdir.
3146 (gcc::jit::result::~result): Delete m_tempdir.
3147 * jit-result.h (gcc::jit::result::result): Add tempdir param.
3148 (gcc::jit::result::m_tempdir): New field.
3149 * jit-tempdir.c (gcc::jit::tempdir::tempdir): Add logger param;
3150 add JIT_LOG_SCOPE.
3151 (gcc::jit::tempdir::create): Add JIT_LOG_SCOPE to log entry/exit,
3152 and log m_path_template and m_path_tempdir.
3153 (gcc::jit::tempdir::~tempdir): Add JIT_LOG_SCOPE to log
3154 entry/exit, and log the unlink and rmdir calls.
3155 * jit-tempdir.h: Include "jit-logging.h".
3156 (class gcc::jit::tempdir): Make this be a subclass of log_user.
3157 (gcc::jit::tempdir::tempdir): Add logger param.
3158 * notes.txt: Update to show the two possible places where the
3159 tempdir can be cleaned up.
3160
7c8db13e
DM
31612015-01-08 David Malcolm <dmalcolm@redhat.com>
3162
3163 * libgccjit.h (struct gcc_jit_context): Rewrite the descriptive
3164 comment.
3165
303e1d56
DM
31662015-01-08 David Malcolm <dmalcolm@redhat.com>
3167
3168 * docs/topics/contexts.rst (Error-handling): Document new
3169 entrypoint gcc_jit_context_get_last_error.
3170 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3171 * jit-recording.c (gcc::jit::recording::context::context):
3172 Initialize new fields "m_last_error_str" and
3173 "m_owns_last_error_str".
3174 (gcc::jit::recording::context::~context): Clean up
3175 m_last_error_str, if needed.
3176 (gcc::jit::recording::context::add_error_va): Update
3177 m_last_error_str and m_owns_last_error_str, freeing the old
3178 value if appropriate.
3179 (gcc::jit::recording::context::get_last_error): New function.
3180 * jit-recording.h (gcc::jit::recording::context::get_last_error):
3181 New function.
3182 (gcc::jit::recording::context): New fields m_last_error_str and
3183 m_owns_last_error_str.
3184 * libgccjit.c (gcc_jit_context_get_last_error): New function.
3185 * libgccjit.h (gcc_jit_context_get_last_error): New declaration.
3186 * libgccjit.map (gcc_jit_context_get_last_error): New function.
3187
eb4c16eb
DM
31882015-01-08 David Malcolm <dmalcolm@redhat.com>
3189
3190 * Make-lang.in (jit_OBJS): Add jit/jit-logging.o.
3191 * docs/internals/index.rst (Overview of code structure): Mention
3192 gcc_jit_context_set_logfile, and embed the example logfile.
3193 * docs/internals/test-hello-world.exe.log.txt: New file: example
3194 of a logfile.
3195 * docs/topics/contexts.rst (Debugging): Add documentation
3196 for gcc_jit_context_set_logfile.
3197 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3198 * dummy-frontend.c: Include "jit-logging.h".
3199 (jit_langhook_init): Assert that there is an active playback
3200 context. If it has a logger, log entry/exit to this function.
3201 (jit_langhook_write_globals): Likewise.
3202 * jit-common.h (gcc::jit::logger): New forward declaration.
3203 * jit-logging.c: New file.
3204 * jit-logging.h: New file.
3205 * jit-playback.c: Include "jit-logging.h".
3206 (gcc::jit::playback::context::context): Initialize the log_user
3207 base class from the recording context's logger (if any). Use
3208 JIT_LOG_SCOPE to log entry/exit from the function body.
3209 (gcc::jit::playback::context::~context): Use JIT_LOG_SCOPE to
3210 log entry/exit from the function body.
3211 (gcc::jit::playback::build_stmt_list): Likewise.
3212 (gcc::jit::playback::function::postprocess): Likewise.
3213 (gcc::jit::playback::context::compile): Likewise. Log the
3214 entry/exit to toplev::main and toplev::finalize. Log the
3215 fake argv passed to toplev::main.
3216 (gcc::jit::playback::context::acquire_mutex): Use JIT_LOG_SCOPE to
3217 log entry/exit from the function body.
3218 (gcc::jit::playback::context::release_mutex): Likewise.
3219 (gcc::jit::playback::context::make_fake_args): Likewise.
3220 (gcc::jit::playback::context::extract_any_requested_dumps):
3221 Likewise.
3222 (gcc::jit::playback::context::convert_to_dso): Likewise. Also,
3223 log the arguments that the driver is invoked with.
3224 (gcc::jit::playback::context::dlopen_built_dso): Likewise. Pass
3225 the logger to the result object.
3226 (gcc::jit::playback::context::replay): Use JIT_LOG_SCOPE to
3227 log entry/exit from the function body.
3228 (gcc::jit::playback::context::dump_generated_code): Likewise.
3229 (gcc::jit::playback::context::handle_locations): Likewise.
3230 * jit-playback.h (gcc::jit::playback::context): Make this be
3231 a subclass of gcc::jit::log_user.
3232 * jit-recording.c: Include "jit-logging.h".
3233 (gcc::jit::recording::context::context: Initialize the logger to
3234 NULL for root contexts, or to the parent's logger for child
3235 contexts.
3236 (gcc::jit::recording::context::~context): Use JIT_LOG_SCOPE to
3237 log entry/exit from the function body.
3238 (gcc::jit::recording::context::replay_into): Likewise.
3239 (gcc::jit::recording::context::disassociate_from_playback):
3240 Likewise.
3241 (gcc::jit::recording::context::compile): Likewise.
3242 (recording::context::add_error_va): Likewise. Also, log the
3243 error.
3244 (gcc::jit::recording::context::validate): Use JIT_LOG_SCOPE to
3245 log entry/exit from the function body.
3246 * jit-recording.h: Include "jit-logging.h".
3247 (gcc::jit::recording::context): Make this be a subclass of
3248 gcc::jit::log_user.
3249 * jit-result.c: Include "jit-common.h" and "jit-logging.h".
3250 (gcc::jit::result::result): Add logger param, recording it.
3251 Use JIT_LOG_SCOPE to log entry/exit from the function body.
3252 (gcc::jit::result::~result(): Use JIT_LOG_SCOPE to
3253 log entry/exit from the function body.
3254 (gcc::jit::result::get_code): Likewise.
3255 * jit-result.h (gcc::jit::result): Make this be a subclass of
3256 gcc::jit::log_user.
3257 (gcc::jit::result::result): Add logger parameter.
3258 * libgccjit++.h (gccjit::context::set_logfile): New function.
3259 * libgccjit.c: Include "jit-logging.h".
3260 (gcc_jit_context_acquire): Log the context.
3261 (gcc_jit_context_release): Use JIT_LOG_FUNC to
3262 log entry/exit from the function body, and log the context.
3263 (gcc_jit_context_new_child_context): Likewise, logging both
3264 contexts.
3265 (gcc_jit_context_new_location): Use JIT_LOG_FUNC to
3266 log entry/exit from the function body.
3267 (gcc_jit_context_get_type): Likewise.
3268 (gcc_jit_context_get_int_type): Likewise.
3269 (gcc_jit_context_new_array_type): Likewise.
3270 (gcc_jit_context_new_field): Likewise.
3271 (gcc_jit_context_new_struct_type): Likewise.
3272 (gcc_jit_context_new_opaque_struct): Likewise.
3273 (gcc_jit_struct_set_fields): Likewise.
3274 (gcc_jit_context_new_union_type): Likewise.
3275 (gcc_jit_context_new_function_ptr_type): Likewise.
3276 (gcc_jit_context_new_param): Likewise.
3277 (gcc_jit_context_new_function): Likewise.
3278 (gcc_jit_context_get_builtin_function): Likewise.
3279 (gcc_jit_function_get_param): Likewise.
3280 (gcc_jit_function_dump_to_dot): Likewise.
3281 (gcc_jit_function_new_block): Likewise.
3282 (gcc_jit_context_new_global): Likewise.
3283 (gcc_jit_context_new_rvalue_from_int): Likewise.
3284 (gcc_jit_context_zero): Likewise.
3285 (gcc_jit_context_one): Likewise.
3286 (gcc_jit_context_new_rvalue_from_double): Likewise.
3287 (gcc_jit_context_new_rvalue_from_ptr): Likewise.
3288 (gcc_jit_context_null): Likewise.
3289 (gcc_jit_context_new_string_literal): Likewise.
3290 (gcc_jit_context_new_unary_op): Likewise.
3291 (gcc_jit_context_new_binary_op): Likewise.
3292 (gcc_jit_context_new_comparison): Likewise.
3293 (gcc_jit_context_new_call): Likewise.
3294 (gcc_jit_context_new_call_through_ptr): Likewise.
3295 (gcc_jit_context_new_cast): Likewise.
3296 (gcc_jit_context_new_array_access): Likewise.
3297 (gcc_jit_lvalue_access_field): Likewise.
3298 (gcc_jit_rvalue_access_field): Likewise.
3299 (gcc_jit_rvalue_dereference_field): Likewise.
3300 (gcc_jit_rvalue_dereference): Likewise.
3301 (gcc_jit_lvalue_get_address): Likewise.
3302 (gcc_jit_function_new_local): Likewise.
3303 (gcc_jit_block_add_eval): Likewise.
3304 (gcc_jit_block_add_assignment): Likewise.
3305 (gcc_jit_block_add_assignment_op): Likewise.
3306 (gcc_jit_block_end_with_conditional): Likewise.
3307 (gcc_jit_block_add_comment): Likewise.
3308 (gcc_jit_block_end_with_jump): Likewise.
3309 (gcc_jit_block_end_with_return): Likewise.
3310 (gcc_jit_block_end_with_void_return): Likewise.
3311 (gcc_jit_context_set_str_option): Likewise.
3312 (gcc_jit_context_set_int_option): Likewise.
3313 (gcc_jit_context_set_bool_option): Likewise.
3314 (gcc_jit_context_enable_dump): Likewise.
3315 (gcc_jit_context_compile): Likewise. Also log the context,
3316 and the result.
3317 (gcc_jit_context_dump_to_file): Likewise.
3318 (gcc_jit_context_set_logfile): New function.
3319 (gcc_jit_context_get_first_error): Use JIT_LOG_FUNC to
3320 log entry/exit from the function body.
3321 (gcc_jit_result_get_code): Likewise. Also log the fnname)
3322 and the ptr to be returned.
3323 (gcc_jit_result_release): Likewise. Also log the result.
3324 * libgccjit.h: Include <stdio.h>, since we need FILE *.
3325 (gcc_jit_context_set_logfile): New declaration.
3326 * libgccjit.map (gcc_jit_context_set_logfile): New.
3327
c211cd23
DM
33282015-01-07 David Malcolm <dmalcolm@redhat.com>
3329
3330 * jit-recording.h (gcc::jit::recording::type::is_void): New
3331 virtual function.
3332 (gcc::jit::recording::memento_of_get_type::is_void): New
3333 function, overriding default implementation.
3334 * libgccjit.c (gcc_jit_rvalue_dereference): Verify that
3335 the underlying type is not "void".
3336
18146f45
DM
33372015-01-07 David Malcolm <dmalcolm@redhat.com>
3338
3339 * docs/topics/expressions.rst (Unary Operations): Add
3340 GCC_JIT_UNARY_OP_ABS.
3341 * jit-playback.c (gcc::jit::playback::context::new_unary_op):
3342 Likewise.
3343 * jit-recording.c (unary_op_strings): Likewise.
3344 * libgccjit.c (gcc_jit_context_new_unary_op): Update checking
3345 of "op" to reflect addition of GCC_JIT_UNARY_OP_ABS.
3346 * libgccjit.h (enum gcc_jit_unary_op): Add GCC_JIT_UNARY_OP_ABS.
3347 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3348
11af98ff
DM
33492015-01-07 David Malcolm <dmalcolm@redhat.com>
3350
3351 * jit-recording.h (gcc::jit::recording::memento_of_get_type): Fix
3352 typo in comment.
3353
433d16df
DM
33542015-01-07 David Malcolm <dmalcolm@redhat.com>
3355
3356 * TODO.rst (Test suite): Remove item about running C++ testcases.
3357 * docs/internals/index.rst (Working on the JIT library): Add
3358 "c++" to the enabled languages in the suggested "configure"
3359 invocation, and add a description of why this is necessary.
3360 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3361
50bb6c8e
DM
33622015-01-07 David Malcolm <dmalcolm@redhat.com>
3363
3364 * docs/internals/index.rst: Update to reflect that built
3365 testcases are now test-foo.c.exe, rather than test-foo.exe.
3366 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3367
1e3b6a3d
JJ
33682015-01-05 Jakub Jelinek <jakub@redhat.com>
3369
3370 Update copyright years.
3371
e8af59bc
DM
33722014-12-19 David Malcolm <dmalcolm@redhat.com>
3373
3374 * jit-playback.c (gcc::jit::playback::context::build_cast): In
3375 case BOOLEAN_TYPE, don't assume that the source expression is
3376 of type "int".
3377
5afd44e3
DM
33782014-12-19 David Malcolm <dmalcolm@redhat.com>
3379
3380 * jit-recording.c (gcc::jit::recording::context::context): When
3381 copying string options from a parent context, take a copy of the
3382 underlying buffers, rather than simply copying the pointer.
3383
1f0858d7
DM
33842014-12-19 David Malcolm <dmalcolm@redhat.com>
3385
3386 * jit-recording.c (gcc::jit::recording::context::set_str_option):
3387 Handle NULL.
3388
35291c7d
DM
33892014-12-11 David Malcolm <dmalcolm@redhat.com>
3390
3391 * docs/cp/topics/contexts.rst (gccjit::context::set_str_option):
3392 Document new function.
3393 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3394
7b31ff5e
DM
33952014-12-10 Ulrich Drepper <drepper@gmail.com>
3396
3397 Minor interface cleanups of libgccjit
3398 * jit-playback.c (convert_to_dso): Use auto_vec instead
3399 of automatic array to build up command line.
3400 * jit-recording.c (recording::context::set_str_option):
3401 Make copy of the string.
3402 (recording::context::~context): Free string options.
3403 * jit-recording.h (recording::context): Adjust type
3404 of m_str_options member.
3405 * libgccjit.h: Adjust comment about
3406 gcc_jit_context_set_str_option parameter being used after
3407 the call.
3408 Update comment now that all interfaces are copy strings
3409 if necessary.
3410 * libgccjit++.h (gccjit::context): Add set_str_option
3411 member function.
3412
29df5715
DM
34132014-12-10 David Malcolm <dmalcolm@redhat.com>
3414
3415 * docs/cp/index.rst: New file.
3416 * docs/cp/intro/index.rst: New file.
3417 * docs/cp/intro/tutorial01.rst: New file.
3418 * docs/cp/intro/tutorial02.rst: New file.
3419 * docs/cp/intro/tutorial03.rst: New file.
3420 * docs/cp/intro/tutorial04.rst: New file.
3421 * docs/cp/topics/contexts.rst: New file.
3422 * docs/cp/topics/expressions.rst: New file.
3423 * docs/cp/topics/functions.rst: New file.
3424 * docs/cp/topics/index.rst: New file.
3425 * docs/cp/topics/locations.rst: New file.
3426 * docs/cp/topics/objects.rst: New file.
3427 * docs/cp/topics/results.rst: New file.
3428 * docs/cp/topics/types.rst: New file.
3429 * docs/examples/tut01-hello-world.cc: New file.
3430 * docs/examples/tut02-square.c: Fix missing newline in output.
3431 * docs/examples/tut02-square.cc: New file.
3432 * docs/examples/tut03-sum-of-squares.cc: New file.
3433 * docs/examples/tut04-toyvm/toyvm.cc: New file.
3434 * docs/index.rst: Move summary to above the table of contents.
3435 Add text about the C vs C++ APIs.
3436 * docs/topics/contexts.rst: Fix a typo.
3437
3438 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3439 * docs/_build/texinfo/factorial1.png: New file.
3440 * docs/_build/texinfo/sum-of-squares1.png: New file.
3441
5cd614ce
DM
34422014-12-09 David Malcolm <dmalcolm@redhat.com>
3443
3444 * docs/examples/tut04-toyvm/toyvm.c (toyvm_function_compile): Move
3445 logic for determine "funcname" to new function...
3446 (get_function_name): ...here, adding logic to skip any leading
3447 path from the filename.
3448 (toyvm_function_parse): Use the filename for fn_filename, rather
3449 than "name", so that the debugger can locate the source .toy
3450 file.
3451 (toyvm_function_parse): Don't fclose a NULL FILE *.
3452
2712de78
DM
34532014-12-09 David Malcolm <dmalcolm@redhat.com>
3454
3455 PR jit/63854
3456 * docs/internals/index.rst (Running under valgrind): New
3457 subsection.
3458 (docs/_build/texinfo/libgccjit.texi): Regenerate.
3459
d1e5f2c7
DM
34602014-12-09 David Malcolm <dmalcolm@redhat.com>
3461
92a285c1 3462 PR jit/64206
d1e5f2c7
DM
3463 * Make-lang.in (jit_OBJS): Add jit/jit-tempdir.o.
3464 * jit-common.h (gcc::jit::tempdir): New forward decl.
3465 * jit-playback.c: Include jit-tempdir.h.
3466 (gcc::jit::playback::context::context): Initialize m_tempdir.
3467 (gcc::jit::playback::context::~context): Move tempdir
3468 cleanup to new file jit-tempdir.c
3469 (make_tempdir_path_template): Move to new file jit-tempdir.c.
3470 (gcc::jit::playback::context::compile): Move tempdir creation
3471 to new tempdir object in new file jit-tempdir.c.
3472 (gcc::jit::playback::context::make_fake_args): Get path from
3473 tempdir object rather than from member data.
3474 (gcc::jit::playback::context::convert_to_dso): Likewise.
3475 (gcc::jit::playback::context::dlopen_built_dso): Likewise.
3476 (gcc::jit::playback::context::dump_generated_code): Likewise.
3477 (gcc::jit::playback::context::get_path_c_file): New function.
3478 (gcc::jit::playback::context::get_path_s_file): New function.
3479 (gcc::jit::playback::context::get_path_so_file): New function.
3480 * jit-playback.h (gcc::jit::playback::context::get_path_c_file):
3481 New function.
3482 (gcc::jit::playback::context::get_path_s_file): New function.
3483 (gcc::jit::playback::context::get_path_so_file): New function.
3484 (gcc::jit::playback::context): Move fields "m_path_template",
3485 "m_path_tempdir", "m_path_c_file", "m_path_s_file",
3486 "m_path_so_file" to new jit::tempdir class; add field "m_tempdir".
3487 * jit-tempdir.c: New file.
3488 * jit-tempdir.h: New file.
3489
38771e4e
DM
34902014-12-09 David Malcolm <dmalcolm@redhat.com>
3491
3492 * jit-playback.c (gcc::jit::playback::context::compile): Acquire the
3493 mutex here, immediately before using toplev, and release it here, on
3494 each exit path after acquisition.
3495 (jit_mutex): Move this variable here, from jit-recording.c.
3496 (gcc::jit::playback::context::acquire_mutex): New function, based on
3497 code in jit-recording.c.
3498 (gcc::jit::playback::context::release_mutex): Likewise.
3499 * jit-playback.h (gcc::jit::playback::context::acquire_mutex): New
3500 function.
3501 (gcc::jit::playback::context::release_mutex): New function.
3502 * jit-recording.c (jit_mutex): Move this variable to jit-playback.c.
3503 (gcc::jit::recording::context::compile): Move mutex-handling from
3504 here into jit-playback.c's gcc::jit::playback::context::compile.
3505 * notes.txt: Update to show the new locations of ACQUIRE_MUTEX
3506 and RELEASE_MUTEX.
3507
38f4f641
DM
35082014-12-09 David Malcolm <dmalcolm@redhat.com>
3509
3510 * jit-playback.c (gcc::jit::playback::context::compile): Move the
3511 dlopen code into...
3512 (gcc::jit::playback::context::dlopen_built_dso): ...this new
3513 function.
3514 * jit-playback.h (gcc::jit::playback::context::dlopen_built_dso):
3515 New function.
3516
82e0c914
DM
35172014-12-09 David Malcolm <dmalcolm@redhat.com>
3518
3519 PR jit/64166
3520 * docs/topics/contexts.rst (Debugging): Add description of
3521 gcc_jit_context_enable_dump.
3522 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3523 * jit-playback.c: Include context.h.
3524 (class auto_argvec): New class.
3525 (auto_argvec::~auto_argvec): New function.
3526 (gcc::jit::playback::context::compile): Convert fake_args to be
3527 an auto_argvec, so that it can contain dynamically-allocated
3528 strings. Construct a vec of all requested dumps, and pass it to
3529 make_fake_args. Extract requested dumps between the calls to
3530 toplev::main and toplev::finalize.
3531 (gcc::jit::playback::context::make_fake_args): Convert param
3532 "argvec" to be a vec <char *>, and gain a "requested_dumps"
3533 param. Convert to dynamically-allocated arg strings by converting
3534 ADD_ARG to take a copy of the arg, and add ADD_ARG_TAKE_OWNERSHIP
3535 for args that are already a copy. Add args for all requested dumps.
3536 (gcc::jit::playback::context::extract_any_requested_dumps): New
3537 function.
3538 (gcc::jit::playback::context::read_dump_file): New function.
3539 * jit-playback.h (gcc::jit::playback::context::make_fake_args):
3540 Convert param "argvec" to be a vec <char *>, and gain a
3541 "requested_dumps" param.
3542 (gcc::jit::playback::context::extract_any_requested_dumps): New
3543 function.
3544 (gcc::jit::playback::context::read_dump_file): New function.
3545 * jit-recording.c (gcc::jit::recording::context::enable_dump): New
3546 function.
3547 (gcc::jit::recording::context::get_all_requested_dumps): New
3548 function.
3549 * jit-recording.h (gcc::jit::recording::requested_dump): New
3550 struct.
3551 (gcc::jit::recording::context::enable_dump): New function.
3552 (gcc::jit::recording::context::get_all_requested_dumps): New
3553 function.
3554 (gcc::jit::recording::context::m_requested_dumps): New field.
3555 * libgccjit.c (gcc_jit_context_enable_dump): New API entrypoint.
3556 * libgccjit.h (gcc_jit_context_enable_dump): New API entrypoint.
3557 * libgccjit.map (gcc_jit_context_enable_dump): New API entrypoint.
3558
53b730ff
DM
35592014-12-08 David Malcolm <dmalcolm@redhat.com>
3560
3561 * libgccjit++.h: Indent the forward declarations of the classes to
3562 show the inheritance hierarchy.
3563
0f379445
DM
35642014-12-08 David Malcolm <dmalcolm@redhat.com>
3565
3566 * notes.txt: Show the beginning and ending of
3567 recording::context::compile vs playback::context::compile. Show
3568 the creation and unlinking of the tempdir. Show toplev::finalize.
3569 Move "RELEASE MUTEX" to the correct location. Show
3570 gcc_jit_result_release, and indicate where the
3571 dlopen/dlsym/dlclose occur.
3572
81ba15f1
DM
35732014-12-01 David Malcolm <dmalcolm@redhat.com>
3574
3575 * docs/examples/tut02-square.c (main): Release the context
3576 earlier, to show that this is possible. Update error-handling
3577 to avoid a double-release of the context, and to avoid
3578 releasing a NULL result.
3579 * docs/intro/tutorial02.rst: Discuss gcc_jit_context_release.
3580 * docs/topics/functions.rst (GCC_JIT_FUNCTION_EXPORTED): Emphasize
3581 * docs/topics/results.rst (gcc_jit_result): Mention that this
3582 controls the lifetimes of machine code functions.
3583 (gcc_jit_result_get_code): Spell out the requirements for this
3584 to succeed, and the lifetime of the result.
3585 (gcc_jit_result_release): Mention that this invalidates any code
3586 that was obtained from the result.
3587 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3588
e250f0dc
DM
35892014-12-01 David Malcolm <dmalcolm@redhat.com>
3590
3591 PR jit/64018
3592 * docs/intro/tutorial02.rst: Spell out lifetime of generated code.
3593 Add description of error-handling, taken in part from...
3594 * docs/topics/contexts.rst (Error-handling): Expand, and move some
3595 content to tutorial02.rst.
3596 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3597
eeafb319
DM
35982014-12-01 David Malcolm <dmalcolm@redhat.com>
3599
3600 PR jit/64020
3601 * docs/topics/types.rst (Standard types) Add new enum values to
3602 the table of enum gcc_jit_types: GCC_JIT_TYPE_COMPLEX_FLOAT,
3603 GCC_JIT_TYPE_COMPLEX_DOUBLE, GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE.
3604 Widen the left-hand column so that
3605 GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE will fit.
3606 * docs/_build/texinfo/libgccjit.texi: Regenerate.
3607
3608 * jit-builtins.c: Include stringpool.h and jit-playback.h.
3609 Move everything out of the gcc::jit::recording namespace into
3610 just gcc::jit.
3611 (struct builtin_data): Add fields "fnclass", "attr", and
3612 "implicit_p".
3613 (DEF_BUILTIN): Update macro so populate the new fields.
3614 (builtins_manager::builtins_manager): Update for move out of
3615 recording namespace. Initialize the m_attributes array.
3616 (builtins_manager::get_builtin_function): Likewise.
3617 (builtins_manager::get_builtin_function_by_id): New function.
3618 (builtins_manager::make_builtin_function): Update for move out of
3619 recording namespace. Add fix for PR jit/64020 by detecting
3620 specific builtin ids and having them ensure that builtins for
3621 other ids are created as necessary.
3622 (builtins_manager::get_type): Update for move out of recording
3623 namespace.
3624 (builtins_manager::make_type): Likewise. Add some missing
3625 #undefs.
3626 (builtins_manager::make_primitive_type): Update for move out of
3627 recording namespace. Implement the three BT_COMPLEX_ cases and
3628 BT_DOUBLE_PTR.
3629 (builtins_manager::make_fn_type): Update for move out of recording
3630 namespace.
3631 (builtins_manager::make_ptr_type): Likewise.
3632 (builtins_manager::finish_playback): New function.
3633 (builtins_manager::get_class): New function.
3634 (builtins_manager::implicit_p): New function.
3635 (builtins_manager::get_attrs_tree): Two new functions.
3636 (builtins_manager::make_attrs_tree): New function.
3637
3638 * jit-builtins.h: Move everything out of the gcc::jit::recording
3639 namespace into just gcc::jit.
3640 (enum built_in_attribute): New.
3641 (builtins_manager::builtins_manager): Update decl for namespace
3642 change.
3643 (builtins_manager::get_builtin_function): Likewise.
3644 (builtins_manager::get_class): New.
3645 (builtins_manager::implicit_p): New.
3646 (builtins_manager::get_attrs_tree): Two new functions.
3647 (builtins_manager::make_attrs_tree): New function.
3648 (builtins_manager::finish_playback): New.
3649 (builtins_manager::get_builtin_function_by_id): New.
3650 (builtins_manager::make_builtin_function): Update decl for
3651 namespace change.
3652 (builtins_manager::get_type): Likewise.
3653 (builtins_manager::make_type): Likewise.
3654 (builtins_manager::make_primitive_type): Likewise.
3655 (builtins_manager::make_fn_type): Likewise.
3656 (builtins_manager::make_ptr_type): Likewise.
3657 (builtins_manager): Likewise for fields. Add new field
3658 "m_attributes".
3659
3660 * jit-common.h (NUM_GCC_JIT_TYPES): Update.
3661 (builtins_manager): Update forward decl to reflect namespace
3662 change.
3663
3664 * jit-playback.c: Include attribs.h and jit-builtins.h.
3665 (gcc::jit::playback::context::get_tree_node_for_type): Add cases
3666 for the new COMPLEX_ types.
3667 (gcc::jit::playback::context::new_function): If creating a
3668 builtin, set the DECL_BUILT_IN_CLASS and attributes on the fndecl,
3669 and call set_builtin_decl.
3670 (gcc::jit::playback::context::replay): If we have a
3671 builtins_manager, call its finish_playback method when we're done.
3672
3673 * jit-playback.h:
3674 (gcc::jit::playback::context::get_builtins_manager): New function.
3675
3676 * jit-recording.c
3677 (gcc::jit::recording::context::get_builtins_manager): New function.
3678 (gcc::jit::recording::get_builtin_function): Use
3679 get_builtins_manager, in case we're a child context.
3680 (gcc::jit::recording::memento_of_get_type::dereference): Add the
3681 COMPLEX_ types.
3682 (gcc::jit::recording::memento_of_get_type::is_int): Likewise.
3683 (gcc::jit::recording::memento_of_get_type::is_float): Likewise.
3684 (gcc::jit::recording::memento_of_get_type::is_bool): Likewise.
3685 (get_type_strings): Likewise.
3686
3687 * jit-recording.h
3688 (gcc::jit::recording::context::get_builtins_manager): New.
3689
3690 * libgccjit.h (enum gcc_jit_types): Add
3691 GCC_JIT_TYPE_COMPLEX_FLOAT, GCC_JIT_TYPE_COMPLEX_DOUBLE,
3692 GCC_JIT_TYPE_COMPLEX_LONG_DOUBLE.
3693
23844fd7
DM
36942014-12-01 David Malcolm <dmalcolm@redhat.com>
3695
3696 * jit-builtins.c
3697 (gcc::jit::recording::builtins_manager::get_builtin_function):
3698 Check for NULL return from make_builtin_function.
3699 (gcc::jit::recording::builtins_manager::make_builtin_function):
3700 Check for NULL return from get_type.
3701
c6760a13
DM
37022014-12-01 David Malcolm <dmalcolm@redhat.com>
3703
3704 * jit-playback.c (gcc::jit::playback::context::compile): Move DSO
3705 creation code into...
3706 (gcc::jit::playback::context::convert_to_dso): New function.
3707 * jit-playback.h (gcc::jit::playback::context::convert_to_dso):
3708 New function.
3709
8f50ee3c
DM
37102014-12-01 David Malcolm <dmalcolm@redhat.com>
3711
3712 * jit-playback.c (gcc::jit::playback::context::compile): Use an
3713 auto_vec<const char *> rather than a const char *[20] for the
3714 top-level argv, and move the logic to build it to...
3715 (gcc::jit::playback::context::make_fake_args): New function.
3716 * jit-playback.h (gcc::jit::playback::context::make_fake_args):
3717 New function.
3718
56dea35f
DM
37192014-12-01 David Malcolm <dmalcolm@redhat.com>
3720
3721 * Make-lang.in (jit_OBJS): Add jit/jit-result.o.
3722 * jit-playback.c: Include new header jit-result.h.
3723 (gcc::jit::result::result): Move to new file jit-result.c.
3724 (gcc::jit::result::~result): Likewise.
3725 (gcc::jit::playback::result): Likewise.
3726 * jit-recording.h (class gcc::jit::result): Move to new
3727 header jit-result.h.
3728 * jit-result.c: New file, to contain...
3729 (gcc::jit::result::result): Move here from jit-playback.c,
3730 removing erroneous "playback" namespace from comment.
3731 (gcc::jit::result::~result): Likewise.
3732 (gcc::jit::playback::result): Likewise.
3733 * jit-result.h: New file, to contain...
3734 (class gcc::jit::result): Move from jit-recording.h.
3735 * libgccjit.c: Include jit-result.h.
3736 (gcc_jit_result_get_code): Update comment to reflect move
3737 of implementation.
3738 (gcc_jit_result_release): Likewise.
3739
52b9468f
DM
37402014-12-01 David Malcolm <dmalcolm@redhat.com>
3741
3742 PR jit/63854
3743 * docs/examples/tut04-toyvm/toyvm.c
3744 (toyvm_compiled_function): New typedef.
3745 (toyvm_compiled_func) Rename to...
3746 (toyvm_compiled_code) ...this.
3747 (struct toyvm_compiled_function): New struct.
3748 (toyvm_function_compile): Return a toyvm_compiled_function *
3749 rather than a toyvm_compiled_func, so that the caller can fully
3750 clean things up. Free "funcname".
3751 (test_script): Update for change to toyvm_function_compile.
3752 Clean up the toyvm_compiled_function.
3753 (main): Likewise.
3754 (docs/intro/tutorial04.rst): Update to reflect the above changes,
3755 and to better spell out the lifetime of the compiled code.
3756
c8d19a69
DM
37572014-12-01 David Malcolm <dmalcolm@redhat.com>
3758
3759 PR jit/63854
3760 * jit-builtins.c
3761 (gcc::jit::recording::builtins_manager::make_fn_type): Call the
3762 context's new_function_type method, rather than directly creating
3763 a function_type instance.
3764 * jit-recording.c
3765 (gcc::jit::recording::context::new_function_type): New method,
3766 adapted from part of...
3767 (gcc::jit::recording::context::new_function_ptr_type): ...this.
3768 Update to call new_function_type.
3769 * jit-recording.h
3770 (gcc::jit::recording::context::new_function_type): New method.
3771
c985705a
DM
37722014-12-01 David Malcolm <dmalcolm@redhat.com>
3773
3774 PR jit/63969
3775 * jit-playback.c: Ensure that ctxt_progname is non-NULL.
3776
b957b2e0
DM
37772014-11-19 David Malcolm <dmalcolm@redhat.com>
3778
3779 PR jit/63854
3780 * jit-playback.c (gcc::jit::playback::compound_type::set_fields):
3781 Convert param from const vec<playback::field *> & to
3782 const auto_vec<playback::field *> *.
3783 (gcc::jit::playback::context::new_function_type): Convert param
3784 "param_types" from vec<type *> * to const auto_vec<type *> *.
3785 (gcc::jit::playback::context::new_function): Convert param
3786 "params" from vec<param *> * to const auto_vec<param *> *.
3787 (gcc::jit::playback::context::build_call): Convert param "args"
3788 from vec<rvalue *> to const auto_vec<rvalue *> *.
3789 (gcc::jit::playback::context::new_call): Likewise.
3790 (gcc::jit::playback::context::new_call_through_ptr): Likewise.
3791 (wrapper_finalizer): New function.
3792 (gcc::jit::playback::wrapper::operator new): Call the finalizer
3793 variant of ggc_internal_cleared_alloc, supplying
3794 wrapper_finalizer.
3795 (gcc::jit::playback::function::finalizer): New.
3796 (gcc::jit::playback::block::finalizer): New.
3797 (gcc::jit::playback::source_file::finalizer): New.
3798 (gcc::jit::playback::source_line::finalizer): New.
3799
3800 * jit-playback.h
3801 (gcc::jit::playback::context::new_function_type): Convert param
3802 "param_types" from vec<type *> * to const auto_vec<type *> *.
3803 (gcc::jit::playback::context::new_function): Convert param
3804 "params" from vec<param *> * to const auto_vec<param *> *.
3805 (gcc::jit::playback::context::new_call): Convert param
3806 "args" from vec<rvalue *> to const auto_vec<rvalue *> *.
3807 (gcc::jit::playback::context::new_call_through_ptr): Likewise.
3808 (gcc::jit::playback::context::build_call): Likewise.
3809 (gcc::jit::playback::context): Convert fields "m_functions",
3810 "m_source_files", "m_cached_locations" from vec to auto_vec.
3811 (gcc::jit::playback::wrapper::finalizer): New virtual function.
3812 (gcc::jit::playback::compound_type::set_fields): Convert param fro
3813 const vec<playback::field *> & to
3814 const auto_vec<playback::field *> *.
3815 (gcc::jit::playback::function::finalizer): New.
3816 (gcc::jit::playback::block::finalizer): New.
3817 (gcc::jit::playback::source_file::finalizer): New.
3818 (gcc::jit::playback::source_line::finalizer): New.
3819
3820 * jit-recording.c
3821 (gcc::jit::recording::function_type::replay_into): Convert local
3822 from a vec into an auto_vec.
3823 (gcc::jit::recording::fields::replay_into): Likewise.
3824 (gcc::jit::recording::function::replay_into): Likewise.
3825 (gcc::jit::recording::call::replay_into): Likewise.
3826 (gcc::jit::recording::call_through_ptr::replay_into): Likewise.
3827
3828 * jit-recording.h (gcc::jit::recording::context): Convert fields
3829 "m_mementos", "m_compound_types", "m_functions" from vec<> to
3830 auto_vec <>.
3831 (gcc::jit::recording::function_type::get_param_types): Convert
3832 return type from vec<type *> to const vec<type *> &.
3833 (gcc::jit::recording::function_type): Convert field
3834 "m_param_types" from a vec<> to an auto_vec<>.
3835 (gcc::jit::recording::fields): Likewise for field "m_fields".
3836 (gcc::jit::recording::function::get_params): Convert return type
3837 from vec <param *> to const vec<param *> &.
3838 (gcc::jit::recording::function): Convert fields "m_params",
3839 "m_locals", "m_blocks" from vec<> to auto_vec<>.
3840 (gcc::jit::recording::block): Likewise for field "m_statements".
3841 vec<> to auto_vec<>.
3842 (gcc::jit::recording::call): Likewise for field "m_args".
3843 (gcc::jit::recording::call_through_ptr): Likewise.
3844
79cafc7a
DM
38452014-11-19 David Malcolm <dmalcolm@redhat.com>
3846
3847 PR jit/63854
3848 * jit-recording.c (recording::function::validate): Convert
3849 "worklist" from vec<> to autovec<> to fix a leak.
3850
35485da9
DM
38512014-11-11 David Malcolm <dmalcolm@redhat.com>
3852
3853 * ChangeLog.jit: New.
3854 * ChangeLog: New.
3855 * Make-lang.in: New.
3856 * TODO.rst: New.
3857 * config-lang.in: New.
3858 * docs/Makefile: New.
3859 * docs/_build/texinfo/Makefile: New.
3860 * docs/_build/texinfo/factorial.png: New.
3861 * docs/_build/texinfo/libgccjit.texi: New.
3862 * docs/_build/texinfo/sum-of-squares.png: New.
3863 * docs/conf.py: New.
3864 * docs/examples/tut01-hello-world.c: New.
3865 * docs/examples/tut02-square.c: New.
3866 * docs/examples/tut03-sum-of-squares.c: New.
3867 * docs/examples/tut04-toyvm/Makefile: New.
3868 * docs/examples/tut04-toyvm/factorial.toy: New.
3869 * docs/examples/tut04-toyvm/fibonacci.toy: New.
3870 * docs/examples/tut04-toyvm/toyvm.c: New.
3871 * docs/index.rst: New.
3872 * docs/internals/index.rst: New.
3873 * docs/intro/factorial.png: New.
3874 * docs/intro/index.rst: New.
3875 * docs/intro/sum-of-squares.png: New.
3876 * docs/intro/tutorial01.rst: New.
3877 * docs/intro/tutorial02.rst: New.
3878 * docs/intro/tutorial03.rst: New.
3879 * docs/intro/tutorial04.rst: New.
3880 * docs/topics/contexts.rst: New.
3881 * docs/topics/expressions.rst: New.
3882 * docs/topics/functions.rst: New.
3883 * docs/topics/index.rst: New.
3884 * docs/topics/locations.rst: New.
3885 * docs/topics/objects.rst: New.
3886 * docs/topics/results.rst: New.
3887 * docs/topics/types.rst: New.
3888 * dummy-frontend.c: New.
3889 * jit-builtins.c: New.
3890 * jit-builtins.h: New.
3891 * jit-common.h: New.
3892 * jit-playback.c: New.
3893 * jit-playback.h: New.
3894 * jit-recording.c: New.
3895 * jit-recording.h: New.
3896 * libgccjit++.h: New.
3897 * libgccjit.c: New.
3898 * libgccjit.h: New.
3899 * libgccjit.map: New.
3900 * notes.txt: New.
3901
39022013-07-26 David Malcolm <dmalcolm@redhat.com>
3903
3904 * Initial creation
818ab71a 3905\f
877e3c2a 3906Copyright (C) 2013-2022 Free Software Foundation, Inc.
35485da9
DM
3907
3908Copying and distribution of this file, with or without modification,
3909are permitted in any medium without royalty provided the copyright
3910notice and this notice are preserved.