Add support for global rvalue initialization and constructors
This patch adds support for initialization of global variables with rvalues and creating constructors for array, struct and union types which can be used as rvalues. Signed-off-by: 2021-12-14 Petter Tomner <tomner@kth.se> gcc/jit/ * jit-common.h: New enum * jit-playback.c : Folding an setting intitial (global_new_decl) : Handle const global generation (new_global) : New flag (global_set_init_rvalue) : New (new_ctor) : New (new_global_initialized) : Flag (as_truth_value) : Fold (new_unary_op) : Fold (new_binary_op) : Fold (new_comparison) : Fold (new_array_access) : Fold (new_dereference) : Fold (get_address) : Fold * jit-playback.h : (global_set_init_rvalue) : New (new_ctor) : New * jit-recording.c : * jit-recording.h : (new_global_init_rvalue) : New (new_ctor) : New (ctor) : New, inherits rvalue (global_init_rvalue) : New, inherits memento (type::is_union) : New * libgccjit++.h : New entrypoints, see C-header * libgccjit.c : See .h * libgccjit.h : New entrypoints (gcc_jit_context_new_array_constructor) : New (gcc_jit_context_new_struct_constructor) : New (gcc_jit_context_new_union_constructor) : New (gcc_jit_global_set_initializer_rvalue) : New (LIBGCCJIT_HAVE_CTORS) : New feuture macro * libgccjit.map : New entrypoints added to ABI 19 * docs/topics/expressions.rst : Updated docs gcc/testsuite/ * jit.dg/all-non-failing-tests.h: Added two tests * jit.dg/test-error-ctor-array-wrong-obj.c: New * jit.dg/test-error-ctor-struct-too-big.c: New * jit.dg/test-error-ctor-struct-wrong-field-obj.c: New * jit.dg/test-error-ctor-struct-wrong-type.c: New * jit.dg/test-error-ctor-struct-wrong-type2.c * jit.dg/test-error-ctor-union-wrong-field-name.c: New * jit.dg/test-error-global-already-init.c: New * jit.dg/test-error-global-common-section.c: New * jit.dg/test-error-global-init-too-small-array.c: New * jit.dg/test-error-global-lvalue-init.c: New * jit.dg/test-error-global-nonconst-init.c: New * jit.dg/test-global-init-rvalue.c: New * jit.dg/test-local-init-rvalue.c: New
Showing
- gcc/jit/docs/topics/expressions.rst 173 additions, 0 deletionsgcc/jit/docs/topics/expressions.rst
- gcc/jit/jit-common.h 9 additions, 0 deletionsgcc/jit/jit-common.h
- gcc/jit/jit-playback.c 208 additions, 15 deletionsgcc/jit/jit-playback.c
- gcc/jit/jit-playback.h 17 additions, 3 deletionsgcc/jit/jit-playback.h
- gcc/jit/jit-recording.c 458 additions, 13 deletionsgcc/jit/jit-recording.c
- gcc/jit/jit-recording.h 94 additions, 0 deletionsgcc/jit/jit-recording.h
- gcc/jit/libgccjit++.h 90 additions, 0 deletionsgcc/jit/libgccjit++.h
- gcc/jit/libgccjit.c 403 additions, 2 deletionsgcc/jit/libgccjit.c
- gcc/jit/libgccjit.h 153 additions, 0 deletionsgcc/jit/libgccjit.h
- gcc/jit/libgccjit.map 7 additions, 0 deletionsgcc/jit/libgccjit.map
- gcc/testsuite/jit.dg/all-non-failing-tests.h 20 additions, 0 deletionsgcc/testsuite/jit.dg/all-non-failing-tests.h
- gcc/testsuite/jit.dg/test-error-ctor-array-wrong-obj.c 54 additions, 0 deletionsgcc/testsuite/jit.dg/test-error-ctor-array-wrong-obj.c
- gcc/testsuite/jit.dg/test-error-ctor-struct-too-big.c 71 additions, 0 deletionsgcc/testsuite/jit.dg/test-error-ctor-struct-too-big.c
- gcc/testsuite/jit.dg/test-error-ctor-struct-wrong-field-obj.c 86 additions, 0 deletions...testsuite/jit.dg/test-error-ctor-struct-wrong-field-obj.c
- gcc/testsuite/jit.dg/test-error-ctor-struct-wrong-type.c 76 additions, 0 deletionsgcc/testsuite/jit.dg/test-error-ctor-struct-wrong-type.c
- gcc/testsuite/jit.dg/test-error-ctor-struct-wrong-type2.c 77 additions, 0 deletionsgcc/testsuite/jit.dg/test-error-ctor-struct-wrong-type2.c
- gcc/testsuite/jit.dg/test-error-ctor-union-wrong-field-name.c 76 additions, 0 deletions...testsuite/jit.dg/test-error-ctor-union-wrong-field-name.c
- gcc/testsuite/jit.dg/test-error-global-already-init.c 46 additions, 0 deletionsgcc/testsuite/jit.dg/test-error-global-already-init.c
- gcc/testsuite/jit.dg/test-error-global-common-section.c 54 additions, 0 deletionsgcc/testsuite/jit.dg/test-error-global-common-section.c
- gcc/testsuite/jit.dg/test-error-global-init-too-small-array.c 65 additions, 0 deletions...testsuite/jit.dg/test-error-global-init-too-small-array.c
Loading
Please register or sign in to comment