Mercurial > hg > CbC > CbC_gcc
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 *); |