libgccjit: Add support for register variables [PR104072]
authorAntoni Boucher <bouanto@zoho.com>
Tue, 12 Apr 2022 21:20:30 +0000 (17:20 -0400)
committerDavid Malcolm <dmalcolm@redhat.com>
Tue, 12 Apr 2022 21:20:30 +0000 (17:20 -0400)
commit5780ff348ad4430383fd67c6f0c572d8c3e721ad
tree311284f0fbd68d5886a3e3b0843026fa09517828
parent30f7c83e9cfe7c015448d72f63c4c39d14bc6de6
libgccjit: Add support for register variables [PR104072]

gcc/jit/
PR jit/104072
* docs/_build/texinfo/libgccjit.texi: Regenerate.
* docs/topics/compatibility.rst (LIBGCCJIT_ABI_22): New ABI tag.
* docs/topics/expressions.rst: Add documentation for the
function gcc_jit_lvalue_set_register_name.
* jit-playback.h: New function (set_register_name).
* jit-recording.cc: New function (set_register_name) and add
support for register variables.
* jit-recording.h: New field (m_reg_name) and new function
(set_register_name).
* libgccjit.cc: New function (gcc_jit_lvalue_set_register_name).
* libgccjit.h: New function (gcc_jit_lvalue_set_register_name).
* libgccjit.map (LIBGCCJIT_ABI_22): New ABI tag.

gcc/
PR jit/104072
* reginfo.cc: New functions (clear_global_regs_cache,
reginfo_cc_finalize) to avoid an issue where compiling the same
code multiple times gives an error about assigning the same
register to 2 global variables.
* rtl.h: New function (reginfo_cc_finalize).
* toplev.cc: Call it.

gcc/testsuite/
PR jit/104072
* jit.dg/all-non-failing-tests.h: Add new
test-register-variable.
* jit.dg/harness.h: Add -fdiagnostics-color=never to context's
command-line options.
* jit.dg/test-error-register-variable-bad-name.c: New test.
* jit.dg/test-error-register-variable-size-mismatch.c: New test.
* jit.dg/test-register-variable.c: New test.
17 files changed:
gcc/jit/docs/_build/texinfo/libgccjit.texi
gcc/jit/docs/topics/compatibility.rst
gcc/jit/docs/topics/expressions.rst
gcc/jit/jit-playback.h
gcc/jit/jit-recording.cc
gcc/jit/jit-recording.h
gcc/jit/libgccjit.cc
gcc/jit/libgccjit.h
gcc/jit/libgccjit.map
gcc/reginfo.cc
gcc/rtl.h
gcc/testsuite/jit.dg/all-non-failing-tests.h
gcc/testsuite/jit.dg/harness.h
gcc/testsuite/jit.dg/test-error-register-variable-bad-name.c [new file with mode: 0644]
gcc/testsuite/jit.dg/test-error-register-variable-size-mismatch.c [new file with mode: 0644]
gcc/testsuite/jit.dg/test-register-variable.c [new file with mode: 0644]
gcc/toplev.cc