aboutsummaryrefslogtreecommitdiffstats
path: root/backend/Coloringaux.ml
diff options
context:
space:
mode:
authorxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-06-29 08:27:14 +0000
committerxleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2010-06-29 08:27:14 +0000
commit9c7c84cc40eaacc1e2c13091165785cddecba5ad (patch)
tree65eafe51ad284d88fd5a949e1b2a54cd272f9f91 /backend/Coloringaux.ml
parentf4b416882955d9d91bca60f3eb35b95f4124a5be (diff)
downloadcompcert-9c7c84cc40eaacc1e2c13091165785cddecba5ad.tar.gz
compcert-9c7c84cc40eaacc1e2c13091165785cddecba5ad.zip
Support for inlined built-ins.
AST: add ef_inline flag to external functions. Selection: recognize calls to inlined built-ins and inline them as Sbuiltin. CminorSel to Asm: added Sbuiltin/Ibuiltin instruction. PrintAsm: adapted expansion of builtins. C2Clight: adapted detection of builtins. Conventions: refactored in a machine-independent part (backend/Conventions) and a machine-dependent part (ARCH/SYS/Conventions1). git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@1356 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'backend/Coloringaux.ml')
-rw-r--r--backend/Coloringaux.ml10
1 files changed, 6 insertions, 4 deletions
diff --git a/backend/Coloringaux.ml b/backend/Coloringaux.ml
index d17229ea..63f21906 100644
--- a/backend/Coloringaux.ml
+++ b/backend/Coloringaux.ml
@@ -22,6 +22,7 @@ open Locations
open RTL
open RTLtyping
open InterfGraph
+open Conventions1
open Conventions
(* George-Appel graph coloring *)
@@ -202,13 +203,13 @@ let rec remove_reserved = function
let init_regs() =
caller_save_registers.(0) <-
- Array.of_list (remove_reserved Conventions.int_caller_save_regs);
+ Array.of_list (remove_reserved int_caller_save_regs);
caller_save_registers.(1) <-
- Array.of_list (remove_reserved Conventions.float_caller_save_regs);
+ Array.of_list (remove_reserved float_caller_save_regs);
callee_save_registers.(0) <-
- Array.of_list (remove_reserved Conventions.int_callee_save_regs);
+ Array.of_list (remove_reserved int_callee_save_regs);
callee_save_registers.(1) <-
- Array.of_list (remove_reserved Conventions.float_callee_save_regs);
+ Array.of_list (remove_reserved float_callee_save_regs);
for i = 0 to num_register_classes - 1 do
num_available_registers.(i) <-
Array.length caller_save_registers.(i)
@@ -789,6 +790,7 @@ let spill_costs f =
| Istore(chunk, addr, args, src, _) -> incr_list args; incr src
| Icall(sg, ros, args, res, _) -> incr_ros ros; incr_list args; incr res
| Itailcall(sg, ros, args) -> incr_ros ros; incr_list args
+ | Ibuiltin(ef, args, res, _) -> incr_list args; incr res
| Icond(cond, args, _, _) -> incr_list args
| Ijumptable(arg, _) -> incr arg
| Ireturn(Some r) -> incr r