1 /* 2 * Copyright (C) 1995-2008 University of Karlsruhe. All right reserved. 3 * 4 * This file is part of libFirm. 5 * 6 * This file may be distributed and/or modified under the terms of the 7 * GNU General Public License version 2 as published by the Free Software 8 * Foundation and appearing in the file LICENSE.GPL included in the 9 * packaging of this file. 10 * 11 * Licensees holding valid libFirm Professional Edition licenses may use 12 * this file in accordance with the libFirm Commercial License. 13 * Agreement provided with the Software. 14 * 15 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE 16 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR 17 * PURPOSE. 18 */ 19 20 /** 21 * @file 22 * @brief Forward declarations of backend types 23 * @author Matthias Braun 24 */ 25 #ifndef FIRM_BE_TYPES_H 26 #define FIRM_BE_TYPES_H 27 28 #include "firm_types.h" 29 30 typedef unsigned int sched_timestep_t; 31 32 typedef struct arch_register_class_t arch_register_class_t; 33 typedef struct arch_register_req_t arch_register_req_t; 34 typedef struct arch_register_t arch_register_t; 35 typedef struct arch_flag_t arch_flag_t; 36 typedef struct arch_inverse_t arch_inverse_t; 37 typedef struct arch_isa_if_t arch_isa_if_t; 38 typedef struct arch_env_t arch_env_t; 39 40 /** 41 * Some flags describing a node in more detail. 42 */ 43 typedef enum arch_irn_flags_t { 44 arch_irn_flags_none = 0, /**< Node flags. */ 45 arch_irn_flags_dont_spill = 1U << 0, /**< This must not be spilled. */ 46 arch_irn_flags_rematerializable = 1U << 1, /**< This can be replicated instead of spilled/reloaded. */ 47 arch_irn_flags_modify_flags = 1U << 2, /**< I modify flags, used by the 48 default check_modifies 49 implementation in beflags */ 50 arch_irn_flags_simple_jump = 1U << 3, /**< a simple jump instruction */ 51 arch_irn_flags_not_scheduled = 1U << 4, /**< node must not be scheduled*/ 52 arch_irn_flags_backend = 1U << 5, /**< begin of custom backend 53 flags */ 54 } arch_irn_flags_t; 55 ENUM_BITSET(arch_irn_flags_t) 56 57 typedef struct be_lv_t be_lv_t; 58 typedef union be_lv_info_t be_lv_info_t; 59 60 typedef struct be_abi_call_flags_bits_t be_abi_call_flags_bits_t; 61 typedef union be_abi_call_flags_t be_abi_call_flags_t; 62 typedef struct be_abi_callbacks_t be_abi_callbacks_t; 63 typedef struct be_abi_call_t be_abi_call_t; 64 typedef struct be_abi_irg_t be_abi_irg_t; 65 typedef struct be_stack_layout_t be_stack_layout_t; 66 67 typedef struct backend_info_t backend_info_t; 68 typedef struct sched_info_t sched_info_t; 69 typedef struct reg_out_info_t reg_out_info_t; 70 typedef struct be_ifg_t be_ifg_t; 71 typedef struct copy_opt_t copy_opt_t; 72 73 typedef struct be_main_env_t be_main_env_t; 74 typedef struct be_options_t be_options_t; 75 76 #endif 77