예제 #1
0
static int Cyc_RenameTemps_rename_visit_f2(struct Cyc_RenameTemps_Env*env,struct Cyc_Absyn_Stmt*s){struct Cyc_Absyn_Stmt*_T0;int*_T1;unsigned _T2;struct Cyc_RenameTemps_Env*_T3;struct Cyc_Absyn_Decl*_T4;int*_T5;unsigned _T6;struct Cyc_Absyn_Vardecl*_T7;struct _tuple0*_T8;int _T9;struct Cyc_RenameTemps_Env*_TA;int _TB;int _TC;struct Cyc_RenameTemps_Env*_TD;struct Cyc_Dict_Dict(*_TE)(struct Cyc_Dict_Dict,struct _tuple0*,void*);struct Cyc_Dict_Dict(*_TF)(struct Cyc_Dict_Dict,void*,void*);struct Cyc_RenameTemps_Env*_T10;struct Cyc_Dict_Dict _T11;struct Cyc_Absyn_Vardecl*_T12;struct _tuple0*_T13;void*_T14;struct Cyc_Absyn_Vardecl*_T15;struct Cyc_Absyn_Decl*_T16;struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct*_T17;struct Cyc_Absyn_Vardecl*_T18;struct Cyc_Absyn_Vardecl*_T19;struct Cyc_Absyn_Exp*_T1A;unsigned _T1B;struct Cyc_RenameTemps_Env*_T1C;struct Cyc_Absyn_Vardecl*_T1D;struct Cyc_Absyn_Exp*_T1E;struct Cyc_RenameTemps_Env*_T1F;struct Cyc_Absyn_Fndecl*_T20;struct Cyc_Absyn_Stmt*_T21;struct Cyc_Warn_String_Warn_Warg_struct _T22;int(*_T23)(struct _fat_ptr);void*(*_T24)(struct _fat_ptr);struct _fat_ptr _T25;struct Cyc_Absyn_Stmt*_T26;int*_T27;int _T28;void(*_T29)(int(*)(struct Cyc_RenameTemps_Env*,struct Cyc_Absyn_Exp*),int(*)(struct Cyc_RenameTemps_Env*,struct Cyc_Absyn_Stmt*),struct Cyc_RenameTemps_Env*,struct Cyc_Absyn_Stmt*);void(*_T2A)(int(*)(void*,struct Cyc_Absyn_Exp*),int(*)(void*,struct Cyc_Absyn_Stmt*),void*,struct Cyc_Absyn_Stmt*);struct Cyc_RenameTemps_Env*_T2B;struct Cyc_Absyn_Stmt*_T2C;struct Cyc_RenameTemps_Env*_T2D;struct Cyc_Absyn_Stmt*_T2E;int*_T2F;unsigned _T30;_T0=s;{
void*_T31=_T0->r;struct Cyc_Absyn_Stmt*_T32;struct Cyc_Absyn_Stmt*_T33;struct Cyc_Absyn_Decl*_T34;_T1=(int*)_T31;_T2=*_T1;switch(_T2){case 12:{struct Cyc_Absyn_Decl_s_Absyn_Raw_stmt_struct*_T35=(struct Cyc_Absyn_Decl_s_Absyn_Raw_stmt_struct*)_T31;_T34=_T35->f1;_T33=_T35->f2;}{struct Cyc_Absyn_Decl*d=_T34;struct Cyc_Absyn_Stmt*s1=_T33;_T3=env;{
# 80
struct Cyc_RenameTemps_Env old_env=*_T3;
_TL10: if(1)goto _TL11;else{goto _TL12;}
_TL11: _T4=d;{void*_T35=_T4->r;struct Cyc_Absyn_Fndecl*_T36;struct Cyc_Absyn_Vardecl*_T37;_T5=(int*)_T35;_T6=*_T5;switch(_T6){case 0:{struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct*_T38=(struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct*)_T35;_T37=_T38->f1;}{struct Cyc_Absyn_Vardecl*vd=_T37;_T7=vd;_T8=_T7->name;_T9=
# 84
Cyc_RenameTemps_is_temp_var(_T8);if(!_T9)goto _TL14;_TA=env;_TB=_TA->next_num;
_TA->next_num=_TB + 1;_TC=_TB;{void*v=Cyc_RenameTemps_local_temp_var(_TC);_TD=env;_TF=Cyc_Dict_insert;{
struct Cyc_Dict_Dict(*_T38)(struct Cyc_Dict_Dict,struct _tuple0*,void*)=(struct Cyc_Dict_Dict(*)(struct Cyc_Dict_Dict,struct _tuple0*,void*))_TF;_TE=_T38;}_T10=env;_T11=_T10->d;_T12=vd;_T13=_T12->name;_T14=v;_TD->d=_TE(_T11,_T13,_T14);_T15=vd;{
struct Cyc_Absyn_Vardecl vd2=*_T15;
vd2.name=Cyc_Absyn_binding2qvar(v);_T16=d;{struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct*_T38=_cycalloc(sizeof(struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct));_T38->tag=0;{struct Cyc_Absyn_Vardecl*_T39=_cycalloc(sizeof(struct Cyc_Absyn_Vardecl));
*_T39=vd2;_T18=(struct Cyc_Absyn_Vardecl*)_T39;}_T38->f1=_T18;_T17=(struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct*)_T38;}_T16->r=(void*)_T17;}}goto _TL15;_TL14: _TL15: _T19=vd;_T1A=_T19->initializer;_T1B=(unsigned)_T1A;
# 92
if(!_T1B)goto _TL16;_T1C=env;_T1D=vd;_T1E=_T1D->initializer;
Cyc_RenameTemps_rename_exp(_T1C,_T1E);goto _TL17;_TL16: _TL17: goto _LL7;}case 1:{struct Cyc_Absyn_Fn_d_Absyn_Raw_decl_struct*_T38=(struct Cyc_Absyn_Fn_d_Absyn_Raw_decl_struct*)_T35;_T36=_T38->f1;}{struct Cyc_Absyn_Fndecl*fd=_T36;_T1F=env;_T20=fd;_T21=_T20->body;
# 97
Cyc_RenameTemps_rename_stmt(_T1F,_T21);goto _LL7;}default:{struct Cyc_Warn_String_Warn_Warg_struct _T38;_T38.tag=0;
_T38.f1=_tag_fat("RenameTemps: local decl not a var or function",sizeof(char),46U);_T22=_T38;}{struct Cyc_Warn_String_Warn_Warg_struct _T38=_T22;void*_T39[1];_T39[0]=& _T38;_T24=Cyc_Warn_impos2;{int(*_T3A)(struct _fat_ptr)=(int(*)(struct _fat_ptr))_T24;_T23=_T3A;}_T25=_tag_fat(_T39,sizeof(void*),1);_T23(_T25);}}_LL7:;}_T26=s1;{
# 100
void*_T35=_T26->r;struct Cyc_Absyn_Stmt*_T36;struct Cyc_Absyn_Decl*_T37;_T27=(int*)_T35;_T28=*_T27;if(_T28!=12)goto _TL18;{struct Cyc_Absyn_Decl_s_Absyn_Raw_stmt_struct*_T38=(struct Cyc_Absyn_Decl_s_Absyn_Raw_stmt_struct*)_T35;_T37=_T38->f1;_T36=_T38->f2;}{struct Cyc_Absyn_Decl*d2=_T37;struct Cyc_Absyn_Stmt*s2=_T36;
d=d2;s1=s2;goto _TL10;}_TL18: _T2A=Cyc_Absyn_visit_stmt;{
# 103
void(*_T38)(int(*)(struct Cyc_RenameTemps_Env*,struct Cyc_Absyn_Exp*),int(*)(struct Cyc_RenameTemps_Env*,struct Cyc_Absyn_Stmt*),struct Cyc_RenameTemps_Env*,struct Cyc_Absyn_Stmt*)=(void(*)(int(*)(struct Cyc_RenameTemps_Env*,struct Cyc_Absyn_Exp*),int(*)(struct Cyc_RenameTemps_Env*,struct Cyc_Absyn_Stmt*),struct Cyc_RenameTemps_Env*,struct Cyc_Absyn_Stmt*))_T2A;_T29=_T38;}_T2B=env;_T2C=s1;_T29(Cyc_RenameTemps_rename_visit_f1,Cyc_RenameTemps_rename_visit_f2,_T2B,_T2C);_T2D=env;
*_T2D=old_env;
return 0;;}goto _TL10;_TL12:;}}case 2:{struct Cyc_Absyn_Seq_s_Absyn_Raw_stmt_struct*_T35=(struct Cyc_Absyn_Seq_s_Absyn_Raw_stmt_struct*)_T31;_T33=_T35->f1;_T32=_T35->f2;}{struct Cyc_Absyn_Stmt*s1=_T33;struct Cyc_Absyn_Stmt*s2=_T32;
# 109
_TL1A: if(1)goto _TL1B;else{goto _TL1C;}
_TL1B: Cyc_RenameTemps_rename_stmt(env,s1);
LOOP2: _T2E=s2;{
void*_T35=_T2E->r;struct Cyc_Absyn_Stmt*_T36;struct Cyc_Absyn_Stmt*_T37;_T2F=(int*)_T35;_T30=*_T2F;switch(_T30){case 2:{struct Cyc_Absyn_Seq_s_Absyn_Raw_stmt_struct*_T38=(struct Cyc_Absyn_Seq_s_Absyn_Raw_stmt_struct*)_T35;_T37=_T38->f1;_T36=_T38->f2;}{struct Cyc_Absyn_Stmt*s3=_T37;struct Cyc_Absyn_Stmt*s4=_T36;
# 114
s1=s3;s2=s4;goto _TL1A;}case 13:{struct Cyc_Absyn_Label_s_Absyn_Raw_stmt_struct*_T38=(struct Cyc_Absyn_Label_s_Absyn_Raw_stmt_struct*)_T35;_T37=_T38->f2;}{struct Cyc_Absyn_Stmt*s3=_T37;
# 116
s2=s3;goto LOOP2;}default:
 Cyc_RenameTemps_rename_stmt(env,s2);return 0;};}goto _TL1A;_TL1C:;}default:
# 120
 return 1;};}}
예제 #2
0
struct Cyc_List_List*Cyc_RenameTemps_rename(struct Cyc_List_List*tds){struct Cyc_RenameTemps_Env _T0;struct Cyc_Dict_Dict(*_T1)(int(*)(struct _tuple0*,struct _tuple0*));struct Cyc_Dict_Dict(*_T2)(int(*)(void*,void*));int(*_T3)(struct _tuple0*,struct _tuple0*);struct Cyc_List_List*_T4;void*_T5;struct Cyc_Absyn_Decl*_T6;int*_T7;unsigned _T8;struct Cyc_Absyn_Vardecl*_T9;struct _tuple0*_TA;int _TB;int _TC;int _TD;struct Cyc_Dict_Dict(*_TE)(struct Cyc_Dict_Dict,struct _tuple0*,void*);struct Cyc_Dict_Dict(*_TF)(struct Cyc_Dict_Dict,void*,void*);struct Cyc_RenameTemps_Env _T10;struct Cyc_Dict_Dict _T11;struct Cyc_Absyn_Vardecl*_T12;struct _tuple0*_T13;void*_T14;struct Cyc_Absyn_Vardecl*_T15;struct Cyc_List_List*_T16;void*_T17;struct Cyc_Absyn_Decl*_T18;struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct*_T19;struct Cyc_Absyn_Vardecl*_T1A;struct Cyc_Absyn_Vardecl*_T1B;struct Cyc_Absyn_Exp*_T1C;unsigned _T1D;struct Cyc_RenameTemps_Env*_T1E;struct Cyc_RenameTemps_Env*_T1F;struct Cyc_Absyn_Vardecl*_T20;struct Cyc_Absyn_Exp*_T21;struct Cyc_RenameTemps_Env*_T22;struct Cyc_RenameTemps_Env*_T23;struct Cyc_Absyn_Fndecl*_T24;struct Cyc_Absyn_Stmt*_T25;struct Cyc_List_List*_T26;struct Cyc_List_List*_T27;{struct Cyc_RenameTemps_Env _T28;_T2=Cyc_Dict_empty;{
struct Cyc_Dict_Dict(*_T29)(int(*)(struct _tuple0*,struct _tuple0*))=(struct Cyc_Dict_Dict(*)(int(*)(struct _tuple0*,struct _tuple0*)))_T2;_T1=_T29;}_T3=Cyc_Absyn_qvar_cmp;_T28.d=_T1(_T3);_T28.next_num=0;_T0=_T28;}{struct Cyc_RenameTemps_Env env=_T0;{
struct Cyc_List_List*tds2=tds;_TL21: if(tds2!=0)goto _TL1F;else{goto _TL20;}
_TL1F: _T4=tds2;_T5=_T4->hd;_T6=(struct Cyc_Absyn_Decl*)_T5;{void*_T28=_T6->r;struct Cyc_Absyn_Fndecl*_T29;struct Cyc_Absyn_Vardecl*_T2A;_T7=(int*)_T28;_T8=*_T7;switch(_T8){case 0:{struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct*_T2B=(struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct*)_T28;_T2A=_T2B->f1;}{struct Cyc_Absyn_Vardecl*vd=_T2A;_T9=vd;_TA=_T9->name;_TB=
# 135
Cyc_RenameTemps_is_temp_var(_TA);if(!_TB)goto _TL23;_TC=env.next_num;
env.next_num=_TC + 1;_TD=_TC;{void*v=Cyc_RenameTemps_toplevel_temp_var(_TD);_TF=Cyc_Dict_insert;{
struct Cyc_Dict_Dict(*_T2B)(struct Cyc_Dict_Dict,struct _tuple0*,void*)=(struct Cyc_Dict_Dict(*)(struct Cyc_Dict_Dict,struct _tuple0*,void*))_TF;_TE=_T2B;}_T10=env;_T11=_T10.d;_T12=vd;_T13=_T12->name;_T14=v;env.d=_TE(_T11,_T13,_T14);_T15=vd;{
struct Cyc_Absyn_Vardecl vd2=*_T15;
vd2.name=Cyc_Absyn_binding2qvar(v);_T16=tds2;_T17=_T16->hd;_T18=(struct Cyc_Absyn_Decl*)_T17;{struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct*_T2B=_cycalloc(sizeof(struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct));_T2B->tag=0;{struct Cyc_Absyn_Vardecl*_T2C=_cycalloc(sizeof(struct Cyc_Absyn_Vardecl));
*_T2C=vd2;_T1A=(struct Cyc_Absyn_Vardecl*)_T2C;}_T2B->f1=_T1A;_T19=(struct Cyc_Absyn_Var_d_Absyn_Raw_decl_struct*)_T2B;}_T18->r=(void*)_T19;}}goto _TL24;_TL23: _TL24: _T1B=vd;_T1C=_T1B->initializer;_T1D=(unsigned)_T1C;
# 143
if(!_T1D)goto _TL25;_T1E=& env;_T1F=(struct Cyc_RenameTemps_Env*)_T1E;_T20=vd;_T21=_T20->initializer;
Cyc_RenameTemps_rename_exp(_T1F,_T21);goto _TL26;_TL25: _TL26: goto _LL0;}case 1:{struct Cyc_Absyn_Fn_d_Absyn_Raw_decl_struct*_T2B=(struct Cyc_Absyn_Fn_d_Absyn_Raw_decl_struct*)_T28;_T29=_T2B->f1;}{struct Cyc_Absyn_Fndecl*fd=_T29;
# 148
struct Cyc_RenameTemps_Env env2=env;
env.next_num=0;_T22=& env;_T23=(struct Cyc_RenameTemps_Env*)_T22;_T24=fd;_T25=_T24->body;
Cyc_RenameTemps_rename_stmt(_T23,_T25);
env=env2;goto _LL0;}default: goto _LL0;}_LL0:;}_T26=tds2;
# 132
tds2=_T26->tl;goto _TL21;_TL20:;}_T27=tds;
# 155
return _T27;}}
예제 #3
0
static long Cyc_Callgraph_visit_cg_f1(struct _tuple11 * env,struct Cyc_Absyn_Exp * e) {
  struct Cyc_Absyn_Exp * _T0;
  int * _T1;
  int _T2;
  struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct * _T3;
  void * _T4;
  int * _T5;
  unsigned int _T6;
  void * _T7;
  struct Cyc_Absyn_Fndecl * _T8;
  void * _T9;
  struct Cyc_Absyn_Vardecl * _TA;
  struct _tuple11 * _TB;
  struct _handler_cons * _TC;
  int _TD;
  struct Cyc_Set_Set * (* _TE)(struct Cyc_Set_Set *,struct Cyc_Absyn_Fndecl *);
  struct Cyc_Set_Set * (* _TF)(struct Cyc_Set_Set *,void *);
  struct Cyc_Set_Set * _T10;
  struct Cyc_Absyn_Fndecl * (* _T11)(struct Cyc_Hashtable_Table *,struct _tuple0 *);
  void * (* _T12)(struct Cyc_Hashtable_Table *,void *);
  struct Cyc_Absyn_Fndecl * _T13;
  struct _tuple11 * _T14;
  struct _tuple11 _T15;
  void * _T16;
  struct Cyc_Core_Not_found_exn_struct * _T17;
  char * _T18;
  char * _T19;
  struct _tuple0 * name;
  _T0 = e;
  { void * _T1A = _T0->r;
    struct Cyc_Absyn_Vardecl * _T1B;
    struct Cyc_Absyn_Fndecl * _T1C;
    _T1 = (int *)_T1A;
    _T2 = *_T1;
    if (_T2 != 1) { goto _TL0;
    }
    _T3 = (struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct *)_T1A;
    _T4 = _T3->f1;
    _T5 = (int *)_T4;
    _T6 = *_T5;
    switch (_T6) {
    case 2: 
      { struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct * _T1D = (struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct *)_T1A;
	_T7 = _T1D->f1;
	{ struct Cyc_Absyn_Funname_b_Absyn_Binding_struct * _T1E = (struct Cyc_Absyn_Funname_b_Absyn_Binding_struct *)_T7;
	  _T1C = _T1E->f1;
	}
      }{ struct Cyc_Absyn_Fndecl * fd = _T1C;
	_T8 = fd;
	name = _T8->name;
	goto _LL0;
      }
    case 1: 
      { struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct * _T1D = (struct Cyc_Absyn_Var_e_Absyn_Raw_exp_struct *)_T1A;
	_T9 = _T1D->f1;
	{ struct Cyc_Absyn_Global_b_Absyn_Binding_struct * _T1E = (struct Cyc_Absyn_Global_b_Absyn_Binding_struct *)_T9;
	  _T1B = _T1E->f1;
	}
      }{ struct Cyc_Absyn_Vardecl * vd = _T1B;
	_TA = vd;
	name = _TA->name;
	goto _LL0;
      }
    default: 
      goto _LL5;
    }
    goto _TL1;
    _TL0: _LL5: return 1;
    _TL1: _LL0: ;
  }{ struct Cyc_Set_Set * _T1A;
    struct Cyc_Hashtable_Table * _T1B;
    _TB = env;
    { struct _tuple11 _T1C = *_TB;
      _T1B = _T1C.f0;
      _T1A = _T1C.f1;
    }{ struct Cyc_Hashtable_Table * fds = _T1B;
      struct Cyc_Set_Set * s = _T1A;
      { struct _handler_cons _T1C;
	_TC = &_T1C;
	_push_handler(_TC);
	{ int _T1D = 0;
	  _TD = setjmp(_T1C.handler);
	  if (! _TD) { goto _TL3;
	  }
	  _T1D = 1;
	  goto _TL4;
	  _TL3: _TL4: if (_T1D) { goto _TL5;
	  }else { goto _TL7;
	  }
	  _TL7: _TF = Cyc_Set_insert;
	  { struct Cyc_Set_Set * (* _T1E)(struct Cyc_Set_Set *,struct Cyc_Absyn_Fndecl *) = (struct Cyc_Set_Set * (*)(struct Cyc_Set_Set *,
														      struct Cyc_Absyn_Fndecl *))_TF;
	    _TE = _T1E;
	  }_T10 = s;
	  _T12 = Cyc_Hashtable_lookup;
	  { struct Cyc_Absyn_Fndecl * (* _T1E)(struct Cyc_Hashtable_Table *,
					       struct _tuple0 *) = (struct Cyc_Absyn_Fndecl * (*)(struct Cyc_Hashtable_Table *,
												  struct _tuple0 *))_T12;
	    _T11 = _T1E;
	  }_T13 = _T11(fds,name);
	  s = _TE(_T10,_T13);
	  _T14 = env;
	  { struct _tuple11 _T1E;
	    _T1E.f0 = fds;
	    _T1E.f1 = s;
	    _T15 = _T1E;
	  }*_T14 = _T15;
	  _pop_handler();
	  goto _TL6;
	  _TL5: _T16 = Cyc_Core_get_exn_thrown();
	  { void * _T1E = (void *)_T16;
	    void * _T1F;
	    _T17 = (struct Cyc_Core_Not_found_exn_struct *)_T1E;
	    _T18 = _T17->tag;
	    _T19 = Cyc_Core_Not_found;
	    if (_T18 != _T19) { goto _TL8;
	    }
	    goto _LLA;
	    _TL8: _T1F = _T1E;
	    { void * exn = _T1F;
	      _rethrow(exn);
	    }_LLA: ;
	  }_TL6: ;
	}
      }return 0;
    }
  }
}