summaryrefslogtreecommitdiff
path: root/asmcomp/codegen.ml
diff options
context:
space:
mode:
Diffstat (limited to 'asmcomp/codegen.ml')
-rw-r--r--asmcomp/codegen.ml87
1 files changed, 0 insertions, 87 deletions
diff --git a/asmcomp/codegen.ml b/asmcomp/codegen.ml
deleted file mode 100644
index fd7cc1872b..0000000000
--- a/asmcomp/codegen.ml
+++ /dev/null
@@ -1,87 +0,0 @@
-(* From C-- to assembly code *)
-
-open Format
-open Cmm
-
-let dump_cmm = ref false
-let dump_selection = ref false
-let dump_live = ref false
-let dump_spill = ref false
-let dump_split = ref false
-let dump_interf = ref false
-let dump_prefer = ref false
-let dump_regalloc = ref false
-let dump_reload = ref false
-let dump_linear = ref false
-
-let rec regalloc fd =
- if !dump_live then Printmach.phase "Liveness analysis" fd;
- Interf.build_graph fd;
- if !dump_interf then Printmach.interferences();
- if !dump_prefer then Printmach.preferences();
- Coloring.allocate_registers();
- if !dump_regalloc then
- Printmach.phase "After register allocation" fd;
- let (newfd, redo_regalloc) = Reload.fundecl fd in
- if !dump_reload then
- Printmach.phase "After insertion of reloading code" newfd;
- if redo_regalloc
- then begin Reg.reinit(); Liveness.fundecl newfd; regalloc newfd end
- else newfd
-
-let fundecl fd_cmm =
- if !dump_cmm then begin
- print_string "*** C-- code"; print_newline();
- Printcmm.fundecl fd_cmm; print_newline()
- end;
- Reg.reset();
- let fd_sel = Sequence.fundecl fd_cmm in
- if !dump_selection then
- Printmach.phase "After instruction selection" fd_sel;
- Liveness.fundecl fd_sel;
- if !dump_live then Printmach.phase "Liveness analysis" fd_sel;
- let fd_spill = Spill.fundecl fd_sel in
- Liveness.fundecl fd_spill;
- if !dump_spill then
- Printmach.phase "After spilling" fd_spill;
- let fd_split = Split.fundecl fd_spill in
- Liveness.fundecl fd_split;
- if !dump_split then
- Printmach.phase "After live range splitting" fd_split;
- let fd_reload = regalloc fd_split in
- let fd_linear = Linearize.fundecl fd_reload in
- if !dump_linear then begin
- print_string "*** Linearized code"; print_newline();
- Printlinear.fundecl fd_linear; print_newline()
- end;
- Emit.fundecl fd_linear
-
-let phrase = function
- Cfunction fd -> fundecl fd
- | Cdata dl -> Emit.data dl
-
-let file filename =
- let ic = open_in filename in
- let lb = Lexing.from_channel ic in
- try
- while true do
- phrase(Parsecmm.phrase Lexcmm.token lb)
- done
- with
- End_of_file ->
- close_in ic
- | Lexcmm.Error msg ->
- close_in ic; Lexcmm.report_error lb msg
- | Parsing.Parse_error ->
- close_in ic;
- prerr_string "Syntax error near character ";
- prerr_int (Lexing.lexeme_start lb);
- prerr_newline()
- | Parsecmmaux.Error msg ->
- close_in ic; Parsecmmaux.report_error msg
- | x ->
- close_in ic; raise x
-
-
-
-