1 /* BEGIN fort_opt_nodes.incl.pl1 */
  2 
  3 /* Created:         22 November 1977 by Richard A. Barnes for the optimizing Fortran compiler */
  4 
  5 /* Modified:        09 October 1978 by Paul E. Smee for larger common and arrays.
  6    Modified:        2 June 1979 by RAB to speed up intersection of optimizer
  7                     machine states by adding operator.coordinate and
  8                     flow_unit.is_active_operator
  9    Modified:        28 June 1979 by RAB to speed up compute_busy_on_exit by
 10                     adding flow_unit.dim_or_alias_or_not_set.
 11    Modified:        02 July 1979 by RAB to fix 218 by moving loop_end_chain stuff
 12                     to flow_unit node from loop node.
 13    Modified:        14 August 1979 by RAB to change flow_unit.dim_or_alias_or_not_set
 14                     to flow_unit.always_completely_set.
 15    Modified:        17 September 1979 by RAB in preparation for register optimizer.
 16    Modified:        20 September 1979 by RAB for index_value_analysis of register optimizer.
 17    Modified:        03 November 1979 by RAB for flow_unit.refreshed for register optimizer.
 18    Modified:        30 November 1979 by RAB to add more info to the loop node
 19                     for the register optimizer.
 20    Modified:        18 December 1979 by RAB to make remainder of register
 21                     optimizer changes.
 22    Modified:        17 December 1980 by CRD to add opt_statement.removable.
 23 */
 24 
 25           /* CHAIN (2 words) */
 26 
 27 dcl       1 chain                       based aligned,
 28           2 next                        pointer unaligned,
 29           2 value                       pointer unaligned;
 30 
 31           /* EDGE (6 words) */
 32 
 33 dcl       1 edge                        based aligned,
 34           2 from                        structure,
 35             3 value                     ptr unal,
 36             3 next                      ptr unal,
 37             3 back                      ptr unal,
 38           2 to                          structure,
 39             3 value                     ptr unal,
 40             3 next                      ptr unal,
 41             3 back                      ptr unal;
 42 
 43 
 44           /* FLOW_UNIT (22 words) */
 45 
 46 dcl       1 flow_unit                   based aligned,
 47           2 next                        ptr unal,
 48           2 back                        ptr unal,
 49           2 successors                  ptr unal,
 50           2 predecessors                ptr unal,
 51           2 dominator                   ptr unal,
 52           2 loop                        ptr unal,
 53           2 next_in_loop                ptr unal,
 54           2 loop_end_chain              ptr unal,
 55           2 position                    fixed bin(17) aligned,
 56           2 number                      fixed bin(17) unal,
 57           2 n_in_loop_end               fixed bin(17) unal,
 58           2 level_number                fixed bin(17) aligned,
 59           2 first_statement             fixed bin (18) unsigned unal,
 60           2 last_statement              fixed bin (18) unsigned unal,
 61           2 insert_statement            fixed bin (18) unsigned unal,
 62           2 insert_operator             fixed bin (18) unsigned unal,
 63           2 info                        structure unal,
 64             3 processed                 bit(1),
 65             3 loop_entry                bit(1),
 66             3 falls_through             bit(1),
 67             3 has_label                 bit(1),
 68             3 entry_pt                  bit(1),
 69             3 in_queue                  bit(1),
 70             3 is_back_target            bit(1),
 71             3 has_side_effects          bit(1),
 72             3 removed                   bit(1),
 73             3 refreshed                 bit(1),
 74             3 pad                       bit(26),
 75           2 used                        ptr unal,
 76           2 set                         ptr unal,
 77           2 busy_on_entry               ptr unal,
 78           2 set_multiple                ptr unal,
 79           2 busy_on_exit                ptr unal,
 80           2 dominated_by                ptr unal,
 81           2 is_active_operator          ptr unal,
 82           2 always_completely_set       ptr unal;
 83 
 84 
 85           /* INPUT_TO (3 words) */
 86 
 87 dcl       1 input_to                    based aligned,
 88           2 next                        pointer unaligned,
 89           2 operator                    pointer unaligned,
 90           2 which                       fixed bin aligned;
 91 
 92           /* LCHAIN (2 words) */
 93 
 94 dcl       1 lchain                      based aligned,
 95           2 next                        pointer unaligned,
 96           2 value                       fixed bin(18) aligned;
 97 
 98           /* LOOP (33 words) */
 99 
100 dcl       1 loop                        based aligned,
101           2 number                      fixed bin(18),
102           2 depth                       fixed bin(18),
103           2 father                      pointer unaligned,
104           2 brother                     pointer unaligned,
105           2 prev_brother                pointer unaligned,
106           2 son                         pointer unaligned,
107           2 last_son                    pointer unaligned,
108           2 entry_unit                  pointer unaligned,
109           2 members                     pointer unaligned,
110           2 back_target                 pointer unaligned,
111           2 exits                       pointer unaligned,
112           2 first_unit                  pointer unaligned,
113           2 last_unit                   pointer unaligned,
114           2 is_member                   pointer unaligned,
115           2 is_exit                     pointer unaligned,
116           2 articulation_blocks         pointer unaligned,
117           2 used                        pointer unaligned,
118           2 set                         pointer unaligned,
119           2 busy_on_exit                pointer unaligned,
120           2 set_multiple                pointer unaligned,
121           2 ancestors_and_me            pointer unaligned,
122           2 bits                        structure unaligned,
123             3 has_side_effects          bit(1),
124             3 erases                    structure unaligned,
125               4 xr(0:7)                 bit(1),
126               4 pr(6)                   bit(1),
127             3 avoid_pr(6)               bit(1),
128             3 all_xrs_globally_assigned bit(1),
129             3 pad                       bit(14),
130           2 induction_var               pointer unaligned,
131           2 may_keep_in_xr              pointer unaligned,
132           2 computed                    pointer unaligned,
133           2 xregs_used                  fixed bin(4),
134           2 pregs_used                  fixed bin(4),
135           2 global_xr_items             pointer unaligned,
136           2 global_pr_items             pointer unaligned,
137           2 range_list                  pointer unaligned,
138           2 msp                         pointer unaligned,
139           2 eligible_ind_var_op_var     pointer unaligned,
140           2 left_shift_chain            pointer unaligned;
141 
142           /* OPERATOR */
143 
144 dcl       1 operator                    based aligned,
145 
146           /* WORD 1 */
147 
148             2 op_code                   fixed bin(8) unal,
149             2 assigns_constant_to_symbol bit(1) unal,
150             2 freed                     bit(1) unal,
151             2 number                    fixed bin(7) unsigned unal,
152             2 coordinate                fixed bin(18) unsigned unal,
153 
154           /* WORD 2 */
155 
156             2 next                      fixed bin(18) unsigned unal,
157             2 back                      fixed bin(18) unsigned unal,
158 
159           /* WORD 3 */
160 
161             2 primary                   pointer unal,
162 
163           /* WORD 4 */
164 
165             2 output                    fixed bin(18) aligned,
166 
167           /* WORDS 5 - n */
168 
169             2 operand(n_operands refer (operator.number))   fixed bin (18) aligned;
170 
171 dcl       n_operands                    fixed bin;
172 
173 
174           /* OPT_STATEMENT */
175 
176 dcl       1 opt_statement               based aligned structure,
177 
178           /* WORD 1 */
179 
180             2 op_code                   fixed bin(8) unal,  /* must be stat_op */
181             2 number                    fixed bin(8) unal,  /* must be 0 */
182             2 label                     fixed bin (18) unsigned unal,
183 
184           /* WORD 2 */
185 
186             2 first_operator            fixed bin (18) unsigned unal,
187             2 prev_operator             fixed bin (18) unsigned unal,
188 
189           /* WORD 3 */
190 
191             2 next                      bit(18) unal,       /* "0"b = no next statement */
192             2 back                      bit(18) unal,       /* "0"b = no prev statement */
193 
194           /* WORD 4 */
195 
196             2 source_id                 structure unaligned,
197               3 file                    fixed bin (8) unsigned,       /* 0 = first file */
198               3 line                    bit(14),
199               3 statement               bit(5),   /* 1 = first statement */
200 
201             2 length                    bit(9) unaligned,
202 
203           /* WORD 5 */
204 
205             2 bits                      structure unaligned,
206               3 put_in_map              bit(1),
207               3 put_in_profile          bit(1),
208               3 processed_by_converter  bit(1),
209               3 referenced_backwards    bit(1),
210               3 referenced_by_assign    bit(1),
211               3 has_operator_list       bit(1),
212               3 moved                   bit(1),
213               3 removable               bit(1),
214               3 pad                     bit(1),
215 
216             2 start                     fixed bin(26) unaligned,
217 
218           /* WORD 6 */
219 
220             2 location                  bit(18) unaligned,  /* (18)"1"b = no code */
221             2 machine_state             fixed bin (18) unsigned unaligned,
222 
223           /* WORD 7 */
224 
225             2 flow_unit                 pointer unaligned,
226 
227           /* WORD 8 */
228 
229             2 operator_list             pointer unaligned;
230 
231 
232           /* PRIMARY (4 words) */
233 
234 dcl       1 primary                     based aligned,
235           2 next                        pointer unaligned,
236           2 last                        pointer unaligned,
237           2 data                        structure aligned,
238             3 expression                pointer unaligned,
239             3 flow_unit                 pointer unaligned;
240 
241           /* RANGE (3 words) */
242 
243 dcl       1 range                       based aligned,
244           2 next                        pointer unaligned,
245           2 variable                    pointer unaligned,
246           2 bits                        structure unaligned,
247             3 range_bits                structure unaligned,
248               4 fb17                    bit(1),
249               4 fb18_uns                bit(1),
250             3 mbz                       bit(34);
251 
252 
253 /* END fort_opt_nodes.incl.pl1 */