2 * This file is part of libFirm.
3 * Copyright (C) 2012 University of Karlsruhe.
8 * @brief Forward declarations of backend types
9 * @author Matthias Braun
11 #ifndef FIRM_BE_TYPES_H
12 #define FIRM_BE_TYPES_H
14 #include "firm_types.h"
16 typedef unsigned int sched_timestep_t;
18 typedef struct arch_register_class_t arch_register_class_t;
19 typedef struct arch_register_req_t arch_register_req_t;
20 typedef struct arch_register_t arch_register_t;
21 typedef struct arch_flag_t arch_flag_t;
22 typedef struct arch_isa_if_t arch_isa_if_t;
23 typedef struct arch_env_t arch_env_t;
26 * Some flags describing a node in more detail.
28 typedef enum arch_irn_flags_t {
29 arch_irn_flags_none = 0, /**< Node flags. */
30 arch_irn_flags_dont_spill = 1U << 0, /**< This must not be spilled. */
31 arch_irn_flags_rematerializable = 1U << 1, /**< This can be replicated instead of spilled/reloaded. */
32 arch_irn_flags_modify_flags = 1U << 2, /**< I modify flags, used by the
33 default check_modifies
34 implementation in beflags */
35 arch_irn_flags_simple_jump = 1U << 3, /**< a simple jump instruction */
36 arch_irn_flags_not_scheduled = 1U << 4, /**< node must not be scheduled*/
37 /** node writes to a spillslot, this means we can load from the spillslot
38 * anytime (important when deciding wether we can rematerialize) */
39 arch_irn_flags_spill = 1U << 5,
40 arch_irn_flags_backend = 1U << 6, /**< begin of custom backend
43 ENUM_BITSET(arch_irn_flags_t)
45 typedef struct be_lv_t be_lv_t;
46 typedef union be_lv_info_t be_lv_info_t;
48 typedef struct be_abi_call_flags_bits_t be_abi_call_flags_bits_t;
49 typedef struct be_abi_call_flags_t be_abi_call_flags_t;
50 typedef struct be_abi_callbacks_t be_abi_callbacks_t;
51 typedef struct be_abi_call_t be_abi_call_t;
52 typedef struct be_abi_irg_t be_abi_irg_t;
53 typedef struct be_stack_layout_t be_stack_layout_t;
55 typedef struct backend_info_t backend_info_t;
56 typedef struct sched_info_t sched_info_t;
57 typedef struct reg_out_info_t reg_out_info_t;
58 typedef struct be_ifg_t be_ifg_t;
59 typedef struct copy_opt_t copy_opt_t;
61 typedef struct be_main_env_t be_main_env_t;
62 typedef struct be_options_t be_options_t;