gcc/testsuite: * jit.dg/test-error-get-type-bad-enum.c: New. * jit.dg/test-error-new-binary-op-bad-op.c: New. * jit.dg/test-error-new-function-bad-kind.c: New. * jit.dg/test-error-new-unary-op-bad-op.c: New. --- .../jit.dg/test-error-get-type-bad-enum.c | 27 ++++++++++++++ .../jit.dg/test-error-new-binary-op-bad-op.c | 37 +++++++++++++++++++ .../jit.dg/test-error-new-function-bad-kind.c | 41 ++++++++++++++++++++++ .../jit.dg/test-error-new-unary-op-bad-op.c | 36 +++++++++++++++++++ 4 files changed, 141 insertions(+) create mode 100644 gcc/testsuite/jit.dg/test-error-get-type-bad-enum.c create mode 100644 gcc/testsuite/jit.dg/test-error-new-binary-op-bad-op.c create mode 100644 gcc/testsuite/jit.dg/test-error-new-function-bad-kind.c create mode 100644 gcc/testsuite/jit.dg/test-error-new-unary-op-bad-op.c
diff --git a/gcc/testsuite/jit.dg/test-error-get-type-bad-enum.c b/gcc/testsuite/jit.dg/test-error-get-type-bad-enum.c new file mode 100644 index 0000000..67b712e --- /dev/null +++ b/gcc/testsuite/jit.dg/test-error-get-type-bad-enum.c @@ -0,0 +1,27 @@ +#include <stdlib.h> +#include <stdio.h> + +#include "libgccjit.h" + +#include "harness.h" + +void +create_code (gcc_jit_context *ctxt, void *user_data) +{ + /* Trigger an API error by passing bad data. */ + gcc_jit_context_get_type (ctxt, 42); +} + +void +verify_code (gcc_jit_context *ctxt, gcc_jit_result *result) +{ + /* Ensure that the bad API usage prevents the API giving a bogus + result back. */ + CHECK_VALUE (result, NULL); + + /* Verify that the correct error message was emitted. */ + CHECK_STRING_VALUE (gcc_jit_context_get_first_error (ctxt), + ("gcc_jit_context_get_type:" + " unrecognized value for enum gcc_jit_types: 42")); +} + diff --git a/gcc/testsuite/jit.dg/test-error-new-binary-op-bad-op.c b/gcc/testsuite/jit.dg/test-error-new-binary-op-bad-op.c new file mode 100644 index 0000000..0592f55 --- /dev/null +++ b/gcc/testsuite/jit.dg/test-error-new-binary-op-bad-op.c @@ -0,0 +1,37 @@ +#include <stdlib.h> +#include <stdio.h> + +#include "libgccjit.h" + +#include "harness.h" + +void +create_code (gcc_jit_context *ctxt, void *user_data) +{ + /* Trigger an API error by passing bad data. */ + (void)gcc_jit_context_new_binary_op ( + ctxt, + NULL, + + /* Non-valid enum value: */ + (enum gcc_jit_binary_op) 42, + + /* These aren't valid either: */ + NULL, /* gcc_jit_type *result_type, */ + NULL, NULL); /* gcc_jit_rvalue *a, gcc_jit_rvalue *b */ + +} + +void +verify_code (gcc_jit_context *ctxt, gcc_jit_result *result) +{ + /* Ensure that the bad API usage prevents the API giving a bogus + result back. */ + CHECK_VALUE (result, NULL); + + /* Verify that the correct error message was emitted. */ + CHECK_STRING_VALUE (gcc_jit_context_get_first_error (ctxt), + ("gcc_jit_context_new_binary_op:" + " unrecognized value for enum gcc_jit_binary_op: 42")); +} + diff --git a/gcc/testsuite/jit.dg/test-error-new-function-bad-kind.c b/gcc/testsuite/jit.dg/test-error-new-function-bad-kind.c new file mode 100644 index 0000000..f9772de --- /dev/null +++ b/gcc/testsuite/jit.dg/test-error-new-function-bad-kind.c @@ -0,0 +1,41 @@ +#include <stdlib.h> +#include <stdio.h> + +#include "libgccjit.h" + +#include "harness.h" + +void +create_code (gcc_jit_context *ctxt, void *user_data) +{ + gcc_jit_type *int_type = + gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_INT); + + /* Trigger an API error by passing bad data. */ + (void)gcc_jit_context_new_function ( + ctxt, + NULL, + + /* Non-valid enum value: */ + (enum gcc_jit_function_kind)42, + + int_type, /* gcc_jit_type *return_type, */ + "foo", /* const char *name, */ + 0, /* int num_params, */ + NULL, /* gcc_jit_param **params, */ + 0); /* int is_variadic */ +} + +void +verify_code (gcc_jit_context *ctxt, gcc_jit_result *result) +{ + /* Ensure that the bad API usage prevents the API giving a bogus + result back. */ + CHECK_VALUE (result, NULL); + + /* Verify that the correct error message was emitted. */ + CHECK_STRING_VALUE (gcc_jit_context_get_first_error (ctxt), + ("gcc_jit_context_new_function:" + " unrecognized value for enum gcc_jit_function_kind: 42")); +} + diff --git a/gcc/testsuite/jit.dg/test-error-new-unary-op-bad-op.c b/gcc/testsuite/jit.dg/test-error-new-unary-op-bad-op.c new file mode 100644 index 0000000..faab139 --- /dev/null +++ b/gcc/testsuite/jit.dg/test-error-new-unary-op-bad-op.c @@ -0,0 +1,36 @@ +#include <stdlib.h> +#include <stdio.h> + +#include "libgccjit.h" + +#include "harness.h" + +void +create_code (gcc_jit_context *ctxt, void *user_data) +{ + /* Trigger an API error by passing bad data. */ + (void)gcc_jit_context_new_unary_op ( + ctxt, + NULL, + + /* Non-valid enum value: */ + (enum gcc_jit_unary_op) 42, + + /* These aren't valid either: */ + NULL, /* gcc_jit_type *result_type, */ + NULL); /* gcc_jit_rvalue *rvalue */ +} + +void +verify_code (gcc_jit_context *ctxt, gcc_jit_result *result) +{ + /* Ensure that the bad API usage prevents the API giving a bogus + result back. */ + CHECK_VALUE (result, NULL); + + /* Verify that the correct error message was emitted. */ + CHECK_STRING_VALUE (gcc_jit_context_get_first_error (ctxt), + ("gcc_jit_context_new_unary_op:" + " unrecognized value for enum gcc_jit_unary_op: 42")); +} + -- 1.8.5.3