111
|
1 2014-11-10 David Malcolm <dmalcolm@redhat.com>
|
|
2
|
|
3 * docs/_build/texinfo/libgccjit.texi: Regenerate.
|
|
4
|
|
5 2014-11-10 David Malcolm <dmalcolm@redhat.com>
|
|
6
|
|
7 * dummy-frontend.c: Add includes now needed since r216805 by
|
|
8 cgraph.h: hash-map.h, is-a.h, plugin-api.h, vec.h, hashtab.h,
|
|
9 hash-set.h, machmode.h, tm.h, hard-reg-set.h, function.h,
|
|
10 ipa-ref.h, dumpfile.h.
|
|
11 * jit-playback.c: Likewise.
|
|
12
|
|
13 2014-11-05 David Malcolm <dmalcolm@redhat.com>
|
|
14
|
|
15 * jit-playback.c (gcc::jit::playback::context::handle_locations):
|
|
16 Drop the disabled debugging code.
|
|
17
|
|
18 2014-11-05 David Malcolm <dmalcolm@redhat.com>
|
|
19
|
|
20 * docs/topics/expressions.rst (Type-coercion): Casts between
|
|
21 pointer types are valid.
|
|
22 * libgccjit.c: Document that gcc_jit_context et al are actually
|
|
23 subclasses of the gcc::jit::recording classes.
|
|
24 (RETURN_VAL_IF_FAIL): Add top-level descriptive comment.
|
|
25 (RETURN_IF_NOT_VALID_BLOCK): Likewise.
|
|
26 (RETURN_NULL_IF_NOT_VALID_BLOCK): Likewise.
|
|
27 (jit_error): Likewise.
|
|
28 (compatible_types): Likewise.
|
|
29 (gcc_jit_context_acquire): Likewise.
|
|
30 (gcc_jit_context_release): Likewise.
|
|
31 (gcc_jit_context_new_child_context): Likewise.
|
|
32 (gcc_jit_context_new_location): Likewise.
|
|
33 (gcc_jit_location_as_object): Likewise.
|
|
34 (gcc_jit_type_as_object): Likewise.
|
|
35 (gcc_jit_context_get_type): Likewise.
|
|
36 (gcc_jit_context_get_int_type): Likewise.
|
|
37 (gcc_jit_type_get_pointer): Likewise.
|
|
38 (gcc_jit_type_get_const): Likewise.
|
|
39 (gcc_jit_type_get_volatile): Likewise.
|
|
40 (gcc_jit_context_new_array_type): Likewise. Also document that
|
|
41 LOC can be NULL. Fail with an error on negative size.
|
|
42 (gcc_jit_context_new_field): Add top-level descriptive comment and
|
|
43 document that LOC can be NULL.
|
|
44 (gcc_jit_field_as_object): Add top-level descriptive comment.
|
|
45 (gcc_jit_context_new_struct_type): Likewise. Also document that
|
|
46 LOC can be NULL.
|
|
47 (gcc_jit_context_new_opaque_struct): Likewise.
|
|
48 (gcc_jit_struct_as_type): Add top-level descriptive comment.
|
|
49 (gcc_jit_struct_set_fields): Likewise. Also document that LOC can
|
|
50 be NULL.
|
|
51 (gcc_jit_context_new_union_type): Likewise.
|
|
52 (gcc_jit_context_new_function_ptr_type): Likewise.
|
|
53 (gcc_jit_context_new_param): Likewise.
|
|
54 (gcc_jit_param_as_object): Add top-level descriptive comment.
|
|
55 (gcc_jit_param_as_lvalue): Likewise.
|
|
56 (gcc_jit_param_as_rvalue): Likewise.
|
|
57 (gcc_jit_context_new_function): Likewise. Also document that LOC
|
|
58 can be NULL.
|
|
59 (gcc_jit_context_get_builtin_function): Add top-level descriptive
|
|
60 comment.
|
|
61 (gcc_jit_function_as_object): Likewise.
|
|
62 (gcc_jit_function_get_param): Likewise.
|
|
63 (gcc_jit_function_dump_to_dot): Likewise.
|
|
64 (gcc_jit_function_new_block): Likewise.
|
|
65 (gcc_jit_block_as_object): Likewise.
|
|
66 (gcc_jit_block_get_function): Likewise.
|
|
67 (gcc_jit_context_new_global): Likewise. Also document that LOC
|
|
68 can be NULL.
|
|
69 (gcc_jit_lvalue_as_object): Add top-level descriptive comment.
|
|
70 (gcc_jit_lvalue_as_rvalue): Likewise.
|
|
71 (gcc_jit_rvalue_as_object): Likewise.
|
|
72 (gcc_jit_rvalue_get_type): Likewise.
|
|
73 (RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE): Likewise.
|
|
74 (gcc_jit_context_new_rvalue_from_int): Likewise.
|
|
75 (gcc_jit_context_zero): Likewise.
|
|
76 (gcc_jit_context_one): Likewise.
|
|
77 (gcc_jit_context_new_rvalue_from_double): Likewise.
|
|
78 (gcc_jit_context_new_rvalue_from_ptr): Likewise.
|
|
79 (gcc_jit_context_null): Likewise.
|
|
80 (gcc_jit_context_new_string_literal): Likewise.
|
|
81 (gcc_jit_context_new_unary_op): Likewise. Also document that LOC
|
|
82 can be NULL.
|
|
83 (gcc_jit_context_new_binary_op): Likewise.
|
|
84 (gcc_jit_context_new_comparison): Likewise.
|
|
85 (gcc_jit_context_new_call): Likewise.
|
|
86 (gcc_jit_context_new_call_through_ptr): Likewise.
|
|
87 (is_valid_cast): Add top-level descriptive comment.
|
|
88 (gcc_jit_context_new_cast): Likewise. Also document that LOC can
|
|
89 be NULL.
|
|
90 (gcc_jit_context_new_array_access): Likewise.
|
|
91 (gcc_jit_object_get_context): Add top-level descriptive comment.
|
|
92 (gcc_jit_object_get_debug_string): Likewise.
|
|
93 (gcc_jit_lvalue_access_field): Likewise. Also document that LOC can
|
|
94 be NULL.
|
|
95 (gcc_jit_rvalue_access_field): Likewise.
|
|
96 (gcc_jit_rvalue_dereference_field): Likewise.
|
|
97 (gcc_jit_rvalue_dereference): Likewise.
|
|
98 (gcc_jit_lvalue_get_address): Likewise.
|
|
99 (gcc_jit_function_new_local): Likewise.
|
|
100 (gcc_jit_block_add_eval): Likewise.
|
|
101 (gcc_jit_block_add_assignment): Likewise.
|
|
102 (gcc_jit_block_add_assignment_op): Likewise.
|
|
103 (is_bool): Add top-level descriptive comment.
|
|
104 (gcc_jit_block_end_with_conditional): Likewise. Also document
|
|
105 that LOC can be NULL.
|
|
106 (gcc_jit_block_add_comment): Likewise.
|
|
107 (gcc_jit_block_end_with_jump): Likewise.
|
|
108 (gcc_jit_block_end_with_return): Likewise.
|
|
109 (gcc_jit_block_end_with_void_return): Likewise.
|
|
110 (gcc_jit_context_set_str_option): Add top-level descriptive
|
|
111 comment.
|
|
112 (gcc_jit_context_set_int_option): Likewise.
|
|
113 (gcc_jit_context_set_bool_option): Likewise.
|
|
114 (gcc_jit_context_compile): Likewise.
|
|
115 (gcc_jit_context_dump_to_file): Likewise.
|
|
116 (gcc_jit_context_get_first_error): Likewise.
|
|
117 (gcc_jit_result_get_code): Likewise.
|
|
118 (gcc_jit_result_release): Likewise.
|
|
119
|
|
120 * libgccjit.h (gcc_jit_context_acquire): Remove FIXME from
|
|
121 comment.
|
|
122 (gcc_jit_context_get_int_type): Add comment.
|
|
123 (gcc_jit_context_new_field): Likewise.
|
|
124 (gcc_jit_context_new_struct_type): Likewise.
|
|
125 (gcc_jit_context_new_opaque_struct): Likewise.
|
|
126 (gcc_jit_struct_as_type): Likewise.
|
|
127 (gcc_jit_context_new_param): Likewise.
|
|
128 (gcc_jit_param_as_lvalue): Likewise.
|
|
129 (gcc_jit_param_as_rvalue): Likewise.
|
|
130 (enum gcc_jit_function_kind): Likewise.
|
|
131 (gcc_jit_context_new_function): Likewise.
|
|
132 (gcc_jit_context_get_builtin_function): Likewise.
|
|
133 (gcc_jit_function_get_param): Likewise.
|
|
134
|
|
135 2014-11-05 David Malcolm <dmalcolm@redhat.com>
|
|
136
|
|
137 * libgccjit.c (gcc_jit_context_get_type): Verify that "type"
|
|
138 is valid immediately, rather than relying on called code.
|
|
139 (gcc_jit_context_new_function): Likewise for "kind".
|
|
140 (gcc_jit_context_new_unary_op): Likewise for "op".
|
|
141 (valid_binary_op_p): New.
|
|
142 (gcc_jit_context_new_binary_op): Verify that "op" is valid
|
|
143 immediately, rather than relying on called code.
|
|
144 (gcc_jit_context_new_comparison): Likewise.
|
|
145 (gcc_jit_block_add_assignment_op): Likewise.
|
|
146
|
|
147 2014-11-05 David Malcolm <dmalcolm@redhat.com>
|
|
148
|
|
149 * libgccjit.c: Include safe-ctype.h from libiberty.
|
|
150 (IS_ASCII_ALPHA): Delete.
|
|
151 (IS_ASCII_DIGIT): Delete.
|
|
152 (IS_ASCII_ALNUM): Delete.
|
|
153 (gcc_jit_context_new_function): Replace use of IS_ASCII_ALPHA and
|
|
154 IS_ASCII_ALNUM with ISALPHA and ISALNUM respectively, from
|
|
155 libiberty.
|
|
156
|
|
157 2014-10-30 David Malcolm <dmalcolm@redhat.com>
|
|
158
|
|
159 * dummy-frontend.c (jit_langhook_init): Remove some dead code.
|
|
160
|
|
161 2014-10-27 David Malcolm <dmalcolm@redhat.com>
|
|
162
|
|
163 * dummy-frontend.c: Drop includes of tree-iterator.h,
|
|
164 tree-ssa-alias.h, gimple-expr.h, gimple.h, gimple-pretty-print.h.
|
|
165 * jit-playback.c: Drop includes of debug.h, langhooks.h,
|
|
166 langhooks-def.h, tree-iterator.h, gimple-expr.h, tree-ssa-alias.h,
|
|
167 gimple.h, gimple-pretty-print.h, diagnostic-core.h, dumpfile.h.
|
|
168
|
|
169 2014-10-21 David Malcolm <dmalcolm@redhat.com>
|
|
170
|
|
171 * jit-recording.c: Include tm.h. Don't include function.h.
|
|
172
|
|
173 2014-10-21 David Malcolm <dmalcolm@redhat.com>
|
|
174
|
|
175 * docs/_build/texinfo/libgccjit.texi: Regenerate.
|
|
176
|
|
177 2014-10-21 David Malcolm <dmalcolm@redhat.com>
|
|
178
|
|
179 * docs/intro/index.rst: Drop install.rst. Add tutorial04.rst.
|
|
180 * docs/intro/install.rst: Rename to...
|
|
181 * docs/intro/tutorial01.rst: ...this, renaming old tutorial01.rst to...
|
|
182 * docs/intro/tutorial02.rst: ...this, renaming old tutorial02.rst to...
|
|
183 * docs/intro/tutorial03.rst: ...this, renaming old tutorial03.rst to...
|
|
184 * docs/intro/tutorial04.rst: ...this.
|
|
185 * docs/examples/install-hello-world.c: Rename to...
|
|
186 * docs/examples/tut01-hello-world.c: ...this.
|
|
187 * docs/examples/tut01-square.c: Rename to...
|
|
188 * docs/examples/tut02-square.c: ...this.
|
|
189 * docs/examples/tut02-sum-of-squares.c: Rename to...
|
|
190 * docs/examples/tut03-sum-of-squares.c: ...this.
|
|
191 * docs/examples/tut03-toyvm: Rename directory to...
|
|
192 * docs/examples/tut04-toyvm: ...this.
|
|
193 * docs/examples/tut04-toyvm/toyvm.c (PATH_TO_SCRIPTS): Update
|
|
194 for directory renaming.
|
|
195
|
|
196 2014-10-21 David Malcolm <dmalcolm@redhat.com>
|
|
197
|
|
198 * docs/intro/install.rst ("Installation via packages"): Drop
|
|
199 this section.
|
|
200 ("Installation from source"): Drop this section, moving parts
|
|
201 of it to https://gcc.gnu.org/wiki/JIT and some others to
|
|
202 docs/internals/index.rst.
|
|
203 ("Hello world"): This section becomes the only remaining part
|
|
204 of this file. Eliminate references to pkg-config.
|
|
205
|
|
206 * docs/internals/index.rst
|
|
207 ("Using a working copy without installing every time"): Rewrite
|
|
208 as...
|
|
209 ("Working on the JIT library"): ...new section, aimed at
|
|
210 contributors (and myself) working from a build directory,
|
|
211 eliminating references to installation. Add description
|
|
212 of pertinent configuration options.
|
|
213 ("Running the test suite"): Add setting of LIBRARY_PATH to
|
|
214 description of how to run a built binary outside of the test
|
|
215 suite.
|
|
216 ("Environment variables"): New section, describing pertinent
|
|
217 environment variables.
|
|
218
|
|
219 2014-10-20 David Malcolm <dmalcolm@redhat.com>
|
|
220
|
|
221 * jit-recording.c (gcc::jit::dump::dump): Handle fopen failures
|
|
222 by emitting an error on the context.
|
|
223 (gcc::jit::dump::~dump): Likewise for fclose failures.
|
|
224 (gcc::jit::dump::write): Don't attempt further work if the fopen
|
|
225 failed. Handle fwrite failures by emitting an error on the
|
|
226 context.
|
|
227
|
|
228 2014-10-20 David Malcolm <dmalcolm@redhat.com>
|
|
229
|
|
230 * Make-lang.in (jit.install-common): Drop installation of
|
|
231 libgccjit.pc.
|
|
232 * config-lang.in (outputs): Drop jit/libgccjit.pc.
|
|
233 * libgccjit.pc.in: Delete.
|
|
234
|
|
235 2014-10-17 David Malcolm <dmalcolm@redhat.com>
|
|
236
|
|
237 * Make-lang.in (jit): Add $(FULL_DRIVER_NAME) as a dependency, so
|
|
238 that the symlink is created for testing.
|
|
239
|
|
240 * jit-playback.c (gcc::jit::playback::context::compile): Add
|
|
241 "-fno-use-linker-plugin" when invoking the driver. Update error
|
|
242 messages to talk about the "gcc driver" rather than the
|
|
243 "gcc harness". To ease troubleshooting, add error messages giving
|
|
244 the driver name and PATH to the error-handling code that fires
|
|
245 when the driver can't be found.
|
|
246
|
|
247 2014-10-07 David Malcolm <dmalcolm@redhat.com>
|
|
248
|
|
249 * docs/_build/texinfo/libgccjit.texi: Regenerate.
|
|
250
|
|
251 2014-10-07 David Malcolm <dmalcolm@redhat.com>
|
|
252
|
|
253 * docs/internals/index.rst (Overview of code structure): Directly
|
|
254 include the comment from jit-common.h as rst, rather than as a
|
|
255 quoted C++ comment.
|
|
256 * jit-common.h: Convert the summary format to valid reStructured
|
|
257 text for inclusion by docs/internals/index.rst.
|
|
258 * notes.txt: Clarify where libgccjit.c, jit-recording.c and
|
|
259 jit-playback.c fit into the high-level diagram.
|
|
260
|
|
261 2014-10-07 David Malcolm <dmalcolm@redhat.com>
|
|
262
|
|
263 * Make-lang.in (jit_OBJS): Drop jit/internal-api.o.
|
|
264 Add jit/jit-recording.o and jit/jit-playback.o.
|
|
265
|
|
266 * internal-api.c: Delete, moving content to new files jit-recording.c
|
|
267 and jit-playback.c.
|
|
268 * internal-api.h: Delete, moving content to new files
|
|
269 jit-common.h, jit-playback.h, jit-recording.h.
|
|
270 * jit-common.h: New file, containing the forward decls of classes
|
|
271 formerly in internal-api.h.
|
|
272 * jit-recording.c: New file, containing the gcc::jit::recording
|
|
273 code formerly in internal-api.c, and gcc::jit::dump.
|
|
274 * jit-recording.h: New file, containing the gcc::jit::recording
|
|
275 prototypes formerly in internal-api.h.
|
|
276 * jit-playback.c: New file, containing the gcc::jit::playback
|
|
277 code formerly in internal-api.c.
|
|
278 * jit-playback.h: New file, containing the gcc::jit::playback
|
|
279 prototypes formerly in internal-api.h.
|
|
280
|
|
281 * dummy-frontend.c: Don't include "internal-api.h". Add includes
|
|
282 of jit-common.h and jit-playback.h.
|
|
283 * jit-builtins.h: Replace include of internal-api.h with
|
|
284 jit-common.h.
|
|
285 * jit-builtins.c: Replace include of internal-api.h with
|
|
286 jit-common.h. Add include of jit-recording.h.
|
|
287 * libgccjit.c: Likewise.
|
|
288
|
|
289 * docs/internals/index.rst (Overview of code structure): Update
|
|
290 to reflect the above changes.
|
|
291
|
|
292 2014-10-07 David Malcolm <dmalcolm@redhat.com>
|
|
293
|
|
294 * docs/internals/index.rst
|
|
295 (Using a working copy without installing): Rename to...
|
|
296 (Using a working copy without installing every time): ...this, and
|
|
297 update to reflect the need to have installed the driver binary
|
|
298 when running directly from a build directory.
|
|
299 (Running the test suite): Add PATH setting to the example.
|
|
300 * docs/intro/install.rst ("Hello world"): Likewise.
|
|
301 * internal-api.c: Include new autogenerated header
|
|
302 "gcc-driver-name.h".
|
|
303 (gcc::jit::playback::context::compile): Rather than looking for a
|
|
304 "gcc" on the path, look for GCC_DRIVER_NAME from gcc-driver-name.h,
|
|
305 as created by the configure script, so that we are using one for
|
|
306 the correct target.
|
|
307
|
|
308 2014-10-02 David Malcolm <dmalcolm@redhat.com>
|
|
309
|
|
310 * Make-lang.in (jit.info): Implement.
|
|
311 (jit.install-info): Implement.
|
|
312 (jit.dvi): Implement.
|
|
313 (jit.pdf): Implement in terms of new target "jit.texinfo.pdf".
|
|
314 (jit.install-pdf): Likewise for new target
|
|
315 "jit.texinfo.install-pdf".
|
|
316 (jit.install-html): Implement in terms of
|
|
317 "jit.$(doc_build_sys).install-html" to redirect to new targets
|
|
318 "jit.sphinx.install-html" or "jit.texinfo.install-html".
|
|
319 (jit.html): Implement in terms of "jit.$(doc_build_sys).html" to
|
|
320 redirect to new targets "jit.sphinx.html" or "jit.texinfo.html".
|
|
321 (JIT_TEXI_FILES): New variable.
|
|
322 (jit.texinfo.html): New target.
|
|
323 (jit.texinfo.install-html): New target.
|
|
324 (jit.texinfo.pdf): New target.
|
|
325 (jit.texinfo.install-pdf): New target.
|
|
326 (SPHINX_BUILD_DIR): New variable.
|
|
327 (jit.sphinx.html): New target.
|
|
328 (jit_htmldir): New variable.
|
|
329 (jit.sphinx.install-html): New target.
|
|
330 (jit.sphinx.pdf): New target.
|
|
331
|
|
332 2014-09-26 David Malcolm <dmalcolm@redhat.com>
|
|
333
|
|
334 * internal-api.h (gcc::jit::recording::context): Convert field
|
|
335 "m_first_error_str" from a fixed-size buffer to a pointer, and add
|
|
336 a field "m_owns_first_error_str" to determine if we're responsible
|
|
337 for freeing it.
|
|
338 * internal-api.c (gcc::jit::recording::context::context): Update
|
|
339 initializations in ctor for above change.
|
|
340 (gcc::jit::recording::context::~context): Free m_first_error_str
|
|
341 if we own it.
|
|
342 (gcc::jit::recording::context::add_error_va): When capturing the
|
|
343 first error message on a context, rather than copying "errmsg" to
|
|
344 a fixed-size buffer and truncating if oversize, simply store the
|
|
345 pointer to the error message, and flag whether we need to free it.
|
|
346 (gcc::jit::recording::context::get_first_error): Update for change
|
|
347 of "m_first_error_str" from an internal buffer to a pointer.
|
|
348
|
|
349 2014-09-25 David Malcolm <dmalcolm@redhat.com>
|
|
350
|
|
351 * internal-api.c (gcc::jit::playback::context::compile): Use
|
|
352 pex_one rather than system when invoking "gcc" to go from a .s
|
|
353 file to a .so file.
|
|
354
|
|
355 2014-09-25 David Malcolm <dmalcolm@redhat.com>
|
|
356
|
|
357 * internal-api.c (make_tempdir_path_template): New.
|
|
358 (gcc::jit::playback::context::compile): Call
|
|
359 make_tempdir_path_template to make m_path_template, rather than
|
|
360 hardcoding "/tmp/" within "/tmp/libgccjit-XXXXXX".
|
|
361
|
|
362 2014-09-24 David Malcolm <dmalcolm@redhat.com>
|
|
363
|
|
364 * docs/internals/index.rst ("Overview of code structure"): Add
|
|
365 more descriptive text, including various fragments of
|
|
366 internal-api.h as appropriate.
|
|
367 * internal-api.h: Add marker comments for use by "literalinclude"
|
|
368 directives in docs/internals/index.rst.
|
|
369
|
|
370 2014-09-24 David Malcolm <dmalcolm@redhat.com>
|
|
371
|
|
372 * dummy-frontend.c (my_walker): Rename to...
|
|
373 (my_ggc_walker): ...this.
|
|
374 (my_root_tab): Rename to...
|
|
375 (jit_root_tab): ...this.
|
|
376 (jit_langhook_init): Update for renaming of "my_root_tab" to
|
|
377 "jit_root_tab".
|
|
378 * internal-api.c: Add descriptive API comments to functions
|
|
379 throughout.
|
|
380 (mutex): Rename to...
|
|
381 (jit_mutex): ...this.
|
|
382 (gcc::jit::recording::context::compile): Update for renaming of
|
|
383 "mutex" to "jit_mutex".
|
|
384 * internal-api.h: Add descriptive API comments to functions
|
|
385 throughout. Add indentation to forward declarations of classes
|
|
386 to indicate inheritance.
|
|
387 * jit-builtins.c: Likewise.
|
|
388
|
|
389 2014-09-24 David Malcolm <dmalcolm@redhat.com>
|
|
390
|
|
391 * internal-api.c (gcc::jit::dump::write): Eliminate fixed-size
|
|
392 buffer "buf" by replacing call to vsnprintf with one to vasprintf
|
|
393 and a free, emitting an error on the dump's context if a malloc
|
|
394 failure occurs.
|
|
395 (gcc::jit::recording::context::add_error_va): Likewise, using
|
|
396 a precanned message if the malloc inside vasprinf fails. Split
|
|
397 local "buf" into "malloced_msg" and "errmsg" to ensure that we
|
|
398 free the message iff we're using one malloc-ed by vasprintf.
|
|
399 (gcc::jit::recording::string::from_printf): Eliminate fixed-size
|
|
400 buffer "buf" by replacing call to vsnprintf with one to vasprintf
|
|
401 and a free, emitting an error on the relevant context if a malloc
|
|
402 failure occurs.
|
|
403
|
|
404 2014-09-24 David Malcolm <dmalcolm@redhat.com>
|
|
405
|
|
406 * dummy-frontend.c: Update copyright year. Follow standard for
|
|
407 initial includes by removing redundant include of "ansidecl.h".
|
|
408 * internal-api.c: Follow standard for initial includes by removing
|
|
409 redundant include of "ansidecl.h".
|
|
410 * jit-builtins.c: Likewise.
|
|
411 * libgccjit.c: Likewise.
|
|
412
|
|
413 2014-09-24 David Malcolm <dmalcolm@redhat.com>
|
|
414
|
|
415 * ChangeLog.jit: Add copyright footer.
|
|
416 * Make-lang.in: Update copyright.
|
|
417 * config-lang.in: Update copyright.
|
|
418 * docs/examples/install-hello-world.c: Add copyright header.
|
|
419 * docs/examples/tut01-square.c: Likewise.
|
|
420 * docs/examples/tut02-sum-of-squares.c: Likewise.
|
|
421 * docs/examples/tut03-toyvm/toyvm.c: Likewise.
|
|
422 * internal-api.c: Likewise.
|
|
423 * internal-api.h: Likewise.
|
|
424 * libgccjit++.h: Likewise.
|
|
425 * libgccjit.c: Likewise.
|
|
426 * libgccjit.h: Likewise.
|
|
427 * libgccjit.map: Likewise.
|
|
428
|
|
429 2014-09-23 David Malcolm <dmalcolm@redhat.com>
|
|
430
|
|
431 * TODO.rst (API): Shift operators are done.
|
|
432 * docs/topics/expressions.rst (Binary): Add shift operators.
|
|
433 * internal-api.c (binary_op_strings): Likewise.
|
|
434 (gcc::jit::playback::context::new_binary_op): Likewise.
|
|
435 * libgccjit.h (enum gcc_jit_binary_op): Likewise.
|
|
436
|
|
437 2014-09-23 David Malcolm <dmalcolm@redhat.com>
|
|
438
|
|
439 * TODO.rst: Rename "Initial Release" section to "API", and
|
|
440 remove completed items: builtins, docs, pkgconfig file, fuzz
|
|
441 testing. Move ability to name contexts and stmt_list per block
|
|
442 ideas to a new "Nice to have" section and note that it might be
|
|
443 better to go straight to gimple.
|
|
444 Move code coverage to "Test suite" section.
|
|
445 Add a "Probably not needed" section, moving some items to it.
|
|
446 Note that we're still missing shift operators.
|
|
447 Add idea that we could warn about unused objects in a context.
|
|
448
|
|
449 2014-09-23 David Malcolm <dmalcolm@redhat.com>
|
|
450
|
|
451 * docs/examples/tut03-toyvm/toyvm.c: Include <dejagnu.h>.
|
|
452 Add missing typedef of compilation_state.
|
|
453 (toyvm_function_parse): Add "name param.
|
|
454 (test): New.
|
|
455 (CHECK_NON_NULL): New, from harness.h
|
|
456 (CHECK_VALUE): Likewise.
|
|
457 (test_script): New.
|
|
458 (PATH_TO_SCRIPTS): New define.
|
|
459 (test_suite): New.
|
|
460 (main): If called with no args, run the test suite.
|
|
461
|
|
462 2014-09-23 David Malcolm <dmalcolm@redhat.com>
|
|
463
|
|
464 * docs/conf.py (__read_file): New helper function, for
|
|
465 extracting...
|
|
466 (gcc_BASEVER): New variable, read from "BASE-VER" in gcc src dir.
|
|
467 (gcc_DEVPHASE): Likewise, from file "DEV-PHASE".
|
|
468 (gcc_DATESTAMP): Likewise, from file "DATESTAMP".
|
|
469 (gcc_REVISION): Likewise, from file "REVISION" (if present).
|
|
470 (version): Rather than hardcoding this variable, extract from file
|
|
471 BASE-VER, via gcc_BASEVER local.
|
|
472 (release): Likewise, building it up from the files read above.
|
|
473 * docs/_build/texinfo/libgccjit.texi: Regenerate.
|
|
474
|
|
475 2014-09-22 David Malcolm <dmalcolm@redhat.com>
|
|
476
|
|
477 * docs/intro/tutorial01.rst: Remove stray "FIXME".
|
|
478 * docs/_build/texinfo/libgccjit.texi: Regenerate.
|
|
479
|
|
480 2014-09-22 David Malcolm <dmalcolm@redhat.com>
|
|
481
|
|
482 * docs/index.rst: Add internals/index.rst.
|
|
483 * docs/internals/index.rst: New.
|
|
484 * notes.txt: Update to reflect renaming of toplev_main to
|
|
485 toplev::main.
|
|
486
|
|
487 2014-09-22 David Malcolm <dmalcolm@redhat.com>
|
|
488
|
|
489 * docs/_build/texinfo/libgccjit.texi: Regenerate.
|
|
490 * docs/intro/install.rst: Reduce width of listing.
|
|
491 * docs/intro/tutorial01.rst: Use <libgccjit.h> rather than
|
|
492 "libgccjit.h" when including the header.
|
|
493 * docs/intro/tutorial02.rst: Likewise.
|
|
494 * docs/intro/tutorial03.rst: Clarify various sections; show
|
|
495 effect of reducing optimization level down from 3 to 2.
|
|
496 ("Putting it all together"): Move to above...
|
|
497 ("Behind the curtain: optimizing away stack manipulation"):
|
|
498 ...this, and rename this to...
|
|
499 ("Behind the curtain: How does our code get optimized?"): ...and
|
|
500 add more detail, and discussion of elimination of tail recursion.
|
|
501
|
|
502 2014-09-19 David Malcolm <dmalcolm@redhat.com>
|
|
503
|
|
504 * TODO.rst: Add detection of uninitialized variables, since
|
|
505 this bit me when developing "toyvm".
|
|
506
|
|
507 * docs/examples/tut03-toyvm/Makefile: New.
|
|
508 * docs/examples/tut03-toyvm/factorial.toy: New.
|
|
509 * docs/examples/tut03-toyvm/fibonacci.toy: New.
|
|
510 * docs/examples/tut03-toyvm/toyvm.c: New.
|
|
511
|
|
512 * docs/intro/index.rst: Add tutorial03.rst.
|
|
513 * docs/intro/tutorial01.rst: Fix example of how to dump
|
|
514 generated machine code.
|
|
515 * docs/intro/tutorial03.rst: New.
|
|
516 * docs/intro/factorial.png: New.
|
|
517
|
|
518 * docs/_build/texinfo/libgccjit.texi: Regenerate.
|
|
519 * docs/_build/texinfo/factorial.png: New (copied by sphinx from
|
|
520 docs/intro/factorial.png).
|
|
521
|
|
522 2014-09-18 David Malcolm <dmalcolm@redhat.com>
|
|
523
|
|
524 * Make-lang.in (jit.install-common): Install libgccjit.pc to
|
|
525 "$(DESTDIR)/$(libdir)/pkgconfig".
|
|
526 * config-lang.in (outputs): Define this, adding jit/libgccjit.pc
|
|
527 so that it makes it into AC_CONFIG_FILES and is thus generated from
|
|
528 jit/libgccjit.pc.in at configure time.
|
|
529 * docs/intro/install.rst ("Hello world"): Add discussion about the
|
|
530 use of pkg-config when building against an install in
|
|
531 a non-standard location.
|
|
532 * docs/_build/texinfo/libgccjit.texi: Regenerate.
|
|
533 * libgccjit.pc.in: New.
|
|
534
|
|
535 2014-09-18 David Malcolm <dmalcolm@redhat.com>
|
|
536
|
|
537 * docs/index.rst: Split index out into two new files...
|
|
538 * docs/intro/index.rst: New file.
|
|
539 * docs/topics/index.rst: New file.
|
|
540 * docs/_build/texinfo/libgccjit.texi: Regenerate.
|
|
541
|
|
542 2014-09-18 David Malcolm <dmalcolm@redhat.com>
|
|
543
|
|
544 * docs/_build/texinfo/Makefile: New file, generated by Sphinx, by
|
|
545 running "make texinfo" in docs directory.
|
|
546 * docs/_build/texinfo/libgccjit.texi: Likewise.
|
|
547 * docs/_build/texinfo/sum-of-squares.png: Likewise.
|
|
548
|
|
549 2014-09-18 David Malcolm <dmalcolm@redhat.com>
|
|
550
|
|
551 * docs/conf.py (Options for HTML output): Update html_theme from
|
|
552 "default" to "pyramid".
|
|
553
|
|
554 2014-09-18 David Malcolm <dmalcolm@redhat.com>
|
|
555
|
|
556 * docs/intro/install.rst: Markup fixes.
|
|
557 * docs/intro/tutorial01.rst: Likewise.
|
|
558 * docs/intro/tutorial02.rst: Likewise.
|
|
559 * docs/topics/contexts.rst: Likewise.
|
|
560 * docs/topics/expressions.rst: Likewise.
|
|
561 * docs/topics/functions.rst: Likewise.
|
|
562 * docs/topics/locations.rst: Likewise.
|
|
563 * docs/topics/types.rst: Likewise.
|
|
564
|
|
565 2014-09-18 David Malcolm <dmalcolm@redhat.com>
|
|
566
|
|
567 * docs/examples/install-hello-world.c (main): Fix missing
|
|
568 "return".
|
|
569 * docs/examples/tut01-square.c (main): Likewise.
|
|
570 * docs/examples/tut02-sum-of-squares.c (main): Likewise.
|
|
571
|
|
572 2014-09-17 David Malcolm <dmalcolm@redhat.com>
|
|
573
|
|
574 * docs/Makefile: New file.
|
|
575 * docs/conf.py: New file.
|
|
576 * docs/examples/install-hello-world.c: New file.
|
|
577 * docs/examples/tut01-square.c: New file.
|
|
578 * docs/examples/tut02-sum-of-squares.c: New file.
|
|
579 * docs/index.rst: New file.
|
|
580 * docs/intro/install.rst: New file.
|
|
581 * docs/intro/sum-of-squares.png: New file.
|
|
582 * docs/intro/tutorial01.rst: New file.
|
|
583 * docs/intro/tutorial02.rst: New file.
|
|
584 * docs/topics/contexts.rst: New file.
|
|
585 * docs/topics/expressions.rst: New file.
|
|
586 * docs/topics/functions.rst: New file.
|
|
587 * docs/topics/locations.rst: New file.
|
|
588 * docs/topics/objects.rst: New file.
|
|
589 * docs/topics/results.rst: New file.
|
|
590 * docs/topics/types.rst: New file.
|
|
591
|
|
592 2014-09-11 David Malcolm <dmalcolm@redhat.com>
|
|
593
|
|
594 * TODO.rst (Initial Release): Update for addition of myself as
|
|
595 maintainer.
|
|
596
|
|
597 2014-09-10 David Malcolm <dmalcolm@redhat.com>
|
|
598
|
|
599 * TODO.rst (Test suite): Multithreaded test is done.
|
|
600
|
|
601 2014-09-10 David Malcolm <dmalcolm@redhat.com>
|
|
602
|
|
603 * dummy-frontend.c: Fix up for the header file flattening on
|
|
604 trunk by adding includes of signop.h, tree-core.h, stor-layout.h,
|
|
605 tree-ssa-alias.h, gimple-expr.h.
|
|
606 (jit_langhook_write_globals): Update call to
|
|
607 finalize_compilation_unit to symtab->finalize_compilation_unit to
|
|
608 track change made on trunk in r214422.
|
|
609
|
|
610 * internal-api.c: Fix up for the header file flattening on trunk
|
|
611 by adding includes of gimple-expr.h, tree-ssa-alias.h,
|
|
612 stringpool.h, stor-layout.h, print-tree.h, gimplify.h.
|
|
613 (new_rvalue_from_int): Update call to real_from_integer.
|
|
614 (gcc::jit::playback::wrapper::operator new): Use
|
|
615 ggc_internal_cleared_alloc rather than
|
|
616 ggc_internal_cleared_alloc_stat.
|
|
617 (gcc::jit::playback::function::postprocess): Update call to
|
|
618 cgraph_finalize_function tocgraph_node::finalize_function.
|
|
619 (gcc::jit::playback::block::add_comment): Update call to
|
|
620 ggc_internal_alloc_stat to ggc_internal_alloc.
|
|
621
|
|
622 2014-08-08 David Malcolm <dmalcolm@redhat.com>
|
|
623
|
|
624 * libgccjit.h (gcc_jit_context_new_union_type): New entrypoint.
|
|
625 (gcc_jit_lvalue_access_field): Rename first param from "struct_"
|
|
626 to "struct_or_union".
|
|
627 (gcc_jit_rvalue_access_field): Likewise.
|
|
628
|
|
629 * libgccjit.c (gcc_jit_context_new_union_type): New entrypoint.
|
|
630
|
|
631 * libgccjit.map (gcc_jit_context_new_union_type): New entrypoint.
|
|
632
|
|
633 * internal-api.h (gcc::jit::recording::compound_type): New class
|
|
634 (gcc::jit::recording::union): New class.
|
|
635 (gcc::jit::playback::struct_): Rename this class to...
|
|
636 (gcc::jit::playback::compound_type): ...this.
|
|
637 (gcc::jit::recording::context::new_union_type): New method.
|
|
638 (gcc::jit::recording::context): Rename field "m_structs" to
|
|
639 "m_compound_types", generalizing from a vec <struct_ *> to a
|
|
640 vec<compound_type *>.
|
|
641 (gcc::jit::recording::field): Update field m_container from
|
|
642 struct * to container_type *.
|
|
643 (gcc::jit::recording::field::get_container): Generalize from
|
|
644 struct_ * to container_type *.
|
|
645 (gcc::jit::recording::field::set_container): Likewise.
|
|
646 (gcc::jit::recording::compound_type): New subclass of type, to
|
|
647 be a superclass of existing class struct_ and new class union_.
|
|
648 (gcc::jit::recording::struct_::get_name): Move to...
|
|
649 (gcc::jit::recording::compound_type::get_name): ...here.
|
|
650 (gcc::jit::recording::struct_::get_loc): Move to...
|
|
651 (gcc::jit::recording::compound_type::get_loc): ...here.
|
|
652 (gcc::jit::recording::struct_::set_fields): Move to...
|
|
653 (gcc::jit::recording::compound_type::set_fields): ...here.
|
|
654 (gcc::jit::recording::struct_::dereference): Move to...
|
|
655 (gcc::jit::recording::compound_type::dereference): ...here.
|
|
656 (gcc::jit::recording::struct_::is_int): Move to...
|
|
657 (gcc::jit::recording::compound_type::is_int): ...here.
|
|
658 (gcc::jit::recording::struct_::is_float): Move to...
|
|
659 (gcc::jit::recording::compound_type::is_float): ...here.
|
|
660 (gcc::jit::recording::struct_::is_bool): Move to...
|
|
661 (gcc::jit::recording::compound_type::is_bool): ...here.
|
|
662 (gcc::jit::recording::struct_::is_pointer): Move to...
|
|
663 (gcc::jit::recording::compound_type::is_pointer): ...here.
|
|
664 (gcc::jit::recording::struct_::is_array): Move to...
|
|
665 (gcc::jit::recording::compound_type::is_array): ...here.
|
|
666 (gcc::jit::recording::struct_::playback_struct): Move to...
|
|
667 (gcc::jit::recording::compound_type::playback_compound_type):
|
|
668 ...here, renaming and updating return type.
|
|
669 (gcc::jit::recording::struct_): Inherit from compound_type,
|
|
670 rather than just type.
|
|
671 (gcc::jit::recording::fields): Update to work on compound_type *
|
|
672 rather than struct_ *, renaming "m_struct" to "m_struct_or_union".
|
|
673 (gcc::jit::recording::union): New subclass of compound_type.
|
|
674 (gcc::jit::playback::context::new_struct_type): Generalize by
|
|
675 renaming to...
|
|
676 (gcc::jit::playback::context::new_compound_type): ...this, and
|
|
677 and an "is_struct" bool param.
|
|
678 (gcc::jit::playback::struct_): Generalize by renaming class to...
|
|
679 (gcc::jit::playback::compound_type): ...this.
|
|
680
|
|
681 * internal-api.c (gcc::jit::recording::context::context): Rename
|
|
682 field "m_structs" to "m_compound_types".
|
|
683 (gcc::jit::recording::context::new_struct_type): Likewise.
|
|
684 (gcc::jit::recording::context::new_union_type): New method.
|
|
685 (gcc::jit::recording::context::dump_to_file): Field "m_structs"
|
|
686 is renamed "m_compound_types" and changes type from struct_ *
|
|
687 to compound_type *.
|
|
688 (gcc::jit::recording::compound_type::compound_type): New ctor,
|
|
689 built from old body of gcc::jit::recording::struct_::struct_.
|
|
690 (gcc::jit::recording::struct_::set_fields): Move class to...
|
|
691 (gcc::jit::recording::compound_type::set_fields): ... here.
|
|
692 (gcc::jit::recording::struct_::dereference): Move class to...
|
|
693 (gcc::jit::recording::compound_type::dereference): ...here.
|
|
694 (gcc::jit::recording::struct_::struct_): Reimplement by calling
|
|
695 base class ctor.
|
|
696 (gcc::jit::recording::struct_::replay_into): The playback hook
|
|
697 is now "new_compound_type" and adds a bool, with true for
|
|
698 "is_struct" (vs a union).
|
|
699 (gcc::jit::recording::struct_::make_debug_string): "m_name" is
|
|
700 now moved to base class and private, so use an accessor.
|
|
701 (gcc::jit::recording::union_::union_): New function.
|
|
702 (gcc::jit::recording::union_::replay_into): New function.
|
|
703 (gcc::jit::recording::union_::make_debug_string): New function.
|
|
704 (gcc::jit::recording::fields::fields): Update first param from
|
|
705 struct_ * to compound_type *, and rename field "m_struct" to
|
|
706 "m_struct_or_union".
|
|
707 (gcc::jit::recording::fields::replay_into): "m_struct" is now
|
|
708 "m_struct_or_union" and has a playback_compound_type rather
|
|
709 than a playback_struct.
|
|
710 (gcc::jit::recording::fields::write_to_dump): Update for
|
|
711 renaming of m_struct to m_struct_or_union.
|
|
712 (gcc::jit::playback::context::new_struct_type): Rename method
|
|
713 to...
|
|
714 (gcc::jit::playback::context::new_compound_type): this,
|
|
715 generalizing so that it can make unions as well as structs; the
|
|
716 underlying playback type is now called "compound_type".
|
|
717 (gcc::jit::playback::struct_::set_fields): This method's class has
|
|
718 changed name, so this is now...
|
|
719 (gcc::jit::playback::compound_type::set_fields): ...this method.
|
|
720
|
|
721 * TODO.rst: Unions are done.
|
|
722
|
|
723 2014-08-08 David Malcolm <dmalcolm@redhat.com>
|
|
724
|
|
725 * TODO.rst: Function ptrs are done.
|
|
726 * internal-api.c
|
|
727 (gcc::jit::recording::context::new_function_ptr_type): New method.
|
|
728 (gcc::jit::recording::context::new_call_through_ptr): New method.
|
|
729 (gcc::jit::recording::memento_of_get_pointer::make_debug_string):
|
|
730 Add special-case handling of function pointer types.
|
|
731 (gcc::jit::recording::function_type::make_debug_string_with_ptr):
|
|
732 New method.
|
|
733 (gcc::jit::recording::function_type::make_debug_string):
|
|
734 Reimplement in terms of...
|
|
735 (gcc::jit::recording::function_type::make_debug_string_with): New
|
|
736 method, based on make_debug_string, but allowing for arbitrary
|
|
737 text between the return type and the parameters.
|
|
738 (gcc::jit::recording::call_through_ptr::call_through_ptr): New
|
|
739 method.
|
|
740 (gcc::jit::recording::call_through_ptr::replay_into): New method.
|
|
741 (gcc::jit::recording::call_through_ptr::make_debug_string): New
|
|
742 method.
|
|
743 (gcc::jit::playback::context::new_call): Reimplement in terms of...
|
|
744 (gcc::jit::playback::context::build_call): New method, using parts
|
|
745 of old implementation of new_call, so that we can share this
|
|
746 with...
|
|
747 (gcc::jit::playback::context::new_call_through_ptr): New method.
|
|
748 * internal-api.h
|
|
749 (gcc::jit::recording::context::new_function_ptr_type): New method.
|
|
750 (gcc::jit::recording::context::new_call_through_ptr): New method.
|
|
751 (gcc::jit::recording::type::dyn_cast_function_type): New method.
|
|
752 (gcc::jit::recording::function_type::dyn_cast_function_type): New
|
|
753 method.
|
|
754 (gcc::jit::recording::function_type::make_debug_string_with_ptr):
|
|
755 New method.
|
|
756 (gcc::jit::recording::function_type::make_debug_string_with): New
|
|
757 method.
|
|
758 (gcc::jit::recording::call_through_ptr): New subclass of rvalue.
|
|
759 (gcc::jit::playback::context::new_call_through_ptr): New method.
|
|
760 (gcc::jit::playback::context::build_call): New method.
|
|
761 * libgccjit.c (gcc_jit_context_new_function_ptr_type): New
|
|
762 function.
|
|
763 (gcc_jit_context_new_call_through_ptr): New function.
|
|
764 * libgccjit.h (gcc_jit_context_new_function_ptr_type): New
|
|
765 function.
|
|
766 (gcc_jit_context_new_call_through_ptr): New function.
|
|
767 * libgccjit.map (gcc_jit_context_new_call_through_ptr): New function.
|
|
768 (gcc_jit_context_new_function_ptr_type): New function.
|
|
769
|
|
770 2014-07-25 David Malcolm <dmalcolm@redhat.com>
|
|
771
|
|
772 * TODO.rst (error-checking): Remove various items that either
|
|
773 already were implemented, or are implemented by this commit.
|
|
774 * internal-api.h (gcc::jit::recording::type::is_numeric): New.
|
|
775 * libgccjit.c (RETURN_NULL_IF_FAIL_NONNULL_NUMERIC_TYPE): New macro.
|
|
776 (gcc_jit_context_new_rvalue_from_int): Verify that numeric_type is
|
|
777 indeed numeric.
|
|
778 (gcc_jit_context_zero): Likewise.
|
|
779 (gcc_jit_context_one): Likewise.
|
|
780 (gcc_jit_context_new_rvalue_from_double): Likewise.
|
|
781 (gcc_jit_context_new_array_access): Likewise for type of "index".
|
|
782
|
|
783 2014-07-14 David Malcolm <dmalcolm@redhat.com>
|
|
784
|
|
785 * internal-api.c (gcc::jit::recording::context::new_array_type):
|
|
786 Reject attempts to create an array of a struct if the fields of
|
|
787 the struct haven't yet been set.
|
|
788 * internal-api.h (gcc::jit::recording::type::dyn_cast_struct): New
|
|
789 virtual function.
|
|
790 (gcc::jit::recording::struct_::dyn_cast_struct): New, overriding
|
|
791 for this subclass.
|
|
792 (gcc::jit::recording::struct_::get_name): New.
|
|
793
|
|
794 2014-05-07 David Malcolm <dmalcolm@redhat.com>
|
|
795
|
|
796 * Make-lang.in (LIBGCCJIT_LINKER_NAME): New.
|
|
797 (LIBGCCJIT_VERSION_NUM): New.
|
|
798 (LIBGCCJIT_MINOR_NUM): New.
|
|
799 (LIBGCCJIT_RELEASE_NUM): New.
|
|
800 (LIBGCCJIT_SONAME): New.
|
|
801 (LIBGCCJIT_FILENAME): New.
|
|
802 (LIBGCCJIT_LINKER_NAME_SYMLINK): New.
|
|
803 (LIBGCCJIT_SONAME_SYMLINK): New.
|
|
804 (jit): Add symlink targets.
|
|
805 (libgccjit.so): Convert to...
|
|
806 (LIBGCCJIT_FILENAME): ...and add a soname.
|
|
807 (jit.install-common): Install the library with a soname, and
|
|
808 symlinks. Install libgccjit++.h.
|
|
809
|
|
810 2014-04-25 David Malcolm <dmalcolm@redhat.com>
|
|
811
|
|
812 * internal-api.c (gcc::jit::playback::context::compile): Put
|
|
813 any output of dlerror through the add_error method, rather
|
|
814 than merely printing it to stderr, so that the error is also
|
|
815 recorded on the context.
|
|
816
|
|
817 2014-03-19 Tom Tromey <tromey@redhat.com>
|
|
818
|
|
819 * internal-api.c (compile): Use auto_timevar.
|
|
820
|
|
821 2014-03-19 Tom Tromey <tromey@redhat.com>
|
|
822
|
|
823 * internal-api.c (compile): Use toplev, not toplev_options.
|
|
824 Simplify.
|
|
825
|
|
826 2014-03-19 David Malcolm <dmalcolm@redhat.com>
|
|
827
|
|
828 * internal-api.c (gcc::jit::recording::context::add_error_va):
|
|
829 Rename local "progname" to "ctxt_progname" to avoid shadowing
|
|
830 the related global, for clarity.
|
|
831 (gcc::jit::playback::context::compile): Likewise.
|
|
832
|
|
833 2014-03-19 David Malcolm <dmalcolm@redhat.com>
|
|
834
|
|
835 * internal-api.c (gcc::jit::recording::memento_of_get_pointer::
|
|
836 accepts_writes_from): Accept writes from pointers, but not arrays.
|
|
837
|
|
838 * internal-api.h (gcc::jit::recording::type::is_pointer): New.
|
|
839 (gcc::jit::recording::type::is_array): New.
|
|
840 (gcc::jit::recording::memento_of_get_type::accepts_writes_from):
|
|
841 Allow (void *) to accept writes of pointers, but not arrays.
|
|
842 (gcc::jit::recording::memento_of_get_type::is_pointer): New.
|
|
843 (gcc::jit::recording::memento_of_get_type::is_array): New.
|
|
844 (gcc::jit::recording::memento_of_get_pointer::is_pointer): New.
|
|
845 (gcc::jit::recording::memento_of_get_pointer::is_array): New.
|
|
846 (gcc::jit::recording::memento_of_get_const::is_pointer): New.
|
|
847 (gcc::jit::recording::memento_of_get_const::is_array): New.
|
|
848 (gcc::jit::recording::memento_of_get_volatile::is_pointer): New.
|
|
849 (gcc::jit::recording::memento_of_get_volatile::is_array): New.
|
|
850 (gcc::jit::recording::array_type::is_pointer): New.
|
|
851 (gcc::jit::recording::array_type::is_array): New.
|
|
852 (gcc::jit::recording::function_type::is_pointer): New.
|
|
853 (gcc::jit::recording::function_type::is_array): New.
|
|
854 (gcc::jit::recording::struct_::is_pointer): New.
|
|
855 (gcc::jit::recording::struct_::is_array): New.
|
|
856
|
|
857 * libgccjit.c (gcc_jit_context_new_rvalue_from_ptr): Require the
|
|
858 pointer_type to be a pointer, not an array.
|
|
859 (gcc_jit_context_null): Likewise.
|
|
860 (is_valid_cast): Require pointer casts to be between pointer types,
|
|
861 not arrays.
|
|
862 (gcc_jit_context_new_array_access): Update error message from "not
|
|
863 a pointer" to "not a pointer or array".
|
|
864 (gcc_jit_rvalue_dereference_field): Require the pointer arg to be
|
|
865 of pointer type, not an array.
|
|
866 (gcc_jit_rvalue_dereference): Likewise.
|
|
867
|
|
868 2014-03-14 David Malcolm <dmalcolm@redhat.com>
|
|
869
|
|
870 * libgccjit.c (is_valid_cast): Permit casts between pointer types.
|
|
871
|
|
872 * internal-api.c (convert): Report more information if this ever
|
|
873 occurs, and make the error occur on the playback context, so that
|
|
874 it makes the gcc_jit_result be NULL.
|
|
875 (gcc::jit::playback::context::build_cast): Handle pointers. Report
|
|
876 more information if an unhandlable cast reaches here.
|
|
877
|
|
878 2014-03-13 David Malcolm <dmalcolm@redhat.com>
|
|
879
|
|
880 * libgccjit.c (is_valid_cast): New.
|
|
881 (gcc_jit_context_new_cast): Check for compatible types.
|
|
882
|
|
883 * internal-api.c (gcc::jit::recording::memento_of_get_type::
|
|
884 is_int): New.
|
|
885 (gcc::jit::recording::memento_of_get_type::is_float): New.
|
|
886 (gcc::jit::recording::memento_of_get_type::is_bool): New.
|
|
887
|
|
888 * internal-api.h (gcc::jit::recording::type::is_int): New.
|
|
889 (gcc::jit::recording::type::is_float): New.
|
|
890 (gcc::jit::recording::type::is_bool): New.
|
|
891
|
|
892 (gcc::jit::recording::memento_of_get_type::is_int): New.
|
|
893 (gcc::jit::recording::memento_of_get_type::is_float): New.
|
|
894 (gcc::jit::recording::memento_of_get_type::is_bool): New.
|
|
895
|
|
896 (gcc::jit::recording::memento_of_get_pointer::is_int): New.
|
|
897 (gcc::jit::recording::memento_of_get_pointer::is_float): New.
|
|
898 (gcc::jit::recording::memento_of_get_pointer::is_bool): New.
|
|
899
|
|
900 (gcc::jit::recording::memento_of_get_const::is_int): New.
|
|
901 (gcc::jit::recording::memento_of_get_const::is_float): New.
|
|
902 (gcc::jit::recording::memento_of_get_const::is_bool): New.
|
|
903
|
|
904 (gcc::jit::recording::memento_of_get_volatile::is_int): New.
|
|
905 (gcc::jit::recording::memento_of_get_volatile::is_float): New.
|
|
906 (gcc::jit::recording::memento_of_get_volatile::is_bool): New.
|
|
907
|
|
908 (gcc::jit::recording::array_type::is_int): New.
|
|
909 (gcc::jit::recording::array_type::is_float): New.
|
|
910 (gcc::jit::recording::array_type::is_bool): New.
|
|
911
|
|
912 (gcc::jit::recording::function_type::is_int): New.
|
|
913 (gcc::jit::recording::function_type::is_float): New.
|
|
914 (gcc::jit::recording::function_type::is_bool): New.
|
|
915
|
|
916 (gcc::jit::recording::struct_::is_int): New.
|
|
917 (gcc::jit::recording::struct_::is_float): New.
|
|
918 (gcc::jit::recording::struct_::is_bool): New.
|
|
919
|
|
920 2014-03-13 David Malcolm <dmalcolm@redhat.com>
|
|
921
|
|
922 * internal-api.c (gcc::jit::recording::context::set_str_option):
|
|
923 Provide NULL recording::location to add_error.
|
|
924 (gcc::jit::recording::context::set_int_option): Likewise.
|
|
925 (gcc::jit::recording::context::set_bool_option): Likewise.
|
|
926 (gcc::jit::playback::context::compile): Likewise.
|
|
927 (gcc::jit::recording::context::add_error): Add recording::location
|
|
928 param.
|
|
929 (gcc::jit::recording::context::add_error_va): Likewise; print it
|
|
930 when present; add "error: " to stderr messages.
|
|
931 (gcc::jit::recording::location::replay_into): Provide
|
|
932 recording::location to the playback::location.
|
|
933
|
|
934 (gcc::jit::recording::function::validate): Add locations to the
|
|
935 add_error invocations.
|
|
936 (gcc::jit::recording::block::validate): Likewise.
|
|
937 (gcc::jit::playback::context::get_type): Likewise.
|
|
938 (gcc::jit::playback::context::new_unary_op): Likewise.
|
|
939 (gcc::jit::playback::context::new_binary_op): Likewise.
|
|
940 (gcc::jit::playback::context::new_comparison): Likewise.
|
|
941
|
|
942 (gcc::jit::recording::block::get_loc): New.
|
|
943 (gcc::jit::recording::block::get_first_statement): New.
|
|
944
|
|
945 (gcc::jit::playback::context::build_cast): Pass in higher-level
|
|
946 arguments in the hope of eventually providing better error
|
|
947 messages when a cast isn't possible.
|
|
948 (gcc::jit::playback::context::new_cast): As above.
|
|
949
|
|
950 (gcc::jit::playback::context::add_error): Add playback::location
|
|
951 parameter, using it to provide the corresponding
|
|
952 recording::location (if any) when reporting the error to the
|
|
953 recording::context.
|
|
954 (gcc::jit::playback::context::add_error_va): Likewise.
|
|
955 (gcc::jit::playback::context::new_location): Likewise.
|
|
956 (gcc::jit::playback::source_line::get_location): Likewise.
|
|
957 (gcc::jit::playback::location::location): Likewise.
|
|
958
|
|
959 * internal-api.h (gcc::jit::recording::context::add_error): Add
|
|
960 recording::location param.
|
|
961 (gcc::jit::recording::context::add_error_va): Likewise.
|
|
962
|
|
963 (gcc::jit::recording::context::errors_occurred): Also consider
|
|
964 errors that occur on a parent or ancestor context, recursively.
|
|
965
|
|
966 (gcc::jit::recording::block::get_loc): New.
|
|
967 (gcc::jit::recording::block::get_first_statement): New.
|
|
968 (gcc::jit::recording::statement::get_loc): New.
|
|
969
|
|
970 (gcc::jit::playback::context::new_location): Add recording::location
|
|
971 parameter.
|
|
972
|
|
973 (gcc::jit::playback::context::add_error): Add playback::location
|
|
974 parameter.
|
|
975 (gcc::jit::playback::context::add_error_va): Likewise.
|
|
976
|
|
977 (gcc::jit::playback::context::build_cast): Pass in higher-level
|
|
978 arguments in the hope of eventually providing better error
|
|
979 messages when a cast isn't possible.
|
|
980
|
|
981 (gcc::jit::playback::source_line::get_location): Add
|
|
982 recording::location parameter.
|
|
983 (gcc::jit::playback::location::location): Likewise.
|
|
984 (gcc::jit::playback::location::get_recording_loc): New.
|
|
985 (gcc::jit::playback::location::m_recording_loc): New.
|
|
986
|
|
987 * jit-builtins.c (gcc::jit::builtins_manager::get_builtin_function):
|
|
988 Provide NULL recording::location to add_error.
|
|
989 (gcc::jit::builtins_manager::make_primitive_type): Likewise.
|
|
990
|
|
991 * libgccjit.c (RETURN_VAL_IF_FAIL): Add location argument.
|
|
992 (RETURN_VAL_IF_FAIL_PRINTF1): Likewise.
|
|
993 (RETURN_VAL_IF_FAIL_PRINTF2): Likewise.
|
|
994 (RETURN_VAL_IF_FAIL_PRINTF3): Likewise.
|
|
995 (RETURN_VAL_IF_FAIL_PRINTF4): Likewise.
|
|
996 (RETURN_VAL_IF_FAIL_PRINTF6): Likewise.
|
|
997 (RETURN_NULL_IF_FAIL): Likewise.
|
|
998 (RETURN_NULL_IF_FAIL_PRINTF1): Likewise.
|
|
999 (RETURN_NULL_IF_FAIL_PRINTF2): Likewise.
|
|
1000 (RETURN_NULL_IF_FAIL_PRINTF3): Likewise.
|
|
1001 (RETURN_NULL_IF_FAIL_PRINTF4): Likewise.
|
|
1002 (RETURN_NULL_IF_FAIL_PRINTF6): Likewise.
|
|
1003 (RETURN_IF_FAIL): Likewise.
|
|
1004 (RETURN_IF_FAIL_PRINTF1): Likewise.
|
|
1005 (RETURN_IF_FAIL_PRINTF2): Likewise.
|
|
1006 (RETURN_IF_FAIL_PRINTF4): Likewise.
|
|
1007 (RETURN_IF_NOT_VALID_BLOCK): Likewise.
|
|
1008 (RETURN_NULL_IF_NOT_VALID_BLOCK): Likewise.
|
|
1009
|
|
1010 (jit_error): Likewise.
|
|
1011
|
|
1012 (gcc_jit_location_as_object): Provided location argument to
|
|
1013 error-handling macros.
|
|
1014 (gcc_jit_type_as_object): Likewise.
|
|
1015 (gcc_jit_context_get_type): Likewise.
|
|
1016 (gcc_jit_context_get_int_type): Likewise.
|
|
1017 (gcc_jit_type_get_pointer): Likewise.
|
|
1018 (gcc_jit_type_get_const): Likewise.
|
|
1019 (gcc_jit_type_get_volatile): Likewise.
|
|
1020 (gcc_jit_context_new_array_type): Likewise.
|
|
1021 (gcc_jit_context_new_field): Likewise.
|
|
1022 (gcc_jit_context_new_struct_type): Likewise.
|
|
1023 (gcc_jit_context_new_opaque_struct): Likewise.
|
|
1024 (gcc_jit_struct_as_type): Likewise.
|
|
1025 (gcc_jit_struct_set_fields): Likewise.
|
|
1026 (gcc_jit_context_new_param): Likewise.
|
|
1027 (gcc_jit_param_as_object): Likewise.
|
|
1028 (gcc_jit_param_as_lvalue): Likewise.
|
|
1029 (gcc_jit_param_as_rvalue): Likewise.
|
|
1030 (gcc_jit_context_new_function): Likewise.
|
|
1031 (gcc_jit_context_get_builtin_function): Likewise.
|
|
1032 (gcc_jit_function_as_object): Likewise.
|
|
1033 (gcc_jit_function_get_param): Likewise.
|
|
1034 (gcc_jit_function_dump_to_dot): Likewise.
|
|
1035 (gcc_jit_function_new_block): Likewise.
|
|
1036 (gcc_jit_block_as_object): Likewise.
|
|
1037 (gcc_jit_block_get_function): Likewise.
|
|
1038 (gcc_jit_context_new_global): Likewise.
|
|
1039 (gcc_jit_lvalue_as_object): Likewise.
|
|
1040 (gcc_jit_lvalue_as_rvalue): Likewise.
|
|
1041 (gcc_jit_rvalue_as_object): Likewise.
|
|
1042 (gcc_jit_rvalue_get_type): Likewise.
|
|
1043 (gcc_jit_context_new_rvalue_from_int): Likewise.
|
|
1044 (gcc_jit_context_zero): Likewise.
|
|
1045 (gcc_jit_context_one): Likewise.
|
|
1046 (gcc_jit_context_new_rvalue_from_double): Likewise.
|
|
1047 (gcc_jit_context_new_rvalue_from_ptr): Likewise.
|
|
1048 (gcc_jit_context_null): Likewise.
|
|
1049 (gcc_jit_context_new_string_literal): Likewise.
|
|
1050 (gcc_jit_context_new_unary_op): Likewise.
|
|
1051 (gcc_jit_context_new_binary_op): Likewise.
|
|
1052 (gcc_jit_context_new_comparison): Likewise.
|
|
1053 (gcc_jit_context_new_call): Likewise.
|
|
1054 (gcc_jit_context_new_cast): Likewise.
|
|
1055 (gcc_jit_context_new_array_access): Likewise.
|
|
1056 (gcc_jit_object_get_context): Likewise.
|
|
1057 (gcc_jit_object_get_debug_string): Likewise.
|
|
1058 (gcc_jit_lvalue_access_field): Likewise.
|
|
1059 (gcc_jit_rvalue_access_field): Likewise.
|
|
1060 (gcc_jit_rvalue_dereference_field): Likewise.
|
|
1061 (gcc_jit_rvalue_dereference_field): Likewise.
|
|
1062 (gcc_jit_rvalue_dereference): Likewise.
|
|
1063 (gcc_jit_lvalue_get_address): Likewise.
|
|
1064 (gcc_jit_function_new_local): Likewise.
|
|
1065 (gcc_jit_block_add_eval): Likewise.
|
|
1066 (gcc_jit_block_add_assignment): Likewise.
|
|
1067 (gcc_jit_block_add_assignment_op): Likewise.
|
|
1068 (gcc_jit_block_end_with_conditional): Likewise.
|
|
1069 (gcc_jit_block_add_comment): Likewise.
|
|
1070 (gcc_jit_block_end_with_jump): Likewise.
|
|
1071 (gcc_jit_block_end_with_return): Likewise.
|
|
1072 (gcc_jit_block_end_with_void_return): Likewise.
|
|
1073 (gcc_jit_context_set_str_option): Likewise.
|
|
1074 (gcc_jit_context_set_int_option): Likewise.
|
|
1075 (gcc_jit_context_set_bool_option): Likewise.
|
|
1076 (gcc_jit_context_compile): Likewise.
|
|
1077 (gcc_jit_context_dump_to_file): Likewise.
|
|
1078 (gcc_jit_context_get_first_error): Likewise.
|
|
1079 (gcc_jit_result_get_code): Likewise.
|
|
1080 (gcc_jit_result_get_code): Likewise.
|
|
1081 (gcc_jit_result_release): Likewise.
|
|
1082
|
|
1083 2014-03-10 David Malcolm <dmalcolm@redhat.com>
|
|
1084
|
|
1085 * libgccjit++.h (gccjit::context::new_rvalue): Make these
|
|
1086 methods const.
|
|
1087 (gccjit::context::zero): Likewise.
|
|
1088 (gccjit::context::one): Likewise.
|
|
1089 (gccjit::function::get_param): Likewise.
|
|
1090
|
|
1091 2014-03-10 David Malcolm <dmalcolm@redhat.com>
|
|
1092
|
|
1093 * libgccjit++.h (gccjit::error): New class, for exceptions.
|
|
1094 (gccjit::context::get_inner_context): New accessor, so that we
|
|
1095 can...
|
|
1096 (gccjit::context::m_inner_ctxt): Make private.
|
|
1097 (gccjit::context::context): Throw a gccjit::error if a NULL
|
|
1098 context is passed in.
|
|
1099 (gccjit::context::compile): Throw a gccjit::error if a NULL
|
|
1100 result is returned from the C API, which indicates an error.
|
|
1101 (gccjit::object::object): Throw a gccjit::error if a NULL
|
|
1102 object is passed in, since that indicates that an error has
|
|
1103 occurred.
|
|
1104 (gccjit::location::location): In the default ctor, call the
|
|
1105 base class default ctor rather than passing in a NULL to the
|
|
1106 single-argument ctor, since the latter now indicates an error
|
|
1107 has occurred at the C API level.
|
|
1108 (gccjit::field::field): Likewise.
|
|
1109 (gccjit::type::type): Likewise.
|
|
1110 (gccjit::function::function): Likewise.
|
|
1111 (gccjit::block::block): Likewise.
|
|
1112 (gccjit::rvalue::rvalue): Likewise.
|
|
1113
|
|
1114 2014-03-07 David Malcolm <dmalcolm@redhat.com>
|
|
1115
|
|
1116 * libgccjit.h (enum gcc_jit_function_kind): Add
|
|
1117 GCC_JIT_FUNCTION_ALWAYS_INLINE.
|
|
1118 * internal-api.c (gcc::jit::recording::function::write_to_dump):
|
|
1119 Handle GCC_JIT_FUNCTION_ALWAYS_INLINE.
|
|
1120 (gcc::jit::playback::context::new_function): Likewise.
|
|
1121 (gcc::jit::playback::context::postprocess): Handle
|
|
1122 GCC_JIT_FUNCTION_INTERNAL and GCC_JIT_FUNCTION_ALWAYS_INLINE by
|
|
1123 clearing DECL_EXTERNAL and TREE_PUBLIC. Doing so fixes the
|
|
1124 "undefined symbol" bug seen with GCC_JIT_FUNCTION_INTERNAL.
|
|
1125 * TODO.rst: Update.
|
|
1126
|
|
1127 2014-03-07 David Malcolm <dmalcolm@redhat.com>
|
|
1128
|
|
1129 * libgccjit++.h (gccjit::context::new_global): New.
|
|
1130
|
|
1131 2014-03-07 David Malcolm <dmalcolm@redhat.com>
|
|
1132
|
|
1133 * internal-api.c (gcc::jit::playback::context::handle_locations):
|
|
1134 Add a disabled call to line_table_dump, in case it's handy for
|
|
1135 debugging in the future.
|
|
1136 (gcc::jit::playback::context::set_tree_location): Assert that
|
|
1137 the location is non-NULL.
|
|
1138 (gcc::jit::playback::location::location): Initialize m_src_loc
|
|
1139 to UNKNOWN_LOCATION. This field should always be overwritten by
|
|
1140 handle_locations before use, but given recent issues with bogus
|
|
1141 locations it seems safer to initialize it.
|
|
1142
|
|
1143 2014-03-06 David Malcolm <dmalcolm@redhat.com>
|
|
1144
|
|
1145 * internal-api.c (gcc::jit::recording::context::
|
|
1146 disassociate_from_playback): Recursively visit parent contexts.
|
|
1147
|
|
1148 2014-03-05 David Malcolm <dmalcolm@redhat.com>
|
|
1149
|
|
1150 * libgccjit.h (gcc_jit_function_dump_to_dot): New.
|
|
1151 * libgccjit.map (gcc_jit_function_dump_to_dot): New.
|
|
1152 * libgccjit++.h (gccjit::function::dump_to_dot): New.
|
|
1153 * libgccjit.c (gcc_jit_function_dump_to_dot): New.
|
|
1154 * internal-api.h (gcc::jit::recording::function::dump_to_dot): New.
|
|
1155 (gcc::jit::recording::block::block): Add m_index member.
|
|
1156 (gcc::jit::recording::block::dump_to_dot): New.
|
|
1157 (gcc::jit::recording::block::dump_edges_to_dot): New.
|
|
1158 * internal-api.c (gcc::jit::recording::function::new_block): Give
|
|
1159 each block an index.
|
|
1160 (gcc::jit::recording::function::dump_to_dot): New.
|
|
1161 (gcc::jit::recording::block::dump_to_dot): New.
|
|
1162 (gcc::jit::recording::block::dump_edges_to_dot): New.
|
|
1163
|
|
1164 2014-03-04 David Malcolm <dmalcolm@redhat.com>
|
|
1165
|
|
1166 * internal-api.c (gcc::jit::recording::memento_of_get_pointer::
|
|
1167 accepts_writes_from): Avoid segfaulting when the argument is not
|
|
1168 of pointer type.
|
|
1169 * internal-api.h (gcc::jit::recording::accepts_writes_from): Add
|
|
1170 an assertion.
|
|
1171 * libgccjit.c (gcc_jit_context_new_comparison): Strip away const
|
|
1172 and volatile when comparing input types.
|
|
1173
|
|
1174 2014-03-04 David Malcolm <dmalcolm@redhat.com>
|
|
1175
|
|
1176 * libgccjit.h (gcc_jit_type_get_volatile): New.
|
|
1177 * libgccjit.map (gcc_jit_type_get_volatile): New.
|
|
1178 * libgccjit.c (gcc_jit_type_get_volatile): New.
|
|
1179 * libgccjit++.h (gccjit::type::get_volatile): New.
|
|
1180 * internal-api.c (gcc::jit::recording::type::get_volatile): New.
|
|
1181 (gcc::jit::recording::memento_of_get_volatile::replay_into): New.
|
|
1182 (gcc::jit::recording::memento_of_get_volatile::make_debug_string): New.
|
|
1183 * internal-api.h (gcc::jit::recording::type::get_volatile): New.
|
|
1184 (gcc::jit::recording::type::accepts_writes_from): Strip off
|
|
1185 qualifiers such as "const" and "volatile" from the source type.
|
|
1186 (gcc::jit::recording::memento_of_get_volatile): New class.
|
|
1187 (gcc::jit::playback::type::get_volatile): New.
|
|
1188 * TODO.rst: Update.
|
|
1189
|
|
1190 2014-03-03 David Malcolm <dmalcolm@redhat.com>
|
|
1191
|
|
1192 * libgccjit++.h (gccjit::function::operator()): Add overload for
|
|
1193 a call with 3 arguments.
|
|
1194 (gccjit::block::add_call): Likewise for 4 arguments.
|
|
1195 (gccjit::rvalue::cast_to): New method.
|
|
1196 (gccjit::rvalue::operator[]): New methods.
|
|
1197
|
|
1198 2014-02-28 David Malcolm <dmalcolm@redhat.com>
|
|
1199
|
|
1200 * libgccjit.c (gcc_jit_context_new_binary_op): Check that the
|
|
1201 operands have the same type.
|
|
1202 (gcc_jit_context_new_comparison): Likewise.
|
|
1203
|
|
1204 2014-02-28 David Malcolm <dmalcolm@redhat.com>
|
|
1205
|
|
1206 * libgccjit.h (gcc_jit_context_new_cast): New.
|
|
1207 * libgccjit.map (gcc_jit_context_new_cast): New.
|
|
1208 * libgccjit++.h (gccjit::context::new_cast): New method.
|
|
1209 * libgccjit.c (gcc_jit_context_new_cast): New.
|
|
1210
|
|
1211 * internal-api.h (gcc::jit::recording::context::new_cast): New method.
|
|
1212 (gcc::jit::recording::cast): New subclass of rvalue.
|
|
1213 (gcc::jit::playback::context::new_cast): New method.
|
|
1214 (gcc::jit::playback::context::build_cast): New method.
|
|
1215
|
|
1216 * internal-api.c (convert): New.
|
|
1217 (gcc::jit::recording::context::new_cast): New.
|
|
1218 (gcc::jit::recording::cast::replay_into): New.
|
|
1219 (gcc::jit::recording::cast::make_debug_string): New.
|
|
1220 (gcc::jit::playback::context::build_cast): New.
|
|
1221 (gcc::jit::playback::context::new_cast): New.
|
|
1222
|
|
1223 * TODO.rst: Update.
|
|
1224
|
|
1225 2014-02-28 David Malcolm <dmalcolm@redhat.com>
|
|
1226
|
|
1227 * libgccjit.h (gcc_jit_block_get_function): New.
|
|
1228 * libgccjit.map (gcc_jit_block_get_function): New.
|
|
1229 * libgccjit++.h (gccjit::block::get_function): New method.
|
|
1230 * libgccjit.c (gcc_jit_block_get_function): New.
|
|
1231
|
|
1232 2014-02-27 David Malcolm <dmalcolm@redhat.com>
|
|
1233
|
|
1234 * libgccjit.h (gcc_jit_label): Delete in favor of...
|
|
1235 (gcc_jit_block): New type.
|
|
1236 (gcc_jit_loop): Delete.
|
|
1237
|
|
1238 (gcc_jit_function_new_forward_label): Delete in favor of...
|
|
1239 (gcc_jit_function_new_block): New.
|
|
1240
|
|
1241 (gcc_jit_label_as_object): Delete in favor of...
|
|
1242 (gcc_jit_block_as_object): New.
|
|
1243
|
|
1244 (gcc_jit_function_add_eval): Delete in favor of...
|
|
1245 (gcc_jit_block_add_eval): New.
|
|
1246
|
|
1247 (gcc_jit_function_add_assignment): Delete in favor of...
|
|
1248 (gcc_jit_block_add_assignment): New.
|
|
1249
|
|
1250 (gcc_jit_function_add_assignment_op): Delete in favor of...
|
|
1251 (gcc_jit_block_add_assignment_op): New.
|
|
1252
|
|
1253 (gcc_jit_function_add_comment): Delete in favor of...
|
|
1254 (gcc_jit_block_add_comment): New.
|
|
1255
|
|
1256 (gcc_jit_label_as_object): Delete in favor of...
|
|
1257 (gcc_jit_block_as_object): New.
|
|
1258
|
|
1259 (gcc_jit_function_add_conditional): Delete in favor of...
|
|
1260 (gcc_jit_block_end_with_conditional): New.
|
|
1261
|
|
1262 (gcc_jit_function_add_jump): Delete in favor of...
|
|
1263 (gcc_jit_block_end_with_jump): New.
|
|
1264
|
|
1265 (gcc_jit_function_add_return): Delete in favor of...
|
|
1266 (gcc_jit_block_end_with_return): New.
|
|
1267
|
|
1268 (gcc_jit_function_add_void_return): Delete in favor of...
|
|
1269 (gcc_jit_block_end_with_void_return): New.
|
|
1270
|
|
1271 (gcc_jit_function_new_loop): Delete.
|
|
1272 (gcc_jit_function_new_loop_over_range): Delete.
|
|
1273 (gcc_jit_loop_as_object): Delete.
|
|
1274 (gcc_jit_loop_end): Delete.
|
|
1275
|
|
1276 * libgccjit.map (gcc_jit_function_add_assignment): Delete in favor of...
|
|
1277 (gcc_jit_block_add_assignment): New.
|
|
1278
|
|
1279 (gcc_jit_function_add_assignment_op): Delete in favor of...
|
|
1280 (gcc_jit_block_add_assignment_op): New.
|
|
1281
|
|
1282 (gcc_jit_function_add_comment): Delete in favor of...
|
|
1283 (gcc_jit_block_add_comment): New.
|
|
1284
|
|
1285 (gcc_jit_function_add_eval): Delete in favor of...
|
|
1286 (gcc_jit_block_add_eval): New.
|
|
1287
|
|
1288 (gcc_jit_label_as_object): Delete in favor of...
|
|
1289 (gcc_jit_block_as_object): New.
|
|
1290
|
|
1291 (gcc_jit_function_add_conditional): Delete in favor of...
|
|
1292 (gcc_jit_block_end_with_conditional): New.
|
|
1293
|
|
1294 (gcc_jit_function_add_jump): Delete in favor of...
|
|
1295 (gcc_jit_block_end_with_jump): New.
|
|
1296
|
|
1297 (gcc_jit_function_add_return): Delete in favor of...
|
|
1298 (gcc_jit_block_end_with_return): New.
|
|
1299
|
|
1300 (gcc_jit_function_add_void_return): Delete in favor of...
|
|
1301 (gcc_jit_block_end_with_void_return): New.
|
|
1302
|
|
1303 (gcc_jit_function_add_label): Delete in favor of...
|
|
1304 (gcc_jit_function_new_block): New.
|
|
1305 (gcc_jit_function_new_forward_label): Delete.
|
|
1306 (gcc_jit_function_place_forward_label): Delete.
|
|
1307
|
|
1308 (gcc_jit_function_new_loop): Delete.
|
|
1309 (gcc_jit_function_new_loop_over_range): Delete.
|
|
1310 (gcc_jit_loop_as_object): Delete.
|
|
1311 (gcc_jit_loop_end): Delete.
|
|
1312
|
|
1313 * libgccjit.c (gcc_jit_label): Delete in favor of...
|
|
1314 (gcc_jit_block): New type.
|
|
1315 (gcc_jit_loop): Delete.
|
|
1316
|
|
1317 (RETURN_IF_NOT_FUNC_DEFINITION): Delete in favor of...
|
|
1318 (RETURN_IF_NOT_VALID_BLOCK): New macro.
|
|
1319 (RETURN_NULL_IF_NOT_FUNC_DEFINITION): Delete in favor of...
|
|
1320 (RETURN_NULL_IF_NOT_VALID_BLOCK): New macro.
|
|
1321
|
|
1322 (gcc_jit_function_new_forward_label): Delete in favor of...
|
|
1323 (gcc_jit_function_new_block): New.
|
|
1324
|
|
1325 (gcc_jit_label_as_object): Delete in favor of...
|
|
1326 (gcc_jit_block_as_object): New.
|
|
1327
|
|
1328 (gcc_jit_rvalue_dereference_field): Ensure that field has been
|
|
1329 placed.
|
|
1330
|
|
1331 (gcc_jit_function_add_label): Delete
|
|
1332 (gcc_jit_function_place_forward_label): Delete.
|
|
1333
|
|
1334 (gcc_jit_function_add_eval): Delete in favor of...
|
|
1335 (gcc_jit_block_add_eval): New.
|
|
1336
|
|
1337 (gcc_jit_function_add_assignment): Delete in favor of...
|
|
1338 (gcc_jit_block_add_assignment): New.
|
|
1339
|
|
1340 (gcc_jit_function_add_assignment_op): Delete in favor of...
|
|
1341 (gcc_jit_block_add_assignment_op): New.
|
|
1342
|
|
1343 (gcc_jit_function_add_conditional): Delete in favor of...
|
|
1344 (gcc_jit_block_end_with_conditional): New.
|
|
1345
|
|
1346 (gcc_jit_function_add_comment): Delete in favor of...
|
|
1347 (gcc_jit_block_add_comment): New.
|
|
1348
|
|
1349 (gcc_jit_function_add_jump): Delete in favor of...
|
|
1350 (gcc_jit_block_end_with_jump): New.
|
|
1351
|
|
1352 (gcc_jit_function_add_return): Delete in favor of...
|
|
1353 (gcc_jit_block_end_with_return): New.
|
|
1354
|
|
1355 (gcc_jit_function_add_void_return): Delete in favor of...
|
|
1356 (gcc_jit_block_end_with_void_return): New.
|
|
1357
|
|
1358 (gcc_jit_function_new_loop): Delete.
|
|
1359 (gcc_jit_function_new_loop_over_range): Delete.
|
|
1360 (gcc_jit_loop_as_object): Delete.
|
|
1361 (gcc_jit_loop_end): Delete.
|
|
1362
|
|
1363 * internal-api.h (gcc::jit::recording::label): Delete class in
|
|
1364 favor of...
|
|
1365 (gcc::jit::recording::block): New class.
|
|
1366 (gcc::jit::recording::loop): Delete class.
|
|
1367 (gcc::jit::recording::loop_end): Delete class.
|
|
1368
|
|
1369 (gcc::jit::playback::label): Delete class in favor of...
|
|
1370 (gcc::jit::playback::block): New class.
|
|
1371
|
|
1372 (gcc::jit::playback::loop): Delete class.
|
|
1373
|
|
1374 (gcc::jit::recording::playback_label): Delete function in favor of...
|
|
1375 (gcc::jit::recording::playback_block): New function.
|
|
1376
|
|
1377 (gcc::jit::recording::context::validate): New.
|
|
1378
|
|
1379 (gcc::jit::recording::function::new_forward_label): Delete method.
|
|
1380 (gcc::jit::recording::function::add_eval): Delete method in favor
|
|
1381 of method of new gcc::jit::recording::block class.
|
|
1382 (gcc::jit::recording::function::add_assignment): Likewise.
|
|
1383 (gcc::jit::recording::function::add_assignment_op): Likewise.
|
|
1384 (gcc::jit::recording::function::add_comment): Likewise.
|
|
1385 (gcc::jit::recording::function::add_conditional): Likewise.
|
|
1386 (gcc::jit::recording::function::place_forward_label): Likewise.
|
|
1387 (gcc::jit::recording::function::add_jump): Likewise.
|
|
1388 (gcc::jit::recording::function::add_return): Likewise.
|
|
1389
|
|
1390 (gcc::jit::recording::function::add_label): Delete method in favor of...
|
|
1391 (gcc::jit::recording::function::new_block): New method.
|
|
1392
|
|
1393 (gcc::jit::recording::function::new_loop): Delete method.
|
|
1394
|
|
1395 (gcc::jit::recording::function::validate): New method.
|
|
1396 (gcc::jit::recording::function::m_activity): Delete field in favor of...
|
|
1397 (gcc::jit::recording::function::m_blocks): New field.
|
|
1398
|
|
1399 (gcc::jit::recording::statement::get_successor_blocks): New method.
|
|
1400 (gcc::jit::recording::statement::write_to_dump): Make public.
|
|
1401 (gcc::jit::recording::statement::statement): Accept a block rather
|
|
1402 than a function.
|
|
1403 (gcc::jit::recording::statement::playback_function): Delete.
|
|
1404 (gcc::jit::recording::statement::get_block): New.
|
|
1405 (gcc::jit::recording::statement::m_func): Delete in favor of...
|
|
1406 (gcc::jit::recording::statement::m_block): ...this.
|
|
1407
|
|
1408 (gcc::jit::recording::eval::eval): Accept a block rather than a
|
|
1409 function.
|
|
1410 (gcc::jit::recording::assignment::assignment): Likewise.
|
|
1411 (gcc::jit::recording::assignment_op::assignment_op): Likewise.
|
|
1412 (gcc::jit::recording::comment::comment): Likewise.
|
|
1413 (gcc::jit::recording::return::return): Likewise.
|
|
1414 (gcc::jit::recording::conditional::conditional): Likewise; accept
|
|
1415 blocks rather than labels.
|
|
1416 (gcc::jit::recording::jump::jump): Likewise.
|
|
1417 (gcc::jit::recording::conditional::get_successor_blocks): New.
|
|
1418 (gcc::jit::recording::jump::get_successor_blocks): New.
|
|
1419
|
|
1420 (gcc::jit::playback::function::new_forward_label): Delete method
|
|
1421 in favor of...
|
|
1422 (gcc::jit::playback::function::new_block): New method.
|
|
1423 (gcc::jit::playback::function::build_stmt_list): New method.
|
|
1424 (gcc::jit::playback::function::m_blocks): New field.
|
|
1425
|
|
1426 * libgccjit++.h (gccjit::label): Delete class in favor of...
|
|
1427 (gccjit::block): New class.
|
|
1428 (gccjit::function::new_forward_label): Delete methods in favor of...
|
|
1429 (gccjit::function::new_block): New methods.
|
|
1430 (gccjit::function::add_comment): Delete methods in favor of methods
|
|
1431 of new class gccjit::block.
|
|
1432 (gccjit::function::add_conditional): Likewise.
|
|
1433 (gccjit::function::add_label): Likewise.
|
|
1434 (gccjit::function::place_forward_label): Likewise.
|
|
1435 (gccjit::function::add_jump): Likewise.
|
|
1436 (gccjit::function::add_return): Likewise.
|
|
1437 (gccjit::function::add_call): Likewise.
|
|
1438
|
|
1439 * internal-api.c (gcc::jit::recording::playback_label): Delete in
|
|
1440 favor of...
|
|
1441 (gcc::jit::recording::playback_block): New.
|
|
1442 (gcc::jit::recording::context::compile): Validate.
|
|
1443 (gcc::jit::recording::context::validate): New.
|
|
1444 (gcc::jit::recording::function::function): Update.
|
|
1445 (gcc::jit::recording::function::new_forward_label): Delete.
|
|
1446 (gcc::jit::recording::function::add_eval): Delete.
|
|
1447 (gcc::jit::recording::function::add_assignment): Delete.
|
|
1448 (gcc::jit::recording::function::add_assignment_op): Delete.
|
|
1449 (gcc::jit::recording::function::new_block): New.
|
|
1450 (gcc::jit::recording::function::add_comment): Delete.
|
|
1451 (gcc::jit::ecording::function::add_conditional): Delete.
|
|
1452 (gcc::jit::recording::function::add_label): Delete.
|
|
1453 (gcc::jit::recording::function::place_forward_label): Delete.
|
|
1454 (gcc::jit::recording::function::add_jump): Delete.
|
|
1455 (gcc::jit::recording::function::add_return): Delete.
|
|
1456 (gcc::jit::recording::function::new_loop): Delete.
|
|
1457 (gcc::jit::recording::function::write_to_dump): Port to block-based
|
|
1458 representation.
|
|
1459 (gcc::jit::recording::function::validate): New.
|
|
1460 (gcc::jit::recording::block::add_eval): New.
|
|
1461 (gcc::jit::recording::block::add_assignment): New.
|
|
1462 (gcc::jit::recording::label::replay_into): Delete.
|
|
1463 (gcc::jit::recording::block::add_assignment_op): New.
|
|
1464 (gcc::jit::recording::block::add_comment): New.
|
|
1465 (gcc::jit::recording::block::end_with_conditional): New.
|
|
1466 (gcc::jit::recording::block::end_with_jump): New.
|
|
1467 (gcc::jit::recording::block::end_with_return): New.
|
|
1468 (gcc::jit::recording::block::write_to_dump): New.
|
|
1469 (gcc::jit::recording::block::validate): New.
|
|
1470 (gcc::jit::recording::block::get_last_statement): New.
|
|
1471 (gcc::jit::recording::block::get_successor_blocks): New.
|
|
1472 (gcc::jit::recording::block::replay_into): New.
|
|
1473 (gcc::jit::recording::label::make_debug_string): Delete.
|
|
1474 (gcc::jit::recording::block::make_debug_string): New.
|
|
1475 (gcc::jit::recording::statement::get_successor_blocks): New.
|
|
1476 (gcc::jit::recording::eval::replay_into): Port to block-based
|
|
1477 representation.
|
|
1478 (gcc::jit::recording::assignment::replay_into): Likewise.
|
|
1479 (gcc::jit::recording::assignment_op::replay_into): Likewise.
|
|
1480 (gcc::jit::recording::comment::replay_into): Likewise.
|
|
1481 (gcc::jit::recording::conditional::replay_into): Likewise.
|
|
1482 (gcc::jit::recording::jump::replay_into): Likewise.
|
|
1483 (gcc::jit::recording::return_::replay_into): Likewise.
|
|
1484
|
|
1485 (gcc::jit::recording::conditional::get_successor_blocks): New.
|
|
1486 (gcc::jit::recording::place_label::place_label): Delete.
|
|
1487 (gcc::jit::recording::place_label::replay_into): Delete.
|
|
1488 (gcc::jit::recording::place_label::make_debug_string): Delete.
|
|
1489 (gcc::jit::recording::place_label::write_to_dump): Delete.
|
|
1490
|
|
1491 (gcc::jit::recording::jump::get_successor_blocks): New.
|
|
1492 (gcc::jit::recording::return_::get_successor_blocks): New.
|
|
1493
|
|
1494 (gcc::jit::recording::loop::replay_into): Delete.
|
|
1495 (gcc::jit::recording::loop::make_debug_string): Delete.
|
|
1496 (gcc::jit::recording::loop::end): Delete.
|
|
1497 (gcc::jit::recording::loop_end::replay_into): Delete.
|
|
1498 (gcc::jit::recording::loop_end::make_debug_string): Delete.
|
|
1499
|
|
1500 (gcc::jit::playback::function::new_forward_label): Delete.
|
|
1501 (gcc::jit::playback::function::new_block): New.
|
|
1502 (gcc::jit::playback::function::build_stmt_list): New.
|
|
1503 (gcc::jit::playback::function::add_eval): Replace with...
|
|
1504 (gcc::jit::playback::block::add_eval): New.
|
|
1505 (gcc::jit::playback::function::add_assignment): Replace with...
|
|
1506 (gcc::jit::playback::block::add_assignment): New.
|
|
1507 (gcc::jit::playback::function::add_comment): Replace with...
|
|
1508 (gcc::jit::playback::block::add_comment): New, reimplementing,
|
|
1509 given that we no longer have labels.
|
|
1510 (gcc::jit::playback::function::add_conditional): Replace with...
|
|
1511 (gcc::jit::playback::block::add_conditional): New, reworking,
|
|
1512 given that on_false can no longer be NULL.
|
|
1513 (gcc::jit::playback::function::add_label): Delete.
|
|
1514 (gcc::jit::playback::function::place_forward_label): Delete.
|
|
1515 (gcc::jit::playback::function::add_jump): Replace with...
|
|
1516 (gcc::jit::playback::block::add_jump): New.
|
|
1517 (gcc::jit::playback::function::add_return): Replace with...
|
|
1518 (gcc::jit::playback::block::add_return): New.
|
|
1519 (gcc::jit::playback::function::new_loop): Delete.
|
|
1520 (gcc::jit::playback::label::label): Replace with...
|
|
1521 (gcc::jit::playback::block::block): ...this.
|
|
1522
|
|
1523 (gcc::jit::playback::loop::loop): Delete.
|
|
1524 (gcc::jit::playback::loop::end): Delete.
|
|
1525
|
|
1526 (gcc::jit::playback::context::replay): Call each function's
|
|
1527 build_stmt_list.
|
|
1528
|
|
1529 * TODO.rst: Update
|
|
1530
|
|
1531 2014-02-25 David Malcolm <dmalcolm@redhat.com>
|
|
1532
|
|
1533 * libgccjit.h (gcc_jit_function_add_void_return): New.
|
|
1534 * libgccjit.map (gcc_jit_function_add_void_return): New.
|
|
1535 * libgccjit.c (gcc_jit_function_add_void_return): New.
|
|
1536 * libgccjit++.h (add_return): Add overloaded variant with no
|
|
1537 rvalue, calling gcc_jit_function_add_void_return.
|
|
1538
|
|
1539 * internal-api.c (gcc::jit::recording::function::add_return): Add
|
|
1540 comment that rvalue could be NULL.
|
|
1541 (gcc::jit::playback::function::add_return): Support rvalue being
|
|
1542 NULL.
|
|
1543
|
|
1544 2014-02-25 David Malcolm <dmalcolm@redhat.com>
|
|
1545
|
|
1546 * internal-api.h (gcc::jit::playback::function): Add field
|
|
1547 m_inner_block.
|
|
1548
|
|
1549 * internal-api.c (gcc::jit::playback::function::function):
|
|
1550 Create BLOCK here and link it to the BIND_EXPR.
|
|
1551 (gcc::jit::playback::function::gt_ggc_mx): Walk m_inner_block.
|
|
1552 (gcc::jit::playback::function::postprocess): Set up BLOCK_VARS on
|
|
1553 the block, so that the local variables make it into the debuginfo.
|
|
1554
|
|
1555 2014-02-24 Philip Herron <redbrain@gcc.gnu.org>
|
|
1556
|
|
1557 * Make-lang.in (jit.install-common): Implement.
|
|
1558
|
|
1559 2014-02-21 David Malcolm <dmalcolm@redhat.com>
|
|
1560
|
|
1561 * libgccjit.h (gcc_jit_context_dump_to_file): New.
|
|
1562 * libgccjit.map (gcc_jit_context_dump_to_file): New.
|
|
1563 * libgccjit.c (gcc_jit_context_dump_to_file): New.
|
|
1564 * libgccjit++.h (gccjit::context::dump_to_file): New.
|
|
1565
|
|
1566 * internal-api.h (gcc::jit::dump): New class.
|
|
1567 (gcc::jit::recording::playback_location): Add a replayer argument,
|
|
1568 so that playback locations can be created before playback statements.
|
|
1569 (gcc::jit::recording::location::playback_location): Likewise.
|
|
1570 (gcc::jit::recording::statement::playback_location): Likewise.
|
|
1571 (gcc::jit::recording::context::dump_to_file): New.
|
|
1572 (gcc::jit::recording::context::m_structs): New field, for use by
|
|
1573 dump_to_file.
|
|
1574 (gcc::jit::recording::context::m_functions): Likewise.
|
|
1575 (gcc::jit::recording::memento::write_to_dump): New virtual function.
|
|
1576 (gcc::jit::recording::field::write_to_dump): New.
|
|
1577 (gcc::jit::recording::fields::write_to_dump): New.
|
|
1578 (gcc::jit::recording::function::write_to_dump): New.
|
|
1579 (gcc::jit::recording::function::m_locals): New field for use by
|
|
1580 write_to_dump.
|
|
1581 (gcc::jit::recording::function::m_activity): Likewise.
|
|
1582 (gcc::jit::recording::local::write_to_dump): New.
|
|
1583 (gcc::jit::recording::statement::write_to_dump): New.
|
|
1584 (gcc::jit::recording::place_label::write_to_dump): New.
|
|
1585
|
|
1586 * internal-api.c (gcc::jit::dump::dump): New.
|
|
1587 (gcc::jit::dump::~dump): New.
|
|
1588 (gcc::jit::dump::write): New.
|
|
1589 (gcc::jit::dump::make_location): New.
|
|
1590 (gcc::jit::recording::playback_location): Add a replayer argument,
|
|
1591 so that playback locations can be created before playback statements.
|
|
1592
|
|
1593 (gcc::jit::recording::context::context): Initialize new fields.
|
|
1594 (gcc::jit::recording::function::function): Likewise.
|
|
1595
|
|
1596 (gcc::jit::recording::context::new_struct_type): Add struct to the
|
|
1597 context's m_structs vector.
|
|
1598 (gcc::jit::recording::context::new_function): Add function to the
|
|
1599 context's m_functions vector.
|
|
1600 (gcc::jit::recording::context::dump_to_file): New.
|
|
1601 (gcc::jit::recording::memento::write_to_dump): New.
|
|
1602 (gcc::jit::recording::field::write_to_dump): New.
|
|
1603 (gcc::jit::recording::fields::write_to_dump): New.
|
|
1604 (gcc::jit::recording::function::write_to_dump): New.
|
|
1605 (gcc::jit::recording::local::write_to_dump): New.
|
|
1606 (gcc::jit::recording::statement::write_to_dump): New.
|
|
1607 (gcc::jit::recording::place_label::write_to_dump): New.
|
|
1608
|
|
1609 (gcc::jit::recording::array_type::replay_into): Pass on replayer
|
|
1610 to call to playback_location.
|
|
1611 (gcc::jit::recording::field::replay_into): Likewise.
|
|
1612 (gcc::jit::recording::struct_::replay_into): Likewise.
|
|
1613 (gcc::jit::recording::param::replay_into): Likewise.
|
|
1614 (gcc::jit::recording::function::replay_into): Likewise.
|
|
1615 (gcc::jit::recording::global::replay_into): Likewise.
|
|
1616 (gcc::jit::recording::unary_op::replay_into): Likewise.
|
|
1617 (gcc::jit::recording::binary_op::replay_into): Likewise.
|
|
1618 (gcc::jit::recording::comparison::replay_into): Likewise.
|
|
1619 (gcc::jit::recording::call::replay_into): Likewise.
|
|
1620 (gcc::jit::recording::array_access::replay_into): Likewise.
|
|
1621 (gcc::jit::recording::access_field_of_lvalue::replay_into): Likewise.
|
|
1622 (gcc::jit::recording::access_field_rvalue::replay_into): Likewise.
|
|
1623 (gcc::jit::recording::dereference_field_rvalue::replay_into): Likewise.
|
|
1624 (gcc::jit::recording::dereference_rvalue::replay_into): Likewise.
|
|
1625 (gcc::jit::recording::get_address_of_lvalue::replay_into): Likewise.
|
|
1626 (gcc::jit::recording::local::replay_into): Likewise.
|
|
1627 (gcc::jit::recording::eval::replay_into): Likewise.
|
|
1628 (gcc::jit::recording::assignment::replay_into): Likewise.
|
|
1629 (gcc::jit::recording::assignment_op::replay_into): Likewise.
|
|
1630 (gcc::jit::recording::comment::replay_into): Likewise.
|
|
1631 (gcc::jit::recording::conditional::replay_into): Likewise.
|
|
1632 (gcc::jit::recording::place_label::replay_into): Likewise.
|
|
1633 (gcc::jit::recording::jump::replay_into): Likewise.
|
|
1634 (gcc::jit::recording::return_::replay_into): Likewise.
|
|
1635 (gcc::jit::recording::loop::replay_into): Likewise.
|
|
1636 (gcc::jit::recording::loop_end::replay_into): Likewise.
|
|
1637
|
|
1638 (gcc::jit::recording::function::new_local): Add to the function's
|
|
1639 vector of locals.
|
|
1640 (gcc::jit::recording::function::add_eval): Add to the function's
|
|
1641 m_activity field.
|
|
1642 (gcc::jit::recording::function::add_assignment): Likewise.
|
|
1643 (gcc::jit::recording::function::add_assignment_op): Likewise.
|
|
1644 (gcc::jit::recording::function::add_comment): Likewise.
|
|
1645 (gcc::jit::recording::function::add_conditional): Likewise.
|
|
1646 (gcc::jit::recording::function::place_forward_label): Likewise.
|
|
1647 (gcc::jit::recording::function::add_jump): Likewise.
|
|
1648 (gcc::jit::recording::function::add_return): Likewise.
|
|
1649 (gcc::jit::recording::function::new_loop): Likewise.
|
|
1650
|
|
1651 (gcc::jit::recording::conditional::make_debug_string): Add missing
|
|
1652 semicolon.
|
|
1653
|
|
1654 2014-02-19 David Malcolm <dmalcolm@redhat.com>
|
|
1655
|
|
1656 * libgccjit.c (gcc_jit_context_new_rvalue_from_ptr): Verify that
|
|
1657 pointer_type is indeed a pointer type.
|
|
1658 (gcc_jit_context_null): Likewise.
|
|
1659 (gcc_jit_context_new_array_access): Verify that ptr is indeed a
|
|
1660 pointer.
|
|
1661
|
|
1662 * TODO.rst: Update
|
|
1663
|
|
1664 2014-02-18 David Malcolm <dmalcolm@redhat.com>
|
|
1665
|
|
1666 * libgccjit.h (gcc_jit_struct): New.
|
|
1667 (gcc_jit_context_new_struct_type): Change return type from gcc_jit_type
|
|
1668 to gcc_jit_struct.
|
|
1669 (gcc_jit_context_new_opaque_struct): New.
|
|
1670 (gcc_jit_struct_as_type): New.
|
|
1671 (gcc_jit_struct_set_fields): New.
|
|
1672 (gcc_jit_context_null): New.
|
|
1673
|
|
1674 * libgccjit.map (gcc_jit_context_new_opaque_struct): New.
|
|
1675 (gcc_jit_context_null): New.
|
|
1676 (gcc_jit_struct_as_type): New.
|
|
1677 (gcc_jit_struct_set_fields): New.
|
|
1678
|
|
1679 * libgccjit++.h (gccjit::context::new_struct_type): Return a
|
|
1680 struct_ rather than a type.
|
|
1681 (gccjit::context::new_opaque_struct_type): New.
|
|
1682 (gccjit::struct_): New subclass of type.
|
|
1683
|
|
1684 * libgccjit.c (gcc_jit_struct): New.
|
|
1685 (RETURN_VAL_IF_FAIL_PRINTF1): New.
|
|
1686 (RETURN_VAL_IF_FAIL_PRINTF2): New.
|
|
1687 (RETURN_NULL_IF_FAIL_PRINTF1): New.
|
|
1688 (RETURN_IF_FAIL_PRINTF1): New.
|
|
1689 (RETURN_IF_FAIL_PRINTF2): New.
|
|
1690 (gcc_jit_context_new_struct_type): Return a gcc_jit_struct rather
|
|
1691 than a gcc_jit_type; implement by creating the struct, then
|
|
1692 setting the fields in it.
|
|
1693 (gcc_jit_context_new_opaque_struct): New.
|
|
1694 (gcc_jit_struct_as_type): New.
|
|
1695 (gcc_jit_struct_set_fields): New.
|
|
1696 (gcc_jit_context_null): New.
|
|
1697 (gcc_jit_lvalue_access_field): Use the struct's context when
|
|
1698 reporting on a NULL field; verify that the field has been placed
|
|
1699 in a struct.
|
|
1700 (gcc_jit_rvalue_access_field): Likewise.
|
|
1701 (is_bool): New.
|
|
1702 (gcc_jit_function_add_conditional): Use the function's context
|
|
1703 when reporting errors; verify that boolval's type is indeed
|
|
1704 boolean.
|
|
1705 (gcc_jit_function_new_loop): Likewise.
|
|
1706
|
|
1707 * internal-api.h (gcc::jit::recording::context::new_struct_type):
|
|
1708 Don't accept fields, and return a struct_ rather than a type_, so
|
|
1709 that fields can be set later.
|
|
1710 (gcc::jit::recording::struct_::struct_): Store a (fields *) rather
|
|
1711 than a vec of fields.
|
|
1712 (gcc::jit::recording::struct_::as_type): New.
|
|
1713 (gcc::jit::recording::struct_::get_fields): New.
|
|
1714 (gcc::jit::recording::struct_::set_fields): New.
|
|
1715 (gcc::jit::recording::struct_::playback_struct): New.
|
|
1716 (gcc::jit::recording::fields): New class.
|
|
1717 (gcc::jit::playback::context::new_struct_type): Don't accept
|
|
1718 fields, and return a struct_ rather than a type_, so that fields
|
|
1719 can be set later.
|
|
1720 (gcc::jit::playback::struct_): New subclass of type.
|
|
1721
|
|
1722 * internal-api.c (gcc::jit::recording::context::get_type): With
|
|
1723 nested contexts, create basic types within the ultimate parent
|
|
1724 context, allowing for a fast check for the boolean type using
|
|
1725 pointer equality.
|
|
1726 (gcc::jit::recording::context::new_struct_type): Don't accept
|
|
1727 fields, and return a struct_ rather than a type_, so that fields
|
|
1728 can be set later.
|
|
1729 (gcc::jit::recording::context::get_opaque_FILE_type): Update for
|
|
1730 struct-creation changes.
|
|
1731 (gcc::jit::recording::struct_::struct_): Store a (fields *) rather
|
|
1732 than a vec of fields.
|
|
1733 (gcc::jit::recording::struct_::set_fields): New.
|
|
1734 (gcc::jit::recording::struct_::replay_into): Don't playback the
|
|
1735 fields, as this is now done by a fields instance.
|
|
1736 (gcc::jit::recording::fields::fields): New.
|
|
1737 (gcc::jit::recording::fields::replay_into): New.
|
|
1738 (gcc::jit::recording::fields::make_debug_string): New.
|
|
1739 (gcc::jit:: playback::context::new_struct_type): Don't accept
|
|
1740 fields, and return a struct_ rather than a type_, so that fields
|
|
1741 can be set later.
|
|
1742 (gcc::jit::playback::struct_::set_fields): New.
|
|
1743
|
|
1744 * TODO.rst: Update.
|
|
1745
|
|
1746 2014-02-18 David Malcolm <dmalcolm@redhat.com>
|
|
1747
|
|
1748 * libgccjit.c (gcc_jit_function_new_local): Use the context of the
|
|
1749 function when reporting errors.
|
|
1750 (gcc_jit_function_place_forward_label): Likewise.
|
|
1751 (gcc_jit_function_add_eval): Likewise.
|
|
1752 (gcc_jit_function_add_assignment_op): Likewise.
|
|
1753 (gcc_jit_function_add_comment): Likewise.
|
|
1754 (gcc_jit_function_add_jump): Likewise.
|
|
1755
|
|
1756 2014-02-14 David Malcolm <dmalcolm@redhat.com>
|
|
1757
|
|
1758 * libgccjit++.h (gccjit::type::zero): New method.
|
|
1759 (gccjit::type::one): New method.
|
|
1760 (gccjit::function::add_call): New family of overloaded methods.
|
|
1761
|
|
1762 2014-02-13 David Malcolm <dmalcolm@redhat.com>
|
|
1763
|
|
1764 * libgccjit.h (gcc_jit_context_get_builtin_function): New.
|
|
1765 * libgccjit.map (gcc_jit_context_get_builtin_function): New.
|
|
1766 * libgccjit++.h (gccjit::context::get_builtin_function): New method.
|
|
1767
|
|
1768 * Make-lang.in (jit_OBJS): Add jit/jit-builtins.o
|
|
1769 * jit-builtins.c: New source file, for managing builtin functions
|
|
1770 and their types.
|
|
1771 * jit-builtins.h: Likewise.
|
|
1772
|
|
1773 * libgccjit.c (gcc_jit_context_new_function): Pass BUILT_IN_NONE for
|
|
1774 the new argument of new_function
|
|
1775 (gcc_jit_context_get_builtin_function): New.
|
|
1776
|
|
1777 * internal-api.h: Add idempotency guards.
|
|
1778 (gcc::jit::recording::context::new_function): Add parameter
|
|
1779 for builtin functions.
|
|
1780 (gcc::jit::recording::context::get_builtin_function): New method.
|
|
1781 (gcc::jit::recording::context::m_builtins_manager): New field.
|
|
1782 (gcc::jit::recording::type::as_a_function_type): New virtual function.
|
|
1783 (gcc::jit::recording::function_type): New subclass of type.
|
|
1784 (gcc::jit::recording::function::function): Add parameter for
|
|
1785 builtin functions.
|
|
1786 (gcc::jit::recording::function::m_builtin_id): New field.
|
|
1787 (gcc::jit::recording::function::new_function_type): New method.
|
|
1788 (gcc::jit::playback::function::function): Add parameter for
|
|
1789 builtin functions.
|
|
1790 * internal-api.c (gcc::jit::recording::context::context):
|
|
1791 NULL-initialize new field m_builtins_manager.
|
|
1792 (gcc::jit::recording::context::~context): Clean up the builtins
|
|
1793 manager, if one has been created.
|
|
1794 (gcc::jit::recording::context::new_function): Add parameter
|
|
1795 (gcc::jit::recording::context::get_builtin_function): New method.
|
|
1796 (gcc::jit::recording::function_type::function_type): Implement
|
|
1797 constructor for new subclass.
|
|
1798 (gcc::jit::recording::function_type::dereference): Implement
|
|
1799 method for new subclass.
|
|
1800 (gcc::jit::recording::function_type::replay_into): Likewise.
|
|
1801 (gcc::jit::recording::function_type::make_debug_string): Likewise.
|
|
1802 (gcc::jit::recording::function::function): Add parameter for
|
|
1803 builtin functions.
|
|
1804 (gcc::jit::recording::function::replay_into): Likewise for
|
|
1805 creation of playback object.
|
|
1806 (gcc::jit::recording::function::new_function_type): New method.
|
|
1807 (gcc::jit::playback::function::new_function): Add parameter for
|
|
1808 builtin functions, using it to set up the fndecl accordingly.
|
|
1809
|
|
1810 2014-02-11 David Malcolm <dmalcolm@redhat.com>
|
|
1811
|
|
1812 * libgccjit.c (IS_ASCII_ALPHA): New macro.
|
|
1813 (IS_ASCII_DIGIT): New macro.
|
|
1814 (IS_ASCII_ALNUM): New macro.
|
|
1815 (gcc_jit_context_new_function): Require that function names be valid
|
|
1816 C identifiers for now, to avoid later problems in the assembler.
|
|
1817
|
|
1818 2014-02-11 David Malcolm <dmalcolm@redhat.com>
|
|
1819
|
|
1820 * libgccjit.h (enum gcc_jit_types): Add GCC_JIT_TYPE_BOOL.
|
|
1821
|
|
1822 * internal-api.h (gcc::jit::recording::comparison::comparison): Use
|
|
1823 GCC_JIT_TYPE_BOOL as the types of comparisons, rather than
|
|
1824 GCC_JIT_TYPE_INT.
|
|
1825
|
|
1826 * internal-api.c (gcc::jit::recording::memento_of_get_type::
|
|
1827 dereference): Handle GCC_JIT_TYPE_BOOL (with an error).
|
|
1828 (get_type_strings): Add GCC_JIT_TYPE_BOOL.
|
|
1829 (get_tree_node_for_type): Handle GCC_JIT_TYPE_BOOL.
|
|
1830
|
|
1831 2014-02-11 David Malcolm <dmalcolm@redhat.com>
|
|
1832
|
|
1833 * internal-api.c (gcc::jit::recording::context::add_error_va): If
|
|
1834 GCC_JIT_STR_OPTION_PROGNAME is NULL, use "libgccjit.so", as per
|
|
1835 the comment in libgccjit.h
|
|
1836 (gcc::jit::recording::label::replay_into): When reporting on an
|
|
1837 unplaced label, include the name of the containing function in
|
|
1838 the error message.
|
|
1839 * libgccjit.c: Remove comment about "Functions for use within the
|
|
1840 code factory", as this distinction went away in commit
|
|
1841 96b218c9a1d5f39fb649e02c0e77586b180e8516.
|
|
1842 (RETURN_VAL_IF_FAIL_PRINTF4): New.
|
|
1843 (RETURN_NULL_IF_FAIL_PRINTF4): New.
|
|
1844 (jit_error): Invoke vfprintf with the correct format string in
|
|
1845 the NULL context case.
|
|
1846 (gcc_jit_context_new_call): Check for NULL entries within the
|
|
1847 array of arguments.
|
|
1848
|
|
1849 2014-02-10 David Malcolm <dmalcolm@redhat.com>
|
|
1850
|
|
1851 * libgccjit.h (gcc_jit_context_get_int_type): New.
|
|
1852 * libgccjit.map (gcc_jit_context_get_int_type): New.
|
|
1853 * libgccjit.c (gcc_jit_context_get_int_type): New.
|
|
1854
|
|
1855 * internal-api.h (gcc::jit::recording::context::get_int_type): New.
|
|
1856 (gcc::jit::recording::context::get_int_type<T>): New template.
|
|
1857 * internal-api.c (gcc::jit::recording::context::get_int_type): New.
|
|
1858
|
|
1859 * libgccjit++.h: Include <limits> so we can use std::numeric_limits.
|
|
1860 (gccjit::context::get_int_type): New.
|
|
1861 (gccjit::context::get_int_type<T>): New.
|
|
1862
|
|
1863 2014-02-10 David Malcolm <dmalcolm@redhat.com>
|
|
1864
|
|
1865 * libgccjit.h (gcc_jit_function_get_param): New.
|
|
1866 * libgccjit.map (gcc_jit_function_get_param): New.
|
|
1867 * libgccjit.c (gcc_jit_function_get_param): New.
|
|
1868 * libgccjit++.h (gccjit::function::get_param): New.
|
|
1869
|
|
1870 2014-02-10 David Malcolm <dmalcolm@redhat.com>
|
|
1871
|
|
1872 * libgccjit++.h (gccjit::object::get_inner_object): Make const.
|
|
1873 (gccjit::location::get_inner_location): Likewise.
|
|
1874 (gccjit::field::get_inner_field): Likewise.
|
|
1875 (gccjit::type::get_inner_type): Likewise.
|
|
1876 (gccjit::function::get_inner_function): Likewise.
|
|
1877 (gccjit::label::get_inner_label): Likewise.
|
|
1878 (gccjit::rvalue::get_inner_rvalue): Likewise.
|
|
1879 (gccjit::lvalue::get_inner_lvalue): Likewise.
|
|
1880 (gccjit::param::get_inner_param): Likewise.
|
|
1881
|
|
1882 2014-02-10 David Malcolm <dmalcolm@redhat.com>
|
|
1883
|
|
1884 * libgccjit++.h (gccjit::object::get_context): New method.
|
|
1885 (gccjit::function): Add overloaded operator () for various
|
|
1886 numbers of arguments as a very terse way of creating function calls.
|
|
1887 (gccjit::rvalue::get_type): New method.
|
|
1888
|
|
1889 (operator-): New overloaded unary op for rvalues.
|
|
1890 (operator~): Likewise.
|
|
1891 (operator!): Likewise.
|
|
1892
|
|
1893 (operator+): New overloaded binary op for rvalues.
|
|
1894 (operator-): Likewise.
|
|
1895 (operator*): Likewise.
|
|
1896 (operator/): Likewise.
|
|
1897 (operator%): Likewise.
|
|
1898 (operator&): Likewise.
|
|
1899 (operator^): Likewise.
|
|
1900 (operator|): Likewise.
|
|
1901 (operator&&): Likewise.
|
|
1902 (operator||): Likewise.
|
|
1903
|
|
1904 (operator==): New overloaded comparison for rvalues.
|
|
1905 (operator!=): Likewise.
|
|
1906 (operator<): Likewise.
|
|
1907 (operator<=): Likewise.
|
|
1908 (operator>): Likewise.
|
|
1909 (operator>=): Likewise.
|
|
1910
|
|
1911 (operator*): New overloaded operator for dereferencing an
|
|
1912 rvalue representing a pointer.
|
|
1913
|
|
1914 * libgccjit.c (gcc_jit_rvalue_get_type): New.
|
|
1915 * libgccjit.h (gcc_jit_rvalue_get_type): New.
|
|
1916 * libgccjit.map (gcc_jit_rvalue_get_type): New.
|
|
1917
|
|
1918 2014-02-10 David Malcolm <dmalcolm@redhat.com>
|
|
1919
|
|
1920 * libgccjit++.h (gccjit::context::new_minus): New method,
|
|
1921 providing a way to do a specific unary op with less typing.
|
|
1922 (gccjit::context::new_bitwise_negate): Likewise.
|
|
1923 (gccjit::context::new_logical_negate): Likewise.
|
|
1924
|
|
1925 (gccjit::context::new_plus): Likewise, for binary op.
|
|
1926 (gccjit::context::new_minus): Likewise.
|
|
1927 (gccjit::context::new_mult): Likewise.
|
|
1928 (gccjit::context::new_divide): Likewise.
|
|
1929 (gccjit::context::new_modulo): Likewise.
|
|
1930 (gccjit::context::new_bitwise_and): Likewise.
|
|
1931 (gccjit::context::new_bitwise_xor): Likewise.
|
|
1932 (gccjit::context::new_bitwise_or): Likewise.
|
|
1933 (gccjit::context::new_logical_and): Likewise.
|
|
1934 (gccjit::context::new_logical_or): Likewise.
|
|
1935
|
|
1936 (gccjit::context::new_eq): Likewise, for comparison.
|
|
1937 (gccjit::context::new_ne): Likewise.
|
|
1938 (gccjit::context::new_lt): Likewise.
|
|
1939 (gccjit::context::new_le): Likewise.
|
|
1940 (gccjit::context::gccjit::context::new_gt): Likewise.
|
|
1941 (gccjit::context::gccjit::context::new_ge): Likewise.
|
|
1942
|
|
1943 (gccjit::context::new_call): Add a series of overloaded methods
|
|
1944 for specific numbers of args (from 0 - 6), to avoid the need for
|
|
1945 client code to manually build a std::vector (or requiring C++11).
|
|
1946
|
|
1947 2014-02-10 David Malcolm <dmalcolm@redhat.com>
|
|
1948
|
|
1949 * libgccjit++.h (gccjit::context::new_struct_type): Pass std::vector
|
|
1950 "fields" argument by reference rather than by value.
|
|
1951 (gccjit::context::new_function): Likewise, for "params" arg.
|
|
1952 (gccjit::context::new_call): Likewise, for "args" arg.
|
|
1953
|
|
1954 2014-02-10 David Malcolm <dmalcolm@redhat.com>
|
|
1955
|
|
1956 * libgccjit++.h (gccjit::context::new_location): Update filename
|
|
1957 arg from a const char * to a const std::string &.
|
|
1958 (gccjit::context::new_field): Likewise for "name" arg.
|
|
1959 (gccjit::context::new_struct_type): Likewise.
|
|
1960 (gccjit::context::new_param): Likewise.
|
|
1961 (gccjit::context::new_function): Likewise.
|
|
1962 (gccjit::function::new_local): Likewise.
|
|
1963 (gccjit::context::new_rvalue): Likewise for "value" arg.
|
|
1964 (gccjit::function::add_comment): Likewise for "text" arg.
|
|
1965 (gccjit::function::new_forward_label): Likewise for "name" arg; add
|
|
1966 variant taking no args for anonymous labels.
|
|
1967 (gccjit::function::add_label): Likewise.
|
|
1968
|
|
1969 2014-02-10 David Malcolm <dmalcolm@redhat.com>
|
|
1970
|
|
1971 * libgccjit++.h (gccjit::object, gccjit::location): Move
|
|
1972 these declarations to before that of gccjit::context so that
|
|
1973 the various methods of context taking a location can have a
|
|
1974 default location value.
|
|
1975 (gccjit::context::new_array_type): Consolidate two methods,
|
|
1976 one accepting a gccjit::location, the other without, by
|
|
1977 providing a default argument (which thus has to be moved to the
|
|
1978 end of the argument list).
|
|
1979 (gccjit::context::new_field): Likewise.
|
|
1980 (gccjit::context::new_struct_type): Likewise.
|
|
1981 (gccjit::context::new_param): Likewise.
|
|
1982 (gccjit::context::new_function): Likewise.
|
|
1983 (gccjit::context::new_unary_op): Likewise.
|
|
1984 (gccjit::context::new_binary_op): Likewise.
|
|
1985 (gccjit::context::new_comparison): Likewise.
|
|
1986 (gccjit::context::new_call): Likewise.
|
|
1987 (gccjit::context::new_array_access): Likewise.
|
|
1988 (gccjit::function::new_local): Likewise.
|
|
1989 (gccjit::function::add_eval): Likewise.
|
|
1990 (gccjit::function::add_assignment): Likewise.
|
|
1991 (gccjit::function::add_assignment_op): Likewise.
|
|
1992 (gccjit::function::add_comment): Likewise.
|
|
1993 (gccjit::function::add_conditional): Likewise.
|
|
1994 (gccjit::function::add_label): Likewise.
|
|
1995 (gccjit::function::place_forward_label): Likewise.
|
|
1996 (gccjit::function::add_jump): Likewise.
|
|
1997 (gccjit::function::add_return): Likewise.
|
|
1998 (gccjit::rvalue::access_field): Likewise.
|
|
1999 (gccjit::rvalue::dereference_field): Likewise.
|
|
2000 (gccjit::rvalue::dereference): Likewise.
|
|
2001 (gccjit::lvalue::access_field): Likewise.
|
|
2002 (gccjit::lvalue::get_address): Likewise.
|
|
2003
|
|
2004 2014-02-10 David Malcolm <dmalcolm@redhat.com>
|
|
2005
|
|
2006 * TODO.rst: Update.
|
|
2007
|
|
2008 2014-02-06 David Malcolm <dmalcolm@redhat.com>
|
|
2009
|
|
2010 * libgccjit++.h: Include <ostream> rather than <iostream>, since
|
|
2011 the former gets us std::ostream, and the latter may introduce
|
|
2012 startup-time overhead for constructing std::cout et al.
|
|
2013 (gccjit::context::new_child_context): New.
|
|
2014 (gccjit::context::release): New.
|
|
2015 (gccjit::context::compile): New.
|
|
2016 (gccjit::context::set_int_option): New.
|
|
2017 (gccjit::context::set_bool_option): New.
|
|
2018
|
|
2019 2014-02-03 David Malcolm <dmalcolm@redhat.com>
|
|
2020
|
|
2021 * libgccjit.h (struct gcc_jit_object): New.
|
|
2022 (gcc_jit_object_get_context): New.
|
|
2023 (gcc_jit_object_get_debug_string): New.
|
|
2024 (gcc_jit_location_as_object): New.
|
|
2025 (gcc_jit_type_as_object): New.
|
|
2026 (gcc_jit_field_as_object): New.
|
|
2027 (gcc_jit_param_as_object): New.
|
|
2028 (gcc_jit_function_as_object): New.
|
|
2029 (gcc_jit_label_as_object): New.
|
|
2030 (gcc_jit_lvalue_as_object): New.
|
|
2031 (gcc_jit_rvalue_as_object): New.
|
|
2032 (gcc_jit_loop_as_object): New.
|
|
2033
|
|
2034 * libgccjit.map (gcc_jit_field_as_object): New.
|
|
2035 (gcc_jit_function_as_object): New.
|
|
2036 (gcc_jit_label_as_object): New.
|
|
2037 (gcc_jit_location_as_object): New.
|
|
2038 (gcc_jit_loop_as_object): New.
|
|
2039 (gcc_jit_lvalue_as_object): New.
|
|
2040 (gcc_jit_object_get_context): New.
|
|
2041 (gcc_jit_object_get_debug_string): New.
|
|
2042 (gcc_jit_param_as_object): New.
|
|
2043 (gcc_jit_rvalue_as_object): New.
|
|
2044 (gcc_jit_type_as_object): New.
|
|
2045
|
|
2046 * libgccjit.c (struct gcc_jit_object): New.
|
|
2047 (gcc_jit_location_as_object): New.
|
|
2048 (gcc_jit_type_as_object): New.
|
|
2049 (gcc_jit_field_as_object): New.
|
|
2050 (gcc_jit_param_as_object): New.
|
|
2051 (gcc_jit_function_as_object): New.
|
|
2052 (gcc_jit_label_as_object): New.
|
|
2053 (gcc_jit_lvalue_as_object): New.
|
|
2054 (gcc_jit_rvalue_as_object): New.
|
|
2055 (gcc_jit_object_get_context): New.
|
|
2056 (gcc_jit_object_get_debug_string): New.
|
|
2057 (gcc_jit_loop_as_object): New.
|
|
2058 * internal-api.h (gcc::jit::recording::memento::get_context): New.
|
|
2059 (gcc::jit::recording::memento::as_object): New.
|
|
2060
|
|
2061 * libgccjit++.h: Require iostream, for std::ostream.
|
|
2062 (class object): New base class.
|
|
2063 (operator << (std::ostream& stream, const object &obj)): New.
|
|
2064 (location): Inherit from the new "object" base class.
|
|
2065 (location::m_inner_loc): Remove, in favor of...
|
|
2066 (location::get_inner_location): ...new method.
|
|
2067 (field): Inherit from the new "object" base class.
|
|
2068 (field::m_inner_field): Remove, in favor of...
|
|
2069 (field::get_inner_field): ...new method.
|
|
2070 (type): Inherit from the new "object" base class.
|
|
2071 (type::m_inner_type): Remove, in favor of...
|
|
2072 (type::get_inner_type): ...new method.
|
|
2073 (function): Inherit from the new "object" base class.
|
|
2074 (function::m_inner_func): Remove, in favor of...
|
|
2075 (function::get_inner_function): ...new method.
|
|
2076 (label): Inherit from the new "object" base class.
|
|
2077 (label::m_inner_label): Remove, in favor of...
|
|
2078 (label::get_inner_label): ...new method.
|
|
2079 (rvalue) Inherit from the new "object" base class.
|
|
2080 (rvalue::m_inner_rvalue): Remove, in favor of...
|
|
2081 (rvalue::get_inner_rvalue): ...new method.
|
|
2082
|
|
2083 (context::new_field): Update for move of inner pointer to the
|
|
2084 "object" base class.
|
|
2085 (context::new_struct_type): Likewise.
|
|
2086 (context::new_param): Likewise.
|
|
2087 (context::new_function): Likewise.
|
|
2088 (context::new_rvalue): Likewise.
|
|
2089 (context::zero): Likewise.
|
|
2090 (context::one): Likewise.
|
|
2091 (context::new_rvalue): Likewise.
|
|
2092 (context::new_rvalue): Likewise.
|
|
2093 (context::new_unary_op): Likewise.
|
|
2094 (context::new_binary_op): Likewise.
|
|
2095 (context::new_comparison): Likewise.
|
|
2096 (context::new_call): Likewise.
|
|
2097
|
|
2098 (object::get_debug_string): New.
|
|
2099 (object::object): New.
|
|
2100 (object::get_inner_object): New.
|
|
2101 (operator << (std::ostream&, const object &)): New.
|
|
2102
|
|
2103 (location::location): Update for move of inner pointer to the
|
|
2104 "object" base class.
|
|
2105 (location::get_inner_location): New.
|
|
2106
|
|
2107 (field::field): Update for move of inner pointer to the
|
|
2108 "object" base class.
|
|
2109 (field::get_inner_field): New.
|
|
2110
|
|
2111 (type::type): Update for move of inner pointer to the
|
|
2112 "object" base class.
|
|
2113 (type::get_pointer): Likewise.
|
|
2114 (type::get_inner_type): New.
|
|
2115
|
|
2116 (function::function): Update for move of inner pointer to the
|
|
2117 "object" base class.
|
|
2118 (function::new_forward_label): Likewise.
|
|
2119 (function::new_local): Likewise.
|
|
2120 (function::add_eval): Likewise.
|
|
2121 (function::add_assignment): Likewise.
|
|
2122 (function::add_assignment_op): Likewise.
|
|
2123 (function::add_comment): Likewise.
|
|
2124 (function::add_conditional): Likewise.
|
|
2125 (function::add_label): Likewise.
|
|
2126 (function::place_forward_label): Likewise.
|
|
2127 (function::add_jump): Likewise.
|
|
2128 (function::add_return): Likewise.
|
|
2129 (function::get_inner_function): New.
|
|
2130
|
|
2131 (label::label): Update for move of inner pointer to the "object"
|
|
2132 base class.
|
|
2133 (label::get_inner_label): New
|
|
2134
|
|
2135 (rvalue::rvalue): Update for move of inner pointer to the "object"
|
|
2136 base class.
|
|
2137 (rvalue::get_inner_rvalue): New.
|
|
2138 (rvalue::access_field): Likewise.
|
|
2139 (rvalue::dereference_field): Likewise.
|
|
2140 (rvalue::dereference): Likewise.
|
|
2141
|
|
2142 (lvalue::get_inner_lvalue): Update for move of inner pointer to
|
|
2143 the "object" base class.
|
|
2144 (lvalue::access_field): Likewise.
|
|
2145 (lvalue::get_address): Likewise.
|
|
2146
|
|
2147 2014-01-31 David Malcolm <dmalcolm@redhat.com>
|
|
2148
|
|
2149 * libgccjit++.h: New file - a C++ wrapper for the libgccjit.h API.
|
|
2150
|
|
2151 * TODO.rst ("Test Suite"): New section, adding note about C++
|
|
2152 tests.
|
|
2153
|
|
2154 2014-01-31 David Malcolm <dmalcolm@redhat.com>
|
|
2155
|
|
2156 * libgccjit.h (gcc_jit_context_new_rvalue_from_int): Give the type
|
|
2157 parameter a more descriptive name.
|
|
2158 (gcc_jit_context_zero): Likewise.
|
|
2159 (gcc_jit_context_one): Likewise.
|
|
2160 (gcc_jit_context_new_rvalue_from_double): Likewise.
|
|
2161 (gcc_jit_context_new_rvalue_from_ptr): Likewise.
|
|
2162
|
|
2163 * libgccjit.c (gcc_jit_context_new_rvalue_from_int): Likewise.
|
|
2164 (gcc_jit_context_zero): Likewise.
|
|
2165 (gcc_jit_context_one): Likewise.
|
|
2166 (gcc_jit_context_new_rvalue_from_double): Likewise.
|
|
2167 (gcc_jit_context_new_rvalue_from_ptr): Likewise.
|
|
2168
|
|
2169 * internal-api.h (gcc::jit::recording::context::
|
|
2170 new_rvalue_from_int): Likewise.
|
|
2171 (gcc::jit::recording::context::
|
|
2172 new_rvalue_from_double): Likewise.
|
|
2173 (gcc::jit::recording::memento_of_new_rvalue_from_int::
|
|
2174 memento_of_new_rvalue_from_int): Likewise.
|
|
2175 (gcc::jit::recording::memento_of_new_rvalue_from_double::
|
|
2176 memento_of_new_rvalue_from_double): Likewise.
|
|
2177 (gcc::jit::recording::memento_of_new_rvalue_from_ptr::
|
|
2178 memento_of_new_rvalue_from_ptr): Likewise.
|
|
2179
|
|
2180 2014-01-30 David Malcolm <dmalcolm@redhat.com>
|
|
2181
|
|
2182 * TODO.rst: Label-placement is now checked.
|
|
2183
|
|
2184 * internal-api.c (gcc::jit::recording::context::replay_into): Give
|
|
2185 up if any errors occur during the playback.
|
|
2186 (gcc::jit::recording::label::replay_into): Issue an error if the
|
|
2187 label has not yet been placed (at playback time).
|
|
2188 (gcc::jit::recording::place_label::place_label): Move this here
|
|
2189 from internal-api.h. Issue an error if the label has already
|
|
2190 been placed (at recording time).
|
|
2191
|
|
2192 * internal-api.h (gcc::jit::recording::label): Add an
|
|
2193 m_has_been_placed field, and make class place_label a friend so
|
|
2194 it can set it.
|
|
2195 (gcc::jit::recording::label::has_been_placed): New accessor.
|
|
2196 (gcc::jit::recording::place_label::place_label): Move to
|
|
2197 internal-api.c.
|
|
2198
|
|
2199 (gcc::jit::playback::context::errors_occurred): Make public, for
|
|
2200 use by gcc::jit::recording::context::replay_into.
|
|
2201
|
|
2202 2014-01-30 David Malcolm <dmalcolm@redhat.com>
|
|
2203
|
|
2204 * internal-api.c (gcc::jit::recording::type::get_pointer):
|
|
2205 Ensure that repeated calls yield the same type.
|
|
2206 (gcc::jit::recording::memento_of_get_pointer::
|
|
2207 accepts_writes_from): New.
|
|
2208 (gcc::jit::recording::context::new_call): Move
|
|
2209 the existing argument checking to...
|
|
2210
|
|
2211 * libgccjit.c (gcc_jit_context_new_call): ...here, and add
|
|
2212 checking of the types of the arguments against the function.
|
|
2213 (RETURN_VAL_IF_FAIL_PRINTF6): New.
|
|
2214 (RETURN_NULL_IF_FAIL_PRINTF6): New.
|
|
2215
|
|
2216 * internal-api.h (gcc::jit::recording::type): New field
|
|
2217 m_pointer_to_this_type, for use by get_pointer method.
|
|
2218 (gcc::jit::recording::memento_of_get_pointer::
|
|
2219 accepts_writes_from): New.
|
|
2220 (gcc::jit::recording::function::get_param): New.
|
|
2221
|
|
2222 * TODO.rst (argument checking of gcc_jit_context_new_call): Done.
|
|
2223
|
|
2224 2014-01-30 David Malcolm <dmalcolm@redhat.com>
|
|
2225
|
|
2226 * TODO.rst: begin a list of error-checking we could do that this
|
|
2227 commit *doesn't* cover.
|
|
2228
|
|
2229 * libgccjit.h (gcc_jit_field): Add note that fields can't be
|
|
2230 shared between structs.
|
|
2231 (GCC_JIT_BINARY_OP_MODULO): Fix typo in comment.
|
|
2232
|
|
2233 * libgccjit.c: (RETURN_VAL_IF_FAIL_PRINTF2): New.
|
|
2234 (RETURN_VAL_IF_FAIL_PRINTF3): New.
|
|
2235 (RETURN_NULL_IF_FAIL_PRINTF2): New.
|
|
2236 (RETURN_NULL_IF_FAIL_PRINTF3): New.
|
|
2237 (RETURN_IF_FAIL_PRINTF4): New.
|
|
2238
|
|
2239 (jit_error): Take a gcc::jit::recording::context rather than
|
|
2240 a gcc_jit_context so that we pass in contexts from the inner
|
|
2241 layer.
|
|
2242
|
|
2243 (compatible_types): New, for use in type-checking.
|
|
2244
|
|
2245 (gcc_jit_context_new_struct_type): Check each field to ensure that
|
|
2246 it isn't already in use by another struct.
|
|
2247
|
|
2248 (gcc_jit_rvalue_dereference_field): Check that ptr is of a pointer
|
|
2249 type and that the field is within the correct struct, using new
|
|
2250 get_debug_string hooks to generate error messages.
|
|
2251
|
|
2252 (gcc_jit_rvalue_dereference): Check that rvalue is of a pointer
|
|
2253 type.
|
|
2254
|
|
2255 (gcc_jit_function_add_assignment): Use the function's context when
|
|
2256 reporting on NULL lvalue or rvalue. Verify that the lvalue and
|
|
2257 rvalue have compatible types.
|
|
2258
|
|
2259 (gcc_jit_function_add_return): Use the function's context when
|
|
2260 reporting on NULL rvalue. Verify that the rvalue is of an
|
|
2261 appropriate type given the function's return type.
|
|
2262
|
|
2263 * internal-api.h (NUM_GCC_JIT_TYPES): New.
|
|
2264 (gcc::jit::recording::context::record): Move from here to
|
|
2265 internal-api.c.
|
|
2266 (gcc::jit::recording::context::get_opaque_FILE_type): New.
|
|
2267 (gcc::jit::recording::context::m_basic_types): New field.
|
|
2268 (gcc::jit::recording::context::m_FILE_type): New field.
|
|
2269
|
|
2270 (gcc::jit::recording::memento::get_debug_string): New method.
|
|
2271 (gcc::jit::recording::memento::memento): Initialize new field
|
|
2272 m_debug_string, and verify context is non-NULL.
|
|
2273 (gcc::jit::recording::memento::make_debug_string): New
|
|
2274 pure-virtual function lazily used by get_debug_string.
|
|
2275 (gcc::jit::recording::memento::m_debug_string): New field, for
|
|
2276 get_debug_string to use as a cache.
|
|
2277
|
|
2278 (gcc::jit::recording::string): Rename field m_copy to m_buffer.
|
|
2279 (gcc::jit::recording::from_printf): New factory function.
|
|
2280 (gcc::jit::recording::make_debug_string): New.
|
|
2281
|
|
2282 (gcc::jit::recording::location::make_debug_string): New.
|
|
2283
|
|
2284 (gcc::jit::recording::type::dereference): New pure-virtual
|
|
2285 function.
|
|
2286 (gcc::jit::recording::type::accepts_writes_from): New virtual
|
|
2287 function.
|
|
2288 (gcc::jit::recording::type::unqualified): New virtual function.
|
|
2289
|
|
2290 (gcc::jit::recording::memento_of_get_type::dereference): New.
|
|
2291 (gcc::jit::recording::memento_of_get_type::
|
|
2292 accepts_writes_from): New.
|
|
2293 (gcc::jit::recording::memento_of_get_type::make_debug_string):
|
|
2294 New.
|
|
2295
|
|
2296 (gcc::jit::recording::memento_of_get_pointer::make_debug_string):
|
|
2297 New.
|
|
2298 (gcc::jit::recording::memento_of_get_pointer::dereference): New.
|
|
2299 New.
|
|
2300
|
|
2301 (gcc::jit::recording::memento_of_get_const::make_debug_string):
|
|
2302 New.
|
|
2303 (gcc::jit::recording::memento_of_get_const::dereference): New.
|
|
2304 New.
|
|
2305 (gcc::jit::recording::memento_of_get_const::accepts_writes_from):
|
|
2306 New.
|
|
2307 (gcc::jit::recording::memento_of_get_const::unqualified): New.
|
|
2308
|
|
2309 (gcc::jit::recording::field): New field m_container, for the
|
|
2310 containing struct (or union, if we implement that).
|
|
2311 (gcc::jit::recording::field::get_type): New.
|
|
2312 (gcc::jit::recording::field::get_container): New.
|
|
2313 (gcc::jit::recording::field:set_container): New.
|
|
2314 (gcc::jit::recording::field::make_debug_string): New.
|
|
2315
|
|
2316 (gcc::jit::recording::struct_::struct_): Move ctor implementation
|
|
2317 from here into internal-api.c.
|
|
2318 (gcc::jit::recording::struct_::dereference): New.
|
|
2319 (gcc::jit::recording::struct_::make_debug_string): New.
|
|
2320
|
|
2321 (gcc::jit::recording::rvalue::m_type): New field.
|
|
2322 (gcc::jit::recording::rvalue::rvalue): Require a non-NULL type for
|
|
2323 new rvalue instances.
|
|
2324 (gcc::jit::recording::rvalue::get_type): New accessor.
|
|
2325
|
|
2326 (gcc::jit::recording::lvalue): Eliminate field m_type in favor of
|
|
2327 that within the rvalue base class.
|
|
2328
|
|
2329 (gcc::jit::recording::param::make_debug_string): New.
|
|
2330
|
|
2331 (gcc::jit::recording::function::get_return_type): New accessor.
|
|
2332 (gcc::jit::recording::function::make_debug_string): New.
|
|
2333
|
|
2334 (gcc::jit::recording::label::make_debug_string): New.
|
|
2335
|
|
2336 (gcc::jit::recording::global): Eliminate field m_type in favor of
|
|
2337 that within the rvalue ultimate base class (via lvalue).
|
|
2338 (gcc::jit::recording::make_debug_string): New.
|
|
2339
|
|
2340 (gcc::jit::recording::memento_of_new_rvalue_from_int): Eliminate
|
|
2341 field m_type in favor of that within the rvalue base class.
|
|
2342 (gcc::jit::recording::memento_of_new_rvalue_from_int::
|
|
2343 make_debug_string): New.
|
|
2344
|
|
2345 (gcc::jit::recording::memento_of_new_rvalue_from_double): Eliminate
|
|
2346 field m_type in favor of that within the rvalue base class.
|
|
2347 (gcc::jit::recording::memento_of_new_rvalue_from_double::
|
|
2348 make_debug_string): New.
|
|
2349
|
|
2350 (gcc::jit::recording::memento_of_new_rvalue_from_ptr): Eliminate
|
|
2351 field m_type in favor of that within the rvalue base class.
|
|
2352 (gcc::jit::recording::memento_of_new_rvalue_from_ptr::
|
|
2353 make_debug_string): New.
|
|
2354
|
|
2355 (gcc::jit::recording::memento_of_new_string_literal::
|
|
2356 memento_of_new_string_literal): Initialize type.
|
|
2357 (gcc::jit::recording::memento_of_new_string_literal::
|
|
2358 make_debug_string): New.
|
|
2359
|
|
2360 (gcc::jit::recording::unary_op): Eliminate field m_result_type in
|
|
2361 favor of m_type within the rvalue base class.
|
|
2362 (gcc::jit::recording::unary_op::make_debug_string): New.
|
|
2363
|
|
2364 (gcc::jit::recording::binary_op): Eliminate field m_result_type in
|
|
2365 favor of m_type within the rvalue base class.
|
|
2366 (gcc::jit::recording::binary_op::make_debug_string): New.
|
|
2367
|
|
2368 (gcc::jit::recording::comparison): Eliminate field m_result_type
|
|
2369 in favor of m_type within the rvalue base class.
|
|
2370 (gcc::jit::recording::comparison::make_debug_string): New.
|
|
2371
|
|
2372 (gcc::jit::recording::make_debug_string): New.
|
|
2373
|
|
2374 (gcc::jit::recording::array_lookup::array_lookup): Initialize type
|
|
2375 by dereferencing the type of the pointer.
|
|
2376 (gcc::jit::recording::array_lookup::make_debug_string): New.
|
|
2377
|
|
2378 (gcc::jit::recording::access_field_of_lvalue::
|
|
2379 access_field_of_lvalue): Initialize type from that of the field.
|
|
2380 (gcc::jit::recording::access_field_of_lvalue::
|
|
2381 make_debug_string): New.
|
|
2382
|
|
2383 (gcc::jit::recording::access_field_rvalue::
|
|
2384 access_field_of_rvalue): Initialize type from that of the field.
|
|
2385 (gcc::jit::recording::access_field_rvalue::make_debug_string):
|
|
2386 New.
|
|
2387
|
|
2388 (gcc::jit::recording::dereference_field_rvalue::
|
|
2389 dereference_field_rvalue): Initialize type from that of the field.
|
|
2390 (gcc::jit::recording::dereference_field_rvalue::
|
|
2391 make_debug_string): New.
|
|
2392
|
|
2393 (gcc::jit::recording::dereference_rvalue::dereference_rvalue):
|
|
2394 Initialize type by dereferencing the type of the pointer.
|
|
2395 (gcc::jit::recording::dereference_rvalue::make_debug_string): New.
|
|
2396
|
|
2397 (gcc::jit::recording::get_address_of_lvalue::
|
|
2398 get_address_of_lvalue): Initialize type by dereferencing the type
|
|
2399 of the pointer.
|
|
2400 (gcc::jit::recording::get_address_of_lvalue::make_debug_string):
|
|
2401 New.
|
|
2402
|
|
2403 (gcc::jit::recording::local): Eliminate field m_type in favor of
|
|
2404 that within the rvalue ultimate base class (via lvalue).
|
|
2405 (gcc::jit::recording::make_debug_string): New.
|
|
2406
|
|
2407 (gcc::jit::recording::eval::make_debug_string): New.
|
|
2408 (gcc::jit::recording::assignment::make_debug_string): New.
|
|
2409 (gcc::jit::recording::assignment_op::make_debug_string): New.
|
|
2410 (gcc::jit::recording::comment::make_debug_string): New.
|
|
2411 (gcc::jit::recording::conditional::make_debug_string): New.
|
|
2412 (gcc::jit::recording::place_label::make_debug_string): New.
|
|
2413 (gcc::jit::recording::jump::make_debug_string): New.
|
|
2414 (gcc::jit::recording::return_::make_debug_string): New.
|
|
2415 (gcc::jit::recording::loop::make_debug_string): New.
|
|
2416 (gcc::jit::recording::loop_end::make_debug_string): New.
|
|
2417
|
|
2418 * internal-api.c (gcc::jit::recording::context::context):
|
|
2419 Initialize m_FILE_type and m_basic_types.
|
|
2420 (gcc::jit::recording::context::record): Move here from
|
|
2421 internal-api.h.
|
|
2422 (gcc::jit::recording::context::replay_into): Add a disabled way to
|
|
2423 log everything during a replay, exercising the stringification
|
|
2424 machinery.
|
|
2425 (gcc::jit::recording::context::get_type): Cache and reuse the
|
|
2426 types, so that repeated calls on the context give the same object.
|
|
2427 (gcc::jit::recording::context::get_opaque_FILE_type): New, for
|
|
2428 the result of dereferencing (FILE*), mostly so that fuzz-testing
|
|
2429 that tries this gets something sane back.
|
|
2430 (gcc::jit::recording::memento::get_debug_string): New method,
|
|
2431 giving a way to easily get a descriptive (const char *) for
|
|
2432 an API entity. Internally, it lazily calls the make_debug_string
|
|
2433 virtual function, storing the result in m_debug_string.
|
|
2434
|
|
2435 (gcc::jit::recording::string::string): Rename field m_copy to m_buffer.
|
|
2436 (gcc::jit::recording::string::~string): Likewise.
|
|
2437 (gcc::jit::recording::string::from_printf): New factory function,
|
|
2438 to make it easy to implement the make_debug_string hooks.
|
|
2439
|
|
2440 (gcc::jit::recording::string::make_debug_string): New.
|
|
2441
|
|
2442 (gcc::jit::recording::location::make_debug_string): New.
|
|
2443
|
|
2444 (gcc::jit::recording::memento_of_get_type::dereference): New.
|
|
2445
|
|
2446 (get_type_strings): New table of strings, for use by...
|
|
2447 (gcc::jit::recording::memento_of_get_type::make_debug_string): New.
|
|
2448
|
|
2449 (gcc::jit::recording::memento_of_get_pointer::make_debug_string): New.
|
|
2450
|
|
2451 (gcc::jit::recording::memento_of_get_const::make_debug_string): New.
|
|
2452
|
|
2453 (gcc::jit::recording::field::make_debug_string): New.
|
|
2454
|
|
2455 (gcc::jit::recording::struct_::struct_): Move here from
|
|
2456 internal-api.h. Mark all fields as belonging to the new struct.
|
|
2457
|
|
2458 (gcc::jit::recording::struct_::dereference): New.
|
|
2459 (gcc::jit::recording::struct_::make_debug_string): New.
|
|
2460
|
|
2461 (gcc::jit::recording::function::make_debug_string): New.
|
|
2462
|
|
2463 (gcc::jit::recording::label::make_debug_string): New.
|
|
2464
|
|
2465 (gcc::jit::recording::memento_of_new_rvalue_from_int::
|
|
2466 make_debug_string): New.
|
|
2467 (gcc::jit::recording::memento_of_new_rvalue_from_double::
|
|
2468 make_debug_string): New.
|
|
2469 (gcc::jit::recording::memento_of_new_rvalue_from_ptr::
|
|
2470 make_debug_string): New.
|
|
2471 (gcc::jit::recording::memento_of_new_string_literal::
|
|
2472 make_debug_string): New.
|
|
2473
|
|
2474 (gcc::jit::recording::unary_op::replay_into): Use get_type ()
|
|
2475 rather than the now-defunct m_result_type.
|
|
2476 (gcc::jit::recording::binary_op::replay_into): Likewise.
|
|
2477
|
|
2478 (unary_op_strings): New table of strings for use by...
|
|
2479 (gcc::jit::recording::unary_op::make_debug_string): New.
|
|
2480
|
|
2481 (binary_op_strings): New table of strings for use by...
|
|
2482 (gcc::jit::recording::binary_op::make_debug_string): New.
|
|
2483
|
|
2484 (comparison_strings): New table of strings for use by...
|
|
2485 (gcc::jit::recording::comparison::make_debug_string): New.
|
|
2486
|
|
2487 (gcc::jit::recording::call::call): Initialize the type.
|
|
2488 (gcc::jit::recording::call::make_debug_string): New.
|
|
2489
|
|
2490 (gcc::jit::recording::array_lookup::make_debug_string): New.
|
|
2491 (gcc::jit::recording::access_field_of_lvalue::
|
|
2492 make_debug_string): New.
|
|
2493 (gcc::jit::recording::access_field_rvalue::
|
|
2494 make_debug_string): New.
|
|
2495 (gcc::jit::recording::dereference_field_rvalue::
|
|
2496 make_debug_string): New.
|
|
2497 (gcc::jit::recording::dereference_rvalue::make_debug_string): New.
|
|
2498 (gcc::jit::recording::get_address_of_lvalue::
|
|
2499 make_debug_string): New.
|
|
2500 (gcc::jit::recording::eval::make_debug_string): New.
|
|
2501 (gcc::jit::recording::assignment::make_debug_string): New.
|
|
2502 (gcc::jit::recording::assignment_op::make_debug_string): New.
|
|
2503 (gcc::jit::recording::comment::make_debug_string): New.
|
|
2504 (gcc::jit::recording::conditional::make_debug_string): New.
|
|
2505 (gcc::jit::recording::place_label::make_debug_string): New.
|
|
2506 (gcc::jit::recording::jump::make_debug_string): New.
|
|
2507 (gcc::jit::recording::return_::make_debug_string): New.
|
|
2508 (gcc::jit::recording::loop::make_debug_string): New.
|
|
2509 (gcc::jit::recording::loop_end::make_debug_string): New.
|
|
2510
|
|
2511 2014-01-29 David Malcolm <dmalcolm@redhat.com>
|
|
2512
|
|
2513 * libgccjit.h (gcc_jit_lvalue_access_field): Require
|
|
2514 a (gcc_jit_field *) rather than a field name.
|
|
2515 (gcc_jit_rvalue_access_field): Likewise.
|
|
2516 (gcc_jit_rvalue_dereference_field): Likewise.
|
|
2517
|
|
2518 * libgccjit.c (gcc_jit_lvalue_access_field): Require
|
|
2519 a (gcc_jit_field *) rather than a field name.
|
|
2520 (gcc_jit_rvalue_access_field): Likewise.
|
|
2521 (gcc_jit_rvalue_dereference_field): Likewise.
|
|
2522
|
|
2523 * internal-api.c (gcc::jit::recording::rvalue::access_field):
|
|
2524 Require a field rather than a fieldname string.
|
|
2525 (gcc::jit::recording::rvalue::dereference_field): Likewise.
|
|
2526 (gcc::jit::recording::lvalue::access_field): Likewise.
|
|
2527
|
|
2528 (gcc::jit::recording::access_field_of_lvalue::replay_into): Update
|
|
2529 given that this now has a field, rather than a fieldname.
|
|
2530 (gcc::jit::recording::access_field_rvalue::replay_into): Likewise.
|
|
2531 (gcc::jit::recording::dereference_field_rvalue::replay_into): Likewise.
|
|
2532
|
|
2533 (get_field): Delete, as we no longer need to convert
|
|
2534 from (struct, identifier) pairs to fields, instead directly using
|
|
2535 fields.
|
|
2536
|
|
2537 (gcc::jit::playback::context::new_field_access): Require a field
|
|
2538 rather than a fieldname, removing the need to look up the field by
|
|
2539 name within the struct.
|
|
2540
|
|
2541 (gcc::jit::playback::lvalue::access_field): Likewise.
|
|
2542 (gcc::jit::playback::rvalue::access_field): Likewise.
|
|
2543 (gcc::jit::playback::rvalue::dereference_field): Likewise.
|
|
2544
|
|
2545 * internal-api.h (gcc::jit::recording::rvalue::access_field):
|
|
2546 Require a field rather than a fieldname string.
|
|
2547 (gcc::jit::recording::rvalue::dereference_field): Likewise.
|
|
2548 (gcc::jit::recording::lvalue::access_field): Likewise.
|
|
2549
|
|
2550 (gcc::jit::recording::access_field_of_lvalue::access_field_of_lvalue):
|
|
2551 Likewise.
|
|
2552 (gcc::jit::recording::access_field_of_lvalue::m_fieldname): Drop
|
|
2553 string field in favor of...
|
|
2554 (gcc::jit::recording::access_field_of_lvalue::m_field):
|
|
2555 ..."field" field, as it were.
|
|
2556
|
|
2557 (gcc::jit::recording::access_field_of_rvalue::access_field_of_rvalue):
|
|
2558 Likewise.
|
|
2559 (gcc::jit::recording::access_field_of_rvalue::m_fieldname): Drop
|
|
2560 string field in favor of...
|
|
2561 (gcc::jit::recording::access_field_of_rvalue::m_field):
|
|
2562 ..."field" field.
|
|
2563
|
|
2564 (gcc::jit::recording::dereference_field_rvalue::
|
|
2565 dereference_field_rvalue): Likewise.
|
|
2566 (gcc::jit::recording::dereference_field_rvalue::m_fieldname): Drop
|
|
2567 string field in favor of...
|
|
2568 (gcc::jit::recording::dereference_field_rvalue::m_field):
|
|
2569 ..."field" field.
|
|
2570
|
|
2571 (gcc::jit::playback::context::new_field_access): Require a field
|
|
2572 rather than a fieldname string.
|
|
2573 (gcc::jit::playback::context::access_field): Likewise.
|
|
2574 (gcc::jit::playback::context::dereference_field): Likewise.
|
|
2575 (gcc::jit::playback::rvalue::access_field):
|
|
2576
|
|
2577 2014-01-28 David Malcolm <dmalcolm@redhat.com>
|
|
2578
|
|
2579 * libgccjit.h (gcc_jit_context_new_child_context): New function.
|
|
2580
|
|
2581 * libgccjit.map (gcc_jit_context_new_child_context): New function.
|
|
2582
|
|
2583 * libgccjit.c (gcc_jit_context): Make the constructor explicit,
|
|
2584 with a parent context as a parameter.
|
|
2585 (gcc_jit_context_acquire): Create context with a NULL parent.
|
|
2586 (gcc_jit_context_new_child_context): New function, creating a
|
|
2587 context with the given parent.
|
|
2588
|
|
2589 * internal-api.h (gcc::jit::recording::context::context): New
|
|
2590 explicit constructor, taking a parent context as a parameter.
|
|
2591 (gcc::jit::recording::context::m_parent_ctxt): New field.
|
|
2592
|
|
2593 * internal-api.c (gcc::jit::recording::context::context): New
|
|
2594 explicit constructor, taking a parent context as a parameter.
|
|
2595 (gcc::jit::recording::context::replay_into): Replay parent contexts
|
|
2596 before replaying the context itself.
|
|
2597
|
|
2598 2014-01-27 David Malcolm <dmalcolm@redhat.com>
|
|
2599
|
|
2600 * internal-api.c (gcc::jit::playback::context::compile): Removal
|
|
2601 of the code-creation callback (96b218c9a1d5f39fb649e02c0e77586b180e8516)
|
|
2602 accidentally removed the implementation of
|
|
2603 GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE; reinstate it.
|
|
2604
|
|
2605 2014-01-27 David Malcolm <dmalcolm@redhat.com>
|
|
2606
|
|
2607 * internal-api (gcc::jit::recording::context::new_call): Verify
|
|
2608 the argument count of the call against the parameter count of the
|
|
2609 function, issuing an error if there's a mismatch.
|
|
2610
|
|
2611 * internal-api.h (gcc::jit::recording::function::get_name): New.
|
|
2612 * (gcc::jit::recording::function::get_params): New.
|
|
2613 * (gcc::jit::recording::function::is_variadic): New.
|
|
2614
|
|
2615 2014-01-27 David Malcolm <dmalcolm@redhat.com>
|
|
2616
|
|
2617 * libgccjit.h (enum gcc_jit_binary_op): Remove
|
|
2618 GCC_JIT_BINARY_OP_FLOATING_DIVIDE, which I accidentally added
|
|
2619 as part of a880c0d9c642730550f39d328f29a1d9935cb07e.
|
|
2620
|
|
2621 2014-01-24 David Malcolm <dmalcolm@redhat.com>
|
|
2622
|
|
2623 * libgccjit.h: Update comments to eliminate the code-creation
|
|
2624 callback. All "contextual" objects change from merely being
|
|
2625 "alive" during the callback to having a lifetime equal to that
|
|
2626 of the context they are created within, with automatic cleanup
|
|
2627 when the context is released.
|
|
2628 (gcc_jit_code_callback): Delete.
|
|
2629 (gcc_jit_context_set_code_factory): Delete.
|
|
2630
|
|
2631 * libgccjit.map (gcc_jit_context_set_code_factory): Delete.
|
|
2632
|
|
2633 * dummy-frontend.c (my_walker): Update for rename of the singleton
|
|
2634 reference-owning context.
|
|
2635 (jit_langhook_parse_file): Rather than run a client-provided
|
|
2636 callback, we now replay a recording of the client activity.
|
|
2637
|
|
2638 * internal-api.h (gcc::jit): Split the existing API into two
|
|
2639 copies...
|
|
2640 (gcc::jit::recording): ...a class hierarchy used to implement
|
|
2641 the client-facing API, which records the API calls made to it
|
|
2642 and...
|
|
2643 (gcc::jit::playback): ...a class hierarchy used within the
|
|
2644 dummy GCC frontend, which plays back the recorded API calls once
|
|
2645 GCC is initialized.
|
|
2646
|
|
2647 * internal-api.c (gcc::jit::recording::playback_location): New
|
|
2648 API, in which client API calls are recorded as a list of "memento"
|
|
2649 objects, to be played back into GCC when the dummy frontend runs.
|
|
2650 (gcc::jit::recording::playback_string): Likewise.
|
|
2651 (gcc::jit::recording::playback_label): Likewise.
|
|
2652 (gcc::jit::recording::context::~context): Likewise.
|
|
2653 (gcc::jit::recording::context::replay_into): Likewise.
|
|
2654 (gcc::jit::recording::context::disassociate_from_playback): Likewise.
|
|
2655 (gcc::jit::recording::context::new_string): Likewise.
|
|
2656 (gcc::jit::recording::context::new_location): Likewise.
|
|
2657 (gcc::jit::recording::context::get_type): Likewise.
|
|
2658 (gcc::jit::recording::context::new_field): Likewise.
|
|
2659 (gcc::jit::recording::context::new_struct_type): Likewise.
|
|
2660 (gcc::jit::recording::context::new_param): Likewise.
|
|
2661 (gcc::jit::recording::context::new_function): Likewise.
|
|
2662 (gcc::jit::recording::context::new_global): Likewise.
|
|
2663 (gcc::jit::recording::context::new_rvalue_from_int): Likewise.
|
|
2664 (gcc::jit::recording::context::new_rvalue_from_double): Likewise.
|
|
2665 (gcc::jit::recording::context::new_rvalue_from_ptr): Likewise.
|
|
2666 (gcc::jit::recording::context::new_string_literal): Likewise.
|
|
2667 (gcc::jit::recording::context::new_unary_op): Likewise.
|
|
2668 (gcc::jit::recording::context::new_binary_op): Likewise.
|
|
2669 (gcc::jit::recording::context::new_comparison): Likewise.
|
|
2670 (gcc::jit::recording::context::new_call): Likewise.
|
|
2671 (gcc::jit::recording::context::new_array_lookup): Likewise.
|
|
2672 (gcc::jit::recording::string::string): Likewise.
|
|
2673 (gcc::jit::recording::string::~string): Likewise.
|
|
2674 (gcc::jit::recording::location::replay_into): Likewise.
|
|
2675 (gcc::jit::recording::type::get_pointer): Likewise.
|
|
2676 (gcc::jit::recording::type::get_const): Likewise.
|
|
2677 (gcc::jit::recording::memento_of_get_type::replay_into): Likewise.
|
|
2678 (gcc::jit::recording::memento_of_get_pointer::replay_into): Likewise.
|
|
2679 (gcc::jit::recording::memento_of_get_const::replay_into): Likewise.
|
|
2680 (gcc::jit::recording::field::replay_into): Likewise.
|
|
2681 (gcc::jit::recording::struct_::replay_into): Likewise.
|
|
2682 (gcc::jit::recording::rvalue::access_field): Likewise.
|
|
2683 (gcc::jit::recording::rvalue::dereference_field): Likewise.
|
|
2684 (gcc::jit::recording::rvalue::dereference): Likewise.
|
|
2685 (gcc::jit::recording::lvalue::access_field): Likewise.
|
|
2686 (gcc::jit::recording::lvalue::get_address): Likewise.
|
|
2687 (gcc::jit::recording::param::replay_into): Likewise.
|
|
2688 (gcc::jit::recording::function::function): Likewise.
|
|
2689 (gcc::jit::recording::function::replay_into): Likewise.
|
|
2690 (gcc::jit::recording::function::new_local): Likewise.
|
|
2691 (gcc::jit::recording::function::new_forward_label): Likewise.
|
|
2692 (gcc::jit::recording::function::add_eval): Likewise.
|
|
2693 (gcc::jit::recording::function::add_assignment): Likewise.
|
|
2694 (gcc::jit::recording::function::add_assignment_op): Likewise.
|
|
2695 (gcc::jit::recording::function::add_comment): Likewise.
|
|
2696 (gcc::jit::recording::function::add_conditional): Likewise.
|
|
2697 (gcc::jit::recording::function::add_label): Likewise.
|
|
2698 (gcc::jit::recording::function::place_forward_label): Likewise.
|
|
2699 (gcc::jit::recording::function::add_jump): Likewise.
|
|
2700 (gcc::jit::recording::function::add_return): Likewise.
|
|
2701 (gcc::jit::recording::function::new_loop): Likewise.
|
|
2702 (gcc::jit::recording::label::replay_into): Likewise.
|
|
2703 (gcc::jit::recording::global::replay_into): Likewise.
|
|
2704 (gcc::jit::recording::memento_of_new_rvalue_from_int::replay_into):
|
|
2705 Likewise.
|
|
2706 (gcc::jit::recording::memento_of_new_rvalue_from_double::replay_into):
|
|
2707 Likewise.
|
|
2708 (gcc::jit::recording::memento_of_new_rvalue_from_ptr::replay_into):
|
|
2709 Likewise.
|
|
2710 (gcc::jit::recording::memento_of_new_string_literal::replay_into):
|
|
2711 Likewise.
|
|
2712 (gcc::jit::recording::unary_op::replay_into): Likewise.
|
|
2713 (gcc::jit::recording::binary_op::replay_into): Likewise.
|
|
2714 (gcc::jit::recording::comparison::replay_into): Likewise.
|
|
2715 (gcc::jit::recording::call::call): Likewise.
|
|
2716 (gcc::jit::recording::call::replay_into): Likewise.
|
|
2717 (gcc::jit::recording::array_lookup::replay_into): Likewise.
|
|
2718 (gcc::jit::recording::access_field_of_lvalue::replay_into): Likewise.
|
|
2719 (gcc::jit::recording::access_field_rvalue::replay_into): Likewise.
|
|
2720 (gcc::jit::recording::dereference_field_rvalue::replay_into): Likewise.
|
|
2721 (gcc::jit::recording::dereference_rvalue::replay_into): Likewise.
|
|
2722 (gcc::jit::recording::get_address_of_lvalue::replay_into): Likewise.
|
|
2723 (gcc::jit::recording::local::replay_into): Likewise.
|
|
2724 (gcc::jit::recording::eval::replay_into): Likewise.
|
|
2725 (gcc::jit::recording::assignment::replay_into): Likewise.
|
|
2726 (gcc::jit::recording::assignment_op::replay_into): Likewise.
|
|
2727 (gcc::jit::recording::comment::replay_into): Likewise.
|
|
2728 (gcc::jit::recording::conditional::replay_into): Likewise.
|
|
2729 (gcc::jit::recording::place_label::replay_into): Likewise.
|
|
2730 (gcc::jit::recording::jump::replay_into): Likewise.
|
|
2731 (gcc::jit::recording::return_::replay_into): Likewise.
|
|
2732 (gcc::jit::recording::loop::replay_into): Likewise.
|
|
2733 (gcc::jit::recording::loop::end): Likewise.
|
|
2734 (gcc::jit::recording::loop_end::replay_into): Likewise.
|
|
2735
|
|
2736 (gcc::jit::recording::context::set_str_option): Likewise.
|
|
2737 Option setting and error-handling is now "owned" by the recording
|
|
2738 context; the playback context delegates to the recording context
|
|
2739 for these aspects.
|
|
2740 (gcc::jit::recording::context::set_int_option): Likewise.
|
|
2741 (gcc::jit::recording::context::set_bool_option): Likewise.
|
|
2742 (gcc::jit::recording::context::compile): Likewise.
|
|
2743 (gcc::jit::recording::context::add_error): Likewise.
|
|
2744 (gcc::jit::recording::context::add_error_va): Likewise.
|
|
2745 (gcc::jit::recording::context::get_first_error): Likewise.
|
|
2746
|
|
2747 (gcc::jit::context::context): Rename to...
|
|
2748 (gcc::jit::playback::context::context): ...this.
|
|
2749 (gcc::jit::context::~context): Rename to...
|
|
2750 (gcc::jit::playback::context::~context): ...this.
|
|
2751 (gcc::jit::context::gt_ggc_mx): Rename to...
|
|
2752 (gcc::jit::playback::context::gt_ggc_mx): ...this.
|
|
2753
|
|
2754 (gcc::jit::context::set_code_factory): Eliminate.
|
|
2755
|
|
2756 (gcc::jit::context::get_type): Rename to...
|
|
2757 (gcc::jit::playback::context::get_type): ...this.
|
|
2758 (gcc::jit::context::new_field): Rename to...
|
|
2759 (gcc::jit::playback::context::new_field): ...this.
|
|
2760 (gcc::jit::context::new_struct_type): Rename to...
|
|
2761 (gcc::jit::playback::context::new_struct_type): ...this, and
|
|
2762 update to require a vec<field *>.
|
|
2763 (gcc::jit::context::new_param): Rename to...
|
|
2764 (gcc::jit::playback::context::new_param): ...this.
|
|
2765 (gcc::jit::context::new_function): Rename to...
|
|
2766 (gcc::jit::playback::context::new_function): ...this, and update
|
|
2767 to require a vec<param *>.
|
|
2768 (gcc::jit::context::new_global): Rename to...
|
|
2769 (gcc::jit::playback::context::new_global): ...this.
|
|
2770 (gcc::jit::context::new_rvalue_from_int): Rename to...
|
|
2771 (gcc::jit::playback::context::new_rvalue_from_int): ...this.
|
|
2772 (gcc::jit::context::new_rvalue_from_double): Rename to...
|
|
2773 (gcc::jit::playback::context::new_rvalue_from_double): ...this.
|
|
2774 (gcc::jit::context::new_rvalue_from_ptr): Rename to...
|
|
2775 (gcc::jit::playback::context::new_rvalue_from_ptr): ...this.
|
|
2776 (gcc::jit::context::new_string_literal): Rename to...
|
|
2777 (gcc::jit::playback::context::new_string_literal): ...this.
|
|
2778 (gcc::jit::context::as_truth_value): Rename to...
|
|
2779 (gcc::jit::playback::context::as_truth_value): ...this.
|
|
2780 (gcc::jit::context::new_unary_op): Rename to...
|
|
2781 (gcc::jit::playback::context::new_unary_op): ...this.
|
|
2782 (gcc::jit::context::new_binary_op): Rename to...
|
|
2783 (gcc::jit::playback::context::new_binary_op): ...this.
|
|
2784 (gcc::jit::context::new_comparison): Rename to...
|
|
2785 (gcc::jit::playback::context::new_comparison): ...this.
|
|
2786 (gcc::jit::context::new_call): Rename to...
|
|
2787 (gcc::jit::playback::context::new_call): ...this, and update
|
|
2788 to require a vec<rvalue *>.
|
|
2789 (gcc::jit::context::new_array_lookup): Rename to...
|
|
2790 (gcc::jit::playback::context::new_array_lookup): ...this.
|
|
2791 (gcc::jit::context::new_field_access): Rename to...
|
|
2792 (gcc::jit::playback::context::new_field_access): ...this.
|
|
2793 (gcc::jit::context::new_dereference): Rename to...
|
|
2794 (gcc::jit::playback::context::new_dereference): ...this.
|
|
2795
|
|
2796 (gcc::jit::lvalue::access_field): Rename to...
|
|
2797 (gcc::jit::playback::lvalue::access_field): ...this.
|
|
2798 (gcc::jit::lvalue::get_address): Rename to...
|
|
2799 (gcc::jit::playback::lvalue::get_address): ...this.
|
|
2800
|
|
2801 (gcc::jit::rvalue::dereference_field): Rename to...
|
|
2802 (gcc::jit::playback::rvalue::dereference_field): ...this.
|
|
2803
|
|
2804 (gcc::jit::rvalue::dereference): Rename to...
|
|
2805 (gcc::jit::playback::rvalue::dereference): ...this.
|
|
2806
|
|
2807 (gcc::jit::wrapper::operator new): Rename to...
|
|
2808 (gcc::jit::playback::wrapper::operator new): ...this.
|
|
2809
|
|
2810 (gcc::jit::function::function): Rename to...
|
|
2811 (gcc::jit::playback::function::function): ...this.
|
|
2812 (gcc::jit::function::gt_ggc_mx): Rename to...
|
|
2813 (gcc::jit::playback::function::gt_ggc_mx): ...this.
|
|
2814 (gcc::jit::function::get_return_type_as_tree): Rename to...
|
|
2815 (gcc::jit::playback::function::get_return_type_as_tree): ...this.
|
|
2816 (gcc::jit::function::new_local): Rename to...
|
|
2817 (gcc::jit::playback::function::new_local): ...this.
|
|
2818 (gcc::jit::function::new_forward_label): Rename to...
|
|
2819 (gcc::jit::playback::function::new_forward_label): ...this.
|
|
2820 (gcc::jit::function::postprocess): Rename to...
|
|
2821 (gcc::jit::playback::function::postprocess): ...this.
|
|
2822 (gcc::jit::function::add_eval): Rename to...
|
|
2823 (gcc::jit::playback::function::add_eval): ...this.
|
|
2824 (gcc::jit::function::add_assignment): Rename to...
|
|
2825 (gcc::jit::playback::function::add_assignment): ...this.
|
|
2826 (gcc::jit::function::add_comment): Rename to...
|
|
2827 (gcc::jit::playback::function::add_comment): ...this.
|
|
2828 (gcc::jit::function::add_conditional): Rename to...
|
|
2829 (gcc::jit::playback::function::add_conditional): ...this.
|
|
2830 (gcc::jit::function::add_label): Rename to...
|
|
2831 (gcc::jit::playback::function::add_label): ...this.
|
|
2832 (gcc::jit::function::place_forward_label): Rename to...
|
|
2833 (gcc::jit::playback::function::place_forward_label): ...this.
|
|
2834 (gcc::jit::function::add_jump): Rename to...
|
|
2835 (gcc::jit::playback::function::add_jump): ...this.
|
|
2836 (gcc::jit::function::add_return): Rename to...
|
|
2837 (gcc::jit::playback::function::add_return): ...this.
|
|
2838 (gcc::jit::function::new_loop): Rename to...
|
|
2839 (gcc::jit::playback::function::new_loop): ...this.
|
|
2840
|
|
2841 (gcc::jit::label::label): Rename to...
|
|
2842 (gcc::jit::playback::label::label): ...this.
|
|
2843
|
|
2844 (gcc::jit::loop::loop): Rename to...
|
|
2845 (gc::jit::playback::loop::loop): ...this.
|
|
2846 (gcc::jit::loop::end): Rename to...
|
|
2847 (gcc::jit::playback::loop): ...this.
|
|
2848
|
|
2849 (gcc::jit::active_jit_ctxt): Eliminate in favor of...
|
|
2850 (gcc::jit::active_playback_ctxt): ...this.
|
|
2851
|
|
2852 (gcc::jit::context::compile): Rename to...
|
|
2853 (gcc::jit::playback::context::compile): ...this, and eliminate the
|
|
2854 mutex handling; this is done for us by the caller.
|
|
2855
|
|
2856 (gcc::jit::context::invoke_code_factory): Rename to...
|
|
2857 (gcc::jit::playback::context::replay): this. Rather than call
|
|
2858 a client-provided callback, instead replay the recorded API
|
|
2859 calls.
|
|
2860
|
|
2861 (gcc::jit::context::dump_generated_code): Rename to...
|
|
2862 (gcc::jit::playback::context::dump_generated_code): ...this.
|
|
2863
|
|
2864 (location_comparator): Update for renamed types.
|
|
2865
|
|
2866 (gcc::jit::context::handle_locations): Rename to...
|
|
2867 (gcc::jit::playback::context::handle_locations): ...this.
|
|
2868
|
|
2869 (gcc::jit::context::add_error): Rename to...
|
|
2870 (gcc::jit::playback::context::add_error): this, and delegate to
|
|
2871 the recording context's add_error_va.
|
|
2872
|
|
2873 (gcc::jit::context::add_error_va): Rename to...
|
|
2874 (gcc::jit::playback::context::add_error_va): this, and delegate
|
|
2875 to the recording context.
|
|
2876
|
|
2877 (gcc::jit::context::new_location): Rename to...
|
|
2878 (gcc::jit::playback::context::new_location): ...this.
|
|
2879 (gcc::jit::context::set_tree_location): Rename to...
|
|
2880 (gcc::jit::playback::context::set_tree_location): ...this.
|
|
2881 (gcc::jit::context::get_source_file): Rename to...
|
|
2882 (gcc::jit::playback::context::get_source_file): ...this.
|
|
2883 (gcc::jit::source_file::source_file): Rename to...
|
|
2884 (gcc::jit::playback::source_file::source_file): ...this.
|
|
2885 (gcc::jit::source_file::get_source_line): Rename to...
|
|
2886 (gcc::jit::playback::source_file::get_source_line): ...this.
|
|
2887 (gcc::jit::source_line::source_line): Rename to...
|
|
2888 (gcc::jit::playback::source_line::source_line): ...this.
|
|
2889 (gcc::jit::source_line::get_location): Rename to...
|
|
2890 (gcc::jit::playback::source_line::get_location): ...this.
|
|
2891
|
|
2892 (gcc::jit::location::location): Rename to...
|
|
2893 (gcc::jit::playback::location::location): ...this.
|
|
2894
|
|
2895 * libgccjit.c: Update classes to derive from the "jit::recording"
|
|
2896 class hierarchy.
|
|
2897 (RETURN_IF_NOT_INITIAL_CTXT): Eliminate, as it relates to
|
|
2898 code-creation callbacks.
|
|
2899 (RETURN_NULL_IF_NOT_INITIAL_CTXT): Likewise.
|
|
2900 (RETURN_NULL_IF_NOT_CALLBACK_CTXT): Likewise.
|
|
2901 (jit_error): There isn't an "active jit context" anymore, except
|
|
2902 during actual compilation, so simplify the logic here.
|
|
2903 (gcc_jit_context_set_code_factory): Delete.
|
|
2904
|
|
2905 (gcc_jit_context_new_location): Update preconditions now that we
|
|
2906 don't have code-creation callbacks.
|
|
2907 (gcc_jit_context_get_type): Likewise.
|
|
2908 (gcc_jit_type_get_pointer): Likewise.
|
|
2909 (gcc_jit_type_get_const): Likewise.
|
|
2910 (gcc_jit_context_new_field): Likewise.
|
|
2911 (gcc_jit_context_new_struct_type): Likewise.
|
|
2912 (gcc_jit_context_new_param): Likewise.
|
|
2913 (gcc_jit_param_as_lvalue): Likewise.
|
|
2914 (gcc_jit_param_as_rvalue): Likewise.
|
|
2915 (gcc_jit_context_new_function): Likewise.
|
|
2916 (gcc_jit_context_new_function): Likewise.
|
|
2917 (gcc_jit_function_new_forward_label): Likewise.
|
|
2918 (gcc_jit_context_new_global): Likewise.
|
|
2919 (gcc_jit_lvalue_as_rvalue): Likewise.
|
|
2920 (gcc_jit_context_new_rvalue_from_int): Likewise.
|
|
2921 (gcc_jit_context_zero): Likewise.
|
|
2922 (gcc_jit_context_one): Likewise.
|
|
2923 (gcc_jit_context_new_rvalue_from_double): Likewise.
|
|
2924 (gcc_jit_context_new_rvalue_from_ptr): Likewise.
|
|
2925 (gcc_jit_context_new_string_literal): Likewise.
|
|
2926 (gcc_jit_context_new_unary_op): Likewise.
|
|
2927 (gcc_jit_context_new_binary_op): Likewise.
|
|
2928 (gcc_jit_context_new_comparison): Likewise.
|
|
2929 (gcc_jit_context_new_call): Likewise.
|
|
2930 (gcc_jit_context_new_call): Likewise.
|
|
2931 (gcc_jit_context_new_array_lookup): Likewise.
|
|
2932 (gcc_jit_context_set_str_option): Likewise.
|
|
2933 (gcc_jit_context_set_int_option): Likewise.
|
|
2934 (gcc_jit_context_set_bool_option): Likewise.
|
|
2935 (gcc_jit_context_compile): Likewise.
|
|
2936 (gcc_jit_function_add_assignment_op): Likewise. Also,
|
|
2937 reimplement as a separate kind of recording, since we can't know
|
|
2938 the type of the lvalue at recording-time.
|
|
2939
|
|
2940 * notes.txt: Update diagram to reflect the new implementation.
|
|
2941
|
|
2942 2014-01-24 David Malcolm <dmalcolm@redhat.com>
|
|
2943
|
|
2944 * libgccjit.h (enum gcc_jit_binary_op): We will use the result
|
|
2945 type to determine if GCC_JIT_BINARY_OP_DIVIDE should
|
|
2946 truncate towards zero, or be floating-point division.
|
|
2947
|
|
2948 * internal-api.c (gcc::jit::context::new_binary_op): Likewise.
|
|
2949
|
|
2950 2014-01-24 David Malcolm <dmalcolm@redhat.com>
|
|
2951
|
|
2952 * internal-api.h (gcc::jit::context::get_str_option): New access
|
|
2953 method.
|
|
2954 (gcc::jit::context::get_int_option): Likewise.
|
|
2955
|
|
2956 * internal-api.c (gcc::jit::context::~context): Use access methods
|
|
2957 for options, rather than direct field access.
|
|
2958 (gcc::jit::context::compile): Likewise.
|
|
2959
|
|
2960 2014-01-23 David Malcolm <dmalcolm@redhat.com>
|
|
2961
|
|
2962 * libgccjit.h (enum gcc_jit_bool_option): New value:
|
|
2963 GCC_JIT_BOOL_OPTION_DUMP_GENERATED_CODE.
|
|
2964
|
|
2965 * internal-api.c (gcc::jit::context::compile): Call
|
|
2966 dump_generated_code if the user has requested it.
|
|
2967 (gcc::jit::context::dump_generated_code): New, copying
|
|
2968 from the .s file to stderr.
|
|
2969
|
|
2970 * internal-api.h (gcc::jit::context::dump_generated_code): New.
|
|
2971
|
|
2972 2014-01-23 David Malcolm <dmalcolm@redhat.com>
|
|
2973
|
|
2974 * internal-api.h (gcc::jit::function): Add field
|
|
2975 "m_inner_bind_expr".
|
|
2976 * internal-api.c (gcc::jit::function::function): Create a BIND_EXPR
|
|
2977 for all non-imported functions, and put the statement list within
|
|
2978 it.
|
|
2979 (gcc::jit::function::gt_ggc_mx): Visit m_inner_bind_expr.
|
|
2980 (gcc::jit::function::new_local): Set the DECL_CONTEXT of the new
|
|
2981 local to be the function's BIND_EXPR, and prepend the new local
|
|
2982 to said BIND_EXPR's BIND_EXPR_VARS chain.
|
|
2983 (gcc::jit::function::postprocess): Set the DECL_SAVED_TREE of the
|
|
2984 FUNCTION_DECL to be the BIND_EXPR, rather than the statement list.
|
|
2985 The latter is now contained within the former.
|
|
2986
|
|
2987 2014-01-23 David Malcolm <dmalcolm@redhat.com>
|
|
2988
|
|
2989 * internal-api.h (gcc::jit::function::add_stmt): New.
|
|
2990
|
|
2991 * internal-api.c (gcc::jit::function::add_eval): Replace use of
|
|
2992 tsi_link_stmt with call to add_stmt.
|
|
2993 (gcc::jit::function::add_assignment): Likewise.
|
|
2994 (gcc::jit::function::add_conditional): Likewise.
|
|
2995 (gcc::jit::function::place_forward_label): Likewise.
|
|
2996 (gcc::jit::function::add_jump): Likewise.
|
|
2997 (gcc::jit::function::add_return): Likewise.
|
|
2998
|
|
2999 2014-01-21 David Malcolm <dmalcolm@redhat.com>
|
|
3000
|
|
3001 * internal-api.c (gcc::jit::function::add_comment): New.
|
|
3002 * internal-api.h (gcc::jit::function::add_comment): New.
|
|
3003 * libgccjit.c (gcc_jit_function_add_comment): New.
|
|
3004 * libgccjit.h (gcc_jit_function_add_comment): New.
|
|
3005 * libgccjit.map: Add gcc_jit_function_add_comment.
|
|
3006
|
|
3007 2013-10-24 David Malcolm <dmalcolm@redhat.com>
|
|
3008
|
|
3009 * internal-api.c (gcc::jit::function::add_eval): Handle non-NULL
|
|
3010 locations.
|
|
3011 (gcc::jit::context::handle_locations): Fix test for the various
|
|
3012 kinds of declarations, replacing use of DECL_MINIMAL_CHECK,
|
|
3013 which aborts on failure (such as if we saw a type).
|
|
3014 * libgccjit.h (GCC_JIT_BOOL_OPTION_DEBUGINFO): Fix out-of-date
|
|
3015 comment.
|
|
3016
|
|
3017 2013-10-23 David Malcolm <dmalcolm@redhat.com>
|
|
3018
|
|
3019 * internal-api.c: Update for rename of tree-flow.h to tree-cfg.h
|
|
3020 in r203320, for declaration of dump_function_to_file.
|
|
3021 * TODO.rst ("segfault seen in libbacktrace"): Remove - this was
|
|
3022 fixed by Ian in r203810.
|
|
3023
|
|
3024 2013-10-23 David Malcolm <dmalcolm@redhat.com>
|
|
3025
|
|
3026 * internal-api.c: Add missing include of diagnostic-core.h
|
|
3027
|
|
3028 2013-10-22 David Malcolm <dmalcolm@redhat.com>
|
|
3029
|
|
3030 * internal-api.c (gcc::jit::context::add_error_va): Record the
|
|
3031 first error that occurs on a context.
|
|
3032 (gcc::jit::context::get_first_error): New.
|
|
3033 * internal-api.h (gcc::jit::context::get_first_error): New.
|
|
3034 (gcc::jit::context::m_first_error_str): New.
|
|
3035 * libgccjit.c (gcc_jit_context_get_first_error): New.
|
|
3036 * libgccjit.h (gcc_jit_context_get_first_error): New.
|
|
3037 * libgccjit.map (gcc_jit_context_get_first_error): New.
|
|
3038
|
|
3039 2013-10-21 David Malcolm <dmalcolm@redhat.com>
|
|
3040
|
|
3041 * internal-api.c (gcc::jit::context::compile): Correctly cleanup
|
|
3042 timevars in error-handling, preventing an issue where an error
|
|
3043 on a context left timevar.c in an unstopped state, leading to an
|
|
3044 assertion failure when restarting timevars in the next compile.
|
|
3045 Found via fuzz-testing.
|
|
3046
|
|
3047 2013-10-21 David Malcolm <dmalcolm@redhat.com>
|
|
3048
|
|
3049 * internal-api.c (gcc::jit::context::postprocess): Show source
|
|
3050 line numbers (if any) in gimple dump.
|
|
3051
|
|
3052 2013-10-21 David Malcolm <dmalcolm@redhat.com>
|
|
3053
|
|
3054 * libgccjit.c (gcc_jit_function_new_local): Use a more clear
|
|
3055 error message for the case where someone tries to add a local
|
|
3056 to a function imported from elsewhere.
|
|
3057
|
|
3058 2013-10-21 David Malcolm <dmalcolm@redhat.com>
|
|
3059
|
|
3060 * TODO.rst ("the C unary prefix "&" operator"): Remove completed item.
|
|
3061 * internal-api.c (gcc::jit::lvalue::get_address): New.
|
|
3062 * internal-api.h (gcc::jit::lvalue::get_address): New.
|
|
3063 * libgccjit.c (gcc_jit_lvalue_get_address): New.
|
|
3064 * libgccjit.h (gcc_jit_lvalue_get_address): New.
|
|
3065 * libgccjit.map (gcc_jit_lvalue_get_address): New.
|
|
3066
|
|
3067 2013-10-18 David Malcolm <dmalcolm@redhat.com>
|
|
3068
|
|
3069 * internal-api.c (gcc::jit::context::new_param): Add context
|
|
3070 argument to ctor for rvalue and its subclasses.
|
|
3071 (gcc::jit::context::new_global): Likewise.
|
|
3072 (gcc::jit::context::new_rvalue_from_int): Likewise.
|
|
3073 (gcc::jit::context::new_rvalue_from_double): Likewise.
|
|
3074 (gcc::jit::context::new_rvalue_from_ptr): Likewise.
|
|
3075 (gcc::jit::context::new_string_literal): Likewise.
|
|
3076 (gcc::jit::context::new_call): Likewise.
|
|
3077 (gcc::jit::context::new_array_lookup): Likewise.
|
|
3078 (gcc::jit::function::new_local): Likewise.
|
|
3079 (gcc::jit::context::new_binary_op): Likewise; add new
|
|
3080 operations.
|
|
3081 (gcc::jit::context::new_comparison): Likewise; add new
|
|
3082 comparisons.
|
|
3083 (gcc::jit::context::as_truth_value): New.
|
|
3084 (gcc::jit::context::new_unary_op): New.
|
|
3085 (gcc::jit::context::new_field_access): Convert to a helper
|
|
3086 method for use by the access_fields methods.
|
|
3087 (gcc::jit::context::new_dereference): New.
|
|
3088 (gcc::jit::lvalue::access_field): New.
|
|
3089 (gcc::jit::rvalue::access_field): New.
|
|
3090 (gcc::jit::rvalue::dereference_field): New.
|
|
3091 (gcc::jit::rvalue::dereference): New.
|
|
3092 * internal-api.h (gcc::jit::context::new_unary_op): New.
|
|
3093 (gcc::jit::context::new_field_access): Work
|
|
3094 (gcc::jit::context::new_dereference): New.
|
|
3095 (gcc::jit::context::as_truth_value): New.
|
|
3096 (gcc::jit::rvalue): Add a context field.
|
|
3097 (gcc::jit::rvalue::access_field): New.
|
|
3098 (gcc::jit::rvalue::dereference_field): New.
|
|
3099 (gcc::jit::rvalue::dereference): New.
|
|
3100 (gcc::jit::lvalue::lvalue): Add context to ctor.
|
|
3101 (gcc::jit::lvalue::access_field): New.
|
|
3102 (gcc::jit::param::param): Add context to ctor.
|
|
3103 * libgccjit.c (gcc_jit_context_new_unary_op): New.
|
|
3104 (gcc_jit_context_new_field_access): Remove.
|
|
3105 (gcc_jit_lvalue_access_field): New.
|
|
3106 (gcc_jit_rvalue_access_field): New.
|
|
3107 (gcc_jit_rvalue_dereference_field): New.
|
|
3108 (gcc_jit_rvalue_dereference): New.
|
|
3109 *libgccjit.h (enum gcc_jit_unary_op): New.
|
|
3110 (gcc_jit_context_new_unary_op): New.
|
|
3111 (enum gcc_jit_binary_op): Document values, and add...
|
|
3112 (GCC_JIT_BINARY_OP_DIVIDE): New.
|
|
3113 (GCC_JIT_BINARY_OP_MODULO): New.
|
|
3114 (GCC_JIT_BINARY_OP_BITWISE_AND): New.
|
|
3115 (GCC_JIT_BINARY_OP_BITWISE_XOR): New.
|
|
3116 (GCC_JIT_BINARY_OP_BITWISE_OR): New.
|
|
3117 (GCC_JIT_BINARY_OP_LOGICAL_AND): New.
|
|
3118 (GCC_JIT_BINARY_OP_LOGICAL_OR): New.
|
|
3119 (enum gcc_jit_comparison): Document values, and add...
|
|
3120 (GCC_JIT_COMPARISON_EQ): New.
|
|
3121 (GCC_JIT_COMPARISON_NE): New.
|
|
3122 (GCC_JIT_COMPARISON_LE): New.
|
|
3123 (GCC_JIT_COMPARISON_GT): New.
|
|
3124 (GCC_JIT_COMPARISON_GE): New.
|
|
3125 (gcc_jit_context_new_field_access): Remove.
|
|
3126 (gcc_jit_lvalue_access_field): New.
|
|
3127 (gcc_jit_rvalue_access_field): New.
|
|
3128 (gcc_jit_rvalue_dereference_field): New.
|
|
3129 (gcc_jit_rvalue_dereference): New.
|
|
3130 * libgccjit.map (gcc_jit_context_new_field_access): Remove.
|
|
3131 (gcc_jit_lvalue_access_field): New.
|
|
3132 (gcc_jit_rvalue_access_field): New.
|
|
3133 (gcc_jit_rvalue_dereference_field): New.
|
|
3134 (gcc_jit_rvalue_dereference): New.
|
|
3135 * TODO.rst: Update
|
|
3136
|
|
3137 2013-10-18 David Malcolm <dmalcolm@redhat.com>
|
|
3138
|
|
3139 * internal-api.c (gcc::jit::context::get_type): Improve error
|
|
3140 message, and report the bogus value.
|
|
3141 (gcc::jit::context::new_binary_op): Likewise.
|
|
3142 (gcc::jit::context::new_comparison): Likewise.
|
|
3143 (gcc::jit::context::set_str_option): Likewise.
|
|
3144 (gcc::jit::context::set_int_option): Likewise.
|
|
3145 (gcc::jit::context::set_bool_option): Likewise.
|
|
3146 (gcc::jit::context::compile): Likewise, and make the errors
|
|
3147 block the creation of result, rather than just the return
|
|
3148 value of the client callback.
|
|
3149 (gcc::jit::context::add_error): Add varargs and provide
|
|
3150 implementation, calling into...
|
|
3151 (gcc::jit::context::add_error_va): New.
|
|
3152 * internal-api.h (GNU_PRINTF): New.
|
|
3153 (gcc::jit::context::add_error): Add varargs and GNU_PRINTF
|
|
3154 attribute macro.
|
|
3155 (gcc::jit::context::add_error_va): New.
|
|
3156 (gcc::jit::context::errors_occurred): New.
|
|
3157 (gcc::jit::context::m_error_count): New.
|
|
3158 (gcc::jit::function::get_kind): New.
|
|
3159 * libgccjit.c (JIT_BEGIN_STMT): New.
|
|
3160 (JIT_END_STMT): New.
|
|
3161 (RETURN_VAL_IF_FAIL): New.
|
|
3162 (RETURN_NULL_IF_FAIL): New.
|
|
3163 (RETURN_IF_FAIL): New.
|
|
3164 (RETURN_IF_NOT_INITIAL_CTXT): New.
|
|
3165 (RETURN_NULL_IF_NOT_INITIAL_CTXT): New.
|
|
3166 (RETURN_NULL_IF_NOT_CALLBACK_CTXT): New.
|
|
3167 (RETURN_IF_NOT_FUNC_DEFINITION): New.
|
|
3168 (RETURN_NULL_IF_NOT_FUNC_DEFINITION): New.
|
|
3169 (jit_error): New.
|
|
3170 (gcc_jit_context_set_code_factory): Use new error-checking
|
|
3171 macros.
|
|
3172 (ASSERT_WITHIN_CALLBACK): Remove.
|
|
3173 (ASSERT_NOT_WITHIN_CALLBACK): Remove.
|
|
3174 (gcc_jit_context_new_location): Use new error-checking macros.
|
|
3175 (gcc_jit_context_get_type): Likewise.
|
|
3176 (gcc_jit_type_get_pointer): Likewise.
|
|
3177 (gcc_jit_type_get_const): Likewise.
|
|
3178 (gcc_jit_context_new_field): Likewise.
|
|
3179 (gcc_jit_context_new_struct_type): Likewise.
|
|
3180 (gcc_jit_context_new_param): Likewise.
|
|
3181 (gcc_jit_param_as_lvalue): Likewise.
|
|
3182 (gcc_jit_param_as_rvalue): Likewise.
|
|
3183 (gcc_jit_context_new_function): Likewise.
|
|
3184 (gcc_jit_function_new_forward_label): Likewise.
|
|
3185 (gcc_jit_context_new_global): Likewise.
|
|
3186 (gcc_jit_lvalue_as_rvalue): Likewise.
|
|
3187 (gcc_jit_context_new_rvalue_from_int): Likewise.
|
|
3188 (gcc_jit_context_zero): Likewise.
|
|
3189 (gcc_jit_context_one): Likewise.
|
|
3190 (gcc_jit_context_new_rvalue_from_double): Likewise.
|
|
3191 (gcc_jit_context_new_rvalue_from_ptr): Likewise.
|
|
3192 (gcc_jit_context_new_string_literal): Likewise.
|
|
3193 (gcc_jit_context_new_binary_op): Likewise.
|
|
3194 (gcc_jit_context_new_comparison): Likewise.
|
|
3195 (gcc_jit_context_new_call): Likewise.
|
|
3196 (gcc_jit_context_new_array_lookup): Likewise.
|
|
3197 (gcc_jit_context_new_field_access): Likewise.
|
|
3198 (gcc_jit_function_new_local): Likewise.
|
|
3199 (gcc_jit_function_add_label): Likewise.
|
|
3200 (gcc_jit_function_place_forward_label): Likewise.
|
|
3201 (gcc_jit_function_add_eval): Likewise.
|
|
3202 (gcc_jit_function_add_assignment): Likewise.
|
|
3203 (gcc_jit_function_add_assignment_op): Likewise.
|
|
3204 (gcc_jit_function_add_conditional): Likewise.
|
|
3205 (gcc_jit_function_add_jump): Likewise.
|
|
3206 (gcc_jit_function_add_return): Likewise.
|
|
3207 (gcc_jit_function_new_loop): Likewise.
|
|
3208 (gcc_jit_loop_end): Likewise.
|
|
3209 (gcc_jit_context_set_str_option): Likewise.
|
|
3210 (gcc_jit_context_set_int_option): Likewise.
|
|
3211 (gcc_jit_context_set_bool_option): Likewise.
|
|
3212 (gcc_jit_context_compile): Likewise.
|
|
3213 (gcc_jit_result_get_code): Likewise.
|
|
3214 (gcc_jit_result_release): Likewise.
|
|
3215 * libgccjit.h (gcc_jit_function_new_forward_label): Clarify
|
|
3216 behavior.
|
|
3217 (gcc_jit_function_add_label): Likewise.
|
|
3218
|
|
3219 2013-10-17 David Malcolm <dmalcolm@redhat.com>
|
|
3220
|
|
3221 * internal-api.c (gcc::jit::context::get_void_type): Remove.
|
|
3222 (gcc::jit::context::get_char_type): Remove.
|
|
3223 (gcc::jit::context::get_int_type): Remove.
|
|
3224 (gcc::jit::context::get_float_type): Remove.
|
|
3225 (gcc::jit::context::get_double_type): Remove.
|
|
3226 (get_tree_node_for_type): New.
|
|
3227 (gcc::jit::context::get_type): New.
|
|
3228 (gcc::jit::context::new_rvalue_from_double): New.
|
|
3229 (gcc::jit::context::new_rvalue_from_ptr): New.
|
|
3230 * internal-api.h (gcc::jit::context::get_void_type): Remove.
|
|
3231 (gcc::jit::context::get_char_type): Remove.
|
|
3232 (gcc::jit::context::get_int_type): Remove.
|
|
3233 (gcc::jit::context::get_float_type): Remove.
|
|
3234 (gcc::jit::context::get_double_type): Remove.
|
|
3235 (gcc::jit::context::get_type): New.
|
|
3236 (gcc::jit::context::new_rvalue_from_double): New.
|
|
3237 (gcc::jit::context::new_rvalue_from_ptr): New.
|
|
3238 * libgccjit.c (gcc_jit_context_get_void_type): Remove.
|
|
3239 (gcc_jit_context_get_char_type): Remove.
|
|
3240 (gcc_jit_context_get_int_type): Remove.
|
|
3241 (gcc_jit_context_get_float_type): Remove.
|
|
3242 (gcc_jit_context_get_double_type): Remove.
|
|
3243 (gcc_jit_context_get_type): New.
|
|
3244 (gcc_jit_context_new_rvalue_from_double): New.
|
|
3245 (gcc_jit_context_new_rvalue_from_ptr): New.
|
|
3246 * libgccjit.h (gcc_jit_context_get_void_type): Remove.
|
|
3247 (gcc_jit_context_get_char_type): Remove.
|
|
3248 (gcc_jit_context_get_int_type): Remove.
|
|
3249 (gcc_jit_context_get_float_type): Remove.
|
|
3250 (gcc_jit_context_get_double_type): Remove.
|
|
3251 (enum gcc_jit_types): New.
|
|
3252 (gcc_jit_context_get_type): New.
|
|
3253 (gcc_jit_context_new_rvalue_from_double): New.
|
|
3254 (gcc_jit_context_new_rvalue_from_ptr): New.
|
|
3255 * libgccjit.map (gcc_jit_context_get_void_type): Remove.
|
|
3256 (gcc_jit_context_get_char_type): Remove.
|
|
3257 (gcc_jit_context_get_int_type): Remove.
|
|
3258 (gcc_jit_context_get_float_type): Remove.
|
|
3259 (gcc_jit_context_get_double_type): Remove.
|
|
3260 (enum gcc_jit_types): New.
|
|
3261 (gcc_jit_context_get_type): New.
|
|
3262 (gcc_jit_context_new_rvalue_from_double): New.
|
|
3263 (gcc_jit_context_new_rvalue_from_ptr): New.
|
|
3264 * TODO.rst ("access to more primitive types"): Remove
|
|
3265 completed item.
|
|
3266
|
|
3267 2013-10-17 David Malcolm <dmalcolm@redhat.com>
|
|
3268
|
|
3269 * libgccjit.h: Add and reword comments throughout.
|
|
3270
|
|
3271 2013-10-17 David Malcolm <dmalcolm@redhat.com>
|
|
3272
|
|
3273 * TODO.rst: Update.
|
|
3274
|
|
3275 2013-10-16 David Malcolm <dmalcolm@redhat.com>
|
|
3276
|
|
3277 * TODO.rst (gcc_jit_context_new_local): Remove completed item.
|
|
3278 * internal-api.c (gcc::jit::context::new_local): Replace with...
|
|
3279 (gcc::jit::function::new_local): ...this, and change return type
|
|
3280 from (local*) to (lvalue*).
|
|
3281 * internal-api.h (gcc::jit::local): Eliminate.
|
|
3282 (gcc::jit::context::new_local): Replace with...
|
|
3283 (gcc::jit::function::new_local): ...this, and change return type
|
|
3284 from (local*) to (lvalue*).
|
|
3285 * libgccjit.c (gcc_jit_local): Eliminate.
|
|
3286 (gcc_jit_context_new_local): Replace with...
|
|
3287 (gcc_jit_function_new_local): ...this, and change return type
|
|
3288 from (gcc_jit_local*) to (gcc_jit_lvalue*).
|
|
3289 (gcc_jit_local_as_lvalue): Remove.
|
|
3290 (gcc_jit_local_as_rvalue): Remove.
|
|
3291 * libgccjit.h (gcc_jit_local): Remove.
|
|
3292 (gcc_jit_context_new_local): Replace with...
|
|
3293 (gcc_jit_function_new_local): ...this, and change return type
|
|
3294 from (gcc_jit_local*) to (gcc_jit_lvalue*).
|
|
3295 (gcc_jit_local_as_lvalue): Remove.
|
|
3296 (gcc_jit_local_as_rvalue): Remove.
|
|
3297 * libgccjit.map (gcc_jit_context_new_local): Replace with...
|
|
3298 (gcc_jit_function_new_local): ...this.
|
|
3299 (gcc_jit_local_as_lvalue): Remove.
|
|
3300 (gcc_jit_local_as_rvalue): Remove.
|
|
3301
|
|
3302 2013-10-15 David Malcolm <dmalcolm@redhat.com>
|
|
3303
|
|
3304 * libgccjit.h (gcc_jit_location): Rewrite comment to reflect
|
|
3305 that this part of the API is now implemented.
|
|
3306 ("Functions for use within the code factory."): Add notes on
|
|
3307 memory-management and lifetimes.
|
|
3308 * notes.txt: Update diagram to show handle_locations.
|
|
3309
|
|
3310 2013-10-15 David Malcolm <dmalcolm@redhat.com>
|
|
3311
|
|
3312 * TODO.rst: Update.
|
|
3313
|
|
3314 2013-10-14 David Malcolm <dmalcolm@redhat.com>
|
|
3315
|
|
3316 * libgccjit.map: Alphabetize the exported symbols.
|
|
3317
|
|
3318 2013-10-14 David Malcolm <dmalcolm@redhat.com>
|
|
3319
|
|
3320 * internal-api.c (gcc::jit::context::new_field): Implement
|
|
3321 location support, by calling set_tree_location.
|
|
3322 (gcc::jit::context::new_struct_type): Likewise.
|
|
3323 (gcc::jit::context::new_param): Likewise.
|
|
3324 (gcc::jit::context::new_function): Likewise.
|
|
3325 (gcc::jit::context::new_global): Likewise.
|
|
3326 (gcc::jit::context::new_local): Likewise.
|
|
3327 (gcc::jit::context::new_binary_op): Likewise.
|
|
3328 (gcc::jit::context::new_comparison): Likewise.
|
|
3329 (gcc::jit::context::new_call): Likewise.
|
|
3330 (gcc::jit::context::new_array_lookup): Likewise.
|
|
3331 (gcc::jit::context::new_field_access): Likewise.
|
|
3332 (gcc::jit::context::add_assignment): Likewise.
|
|
3333 (gcc::jit::context::add_conditional): Likewise.
|
|
3334 (gcc::jit::function::add_label): Likewise.
|
|
3335 (gcc::jit::function::add_jump): Likewise.
|
|
3336 (gcc::jit::function::add_return): Likewise.
|
|
3337 (gcc::jit::function::place_forward_label): Likewise, adding
|
|
3338 location parameter.
|
|
3339 (gcc::jit::loop::loop): Add loc arg to place_forward_label.
|
|
3340 (gcc::jit::loop::end): Likewise.
|
|
3341 (gcc::jit::context::invoke_code_factory): Call handle_locations
|
|
3342 after the client callback is done, before any GC can run.
|
|
3343 (line_comparator): New.
|
|
3344 (location_comparator): New.
|
|
3345 (gcc::jit::context::handle_locations): New.
|
|
3346 (gcc::jit::context::new_location): New.
|
|
3347 (gcc::jit::context::set_tree_location): New.
|
|
3348 (gcc::jit::context::get_source_file): New.
|
|
3349 (gcc::jit::source_file::source_file): New.
|
|
3350 (gcc::jit::source_file::get_source_line): New.
|
|
3351 (gcc::jit::source_line::source_line): New.
|
|
3352 (gcc::jit::source_line::get_location): New.
|
|
3353 (gcc::jit::location::location): New.
|
|
3354 * internal-api.h (gcc::jit::context::new_location): New.
|
|
3355 (gcc::jit::context::set_tree_location): New.
|
|
3356 (gcc::jit::context::handle_locations): New.
|
|
3357 (gcc::jit::context::get_source_file): New.
|
|
3358 (gcc::jit::context::m_source_files): New field.
|
|
3359 (gcc::jit::context::m_cached_locations: New field.
|
|
3360 (gcc::jit::function::place_forward_label): Add location
|
|
3361 parameter.
|
|
3362 (gcc::jit::function::set_tree_location): New.
|
|
3363 (gcc::jit::source_file): New class.
|
|
3364 (gcc::jit::source_line): New class.
|
|
3365 (gcc::jit::location): New class.
|
|
3366 * libgccjit.c (gcc_jit_context_new_location): New.
|
|
3367 (gcc_jit_function_place_forward_label): Add location parameter,
|
|
3368 changing public API.
|
|
3369 * libgccjit.h (gcc_jit_context_new_location): New.
|
|
3370 (gcc_jit_function_place_forward_label): Add location parameter,
|
|
3371 changing public API.
|
|
3372 * libgccjit.map (gcc_jit_context_new_location): New.
|
|
3373 (main): Remove obsolete export.
|
|
3374 (called_function): Likewise.
|
|
3375
|
|
3376 2013-10-11 David Malcolm <dmalcolm@redhat.com>
|
|
3377
|
|
3378 * internal-api.c: Update includes to reflect move of decl of
|
|
3379 dump_function_to_file from tree-dump.h to tree-flow.h in
|
|
3380 r203320.
|
|
3381
|
|
3382 2013-10-10 David Malcolm <dmalcolm@redhat.com>
|
|
3383
|
|
3384 * libgccjit.h (GCC_JIT_BOOL_OPTION_DUMP_SUMMARY): New.
|
|
3385 * internal-api.c ((gcc::jit::context::compile): Implement
|
|
3386 GCC_JIT_BOOL_OPTION_DUMP_SUMMARY.
|
|
3387
|
|
3388 2013-10-10 David Malcolm <dmalcolm@redhat.com>
|
|
3389
|
|
3390 * libgccjit.h (GCC_JIT_BOOL_OPTION_SELFCHECK_GC): Improve
|
|
3391 documentation.
|
|
3392 (GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE): Likewise.
|
|
3393
|
|
3394 2013-10-10 David Malcolm <dmalcolm@redhat.com>
|
|
3395
|
|
3396 * libgccjit.h: Clarify the separation of the API into "outside
|
|
3397 the callback" and "within the callback" entrypoints, moving the
|
|
3398 latter to the bottom of the header.
|
|
3399
|
|
3400 2013-10-10 David Malcolm <dmalcolm@redhat.com>
|
|
3401
|
|
3402 * libgccjit.h: Add comments throughout.
|
|
3403
|
|
3404 2013-10-09 David Malcolm <dmalcolm@redhat.com>
|
|
3405
|
|
3406 * internal-api.c (gcc::jit::context::~context): Fix indentation;
|
|
3407 clean up memory allocations when using
|
|
3408 GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES.
|
|
3409
|
|
3410 2013-10-09 David Malcolm <dmalcolm@redhat.com>
|
|
3411
|
|
3412 * libgccjit.h (enum gcc_jit_bool_option): Add
|
|
3413 GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING.
|
|
3414 * internal-api.c (gcc::jit::context::compile): Implement
|
|
3415 GCC_JIT_BOOL_OPTION_DUMP_EVERYTHING.
|
|
3416
|
|
3417 2013-10-09 David Malcolm <dmalcolm@redhat.com>
|
|
3418
|
|
3419 * libgccjit.h (enum gcc_jit_bool_option): Add
|
|
3420 GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES.
|
|
3421 * internal-api.c (gcc::jit::context::~context): Implement
|
|
3422 GCC_JIT_BOOL_OPTION_KEEP_INTERMEDIATES.
|
|
3423
|
|
3424 2013-10-08 David Malcolm <dmalcolm@redhat.com>
|
|
3425
|
|
3426 * internal-api.c (gcc::jit::context::compile): Use mkdtemp to
|
|
3427 create a temporary directory and create the .s and .so files
|
|
3428 there, rather than writing to "fake.s" and then reading it to
|
|
3429 make "fake.so", then using it, fixing various possible race
|
|
3430 attacks by processes that can write to the process' current
|
|
3431 working directory.
|
|
3432 (gcc::jit::context::~context): Clean up tempfiles and path
|
|
3433 buffers.
|
|
3434 * internal-api.h (gcc::jit::context): Add fields
|
|
3435 m_path_template, m_path_tempdir, m_path_c_file, m_path_s_file,
|
|
3436 m_path_so_file.
|
|
3437
|
|
3438 2013-10-08 David Malcolm <dmalcolm@redhat.com>
|
|
3439
|
|
3440 * internal-api.c (gcc::jit::context::new_function): Fix leak of
|
|
3441 arg_types.
|
|
3442
|
|
3443 2013-10-08 David Malcolm <dmalcolm@redhat.com>
|
|
3444
|
|
3445 * internal-api.c (gcc::jit::context::~context): New.
|
|
3446 * internal-api.h (gcc::jit::context::~context): New.
|
|
3447
|
|
3448 2013-10-07 David Malcolm <dmalcolm@redhat.com>
|
|
3449
|
|
3450 * internal-api.c (gcc::jit::context::compile): Implement
|
|
3451 GCC_JIT_BOOL_OPTION_SELFCHECK_GC.
|
|
3452
|
|
3453 * libgccjit.h (enum gcc_jit_bool_option): Add
|
|
3454 GCC_JIT_BOOL_OPTION_SELFCHECK_GC.
|
|
3455
|
|
3456 2013-10-07 David Malcolm <dmalcolm@redhat.com>
|
|
3457
|
|
3458 * Make-lang.in: Rename JIT_OBJS to jit_OBJS. Delete manual
|
|
3459 dependencies.
|
|
3460
|
|
3461 2013-10-04 David Malcolm <dmalcolm@redhat.com>
|
|
3462
|
|
3463 * internal-api.c (gcc::jit::context::new_global): New.
|
|
3464 * internal-api.h (gcc::jit::context::new_global): New.
|
|
3465 * libgccjit.c (gcc_jit_context_new_global) New.
|
|
3466 * libgccjit.h (gcc_jit_context_new_global) New.
|
|
3467 * libgccjit.map: Add gcc_jit_context_new_global.
|
|
3468
|
|
3469 2013-10-03 David Malcolm <dmalcolm@redhat.com>
|
|
3470
|
|
3471 * libgccjit.c (gcc_jit_param_as_lvalue): New.
|
|
3472 * libgccjit.h (gcc_jit_param_as_lvalue): New.
|
|
3473 * libgccjit.map: Add gcc_jit_param_as_lvalue.
|
|
3474
|
|
3475 2013-10-03 David Malcolm <dmalcolm@redhat.com>
|
|
3476
|
|
3477 * internal-api.c (gcc::jit::function::postprocess): Dump gimple
|
|
3478 using dump_function_to_file rather than debug_gimple_seq so that
|
|
3479 we also get the declaration.
|
|
3480
|
|
3481 2013-10-03 David Malcolm <dmalcolm@redhat.com>
|
|
3482
|
|
3483 * Make-lang.in: New.
|
|
3484 * TODO.rst: New.
|
|
3485 * config-lang.in: New.
|
|
3486 * dummy-frontend.c: New.
|
|
3487 * internal-api.c: New.
|
|
3488 * internal-api.h: New.
|
|
3489 * libgccjit.c: New.
|
|
3490 * libgccjit.h: New.
|
|
3491 * libgccjit.map: New.
|
|
3492 * notes.txt: New.
|
|
3493
|
|
3494 Copyright (C) 2013-2014 Free Software Foundation, Inc.
|
|
3495
|
|
3496 Copying and distribution of this file, with or without modification,
|
|
3497 are permitted in any medium without royalty provided the copyright
|
|
3498 notice and this notice are preserved.
|