sig
type temp_id = int
and identifier = string
and field = Il.identifier * Ctt_abstree.c_type
and il_switch_label =
Il1.il_switch_label =
CASE of Big_int.big_int
| DEFAULT
and il_if_type = Il1.il_if_type = IFNOT | IFTRUE
and il_binop =
Il1.il_binop =
ILbinTimes
| ILbinDiv
| ILbinPlusVV
| ILbinMinusVV
| ILbinPlusPV
| ILbinMinusPP
| ILbinMinusPV
| ILbinModulo
| ILbinLshift
| ILbinRshift
| ILbinLogAnd
| ILbinLogOr
| ILbinIntAnd
| ILbinIntOr
| ILbinIntXor
| ILbinLessThan
| ILbinLessEqual
| ILbinGtrThan
| ILbinGtrEqual
| ILbinEqual
| ILbinNotEqual
and il_lvalue =
Il1.il_lvalue =
ILlvPtr of Il.temp_id
| ILlvVar of Il.identifier * Ctt_abstree.c_type
| ILlvTemp of Il.temp_id
and il_expr =
Il1.il_expr =
ILexpCoerce of Ctt_abstree.c_type * Il.temp_id
| ILexpConstant of Cttm_abstree.c_constants
| ILexpUndefined
| ILexpBinop of Il.il_binop * Il.temp_id * Il.temp_id
| ILexpUnaryop of Cttm_abstree.unaryop * Il.temp_id
| ILexpInvoke of Il.il_lvalue * Il.temp_id list
| ILexpAddress of Il.il_lvalue * Il.field list
| ILexpArgument of int
| ILexpIdent of Il.temp_id
and il =
ILstmtIf of Il.il_if_type * Il.temp_id * int
| ILstmtSwitch of Il.temp_id * (Il.il_switch_label * int) list
| ILstmtGoto of int
| ILstmtReturn of Il.temp_id option
| ILstmtAssign of Il.temp_id * Ctt_abstree.c_type * Il.il_expr
| ILstmtRead of Il.temp_id * Ctt_abstree.c_type * Il.il_lvalue *
Il.field list
| ILstmtWrite of Il.il_lvalue * Il.field list * Il.temp_id
| ILstmtInitialize of Il.temp_id * Ctt_abstree.c_type *
Cttm_abstree.cttm_initializer option
| ILstmtSequence of Il.il list
| ILstmtParallel of Il.il list
and il_basic_block = {
predecessor : int list;
successor : int list;
immediate_dominator : int;
nest_level : int;
mutable phi_function :
(Il.temp_id * Ctt_abstree.c_type * Il.temp_id array) list;
mutable code : Il.il list;
}
and il_variable_attribute = {
original_name : string option;
variable_type : Ctt_abstree.c_type;
storage_class : Ctt_abstree.local_storage_class;
}
and il_function = {
body : Il.il_basic_block array;
max_variable_number : int;
variable_environment : Il.il_variable_attribute array;
arguments : (Il.identifier * Ctt_abstree.c_type) array;
}
end