/* Compiler: ECL 26.3.27                                                      */
/* Source: /build/ecl/src/ecl-26.3.27/src/cmp/cmpbackend-cxx/cmpc-opt-ct.lsp  */
#include <ecl/ecl-cmp.h>
#include "cmp/cmpc-opt-ct.eclh"
/* function definition for MAKE-SINGLE-CONSTANT-OPTIMIZER                     */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L3750make_single_constant_optimizer(cl_object v1name, cl_object v2c_value)
{
 cl_object T0;
 cl_object env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
L1:;
 if (!(ECL_SYMBOLP(v1name))){
  goto L2;
 }
 {
  cl_object v3value;
  cl_object v4host_type;
  cl_object v5location;
  v3value = cl_symbol_value(v1name);
  T0 = cl_type_of(v3value);
  v4host_type = (cl_env_copy->function=ecl_fdefinition(VV[1]))->cfun.entry(1, T0) /*  LISP-TYPE->HOST-TYPE */;
  v5location = (cl_env_copy->function=ecl_fdefinition(VV[2]))->cfun.entry(6, ECL_SYM("LOCATION",1003), v2c_value, ECL_SYM("VALUE",2074), v3value, VV[3], v4host_type) /*  MAKE-VV */;
  value0 = CONS(v3value,v5location);
  cl_env_copy->nvalues = 1;
  return value0;
 }
L2:;
 if (!(floatp(v1name))){
  goto L7;
 }
 {
  cl_object v6location;
  v6location = (cl_env_copy->function=ecl_fdefinition(VV[2]))->cfun.entry(6, ECL_SYM("LOCATION",1003), v2c_value, ECL_SYM("VALUE",2074), v1name, VV[3], ECL_SYM("OBJECT",1315)) /*  MAKE-VV */;
  value0 = CONS(v1name,v6location);
  cl_env_copy->nvalues = 1;
  return value0;
 }
L7:;
 T0 = (cl_env_copy->function=ecl_fdefinition(VV[2]))->cfun.entry(4, ECL_SYM("LOCATION",1003), v2c_value, ECL_SYM("VALUE",2074), v1name) /*  MAKE-VV */;
 value0 = CONS(v1name,T0);
 cl_env_copy->nvalues = 1;
 return value0;
}
static cl_object L3750make_single_constant_optimizer_va(cl_narg narg, cl_object v7name, cl_object v8c_value, ...)
{
 if (ecl_unlikely(narg!=2)) FEwrong_num_arguments(VV[0]);
 {
  return L3750make_single_constant_optimizer(v7name, v8c_value);
 }
}
/* function definition for MAKE-OPTIMIZABLE-CONSTANTS                         */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L3751make_optimizable_constants(cl_object v1machine)
{
 cl_object T0, T1;
 cl_object env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
L1:;
 {
  cl_object v2;
  cl_object v3value;
  cl_object v4name;
  cl_object v5;
  {
   cl_object v6;
   v6 = L3752optimizable_constants_list(v1machine);
   if (ecl_unlikely(!ECL_LISTP(v6))) FEtype_error_list(v6);
   value0 = ECL_NIL;
   cl_env_copy->nvalues = 0;
   v2 = v6;
  }
  v3value = ECL_NIL;
  v4name = ECL_NIL;
  v5 = v2;
  {
   cl_object v6;
   cl_object v7;
   v6 = ecl_list1(ECL_NIL);
   v7 = v6;
L10:;
   if (!(ecl_endp(v5))){
    goto L12;
   }
   goto L11;
L12:;
   {
    cl_object v8;
    v8 = ECL_CONS_CAR(v5);
    v3value = ecl_car(v8);
    v8 = ecl_cdr(v8);
    v4name = ecl_car(v8);
   }
   {
    cl_object v8;
    v8 = ECL_CONS_CDR(v5);
    if (ecl_unlikely(!ECL_LISTP(v8))) FEtype_error_list(v8);
    value0 = ECL_NIL;
    cl_env_copy->nvalues = 0;
    v5 = v8;
   }
   {
    cl_object v8;
    v8 = v7;
    if (ecl_unlikely(ECL_ATOM(v8))) FEtype_error_cons(v8);
    value0 = ECL_NIL;
    cl_env_copy->nvalues = 0;
    T0 = v8;
   }
   T1 = L3750make_single_constant_optimizer(v3value, v4name);
   v7 = ecl_list1(T1);
   (ECL_CONS_CDR(T0)=v7,T0);
   goto L10;
L11:;
   value0 = ecl_cdr(v6);
   cl_env_copy->nvalues = 1;
   return value0;
  }
 }
}
static cl_object L3751make_optimizable_constants_va(cl_narg narg, cl_object v8machine, ...)
{
 if (ecl_unlikely(narg!=1)) FEwrong_num_arguments(VV[5]);
 {
  return L3751make_optimizable_constants(v8machine);
 }
}
/* function definition for OPTIMIZABLE-CONSTANTS-LIST                         */
/* optimize speed 1, debug 1, space 1, safety 2                               */
static cl_object L3752optimizable_constants_list(cl_object v1machine)
{
 cl_object T0, T1;
 cl_object env0 = ECL_NIL;
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 ecl_cs_check(cl_env_copy,value0);
L1:;
 if (!((v1machine)==(ecl_cmp_symbol_value(cl_env_copy,VV[41])))){
  goto L3;
 }
 T1 = ecl_append(VV[60],VV[61]);
 T0 = cl_listX(19, VV[42], VV[43], VV[44], VV[45], VV[46], VV[47], VV[48], VV[49], VV[50], VV[51], VV[52], VV[53], VV[54], VV[55], VV[56], VV[57], VV[58], VV[59], T1);
 goto L2;
L3:;
 T0 = ECL_NIL;
L2:;
 value0 = ecl_append(VV[13],T0);
 cl_env_copy->nvalues = 1;
 return value0;
}
static cl_object L3752optimizable_constants_list_va(cl_narg narg, cl_object v2machine, ...)
{
 if (ecl_unlikely(narg!=1)) FEwrong_num_arguments(VV[6]);
 {
  return L3752optimizable_constants_list(v2machine);
 }
}
#include "cmp/cmpc-opt-ct.data"
#ifdef __cplusplus
extern "C"
#endif

ECL_DLLEXPORT void _eclJXNVsxOEGfup9_SsY0M881(cl_object flag)
{
 const cl_env_ptr cl_env_copy = ecl_process_env();
 cl_object value0;
 cl_object *VVtemp;
 if (flag != OBJNULL){
 Cblock = flag;
 #ifndef ECL_DYNAMIC_VV
 flag->cblock.data = VV;
 #endif
 flag->cblock.data_size = VM;
 flag->cblock.temp_data_size = VMtemp;
 flag->cblock.data_text = compiler_data_text;
 flag->cblock.cfuns_size = compiler_cfuns_size;
 flag->cblock.cfuns = compiler_cfuns;
 flag->cblock.source = ecl_make_constant_base_string("SRC:CMP;CMPBACKEND-CXX;CMPC-OPT-CT.LSP.NEWEST",-1);
 return;}
 #ifdef ECL_DYNAMIC_VV
 VV = Cblock->cblock.data;
 #endif
 Cblock->cblock.data_text = (const cl_object *)"@EcLtAg:_eclJXNVsxOEGfup9_SsY0M881@";
 VVtemp = Cblock->cblock.temp_data;
 ECL_DEFINE_SETF_FUNCTIONS
/* MAKE-LOAD-FORMs                                                            */
/* TOP-LEVEL-FORMs                                                            */
  si_select_package(VVtemp[0]);
  ecl_cmp_defun(VV[63]);                          /*  MAKE-SINGLE-CONSTANT-OPTIMIZER */
  ecl_cmp_defun(VV[64]);                          /*  MAKE-OPTIMIZABLE-CONSTANTS */
  VV[13]=CONS(ECL_NIL,ECL_NIL);
  VV[15]=CONS(ECL_NIL,ECL_NIL);
  VV[17]=CONS(ECL_NIL,ECL_NIL);
  VV[19]=CONS(ECL_NIL,ECL_NIL);
  VV[21]=CONS(ECL_NIL,ECL_NIL);
  VV[23]=CONS(ECL_NIL,ECL_NIL);
  VV[25]=CONS(ECL_NIL,ECL_NIL);
  VV[26]=CONS(ECL_NIL,ECL_NIL);
  cl_core.lisp_package=cl_find_package(VV[27]);
  (ECL_CONS_CAR(VV[26])=cl_core.lisp_package,VV[26]);
  (ECL_CONS_CDR(VV[26])=VV[28],VV[26]);
  VV[29]=CONS(ECL_NIL,ECL_NIL);
  VV[30]=CONS(ECL_NIL,ECL_NIL);
  cl_core.user_package=cl_find_package(_ecl_static_0);
  (ECL_CONS_CAR(VV[30])=cl_core.user_package,VV[30]);
  (ECL_CONS_CDR(VV[30])=VV[31],VV[30]);
  VV[32]=CONS(ECL_NIL,ECL_NIL);
  VV[33]=CONS(ECL_NIL,ECL_NIL);
  cl_core.keyword_package=cl_find_package(_ecl_static_1);
  (ECL_CONS_CAR(VV[33])=cl_core.keyword_package,VV[33]);
  (ECL_CONS_CDR(VV[33])=VV[34],VV[33]);
  VV[35]=CONS(ECL_NIL,ECL_NIL);
  VV[36]=CONS(ECL_NIL,ECL_NIL);
  cl_core.clos_package=cl_find_package(_ecl_static_2);
  (ECL_CONS_CAR(VV[36])=cl_core.clos_package,VV[36]);
  (ECL_CONS_CDR(VV[36])=VV[37],VV[36]);
  VV[38]=CONS(ECL_NIL,ECL_NIL);
  VV[39]=CONS(ECL_NIL,ECL_NIL);
  cl_core.mp_package=cl_find_package(_ecl_static_3);
  (ECL_CONS_CAR(VV[39])=cl_core.mp_package,VV[39]);
  (ECL_CONS_CDR(VV[39])=VV[40],VV[39]);
  (ECL_CONS_CAR(VV[38])=VV[39],VV[38]);
  (ECL_CONS_CDR(VV[38])=ECL_NIL,VV[38]);
  (ECL_CONS_CAR(VV[35])=VV[36],VV[35]);
  (ECL_CONS_CDR(VV[35])=VV[38],VV[35]);
  (ECL_CONS_CAR(VV[32])=VV[33],VV[32]);
  (ECL_CONS_CDR(VV[32])=VV[35],VV[32]);
  (ECL_CONS_CAR(VV[29])=VV[30],VV[29]);
  (ECL_CONS_CDR(VV[29])=VV[32],VV[29]);
  (ECL_CONS_CAR(VV[25])=VV[26],VV[25]);
  (ECL_CONS_CDR(VV[25])=VV[29],VV[25]);
  (ECL_CONS_CAR(VV[23])=VV[24],VV[23]);
  (ECL_CONS_CDR(VV[23])=VV[25],VV[23]);
  (ECL_CONS_CAR(VV[21])=VV[22],VV[21]);
  (ECL_CONS_CDR(VV[21])=VV[23],VV[21]);
  (ECL_CONS_CAR(VV[19])=VV[20],VV[19]);
  (ECL_CONS_CDR(VV[19])=VV[21],VV[19]);
  (ECL_CONS_CAR(VV[17])=VV[18],VV[17]);
  (ECL_CONS_CDR(VV[17])=VV[19],VV[17]);
  (ECL_CONS_CAR(VV[15])=VV[16],VV[15]);
  (ECL_CONS_CDR(VV[15])=VV[17],VV[15]);
  (ECL_CONS_CAR(VV[13])=VV[14],VV[13]);
  (ECL_CONS_CDR(VV[13])=VV[15],VV[13]);
  ecl_cmp_defun(VV[65]);                          /*  OPTIMIZABLE-CONSTANTS-LIST */
}
