diff options
-rw-r--r-- | arm/Machregsaux.ml | 2 | ||||
-rw-r--r-- | arm/Machregsaux.mli | 3 | ||||
-rw-r--r-- | cparser/ExtendedAsm.ml | 1 | ||||
-rw-r--r-- | ia32/Machregsaux.ml | 2 | ||||
-rw-r--r-- | ia32/Machregsaux.mli | 1 | ||||
-rw-r--r-- | powerpc/Machregsaux.ml | 2 | ||||
-rw-r--r-- | powerpc/Machregsaux.mli | 3 |
7 files changed, 12 insertions, 2 deletions
diff --git a/arm/Machregsaux.ml b/arm/Machregsaux.ml index 3f7d0693..44e6b192 100644 --- a/arm/Machregsaux.ml +++ b/arm/Machregsaux.ml @@ -25,6 +25,8 @@ let register_names = [ ("F12", F12);("F13", F13);("F14", F14); ("F15", F15) ] +let scratch_register_names = [ "R14" ] + let name_of_register r = let rec rev_assoc = function | [] -> None diff --git a/arm/Machregsaux.mli b/arm/Machregsaux.mli index 90343b5b..f0feec96 100644 --- a/arm/Machregsaux.mli +++ b/arm/Machregsaux.mli @@ -12,7 +12,8 @@ (** Auxiliary functions on machine registers *) +val name_of_register: Machregs.mreg -> string option val register_by_name: string -> Machregs.mreg option +val scratch_register_names: string list val can_reserve_register: Machregs.mreg -> bool -val name_of_register: Machregs.mreg -> string option val mregs_of_clobber: Camlcoq.atom list -> Machregs.mreg list diff --git a/cparser/ExtendedAsm.ml b/cparser/ExtendedAsm.ml index 8751291b..94d23102 100644 --- a/cparser/ExtendedAsm.ml +++ b/cparser/ExtendedAsm.ml @@ -162,6 +162,7 @@ let check_clobbers loc clob = List.iter (fun c -> if Machregsaux.register_by_name c <> None + || List.mem c Machregsaux.scratch_register_names || c = "memory" || c = "cc" then () else error "%aError: unrecognized asm register clobber '%s'" diff --git a/ia32/Machregsaux.ml b/ia32/Machregsaux.ml index 75fd588a..5e98b58b 100644 --- a/ia32/Machregsaux.ml +++ b/ia32/Machregsaux.ml @@ -22,6 +22,8 @@ let register_names = [ ("ST0", FP0) ] +let scratch_register_names = [] + let name_of_register r = let rec rev_assoc = function | [] -> None diff --git a/ia32/Machregsaux.mli b/ia32/Machregsaux.mli index f09ebddb..f0feec96 100644 --- a/ia32/Machregsaux.mli +++ b/ia32/Machregsaux.mli @@ -14,5 +14,6 @@ val name_of_register: Machregs.mreg -> string option val register_by_name: string -> Machregs.mreg option +val scratch_register_names: string list val can_reserve_register: Machregs.mreg -> bool val mregs_of_clobber: Camlcoq.atom list -> Machregs.mreg list diff --git a/powerpc/Machregsaux.ml b/powerpc/Machregsaux.ml index f8253ca4..ba111089 100644 --- a/powerpc/Machregsaux.ml +++ b/powerpc/Machregsaux.ml @@ -33,6 +33,8 @@ let register_names = [ ("F28", F28); ("F29", F29); ("F30", F30); ("F31", F31) ] +let scratch_register_names = [ "R0" ] + let name_of_register r = let rec rev_assoc = function | [] -> None diff --git a/powerpc/Machregsaux.mli b/powerpc/Machregsaux.mli index 90343b5b..f0feec96 100644 --- a/powerpc/Machregsaux.mli +++ b/powerpc/Machregsaux.mli @@ -12,7 +12,8 @@ (** Auxiliary functions on machine registers *) +val name_of_register: Machregs.mreg -> string option val register_by_name: string -> Machregs.mreg option +val scratch_register_names: string list val can_reserve_register: Machregs.mreg -> bool -val name_of_register: Machregs.mreg -> string option val mregs_of_clobber: Camlcoq.atom list -> Machregs.mreg list |