path: root/ir/be/isas.h
diff options
authorMatthias Braun <>2017-01-04 20:12:21 +0100
committerMatthias Braun <>2017-02-20 04:48:18 +0100
commit1ffc842f8bb13ed098eeaf2382ba473f9e154466 (patch)
treecd4c1c9ca57400975db74b7212ac237166359704 /ir/be/isas.h
parent845e655dac11bc5eba82b9fc6d36a6f4fec23eb6 (diff)
Rework target initialization and query
- Moves machine triple handling code form cparser into libfirm - Create new APIs to set the target and query information about it - Move backend_params into the new target API - Backends initialize ir_target instead of backend_params now - Add new API to get information about the target platform: - Mangle a name for the target platform (and remove compilerlib mangling callback) - Can query size and alignment of basic C types for the platform - Move some constant target information into arch_isa_if_t (we move it to target_info_t later when we realize it needs to be dynamic) - Redo backend initialization. Examples: Simple case: Initialize for host: ir_init(); Complex case: cross-compile to sparc with PIC enabled: ir_init_library(); ir_target_set("sparc-leon-linux-gnu"); ir_target_option("pic"); ir_target_init();
Diffstat (limited to 'ir/be/isas.h')
1 files changed, 29 insertions, 0 deletions
diff --git a/ir/be/isas.h b/ir/be/isas.h
new file mode 100644
index 0000000..691d33e
--- /dev/null
+++ b/ir/be/isas.h
@@ -0,0 +1,29 @@
+ * This file is part of libFirm.
+ * Copyright (C) 2017 University of Karlsruhe.
+ */
+#ifndef FIRM_BE_ISAS_H
+#define FIRM_BE_ISAS_H
+#include "firm_types.h"
+#include "bearch.h"
+void be_init_arch_TEMPLATE(void);
+extern arch_isa_if_t const TEMPLATE_isa_if;
+void be_init_arch_amd64(void);
+extern arch_isa_if_t const amd64_isa_if;
+void be_init_arch_arm(void);
+extern arch_isa_if_t const arm_isa_if;
+void be_init_arch_ia32(void);
+extern arch_isa_if_t const ia32_isa_if;
+void be_init_arch_mips(void);
+extern arch_isa_if_t const mips_isa_if;
+void be_init_arch_sparc(void);
+extern arch_isa_if_t const sparc_isa_if;