@ -257,7 +257,7 @@ let pp_seq_diff pp pe0 f =
(* * Pretty print an expression. *)
(* * Pretty print an expression. *)
let pp_exp_printenv pe0 f e0 =
let pp_exp_printenv ? ( print_types = false ) pe0 f e0 =
let pe , changed = color_pre_wrapper pe0 f e0 in
let pe , changed = color_pre_wrapper pe0 f e0 in
let e =
let e =
match pe . Pp . obj_sub with
match pe . Pp . obj_sub with
@ -268,7 +268,7 @@ let pp_exp_printenv pe0 f e0 =
in
in
if not ( Exp . equal e0 e ) then
if not ( Exp . equal e0 e ) then
match e with Exp . Lvar pvar -> Pvar . pp_value f pvar | _ -> assert false
match e with Exp . Lvar pvar -> Pvar . pp_value f pvar | _ -> assert false
else Exp . pp_printenv pe Typ . pp f e ;
else Exp . pp_printenv ~ print_types pe f e ;
color_post_wrapper changed f
color_post_wrapper changed f
@ -299,7 +299,7 @@ let pp_texp_full pe f = function
F . fprintf f " %a%a%a%a " ( Typ . pp_full pe ) typ pp_size nbytes pp_len dynamic_length Subtype . pp
F . fprintf f " %a%a%a%a " ( Typ . pp_full pe ) typ pp_size nbytes pp_len dynamic_length Subtype . pp
subtype
subtype
| e ->
| e ->
Exp . pp_printenv pe Typ . pp_full f e
Exp . pp_printenv ~ print_types : true pe f e
(* * Dump a type expression with all the details. *)
(* * Dump a type expression with all the details. *)
@ -380,19 +380,22 @@ let if_kind_to_string = function
(* * Pretty print an instruction. *)
(* * Pretty print an instruction. *)
let pp_instr pe0 f instr =
let pp_instr ~ print_types pe0 f instr =
let pp_typ = if print_types then Typ . pp_full else Typ . pp in
let pe , changed = color_pre_wrapper pe0 f instr in
let pe , changed = color_pre_wrapper pe0 f instr in
( match instr with
( match instr with
| Load ( id , e , t , loc ) ->
| Load ( id , e , t , loc ) ->
F . fprintf f " %a=*%a:%a [%a] " Ident . pp id ( pp_exp_printenv pe ) e ( Typ . pp pe ) t Location . pp loc
F . fprintf f " %a=*%a:%a [%a] " Ident . pp id ( pp_exp_printenv ~ print_types pe ) e ( pp_typ pe0 ) t
| Store ( e1 , t , e2 , loc ) ->
F . fprintf f " *%a:%a=%a [%a] " ( pp_exp_printenv pe ) e1 ( Typ . pp pe ) t ( pp_exp_printenv pe ) e2
Location . pp loc
Location . pp loc
| Store ( e1 , t , e2 , loc ) ->
F . fprintf f " *%a:%a=%a [%a] " ( pp_exp_printenv ~ print_types pe ) e1 ( pp_typ pe0 ) t
( pp_exp_printenv ~ print_types pe ) e2 Location . pp loc
| Prune ( cond , loc , true _ branch , _ ) ->
| Prune ( cond , loc , true _ branch , _ ) ->
F . fprintf f " PRUNE(%a, %b); [%a] " ( pp_exp_printenv pe ) cond true _ branch Location . pp loc
F . fprintf f " PRUNE(%a, %b); [%a] " ( pp_exp_printenv ~ print_types pe ) cond true _ branch
Location . pp loc
| Call ( ( id , _ ) , e , arg_ts , loc , cf ) ->
| Call ( ( id , _ ) , e , arg_ts , loc , cf ) ->
F . fprintf f " %a= " Ident . pp id ;
F . fprintf f " %a= " Ident . pp id ;
F . fprintf f " %a(%a)%a [%a] " ( pp_exp_printenv pe ) e
F . fprintf f " %a(%a)%a [%a] " ( pp_exp_printenv ~ print_types pe ) e
( Pp . comma_seq ( pp_exp_typ pe ) )
( Pp . comma_seq ( pp_exp_typ pe ) )
arg_ts CallFlags . pp cf Location . pp loc
arg_ts CallFlags . pp cf Location . pp loc
| Nullify ( pvar , loc ) ->
| Nullify ( pvar , loc ) ->
@ -423,7 +426,7 @@ let add_with_block_parameters_flag instr =
let is_block_pvar pvar = Typ . has_block_prefix ( Mangled . to_string ( Pvar . get_name pvar ) )
let is_block_pvar pvar = Typ . has_block_prefix ( Mangled . to_string ( Pvar . get_name pvar ) )
(* * Dump an instruction. *)
(* * Dump an instruction. *)
let d_instr ( i : instr ) = L . add_print_with_pe ~ color : Pp . Green pp_instr i
let d_instr ( i : instr ) = L . add_print_with_pe ~ color : Pp . Green ( pp_instr ~ print_types : true ) i
let pp_atom pe0 f a =
let pp_atom pe0 f a =
let pe , changed = color_pre_wrapper pe0 f a in
let pe , changed = color_pre_wrapper pe0 f a in