firm_types.h File Reference

Definition of opaque firm types. More...

#include "begin.h"
#include "end.h"

Go to the source code of this file.

Data Structures

union  symconst_symbol
 SymConst attribute. More...
struct  ir_asm_constraint
 A input/output constraint attribute. More...


#define ENUM_BITSET(type)
 Marks an enum type as bitset enum.
#define ENUM_COUNTABLE(type)
 Marks an enum type as countable enum.


typedef unsigned long ir_visited_t
 Type for visited counters.
typedef unsigned long ir_label_t
 A label in the code (usually attached to a Block node)
typedef struct dbg_info dbg_info
 Source Reference.
typedef struct type_dbg_info type_dbg_info
 Source Type Reference.
typedef struct ident ident
typedef struct ir_node ir_node
 Procedure Graph Node.
typedef struct ir_op ir_op
 Node Opcode.
typedef struct ir_mode ir_mode
 SSA Value mode.
typedef struct ir_edge_t ir_edge_t
 Dynamic Reverse Edge.
typedef struct ir_heights_t ir_heights_t
 Computed graph Heights.
typedef struct ir_tarval ir_tarval
 Target Machine Value.
typedef struct ir_enum_const ir_enum_const
 Enumeration constant.
typedef struct ir_type ir_type
typedef struct ir_graph ir_graph
 Procedure Grpah.
typedef struct ir_prog ir_prog
typedef struct ir_loop ir_loop
typedef struct ir_entity ir_entity
typedef struct ir_cdep ir_cdep
 Control Dependence Analysis Results.
typedef struct arch_irn_ops_t arch_irn_ops_t
 Target Architecture specific node operations.
typedef struct ir_graph_pass_t ir_graph_pass_t
 A graph transformation pass.
typedef struct ir_prog_pass_t ir_prog_pass_t
 A whole program transformation pass.
typedef struct
 A graph pass manager.
typedef struct
 A program pass manager.
typedef union ir_initializer_t ir_initializer_t
 Initializer (for entities)
typedef void irg_walk_func (ir_node *, void *)
 type for graph-walk callbacks
typedef struct ir_switch_table ir_switch_table
 A switch table mapping integer numbers to proj-numbers of a Switch-node.
typedef ir_nodeuninitialized_local_variable_func_t (ir_graph *irg, ir_mode *mode, int pos)
 This function is called, whenever a local variable is used before definition.


enum  ir_relation {
  ir_relation_false = 0, ir_relation_equal = 1u << 0, ir_relation_less = 1u << 1, ir_relation_greater = 1u << 2,
  ir_relation_unordered = 1u << 3, ir_relation_less_equal = ir_relation_equal|ir_relation_less, ir_relation_greater_equal = ir_relation_equal|ir_relation_greater, ir_relation_less_greater = ir_relation_less|ir_relation_greater,
  ir_relation_less_equal_greater = ir_relation_equal|ir_relation_less|ir_relation_greater, ir_relation_unordered_equal = ir_relation_unordered|ir_relation_equal, ir_relation_unordered_less = ir_relation_unordered|ir_relation_less, ir_relation_unordered_less_equal = ir_relation_unordered|ir_relation_less|ir_relation_equal,
  ir_relation_unordered_greater = ir_relation_unordered|ir_relation_greater, ir_relation_unordered_greater_equal = ir_relation_unordered|ir_relation_greater|ir_relation_equal, ir_relation_unordered_less_greater = ir_relation_unordered|ir_relation_less|ir_relation_greater, ir_relation_true = ir_relation_equal|ir_relation_less|ir_relation_greater|ir_relation_unordered
 Relations for comparing numbers. More...
enum  ir_cons_flags {
  cons_none = 0, cons_volatile = 1U << 0, cons_unaligned = 1U << 1, cons_floats = 1U << 2,
  cons_throws_exception = 1U << 3
 constrained flags for memory operations. More...
enum  op_pin_state { op_pin_state_floats = 0, op_pin_state_pinned = 1, op_pin_state_exc_pinned, op_pin_state_mem_pinned }
 pinned states. More...
 A type to express conditional jump predictions. More...
enum  mtp_additional_properties {
  mtp_no_property = 0, mtp_property_const = 1u << 0, mtp_property_pure = 1u << 1, mtp_property_noreturn = 1u << 2,
  mtp_property_nothrow = 1u << 3, mtp_property_naked = 1u << 4, mtp_property_malloc = 1u << 5, mtp_property_returns_twice = 1u << 6,
  mtp_property_intrinsic = 1u << 7, mtp_property_runtime = 1u << 8, mtp_property_private = 1u << 9, mtp_property_has_loop = 1u << 10,
  mtp_property_always_inline = 1u << 11, mtp_property_noinline = 1u << 12, mtp_property_inline_recommended = 1u << 13, mtp_temporary = 1u << 14
 Additional method type properties: Tell about special properties of a method type. More...
enum  symconst_kind {
  symconst_type_size, symconst_type_align, symconst_addr_ent, symconst_ofs_ent,
 This enum names the different kinds of symbolic Constants represented by SymConst. More...
enum  ir_where_alloc { stack_alloc, heap_alloc }
 The allocation place. More...
enum  ir_builtin_kind {
  ir_bk_trap, ir_bk_debugbreak, ir_bk_return_address, ir_bk_frame_address,
  ir_bk_prefetch, ir_bk_ffs, ir_bk_clz, ir_bk_ctz,
  ir_bk_popcount, ir_bk_parity, ir_bk_bswap, ir_bk_inport,
  ir_bk_outport, ir_bk_inner_trampoline, ir_bk_last = ir_bk_inner_trampoline
 Supported libFirm builtins. More...
enum  ir_value_classify_sign { value_classified_unknown = 0, value_classified_positive = 1, value_classified_negative = -1 }
 Possible return values of value_classify(). More...
enum  ir_volatility { volatility_non_volatile, volatility_is_volatile }
 This enumeration flags the volatility of entities and Loads/Stores. More...
enum  ir_align { align_is_aligned = 0, align_non_aligned }
 This enumeration flags the align of Loads/Stores. More...

Detailed Description

Definition of opaque firm types.

Michael Beck

Definition in file firm_types.h.

Macro Definition Documentation

#define ENUM_BITSET (   type)

Marks an enum type as bitset enum.

That is the enumeration values will probably be combined to form a (bit)set of flags. When compiling for C++ this macro will define the ~, &, &=, ^, ^=, | and |= operators for the enum values.

Definition at line 164 of file firm_types.h.

#define ENUM_COUNTABLE (   type)

Marks an enum type as countable enum.

The enumeration values will be a linear sequence of numbers which can be iterated through by incrementing by 1. When compiling for C++ this macro will define the ++ and – operators.

Definition at line 178 of file firm_types.h.

Typedef Documentation

A graph pass manager.

Definition at line 109 of file firm_types.h.

A graph transformation pass.

Definition at line 104 of file firm_types.h.

typedef unsigned long ir_label_t

A label in the code (usually attached to a Block node)

Definition at line 50 of file firm_types.h.

A program pass manager.

Definition at line 111 of file firm_types.h.

A whole program transformation pass.

Definition at line 106 of file firm_types.h.

typedef unsigned long ir_visited_t

Type for visited counters.

See Also

Definition at line 48 of file firm_types.h.

Enumeration Type Documentation

enum ir_align

This enumeration flags the align of Loads/Stores.


The entity is aligned.



The entity is not aligned.

Definition at line 392 of file firm_types.h.

Possible return values of value_classify().


could not classify


value is positive, i.e.

>= 0


value is negative, i.e.

<= 0 if no signed zero exists or < 0 else

Definition at line 374 of file firm_types.h.

This enumeration flags the volatility of entities and Loads/Stores.


The entity is not volatile.



The entity is volatile.

Definition at line 384 of file firm_types.h.