aboutsummaryrefslogtreecommitdiffstats
path: root/arm/Machregsaux.ml
diff options
context:
space:
mode:
authorXavier Leroy <xavier.leroy@inria.fr>2015-04-23 14:49:30 +0200
committerXavier Leroy <xavier.leroy@inria.fr>2015-04-23 14:49:30 +0200
commit5ad466befa609df178f04886484ee38b1a9c44ed (patch)
treec2752db1bd09224cda15df4f3c3cf9dbc3c0dc8a /arm/Machregsaux.ml
parent3ca2af08f068eb1edf638b8ef602b816823873e0 (diff)
downloadcompcert-kvx-5ad466befa609df178f04886484ee38b1a9c44ed.tar.gz
compcert-kvx-5ad466befa609df178f04886484ee38b1a9c44ed.zip
Take asm clobbers into account for determining callee-save registers used.
Diffstat (limited to 'arm/Machregsaux.ml')
-rw-r--r--arm/Machregsaux.ml7
1 files changed, 7 insertions, 0 deletions
diff --git a/arm/Machregsaux.ml b/arm/Machregsaux.ml
index 5486c4b4..3f7d0693 100644
--- a/arm/Machregsaux.ml
+++ b/arm/Machregsaux.ml
@@ -41,3 +41,10 @@ let can_reserve_register r =
List.mem r Conventions1.int_callee_save_regs
|| List.mem r Conventions1.float_callee_save_regs
+let mregs_of_clobber idl =
+ List.fold_left
+ (fun l c ->
+ match register_by_name (Camlcoq.extern_atom c) with
+ | Some r -> r :: l
+ | None -> l)
+ [] idl