Commit a6038ae9 authored by Bernhard Schommer's avatar Bernhard Schommer Committed by Xavier Leroy
Browse files

Move machine initialization to Frontend.init function. (#49)

The initialization of Machine.config, as well as the calls to various initialization functions for the C front-end, are now performed by the new `Frontend.init` function.
This avoids code duplication in driver/Driver.ml and exportclight/Clightgen.ml.
parent d39a9b5e
......@@ -447,28 +447,7 @@ let _ =
Gc.major_heap_increment = 4194304 (* 4M *)
};
Printexc.record_backtrace true;
Machine.config :=
begin match Configuration.arch with
| "powerpc" -> if Configuration.system = "linux"
then Machine.ppc_32_bigendian
else Machine.ppc_32_diab_bigendian
| "arm" -> if Configuration.is_big_endian
then Machine.arm_bigendian
else Machine.arm_littleendian
| "x86" -> if Configuration.model = "64" then
Machine.x86_64
else
if Configuration.abi = "macosx"
then Machine.x86_32_macosx
else Machine.x86_32
| "riscV" -> if Configuration.model = "64"
then Machine.rv64
else Machine.rv32
| _ -> assert false
end;
Builtins.set C2C.builtins;
Cutil.declare_attributes C2C.attributes;
CPragmas.initialize();
Frontend.init ();
parse_cmdline cmdline_actions;
DebugInit.init (); (* Initialize the debug functions *)
if nolink () && !option_o <> None && !num_source_files >= 2 then begin
......
......@@ -70,6 +70,31 @@ let parse_c_file sourcename ifile =
PrintCsyntax.print_if csyntax;
csyntax
let init () =
Machine.config:=
begin match Configuration.arch with
| "powerpc" -> if Configuration.gnu_toolchain
then Machine.ppc_32_bigendian
else Machine.ppc_32_diab_bigendian
| "arm" -> if Configuration.is_big_endian
then Machine.arm_bigendian
else Machine.arm_littleendian
| "x86" -> if Configuration.model = "64" then
Machine.x86_64
else
if Configuration.abi = "macosx"
then Machine.x86_32_macosx
else Machine.x86_32
| "riscV" -> if Configuration.model = "64"
then Machine.rv64
else Machine.rv32
| _ -> assert false
end;
Builtins.set C2C.builtins;
Cutil.declare_attributes C2C.attributes;
CPragmas.initialize()
(* Add gnu preprocessor list *)
let gnu_prepro_opt_key key s =
prepro_options := s::key::!prepro_options
......
......@@ -22,3 +22,6 @@ val prepro_actions: (Commandline.pattern * Commandline.action) list
val prepro_help: string
(** Commandline help description *)
val init: unit -> unit
(** Initialize the Frontend *)
......@@ -206,26 +206,7 @@ let _ =
Gc.major_heap_increment = 4194304 (* 4M *)
};
Printexc.record_backtrace true;
Machine.config :=
begin match Configuration.arch with
| "powerpc" -> Machine.ppc_32_bigendian
| "arm" -> if Configuration.is_big_endian
then Machine.arm_bigendian
else Machine.arm_littleendian
| "x86" -> if Configuration.model = "64" then
Machine.x86_64
else
if Configuration.abi = "macosx"
then Machine.x86_32_macosx
else Machine.x86_32
| "riscV" -> if Configuration.model = "64"
then Machine.rv64
else Machine.rv32
| _ -> assert false
end;
Builtins.set C2C.builtins;
Cutil.declare_attributes C2C.attributes;
CPragmas.initialize();
Frontend.init ();
parse_cmdline cmdline_actions;
if !option_o <> None && !num_input_files >= 2 then begin
eprintf "Ambiguous '-o' option (multiple source files)\n";
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment