becopyilp: Do not advertise the switch to dump the solution, because this is not...
[libfirm] / ir / be / be_types.h
1 /*
2  * This file is part of libFirm.
3  * Copyright (C) 2012 University of Karlsruhe.
4  */
5
6 /**
7  * @file
8  * @brief       Forward declarations of backend types
9  * @author      Matthias Braun
10  */
11 #ifndef FIRM_BE_TYPES_H
12 #define FIRM_BE_TYPES_H
13
14 #include "firm_types.h"
15
16 typedef unsigned int sched_timestep_t;
17
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;
24
25 /**
26  * Some flags describing a node in more detail.
27  */
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
41                                                         flags */
42 } arch_irn_flags_t;
43 ENUM_BITSET(arch_irn_flags_t)
44
45 typedef struct be_lv_t                  be_lv_t;
46 typedef union  be_lv_info_t             be_lv_info_t;
47
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;
54
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;
60
61 typedef struct be_main_env_t be_main_env_t;
62 typedef struct be_options_t  be_options_t;
63
64 #endif