https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95296

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by David Malcolm <dmalc...@gcc.gnu.org>:

https://gcc.gnu.org/g:6f7585deedc140667fd496b48c9fc4f7d625605c

commit r11-636-g6f7585deedc140667fd496b48c9fc4f7d625605c
Author: David Malcolm <dmalc...@redhat.com>
Date:   Sun May 24 18:36:36 2020 -0400

    jit: check for void types [PR 95296]

    PR jit/95296 reports an ICE when using libgccjit to create a local of void
    type.

    This patch adds checking to various API entrypoints in libgccjit.c so that
    they fail gracefully with an error if the client code attempts to create
    various kinds of rvalues or types involving void types.
    The patch documents these and various pre-existing restrictions on types
    in the API.

    gcc/jit/ChangeLog:
            PR jit/95296
            * docs/topics/expressions.rst (Unary Operations): Document that
            result_type of gcc_jit_context_new_unary_op must be a numeric type.
            (Binary Operations): Likewise for gcc_jit_context_new_binary_op.
            (Global variables): Document that "type" of
            gcc_jit_context_new_global must be non-`void`.
            * docs/topics/function-pointers.rst
            (gcc_jit_context_new_function_ptr_type): Document that the
            param_types must be non-void, but that return_type may be.
            * docs/topics/functions.rst (Params): Document that
            gcc_jit_context_new_param's type must be non-void.
            (Functions): Likewise for gcc_jit_function_new_local.
            * docs/topics/types.rst (gcc_jit_context_new_array_type): Document
            that the type must be non-void.
            (gcc_jit_context_new_field): Likewise.
            * docs/_build/texinfo/Makefile: Regenerate.
            * docs/_build/texinfo/libgccjit.texi: Regenerate.
            * libgccjit.c (gcc_jit_context_new_array_type): Fail if
            element_type is void.
            (gcc_jit_context_new_field): Likewise for "type".
            (gcc_jit_context_new_function_ptr_type): Likewise for each
            element of param_types.
            (gcc_jit_context_new_param): Likewise for "type".
            (gcc_jit_context_new_global): Likewise.
            (gcc_jit_function_new_local): Likewise.
            (gcc_jit_type_get_aligned): Likewise.

    gcc/testsuite/ChangeLog:
            PR jit/95296
            * jit.dg/test-error-gcc_jit_context_new_global-void-type.c: New
            test.
            * jit.dg/test-error-gcc_jit_function_new_local-void-type.c: New
            test.
            * jit.dg/test-fuzzer.c (fuzzer_init): Allow for make_random_type
            to return NULL.
            (get_random_type): Allow for elements in f->types to be NULL.

Reply via email to