Skip to content

Commit 01a9e20

Browse files
committed
CHB:ARM:remove exituse typing rules
1 parent 083f306 commit 01a9e20

File tree

3 files changed

+2
-71
lines changed

3 files changed

+2
-71
lines changed

CodeHawk/CHB/bchlib/bCHSystemSettings.ml

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -83,23 +83,6 @@ let _ =
8383
("STRB-store", "enable");
8484
("STRH-store", "enable");
8585

86-
(* function return type back propagation *)
87-
("ADD-exituse", "enable");
88-
("AND-exituse", "enable");
89-
("ASR-exituse", "enable");
90-
("LDR-exituse", "enable");
91-
("LDRB-exituse", "enable");
92-
("LDRH-exituse", "enable");
93-
("LSL-exituse", "enable");
94-
("LSR-exituse", "enable");
95-
("MOV-exituse", "enable");
96-
("MVN-exituse", "enable");
97-
("ORR-exituse", "enable");
98-
("RSB-exituse", "enable");
99-
("SUB-exituse", "enable");
100-
("UBFX-exituse", "enable");
101-
("UXTH-exituse", "enable");
102-
10386
(* default setting of lhs *)
10487
("ASR-def-lhs", "enable");
10588
("LDRB-def-lhs", "enable");

CodeHawk/CHB/bchlib/bCHVersion.ml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,8 @@ end
9595

9696

9797
let version = new version_info_t
98-
~version:"0.6.0_20250902"
99-
~date:"2025-09-02"
98+
~version:"0.6.0_20250903"
99+
~date:"2025-09-03"
100100
~licensee: None
101101
~maxfilesize: None
102102
()

CodeHawk/CHB/bchlibarm32/bCHFnARMTypeConstraints.ml

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)