Abstract Data Structures | This module contains abstract datatypes like lists and hashmaps |
 Arrays | |
 Double Ended Queue | Implementation if a double ended queue data structure for generic pointers |
 Generic Hashset | Generic Hashset |
 Linked Lists | Doubly linked lists |
 Memory Allocation | |
 Pointer Map | Pointer->Pointer hashmap |
 Pointer Set | (Hash)sets containing pointers |
 Priority Queue | A priority queue |
 Union-Find | Union-Find data structure |
 pointer lists (deprecated) | |
Algorithms | This module contains generic algorithms like bipartite matching or solvers for linear equation systems |
 Bipartite Matching | Solved bipartite matching problem |
 Gauss Jordan Elimination | Solves a system of linear equations |
 Hash Functions | |
 Hungarian Algorithm | Solves bipartite matching problems (minimize/maximize cost function) |
Analyses | |
 Basic Block Execution Frequency | Execution frequencies specify how often a basic block is expected to get executed during execution of a function |
 Callgraph | This file contains the representation of the callgraph |
 Control Dependence | |
 Dominance Information | The dominator information is stored in three fields of block nodes: |
 Dynamic Reverse Edges | |
 Loops | |
 Memory Disambiguator | A memory disambiguator checks whether 2 given SSA values representing addresses alias |
 Node Heights | The height is a measure for the longest data dependency path from a node to the end of a basic block |
 Reverse Edges | Out-Edges are the reverse of the edges in a firm graph (also called def-use edges) |
 Value Information | Information about SSA-values (ranges, known bits, ...) |
Code Generation | Code Generation (backend) produces machine-code |
Correctness Tests | |
Entities | An entity is the representation of program known objects in Firm |
 Entity Initializers | |
Identifiers | |
Input and Output | |
Library Initialization | The functions in this section deal with initialization and deinitalization of the libFirm library |
Lowering | Lowering is the process of transforming a highlevel representation (a representation closer to the sourcecode) into a lower-level representation (something closer to the target machine) |
Printing and Visualisation | This module contains functions for printing and visualizing libfirm data structures like programs, graphs and nodes for humans |
 String Formatting | These functions allow printing of formated strings with support for printing firm objects in a human readable form |
 Visualisation | Dumps information so it can be visualised |
  Convenience Interface | |
Procedure Graph | This struct contains all information about a procedure |
 Construction Support | |
 Nodes | Ir_node - a datatype representing a Firm node |
  ASM node | Executes assembler fragments of the target machine |
  Add node | Returns the sum of its operands |
  Address node | Symbolic constant that represents the address of an entity (variable or method) |
  Align node | A symbolic constant that represents the alignment of a type |
  Alloc node | Allocates a block of memory on the stack |
  Anchor node | Utility node used to "hold" nodes in a graph that might possibly not be reachable by other means or which should be reachable immediately without searching through the graph |
  And node | Returns the result of a bitwise and operation of its operands |
  Bad node | Bad nodes indicate invalid input, which is values which should never be computed |
  Bitcast node | Converts a value between modes with different arithmetics but same number of bits by reinterpreting the bits in the new mode |
  Block node | A basic block |
  Builtin node | Performs a backend-specific builtin |
  Call node | Calls other code |
  Cmp node | Compares its two operands and checks whether a specified relation (like less or equal) is fulfilled |
  Cond node | Conditionally change control flow |
  Confirm node | Specifies constraints for a value |
  Const node | Returns a constant value |
  Conv node | Converts values between modes |
  CopyB node | Copies a block of memory with statically known size/type |
  Deleted node | Internal node which is temporary set to nodes which are already removed from the graph |
  Div node | Returns the quotient of its 2 operands |
  Dummy node | A placeholder value |
  End node | Last node of a graph |
  Eor node | Returns the result of a bitwise exclusive or operation of its operands |
  Free node | Frees a block of memory previously allocated by an Alloc node |
  IJmp node | Jumps to the code in its argument |
  Id node | Returns its operand unchanged |
  Jmp node | Jumps to the block connected through the out-value |
  Load node | Loads a value from memory (heap or stack) |
  Member node | Computes the address of a compound type member given the base address of an instance of the compound type |
  Minus node | Returns the additive inverse of its operand |
  Mod node | Returns the remainder of its operands from an implied division |
  Mul node | Returns the product of its operands |
  Mulh node | Returns the upper word of the product of its operands (the part which would not fit into the result mode of a normal Mul anymore) |
  Mux node | Returns the false or true operand depending on the value of the sel operand |
  NoMem node | Placeholder node for cases where you don't need any memory input |
  Node Opcodes | This module specifies the opcodes for ir nodes |
  Not node | Returns the bitwise complement of a value |
  Offset node | Symbolic constant that represents the offset of an entity in its owner type |
  Or node | Returns the result of a bitwise or operation of its operands |
  Phi node | Choose a value based on control flow |
  Pin node | Pin the value of the node node in the current block |
  Proj node | Returns an entry of a tuple value |
  Raise node | Raises an exception |
  Return node | Returns from the current function |
  Sel node | Computes the address of an array element from the array base pointer and an index |
  Shl node | Returns its first operands bits shifted left by the amount of the 2nd operand |
  Shr node | Returns its first operands bits shifted right by the amount of the 2nd operand |
  Shrs node | Returns its first operands bits shifted right by the amount of the 2nd operand |
  Size node | A symbolic constant that represents the size of a type |
  Start node | The first node of a graph |
  Store node | Stores a value into memory (heap or stack) |
  Sub node | Returns the difference of its operands |
  Switch node | Change control flow |
  Sync node | The Sync operation unifies several partial memory blocks |
  Tuple node | Builds a Tuple from single values |
  Unknown node | Returns an unknown (at compile- and runtime) value |
 Traversing | Traverse graphs: |
Program | Ir_prog keeps information about a program: |
Source References | Firm requires a debugging module fulfilling this interface, else no debugging information is passed to the backend |
Statistic Events | The statistics system helps to evaluate the effects of compiler passes and transformations |
Target Machine Values | Tarvals only represent values of mode_sort: |
Transformations and Optimizations | |
 Flags | Flags to customize the behavior of libfirm |
 Graph Transformations | |
 Local Optimizations | |
Type System | Datastructure to hold type information |
 Array | The array type represents linear arrangement of objects of the same type |
 Class | If the type opcode is set to type_class the type represents class types |
 Code | |
 Compound | |
  Class | If the type opcode is set to type_class the type represents class types |
  Struct | A struct type represents aggregate types that consist of a list of fields |
  Union | The union type represents union types |
 Frame | |
 Method | A method type represents a method, function or procedure type |
 Pointer | Pointer types: |
 Primitive | Primitive types are types that represent atomic data values that map directly to modes |
 Segment | Segment types represent segments in the object file |
 Struct | A struct type represents aggregate types that consist of a list of fields |
 Traversing | |
 Union | The union type represents union types |
 Unknown | This type is an auxiliary type dedicated to support type analyses |
Value Modes | This module specifies the modes that type the firm nodes |