diff options
Diffstat (limited to 'backend')
-rw-r--r-- | backend/IRC.ml | 2 | ||||
-rw-r--r-- | backend/Machregsnames.ml | 24 | ||||
-rw-r--r-- | backend/Machregsnames.mli | 16 | ||||
-rw-r--r-- | backend/PrintLTL.ml | 2 | ||||
-rw-r--r-- | backend/PrintMach.ml | 3 | ||||
-rw-r--r-- | backend/PrintXTL.ml | 2 |
6 files changed, 44 insertions, 5 deletions
diff --git a/backend/IRC.ml b/backend/IRC.ml index e94d6fbb..ed5ae186 100644 --- a/backend/IRC.ml +++ b/backend/IRC.ml @@ -101,7 +101,7 @@ after IRC elimination, when assigning a stack slot to a spilled variable. *) let name_of_loc = function | R r -> - begin match Machregsaux.name_of_register r with + begin match Machregsnames.name_of_register r with | None -> "fixed-reg" | Some s -> s end diff --git a/backend/Machregsnames.ml b/backend/Machregsnames.ml new file mode 100644 index 00000000..fdcbd0e5 --- /dev/null +++ b/backend/Machregsnames.ml @@ -0,0 +1,24 @@ +(* *********************************************************************) +(* *) +(* The Compcert verified compiler *) +(* *) +(* Xavier Leroy, INRIA Paris-Rocquencourt *) +(* *) +(* Copyright Institut National de Recherche en Informatique et en *) +(* Automatique. All rights reserved. This file is distributed *) +(* under the terms of the INRIA Non-Commercial License Agreement. *) +(* *) +(* *********************************************************************) + +let register_names : (Machregs.mreg, string) Hashtbl.t = Hashtbl.create 31 + +let _ = + List.iter + (fun (s, r) -> Hashtbl.add register_names r (Camlcoq.camlstring_of_coqstring s)) + Machregs.register_names + +let name_of_register r = + Hashtbl.find_opt register_names r + +let register_by_name s = + Machregs.register_by_name (Camlcoq.coqstring_uppercase_ascii_of_camlstring s) diff --git a/backend/Machregsnames.mli b/backend/Machregsnames.mli new file mode 100644 index 00000000..1b600d35 --- /dev/null +++ b/backend/Machregsnames.mli @@ -0,0 +1,16 @@ +(* *********************************************************************) +(* *) +(* The Compcert verified compiler *) +(* *) +(* Xavier Leroy, INRIA Paris-Rocquencourt *) +(* *) +(* Copyright Institut National de Recherche en Informatique et en *) +(* Automatique. All rights reserved. This file is distributed *) +(* under the terms of the INRIA Non-Commercial License Agreement. *) +(* *) +(* *********************************************************************) + +(** Auxiliary functions on machine registers *) + +val name_of_register: Machregs.mreg -> string option +val register_by_name: string -> Machregs.mreg option diff --git a/backend/PrintLTL.ml b/backend/PrintLTL.ml index 1c449e74..d75ba19c 100644 --- a/backend/PrintLTL.ml +++ b/backend/PrintLTL.ml @@ -22,7 +22,7 @@ open PrintAST open PrintOp let mreg pp r = - match Machregsaux.name_of_register r with + match Machregsnames.name_of_register r with | Some s -> fprintf pp "%s" s | None -> fprintf pp "<unknown machreg>" diff --git a/backend/PrintMach.ml b/backend/PrintMach.ml index 517f3037..8a5f9a7c 100644 --- a/backend/PrintMach.ml +++ b/backend/PrintMach.ml @@ -16,12 +16,11 @@ open Printf open Camlcoq open Datatypes open AST -open Machregsaux open Mach open PrintAST let reg pp r = - match name_of_register r with + match Machregsnames.name_of_register r with | Some s -> fprintf pp "%s" s | None -> fprintf pp "<unknown reg>" diff --git a/backend/PrintXTL.ml b/backend/PrintXTL.ml index 6432682a..aeaef25e 100644 --- a/backend/PrintXTL.ml +++ b/backend/PrintXTL.ml @@ -22,7 +22,7 @@ open PrintOp open XTL let mreg pp r = - match Machregsaux.name_of_register r with + match Machregsnames.name_of_register r with | Some s -> fprintf pp "%s" s | None -> fprintf pp "<unknown machreg>" |