diff options
author | David Malcolm <dmalcolm@redhat.com> | 2015-07-07 19:29:58 +0000 |
---|---|---|
committer | David Malcolm <dmalcolm@gcc.gnu.org> | 2015-07-07 19:29:58 +0000 |
commit | 3457d39ea5c16b07c5e1a1d4691b1db27f1e5223 (patch) | |
tree | 4e27cf9de6ad3f9acd2c9a0c0386dbab0e1f4e2e /gcc/jit/jit-recording.h | |
parent | bada4bed71933a5170b41585b6fb52a45eaf5e8a (diff) | |
download | gcc-3457d39ea5c16b07c5e1a1d4691b1db27f1e5223.zip gcc-3457d39ea5c16b07c5e1a1d4691b1db27f1e5223.tar.gz gcc-3457d39ea5c16b07c5e1a1d4691b1db27f1e5223.tar.bz2 |
PR jit/66783: prevent use of opaque structs
gcc/jit/ChangeLog:
PR jit/66783
* jit-recording.h: Within namespace gcc:jit::recording...
(type::has_known_size): New virtual function.
(struct_has_known_size): New function.
* libgccjit.c (gcc_jit_context_new_field): Verify that the type
has a known size.
(gcc_jit_context_new_global): Likewise.
(gcc_jit_function_new_local): Likewise.
gcc/testsuite/ChangeLog:
PR jit/66783
* jit.dg/test-error-gcc_jit_context_new_field-opaque-struct.c: New
test case.
* jit.dg/test-error-gcc_jit_context_new_global-opaque-struct.c:
New test case.
* jit.dg/test-error-gcc_jit_function_new_local-opaque-struct.c:
New test case.
* jit.dg/test-error-mismatching-types-in-call.c (create_code):
Avoid using an opaque struct for local "f".
From-SVN: r225523
Diffstat (limited to 'gcc/jit/jit-recording.h')
-rw-r--r-- | gcc/jit/jit-recording.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h index acd69e9..884304b 100644 --- a/gcc/jit/jit-recording.h +++ b/gcc/jit/jit-recording.h @@ -497,6 +497,7 @@ public: virtual type *is_pointer () = 0; virtual type *is_array () = 0; virtual bool is_void () const { return false; } + virtual bool has_known_size () const { return true; } bool is_numeric () const { @@ -795,6 +796,8 @@ public: type *is_pointer () { return NULL; } type *is_array () { return NULL; } + bool has_known_size () const { return m_fields != NULL; } + playback::compound_type * playback_compound_type () { |