#include #include "harness.h" /* Verify that we can compile a function that uses __builtin_unreachable (PR jit/95426). Compile the equivalent of this C: int test_pr95426_unreachable (int i) { __builtin_unreachable (); return i; } */ void create_code (gcc_jit_context *ctxt, void *user_data) { gcc_jit_context_set_int_option (ctxt, GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL, 0); gcc_jit_type *int_type = gcc_jit_context_get_type(ctxt, GCC_JIT_TYPE_INT); gcc_jit_param *param_i = gcc_jit_context_new_param (ctxt, NULL, int_type, "i"); gcc_jit_function *test_fn = gcc_jit_context_new_function (ctxt, NULL, GCC_JIT_FUNCTION_EXPORTED, int_type, "test_pr95426_unreachable", 1, ¶m_i, 0); gcc_jit_block *bb = gcc_jit_function_new_block(test_fn, "start"); gcc_jit_function *func___builtin_unreachable = gcc_jit_context_get_builtin_function(ctxt, "__builtin_unreachable"); gcc_jit_rvalue *call___builtin_unreachable = gcc_jit_context_new_call(ctxt, NULL, func___builtin_unreachable, 0, NULL); gcc_jit_block_add_eval(bb, NULL, call___builtin_unreachable); gcc_jit_block_end_with_return (bb, NULL, gcc_jit_param_as_rvalue(param_i)); } void verify_code (gcc_jit_context *ctxt, gcc_jit_result *result) { CHECK_NON_NULL (result); CHECK_NON_NULL (gcc_jit_result_get_code (result, "test_pr95426_unreachable")); /* Don't actually run the code. */ }