diff --git a/compiler/ml_accurate_gc.m b/compiler/ml_accurate_gc.m index 34ac80833..7b72883b9 100644 --- a/compiler/ml_accurate_gc.m +++ b/compiler/ml_accurate_gc.m @@ -420,7 +420,7 @@ ml_gen_make_type_info_var(Type, Context, TypeInfoVar, TypeInfoGoals, !Info) :- fnoi_locals :: cord(mlds_local_var_defn), % A counter used to allocate variable names. - fnoi_next_id :: counter + fnoi_next_id :: ucounter ). % Replace all heap allocation (new_object instructions) with stack @@ -432,7 +432,7 @@ ml_gen_make_type_info_var(Type, Context, TypeInfoVar, TypeInfoGoals, !Info) :- list(mlds_local_var_defn)::out) is det. fixup_newobj(ModuleName, Stmt0, Stmt, Defns) :- - Info0 = fixup_newobj_info(ModuleName, cord.init, counter.init(0)), + Info0 = fixup_newobj_info(ModuleName, cord.init, counter.uinit(0u)), fixup_newobj_in_stmt(Stmt0, Stmt, Info0, Info), Defns = cord.to_list(Info ^ fnoi_locals). @@ -528,7 +528,7 @@ fixup_newobj_in_atomic_statement(Stmt0, Stmt, !Fixup) :- % length of the array is. We initialize it with null pointers and then % later generate assignment statements to fill in the values properly % (see below). - counter.allocate(Id, !.Fixup ^ fnoi_next_id, NextId), + counter.uallocate(Id, !.Fixup ^ fnoi_next_id, NextId), VarName = lvn_comp_var(lvnc_new_obj(Id)), VarType = mlds_array_type(mlds_generic_type), NullPointers = list.duplicate(list.length(ArgRvalsTypes), diff --git a/compiler/ml_args_util.m b/compiler/ml_args_util.m index 722f42113..9ca96bf8b 100644 --- a/compiler/ml_args_util.m +++ b/compiler/ml_args_util.m @@ -275,7 +275,7 @@ code_model::in, prog_context::in, proc_id_in_tscc::in, var_table::in, list(prog_var)::in, list(mer_type)::in, list(mer_mode)::in, list(var_mvar_type_mode)::out, - map(int, string)::in, map(int, string)::out, + map(uint, string)::in, map(uint, string)::out, list(mlds_argument)::out, mlds_func_params::out, assoc_list(mlds_rval, mlds_type)::out, assoc_list(mlds_local_var_name, mlds_type)::out, @@ -353,6 +353,7 @@ :- import_module require. :- import_module term. :- import_module term_context. +:- import_module uint. %---------------------------------------------------------------------------% % @@ -784,8 +785,8 @@ ml_gen_tscc_arg_params(ModuleInfo, PredOrFunc, CodeModel, Context, CopyOutWhen = compute_when_to_copy_out(CopyOut, CodeModel, PredOrFunc), package_vars_types_modes(ModuleInfo, VarTable, Vars, Types, Modes, ArgTuples), - NextInArgNum0 = 1, - NextOutArgNum0 = 1, + NextInArgNum0 = 1u, + NextOutArgNum0 = 1u, ml_gen_tscc_arg_decls(ModuleInfo, CopyOutWhen, Context, ProcIdInTscc, ArgTuples, NextInArgNum0, NextOutArgNum0, !OutArgNames, TsccInArgs, TsccArgs, ReturnRvalsTypes0, OutVarsTypes0, @@ -832,7 +833,7 @@ ml_gen_tscc_arg_params(ModuleInfo, PredOrFunc, CodeModel, Context, :- pred ml_gen_tscc_arg_decls(module_info::in, copy_out_when::in, prog_context::in, proc_id_in_tscc::in, list(var_mvar_type_mode)::in, - int::in, int::in, map(int, string)::in, map(int, string)::out, + uint::in, uint::in, map(uint, string)::in, map(uint, string)::out, list(mlds_argument)::out, list(mlds_argument)::out, assoc_list(mlds_rval, mlds_type)::out, assoc_list(mlds_local_var_name, mlds_type)::out, @@ -880,7 +881,7 @@ ml_gen_tscc_arg_decls(ModuleInfo, CopyOutWhen, Context, ProcIdInTscc, ( HeadMode = top_in, InArgNum = NextInArgNum0, - NextInArgNum = NextInArgNum0 + 1, + NextInArgNum = NextInArgNum0 + 1u, NextOutArgNum = NextOutArgNum0, HeadTsccInVar = lvn_tscc_proc_input_var(ProcIdInTscc, InArgNum, HeadVarNameStr), @@ -911,7 +912,7 @@ ml_gen_tscc_arg_decls(ModuleInfo, CopyOutWhen, Context, ProcIdInTscc, HeadMode = top_out, OutArgNum = NextOutArgNum0, NextInArgNum = NextInArgNum0, - NextOutArgNum = NextOutArgNum0 + 1, + NextOutArgNum = NextOutArgNum0 + 1u, ( if map.search(!.OutArgNames, OutArgNum, OldOutArgName) then OutArgName = OldOutArgName else diff --git a/compiler/ml_call_gen.m b/compiler/ml_call_gen.m index be07a5749..07e9cbdaa 100644 --- a/compiler/ml_call_gen.m +++ b/compiler/ml_call_gen.m @@ -103,6 +103,7 @@ :- import_module require. :- import_module set_tree234. :- import_module term. +:- import_module uint. %---------------------------------------------------------------------------% % @@ -425,9 +426,10 @@ ml_gen_plain_tail_call(CalleePredProcId, CodeModel, Context, ArgVars, Features, SelectorVar = lvn_comp_var(lvnc_tscc_proc_selector), SelectorLval = ml_local_var(SelectorVar, IntType), + TsccProcNumI = uint.cast_to_int(TsccProcNum), SetSelectorStmt = ml_stmt_atomic( assign(SelectorLval, - ml_const(mlconst_int(TsccProcNum))), + ml_const(mlconst_int(TsccProcNumI))), Context), SetSelectorStmts = [SetSelectorStmt] ), @@ -868,12 +870,12 @@ ml_gen_success_cont(OutputArgLvalsTypes, Context, NewCont, ContDecls, !Info) :- mlds_func_params::out) is det. ml_gen_cont_params(OutputArgLvalsTypes, Params) :- - ml_gen_cont_params_loop(OutputArgLvalsTypes, 1, Args0), + ml_gen_cont_params_loop(OutputArgLvalsTypes, 1u, Args0), ml_declare_env_ptr_arg(EnvPtrArg), Args = Args0 ++ [EnvPtrArg], Params = mlds_func_params(Args, []). -:- pred ml_gen_cont_params_loop(assoc_list(mlds_lval, mlds_type)::in, int::in, +:- pred ml_gen_cont_params_loop(assoc_list(mlds_lval, mlds_type)::in, uint::in, list(mlds_argument)::out) is det. ml_gen_cont_params_loop([], _, []). @@ -886,16 +888,16 @@ ml_gen_cont_params_loop([_Lval - Type | LvalsTypes], ArgNum, % responsibility of filling this in properly if needed. GCStmt = gc_no_stmt, Argument = mlds_argument(ArgName, Type, GCStmt), - ml_gen_cont_params_loop(LvalsTypes, ArgNum + 1, Arguments). + ml_gen_cont_params_loop(LvalsTypes, ArgNum + 1u, Arguments). :- pred ml_gen_copy_args_to_locals(assoc_list(mlds_lval, mlds_type)::in, prog_context::in, list(mlds_stmt)::out) is det. ml_gen_copy_args_to_locals(ArgLvalsTypes, Context, CopyStmts) :- - ml_gen_copy_args_to_locals_loop(ArgLvalsTypes, 1, Context, CopyStmts). + ml_gen_copy_args_to_locals_loop(ArgLvalsTypes, 1u, Context, CopyStmts). :- pred ml_gen_copy_args_to_locals_loop(assoc_list(mlds_lval, mlds_type)::in, - int::in, prog_context::in, list(mlds_stmt)::out) is det. + uint::in, prog_context::in, list(mlds_stmt)::out) is det. ml_gen_copy_args_to_locals_loop([], _, _, []). ml_gen_copy_args_to_locals_loop([LocalLvalType | LocalLvalsTypes], ArgNum, @@ -904,7 +906,7 @@ ml_gen_copy_args_to_locals_loop([LocalLvalType | LocalLvalsTypes], ArgNum, ArgName = lvn_comp_var(lvnc_arg(ArgNum)), ArgLval = ml_local_var(ArgName, Type), Stmt = ml_gen_assign(LocalLval, ml_lval(ArgLval), Context), - ml_gen_copy_args_to_locals_loop(LocalLvalsTypes, ArgNum + 1, + ml_gen_copy_args_to_locals_loop(LocalLvalsTypes, ArgNum + 1u, Context, Stmts). %---------------------------------------------------------------------------% diff --git a/compiler/ml_closure_gen.m b/compiler/ml_closure_gen.m index 43d9f780f..08fe50f3d 100644 --- a/compiler/ml_closure_gen.m +++ b/compiler/ml_closure_gen.m @@ -117,6 +117,7 @@ :- import_module set_tree234. :- import_module string. :- import_module term. +:- import_module uint. %---------------------------------------------------------------------------% @@ -733,8 +734,9 @@ ml_gen_closure_wrapper(PredId, ProcId, ClosureKind, NumClosureArgs, else unexpected($pred, "list.drop failed") ), - NumWrapperHeadVars = list.length(WrapperHeadVars), - WrapperHeadVarNames = ml_gen_wrapper_head_var_names(1, NumWrapperHeadVars), + NumWrapperHeadVars = list.ulength(WrapperHeadVars), + WrapperHeadVarNames = + ml_gen_wrapper_head_var_names(1u, NumWrapperHeadVars), % We can't generate correct gc statements for the wrapper args, because % we don't have type_infos for the type variables in WrapperBoxedArgTypes. % We handle this by simply not generating such statements, since they are @@ -1015,14 +1017,14 @@ gen_closure_gc_statement(ClosureName, ClosureDeclType, ml_gen_gc_statement_poly(ClosureName, ClosureDeclType, ClosureActualType, Context, ClosureGCStmt, !Info). -:- func ml_gen_wrapper_head_var_names(int, int) = list(mlds_local_var_name). +:- func ml_gen_wrapper_head_var_names(uint, uint) = list(mlds_local_var_name). ml_gen_wrapper_head_var_names(Num, Max) = VarNames :- ( if Num > Max then VarNames = [] else HeadVarName = lvn_comp_var(lvnc_wrapper_arg(Num)), - TailVarNames = ml_gen_wrapper_head_var_names(Num + 1, Max), + TailVarNames = ml_gen_wrapper_head_var_names(Num + 1u, Max), VarNames = [HeadVarName | TailVarNames] ). diff --git a/compiler/ml_code_util.m b/compiler/ml_code_util.m index 726df1130..0c9323e92 100644 --- a/compiler/ml_code_util.m +++ b/compiler/ml_code_util.m @@ -844,7 +844,7 @@ ml_gen_pred_label_from_rtti(_ModuleInfo, RttiProcLabel, MLDS_PredLabel, ml_gen_new_label(Label, !Info) :- ml_gen_info_new_label(LabelNum, !Info), - Label = mlds_label("label_" ++ string.int_to_string(LabelNum)). + Label = mlds_label("label_" ++ string.uint_to_string(LabelNum)). %---------------------------------------------------------------------------% % diff --git a/compiler/ml_foreign_proc_gen.m b/compiler/ml_foreign_proc_gen.m index a03b62cac..39644a7af 100644 --- a/compiler/ml_foreign_proc_gen.m +++ b/compiler/ml_foreign_proc_gen.m @@ -500,7 +500,7 @@ ml_gen_hash_define_mr_alloc_id(C_Codes, Context, HashDefine, HashUndef, ml_gen_info_get_pred_proc_id(!.Info, PredProcId), ml_gen_proc_label(ModuleInfo, PredProcId, _Module, ProcLabel), ml_gen_info_get_global_data(!.Info, GlobalData0), - ml_gen_alloc_site(mlds_function_name(ProcLabel), no, 0, Context, + ml_gen_alloc_site(mlds_function_name(ProcLabel), no, 0u, Context, AllocId, GlobalData0, GlobalData), ml_gen_info_set_global_data(GlobalData, !Info), HashDefine = [ diff --git a/compiler/ml_gen_info.m b/compiler/ml_gen_info.m index bd0968a87..6e909c2c6 100644 --- a/compiler/ml_gen_info.m +++ b/compiler/ml_gen_info.m @@ -69,7 +69,7 @@ % This is used to give unique names to the case labels generated % for dense switch statements. % -:- type label_num == int. +:- type label_num == uint. :- pred ml_gen_info_new_label(label_num::out, ml_gen_info::in, ml_gen_info::out) is det. @@ -98,7 +98,7 @@ % Generate a new `cond' variable number. % -:- type cond_seq ---> cond_seq(int). +:- type cond_seq ---> cond_seq(uint). :- pred ml_gen_info_new_cond_var(cond_seq::out, ml_gen_info::in, ml_gen_info::out) is det. @@ -106,7 +106,7 @@ % to the local variables generated by ml_gen_box_or_unbox_lval, which are % used to handle boxing/unboxing argument conversions. % -:- type conv_seq ---> conv_seq(int). +:- type conv_seq ---> conv_seq(uint). :- pred ml_gen_info_new_conv_var(conv_seq::out, ml_gen_info::in, ml_gen_info::out) is det. @@ -445,12 +445,12 @@ :- type ml_gen_tscc_info ---> ml_gen_tscc_info( - mgti_func_label_counter :: counter, - mgti_label_counter :: counter, - mgti_aux_var_counter :: counter, - mgti_cond_var_counter :: counter, - mgti_conv_var_counter :: counter, - mgti_packed_word_counter :: counter, + mgti_func_label_counter :: ucounter, + mgti_label_counter :: ucounter, + mgti_aux_var_counter :: ucounter, + mgti_cond_var_counter :: ucounter, + mgti_conv_var_counter :: ucounter, + mgti_packed_word_counter :: ucounter, mgti_tail_rec_info :: tail_rec_info ). @@ -560,6 +560,7 @@ :- import_module int. :- import_module stack. :- import_module string. +:- import_module uint. :- import_module uint8. %---------------------------------------------------------------------------% @@ -579,35 +580,35 @@ ml_gen_info_put_commit_in_own_func(Info, PutCommitInNestedFunc) :- ml_gen_info_new_label(Label, !Info) :- ml_gen_info_get_label_counter(!.Info, Counter0), - counter.allocate(Label, Counter0, Counter), + counter.uallocate(Label, Counter0, Counter), ml_gen_info_set_label_counter(Counter, !Info). ml_gen_info_new_aux_func_id(MaybeAux, !Info) :- ml_gen_info_get_func_counter(!.Info, Counter0), - counter.allocate(Num, Counter0, Counter), + counter.uallocate(Num, Counter0, Counter), MaybeAux = proc_aux_func(Num), ml_gen_info_set_func_counter(Counter, !Info). ml_gen_info_bump_counters(!Info) :- ml_gen_info_get_func_counter(!.Info, FuncLabelCounter0), - counter.allocate(FuncLabel, FuncLabelCounter0, _), - FuncLabelCounter = counter.init(FuncLabel + 10000), + counter.uallocate(FuncLabel, FuncLabelCounter0, _), + FuncLabelCounter = counter.uinit(FuncLabel + 10000u), ml_gen_info_set_func_counter(FuncLabelCounter, !Info). ml_gen_info_new_aux_var_name(AuxVar, VarName, !Info) :- ml_gen_info_get_aux_var_counter(!.Info, AuxVarCounter0), - counter.allocate(AuxVarNum, AuxVarCounter0, AuxVarCounter), + counter.uallocate(AuxVarNum, AuxVarCounter0, AuxVarCounter), ml_gen_info_set_aux_var_counter(AuxVarCounter, !Info), VarName = lvn_comp_var(lvnc_aux_var(AuxVar, AuxVarNum)). ml_gen_info_new_cond_var(cond_seq(CondNum), !Info) :- ml_gen_info_get_cond_var_counter(!.Info, CondCounter0), - counter.allocate(CondNum, CondCounter0, CondCounter), + counter.uallocate(CondNum, CondCounter0, CondCounter), ml_gen_info_set_cond_var_counter(CondCounter, !Info). ml_gen_info_new_conv_var(conv_seq(ConvNum), !Info) :- ml_gen_info_get_conv_var_counter(!.Info, ConvCounter0), - counter.allocate(ConvNum, ConvCounter0, ConvCounter), + counter.uallocate(ConvNum, ConvCounter0, ConvCounter), ml_gen_info_set_conv_var_counter(ConvCounter, !Info). get_unfilled_filled_packed_words(HeadFilledBitfield, TailFilledBitfields, @@ -624,7 +625,7 @@ get_unfilled_bitfield(FilledBitfield) = Bitfield :- ml_gen_info_new_packed_word_var(LocalVarName, !Info) :- ml_gen_info_get_packed_word_counter(!.Info, PackedWordCounter0), - counter.allocate(PackedWordNum, PackedWordCounter0, PackedWordCounter), + counter.uallocate(PackedWordNum, PackedWordCounter0, PackedWordCounter), LocalVarName = lvnc_packed_word(PackedWordNum), ml_gen_info_set_packed_word_counter(PackedWordCounter, !Info). @@ -705,7 +706,7 @@ generate_tail_rec_start_label(TsccKind, Id) = Label :- ; TsccKind = tscc_self_and_mutual_rec, Id = proc_id_in_tscc(IdNum), - Label = mlds_label(string.format("top_of_proc_%d", [i(IdNum)])) + Label = mlds_label(string.format("top_of_proc_%u", [u(IdNum)])) ). %---------------------------------------------------------------------------% @@ -743,8 +744,8 @@ generate_tail_rec_start_label(TsccKind, Id) = Label :- % depends on the exact route that execution took to there). /* 1 */ mgi_const_var_map :: ml_ground_term_map, -/* 2 */ mgi_func_counter :: counter, -/* 3 */ mgi_conv_var_counter :: counter, +/* 2 */ mgi_func_counter :: ucounter, +/* 3 */ mgi_conv_var_counter :: ucounter, /* 4 */ mgi_used_succeeded_var :: bool, /* 5 */ mgi_closure_wrapper_defns :: list(mlds_function_defn), @@ -860,11 +861,11 @@ generate_tail_rec_start_label(TsccKind, Id) = Label :- % information anymore.) /* 1 */ mgsi_byref_output_vars :: set_of_progvar, -/* 2 */ mgsi_label_counter :: counter, -/* 3 */ mgsi_aux_var_counter :: counter, -/* 4 */ mgsi_cond_var_counter :: counter, +/* 2 */ mgsi_label_counter :: ucounter, +/* 3 */ mgsi_aux_var_counter :: ucounter, +/* 4 */ mgsi_cond_var_counter :: ucounter, -/* 5 */ mgsi_packed_word_counter :: counter, +/* 5 */ mgsi_packed_word_counter :: ucounter, /* 6 */ mgsi_packed_word_map :: packed_word_map, /* 7 */ mgsi_success_cont_stack :: stack(success_cont), @@ -909,12 +910,12 @@ init_ml_gen_tscc_info(ModuleInfo, InSccMap, TsccKind, TsccInfo) :- % for accurate garbage collection does not work properly, % and we will end up generating two C functions with the same name % (see ml_elim_nested.gen_gc_trace_func/8 for details). - counter.init(1, FuncLabelCounter), - counter.init(0, LabelCounter), - counter.init(0, AuxVarCounter), - counter.init(0, CondVarCounter), - counter.init(0, PackedWordCounter), - counter.init(0, ConvVarCounter), + counter.uinit(1u, FuncLabelCounter), + counter.uinit(0u, LabelCounter), + counter.uinit(0u, AuxVarCounter), + counter.uinit(0u, CondVarCounter), + counter.uinit(0u, PackedWordCounter), + counter.uinit(0u, ConvVarCounter), module_info_get_globals(ModuleInfo, Globals), globals.get_target(Globals, Target), @@ -1077,13 +1078,15 @@ ml_gen_info_final(Info, EnvVarNames, ClosureWrapperDefns, GlobalData, %---------------------------------------------------------------------------% -:- pred ml_gen_info_get_func_counter(ml_gen_info::in, counter::out) is det. -:- pred ml_gen_info_get_conv_var_counter(ml_gen_info::in, counter::out) is det. -:- pred ml_gen_info_get_label_counter(ml_gen_info::in, counter::out) is det. -:- pred ml_gen_info_get_aux_var_counter(ml_gen_info::in, counter::out) is det. -:- pred ml_gen_info_get_cond_var_counter(ml_gen_info::in, counter::out) is det. +:- pred ml_gen_info_get_func_counter(ml_gen_info::in, ucounter::out) is det. +:- pred ml_gen_info_get_conv_var_counter(ml_gen_info::in, + ucounter::out) is det. +:- pred ml_gen_info_get_label_counter(ml_gen_info::in, ucounter::out) is det. +:- pred ml_gen_info_get_aux_var_counter(ml_gen_info::in, ucounter::out) is det. +:- pred ml_gen_info_get_cond_var_counter(ml_gen_info::in, + ucounter::out) is det. :- pred ml_gen_info_get_packed_word_counter(ml_gen_info::in, - counter::out) is det. + ucounter::out) is det. :- pred ml_gen_info_get_success_cont_stack(ml_gen_info::in, stack(success_cont)::out) is det. @@ -1150,21 +1153,21 @@ ml_gen_info_get_success_cont_stack(Info, X) :- ml_gen_info_get_func_nest_depth(Info, X) :- X = Info ^ mgi_sub_info ^ mgsi_func_nest_depth. -:- pred ml_gen_info_set_func_counter(counter::in, +:- pred ml_gen_info_set_func_counter(ucounter::in, ml_gen_info::in, ml_gen_info::out) is det. -:- pred ml_gen_info_set_conv_var_counter(counter::in, +:- pred ml_gen_info_set_conv_var_counter(ucounter::in, ml_gen_info::in, ml_gen_info::out) is det. :- pred ml_gen_info_set_closure_wrapper_defns(list(mlds_function_defn)::in, ml_gen_info::in, ml_gen_info::out) is det. :- pred ml_gen_info_set_env_var_names(set(string)::in, ml_gen_info::in, ml_gen_info::out) is det. -:- pred ml_gen_info_set_label_counter(counter::in, +:- pred ml_gen_info_set_label_counter(ucounter::in, ml_gen_info::in, ml_gen_info::out) is det. -:- pred ml_gen_info_set_aux_var_counter(counter::in, +:- pred ml_gen_info_set_aux_var_counter(ucounter::in, ml_gen_info::in, ml_gen_info::out) is det. -:- pred ml_gen_info_set_cond_var_counter(counter::in, +:- pred ml_gen_info_set_cond_var_counter(ucounter::in, ml_gen_info::in, ml_gen_info::out) is det. -:- pred ml_gen_info_set_packed_word_counter(counter::in, +:- pred ml_gen_info_set_packed_word_counter(ucounter::in, ml_gen_info::in, ml_gen_info::out) is det. :- pred ml_gen_info_set_success_cont_stack(stack(success_cont)::in, ml_gen_info::in, ml_gen_info::out) is det. diff --git a/compiler/ml_global_data.m b/compiler/ml_global_data.m index 9e773dd1f..78f1f8679 100644 --- a/compiler/ml_global_data.m +++ b/compiler/ml_global_data.m @@ -58,7 +58,7 @@ mscg_type :: mlds_type, mscg_array_size :: initializer_array_size, - mscg_counter :: counter, % next cell number + mscg_counter :: ucounter, % next cell number mscg_members :: bimap(mlds_initializer, mlds_scalar_common), mscg_rows :: cord(mlds_initializer) @@ -73,7 +73,7 @@ mvcg_type_defn :: mlds_struct_defn, mvcg_field_ids :: list(mlds_field_id), - mvcg_next_row :: int, + mvcg_next_row :: uint, mvcg_rows :: cord(mlds_initializer) ). @@ -82,7 +82,7 @@ masd_proc_label :: mlds_function_name, masd_context :: prog_context, masd_type :: string, - masd_size :: int + masd_size :: uint ). % Initialize the ml_global_data structure to a value that represents @@ -208,7 +208,7 @@ % Generate or look up an allocation site. % -:- pred ml_gen_alloc_site(mlds_function_name::in, maybe(cons_id)::in, int::in, +:- pred ml_gen_alloc_site(mlds_function_name::in, maybe(cons_id)::in, uint::in, prog_context::in, mlds_alloc_id::out, ml_global_data::in, ml_global_data::out) is det. @@ -223,9 +223,9 @@ :- import_module parse_tree.prog_type. :- import_module bool. -:- import_module int. :- import_module require. :- import_module string. +:- import_module uint. %---------------------------------------------------------------------------% @@ -247,13 +247,13 @@ mgd_use_common_cells :: use_common_cells, mgd_have_unboxed_floats :: have_unboxed_floats, mgd_have_unboxed_int64s :: have_unboxed_int64s, - mgd_const_counter :: counter, + mgd_const_counter :: ucounter, mgd_cell_defns :: cord(mlds_global_var_defn), mgd_rtti_defns :: cord(mlds_global_var_defn), mgd_closure_wrapper_funcs :: cord(mlds_function_defn), - mgd_cell_type_counter :: counter, + mgd_cell_type_counter :: ucounter, mgd_scalar_type_num_map :: ml_scalar_cell_type_map, mgd_scalar_cell_group_map :: ml_scalar_cell_map, @@ -261,7 +261,7 @@ mgd_vector_type_num_map :: ml_vector_cell_type_map, mgd_vector_cell_group_map :: ml_vector_cell_map, - mgd_alloc_id_counter :: counter, + mgd_alloc_id_counter :: ucounter, mgd_alloc_id_map :: ml_alloc_id_map ). @@ -270,10 +270,10 @@ ml_global_data_init(Target, UseCommonCells, HaveUnboxedFloats, HaveUnboxedInt64s) = GlobalData :- GlobalData = ml_global_data(map.init, Target, UseCommonCells, - HaveUnboxedFloats, HaveUnboxedInt64s, counter.init(1), + HaveUnboxedFloats, HaveUnboxedInt64s, counter.uinit(1u), cord.init, cord.init, cord.init, - counter.init(1), map.init, map.init, map.init, map.init, - counter.init(0), bimap.init). + counter.uinit(1u), map.init, map.init, map.init, map.init, + counter.uinit(0u), bimap.init). ml_global_data_get_all_global_defns(GlobalData, ScalarCellGroupMap, VectorCellGroupMap, AllocIds, @@ -296,7 +296,7 @@ ml_global_data_get_all_global_defns(GlobalData, % :- pred ml_global_data_get_const_counter(ml_global_data::in, - counter::out) is det. + ucounter::out) is det. :- pred ml_global_data_get_cell_defns(ml_global_data::in, cord(mlds_global_var_defn)::out) is det. :- pred ml_global_data_get_rtti_defns(ml_global_data::in, @@ -321,7 +321,7 @@ ml_global_data_get_closure_wrapper_func_defns(GlobalData, X) :- :- pred ml_global_data_set_pdup_rval_type_map(ml_rtti_rval_type_map::in, ml_global_data::in, ml_global_data::out) is det. -:- pred ml_global_data_set_const_counter(counter::in, +:- pred ml_global_data_set_const_counter(ucounter::in, ml_global_data::in, ml_global_data::out) is det. :- pred ml_global_data_set_cell_defns(cord(mlds_global_var_defn)::in, ml_global_data::in, ml_global_data::out) is det. @@ -435,11 +435,11 @@ ml_gen_scalar_static_defn(MLDS_ModuleName, ConstType, Initializer0, Common, true else !:CellGroup = ml_scalar_cell_group(ConstType, - InitArraySize, counter.init(0), bimap.init, cord.empty) + InitArraySize, counter.uinit(0u), bimap.init, cord.empty) ) else TypeNumCounter0 = !.GlobalData ^ mgd_cell_type_counter, - counter.allocate(TypeRawNum, TypeNumCounter0, TypeNumCounter), + counter.uallocate(TypeRawNum, TypeNumCounter0, TypeNumCounter), TypeNum = ml_scalar_common_type_num(TypeRawNum), !GlobalData ^ mgd_cell_type_counter := TypeNumCounter, @@ -447,11 +447,11 @@ ml_gen_scalar_static_defn(MLDS_ModuleName, ConstType, Initializer0, Common, !GlobalData ^ mgd_scalar_type_num_map := TypeNumMap, !:CellGroup = ml_scalar_cell_group(ConstType, - InitArraySize, counter.init(0), bimap.init, cord.empty) + InitArraySize, counter.uinit(0u), bimap.init, cord.empty) ), RowCounter0 = !.CellGroup ^ mscg_counter, - counter.allocate(RowNum, RowCounter0, RowCounter), + counter.uallocate(RowNum, RowCounter0, RowCounter), MembersMap0 = !.CellGroup ^ mscg_members, NewCommon = mlds_scalar_common(MLDS_ModuleName, ConstType, TypeNum, RowNum), @@ -483,7 +483,7 @@ ml_gen_scalar_static_defn(MLDS_ModuleName, ConstType, Initializer0, Common, ml_gen_plain_static_defn(ConstVarKind, ConstType, Initializer, Context, VarName, !GlobalData) :- ml_global_data_get_const_counter(!.GlobalData, ConstCounter0), - counter.allocate(ConstNum, ConstCounter0, ConstCounter), + counter.uallocate(ConstNum, ConstCounter0, ConstCounter), ml_global_data_set_const_counter(ConstCounter, !GlobalData), VarName = gvn_const_var(ConstVarKind, ConstNum), @@ -604,8 +604,8 @@ ml_gen_static_vector_type(MLDS_ModuleName, Context, Target, ArgTypes, CellGroup = ml_vector_cell_group(StructType, _TypeDefn, FieldIds, _, _) else TypeNumCounter0 = !.GlobalData ^ mgd_cell_type_counter, - counter.allocate(TypeRawNum, TypeNumCounter0, TypeNumCounter), - TypeRawNumStr = string.int_to_string(TypeRawNum), + counter.uallocate(TypeRawNum, TypeNumCounter0, TypeNumCounter), + TypeRawNumStr = string.uint_to_string(TypeRawNum), TypeNum = ml_vector_common_type_num(TypeRawNum), !GlobalData ^ mgd_cell_type_counter := TypeNumCounter, @@ -614,7 +614,7 @@ ml_gen_static_vector_type(MLDS_ModuleName, Context, Target, ArgTypes, FieldFlags = mlds_field_var_decl_flags(per_instance, const), ml_gen_vector_cell_field_types(Context, FieldFlags, - TypeRawNum, 0, ArgTypes, FieldNames, FieldDefns, FieldInfos), + TypeRawNum, 0u, ArgTypes, FieldNames, FieldDefns, FieldInfos), StructName = "vector_common_type_" ++ TypeRawNumStr, StructId = mlds_struct_id(MLDS_ModuleName, StructName), @@ -639,7 +639,7 @@ ml_gen_static_vector_type(MLDS_ModuleName, Context, Target, ArgTypes, FieldIds), CellGroup = ml_vector_cell_group(StructType, StructDefn, - FieldIds, 0, cord.empty), + FieldIds, 0u, cord.empty), CellGroupMap0 = !.GlobalData ^ mgd_vector_cell_group_map, map.det_insert(TypeNum, CellGroup, CellGroupMap0, CellGroupMap), @@ -647,7 +647,7 @@ ml_gen_static_vector_type(MLDS_ModuleName, Context, Target, ArgTypes, ). :- pred ml_gen_vector_cell_field_types(prog_context::in, - mlds_field_var_decl_flags::in, int::in, int::in, list(mlds_type)::in, + mlds_field_var_decl_flags::in, uint::in, uint::in, list(mlds_type)::in, list(mlds_field_var_name)::out, list(mlds_field_var_defn)::out, list(mlds_field_info)::out) is det. @@ -660,7 +660,7 @@ ml_gen_vector_cell_field_types(Context, Flags, TypeRawNum, FieldNum, Type, no_initializer, gc_no_stmt), FieldInfo = mlds_field_info(FieldVarName, Type, gc_no_stmt, Context), ml_gen_vector_cell_field_types(Context, Flags, TypeRawNum, - FieldNum + 1, Types, FieldVarNames, FieldDataDefns, FieldInfos). + FieldNum + 1u, Types, FieldVarNames, FieldDataDefns, FieldInfos). :- pred make_named_fields(mlds_module_name::in, mlds_type::in, list(mlds_field_var_name)::in, list(mlds_field_id)::out) is det. @@ -675,7 +675,7 @@ make_named_fields(MLDS_ModuleName, StructType, [FieldName | FieldNames], ml_gen_static_vector_defn(MLDS_ModuleName, TypeNum, RowInitializers, Common, !GlobalData) :- some [!CellGroup] ( - list.length(RowInitializers, NumRows), + list.ulength(RowInitializers, NumRows), CellGroupMap0 = !.GlobalData ^ mgd_vector_cell_group_map, map.lookup(CellGroupMap0, TypeNum, !:CellGroup), @@ -713,7 +713,7 @@ ml_gen_alloc_site(ProcLabel, MaybeConsId, Size, Context, AllocId, AllocId = AllocId0 else Counter0 = !.GlobalData ^ mgd_alloc_id_counter, - counter.allocate(AllocIdNum, Counter0, Counter), + counter.uallocate(AllocIdNum, Counter0, Counter), AllocId = mlds_alloc_id(AllocIdNum), bimap.det_insert(AllocId, AllocData, Map0, Map), !GlobalData ^ mgd_alloc_id_counter := Counter, diff --git a/compiler/ml_proc_gen.m b/compiler/ml_proc_gen.m index 84e64fc8d..23443dccc 100644 --- a/compiler/ml_proc_gen.m +++ b/compiler/ml_proc_gen.m @@ -69,7 +69,6 @@ :- import_module assoc_list. :- import_module bool. -:- import_module int. :- import_module map. :- import_module maybe. :- import_module pair. @@ -77,6 +76,7 @@ :- import_module set. :- import_module string. :- import_module term_context. +:- import_module uint. %---------------------------------------------------------------------------% %---------------------------------------------------------------------------% @@ -684,7 +684,7 @@ compute_initial_tail_rec_map_for_none_or_self(ModuleInfo, NoneOrSelf, ml_gen_proc_params_inputs_only_no_gc_stmts(ModuleInfo, PredProcId), map.lookup(!.InSccMap, PredProcId, InSccInfo0), InSccInfo = InSccInfo0 ^ isi_maybe_in_tscc := - in_tscc(proc_id_in_tscc(1), InputParams), + in_tscc(proc_id_in_tscc(1u), InputParams), map.det_update(PredProcId, InSccInfo, !InSccMap) ). @@ -958,7 +958,7 @@ ml_gen_tscc_trial(ProgressStream, ModuleInfo, Target, ConstStructMap, reset_in_scc_map(!InSccMap), list.map_foldl6(compute_initial_tail_rec_map_for_mutual(ModuleInfo), set.to_sorted_list(PredProcIds), PredProcIdArgsInfos, - 1, _, maybe.no, _, can_generate_code_for_tscc, CanGenerateTscc0, + 1u, _, maybe.no, _, can_generate_code_for_tscc, CanGenerateTscc0, map.init, _OutArgNames, !InSccMap, map.init, SeenAtLabelMap), % Translate each procedure in the TSCC into a representation of the @@ -1178,11 +1178,11 @@ separate_mutually_recursive_procs(NoMutualTailRecProcs, % TSCC that is convenient to compute at the same time. % :- pred compute_initial_tail_rec_map_for_mutual(module_info::in, - pred_proc_id::in, pred_proc_id_args_info::out, int::in, int::out, + pred_proc_id::in, pred_proc_id_args_info::out, uint::in, uint::out, maybe(assoc_list(mlds_local_var_name, mlds_type))::in, maybe(assoc_list(mlds_local_var_name, mlds_type))::out, can_we_generate_code_for_tscc::in, can_we_generate_code_for_tscc::out, - map(int, string)::in, map(int, string)::out, + map(uint, string)::in, map(uint, string)::out, in_scc_map::in, in_scc_map::out, seen_at_label_map::in, seen_at_label_map::out) is det. @@ -1191,7 +1191,7 @@ compute_initial_tail_rec_map_for_mutual(ModuleInfo, !CanGenerateTscc, !OutArgNames, !InSccMap, !SeenAtLabelMap) :- ThisProcNum = !.ProcNum, IdInTscc = proc_id_in_tscc(ThisProcNum), - !:ProcNum = !.ProcNum + 1, + !:ProcNum = !.ProcNum + 1u, module_info_pred_proc_info(ModuleInfo, PredProcId, PredInfo, ProcInfo), pred_info_get_is_pred_or_func(PredInfo, PredOrFunc), @@ -1296,8 +1296,8 @@ ml_gen_tscc_proc_code(ProgressStream, ModuleInfo, Target, ConstStructMap, PredProcId = proc(_PredId, ProcId), ProcDesc = describe_proc(include_module_name, PredInfo, ProcId), ProcIdInTscc = proc_id_in_tscc(ProcNumInTscc), - ProcDescComment = string.format("proc %d in TSCC: %s", - [i(ProcNumInTscc), s(ProcDesc)]), + ProcDescComment = string.format("proc %u in TSCC: %s", + [u(ProcNumInTscc), s(ProcDesc)]), CommentStmt = ml_stmt_atomic(comment(ProcDescComment), ProcContext), ml_gen_info_proc_params(PredProcId, ProcArgTuples, FuncParams, @@ -1381,8 +1381,8 @@ construct_tscc_entry_proc(ProgressStream, ModuleInfo, LoopKind, PredProcCodes, EntryIdInTscc = proc_id_in_tscc(EntryIdInTsccNum), EntryProcDesc = describe_proc_from_id(include_module_name, ModuleInfo, EntryProc), - Comment0 = string.format("The code for TSCC PROC %d: %s.", - [i(EntryIdInTsccNum), s(EntryProcDesc)]), + Comment0 = string.format("The code for TSCC PROC %u: %s.", + [u(EntryIdInTsccNum), s(EntryProcDesc)]), CommentStmt0 = ml_stmt_atomic(comment(Comment0), EntryProcContext), Comment1 = "Setup for mutual tailcalls optimized into a loop.", CommentStmt1 = ml_stmt_atomic(comment(Comment1), EntryProcContext), @@ -1603,13 +1603,15 @@ make_container_proc_with_while_continue(CopyOutValThroughPtrStmts, ReturnStmt, EntryProc = proc_id_in_tscc(EntryProcNum), SelectorVarLval = ml_local_var(SelectorVar, SelectorType), SetSelectorStmt = ml_stmt_atomic( - assign(SelectorVarLval, ml_const(mlconst_int(EntryProcNum))), + assign(SelectorVarLval, + ml_const(mlconst_int(uint.cast_to_int(EntryProcNum)))), EntryProcContext), set.to_sorted_list(PossibleSwitchValues, PossibleSwitchValuesList), SwitchMin = list.det_head(PossibleSwitchValuesList), SwitchMax = list.det_last(PossibleSwitchValuesList), - SwitchRange = mlds_switch_range(SwitchMin, SwitchMax), + SwitchRange = mlds_switch_range( + uint.cast_to_int(SwitchMin), uint.cast_to_int(SwitchMax)), Default = default_is_unreachable, SwitchStmt = ml_stmt_switch(SelectorType, ml_lval(SelectorVarLval), SwitchRange, SwitchCases, Default, EntryProcContext), @@ -1623,7 +1625,7 @@ make_container_proc_with_while_continue(CopyOutValThroughPtrStmts, ReturnStmt, CopyOutValThroughPtrStmts ++ [ReturnStmt]. :- pred make_wrapped_proc_with_while_continue(list(mlds_stmt)::in, - proc_stmt_info::in, mlds_switch_case::out, set(int)::in, set(int)::out, + proc_stmt_info::in, mlds_switch_case::out, set(uint)::in, set(uint)::out, list(mlds_local_var_name)::in, list(mlds_local_var_name)::out) is det. make_wrapped_proc_with_while_continue(GotoEndStmts, ProcStmtInfo, SwitchCase, @@ -1631,7 +1633,8 @@ make_wrapped_proc_with_while_continue(GotoEndStmts, ProcStmtInfo, SwitchCase, ProcStmtInfo = proc_stmt_info(IdInTscc, LoopLocalVars, ProcStmt, ProcContext), IdInTscc = proc_id_in_tscc(IdInTsccNum), - MatchCond = match_value(ml_const(mlconst_int(IdInTsccNum))), + MatchCond = match_value(ml_const(mlconst_int( + uint.cast_to_int(IdInTsccNum)))), SwitchStmt = ml_gen_block([], [], append_to_stmt(ProcStmt, GotoEndStmts), ProcContext), SwitchCase = mlds_switch_case(MatchCond, [], SwitchStmt), diff --git a/compiler/ml_unify_gen_construct.m b/compiler/ml_unify_gen_construct.m index ebdefe05c..ba91b6abf 100644 --- a/compiler/ml_unify_gen_construct.m +++ b/compiler/ml_unify_gen_construct.m @@ -484,8 +484,8 @@ ml_gen_new_object_dynamically(MaybeConsId, MaybeCtorName, Ptag, ExtraRHSRvalsTypesWidths ++ PackedRHSRvalsTypesWidths, % Compute the number of words to allocate. - list.length(RHSRvalsTypesWidths, Size), - SizeInWordsRval = ml_const(mlconst_int(Size)), + list.ulength(RHSRvalsTypesWidths, Size), + SizeInWordsRval = ml_const(mlconst_int(uint.cast_to_int(Size))), % Generate an allocation site id. ml_gen_info_get_profile_memory(!.Info, ProfileMemory), diff --git a/compiler/ml_util.m b/compiler/ml_util.m index b44c3d53a..d36c52262 100644 --- a/compiler/ml_util.m +++ b/compiler/ml_util.m @@ -174,9 +174,9 @@ :- import_module mdbcomp. :- import_module mdbcomp.prim_data. -:- import_module int. :- import_module solutions. :- import_module string. +:- import_module uint. %---------------------------------------------------------------------------% @@ -947,13 +947,13 @@ mlds_maybe_aux_func_id_to_suffix(MaybeAux) = Suffix :- Suffix = "" ; MaybeAux = proc_aux_func(SeqNum), - Suffix = string.format("_%d", [i(SeqNum)]) + Suffix = string.format("_%u", [u(SeqNum)]) ; MaybeAux = gc_trace_for_proc_func, - Suffix = string.format("_%d", [i(10000)]) + Suffix = string.format("_%u", [u(10000u)]) ; MaybeAux = gc_trace_for_proc_aux_func(SeqNum), - Suffix = string.format("_%d", [i(10001 + SeqNum)]) + Suffix = string.format("_%u", [u(10001u + SeqNum)]) ). %---------------------------------------------------------------------------% diff --git a/compiler/mlds.m b/compiler/mlds.m index 9d866a8ce..ac514687b 100644 --- a/compiler/mlds.m +++ b/compiler/mlds.m @@ -548,7 +548,7 @@ ; no_initializer. :- type initializer_array_size - ---> array_size(int) + ---> array_size(uint) ; no_size. % Either the size is unknown, or the data is not an array. @@ -939,9 +939,9 @@ :- type mlds_maybe_aux_func_id ---> proc_func - ; proc_aux_func(int) + ; proc_aux_func(uint) ; gc_trace_for_proc_func - ; gc_trace_for_proc_aux_func(int). + ; gc_trace_for_proc_aux_func(uint). :- type mlds_proc_label ---> mlds_proc_label(mlds_pred_label, proc_id). @@ -1876,7 +1876,7 @@ ; target_code_alloc_id(mlds_alloc_id). :- type mlds_alloc_id - ---> mlds_alloc_id(int). + ---> mlds_alloc_id(uint). % Constructor id. % @@ -2181,18 +2181,18 @@ ). :- type ml_scalar_common_type_num - ---> ml_scalar_common_type_num(int). + ---> ml_scalar_common_type_num(uint). :- type ml_vector_common_type_num - ---> ml_vector_common_type_num(int). + ---> ml_vector_common_type_num(uint). :- type mlds_scalar_common ---> mlds_scalar_common(mlds_module_name, mlds_type, - ml_scalar_common_type_num, int). + ml_scalar_common_type_num, uint). % module name, type, type number, row number :- type mlds_vector_common ---> mlds_vector_common(mlds_module_name, mlds_type, - ml_vector_common_type_num, int, int). + ml_vector_common_type_num, uint, uint). % module name, type, type number, % starting row number, number of rows @@ -2274,7 +2274,7 @@ % used to implement memoization, loopcheck or minimal model % semantics for the given procedure. - ; gvn_const_var(mlds_global_const_var, int) + ; gvn_const_var(mlds_global_const_var, uint) % These MLDS variables are global variables holding constant, % immutable data. What kind of data is given by the first argument. % The integer is a sequence number (unique within the whole module) @@ -2316,7 +2316,7 @@ % are type qualified. :- type mlds_field_var_name - ---> fvn_global_data_field(int, int) + ---> fvn_global_data_field(uint, uint) % When implementing lookup switches (and some related HLDS % constructs, such as lookup disjunctions, which are like % lookup switches without the switch), the compiler generates @@ -2402,7 +2402,7 @@ % This MLDS variable represents the boxed version of the HLDS % variable with the given name and number. - ; lvn_prog_var_conv(int, string, int) + ; lvn_prog_var_conv(uint, string, int) % This MLDS variable represents a version of a HLDS variable % (of the name and number given by the second and third args) % created by a boxing or unboxing operation. The first integer @@ -2432,9 +2432,9 @@ % lvn_prog_var representing the HLDS variable when the scope % succeeds. - ; lvn_tscc_proc_input_var(proc_id_in_tscc, int, string) - ; lvn_tscc_output_var(int, string) - ; lvn_tscc_output_var_ptr(int, string) + ; lvn_tscc_proc_input_var(proc_id_in_tscc, uint, string) + ; lvn_tscc_output_var(uint, string) + ; lvn_tscc_output_var_ptr(uint, string) ; lvn_tscc_output_var_succeeded % All four of these are used when we generate code for % a set of mutually *tail* recursive procedures. @@ -2495,14 +2495,14 @@ % The ids are sequentially allocated small integers starting at 1. % :- type proc_id_in_tscc - ---> proc_id_in_tscc(int). + ---> proc_id_in_tscc(uint). :- inst lvn_prog_var for mlds_local_var_name/0 ---> lvn_prog_var(ground, ground). :- type mlds_compiler_var ---> lvnc_non_prog_var_boxed(string) - ; lvnc_non_prog_var_conv(int, string) + ; lvnc_non_prog_var_conv(uint, string) ; lvnc_non_prog_var_next_value(string) % What the lvn_prog_var_boxed, lvn_prog_var_conv, and % lvn_prog_var_next_value are to lvn_prog_vars, these are @@ -2528,35 +2528,35 @@ % set up its input arguments, and "continue" to the next iteration % of the loop. - ; lvnc_new_obj(int) + ; lvnc_new_obj(uint) % A temporary variable holding the address of a newly allocated % object, used by accurate gc. The integer is a unique sequence % number allocated from a per-procedure counter that is dedicated % for this purpose. - ; lvnc_cond(int) + ; lvnc_cond(uint) % This MLDS variable records whether the condition of a model_non % if-then-else has ever succeeded. The integer is a sequence number % allocated from a counter that is dedicated for this purpose. - ; lvnc_conv_var(int) + ; lvnc_conv_var(uint) % This MLDS variable holds the address of the callee of a generic % call (according to the comment creating it, we need a variable % to hold the address to work around limitations in old C % compilers). The integer is a sequence number allocated from % a counter that is dedicated for this purpose. - ; lvnc_arg(int) + ; lvnc_arg(uint) % This MLDS variable represents the Nth output parameter of % a success continuation, where N is the given integer. - ; lvnc_wrapper_arg(int) + ; lvnc_wrapper_arg(uint) % This MLDS variable represents the Nth parameter of the wrapper % function around a procedure, where N is the given integer. % We put a wrapper function around procedures when they are used % as the code in a closure. - ; lvnc_param(int) + ; lvnc_param(uint) % This MLDS variable represents the Nth parameter of an MLDS % function, where N is the given integer, when the declaration % of that function is standardized for printing in an automatically @@ -2565,7 +2565,7 @@ % when the actual names of the corresponding procedure's arguments % change in the HLDS. - ; lvnc_out_param(int) + ; lvnc_out_param(uint) % This MLDS variable represents the Nth output parameter of an MLDS % function being compiled to C#, where N is the given integer, % and N > 1. (The C# backend returns the first output parameter @@ -2639,7 +2639,7 @@ % This variable is used by the Java backend. % I (zs) do not know what its semantics is. - ; lvnc_aux_var(mlds_compiler_aux_var, int) + ; lvnc_aux_var(mlds_compiler_aux_var, uint) % These MLDS variables contain values (most, but not all of which % are very short-lived) used to implement Mercury constructs % such as commits and switches. They contain such information @@ -2649,7 +2649,7 @@ % allocated from a counter that is shared between all % lvnc_aux_vars. - ; lvnc_packed_word(int). + ; lvnc_packed_word(uint). % Each of these MLDS variables contains a copy of a word that % contains the values of tags and/or arguments packed together. % The idea is that for HLDS code such as @@ -2692,7 +2692,7 @@ %---------------------------------------------------------------------------% -:- func ml_global_const_var_name_to_string(mlds_global_const_var, int) +:- func ml_global_const_var_name_to_string(mlds_global_const_var, uint) = string. :- func ml_field_var_name_to_string(mlds_field_var_name) = string. :- func ml_local_var_name_to_string(mlds_local_var_name) = string. @@ -2803,7 +2803,8 @@ global_dummy_var = DummyVar :- get_initializer_array_size(no_initializer) = no_size. get_initializer_array_size(init_obj(_)) = no_size. get_initializer_array_size(init_struct(_, _)) = no_size. -get_initializer_array_size(init_array(Elems)) = array_size(list.length(Elems)). +get_initializer_array_size(init_array(Elems)) = + array_size(list.ulength(Elems)). %---------------------------------------------------------------------------% @@ -3103,12 +3104,12 @@ ml_global_const_var_name_to_string(ConstVar, Num) = Str :- ConstVar = mgcv_bit_vector, ConstVarStr = "bit_vector" ), - Str = string.format("%s_%d", [s(ConstVarStr), i(Num)]). + Str = string.format("%s_%u", [s(ConstVarStr), u(Num)]). ml_field_var_name_to_string(FieldVar) = Str :- ( FieldVar = fvn_global_data_field(TypeRawNum, FieldNum), - Str = string.format("vct_%d_f_%d", [i(TypeRawNum), i(FieldNum)]) + Str = string.format("vct_%u_f_%u", [u(TypeRawNum), u(FieldNum)]) ; FieldVar = fvn_du_ctor_field_hld(FieldName), % XXX There is nothing to stop the variable names we generate here @@ -3173,10 +3174,10 @@ ml_local_var_name_to_string(LocalVar) = Str :- ; LocalVar = lvn_prog_var_conv(ConvSeq, ProgVarName, ProgVarNum), ( if ProgVarName = "" then - Str = string.format("conv%d_Var_%d", [i(ConvSeq), i(ProgVarNum)]) + Str = string.format("conv%u_Var_%d", [u(ConvSeq), i(ProgVarNum)]) else - Str = string.format("conv%d_%s_%d", - [i(ConvSeq), s(ProgVarName), i(ProgVarNum)]) + Str = string.format("conv%u_%s_%d", + [u(ConvSeq), s(ProgVarName), i(ProgVarNum)]) ) ; LocalVar = lvn_prog_var_next_value(ProgVarName, ProgVarNum), @@ -3205,14 +3206,14 @@ ml_local_var_name_to_string(LocalVar) = Str :- ; LocalVar = lvn_tscc_proc_input_var(proc_id_in_tscc(ProcNum), ArgNum, VarName), - Str = string.format("tscc_proc_%d_input_%d_%s", - [i(ProcNum), i(ArgNum), s(VarName)]) + Str = string.format("tscc_proc_%u_input_%u_%s", + [u(ProcNum), u(ArgNum), s(VarName)]) ; LocalVar = lvn_tscc_output_var(ArgNum, VarName), - Str = string.format("tscc_output_%d_%s", [i(ArgNum), s(VarName)]) + Str = string.format("tscc_output_%u_%s", [u(ArgNum), s(VarName)]) ; LocalVar = lvn_tscc_output_var_ptr(ArgNum, VarName), - Str = string.format("tscc_output_ptr_%d_%s", [i(ArgNum), s(VarName)]) + Str = string.format("tscc_output_ptr_%u_%s", [u(ArgNum), s(VarName)]) ; LocalVar = lvn_tscc_output_var_succeeded, Str = string.format("tscc_output_succeeded", []) @@ -3226,7 +3227,7 @@ ml_local_var_name_to_string(LocalVar) = Str :- Str = string.format("boxed_%s", [s(BaseVarStr)]) ; CompVar = lvnc_non_prog_var_conv(ConvSeq, BaseVarStr), - Str = string.format("conv%d_%s", [i(ConvSeq), s(BaseVarStr)]) + Str = string.format("conv%u_%s", [u(ConvSeq), s(BaseVarStr)]) ; CompVar = lvnc_non_prog_var_next_value(BaseVarStr), Str = string.format("next_value_of_%s", [s(BaseVarStr)]) @@ -3241,25 +3242,25 @@ ml_local_var_name_to_string(LocalVar) = Str :- Str = "tscc_proc_selector" ; CompVar = lvnc_new_obj(Id), - Str = string.format("new_obj_%d", [i(Id)]) + Str = string.format("new_obj_%u", [u(Id)]) ; CompVar = lvnc_cond(CondNum), - Str = string.format("cond_%d", [i(CondNum)]) + Str = string.format("cond_%u", [u(CondNum)]) ; CompVar = lvnc_conv_var(ConvVarNum), - Str = string.format("func_%d", [i(ConvVarNum)]) + Str = string.format("func_%u", [u(ConvVarNum)]) ; CompVar = lvnc_arg(ArgNum), - Str = string.format("arg%d", [i(ArgNum)]) + Str = string.format("arg%u", [u(ArgNum)]) ; CompVar = lvnc_wrapper_arg(ArgNum), - Str = string.format("wrapper_arg_%d", [i(ArgNum)]) + Str = string.format("wrapper_arg_%u", [u(ArgNum)]) ; CompVar = lvnc_param(ArgNum), - Str = string.format("param_%d", [i(ArgNum)]) + Str = string.format("param_%u", [u(ArgNum)]) ; CompVar = lvnc_out_param(ArgNum), - Str = string.format("out_param_%d", [i(ArgNum)]) + Str = string.format("out_param_%u", [u(ArgNum)]) ; CompVar = lvnc_return_value, Str = "return_value" @@ -3350,10 +3351,10 @@ ml_local_var_name_to_string(LocalVar) = Str :- AuxVar = mcav_case_num, AuxVarStr = "case_num" ), - Str = string.format("%s_%d", [s(AuxVarStr), i(Num)]) + Str = string.format("%s_%u", [s(AuxVarStr), u(Num)]) ; CompVar = lvnc_packed_word(Id), - Str = string.format("packed_word_%d", [i(Id)]) + Str = string.format("packed_word_%u", [u(Id)]) ) ). diff --git a/compiler/mlds_dump.m b/compiler/mlds_dump.m index 3662e7988..0d514530d 100644 --- a/compiler/mlds_dump.m +++ b/compiler/mlds_dump.m @@ -584,7 +584,7 @@ mlds_lval_to_strcord(Lval) = Cord :- GlobalConstVar = mgcv_bit_vector, GlobalCord = strcord("global bit vector ") ), - Cord = GlobalCord ++ intcord(SeqNum) + Cord = GlobalCord ++ uintcord(SeqNum) ; GlobalVar = gvn_dummy_var, Cord = strcord("dummy_var") @@ -785,19 +785,19 @@ mlds_rval_const_to_strcord(Const) = Cord :- mlds_scalar_common_to_strcord(ScalarCommon) = Cord :- ScalarCommon = mlds_scalar_common(_ModuleName, _Type, TypeNum, RowNum), - TypeNum = ml_scalar_common_type_num(TypeNumInt), - Cord = strcord("scalar_common(type ") ++ intcord(TypeNumInt) ++ - comma_cord ++ strcord("row ") ++ intcord(RowNum) ++ strcord(")"). + TypeNum = ml_scalar_common_type_num(TypeNumUInt), + Cord = strcord("scalar_common(type ") ++ uintcord(TypeNumUInt) ++ + comma_cord ++ strcord("row ") ++ uintcord(RowNum) ++ strcord(")"). :- func mlds_vector_common_to_strcord(mlds_vector_common) = strcord. mlds_vector_common_to_strcord(VectorCommon) = Cord :- VectorCommon = mlds_vector_common(_ModuleName, _Type, TypeNum, StartRowNum, NumRows), - TypeNum = ml_vector_common_type_num(TypeNumInt), - Cord = strcord("vector_common(type ") ++ intcord(TypeNumInt) ++ - comma_cord ++ strcord("start row ") ++ intcord(StartRowNum) ++ - comma_cord ++ strcord("num rows ") ++ intcord(NumRows) ++ strcord(")"). + TypeNum = ml_vector_common_type_num(TypeNumUInt), + Cord = strcord("vector_common(type ") ++ uintcord(TypeNumUInt) ++ + comma_cord ++ strcord("start row ") ++ uintcord(StartRowNum) ++ + comma_cord ++ strcord("num rows ") ++ uintcord(NumRows) ++ strcord(")"). :- func unop_to_strcord(unary_op) = strcord. @@ -1249,8 +1249,8 @@ mercury_type_to_strcord(MerType) = Cord :- mlds_field_var_name_to_strcord(FieldVarName) = Cord :- ( FieldVarName = fvn_global_data_field(TypeNum, FieldNum), - Str = string.format("global data field ", - [i(TypeNum), i(FieldNum)]), + Str = string.format("global data field ", + [u(TypeNum), u(FieldNum)]), Cord = strcord(Str) ; FieldVarName = fvn_du_ctor_field_hld(FieldName), @@ -1400,13 +1400,13 @@ mlds_func_label_to_strcord(FuncLabel) = Cord :- AuxCord = cord.init ; MaybeAuxFuncId = proc_aux_func(SeqNum), - AuxCord = strcord("$aux_") ++ intcord(SeqNum) + AuxCord = strcord("$aux_") ++ uintcord(SeqNum) ; MaybeAuxFuncId = gc_trace_for_proc_func, AuxCord = strcord("$gc") ; MaybeAuxFuncId = gc_trace_for_proc_aux_func(SeqNum), - AuxCord = strcord("$gc_aux_") ++ intcord(SeqNum) + AuxCord = strcord("$gc_aux_") ++ uintcord(SeqNum) ), Cord = PredCord ++ ProcCord ++ AuxCord. @@ -1424,6 +1424,10 @@ strcord(Str) = cord.singleton(Str). intcord(N) = cord.singleton(string.int_to_string(N)). +:- func uintcord(uint) = strcord. + +uintcord(N) = cord.singleton(string.uint_to_string(N)). + :- func indent_strcord(int) = strcord. indent_strcord(Indent) = Cord :- diff --git a/compiler/mlds_to_c_data.m b/compiler/mlds_to_c_data.m index 605958458..c1521890f 100644 --- a/compiler/mlds_to_c_data.m +++ b/compiler/mlds_to_c_data.m @@ -240,16 +240,16 @@ mlds_output_rval(Opts, Rval, Stream, !IO) :- ml_scalar_common_type_num(TypeNum), RowNum), ModuleSymName = mlds_module_name_to_sym_name(ModuleName), MangledModuleName = sym_name_mangle(ModuleSymName), - io.format(Stream, "%s_scalar_common_%d[%d]", - [s(MangledModuleName), i(TypeNum), i(RowNum)], !IO) + io.format(Stream, "%s_scalar_common_%u[%u]", + [s(MangledModuleName), u(TypeNum), u(RowNum)], !IO) ; Rval = ml_vector_common_row_addr(VectorCommon, RowRval), VectorCommon = mlds_vector_common(ModuleName, _Type, ml_vector_common_type_num(TypeNum), StartRowNum, _NumRows), ModuleSymName = mlds_module_name_to_sym_name(ModuleName), MangledModuleName = sym_name_mangle(ModuleSymName), - io.format(Stream, "&%s_vector_common_%d[%d + ", - [s(MangledModuleName), i(TypeNum), i(StartRowNum)], !IO), + io.format(Stream, "&%s_vector_common_%u[%u + ", + [s(MangledModuleName), u(TypeNum), u(StartRowNum)], !IO), mlds_output_rval(Opts, RowRval, Stream, !IO), io.write_string(Stream, "]", !IO) ; diff --git a/compiler/mlds_to_c_func.m b/compiler/mlds_to_c_func.m index 983b51b8b..103c20b78 100644 --- a/compiler/mlds_to_c_func.m +++ b/compiler/mlds_to_c_func.m @@ -71,7 +71,6 @@ :- import_module bool. :- import_module char. -:- import_module int. :- import_module maybe. :- import_module string. :- import_module uint. @@ -119,7 +118,7 @@ mlds_output_func_decl_ho(Opts, Stream, GetTypePrefixSuffix, CallingConvention, Parameters = Parameters0 ; StdDecl = yes, - list.map_foldl(standardize_param_names, Parameters0, Parameters, 1, _) + list.map_foldl(standardize_param_names, Parameters0, Parameters, 1u, _) ), IndentStr = indent2_string(Indent), QualFuncNameStr = qual_function_name_to_string_for_c(QualFuncName), @@ -153,13 +152,13 @@ mlds_output_func_decl_ho(Opts, Stream, GetTypePrefixSuffix, CallingConvention, ). :- pred standardize_param_names(mlds_argument::in, mlds_argument::out, - int::in, int::out) is det. + uint::in, uint::out) is det. standardize_param_names(!Argument, !ArgNum) :- VarName = lvn_comp_var(lvnc_param(!.ArgNum)), !.Argument = mlds_argument(_VarName0, Type, GCStmt), !:Argument = mlds_argument(VarName, Type, GCStmt), - !:ArgNum = !.ArgNum + 1. + !:ArgNum = !.ArgNum + 1u. :- pred mlds_output_params_in_parens(mlds_to_c_opts::in, io.text_output_stream::in, type_prefix_suffix::in(type_prefix_suffix), diff --git a/compiler/mlds_to_c_global.m b/compiler/mlds_to_c_global.m index 153aa96e3..4b66ffa0a 100644 --- a/compiler/mlds_to_c_global.m +++ b/compiler/mlds_to_c_global.m @@ -93,7 +93,6 @@ :- import_module bool. :- import_module char. :- import_module cord. -:- import_module int. :- import_module pair. :- import_module require. :- import_module string. @@ -127,27 +126,27 @@ mlds_output_scalar_cell_group_decl(Opts, Stream, Indent, MangledModuleName, else true ), - NumRows = cord.length(Rows), + NumRows = cord.ulength(Rows), TypeNameStr = scalar_cell_group_type_and_name_to_string_for_c(Opts, MangledModuleName, TypeRawNum, Type, InitArraySize, NumRows), io.format(Stream, "\nstatic /* final */ const %s;\n", [s(TypeNameStr)], !IO). :- func scalar_cell_group_type_and_name_to_string_for_c(mlds_to_c_opts, - string, int, mlds_type, initializer_array_size, int) = string. + string, uint, mlds_type, initializer_array_size, uint) = string. scalar_cell_group_type_and_name_to_string_for_c(Opts, MangledModuleName, TypeRawNum, Type, InitArraySize, NumRows) = Str :- ( if Type = mlds_mostly_generic_array_type(_) then - string.format("struct %s_scalar_cell_group_%d %s_scalar_common_%d[%d]", - [s(MangledModuleName), i(TypeRawNum), - s(MangledModuleName), i(TypeRawNum), i(NumRows)], Str) + string.format("struct %s_scalar_cell_group_%u %s_scalar_common_%u[%u]", + [s(MangledModuleName), u(TypeRawNum), + s(MangledModuleName), u(TypeRawNum), u(NumRows)], Str) else type_to_prefix_suffix_for_c(Opts, Type, InitArraySize, TypePrefix, TypeSuffix), - string.format("%s %s_scalar_common_%d[%d]%s", - [s(TypePrefix), s(MangledModuleName), i(TypeRawNum), - i(NumRows), s(TypeSuffix)], Str) + string.format("%s %s_scalar_common_%u[%u]%s", + [s(TypePrefix), s(MangledModuleName), u(TypeRawNum), + u(NumRows), s(TypeSuffix)], Str) ). %---------------------% @@ -171,37 +170,37 @@ mlds_output_scalar_cell_group_defn(Opts, Stream, Indent, MangledModuleName, CellGroup = ml_scalar_cell_group(Type, InitArraySize, _Counter, _Members, RowCords), Rows = cord.list(RowCords), - list.length(Rows, NumRows), + list.ulength(Rows, NumRows), IndentStr = indent2_string(Indent), TypeNameStr = scalar_cell_group_type_and_name_to_string_for_c(Opts, MangledModuleName, TypeRawNum, Type, InitArraySize, NumRows), io.format(Stream, "\n%sstatic /* final */ const %s = {\n", [s(IndentStr), s(TypeNameStr)], !IO), - list.foldl2(mlds_output_cell(Opts, Stream, Indent + 1u), Rows, 0, _, !IO), + list.foldl2(mlds_output_cell(Opts, Stream, Indent + 1u), Rows, 0u, _, !IO), io.format(Stream, "%s};\n", [s(IndentStr)], !IO). :- pred mlds_output_scalar_cell_group_struct_defn(mlds_to_c_opts::in, - io.text_output_stream::in, indent::in, string::in, int::in, + io.text_output_stream::in, indent::in, string::in, uint::in, list(mlds_type)::in, io::di, io::uo) is det. mlds_output_scalar_cell_group_struct_defn(Opts, Stream, Indent, MangledModuleName, TypeRawNum, ElemTypes, !IO) :- output_pragma_pack_push(Stream, !IO), IndentStr = indent2_string(Indent), - io.format(Stream, "%sstruct %s_scalar_cell_group_%d {\n", - [s(IndentStr), s(MangledModuleName), i(TypeRawNum)], !IO), + io.format(Stream, "%sstruct %s_scalar_cell_group_%u {\n", + [s(IndentStr), s(MangledModuleName), u(TypeRawNum)], !IO), list.foldl2( mlds_output_scalar_cell_group_struct_field(Opts, Stream, Indent + 1u), - ElemTypes, 1, _, !IO), + ElemTypes, 1u, _, !IO), io.format(Stream, "%s};\n", [s(IndentStr)], !IO), output_pragma_pack_pop(Stream, !IO). :- pred mlds_output_scalar_cell_group_struct_field(mlds_to_c_opts::in, - io.text_output_stream::in, indent::in, mlds_type::in, int::in, int::out, + io.text_output_stream::in, indent::in, mlds_type::in, uint::in, uint::out, io::di, io::uo) is det. mlds_output_scalar_cell_group_struct_field(Opts, Stream, Indent, FieldType, - Num, Num + 1, !IO) :- + Num, Num + 1u, !IO) :- IndentStr = indent2_string(Indent), ( if % Ensure double-word float, int64 and uint64 structure members @@ -220,14 +219,14 @@ mlds_output_scalar_cell_group_struct_field(Opts, Stream, Indent, FieldType, ) ) then - io.format(Stream, "%s%s f%d;\n", - [s(IndentStr), s(TypeName), i(Num)], !IO) + io.format(Stream, "%s%s f%u;\n", + [s(IndentStr), s(TypeName), u(Num)], !IO) else type_to_prefix_suffix_for_c_no_size(Opts, FieldType, TypePrefix, TypeSuffix), expect(unify(TypeSuffix, ""), $pred, "TypeSuffix is not empty"), - io.format(Stream, "%s%s f%d;\n", - [s(IndentStr), s(TypePrefix), i(Num)], !IO) + io.format(Stream, "%s%s f%u;\n", + [s(IndentStr), s(TypePrefix), u(Num)], !IO) ). %---------------------------------------------------------------------------% @@ -250,15 +249,15 @@ mlds_output_vector_cell_group_decl(Opts, Stream, Indent, TypeNum = ml_vector_common_type_num(TypeRawNum), CellGroup = ml_vector_cell_group(Type, StructDefn, _FieldNames, _NextRow, Rows), - NumRows = cord.length(Rows), + NumRows = cord.ulength(Rows), IndentStr = indent2_string(Indent), type_to_prefix_suffix_for_c(Opts, Type, no_size, TypePrefix, TypeSuffix), mlds_output_struct_defn(Opts, Stream, Indent, ModuleName, StructDefn, !IO), io.format(Stream, - "\n%sstatic /* final */ const %s %s_vector_common_%d[%d]%s;\n", + "\n%sstatic /* final */ const %s %s_vector_common_%u[%u]%s;\n", [s(IndentStr), s(TypePrefix), - s(MangledModuleName), i(TypeRawNum), i(NumRows), s(TypeSuffix)], !IO). + s(MangledModuleName), u(TypeRawNum), u(NumRows), s(TypeSuffix)], !IO). %---------------------% @@ -281,19 +280,19 @@ mlds_output_vector_cell_group_defn(Opts, Stream, Indent, MangledModuleName, CellGroup = ml_vector_cell_group(Type, _ClassDefn, _FieldNames, _NextRow, RowCords), Rows = cord.list(RowCords), - list.length(Rows, NumRows), + list.ulength(Rows, NumRows), IndentStr = indent2_string(Indent), type_to_prefix_suffix_for_c(Opts, Type, no_size, TypePrefix, TypeSuffix), io.format(Stream, - "\n%sstatic /* final */ const %s %s_vector_common_%d[%d]%s = {\n", + "\n%sstatic /* final */ const %s %s_vector_common_%u[%u]%s = {\n", [s(IndentStr), s(TypePrefix), - s(MangledModuleName), i(TypeRawNum), i(NumRows), s(TypeSuffix)], !IO), - list.foldl2(mlds_output_cell(Opts, Stream, Indent + 1u), Rows, 0, _, !IO), + s(MangledModuleName), u(TypeRawNum), u(NumRows), s(TypeSuffix)], !IO), + list.foldl2(mlds_output_cell(Opts, Stream, Indent + 1u), Rows, 0u, _, !IO), io.format(Stream, "%s};\n", [s(IndentStr)], !IO). :- pred mlds_output_cell(mlds_to_c_opts::in, io.text_output_stream::in, - indent::in, mlds_initializer::in, int::in, int::out, + indent::in, mlds_initializer::in, uint::in, uint::out, io::di, io::uo) is det. mlds_output_cell(Opts, Stream, Indent, Initializer, !RowNum, !IO) :- @@ -304,9 +303,9 @@ mlds_output_cell(Opts, Stream, Indent, Initializer, !RowNum, !IO) :- EndChar = '\n' ), ThisRowNum = !.RowNum, - !:RowNum = !.RowNum + 1, - io.format(Stream, "%s/* row %3d */%c", - [s(IndentStr), i(ThisRowNum), c(EndChar)], !IO), + !:RowNum = !.RowNum + 1u, + io.format(Stream, "%s/* row %3u */%c", + [s(IndentStr), u(ThisRowNum), c(EndChar)], !IO), mlds_output_initializer_body(Opts, Stream, Indent, Initializer, !IO), io.write_string(Stream, ",\n", !IO). @@ -355,9 +354,9 @@ mlds_output_alloc_site_defn(_Opts, Stream, Indent, MLDS_ModuleName, Context = context(FileName, LineNumber), FileNameStr = quote_string_c(FileName), IndentStr = indent2_string(Indent), - io.format(Stream, "%s{ %s, %s, %d, %s, %d },\n", + io.format(Stream, "%s{ %s, %s, %d, %s, %u },\n", [s(IndentStr), s(QualFuncNameStr), s(FileNameStr), i(LineNumber), - s(TypeStr), i(Size)], !IO). + s(TypeStr), u(Size)], !IO). %---------------------------------------------------------------------------% diff --git a/compiler/mlds_to_c_stmt.m b/compiler/mlds_to_c_stmt.m index 26ef59877..8d3d6d4f5 100644 --- a/compiler/mlds_to_c_stmt.m +++ b/compiler/mlds_to_c_stmt.m @@ -1111,7 +1111,7 @@ mlds_output_stmt_atomic_new_object(Opts, Stream, Indent, AtomicStmt, maybe_alloc_id_to_string(MaybeAllocId) = MaybeAllocIdStr :- ( MaybeAllocId = yes(mlds_alloc_id(Num)), - string.format("&MR_alloc_sites[%d]", [i(Num)], MaybeAllocIdStr) + string.format("&MR_alloc_sites[%u]", [u(Num)], MaybeAllocIdStr) ; MaybeAllocId = no, MaybeAllocIdStr = "NULL" diff --git a/compiler/mlds_to_c_type.m b/compiler/mlds_to_c_type.m index 7b87be2e8..445336131 100644 --- a/compiler/mlds_to_c_type.m +++ b/compiler/mlds_to_c_type.m @@ -98,9 +98,9 @@ :- import_module parse_tree.prog_foreign. :- import_module parse_tree.prog_type. -:- import_module int. :- import_module require. :- import_module string. +:- import_module uint. %---------------------------------------------------------------------------% @@ -394,8 +394,8 @@ array_type_suffix_for_c(InitSize) = ArraySuffix :- % Standard ANSI/ISO C does not allow arrays of size 0. % But the MLDS does. To keep the C compiler happy, we therefore % convert zero-element MLDS arrays into one-element C arrays. - int.max(Size0, 1, Size), - string.format("[%d]", [i(Size)], ArraySuffix) + Size = uint.max(Size0, 1u), + string.format("[%u]", [u(Size)], ArraySuffix) ). %---------------------------------------------------------------------------% diff --git a/compiler/mlds_to_cs_data.m b/compiler/mlds_to_cs_data.m index 8a15ef04a..c6042e5d3 100644 --- a/compiler/mlds_to_cs_data.m +++ b/compiler/mlds_to_cs_data.m @@ -272,16 +272,16 @@ output_rval_for_csharp(Info, Rval, Stream, !IO) :- ModuleSymName = mlds_module_name_to_sym_name(ModuleName), MangledModuleName = strip_mercury_and_mangle_sym_name_for_csharp(ModuleSymName), - io.format(Stream, "%s.MR_scalar_common_%d[%d]", - [s(MangledModuleName), i(TypeNum), i(RowNum)], !IO) + io.format(Stream, "%s.MR_scalar_common_%u[%u]", + [s(MangledModuleName), u(TypeNum), u(RowNum)], !IO) ; Rval = ml_vector_common_row_addr(VectorCommon, RowRval), VectorCommon = mlds_vector_common(_ModuleName, _Type, ml_vector_common_type_num(TypeNum), StartRowNum, _NumRows), % XXX Why do we print a "MangledModuleName." prefix for scalar common % addresses but not for vector common addresses? - io.format(Stream, "MR_vector_common_%d[%d + ", - [i(TypeNum), i(StartRowNum)], !IO), + io.format(Stream, "MR_vector_common_%u[%u + ", + [u(TypeNum), u(StartRowNum)], !IO), output_rval_for_csharp(Info, RowRval, Stream, !IO), io.write_string(Stream, "]", !IO) ; diff --git a/compiler/mlds_to_cs_func.m b/compiler/mlds_to_cs_func.m index c7589ef33..e06074b38 100644 --- a/compiler/mlds_to_cs_func.m +++ b/compiler/mlds_to_cs_func.m @@ -46,7 +46,6 @@ :- import_module parse_tree.prog_data. :- import_module bool. -:- import_module int. :- import_module maybe. :- import_module string. :- import_module term. @@ -138,7 +137,7 @@ output_func_decl_for_csharp(Info, Stream, Indent, FuncName, OutputAux, FuncNameStr = function_name_to_ll_string_for_csharp(FuncName), get_return_type_and_out_params_for_csharp(Info, RetTypes, RetTypeStr, OutParamTypes), - list.map_foldl(make_out_param, OutParamTypes, OutParams, 2, _), + list.map_foldl(make_out_param, OutParamTypes, OutParams, 2u, _), ParamsStr = params_to_string_for_csharp(Info, Indent, Parameters ++ OutParams), io.format(Stream, "%s %s%s\n", @@ -146,9 +145,9 @@ output_func_decl_for_csharp(Info, Stream, Indent, FuncName, OutputAux, ). :- pred make_out_param(mlds_type::in, mlds_argument::out, - int::in, int::out) is det. + uint::in, uint::out) is det. -make_out_param(Type, Argument, Num, Num + 1) :- +make_out_param(Type, Argument, Num, Num + 1u) :- VarName = lvn_comp_var(lvnc_out_param(Num)), Argument = mlds_argument(VarName, mlds_ptr_type(Type), gc_no_stmt). diff --git a/compiler/mlds_to_cs_global.m b/compiler/mlds_to_cs_global.m index 722c66f67..4fd189e6e 100644 --- a/compiler/mlds_to_cs_global.m +++ b/compiler/mlds_to_cs_global.m @@ -180,14 +180,14 @@ output_scalar_defns_for_csharp(Info, Stream, Indent, TypeNum, CellGroup, IndentStr = indent2_string(Indent), TypeStr = type_to_string_for_csharp(Info, Type), - io.format(Stream, "%sprivate static readonly %s[] MR_scalar_common_%d = ", - [s(IndentStr), s(TypeStr), i(TypeRawNum)], !IO), + io.format(Stream, "%sprivate static readonly %s[] MR_scalar_common_%u = ", + [s(IndentStr), s(TypeStr), u(TypeRawNum)], !IO), output_initializer_alloc_only_for_csharp(Info, Stream, init_array(RowInits), yes(ArrayType), ";", !IO), MLDS_ModuleName = Info ^ csoi_module_name, record_scalar_inits_build_dep_graph(MLDS_ModuleName, Type, TypeNum, - RowInits, 0, _, !InitMap, !DepGraph). + RowInits, 0u, _, !InitMap, !DepGraph). :- pred output_scalar_init_for_csharp(csharp_out_info::in, io.text_output_stream::in, indent::in, @@ -199,8 +199,8 @@ output_scalar_init_for_csharp(Info, Stream, Indent, Map, Scalar, !IO) :- map.lookup(Map, Scalar, Initializer), Scalar = mlds_scalar_common(_, Type, TypeNum, RowNum), TypeNum = ml_scalar_common_type_num(TypeRawNum), - io.format(Stream, "%sMR_scalar_common_%d[%d] =\n", - [s(IndentStr), i(TypeRawNum), i(RowNum)], !IO), + io.format(Stream, "%sMR_scalar_common_%u[%u] =\n", + [s(IndentStr), u(TypeRawNum), u(RowNum)], !IO), output_initializer_body_for_csharp(Info, Stream, at_start_of_line, Indent + 1u, Initializer, yes(Type), ";", !IO). @@ -233,8 +233,8 @@ output_vector_cell_decl_for_csharp(Info, Stream, Indent, TypeNum, IndentStr = indent2_string(Indent), TypeStr = type_to_string_for_csharp(Info, Type), io.format(Stream, - "%sprivate static /* readonly */ %s[] MR_vector_common_%d;\n", - [s(IndentStr), s(TypeStr), i(TypeRawNum)], !IO). + "%sprivate static /* readonly */ %s[] MR_vector_common_%u;\n", + [s(IndentStr), s(TypeStr), u(TypeRawNum)], !IO). :- pred output_vector_cell_init_for_csharp(csharp_out_info::in, io.text_output_stream::in, indent::in, @@ -250,8 +250,8 @@ output_vector_cell_init_for_csharp(Info, Stream, Indent, TypeNum, CellGroup = ml_vector_cell_group(Type, _ClassDefn, _FieldIds, _NextRow, RowInits), TypeStr = type_to_string_for_csharp(Info, Type), - io.format(Stream, "%sMR_vector_common_%d = new %s[]\n", - [s(IndentStr), i(TypeRawNum), s(TypeStr)], !IO), + io.format(Stream, "%sMR_vector_common_%u = new %s[]\n", + [s(IndentStr), u(TypeRawNum), s(TypeStr)], !IO), io.format(Stream, "%s{\n", [s(Indent1Str)], !IO), output_nonempty_initializer_body_list_for_csharp(Info, Stream, Indent + 2u, cord.list(RowInits), "", !IO), diff --git a/compiler/mlds_to_java_data.m b/compiler/mlds_to_java_data.m index cfba0610d..b6ffe9d11 100644 --- a/compiler/mlds_to_java_data.m +++ b/compiler/mlds_to_java_data.m @@ -293,16 +293,16 @@ output_rval_for_java(Info, Rval, Stream, !IO) :- ModuleSymName = mlds_module_name_to_sym_name(ModuleName), mangle_sym_name_for_java(ModuleSymName, module_qual, "__", MangledModuleName), - io.format(Stream, "%s.MR_scalar_common_%d[%d]", - [s(MangledModuleName),i(TypeNum), i(RowNum)], !IO) + io.format(Stream, "%s.MR_scalar_common_%u[%u]", + [s(MangledModuleName), u(TypeNum), u(RowNum)], !IO) ; Rval = ml_vector_common_row_addr(VectorCommon, RowRval), VectorCommon = mlds_vector_common(_ModuleName, _Type, ml_vector_common_type_num(TypeNum), StartRowNum, _NumRows), % XXX Why do we print a "MangledModuleName." prefix for scalar common % addresses but not for vector common addresses? - io.format(Stream, "MR_vector_common_%d[%d + ", - [i(TypeNum), i(StartRowNum)], !IO), + io.format(Stream, "MR_vector_common_%u[%u + ", + [u(TypeNum), u(StartRowNum)], !IO), output_rval_for_java(Info, RowRval, Stream, !IO), io.write_string(Stream, "]", !IO) ; diff --git a/compiler/mlds_to_java_global.m b/compiler/mlds_to_java_global.m index ad53be553..db5db76d7 100644 --- a/compiler/mlds_to_java_global.m +++ b/compiler/mlds_to_java_global.m @@ -220,14 +220,14 @@ output_scalar_defns_for_java(Info, Stream, Indent, TypeNum, CellGroup, IndentStr = indent2_string(Indent), TypeStr = type_to_string_for_java(Info, Type), - io.format(Stream, "%sprivate static final %s[] MR_scalar_common_%d = ", - [s(IndentStr), s(TypeStr), i(TypeRawNum)], !IO), + io.format(Stream, "%sprivate static final %s[] MR_scalar_common_%u = ", + [s(IndentStr), s(TypeStr), u(TypeRawNum)], !IO), output_initializer_alloc_only_for_java(Info, Stream, init_array(RowInits), yes(ArrayType), ";", !IO), MLDS_ModuleName = Info ^ joi_module_name, record_scalar_inits_build_dep_graph(MLDS_ModuleName, Type, TypeNum, - RowInits, 0, _, !InitMap, !DepGraph). + RowInits, 0u, _, !InitMap, !DepGraph). :- pred output_scalar_init_method_for_java(java_out_info::in, io.text_output_stream::in, indent::in, @@ -253,8 +253,8 @@ output_scalar_init_for_java(Info, Stream, Indent, InitMap, Scalar, !IO) :- map.lookup(InitMap, Scalar, Initializer), Scalar = mlds_scalar_common(_, Type, TypeNum, RowNum), TypeNum = ml_scalar_common_type_num(TypeRawNum), - io.format(Stream, "%sMR_scalar_common_%d[%d] =\n", - [s(IndentStr), i(TypeRawNum), i(RowNum)], !IO), + io.format(Stream, "%sMR_scalar_common_%u[%u] =\n", + [s(IndentStr), u(TypeRawNum), u(RowNum)], !IO), output_initializer_body_for_java(Info, Stream, at_start_of_line, Indent + 1u, Initializer, yes(Type), ";", !IO). @@ -288,8 +288,8 @@ output_vector_cell_group_for_java(Info, Stream, Indent, TypeNum, IndentStr = indent2_string(Indent), Indent1Str = indent2_string(Indent + 1u), TypeStr = type_to_string_for_java(Info, Type), - io.format(Stream, "%sprivate static final %s MR_vector_common_%d[] =\n", - [s(IndentStr), s(TypeStr), i(TypeRawNum)], !IO), + io.format(Stream, "%sprivate static final %s MR_vector_common_%u[] =\n", + [s(IndentStr), s(TypeStr), u(TypeRawNum)], !IO), io.format(Stream, "%s{\n", [s(Indent1Str)], !IO), output_nonempty_initializer_body_list_for_java(Info, Stream, Indent + 2u, cord.list(RowInits), "", !IO), diff --git a/compiler/mlds_to_java_wrap.m b/compiler/mlds_to_java_wrap.m index e20254069..e60088a76 100644 --- a/compiler/mlds_to_java_wrap.m +++ b/compiler/mlds_to_java_wrap.m @@ -64,6 +64,7 @@ :- import_module set. :- import_module string. :- import_module term_context. +:- import_module uint. %---------------------------------------------------------------------------% @@ -225,7 +226,7 @@ generate_call_method(Arity, CodeAddrs, MethodDefn) :- mlds_argument::out) is det. create_generic_arg(I, ArgName, Arg) :- - ArgName = lvn_comp_var(lvnc_arg(I)), + ArgName = lvn_comp_var(lvnc_arg(uint.cast_from_int(I))), Arg = mlds_argument(ArgName, mlds_generic_type, gc_no_stmt). :- type call_method_inputs diff --git a/compiler/mlds_to_target_util.m b/compiler/mlds_to_target_util.m index cb8fea644..1967ccd85 100644 --- a/compiler/mlds_to_target_util.m +++ b/compiler/mlds_to_target_util.m @@ -217,7 +217,7 @@ :- pred record_scalar_inits_build_dep_graph(mlds_module_name::in, mlds_type::in, ml_scalar_common_type_num::in, - list(mlds_initializer)::in, int::in, int::out, + list(mlds_initializer)::in, uint::in, uint::out, map(mlds_scalar_common, mlds_initializer)::in, map(mlds_scalar_common, mlds_initializer)::out, digraph(mlds_scalar_common)::in, digraph(mlds_scalar_common)::out) is det. @@ -276,7 +276,6 @@ :- import_module parse_tree.prog_util. :- import_module char. -:- import_module int. :- import_module library. :- import_module maybe. :- import_module pair. @@ -541,7 +540,7 @@ record_scalar_inits_build_dep_graph(MLDS_ModuleName, Type, TypeNum, digraph.add_vertex(Scalar, _Key, !DepGraph), add_scalar_initializer_deps(Scalar, Initializer, !DepGraph), - !:RowNum = !.RowNum + 1, + !:RowNum = !.RowNum + 1u, record_scalar_inits_build_dep_graph(MLDS_ModuleName, Type, TypeNum, Initializers, !RowNum, !InitMap, !DepGraph).