(root)/
gcc-13.2.0/
gcc/
testsuite/
jit.dg/
test-error-param-reuse.c
       1  #include <stdlib.h>
       2  #include <stdio.h>
       3  
       4  #include "libgccjit.h"
       5  
       6  #include "harness.h"
       7  
       8  void
       9  create_code (gcc_jit_context *ctxt, void *user_data)
      10  {
      11    /* Verify that we get an error (rather than a crash)
      12       if the client code reuses a gcc_jit_param * within
      13       a function.  */
      14    gcc_jit_type *void_type =
      15      gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_VOID);
      16    gcc_jit_type *int_type =
      17      gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_INT);
      18  
      19    /* Create a param.  */
      20    gcc_jit_param *param =
      21      gcc_jit_context_new_param (ctxt, NULL, int_type, "i");
      22  
      23    /* Try to use it twice when creating "fn".  */
      24    gcc_jit_param *params[2];
      25    params[0] = param;
      26    params[1] = param;
      27  
      28    gcc_jit_context_new_function (ctxt, NULL,
      29  				GCC_JIT_FUNCTION_IMPORTED,
      30  				void_type,
      31  				"fn",
      32  				2, params,
      33  				0);
      34  }
      35  
      36  void
      37  verify_code (gcc_jit_context *ctxt, gcc_jit_result *result)
      38  {
      39    CHECK_VALUE (result, NULL);
      40  
      41    /* Verify that the correct error message was emitted.  */
      42    CHECK_STRING_VALUE (gcc_jit_context_get_first_error (ctxt),
      43  		      ("gcc_jit_context_new_function:"
      44  		       " parameter i (type: int)"
      45  		       " is used more than once when creating function"
      46  		       " fn"))
      47  }
      48