1 /* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
2 ** All rights reserved.
4 ** Authors: Martin Trapp, Christian Schaefer, Goetz Lindenmaier.
6 ** firm.h: Central FIRM header.
11 FIRM is a full graph based intermediate representation in SSA Form
12 with a novel concept to model side effects. It allows fast, aggressive
15 This header is the central header of the library implementation of this
18 The internal representation of a program in firm is separated into five
20 - Firm Graphs representing the code of a program. (Subdirectory ir.)
21 Firm Graphs are assembled out of several data structures:
22 irprog: represents a program. Allows access to all types and all
23 FIRM graphs for procedures and other global things.
24 irgraph: represents a procedure. Allows access to the code of the
25 procedure, the actual FIRM graph.
26 irnode: A node of a FIRM graph. Nodes are typed with an opcode and a mode
27 and represent instructions in a program.
28 irop: The opcode of FIRM nodes.
29 irmode: The mode of FIRM nodes. Most modes correspond to machine known
30 data types (int, float, pointer).
31 - Entities representing program known objects. (Subdirectory tr.)
32 All variables and procedures are entities.
33 - Types describing the type system for the program. (Subdirectory tr.)
34 - Target Values representing program known constants. (Subdirectory tv.)
35 - Identifiers representing any Strings used in the program. (Subdirectory ident.)
37 Further this library supplies functionality to build and optimize FIRM graphs
38 and further functionality needed in a compiler. Finally there is more
39 generic functionality to support implementations using firm. (Code generation,
40 further optimizations).
42 ircons: Interface to construct firm graphs, implements automatic Phi node
44 iropt: Optimizations applied to individual nodes.
45 irgopt: Optimizations for ir graphs.
47 irflag: Flags to direct the functionality.
48 common: dynamic typ check for all nodes, configuration of the library,
51 irgwalk: walker for ir graphs.
52 irvrfy: verify the correctness of a firm node.
59 /* The representations */
72 void init_firm (void);
74 # endif /* _FIRM_H_ */