diff options
author | Xavier Leroy <xavier.leroy@inria.fr> | 2015-04-23 14:49:30 +0200 |
---|---|---|
committer | Xavier Leroy <xavier.leroy@inria.fr> | 2015-04-23 14:49:30 +0200 |
commit | 5ad466befa609df178f04886484ee38b1a9c44ed (patch) | |
tree | c2752db1bd09224cda15df4f3c3cf9dbc3c0dc8a /ia32/Machregsaux.ml | |
parent | 3ca2af08f068eb1edf638b8ef602b816823873e0 (diff) | |
download | compcert-5ad466befa609df178f04886484ee38b1a9c44ed.tar.gz compcert-5ad466befa609df178f04886484ee38b1a9c44ed.zip |
Take asm clobbers into account for determining callee-save registers used.
Diffstat (limited to 'ia32/Machregsaux.ml')
-rw-r--r-- | ia32/Machregsaux.ml | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/ia32/Machregsaux.ml b/ia32/Machregsaux.ml index 3083cf3e..75fd588a 100644 --- a/ia32/Machregsaux.ml +++ b/ia32/Machregsaux.ml @@ -38,3 +38,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 |