@@ -116,15 +116,23 @@ let generate_error_msg_info_update_stats ?(cn_source_loc_opt = None) () =
116
116
]
117
117
118
118
119
+ let cn_pop_msg_info_sym = Sym. fresh_pretty " cn_pop_msg_info"
120
+
121
+ let generate_cn_pop_msg_info =
122
+ let expr_ = A. (AilEcall (mk_expr (AilEident cn_pop_msg_info_sym), [] )) in
123
+ [ A. (AilSexpr (mk_expr expr_)) ]
124
+
125
+
119
126
let cn_assert_sym = Sym. fresh_pretty " cn_assert"
120
127
121
- let generate_cn_assert ?(cn_source_loc_opt = None ) ail_expr =
128
+ let generate_cn_assert (* ?(cn_source_loc_opt = None) * ) ail_expr =
122
129
let assertion_expr_ = A. (AilEcall (mk_expr (AilEident cn_assert_sym), [ ail_expr ])) in
123
130
let assertion_stat = A. (AilSexpr (mk_expr assertion_expr_)) in
124
- let error_msg_update_stats_ =
131
+ (* let error_msg_update_stats_ =
125
132
generate_error_msg_info_update_stats ~cn_source_loc_opt ()
126
- in
127
- error_msg_update_stats_ @ [ assertion_stat ]
133
+ in*)
134
+ (* error_msg_update_stats_ @*)
135
+ [ assertion_stat ]
128
136
129
137
130
138
let rec bt_to_cn_base_type = function
@@ -689,8 +697,10 @@ let dest_with_unit_check
689
697
fun d (b , s , e , is_unit ) ->
690
698
match d with
691
699
| Assert loc ->
692
- let assert_stmts = generate_cn_assert ~cn_source_loc_opt: (Some loc) e in
693
- (b, s @ assert_stmts)
700
+ let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt: (Some loc) () in
701
+ let pop_s = generate_cn_pop_msg_info in
702
+ let assert_stmts = generate_cn_assert (* ~cn_source_loc_opt:(Some loc)*) e in
703
+ (b, s @ upd_s @ assert_stmts @ pop_s)
694
704
| Return ->
695
705
let return_stmt = if is_unit then A. (AilSreturnVoid ) else A. (AilSreturn e) in
696
706
(b, s @ [ return_stmt ])
@@ -855,7 +865,7 @@ let rec cn_to_ail_expr_aux_internal
855
865
a dest ->
856
866
a
857
867
=
858
- fun const_prop pred_name dts globals (IT (term_ , basetype , loc )) d ->
868
+ fun const_prop pred_name dts globals (IT (term_ , basetype , _loc )) d ->
859
869
match term_ with
860
870
| Const const ->
861
871
let ail_expr_, is_unit = cn_to_ail_const_internal const in
@@ -1331,10 +1341,12 @@ let rec cn_to_ail_expr_aux_internal
1331
1341
let bs, ss, es = list_split_three bs_ss_es in
1332
1342
let f = mk_expr A. (AilEident sym) in
1333
1343
let ail_expr_ = A. AilEcall (f, es) in
1334
- let error_msg_update_stats_ =
1344
+ (* let error_msg_update_stats_ =
1335
1345
generate_error_msg_info_update_stats ~cn_source_loc_opt:(Some loc) ()
1336
- in
1337
- dest d (List. concat bs, List. concat ss @ error_msg_update_stats_, mk_expr ail_expr_)
1346
+ in*)
1347
+ dest
1348
+ d
1349
+ (List. concat bs, List. concat ss (* @ error_msg_update_stats_*) , mk_expr ail_expr_)
1338
1350
| Let ((var , t1 ), body ) ->
1339
1351
let b1, s1, e1 =
1340
1352
cn_to_ail_expr_aux_internal const_prop pred_name dts globals t1 PassBack
@@ -2542,7 +2554,7 @@ let cn_to_ail_resource_internal
2542
2554
dts
2543
2555
globals
2544
2556
(preds : (Sym.t * RP.definition) list )
2545
- loc
2557
+ _loc
2546
2558
=
2547
2559
let calculate_return_type = function
2548
2560
| ResourceTypes. Owned (sct , _ ) ->
@@ -2597,9 +2609,9 @@ let cn_to_ail_resource_internal
2597
2609
list_split_three
2598
2610
(List. map (fun it -> cn_to_ail_expr_internal dts globals it PassBack ) p.iargs)
2599
2611
in
2600
- let error_msg_update_stats_ =
2612
+ (* let error_msg_update_stats_ =
2601
2613
generate_error_msg_info_update_stats ~cn_source_loc_opt:(Some loc) ()
2602
- in
2614
+ in *)
2603
2615
let fcall =
2604
2616
A. (
2605
2617
AilEcall
@@ -2608,7 +2620,7 @@ let cn_to_ail_resource_internal
2608
2620
let binding = create_binding sym (bt_to_ail_ctype ~pred_sym: (Some pname) bt) in
2609
2621
( mk_expr fcall,
2610
2622
binding :: List. concat bs,
2611
- List. concat ss @ error_msg_update_stats_,
2623
+ List. concat ss (* @ error_msg_update_stats_*) ,
2612
2624
None )
2613
2625
in
2614
2626
let s_decl =
@@ -2704,17 +2716,17 @@ let cn_to_ail_resource_internal
2704
2716
list_split_three
2705
2717
(List. map (fun it -> cn_to_ail_expr_internal dts globals it PassBack ) q.iargs)
2706
2718
in
2707
- let error_msg_update_stats_ =
2719
+ (* let error_msg_update_stats_ =
2708
2720
generate_error_msg_info_update_stats ~cn_source_loc_opt:(Some loc) ()
2709
- in
2721
+ in *)
2710
2722
let fcall =
2711
2723
A. (
2712
2724
AilEcall
2713
2725
( mk_expr (AilEident pname),
2714
2726
(mk_expr (AilEident ptr_add_sym) :: es) @ [ mk_expr (AilEident enum_sym) ]
2715
2727
))
2716
2728
in
2717
- (mk_expr fcall, List. concat bs, List. concat ss @ error_msg_update_stats_, None )
2729
+ (mk_expr fcall, List. concat bs, List. concat ss (* @ error_msg_update_stats_*) , None )
2718
2730
in
2719
2731
let typedef_name = get_typedef_string (bt_to_ail_ctype i_bt) in
2720
2732
let incr_func_name =
@@ -2981,14 +2993,18 @@ let rec cn_to_ail_lat_internal ?(is_toplevel = true) dts pred_sym_opt globals pr
2981
2993
let b2, s2 = cn_to_ail_lat_internal ~is_toplevel dts pred_sym_opt globals preds lat in
2982
2994
(b1 @ b2 @ [ binding ], (decl :: s1) @ s2)
2983
2995
| LAT. Resource ((name , (ret , _bt )), (loc , _str_opt ), lat ) ->
2996
+ let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt: (Some loc) () in
2997
+ let pop_s = generate_cn_pop_msg_info in
2984
2998
let b1, s1 =
2985
2999
cn_to_ail_resource_internal ~is_pre: true ~is_toplevel name dts globals preds loc ret
2986
3000
in
2987
3001
let b2, s2 = cn_to_ail_lat_internal ~is_toplevel dts pred_sym_opt globals preds lat in
2988
- (b1 @ b2, s1 @ s2)
3002
+ (b1 @ b2, upd_s @ s1 @ pop_s @ s2)
2989
3003
| LAT. Constraint (lc , (loc , _str_opt ), lat ) ->
2990
3004
let b1, s, e = cn_to_ail_logical_constraint_internal dts globals PassBack lc in
2991
- let ss = s @ generate_cn_assert ~cn_source_loc_opt: (Some loc) e in
3005
+ let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt: (Some loc) () in
3006
+ let pop_s = generate_cn_pop_msg_info in
3007
+ let ss = upd_s @ s @ generate_cn_assert (* ~cn_source_loc_opt:(Some loc)*) e @ pop_s in
2992
3008
let b2, s2 = cn_to_ail_lat_internal ~is_toplevel dts pred_sym_opt globals preds lat in
2993
3009
(b1 @ b2, ss @ s2)
2994
3010
| LAT. I it ->
@@ -3019,6 +3035,13 @@ let cn_to_ail_predicate_internal
3019
3035
preds
3020
3036
c.packing_ft
3021
3037
in
3038
+ let ss =
3039
+ (* let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt:(Some rp_def.loc) () in
3040
+ let pop_s = generate_cn_pop_msg_info in*)
3041
+ (* upd_s @*)
3042
+ ss
3043
+ (* @ pop_s*)
3044
+ in
3022
3045
(match c.guard with
3023
3046
| IT (Const (Bool true ), _ , _ ) ->
3024
3047
let bs'', ss'' = clause_translate cs in
@@ -3114,25 +3137,36 @@ let rec cn_to_ail_post_aux_internal dts globals preds = function
3114
3137
(b1 @ b2 @ [ binding ], (decl :: s1) @ s2)
3115
3138
| LRT. Resource ((name , (re , bt )), (loc , _str_opt ), t ) ->
3116
3139
let new_name = generate_sym_with_suffix ~suffix: " _cn" name in
3140
+ let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt: (Some loc) () in
3141
+ let pop_s = generate_cn_pop_msg_info in
3117
3142
let b1, s1 =
3118
3143
cn_to_ail_resource_internal ~is_pre: false new_name dts globals preds loc re
3119
3144
in
3120
3145
let new_lrt =
3121
3146
Core_to_mucore. fn_spec_instrumentation_sym_subst_lrt (name, bt, new_name) t
3122
3147
in
3123
3148
let b2, s2 = cn_to_ail_post_aux_internal dts globals preds new_lrt in
3124
- (b1 @ b2, s1 @ s2)
3149
+ (b1 @ b2, upd_s @ s1 @ pop_s @ s2)
3125
3150
| LRT. Constraint (lc , (loc , _str_opt ), t ) ->
3151
+ let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt: (Some loc) () in
3152
+ let pop_s = generate_cn_pop_msg_info in
3126
3153
let b1, s, e = cn_to_ail_logical_constraint_internal dts globals PassBack lc in
3127
- let ss = s @ generate_cn_assert ~cn_source_loc_opt: (Some loc) e in
3154
+ let ss = upd_s @ s @ generate_cn_assert (* ~cn_source_loc_opt:(Some loc)*) e @ pop_s in
3128
3155
let b2, s2 = cn_to_ail_post_aux_internal dts globals preds t in
3129
3156
(b1 @ b2, ss @ s2)
3130
3157
| LRT. I -> ([] , [] )
3131
3158
3132
3159
3133
- let cn_to_ail_post_internal dts globals preds (RT. Computational (_bound , _oinfo , t )) =
3160
+ let cn_to_ail_post_internal
3161
+ (* loc*) dts
3162
+ globals
3163
+ preds
3164
+ (RT. Computational (_bound , _oinfo , t ))
3165
+ =
3166
+ (* let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt:(Some loc) () in
3167
+ let pop_s = generate_cn_pop_msg_info in*)
3134
3168
let bs, ss = cn_to_ail_post_aux_internal dts globals preds t in
3135
- (bs, List. map mk_stmt ss )
3169
+ (bs, List. map mk_stmt (* upd_s @ *) ss (* @ pop_s *) )
3136
3170
3137
3171
3138
3172
(* TODO: Add destination passing *)
@@ -3196,8 +3230,10 @@ let rec cn_to_ail_cnprog_internal_aux dts globals = function
3196
3230
else
3197
3231
((loc', b1 @ b2 @ [binding], s @ ail_stat_ :: ss), false) *)
3198
3232
| Statement (loc , stmt ) ->
3233
+ let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt: (Some loc) () in
3234
+ let pop_s = generate_cn_pop_msg_info in
3199
3235
let (bs, ss), no_op = cn_to_ail_cnstatement_internal dts globals (Assert loc) stmt in
3200
- ((bs, ss ), no_op)
3236
+ ((bs, upd_s @ ss @ pop_s ), no_op)
3201
3237
3202
3238
3203
3239
let cn_to_ail_cnprog_internal dts globals cn_prog =
@@ -3206,11 +3242,13 @@ let cn_to_ail_cnprog_internal dts globals cn_prog =
3206
3242
3207
3243
3208
3244
let cn_to_ail_statements dts globals (loc , cn_progs ) =
3245
+ let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt: (Some loc) () in
3246
+ let pop_s = generate_cn_pop_msg_info in
3209
3247
let bs_and_ss =
3210
3248
List. map (fun prog -> cn_to_ail_cnprog_internal dts globals prog) cn_progs
3211
3249
in
3212
3250
let bs, ss = List. split bs_and_ss in
3213
- (loc, (List. concat bs, List. concat ss))
3251
+ (loc, (List. concat bs, upd_s @ List. concat ss @ pop_s ))
3214
3252
3215
3253
3216
3254
let prepend_to_precondition ail_executable_spec (b1 , s1 ) =
@@ -3242,6 +3280,8 @@ let rec cn_to_ail_lat_internal_2 with_ownership_checking dts globals preds c_ret
3242
3280
in
3243
3281
prepend_to_precondition ail_executable_spec (binding :: b1, decl :: s1)
3244
3282
| LAT. Resource ((name , (ret , bt )), (loc , _str_opt ), lat ) ->
3283
+ let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt: (Some loc) () in
3284
+ let pop_s = generate_cn_pop_msg_info in
3245
3285
let new_name = generate_sym_with_suffix ~suffix: " _cn" name in
3246
3286
let b1, s1 =
3247
3287
cn_to_ail_resource_internal ~is_pre: true new_name dts globals preds loc ret
@@ -3258,10 +3298,12 @@ let rec cn_to_ail_lat_internal_2 with_ownership_checking dts globals preds c_ret
3258
3298
c_return_type
3259
3299
new_lat
3260
3300
in
3261
- prepend_to_precondition ail_executable_spec (b1, s1 )
3301
+ prepend_to_precondition ail_executable_spec (b1, upd_s @ s1 @ pop_s )
3262
3302
| LAT. Constraint (lc , (loc , _str_opt ), lat ) ->
3303
+ let upd_s = generate_error_msg_info_update_stats ~cn_source_loc_opt: (Some loc) () in
3304
+ let pop_s = generate_cn_pop_msg_info in
3263
3305
let b1, s, e = cn_to_ail_logical_constraint_internal dts globals PassBack lc in
3264
- let ss = s @ generate_cn_assert ~cn_source_loc_opt: (Some loc) e in
3306
+ let ss = upd_s @ s @ generate_cn_assert (* ~cn_source_loc_opt:(Some loc)*) e @ pop_s in
3265
3307
let ail_executable_spec =
3266
3308
cn_to_ail_lat_internal_2 with_ownership_checking dts globals preds c_return_type lat
3267
3309
in
0 commit comments