libFirm
Modules
Here is a list of all modules:
[detail level 123]
 Abstract Data StructuresThis module contains abstract datatypes like lists and hashmaps
 Arrays
 Generic HashsetGeneric Hashset
 Linked ListsDoubly linked lists
 Memory Allocation
 Pointer MapPointer->Pointer hashmap
 Pointer Set(Hash)sets containing pointers
 Priority QueueA priority queue
 Union-FindUnion-Find data structure
 AlgorithmsThis module contains generic algorithms like bipartite matching or solvers for linear equation systems
 Bipartite MatchingSolved bipartite matching problem
 Gauss Jordan EliminationSolves a system of linear equations
 Hash Functions
 Hungarian AlgorithmSolves bipartite matching problems (minimize/maximize cost function)
 Analyses
 Basic Block Execution FrequencyExecution frequencies specify how often a basic block is expected to get executed during execution of a function
 CallgraphThis file contains the representation of the callgraph
 Control Dependence
 Dominance InformationThe dominator information is stored in three fields of block nodes:
 Dynamic Reverse Edges
 Loops
 Memory DisambiguatorA memory disambiguator checks whether 2 given SSA values representing addresses alias
 Node HeightsThe height is a measure for the longest data dependency path from a node to the end of a basic block
 Reverse EdgesOut-Edges are the reverse of the edges in a firm graph (also called def-use edges)
 Value InformationInformation about SSA-values (ranges, known bits, ...)
 Code GenerationCode Generation (backend) produces machine-code
 Just in Time CompilationProvides interface to generate code and resolve symbols in memory buffers
 Correctness Tests
 EntitiesAn entity is the representation of program known objects in Firm
 Entity Initializers
 Identifiers
 Input and Output
 Library InitializationThe functions in this section deal with initialization and deinitalization of the libFirm library
 LoweringLowering 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 VisualisationThis module contains functions for printing and visualizing libfirm data structures like programs, graphs and nodes for humans
 String FormattingThese functions allow printing of formated strings with support for printing firm objects in a human readable form
 VisualisationDumps information so it can be visualised
 Procedure GraphThis struct contains all information about a procedure
 Construction Support
 NodesIr_node - a datatype representing a Firm node
 TraversingTraverse graphs:
 ProgramIr_prog keeps information about a program:
 Source ReferencesFirm requires a debugging module fulfilling this interface, else no debugging information is passed to the backend
 Statistic EventsThe statistics system helps to evaluate the effects of compiler passes and transformations
 Target Machine ValuesTarvals only represent values of mode_sort:
 Transformations and Optimizations
 FlagsFlags to customize the behavior of libfirm
 Graph Transformations
 Local Optimizations
 Type SystemDatastructure to hold type information
 ArrayThe array type represents linear arrangement of objects of the same type
 ClassIf the type opcode is set to type_class the type represents class types
 Code
 Compound
 Frame
 MethodA method type represents a method, function or procedure type
 PointerPointer types:
 PrimitivePrimitive types are types that represent atomic data values that map directly to modes
 SegmentSegment types represent segments in the object file
 StructA struct type represents aggregate types that consist of a list of fields
 Traversing
 UnionThe union type represents union types
 UnknownThis type is an auxiliary type dedicated to support type analyses
 Value ModesThis module specifies the modes that type the firm nodes