Skip to content
This repository was archived by the owner on Jan 30, 2026. It is now read-only.

Commit 4424938

Browse files
committed
Removing more unused variables
1 parent 216fd5d commit 4424938

2 files changed

Lines changed: 110 additions & 80 deletions

File tree

src/mlang/backend_compilers/bir_to_dgfip_c.ml

Lines changed: 108 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -816,82 +816,116 @@ let rec generate_stmt (dgfip_flags : Dgfip_options.flags) (p : Mir.program)
816816
let print = fresh_c_local "print" in
817817
let print_def = print ^ "_def" in
818818
let print_val = print ^ "_val" in
819-
pr "@;@[<v 2>{";
820-
pr "@;char %s;@;double %s;@;int %s;" print_def print_val print;
821-
List.iter
822-
(fun (arg : Com.Var.t Com.print_arg Pos.marked) ->
823-
match Pos.unmark arg with
824-
| PrintString s ->
825-
pr "@;print_string(%s, %s, \"%s\");" print_std pr_ctx
826-
(str_escape s)
827-
| PrintAccess (info, m_a) -> (
828-
let pr_sp m_sp_opt v_opt =
829-
let vsd_id =
830-
match v_opt with
831-
| Some v -> VID.gen_var_space_id m_sp_opt v
832-
| None -> "irdata->var_space"
833-
in
834-
let vsd = Pp.spr "irdata->var_spaces[%s]" vsd_id in
835-
pr "@;@[<v 2>if (%s.is_default == 0) {" vsd;
836-
pr "@;print_string(%s, %s, %s.name);" print_std pr_ctx vsd;
837-
pr "@;print_string(%s, %s, \".\");" print_std pr_ctx;
838-
pr "@]@;}@;"
839-
in
840-
match Pos.unmark m_a with
841-
| VarAccess (m_sp_opt, v) ->
842-
pr_sp m_sp_opt (Some v);
843-
let ptr = VID.gen_info_ptr v in
844-
let fld =
845-
match info with Com.Name -> "name" | Com.Alias -> "alias"
819+
(* The [print] var only is needed in a few cases. *)
820+
let print_var_is_needed = ref false in
821+
(* Iterating on the arguments and saving the associated printers in a
822+
list to check as we build it if we will need the print_var; in which
823+
case, we set the previous reference to true. *)
824+
let printers =
825+
List.map
826+
(fun (arg : Com.Var.t Com.print_arg Pos.marked) ->
827+
match Pos.unmark arg with
828+
| PrintString s ->
829+
fun () ->
830+
pr "@;print_string(%s, %s, \"%s\");" print_std pr_ctx
831+
(str_escape s)
832+
| PrintAccess (info, m_a) -> (
833+
let pr_sp m_sp_opt v_opt =
834+
let vsd_id =
835+
match v_opt with
836+
| Some v -> VID.gen_var_space_id m_sp_opt v
837+
| None -> "irdata->var_space"
846838
in
847-
pr "@;print_string(%s, %s, %s->%s);" print_std pr_ctx ptr fld
848-
| TabAccess (m_sp_opt, v, m_idx) ->
849-
pr_sp m_sp_opt (Some v);
850-
pr "@;@[<v 2>{";
851-
pr "T_varinfo *info;";
852-
let idx_tab = Com.Var.loc_tab_idx v in
839+
let vsd = Pp.spr "irdata->var_spaces[%s]" vsd_id in
840+
pr "@;@[<v 2>if (%s.is_default == 0) {" vsd;
841+
pr "@;print_string(%s, %s, %s.name);" print_std pr_ctx vsd;
842+
pr "@;print_string(%s, %s, \".\");" print_std pr_ctx;
843+
pr "@]@;}@;"
844+
in
845+
match Pos.unmark m_a with
846+
| VarAccess (m_sp_opt, v) ->
847+
fun () ->
848+
pr_sp m_sp_opt (Some v);
849+
let ptr = VID.gen_info_ptr v in
850+
let fld =
851+
match info with
852+
| Com.Name -> "name"
853+
| Com.Alias -> "alias"
854+
in
855+
pr "@;print_string(%s, %s, %s->%s);" print_std pr_ctx ptr
856+
fld
857+
| TabAccess (m_sp_opt, v, m_idx) ->
858+
fun () ->
859+
pr_sp m_sp_opt (Some v);
860+
pr "@;@[<v 2>{";
861+
pr "T_varinfo *info;";
862+
let idx_tab = Com.Var.loc_tab_idx v in
863+
generate_expr_with_res_in p dgfip_flags oc print_def
864+
print_val m_idx;
865+
pr "info = lis_tabaccess_varinfo(irdata, %d, %s, %s);"
866+
idx_tab print_def print_val;
867+
let fld =
868+
match info with
869+
| Com.Name -> "name"
870+
| Com.Alias -> "alias"
871+
in
872+
pr
873+
"@;\
874+
print_string(%s, %s, (info == NULL ? \"\" : \
875+
info->%s));"
876+
print_std pr_ctx fld;
877+
pr "@]@;}"
878+
| FieldAccess (m_sp_opt, e, f, _) ->
879+
let fld =
880+
match info with
881+
| Com.Name -> "name"
882+
| Com.Alias -> "alias"
883+
in
884+
let ef =
885+
StrMap.find (Pos.unmark f) p.program_event_fields
886+
in
887+
print_var_is_needed := ef.is_var;
888+
fun () ->
889+
pr_sp m_sp_opt None;
890+
if ef.is_var then (
891+
generate_expr_with_res_in p dgfip_flags oc print_def
892+
print_val e;
893+
pr "@;%s = (int)%s;" print print_val;
894+
pr
895+
"@;\
896+
@[<v 2>if (%s && 0 <= %s && %s < irdata->nb_events) \
897+
{"
898+
print_def print print;
899+
pr
900+
"@;\
901+
print_string(%s, %s, \
902+
irdata->events[%s]->field_%s_var->%s);"
903+
print_std pr_ctx print (Pos.unmark f) fld;
904+
pr "@]@;}"))
905+
| PrintIndent e ->
906+
fun () ->
853907
generate_expr_with_res_in p dgfip_flags oc print_def print_val
854-
m_idx;
855-
pr "info = lis_tabaccess_varinfo(irdata, %d, %s, %s);" idx_tab
856-
print_def print_val;
857-
let fld =
858-
match info with Com.Name -> "name" | Com.Alias -> "alias"
859-
in
860-
pr "@;print_string(%s, %s, (info == NULL ? \"\" : info->%s));"
861-
print_std pr_ctx fld;
908+
e;
909+
pr "@;@[<v 2>if (%s) {" print_def;
910+
pr "@;set_print_indent(%s, %s, %s);" print_std pr_ctx
911+
print_val;
862912
pr "@]@;}"
863-
| FieldAccess (m_sp_opt, e, f, _) ->
864-
pr_sp m_sp_opt None;
865-
let fld =
866-
match info with Com.Name -> "name" | Com.Alias -> "alias"
867-
in
868-
let ef = StrMap.find (Pos.unmark f) p.program_event_fields in
869-
if ef.is_var then (
870-
generate_expr_with_res_in p dgfip_flags oc print_def
871-
print_val e;
872-
pr "@;%s = (int)%s;" print print_val;
873-
pr "@;@[<v 2>if (%s && 0 <= %s && %s < irdata->nb_events) {"
874-
print_def print print;
875-
pr
876-
"@;\
877-
print_string(%s, %s, \
878-
irdata->events[%s]->field_%s_var->%s);"
879-
print_std pr_ctx print (Pos.unmark f) fld;
880-
pr "@]@;}"))
881-
| PrintIndent e ->
882-
generate_expr_with_res_in p dgfip_flags oc print_def print_val e;
883-
pr "@;@[<v 2>if (%s) {" print_def;
884-
pr "@;set_print_indent(%s, %s, %s);" print_std pr_ctx print_val;
885-
pr "@]@;}"
886-
| PrintExpr (e, min, max) ->
887-
generate_expr_with_res_in p dgfip_flags oc print_def print_val e;
888-
pr "@;@[<v 2>if (%s) {" print_def;
889-
pr "@;print_double(%s, %s, %s, %d, %d);" print_std pr_ctx
890-
print_val min max;
891-
pr "@]@;@[<v 2>} else {";
892-
pr "@;print_string(%s, %s, \"indefini\");" print_std pr_ctx;
893-
pr "@]@;}")
894-
args;
913+
| PrintExpr (e, min, max) ->
914+
fun () ->
915+
generate_expr_with_res_in p dgfip_flags oc print_def print_val
916+
e;
917+
pr "@;@[<v 2>if (%s) {" print_def;
918+
pr "@;print_double(%s, %s, %s, %d, %d);" print_std pr_ctx
919+
print_val min max;
920+
pr "@]@;@[<v 2>} else {";
921+
pr "@;print_string(%s, %s, \"indefini\");" print_std pr_ctx;
922+
pr "@]@;}")
923+
args
924+
in
925+
pr "@;@[<v 2>{";
926+
pr "@;char %s;@;double %s;" print_def print_val;
927+
if !print_var_is_needed then pr "@;int %s;" print;
928+
List.iter (fun f -> f ()) printers;
895929
pr "@]@;}"
896930
| ComputeTarget (Pos.Mark (tn, _), targs, m_sp_opt) ->
897931
let target = StrMap.find tn p.program_targets in
@@ -1430,7 +1464,7 @@ let generate_function_tmp_decls (oc : Format.formatter) (tf : Mir.target) =
14301464
let nb_args = List.length tf.target_args in
14311465
pr "@;@[<v 2>{";
14321466
pr "@;int i;";
1433-
pr "@;T_varinfo *info;";
1467+
(* pr "@;T_varinfo *info;"; *)
14341468
pr "@;irdata->tmps[irdata->tmps_org].def = 0;";
14351469
pr "@;irdata->tmps[irdata->tmps_org].val = 0.0;";
14361470
pr "@;irdata->tmps[irdata->tmps_org].info = NULL;";

src/mlang/backend_compilers/dgfip_gen_files.ml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -881,11 +881,11 @@ int change_couleur (int couleur,int typographie) {
881881
return 0;
882882
}
883883

884-
int get_couleur () {
884+
int get_couleur (void) {
885885
return color ;
886886
}
887887

888-
int get_typo () {
888+
int get_typo (void) {
889889
return typo ;
890890
}
891891

@@ -1957,7 +1957,6 @@ char lis_tabaccess(
19571957
char *res_def, double *res_val
19581958
) {
19591959
T_varinfo *info = lis_tabaccess_varinfo(irdata, idx_tab, idx_def, idx_val);
1960-
int idx = 0;
19611960
if (info == NULL) {
19621961
*res_val = 0.0;
19631962
if (
@@ -1999,7 +1998,6 @@ void ecris_tabaccess(
19991998
/* !!! */
20001999
void pr_var(T_print_context *pr_ctx, T_irdata *irdata, int var_space, char *nom) {
20012000
T_varinfo *info = NULL;
2002-
T_var_space *vsp;
20032001
char res_def = 0;
20042002
double res_val = 0.0;
20052003
@@ -2008,7 +2006,6 @@ void pr_var(T_print_context *pr_ctx, T_irdata *irdata, int var_space, char *nom)
20082006
if (info == NULL) {
20092007
fprintf(pr_ctx->std, "inconnu");
20102008
} else {
2011-
vsp = get_var_space(irdata, var_space);
20122009
lis_varinfo(irdata, var_space, info, &res_def, &res_val);
20132010
if (res_def == 0) {
20142011
fprintf(pr_ctx->std, "indefini");
@@ -2217,7 +2214,6 @@ void aff_val(
22172214
"T_varinfo *event_field_%s_var(T_irdata *irdata, char idx_def, \
22182215
double idx_val) {\n"
22192216
f;
2220-
pr " T_varinfo *info = NULL;\n";
22212217
pr " int idx = (int)floor(idx_val);\n";
22222218
pr " if (idx_def != 1 || idx < 0 || irdata->nb_events <= idx) {\n";
22232219
pr " return NULL;\n";

0 commit comments

Comments
 (0)