Go to file
David Malcolm 6f7585deed 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.
2020-05-26 10:47:46 -04:00
config bootstrap: Update requirement to C++11. 2020-05-18 14:29:18 -04:00
contrib Support --dry-mode in git_update_version.py. 2020-05-26 12:13:13 +02:00
fixincludes
gcc jit: check for void types [PR 95296] 2020-05-26 10:47:46 -04:00
gnattools
gotools
include Do not use HAVE_DOS_BASED_FILE_SYSTEM for Cygwin. 2020-04-17 09:22:51 +02:00
INSTALL
intl intl: Unbreak intl build with bison 3 when no regeneration is needed [PR92008] 2020-04-16 11:55:00 +02:00
libada
libatomic x86: Also check if -fcf-protection works 2020-05-15 09:07:17 -07:00
libbacktrace x86: Also check if -fcf-protection works 2020-05-15 09:07:17 -07:00
libcc1 x86: Default CET run-time support to auto 2020-05-14 09:05:02 -07:00
libcpp libcpp, libdecnumber: configure and substitute AR 2020-05-23 21:59:02 +00:00
libdecnumber libcpp, libdecnumber: configure and substitute AR 2020-05-23 21:59:02 +00:00
libffi libffi/test: Fix compilation for build sysroot 2020-04-25 21:27:14 +01:00
libgcc libgcc: Move FEATURE_AVX512VP2INTERSECT after FEATURE_AVX512BF16 2020-05-21 05:33:11 -07:00
libgfortran Fixes a hang on an invalid ID in a WAIT statement. 2020-05-23 19:01:43 +02:00
libgo libgo: update x/sys/cpu after gccgo support added 2020-05-25 13:43:44 -07:00
libgomp Fixes a hang on an invalid ID in a WAIT statement. 2020-05-23 19:01:43 +02:00
libhsail-rt
libiberty libiberty: Handle @live attribute in D demangler. 2020-05-15 10:40:47 +02:00
libitm x86: Also check if -fcf-protection works 2020-05-15 09:07:17 -07:00
libobjc x86: Also check if -fcf-protection works 2020-05-15 09:07:17 -07:00
liboffloadmic Add missing ChangeLog entries. 2020-05-05 16:10:13 +02:00
libphobos libphobos: Merge upstream druntime 5cc061a8, phobos 64ed4684f 2020-05-17 18:49:19 +02:00
libquadmath x86: Also check if -fcf-protection works 2020-05-15 09:07:17 -07:00
libsanitizer Update merge.sh to reflect usage of git. 2020-05-26 08:48:14 +02:00
libssp x86: Also check if -fcf-protection works 2020-05-15 09:07:17 -07:00
libstdc++-v3 libstdc++: Compile PR93978 testcase with -Wall 2020-05-23 15:25:40 -04:00
libvtv x86: Also check if -fcf-protection works 2020-05-15 09:07:17 -07:00
lto-plugin revamp dump and aux output names 2020-05-26 04:30:15 -03:00
maintainer-scripts Adjust crontab. 2020-04-30 19:25:03 +02:00
zlib x86: Also check if -fcf-protection works 2020-05-15 09:07:17 -07:00
.dir-locals.el
.gitattributes
.gitignore
ABOUT-NLS
ar-lib
ChangeLog bootstrap: Update requirement to C++11. 2020-05-18 14:29:18 -04:00
ChangeLog.jit
ChangeLog.tree-ssa
compile
config-ml.in
config.guess
config.rpath
config.sub
configure bootstrap: Update requirement to C++11. 2020-05-18 14:29:18 -04:00
configure.ac bootstrap: Update requirement to C++11. 2020-05-18 14:29:18 -04:00
COPYING
COPYING3
COPYING3.LIB
COPYING.LIB
COPYING.RUNTIME
depcomp
install-sh
libtool-ldflags
libtool.m4
lt~obsolete.m4
ltgcc.m4
ltmain.sh Do not use HAVE_DOS_BASED_FILE_SYSTEM for Cygwin. 2020-04-17 09:22:51 +02:00
ltoptions.m4
ltsugar.m4
ltversion.m4
MAINTAINERS MAINTAINERS: Add myself for write after approval. 2020-05-18 12:21:17 +01:00
Makefile.def Merge top-level configury changes from gdb 2020-04-09 06:52:55 -06:00
Makefile.in Merge top-level configury changes from gdb 2020-04-09 06:52:55 -06:00
Makefile.tpl
missing
mkdep
mkinstalldirs
move-if-change
multilib.am
README
symlink-tree
test-driver
ylwrap

This directory contains the GNU Compiler Collection (GCC).

The GNU Compiler Collection is free software.  See the files whose
names start with COPYING for copying permission.  The manuals, and
some of the runtime libraries, are under different terms; see the
individual source files for details.

The directory INSTALL contains copies of the installation information
as HTML and plain text.  The source of this information is
gcc/doc/install.texi.  The installation information includes details
of what is included in the GCC sources and what files GCC installs.

See the file gcc/doc/gcc.texi (together with other files that it
includes) for usage and porting information.  An online readable
version of the manual is in the files gcc/doc/gcc.info*.

See http://gcc.gnu.org/bugs/ for how to report bugs usefully.

Copyright years on GCC source files may be listed using range
notation, e.g., 1987-2012, indicating that every year in the range,
inclusive, is a copyrightable year that could otherwise be listed
individually.