@@ -648,7 +648,6 @@ object (self)
648648 (floc#get_var_at_address ~btype: (ptr_deref ptype) xx)
649649 else
650650 xx in
651- let xx = TR. tvalue (floc#convert_xpr_offsets xx) ~default: xx in
652651 let rdef = get_rdef_r xvar_r in
653652 (xx :: xprs, xvar_r :: xvars, rdef :: rdefs, index + 1 ))
654653 ([] , [] , [] , 1 ) callargs in
@@ -739,16 +738,6 @@ object (self)
739738 match get_regvar_type_annotation () with
740739 | Some t -> t
741740 | _ -> t_unknown in
742- (*
743- let rresult_r =
744- TR.tmap
745- (fun rresult ->
746- TR.tfold_default
747- (fun v -> XOp ((Xf "addressofvar"), [(XVar v)]))
748- rresult
749- (floc#get_var_at_address rresult))
750- rresult_r in
751- *)
752741 let (tagstring, args) =
753742 mk_instrx_data_r
754743 ~vars_r: [vrd_r]
@@ -1075,26 +1064,19 @@ object (self)
10751064 let csetter = floc#f#get_associated_cc_setter floc#cia in
10761065 let tcond = rewrite_test_expr csetter txpr in
10771066 let fcond = rewrite_test_expr csetter fxpr in
1078- let tcond_r = floc#convert_xpr_offsets ~size: (Some 4 ) tcond in
1079- let fcond_r = floc#convert_xpr_offsets ~size: (Some 4 ) fcond in
1067+ let csetter_addr_r = string_to_doubleword csetter in
1068+ let csetter_instr_r =
1069+ TR. tbind get_arm_assembly_instruction csetter_addr_r in
10801070 let bytestr =
1081- try
1082- let instr =
1083- fail_tvalue
1084- (trerror_record
1085- (LBLOCK [STR " Internal error in FnARMDictionary:Branch" ]))
1086- (get_arm_assembly_instruction
1087- (fail_tvalue
1088- (trerror_record
1089- (LBLOCK [STR " FnARMDictionary:Branch: " ; STR csetter]))
1090- (string_to_doubleword csetter))) in
1091- instr#get_bytes_ashexstring
1092- with
1093- | _ -> " 0x0" in
1071+ TR. tfold
1072+ ~ok: (fun instr -> instr#get_bytes_ashexstring)
1073+ ~error: (fun e ->
1074+ begin log_error_result __FILE__ __LINE__ e; " 0x0" end )
1075+ csetter_instr_r in
10941076 let rdefs = (get_all_rdefs txpr) @ (get_all_rdefs tcond) in
10951077 let (tagstring, args) =
10961078 mk_instrx_data_r
1097- ~xprs_r: [Ok txpr; Ok fxpr; tcond_r; fcond_r ; xtgt_r]
1079+ ~xprs_r: [Ok txpr; Ok fxpr; Ok tcond; Ok fcond ; xtgt_r]
10981080 ~rdefs
10991081 () in
11001082 let (tags, args) = (tagstring :: [" TF" ; csetter; bytestr], args) in
@@ -1191,8 +1173,6 @@ object (self)
11911173 let xresult_r =
11921174 TR. tmap2 (fun xrn xrm -> XOp (XMinus , [xrn; xrm])) xrn_r xrm_r in
11931175 let result_r = TR. tmap rewrite_expr xresult_r in
1194- let result_r =
1195- TR. tbind (floc#convert_xpr_offsets ~size: (Some 4 )) result_r in
11961176 let rdefs =
11971177 [get_rdef_r xrn_r; get_rdef_r xrm_r] @ (get_all_rdefs_r result_r) in
11981178 let (tagstring, args) =
@@ -1530,8 +1510,6 @@ object (self)
15301510 let useshigh = [get_def_use_high_r vrt_r] in
15311511 let xxaddr_r = TR. tmap rewrite_expr xaddr_r in
15321512 let xrmem_r = TR. tmap rewrite_expr xmem_r in
1533- let xrmem_r =
1534- TR. tbind (floc#convert_xpr_offsets ~size: (Some 4 )) xrmem_r in
15351513 let _ =
15361514 TR. tfold_default
15371515 (fun xrmem -> ignore (get_string_reference floc xrmem)) () xrmem_r in
@@ -1736,7 +1714,6 @@ object (self)
17361714 let vmem_r = mem#to_variable floc in
17371715 let xmem_r = mem#to_expr floc in
17381716 let xrmem_r = TR. tmap rewrite_expr xmem_r in
1739- let xrmem_r = TR. tbind floc#convert_xpr_offsets xrmem_r in
17401717 let xxaddr_r = TR. tmap rewrite_expr xaddr_r in
17411718 let rdefs =
17421719 [get_rdef_r xrn_r; get_rdef_r xrm_r; get_rdef_memvar_r vmem_r]
@@ -2566,10 +2543,6 @@ object (self)
25662543 let xdst_r = dstop#to_expr floc in
25672544 let xxsrc_r = TR. tmap (rewrite_floc_expr srcfloc) xsrc_r in
25682545 let xxdst_r = TR. tmap (rewrite_expr ?restrict:(Some 4 )) xdst_r in
2569- let xxdst_r =
2570- TR. tmap
2571- (fun v -> XOp ((Xf " addressofvar" ), [(XVar v)]))
2572- (TR. tbind floc#get_var_at_address xxdst_r) in
25732546 let rdefs = [(get_rdef_r xsrc_r); (get_rdef_r xdst_r)] in
25742547 let _ =
25752548 TR. tfold_default
@@ -2643,11 +2616,6 @@ object (self)
26432616 (fun (acc , off ) _reg ->
26442617 let memop = arm_reg_deref ~with_offset: off basereg WR in
26452618 let memlhs_r = memop#to_variable floc in
2646- let memlhs_r =
2647- let r =
2648- TR. tbind
2649- (floc#convert_variable_offsets ~size: (Some 4 )) memlhs_r in
2650- if Result. is_ok r then r else memlhs_r in
26512619 (acc @ [memlhs_r], off + 4 )) ([] , 4 ) rl#get_register_op_list in
26522620 let rdefs = List. map get_rdef_r (baserhs_r :: rrhss_rl) in
26532621 let uses = List. map get_def_use_r (baselhs_r :: memlhss_rl) in
@@ -2674,26 +2642,21 @@ object (self)
26742642
26752643 | StoreRegister (c , rt , rn , rm , mem , _ ) ->
26762644 let vmem_r = mem#to_variable floc in
2677- let vmem_r =
2678- let r = TR. tbind (floc#convert_variable_offsets ~size: (Some 4 )) vmem_r in
2679- if Result. is_ok r then r else vmem_r in
26802645 let xaddr_r = mem#to_address floc in
26812646 let xrt_r = rt#to_expr floc in
26822647 let xrn_r = rn#to_expr floc in
26832648 let xrm_r = rm#to_expr floc in
26842649 let xxrt_r = TR. tmap rewrite_expr xrt_r in
2685- let xxrtc_r = TR. tbind floc#convert_xpr_offsets xxrt_r in
26862650 let xxaddr_r = TR. tmap rewrite_expr xaddr_r in
2687- let lhsvar_r = TR. tbind floc#get_var_at_address xxaddr_r in
26882651 let rdefs =
26892652 [get_rdef_r xrn_r;
26902653 get_rdef_r xrm_r;
26912654 get_rdef_r xrt_r;
26922655 get_rdef_r xxrt_r] in
26932656 let uses = [get_def_use_r vmem_r] in
26942657 let useshigh = [get_def_use_high_r vmem_r] in
2695- let xprs_r = [xrn_r; xrm_r; xrt_r; xxrt_r; xxrtc_r; xaddr_r] in
2696- let vars_r = [vmem_r; lhsvar_r ] in
2658+ let xprs_r = [xrn_r; xrm_r; xrt_r; xxrt_r; xaddr_r] in
2659+ let vars_r = [vmem_r] in
26972660 let _ =
26982661 floc#memrecorder#record_store_r
26992662 ~addr_r: xxaddr_r
@@ -2722,17 +2685,12 @@ object (self)
27222685
27232686 | StoreRegisterByte (c , rt , rn , rm , mem , _ ) ->
27242687 let vmem_r = mem#to_variable floc in
2725- let vmem_r =
2726- let r = TR. tbind (floc#convert_variable_offsets ~size: (Some 1 )) vmem_r in
2727- if Result. is_ok r then r else vmem_r in
27282688 let xaddr_r = mem#to_address floc in
27292689 let xrt_r = rt#to_expr floc in
27302690 let xrn_r = rn#to_expr floc in
27312691 let xrm_r = rm#to_expr floc in
27322692 let xxrt_r = TR. tmap rewrite_expr xrt_r in
27332693 let xxaddr_r = TR. tmap rewrite_expr xaddr_r in
2734- let lhsvar_r =
2735- TR. tbind (floc#get_var_at_address ~size: (Some 1 )) xxaddr_r in
27362694 let rdefs =
27372695 [get_rdef_r xrn_r;
27382696 get_rdef_r xrm_r;
@@ -2749,7 +2707,7 @@ object (self)
27492707 ~xpr_r: xxrt_r in
27502708 let (tagstring, args) =
27512709 mk_instrx_data_r
2752- ~vars_r: [vmem_r; lhsvar_r ]
2710+ ~vars_r: [vmem_r]
27532711 ~xprs_r: [xrn_r; xrm_r; xrt_r; xxrt_r; xaddr_r]
27542712 ~rdefs
27552713 ~uses
@@ -2774,13 +2732,7 @@ object (self)
27742732
27752733 | StoreRegisterDual (c , rt , rt2 , rn , rm , mem , mem2 ) ->
27762734 let vmem_r = mem#to_variable floc in
2777- let vmem_r =
2778- let r = TR. tbind (floc#convert_variable_offsets ~size: (Some 4 )) vmem_r in
2779- if Result. is_ok r then r else vmem_r in
27802735 let vmem2_r = mem2#to_variable floc in
2781- let vmem2_r =
2782- let r = TR. tbind (floc#convert_variable_offsets ~size: (Some 4 )) vmem2_r in
2783- if Result. is_ok r then r else vmem2_r in
27842736 let xaddr1_r = mem#to_address floc in
27852737 let xaddr2_r = mem2#to_address floc in
27862738 let xaddr1_r = TR. tmap rewrite_expr xaddr1_r in
@@ -2867,15 +2819,11 @@ object (self)
28672819
28682820 | StoreRegisterHalfword (c , rt , rn , rm , mem , _ ) ->
28692821 let vmem_r = mem#to_variable floc in
2870- let vmem_r =
2871- let r = TR. tbind (floc#convert_variable_offsets ~size: (Some 2 )) vmem_r in
2872- if Result. is_ok r then r else vmem_r in
28732822 let xaddr_r = mem#to_address floc in
28742823 let xrt_r = rt#to_expr floc in
28752824 let xrn_r = rn#to_expr floc in
28762825 let xrm_r = rm#to_expr floc in
28772826 let xxrt_r = TR. tmap rewrite_expr xrt_r in
2878- let xxrt_r = TR. tbind floc#convert_xpr_offsets xxrt_r in
28792827 let xxaddr_r = TR. tmap rewrite_expr xaddr_r in
28802828 let rdefs =
28812829 [get_rdef_r xrn_r;
0 commit comments