(root)/
gcc-13.2.0/
gcc/
testsuite/
jit.dg/
test-builtin-unreachable.c
       1  #include <libgccjit.h>
       2  
       3  #include "harness.h"
       4  
       5  /* Verify that we can compile a function that uses __builtin_unreachable
       6     (PR jit/95426).
       7     
       8     Compile the equivalent of this C:
       9  
      10       int test_pr95426_unreachable (int i)
      11       {
      12         __builtin_unreachable ();
      13         return i;
      14       }
      15  */
      16  
      17  void
      18  create_code (gcc_jit_context *ctxt, void *user_data)
      19  {
      20    gcc_jit_context_set_int_option (ctxt,
      21  				  GCC_JIT_INT_OPTION_OPTIMIZATION_LEVEL,
      22  				  0);
      23  
      24    gcc_jit_type *int_type = gcc_jit_context_get_type(ctxt, GCC_JIT_TYPE_INT);
      25    gcc_jit_param *param_i
      26      = gcc_jit_context_new_param (ctxt, NULL, int_type, "i");
      27    gcc_jit_function *test_fn
      28      = gcc_jit_context_new_function (ctxt, NULL, GCC_JIT_FUNCTION_EXPORTED,
      29  				    int_type,
      30  				    "test_pr95426_unreachable",
      31  				    1, &param_i, 0);
      32  
      33    gcc_jit_block *bb = gcc_jit_function_new_block(test_fn, "start");
      34    gcc_jit_function *func___builtin_unreachable
      35      = gcc_jit_context_get_builtin_function(ctxt, "__builtin_unreachable");
      36    gcc_jit_rvalue *call___builtin_unreachable
      37      = gcc_jit_context_new_call(ctxt, NULL, func___builtin_unreachable,
      38  			       0, NULL);
      39    gcc_jit_block_add_eval(bb, NULL, call___builtin_unreachable);
      40    gcc_jit_block_end_with_return (bb, NULL, gcc_jit_param_as_rvalue(param_i));
      41  }
      42  
      43  void
      44  verify_code (gcc_jit_context *ctxt, gcc_jit_result *result)
      45  {
      46    CHECK_NON_NULL (result);
      47    CHECK_NON_NULL (gcc_jit_result_get_code (result, "test_pr95426_unreachable"));
      48    /* Don't actually run the code.  */
      49  }