summaryrefslogtreecommitdiff
path: root/gcc/jit/jit-recording.h
diff options
context:
space:
mode:
authordmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>2015-07-07 19:29:58 +0000
committerdmalcolm <dmalcolm@138bc75d-0d04-0410-961f-82ee72b054a4>2015-07-07 19:29:58 +0000
commitd0278351a2f98b0b6b76531c342462a84d6d9c19 (patch)
tree4e27cf9de6ad3f9acd2c9a0c0386dbab0e1f4e2e /gcc/jit/jit-recording.h
parent9793d5a6489818bfcd667a216f148d90048f1940 (diff)
downloadgcc-d0278351a2f98b0b6b76531c342462a84d6d9c19.tar.gz
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". git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@225523 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/jit/jit-recording.h')
-rw-r--r--gcc/jit/jit-recording.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/gcc/jit/jit-recording.h b/gcc/jit/jit-recording.h
index acd69e9b78c..884304b0ff8 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 ()
{