Skip to content
Snippets Groups Projects
Commit 24d73e67 authored by Allan Blanchard's avatar Allan Blanchard
Browse files

Merge branch 'feature/wp/fix-float-lit' into 'master'

[wp] back port from synchrone

See merge request frama-c/frama-c!2454
parents 17f278c9 15c82148
No related branches found
No related tags found
No related merge requests found
...@@ -196,12 +196,14 @@ let printers = [ ...@@ -196,12 +196,14 @@ let printers = [
Printf.sprintf "%.64g" ; Printf.sprintf "%.64g" ;
] ]
let re_int = Str.regexp "[0-9]+" let re_int_float = Str.regexp "\\(-?[0-9]+\\)\\(e[+-]?[0-9]+\\)?$"
let force_float r = let force_float r =
if Str.string_match re_int r 0 && if Str.string_match re_int_float r 0
Str.match_end () = String.length r then
then (r ^ ".0") else r let group n r = try Str.matched_group n r with Not_found -> ""
in group 1 r ^ ".0" ^ group 2 r
else r
let float_lit ulp (q : Q.t) = let float_lit ulp (q : Q.t) =
let v = match ulp with let v = match ulp with
......
...@@ -107,6 +107,11 @@ let f_bit_export = Lang.extern_p ~library ~bool:"bit_testb" ~prop:"bit_test" ( ...@@ -107,6 +107,11 @@ let f_bit_export = Lang.extern_p ~library ~bool:"bit_testb" ~prop:"bit_test" (
let () = let open LogicBuiltins in add_builtin "\\bit_test_stdlib" [Z;Z] f_bit_stdlib let () = let open LogicBuiltins in add_builtin "\\bit_test_stdlib" [Z;Z] f_bit_stdlib
let () = let open LogicBuiltins in add_builtin "\\bit_test" [Z;Z] f_bit_positive let () = let open LogicBuiltins in add_builtin "\\bit_test" [Z;Z] f_bit_positive
let f_bits = [ f_bit_stdlib ; f_bit_positive ; f_bit_export ]
let bit_test e k =
F.e_fun (if k <= 0 then f_bit_positive else f_bit_stdlib) [e ; e_int k]
(* -------------------------------------------------------------------------- *) (* -------------------------------------------------------------------------- *)
(* --- Matching utilities for simplifications --- *) (* --- Matching utilities for simplifications --- *)
(* -------------------------------------------------------------------------- *) (* -------------------------------------------------------------------------- *)
......
...@@ -73,6 +73,9 @@ val f_lsl : lfun ...@@ -73,6 +73,9 @@ val f_lsl : lfun
val f_lsr : lfun val f_lsr : lfun
val f_bitwised : lfun list (** All except f_bit_positive *) val f_bitwised : lfun list (** All except f_bit_positive *)
val f_bits : lfun list (** All bit-test functions *)
val bit_test : term -> int -> term
(** Simplifiers *) (** Simplifiers *)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment