Skip to content

Commit c7c9623

Browse files
committed
CHB:ARM: add type constraints for ASR
1 parent ed9f129 commit c7c9623

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

CodeHawk/CHB/bchlibarm32/bCHFnARMTypeConstraints.ml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,22 @@ object (self)
225225
| _ -> ())
226226
end
227227

228+
| ArithmeticShiftRight (_, _, rd, rn, rm, _) when rm#is_immediate ->
229+
let rdreg = rd#to_register in
230+
let lhstypevar = mk_reglhs_typevar rdreg faddr iaddr in
231+
let tc = mk_int_type_constant Signed 32 in
232+
let _ =
233+
store#add_subtype_constraint (mk_cty_term tc) (mk_vty_term lhstypevar) in
234+
let rnreg = rn#to_register in
235+
let rndefs = get_variable_rdefs (rn#to_variable floc) in
236+
237+
(List.iter (fun rnrdef ->
238+
let rnaddr = rnrdef#getBaseName in
239+
let rntypevar = mk_reglhs_typevar rnreg faddr rnaddr in
240+
let tyc = mk_int_type_constant Signed 32 in
241+
store#add_subtype_constraint
242+
(mk_cty_term tyc) (mk_vty_term rntypevar)) rndefs)
243+
228244
| BitwiseNot(_, _, rd, rm, _) when rm#is_immediate ->
229245
let rmval = rm#to_numerical#toInt in
230246
let rdreg = rd#to_register in

0 commit comments

Comments
 (0)