comparison gcc/domwalk.h @ 55:77e2b8dfacca gcc-4.4.5

update it from 4.4.3 to 4.5.0
author ryoma <e075725@ie.u-ryukyu.ac.jp>
date Fri, 12 Feb 2010 23:39:51 +0900
parents a06113de4d67
children 04ced10e8804
comparison
equal deleted inserted replaced
52:c156f1bd5cd9 55:77e2b8dfacca
32 if it is set to CDI_DOMINATORS, then we walk the dominator tree, 32 if it is set to CDI_DOMINATORS, then we walk the dominator tree,
33 if it is set to CDI_POST_DOMINATORS, then we walk the post 33 if it is set to CDI_POST_DOMINATORS, then we walk the post
34 dominator tree. */ 34 dominator tree. */
35 ENUM_BITFIELD (cdi_direction) dom_direction : 2; 35 ENUM_BITFIELD (cdi_direction) dom_direction : 2;
36 36
37 /* Nonzero if the statement walker should walk the statements from
38 last to first within a basic block instead of first to last.
39
40 Note this affects both statement walkers. We haven't yet needed
41 to use the second statement walker for anything, so it's hard to
42 predict if we really need the ability to select their direction
43 independently. */
44 BOOL_BITFIELD walk_stmts_backward : 1;
45
46 /* Function to initialize block local data. 37 /* Function to initialize block local data.
47 38
48 Note that the dominator walker infrastructure may provide a new 39 Note that the dominator walker infrastructure may provide a new
49 fresh, and zero'd block local data structure, or it may re-use an 40 fresh, and zero'd block local data structure, or it may re-use an
50 existing block local data structure. 41 existing block local data structure.
53 that allows your optimizer to re-use those arrays rather than 44 that allows your optimizer to re-use those arrays rather than
54 creating new ones. */ 45 creating new ones. */
55 void (*initialize_block_local_data) (struct dom_walk_data *, 46 void (*initialize_block_local_data) (struct dom_walk_data *,
56 basic_block, bool); 47 basic_block, bool);
57 48
58 /* Function to call before the statement walk occurring before the 49 /* Function to call before the recursive walk of the dominator children. */
59 recursive walk of the dominator children. 50 void (*before_dom_children) (struct dom_walk_data *, basic_block);
60 51
61 This typically initializes a block local data and pushes that 52 /* Function to call after the recursive walk of the dominator children. */
62 data onto BLOCK_DATA_STACK. */ 53 void (*after_dom_children) (struct dom_walk_data *, basic_block);
63 void (*before_dom_children_before_stmts) (struct dom_walk_data *,
64 basic_block);
65
66 /* Function to call to walk statements before the recursive walk
67 of the dominator children. */
68 void (*before_dom_children_walk_stmts) (struct dom_walk_data *,
69 basic_block, gimple_stmt_iterator);
70
71 /* Function to call after the statement walk occurring before the
72 recursive walk of the dominator children. */
73 void (*before_dom_children_after_stmts) (struct dom_walk_data *,
74 basic_block);
75
76 /* Function to call before the statement walk occurring after the
77 recursive walk of the dominator children. */
78 void (*after_dom_children_before_stmts) (struct dom_walk_data *,
79 basic_block);
80
81 /* Function to call to walk statements after the recursive walk
82 of the dominator children. */
83 void (*after_dom_children_walk_stmts) (struct dom_walk_data *,
84 basic_block, gimple_stmt_iterator);
85
86 /* Function to call after the statement walk occurring after the
87 recursive walk of the dominator children.
88
89 This typically finalizes any block local data and pops
90 that data from BLOCK_DATA_STACK. */
91 void (*after_dom_children_after_stmts) (struct dom_walk_data *,
92 basic_block);
93 54
94 /* Global data for a walk through the dominator tree. */ 55 /* Global data for a walk through the dominator tree. */
95 void *global_data; 56 void *global_data;
96 57
97 /* Stack of any data we need to keep on a per-block basis. 58 /* Stack of any data we need to keep on a per-block basis.
106 /* From here below are private data. Please do not use this 67 /* From here below are private data. Please do not use this
107 information/data outside domwalk.c. */ 68 information/data outside domwalk.c. */
108 69
109 /* Stack of available block local structures. */ 70 /* Stack of available block local structures. */
110 VEC(void_p,heap) *free_block_data; 71 VEC(void_p,heap) *free_block_data;
111
112 /* Interesting blocks to process. If this field is not NULL, this
113 set is used to determine which blocks to walk. If we encounter
114 block I in the dominator traversal, but block I is not present in
115 INTERESTING_BLOCKS, then none of the callback functions are
116 invoked on it. This is useful when a particular traversal wants
117 to filter out non-interesting blocks from the dominator tree. */
118 sbitmap interesting_blocks;
119 }; 72 };
120 73
121 void walk_dominator_tree (struct dom_walk_data *, basic_block); 74 void walk_dominator_tree (struct dom_walk_data *, basic_block);
122 void init_walk_dominator_tree (struct dom_walk_data *); 75 void init_walk_dominator_tree (struct dom_walk_data *);
123 void fini_walk_dominator_tree (struct dom_walk_data *); 76 void fini_walk_dominator_tree (struct dom_walk_data *);