@@ -162,20 +162,6 @@ object (self)
162162 let get_variable_rdefs_r (v_r : variable_t traceresult ): symbol_t list =
163163 TR. tfold_default get_variable_rdefs [] v_r in
164164
165- let get_variable_defuses (v : variable_t ): symbol_t list =
166- let symvar = floc#f#env#mk_symbolic_variable v in
167- let varinvs = floc#varinv#get_var_def_uses symvar in
168- (match varinvs with
169- | [vinv] -> vinv#get_def_uses
170- | _ -> [] ) in
171-
172- let has_exit_use (v : variable_t ): bool =
173- let defuses = get_variable_defuses v in
174- List. exists (fun s -> s#getBaseName = " exit" ) defuses in
175-
176- let has_exit_use_r (v_r : variable_t traceresult ): bool =
177- TR. tfold_default has_exit_use false v_r in
178-
179165 (*
180166 let getopt_initial_argument_value (x: xpr_t): (register_t * int) option =
181167 match (rewrite_expr x) with
@@ -349,31 +335,11 @@ object (self)
349335 (LBLOCK [STR faddr; STR " :" ; STR iaddr; STR " : " ;
350336 op#toPretty; STR " is not a register" ]) in
351337
352- let regvar_linked_to_exit (mnem : string ) (op : arm_operand_int ) =
353- if op#is_register then
354- (if op#get_register = AR0 && (has_exit_use_r (op#to_variable floc)) then
355- let reg = op#to_register in
356- let tv_z = mk_reglhs_typevar reg faddr iaddr in
357- let fvar = add_return_capability (mk_function_typevar faddr) in
358- let tt_z = mk_vty_term tv_z in
359- let fterm = mk_vty_term fvar in
360- let rule = mnem ^ " -exituse" in
361- if fndata#is_typing_rule_enabled iaddr rule then
362- begin
363- log_subtype_constraint __LINE__ rule tt_z fterm;
364- store#add_subtype_constraint faddr iaddr rule tt_z fterm
365- end
366- else
367- log_subtype_rule_disabled __LINE__ rule tt_z fterm)
368- else
369- () in
370-
371338 match instr#get_opcode with
372339
373340 | Add (_ , _ , rd , rn , rm , _ ) ->
374341 begin
375342 (regvar_type_introduction " ADD" rd);
376- (regvar_linked_to_exit " ADD" rd);
377343
378344 (* Heuristic: if a small number (taken here as < 256) is added to
379345 a register value it is assumed that the value in the destination
@@ -459,7 +425,6 @@ object (self)
459425 let rndefs = get_variable_rdefs_r (rn#to_variable floc) in
460426 begin
461427 (regvar_type_introduction " ASR" rd);
462- (regvar_linked_to_exit " ASR" rd);
463428
464429 (* ASR results in a signed integer *)
465430 (let tc = mk_int_type_constant Signed 32 in
@@ -499,7 +464,6 @@ object (self)
499464 let rnreg = rn#to_register in
500465 begin
501466 (regvar_type_introduction " AND" rd);
502- (regvar_linked_to_exit " AND" rd);
503467
504468 List. iter (fun rnsym ->
505469 let rnaddr = rnsym#getBaseName in
@@ -523,7 +487,6 @@ object (self)
523487 let tyc = mk_int_type_constant Signed 32 in
524488 begin
525489 (regvar_type_introduction " MVN" rd);
526- (regvar_linked_to_exit " MVN" rd);
527490
528491 (* destination is an integer type *)
529492 (let tctypeterm = mk_cty_term tyc in
@@ -545,7 +508,6 @@ object (self)
545508 let rmreg = rm#to_register in
546509 begin
547510 (regvar_type_introduction " MVN" rd);
548- (regvar_linked_to_exit " MVN" rd);
549511
550512 (List. iter (fun rmsym ->
551513 let rmaddr = rmsym#getBaseName in
@@ -570,7 +532,6 @@ object (self)
570532 let rnreg = rn#to_register in
571533 begin
572534 (regvar_type_introduction " ORR" rd);
573- (regvar_linked_to_exit " ORR" rd);
574535
575536 List. iter (fun rnsym ->
576537 let rnaddr = rnsym#getBaseName in
@@ -865,7 +826,6 @@ object (self)
865826 let rttypevar = mk_reglhs_typevar rtreg faddr iaddr in
866827 begin
867828 (regvar_type_introduction " LDR" rt);
868- (regvar_linked_to_exit " LDR" rt);
869829
870830 (* loaded type may be known *)
871831 (let xmem_r = memop#to_expr floc in
@@ -1036,7 +996,6 @@ object (self)
1036996 let rttypevar = mk_reglhs_typevar rtreg faddr iaddr in
1037997 begin
1038998 (regvar_type_introduction " LDRB" rt);
1039- (regvar_linked_to_exit " LDRB" rt);
1040999
10411000 (* LDRB rt, [rn, rm] : X_rndef.load <: X_rt *)
10421001 (if rn#is_sp_register then
@@ -1082,7 +1041,6 @@ object (self)
10821041 let rttypevar = mk_reglhs_typevar rtreg faddr iaddr in
10831042 begin
10841043 (regvar_type_introduction " LDRB" rt);
1085- (regvar_linked_to_exit " LDRB" rt);
10861044
10871045 (* LDRB rt, ... : X_rt <: integer type *)
10881046 (let tc = mk_int_type_constant SignedNeutral 8 in
@@ -1104,7 +1062,6 @@ object (self)
11041062 let rttypevar = mk_reglhs_typevar rtreg faddr iaddr in
11051063 begin
11061064 (regvar_type_introduction " LDRH" rt);
1107- (regvar_linked_to_exit " LDRH" rt);
11081065
11091066 (* loaded type may be known *)
11101067 (let xmem_r = memop#to_expr floc in
@@ -1167,7 +1124,6 @@ object (self)
11671124 let rttypevar = mk_reglhs_typevar rtreg faddr iaddr in
11681125 begin
11691126 (regvar_type_introduction " LDRH" rt);
1170- (regvar_linked_to_exit " LDRH" rt);
11711127
11721128 (* LDRH rt, ... : X_rt <: integer type *)
11731129 (let tc = mk_int_type_constant SignedNeutral 16 in
@@ -1190,7 +1146,6 @@ object (self)
11901146 let rndefs = get_variable_rdefs_r (rn#to_variable floc) in
11911147 begin
11921148 (regvar_type_introduction " LSL" rd);
1193- (regvar_linked_to_exit " LSL" rd);
11941149
11951150 (* LSL results in an unsigned integer *)
11961151 (let tc = mk_int_type_constant Unsigned 32 in
@@ -1230,7 +1185,6 @@ object (self)
12301185 let rndefs = get_variable_rdefs_r (rn#to_variable floc) in
12311186 begin
12321187 (regvar_type_introduction " LSR" rd);
1233- (regvar_linked_to_exit " LSR" rd);
12341188
12351189 (* LSR results in an unsigned integer *)
12361190 (let tc = mk_int_type_constant Unsigned 32 in
@@ -1269,7 +1223,6 @@ object (self)
12691223 let lhstypevar = mk_reglhs_typevar rdreg faddr iaddr in
12701224 begin
12711225 (regvar_type_introduction " MOV" rd);
1272- (regvar_linked_to_exit " MOV" rd);
12731226
12741227 (let rmval = rm#to_numerical#toInt in
12751228 (* 0 provides no information about the type *)
@@ -1299,7 +1252,6 @@ object (self)
12991252 let rdreg = rd#to_register in
13001253 begin
13011254 (regvar_type_introduction " MOV" rd);
1302- (regvar_linked_to_exit " MOV" rd);
13031255
13041256 (* use reaching defs *)
13051257 (let rmreg = rm#to_register in
@@ -1396,7 +1348,6 @@ object (self)
13961348 let rmreg = rm#to_register in
13971349 begin
13981350 (regvar_type_introduction " RSB" rd);
1399- (regvar_linked_to_exit " RSB" rd);
14001351
14011352 (let rule = " RSB-rdef" in
14021353 List. iter (fun rmsym ->
@@ -1658,7 +1609,6 @@ object (self)
16581609 let rnreg = rn#to_register in
16591610 begin
16601611 (regvar_type_introduction " SUB" rd);
1661- (regvar_linked_to_exit " SUB" rd);
16621612
16631613 (* Note: Does not take into consideration the possibility of the
16641614 subtraction of two pointers *)
@@ -1692,7 +1642,6 @@ object (self)
16921642 | UnsignedBitFieldExtract (_ , rd , rn ) ->
16931643 begin
16941644 (regvar_type_introduction " UBFX" rd);
1695- (regvar_linked_to_exit " UBFX" rd);
16961645
16971646 (match rn#get_kind with
16981647 | ARMRegBitSequence (r , _ , _ ) ->
@@ -1726,7 +1675,6 @@ object (self)
17261675 let rdtypevar = mk_reglhs_typevar rdreg faddr iaddr in
17271676 begin
17281677 (regvar_type_introduction " UXTH" rd);
1729- (regvar_linked_to_exit " UXTH" rd);
17301678
17311679 (let opttc = mk_btype_constraint rdtypevar t_ushort in
17321680 let rule = " UXTH-def-lhs" in
0 commit comments