aboutsummaryrefslogtreecommitdiffstats
path: root/driver/Frontend.ml
diff options
context:
space:
mode:
authorBernhard Schommer <bschommer@users.noreply.github.com>2018-01-11 15:15:43 +0100
committerXavier Leroy <xavierleroy@users.noreply.github.com>2018-01-11 15:15:43 +0100
commita6038ae9bae41526224c2416332c719f26261812 (patch)
treea3746c1dcf07e2e17c1e5da27c36ec43eeeeef5b /driver/Frontend.ml
parentd39a9b5eac9369a91d75b9a170c5590a976671e4 (diff)
downloadcompcert-kvx-a6038ae9bae41526224c2416332c719f26261812.tar.gz
compcert-kvx-a6038ae9bae41526224c2416332c719f26261812.zip
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.
Diffstat (limited to 'driver/Frontend.ml')
-rw-r--r--driver/Frontend.ml25
1 files changed, 25 insertions, 0 deletions
diff --git a/driver/Frontend.ml b/driver/Frontend.ml
index 148d0f74..2b9d5860 100644
--- a/driver/Frontend.ml
+++ b/driver/Frontend.ml
@@ -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