beifg: Remove the unused function be_ifg_nodes_break().
[libfirm] / include / libfirm / firm.h
1 /*
2  * This file is part of libFirm.
3  * Copyright (C) 2012 University of Karlsruhe.
4  */
5
6 /**
7  * @file
8  * @brief     Central firm header.
9  * @author    Martin Trapp, Christian Schaefer, Goetz Lindenmaier
10  * This header includes all other firm headers and can be included conveniently
11  * by users of the library.
12  */
13
14 /** @mainpage
15  *
16  *  FIRM is a full graph based intermediate representation in SSA Form
17  *  with a novel concept to model side effects.  It allows fast, aggressive
18  *  optimizations.
19  *
20  *  The internal representation of a program in firm is separated into five
21  *  different modules:
22  *   - Firm Graphs representing the code of a program. (Subdirectory ir.)
23  *     Firm Graphs are assembled out of several data structures:
24  *     irprog: represents a program.  Allows access to all types and all
25  *       FIRM graphs for procedures and other global things.
26  *     irgraph: represents a procedure.  Allows access to the code of the
27  *       procedure, the actual FIRM graph.
28  *     irnode: A node of a FIRM graph.  Nodes are typed with an opcode and a mode
29  *   and represent instructions in a program.
30  *     irop: The opcode of FIRM nodes.
31  *     irmode: The mode of FIRM nodes.  Most modes correspond to machine known
32  *       data types (int, float, pointer).
33  *   - Entities representing program known objects. (Subdirectory tr.)
34  *     All variables and procedures are entities.
35  *   - Types describing the type system for the program. (Subdirectory tr.)
36  *   - Target Values representing program known constants. (Subdirectory tv.)
37  *   - Identifiers representing any Strings used in the program. (Subdirectory ident.)
38  *
39  *   Further this library supplies functionality to build and optimize FIRM graphs
40  *   and further functionality needed in a compiler.  Finally there is more
41  *   generic functionality to support implementations using firm.
42  *   (Code generation, further optimizations).
43  */
44
45 /** @defgroup irana Analyses */
46
47 /** @defgroup adt Abstract Data Structures
48  * This module contains abstract datatypes like lists and hashmaps.
49  * They're provided as a convenience, the firm API is fully functionaly without
50  * them so you can just as well use a library like glib and libapr or write
51  * your own.
52  */
53
54 /** @defgroup algorithms Algorithms
55  * This module contains generic algorithms like bipartite matching or solvers
56  * for linear equation systems.
57  * They're provided as a convenience, the firm API is fully functionaly without
58  * them so you can just as well use a library like glib and libapr or write
59  * your own.
60  */
61 #ifndef FIRM_COMMON_FIRM_H
62 #define FIRM_COMMON_FIRM_H
63
64 #include "analyze_irg_args.h"
65 #include "be.h"
66 #include "callgraph.h"
67 #include "cdep.h"
68 #include "cgana.h"
69 #include "dbginfo.h"
70 #include "execfreq.h"
71 #include "firm_common.h"
72 #include "firmstat.h"
73 #include "firm_types.h"
74 #include "heights.h"
75 #include "ident.h"
76 #include "irarch.h"
77 #include "ircgopt.h"
78 #include "irconsconfirm.h"
79 #include "ircons.h"
80 #include "irdom.h"
81 #include "vrp.h"
82 #include "irdump.h"
83 #include "iredgekinds.h"
84 #include "iredges.h"
85 #include "irflag.h"
86 #include "irgmod.h"
87 #include "irgopt.h"
88 #include "irgraph.h"
89 #include "irgwalk.h"
90 #include "irio.h"
91 #include "irloop.h"
92 #include "irmemory.h"
93 #include "irmode.h"
94 #include "irnode.h"
95 #include "irop.h"
96 #include "iropt.h"
97 #include "iroptimize.h"
98 #include "irouts.h"
99 #include "irpass.h"
100 #include "irprintf.h"
101 #include "irprog.h"
102 #include "irtypeinfo.h"
103 #include "irverify.h"
104 #include "lowering.h"
105 #include "timing.h"
106 #include "trouts.h"
107 #include "tv.h"
108 #include "typerep.h"
109
110 #endif