diff options
author | Bernhard Schommer <bschommer@users.noreply.github.com> | 2018-01-11 15:15:43 +0100 |
---|---|---|
committer | Xavier Leroy <xavierleroy@users.noreply.github.com> | 2018-01-11 15:15:43 +0100 |
commit | a6038ae9bae41526224c2416332c719f26261812 (patch) | |
tree | a3746c1dcf07e2e17c1e5da27c36ec43eeeeef5b /driver/Frontend.ml | |
parent | d39a9b5eac9369a91d75b9a170c5590a976671e4 (diff) | |
download | compcert-a6038ae9bae41526224c2416332c719f26261812.tar.gz compcert-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.ml | 25 |
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 |