1 /* Copyright (C) 1998 - 2000 by Universitaet Karlsruhe
2 ** All rights reserved.
4 ** Authors: Martin Trapp, Christian Schaefer
6 ** irgraph.h: ir graph construction
13 /* to resolve recursion between irnode.h and irgraph.h */
14 #ifndef _IR_NODE_TYPEDEF_
15 #define _IR_NODE_TYPEDEF_
16 typedef struct ir_node ir_node;
19 /* to resolve recursion between entity.h and irgraph.h */
20 #ifndef _IR_GRAPH_TYPEDEF_
21 #define _IR_GRAPH_TYPEDEF_
22 typedef struct ir_graph ir_graph;
25 /* Global variable holding the current_ir_graph. This global variable
26 is used by the ir construction interface in ircons and by the
28 extern ir_graph *current_ir_graph;
30 /* create a new ir graph. Automatically sets the field irg of
31 entity to the new ir graph. */
32 ir_graph *new_ir_graph (entity *ent, int params);
35 /* access routines for all ir_graph attributes */
36 ir_node *get_irg_start_block (ir_graph *irg);
37 void set_irg_start_block (ir_graph *irg, ir_node *node);
39 ir_node *get_irg_start (ir_graph *irg);
40 void set_irg_start (ir_graph *irg, ir_node *node);
42 ir_node *get_irg_end_block (ir_graph *irg);
43 void set_irg_end_block (ir_graph *irg, ir_node *node);
45 ir_node *get_irg_end (ir_graph *irg);
46 void set_irg_end (ir_graph *irg, ir_node *node);
48 ir_node *get_irg_cstore (ir_graph *irg);
49 void set_irg_cstore (ir_graph *irg, ir_node *node);
51 ir_node *get_irg_frame (ir_graph *irg);
52 void set_irg_frame (ir_graph *irg, ir_node *node);
54 ir_node *get_irg_globals (ir_graph *irg);
55 void set_irg_globals (ir_graph *irg, ir_node *node);
57 ir_node *get_irg_args (ir_graph *irg);
58 void set_irg_args (ir_graph *irg, ir_node *node);
60 /* Use new_Bad() instead!! */
61 ir_node *get_irg_bad (ir_graph *irg);
62 void set_irg_bad (ir_graph *irg, ir_node *node);
64 ir_node *get_irg_current_block (ir_graph *irg);
65 void set_irg_current_block (ir_graph *irg, ir_node *node);
67 entity *get_irg_ent (ir_graph *irg);
68 void set_irg_ent (ir_graph *irg, entity *ent);
70 int get_irg_params (ir_graph *irg);
71 void set_irg_params (ir_graph *irg, int params);
73 /* increments visited by one */
74 void inc_irg_visited(ir_graph *irg);
75 unsigned long get_irg_visited (ir_graph *irg);
76 void set_irg_visited(ir_graph *irg, unsigned long i);
78 /* increments block_visited by one */
79 void inc_irg_block_visited(ir_graph *irg);
80 unsigned long get_irg_block_visited (ir_graph *irg);
81 void set_irg_block_visited(ir_graph *irg, unsigned long i);
83 # endif /* _IRGRAPH_H_ */