/* BEGIN fort_nodes.incl.pl1 */ /****^ HISTORY COMMENTS: 1) change(86-07-14,BWong), approve(86-07-14,MCR7382), audit(86-07-17,Ginter), install(86-07-28,MR12.0-1105): Fix fortran bug 473. 2) change(88-04-28,RWaters), approve(88-04-28,MCR7875), audit(88-07-13,Huen), install(88-11-10,MR12.2-1209): Implement SCP 6339: Allow character variable to be up to 128K-1 (131071) character long. END HISTORY COMMENTS */ /* Written: June 1976 by David Levin and Richard Barnes Modified: Feb 24 1977 by G. Chang for the optimizer Sept 12, 1977 by R. Barnes for the loop optimizer Nov 16, 1977 by D. Levin to add machine state node for loop optimizer Oct 09 1978 by P Smee for larger common and arrays. Dec 05 1978 by P Smee for %options statement. Jan 17 1979 by R Barnes for machine_state.value_in_xr May 23 1979 by P Smee to add source.line_number July 19 1979 by R Barnes for char mode changes Sept 17 1979 by R Barnes for register optimizer changes Oct 3 1979 by C R Davis for new EAQ management scheme. 29 Oct 1979 by C R Davis for machine_state.eaq.reserved. 3 Nov 1979 by R. Barnes for pointer node and to change machine_state.next from a fixed bin to a pointer. 18 Dec 1979 by R. Barnes for loop_ref_count to finalize changes for the register optimizer. 17 Dec 1979 by C R Davis for symbol.descriptor 22 Dec 1979 by R. Barnes to remove in_list. 22 Jan 1980 by P E Smee to try for long char arrays. 23 Jan 1980 by C R Davis to fix bugs with yesterday's changes. 4 Mar 1980 by C R Davis to rename node.multi_position to node.stack_indirect, and to add machine_state.stack_extended and machine_state.last_dynamic_temp. 5 Jun 1980 by M E Presser to alter arg_desc node for use in stack-extensions and arg-descriptor generation. 16 July 1980 by C R Davis for symbol.variable_arglist. 8 Jan 81 by M E Presser for label.not_referencable 17 Feb 1981 by C R Davis for new dimension node layout. 11 March 1981 by MEP for dimension.assumed_size 3 May 1982 by TO to add star_extent_function to subprogram node. Mod 1 25 August 1982 by TO to add VLA_chain and LA_chain to subprogram node. Mod 1 2 September 1982 by TO to add 5 more entries to storage_info in the subprogram node (13-17), and to add VLA and LA bits to the symbol node. Mod 1 2 September 1982 by TO move fields around in nodes to get correct 24 (really 35) bit fields and still maintain mapping between node, temporary, and array_ref (others limit to word 6 like node.) 19 Jun 83, HH - 145: Add 'branched_to', 'ends_do_loop' & 'loop_end' to 'label' node. 19 Feb 86, BW & AG - 473.a: Add 'VLA' to 'arg_desc' node. END Modifications */ /* GENERAL NODE TEMPLATE */ dcl 1 node aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, 2 data_type fixed bin (4) unaligned unsigned, 2 operand_type fixed bin (4) unaligned, 2 addressing_bits unaligned structure, 3 is_addressable bit (1), 3 value_in, 4 eaq bit (1), 4 x bit (1), 3 allocated bit (1), 3 needs_pointer bit (1), 3 stack_indirect bit (1), 3 large_address bit (1), 3 address_in_base bit (1), 3 dont_update bit (1), /* for optimizer */ 3 not_in_storage bit (1), /* for optimizer */ 3 globally_assigned bit (1), /* for optimizer */ 2 bits unaligned structure, 3 standard_bits, 4 allocate bit (1), 4 set bit (1), 4 referenced bit (1), 4 passed_as_arg bit (1), 3 fill bit (7), /* These bits may be used by individual nodes. */ /* WORD 2 */ 2 address aligned structure, 3 base bit (3) unaligned, /* For labels and constants, base and offset are */ 3 offset fixed bin (14) unaligned, /* combined to: fixed bin (18) unsigned unaligned. */ 3 char_num fixed bin (2) unaligned unsigned, 3 bit_num fixed bin (4) unaligned unsigned, 3 fill bit (4) unaligned, 3 inhibit bit (1) unaligned, 3 ext_base bit (1) unaligned, 3 tag bit (6) unaligned, /* WORD 3 */ 2 units fixed bin (3) unaligned unsigned, 2 fill bit (3) unaligned, /* already used in symbol node */ 2 reloc_hold bit (6) unaligned, 2 reloc bit (6) unaligned, 2 addr_hold bit (18) unaligned, /* WORD 4. Must not change for constant, char_constant, header, label, or symbol nodes. */ 2 next fixed bin (18) unsigned unaligned, 2 hash_chain fixed bin (18) unsigned unaligned, /* No hash chain for header nodes. */ /* WORD 5 */ 2 pad fixed bin (18) unsigned unaligned, 2 loop_ref_count fixed bin (17) unaligned, /* Only for symbols and temporaries. */ /* WORD 6 */ 2 location fixed bin (24) aligned; /* Only for array refs, symbols, temporaries, and headers. */ /* ARG DESCRIPTOR NODE */ dcl 1 arg_desc based aligned, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, 2 n_args fixed bin (12) unaligned, 2 pad bit (18) unaligned, /* WORDS 2 - N_ARGS + 1 */ 2 arg(num_args refer(n_args)) aligned, 3 data_type fixed bin (4) unaligned unsigned, 3 must_be unaligned, 4 array bit (1) unaligned, 4 scalar bit (1) unaligned, 4 VLA bit (1) unaligned, 3 star_extents bit (1) unaligned, 3 pad bit (9) unaligned, 3 symbol fixed bin (18) unaligned; dcl num_args fixed bin; /* ARRAY REF NODE -- Must be same size as TEMPORARY NODE. */ dcl 1 array_ref aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, 2 data_type fixed bin (4) unaligned unsigned, 2 operand_type fixed bin (4) unaligned, 2 addressing_bits unaligned structure, 3 is_addressable bit (1), 3 value_in, 4 eaq bit (1), 4 x bit (1), 3 allocated bit (1), 3 needs_pointer bit (1), 3 stack_indirect bit (1), 3 large_address bit (1), 3 address_in_base bit (1), 3 dont_update bit (1), /* for optimizer */ 3 not_in_storage bit (1), /* for optimizer */ 3 globally_assigned bit (1), /* for optimizer */ 2 bits unaligned structure, 3 standard_bits, 4 allocate bit (1), 4 set bit (1), 4 referenced bit (1), 4 passed_as_arg bit (1), 3 variable_length bit (1), 3 variable_offset bit (1), 3 invariant bit (1), /* must line up with temporary node */ 3 irreducible bit (1), /* .. */ 3 used_across_loops bit (1), /* .. */ 3 large_offset bit (1), 3 has_address bit (1), /* WORD 2 */ 2 address aligned structure, 3 base bit (3) unaligned, 3 offset fixed bin (14) unaligned, 3 char_num fixed bin (2) unaligned unsigned, 3 bit_num fixed bin (4) unaligned unsigned, 3 fill bit (4) unaligned, 3 inhibit bit (1) unaligned, 3 ext_base bit (1) unaligned, 3 tag bit (6) unaligned, /* WORD 3 */ 2 units fixed bin (3) unaligned unsigned, 2 fill bit (3) unaligned, 2 reloc_hold bit (6) unaligned, 2 reloc bit (6) unaligned, 2 addr_hold bit (18) unaligned, /* WORD 4 */ 2 next fixed bin (18) unsigned unaligned, 2 loop_end_fu_pos fixed bin (17) unaligned, /* must overlay temporary.loop_end_fu_pos */ /* WORD 5 */ 2 pad fixed bin (18) unsigned unaligned, 2 v_offset fixed bin (18) unsigned unaligned, /* WORD 6 */ 2 location fixed bin (24) aligned, /* WORD 7 */ 2 ref_count fixed bin (17) unaligned, /* must overlay temporary.ref_count */ 2 output_by fixed bin (18) unsigned unal, /* must overlay temporary.output_by */ /* WORD 8 */ 2 length fixed bin (24) aligned, /* WORD 9 */ 2 start_input_to fixed bin (18) unsigned unal, /* must overlay temporary.start_input_to */ 2 end_input_to fixed bin (18) unsigned unal, /* must overlay temporary.end_input_to */ /* WORD 10 */ 2 ref_count_copy fixed bin (17) unaligned, /* must overlay temporary.ref_count_copy */ 2 parent fixed bin (18) unsigned unaligned, /* WORD 11 */ 2 unused fixed bin (24) aligned; /* Pad to size of 'temporary'. */ /* CONSTANT NODE */ dcl 1 constant aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, 2 data_type fixed bin (4) unaligned unsigned, 2 operand_type fixed bin (4) unaligned, 2 addressing_bits unaligned structure, 3 is_addressable bit (1), 3 value_in, 4 eaq bit (1), 4 x bit (1), 3 allocated bit (1), 3 needs_pointer bit (1), 3 stack_indirect bit (1), 3 large_address bit (1), 3 address_in_base bit (1), 3 dont_update bit (1), /* for optimizer */ 3 not_in_storage bit (1), /* for optimizer */ 3 globally_assigned bit (1), /* for optimizer */ 2 bits unaligned structure, 3 standard_bits, 4 allocate bit (1), 4 set bit (1), 4 referenced bit (1), 4 passed_as_arg bit (1), 3 fill bit (7), /* WORD 2 */ 2 address aligned structure, 3 location fixed bin (18) unsigned unaligned, 3 op bit (10) unaligned, 3 inhibit bit (1) unaligned, 3 ext_base bit (1) unaligned, 3 tag bit (6) unaligned, /* WORD 3 */ 2 units fixed bin (3) unaligned unsigned, 2 fill bit (3) unaligned, 2 reloc_hold bit (6) unaligned, 2 reloc bit (6) unaligned, 2 addr_hold bit (18) unaligned, /* WORD 4 */ 2 next_constant fixed bin (18) unsigned unaligned, 2 hash_chain fixed bin (18) unsigned unaligned, /* WORDS 5 & 6 */ 2 value bit (72) aligned; /* CHARACTER CONSTANT NODE */ dcl 1 char_constant aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, 2 data_type fixed bin (4) unaligned unsigned, 2 operand_type fixed bin (4) unaligned, 2 addressing_bits unaligned structure, 3 is_addressable bit (1), 3 value_in, 4 eaq bit (1), 4 x bit (1), 3 allocated bit (1), 3 needs_pointer bit (1), 3 stack_indirect bit (1), 3 large_address bit (1), 3 address_in_base bit (1), 3 dont_update bit (1), /* for optimizer */ 3 not_in_storage bit (1), /* for optimizer */ 3 globally_assigned bit (1), /* for optimizer */ 2 bits unaligned structure, 3 standard_bits, 4 allocate bit (1), 4 set bit (1), 4 referenced bit (1), 4 passed_as_arg bit (1), 3 no_value_stored bit (1), 3 fill bit (6), /* WORD 2 */ 2 address aligned structure, 3 location fixed bin (18) unsigned unaligned, 3 char_num fixed bin (2) unaligned unsigned, 3 bit_num fixed bin (4) unaligned unsigned, 3 fill bit (4) unaligned, 3 inhibit bit (1) unaligned, 3 ext_base bit (1) unaligned, 3 tag bit (6) unaligned, /* WORD 3 */ 2 units fixed bin (3) unaligned unsigned, 2 fill bit (3) unaligned, 2 reloc_hold bit (6) unaligned, 2 reloc bit (6) unaligned, 2 addr_hold bit (18) unaligned, /* WORD 4 */ 2 next_constant fixed bin (18) unsigned unaligned, 2 hash_chain fixed bin (18) unsigned unaligned, /* WORDS 5 thru n */ 2 length fixed bin (18) unsigned unaligned, 2 value char(char_constant_length refer(char_constant.length)) unaligned; dcl char_constant_length fixed bin (18) unsigned; /* DIMENSION NODE */ dcl 1 dimension aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, /* The only field in common with other nodes */ 2 number_of_dims fixed bin (3) unaligned, /* Number of dimensions */ 2 v_bound (7) unaligned, /* Variable bound info - up to 7 dims. */ 3 lower bit (1) unaligned, /* On if lower bound is variable */ 3 upper bit (1) unaligned, /* On if upper bound is variable */ 2 has_virtual_origin bit (1) unaligned, /* On if virtual_origin is valid */ 2 has_array_size bit (1) unaligned, /* On if array_size is valid */ 2 has_dim_sizes bit (1) unaligned, /* On if dim.size (*) is valid */ 2 variable_virtual_origin bit (1) unaligned, /* On if virtual_origin is variable */ 2 variable_array_size bit (1) unaligned, /* On if array_size is variable */ 2 assumed_size bit (1) unaligned, /* On if array has assumed size */ 2 fill bit (7) unaligned, /* WORD 2 */ 2 virtual_origin fixed bin (24) aligned, /* WORD 3 */ 2 element_count fixed bin (24) aligned, /* WORD 4 */ 2 array_size fixed bin (24) aligned, /* Expressed in symbol.units */ /* WORD 5 */ 2 VLA_base_addressor fixed bin (18) aligned, /* WORDS 6 - n (max = 26) */ 2 dim (num_dims refer (dimension.number_of_dims)) aligned, 3 lower_bound fixed bin (24) aligned, /* Lower bound of this dimension */ 3 upper_bound fixed bin (24) aligned, /* Upper bound of this dimension */ 3 size fixed bin (24) aligned; /* No. of elements in this dimension */ dcl num_dims fixed bin (3); /* HEADER NODE */ dcl 1 header aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, 2 data_type fixed bin (4) unaligned unsigned, 2 operand_type fixed bin (4) unaligned, 2 addressing_bits unaligned structure, 3 is_addressable bit (1), 3 value_in, 4 eaq bit (1), 4 x bit (1), 3 allocated bit (1), 3 needs_pointer bit (1), 3 stack_indirect bit (1), 3 large_address bit (1), 3 address_in_base bit (1), 3 dont_update bit (1), /* for optimizer */ 3 not_in_storage bit (1), /* for optimizer */ 3 globally_assigned bit (1), /* for optimizer */ 2 bits unaligned structure, 3 storage_info, 4 standard_bits, 5 allocate bit (1), 5 set bit (1), 5 referenced bit (1), 5 passed_as_arg bit (1), 4 initialed bit (1), /* On if any member has initial attribute. */ 3 alignment structure unaligned, 4 even bit (1), 4 odd bit (1), 4 character bit (1), 3 storage_class structure unaligned, 4 automatic bit (1), 4 static bit (1), 4 in_common bit (1), /* WORD 2 */ 2 address aligned structure, 3 base bit (3) unaligned, 3 offset fixed bin (14) unaligned, 3 char_num fixed bin (2) unaligned unsigned, 3 bit_num fixed bin (4) unaligned unsigned, 3 fill bit (4) unaligned, 3 inhibit bit (1) unaligned, 3 ext_base bit (1) unaligned, 3 tag bit (6) unaligned, /* WORD 3 */ 2 units fixed bin (3) unaligned unsigned, 2 VLA bit (1) unaligned, /* chain for VLA's */ 2 LA bit (1) unaligned, /* chain for LA's */ 2 fill bit (1) unaligned, 2 reloc_hold bit (6) unaligned, 2 reloc bit (6) unaligned, 2 addr_hold bit (18) unaligned, /* WORD 4 */ 2 next_header fixed bin (18) unsigned unaligned, 2 first_element fixed bin (18) unsigned unaligned, /* WORD 5 */ 2 last_element fixed bin (18) unsigned unaligned, 2 name_length fixed bin (17) unaligned, /* WORD 6 */ 2 location fixed bin (24) aligned, /* WORD 7 */ 2 length fixed bin (24) aligned, /* WORD 8 */ 2 VLA_base_addressor fixed bin (18) aligned, /* WORDS 9 - n. This field is variable in length. Its length is zero for equivalence groups. */ 2 block_name char(allocate_symbol_name refer (header.name_length)) aligned; dcl allocate_symbol_name fixed bin; /* LABEL NODE */ dcl 1 label aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, 2 data_type fixed bin (4) unaligned unsigned, 2 operand_type fixed bin (4) unaligned, 2 addressing_bits unaligned structure, 3 is_addressable bit (1), 3 value_in, 4 eaq bit (1), 4 x bit (1), 3 allocated bit (1), 3 needs_pointer bit (1), 3 stack_indirect bit (1), 3 large_address bit (1), 3 address_in_base bit (1), 3 dont_update bit (1), /* for optimizer */ 3 not_in_storage bit (1), /* for optimizer */ 3 globally_assigned bit (1), /* for optimizer */ 2 bits unaligned structure, 3 storage_info, 4 standard_bits, 5 allocate bit (1), 5 set bit (1), 5 referenced bit (1), 5 passed_as_arg bit (1), 4 referenced_executable bit (1), 3 usage, /* Label is on a non-executable stmnt if both bits are ON. */ 4 format bit (1), 4 executable bit (1), 3 restore_prs bit (1), 3 not_referencable bit (1), 3 branched_to bit (1), 3 ends_do_loop bit (1), /* WORD 2 */ 2 address aligned structure, 3 location fixed bin (18) unsigned unaligned, 3 op bit (10) unaligned, 3 inhibit bit (1) unaligned, 3 ext_base bit (1) unaligned, 3 tag bit (6) unaligned, /* WORD 3 */ 2 units fixed bin (3) unaligned unsigned, 2 fill bit (3) unaligned, 2 reloc_hold bit (6) unaligned, 2 reloc bit (6) unaligned, 2 addr_hold bit (18) unaligned, /* WORD 4 */ 2 next_label fixed bin (18) unsigned unaligned, 2 hash_chain fixed bin (18) unsigned unaligned, /* WORD 5 */ 2 format_var fixed bin (18) unsigned unaligned, 2 name fixed bin (17) unaligned, /* WORD 6 */ 2 statement fixed bin (18) unsigned unaligned, 2 loop_end fixed bin (18) unsigned unaligned; /* LIBRARY NODE */ dcl 1 library aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, /* The only field in common with the other nodes. */ 2 fill bit (13) unaligned, 2 next_library_node fixed bin (18) unsigned unaligned, /* WORD 2 */ 2 character_operand fixed bin (18) unsigned aligned; /* MACHINE_STATE NODE */ dcl 1 machine_state aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unal, 2 pad bit (31) unal, /* WORD 2 */ 2 next pointer unaligned, /* WORDS 3-104 */ 2 ms aligned, 3 eaq (4), /* One for each of the A, Q, EAQ, and IND */ 4 name fixed bin, 4 number fixed bin, 4 variable(4) fixed bin (18), 4 reserved bit (1) aligned, 3 rounded bit (1) aligned, 3 indicators_valid fixed bin (18), 3 value_in_xr bit (1) aligned, 3 index_regs(0:7), 4 bits structure unaligned, 5 global bit (1), 5 reserved bit (1), 5 mbz bit (34), 4 type fixed bin (18), 4 variable fixed bin (18), 4 used fixed bin (18), 4 mbz fixed bin (18), 3 address_in_base bit (1) aligned, 3 base_regs(0:7), 4 bits structure unaligned, 5 global bit (1), 5 reserved bit (1), 5 mbz bit (34), 4 type fixed bin (18), 4 variable fixed bin (18), 4 used fixed bin (18), 4 offset fixed bin (18), 3 stack_extended bit (1) aligned, 3 last_dynamic_temp fixed bin (18); /* POINTER NODE */ dcl 1 pointer aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, 2 pad bit (4) unaligned, 2 code fixed bin (9) unaligned unsigned, 2 variable fixed bin (18) unaligned unsigned, /* WORD 2 */ 2 offset fixed bin (18) unaligned unsigned, 2 count fixed bin (18) unaligned unsigned, /* WORD 3 */ 2 hash_chain fixed bin (18) aligned; /* SOURCE NODE */ dcl 1 source aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unal, 2 pad bit (13) unal, 2 line_number fixed bin (17) unaligned, /* WORD 2 */ 2 uid bit (36) aligned, /* WORDS 3 & 4 */ 2 dtm fixed bin (71) unaligned, /* WORD 5 */ 2 next fixed bin (18) unsigned unaligned, 2 initial_subprogram fixed bin (18) unsigned unaligned, /* WORDS 6 - ? (depends on length of pathname) */ 2 pathname char(256) varying; /* STATEMENT NODE - This node only appears in the polish. */ dcl 1 statement aligned based structure, /* WORD 1 */ 2 op_code fixed bin aligned, /* Always equal to "stat_op". */ /* WORD 2 */ 2 next bit (18) unaligned, /* "0"b = no next stmnt */ 2 location bit (18) unaligned, /* (18)"1"b = no text */ /* WORD 3 */ 2 source_id structure unaligned, 3 file fixed bin (8) unsigned, /* 0 = first file */ 3 line bit (14), 3 statement bit (5), /* 1 = first statement */ 2 length bit (9) unaligned, /* WORD 4 */ 2 bits structure unaligned, 3 put_in_map bit (1) unaligned, 3 put_in_profile bit (1) unaligned, 3 pad bit (7) unaligned, 2 start fixed bin (26) unaligned; /* SUBPROGRAM NODE */ dcl 1 subprogram aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, /* The only field in common with the other nodes. */ 2 subprogram_type fixed bin (3) unaligned, 2 default_is unaligned, 3 auto bit (1), 3 static bit (1), 2 need_PS bit (1) unaligned, 2 need_prologue bit (1) unaligned, 2 multiple_entry bit (1) unaligned, 2 namelist_used bit (1) unaligned, 2 has_parameters bit (1) unaligned, 2 star_extent_function bit (1) unaligned, 2 fill bit (1) unaligned, 2 symbol fixed bin (18) unsigned unaligned, /* symbol node for subprogram name */ /* WORD 2 */ 2 previous_subprogram fixed bin (18) unsigned unaligned, 2 next_subprogram fixed bin (18) unsigned unaligned, /* WORD 3 */ 2 common_chain fixed bin (18) unsigned unaligned, 2 equiv_chain fixed bin (18) unsigned unaligned, /* WORD 4 */ 2 first_symbol fixed bin (18) unsigned unaligned, 2 last_symbol fixed bin (18) unsigned unaligned, /* WORD 5 */ 2 first_label fixed bin (18) unsigned unaligned, 2 last_label fixed bin (18) unsigned unaligned, /* WORD 6 */ 2 first_polish fixed bin (18) unsigned unaligned, 2 last_polish fixed bin (18) unsigned unaligned, /* WORD 7 */ 2 map unaligned, 3 first fixed bin (18) unsigned unaligned, 3 last fixed bin (18) unsigned unaligned, /* WORD 8 */ 2 entry_info fixed bin (18) unsigned unaligned, 2 runtime fixed bin (18) unsigned unaligned, /* WORD 9 */ 2 first_quad fixed bin (18) unsigned unaligned, 2 last_quad fixed bin (18) unsigned unaligned, /* WORD 10 */ 2 options aligned like fortran_options, /* WORDS 11 - 44 */ 2 storage_info(17) aligned, 3 first fixed bin (18) unsigned unaligned, 3 last fixed bin (18) unsigned unaligned, 3 next_loc fixed bin (18) aligned, /* WORD 45 */ 2 loop_vector_p pointer unaligned, /* WORD 46 */ 2 n_loops fixed bin (18) unsigned unaligned, 2 max_operators fixed bin (18) unsigned unaligned, /* WORD 47 */ 2 VLA_chain fixed bin (18) unsigned unaligned, /* Mod 1 */ 2 LA_chain fixed bin (18) unsigned unaligned, /* Mod 1 */ /* WORD 48 */ 2 max_sym fixed bin (18) aligned; /* SYMBOL NODE */ dcl 1 symbol aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, 2 data_type fixed bin (4) unaligned unsigned, 2 operand_type fixed bin (4) unaligned, 2 addressing_bits unaligned structure, 3 is_addressable bit (1), 3 value_in, 4 eaq bit (1), 4 x bit (1), 3 allocated bit (1), 3 needs_pointer bit (1), 3 stack_indirect bit (1), 3 large_address bit (1), 3 address_in_base bit (1), 3 dont_update bit (1), /* for optimizer */ 3 not_in_storage bit (1), /* for optimizer */ 3 globally_assigned bit (1), /* for optimizer */ 2 bits unaligned structure, 3 storage_info, 4 standard_bits, 5 allocate bit (1), 5 set bit (1), 5 referenced bit (1), 5 passed_as_arg bit (1), 4 initialed bit (1), /* Allows variable to become a constant. */ 3 variable_arglist bit (1), 3 dummy_arg bit (1), 3 variable_extents bit (1), 3 needs_descriptors bit (1), 3 put_in_symtab bit (1), 3 by_compiler bit (1), /* WORD 2 */ 2 address aligned structure, 3 base bit (3) unaligned, 3 offset fixed bin (14) unaligned, 3 char_num fixed bin (2) unaligned unsigned, 3 bit_num fixed bin (4) unaligned unsigned, 3 fill bit (4) unaligned, 3 inhibit bit (1) unaligned, 3 ext_base bit (1) unaligned, 3 tag bit (6) unaligned, /* WORD 3 */ 2 units fixed bin (3) unaligned unsigned, 2 aliasable bit (1) unaligned, 2 has_constant_value bit (1) unaligned, 2 new_induction_var bit (1) unaligned, 2 reloc_hold bit (6) unaligned, 2 reloc bit (6) unaligned, 2 addr_hold bit (18) unaligned, /* WORD 4 */ 2 next_symbol fixed bin (18) unsigned unaligned, 2 hash_chain fixed bin (18) unsigned unaligned, /* WORD 5 */ 2 ext_attributes unaligned structure, 3 VLA bit (1), /* symbol is Very large Element */ 3 LA bit (1), /* symbol is Large Element */ 3 pad bit (18-2), 2 loop_ref_count fixed bin (17) unaligned, /* WORD 6 */ 2 location fixed bin (24) aligned, /* WORD 7 */ 2 v_length fixed bin (18) unsigned unaligned, 2 general fixed bin (18) unsigned unaligned, /* WORD 8 */ 2 parent fixed bin (18) unsigned unaligned, 2 next_member fixed bin (18) unsigned unaligned, /* WORD 9 */ 2 attributes aligned structure, 3 mode_bits unaligned structure, 4 char_size fixed bin (20) unsigned, 4 mode, 5 integer bit (1), 5 real bit (1), 5 double_precision bit (1), 5 complex bit (1), 5 logical bit (1), 5 character bit (1), 5 label_value bit (1), 5 entry_value bit (1), 3 misc_attributes unaligned structure, 4 function bit (1), 4 subroutine bit (1), 4 entry_point bit (1), 4 external bit (1), 4 builtin bit (1), 4 stmnt_func bit (1), 4 namelist bit (1), 4 dimensioned bit (1), /* WORD 10 */ 3 storage_class unaligned structure, 4 automatic bit (1), 4 static bit (1), 4 in_common bit (1), 4 equivalenced bit (1), 4 parameter bit (1), 4 constant bit (1), /* If external or entry_point. */ 4 named_constant bit (1), 3 variable bit (1) unaligned, 3 in_equiv_stmnt bit (1) unaligned, 3 star_extents bit (1) unaligned, 3 descriptor bit (1) unaligned, 2 pad bit (25) unaligned, /* WORD 11 */ 2 dimension fixed bin (18) unsigned unaligned, /* Bounds may be added after symbol is declared. */ 2 initial fixed bin (18) unsigned unaligned, /* WORD 12 */ 2 runtime bit (18) unaligned, 2 name_length fixed bin (17) unaligned, /* WORD 13 */ 2 coordinate fixed bin (17) unaligned, /* used by loop optimizer */ 2 element_size fixed bin (17) unaligned, /* WORD 14 */ 2 secondary pointer unaligned, /* used by loop optimizer */ /* WORD 15 */ 2 offset fixed bin (24) aligned, /* WORDS 16 - n. This field is variable in length. */ 2 name char(allocate_symbol_name refer (symbol.name_length)) aligned; /* TEMPORARY NODE -- Must be same size as ARRAY REF NODE. */ dcl 1 temporary aligned based structure, /* WORD 1 */ 2 node_type fixed bin (4) unaligned, 2 data_type fixed bin (4) unaligned unsigned, 2 operand_type fixed bin (4) unaligned, 2 addressing_bits unaligned structure, 3 is_addressable bit (1), 3 value_in, 4 eaq bit (1), 4 x bit (1), 3 allocated bit (1), 3 needs_pointer bit (1), 3 stack_indirect bit (1), 3 large_address bit (1), 3 address_in_base bit (1), 3 dont_update bit (1), /* for optimizer */ 3 not_in_storage bit (1), /* for optimizer */ 3 globally_assigned bit (1), /* for optimizer */ 2 bits unaligned structure, 3 standard_bits, 4 allocate bit (1), 4 set bit (1), 4 referenced bit (1), 4 passed_as_arg bit (1), 3 variable_length bit (1), 3 fill bit (1), /* can be used */ 3 invariant bit (1), /* must line up with array_ref node */ 3 irreducible bit (1), /* .. */ 3 used_across_loops bit (1), /* .. */ 3 frozen_for_do bit (1), 3 used_as_subscript bit (1), /* WORD 2 */ 2 address aligned structure, 3 base bit (3) unaligned, 3 offset fixed bin (14) unaligned, 3 char_num fixed bin (2) unaligned unsigned, 3 bit_num fixed bin (4) unaligned unsigned, 3 fill bit (4) unaligned, 3 inhibit bit (1) unaligned, 3 ext_base bit (1) unaligned, 3 tag bit (6) unaligned, /* WORD 3 */ 2 units fixed bin (3) unaligned unsigned, 2 fill bit (3) unaligned, 2 reloc_hold bit (6) unaligned, 2 reloc bit (6) unaligned, 2 addr_hold bit (18) unaligned, /* WORD 4 */ 2 next fixed bin (18) unsigned unaligned, 2 loop_end_fu_pos fixed bin (17) unaligned, /* must overlay array_ref.loop_end_fu_pos */ /* WORD 5 */ 2 pad fixed bin (18) unsigned unaligned, 2 loop_ref_count fixed bin (17) unaligned, /* WORD 6 */ 2 location fixed bin (24) aligned, /* WORD 7*/ 2 ref_count fixed bin (17) unaligned, /* must overlay array_ref.ref_count */ 2 output_by fixed bin (18) unsigned unal, /* must overlay array_ref.output_by */ /* WORD 8 */ 2 size fixed bin (24) aligned, /* size in words */ /* WORD 9 */ 2 start_input_to fixed bin (18) unsigned unal, /* must overlay array_ref.start_input_to */ 2 end_input_to fixed bin (18) unsigned unal, /* must overlay array_ref.end_input_to */ /* WORD 10 */ 2 ref_count_copy fixed bin (17) unaligned, /* must overlay array_ref.ref_count_copy */ 2 ms_ref_count fixed bin (17) unaligned, /* counts occurances in saved machine states */ /* WORD 11 */ 2 length fixed bin (24) aligned; /* length in characters */ /* END fort_nodes.incl.pl1 */ */ ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group Bull including Bull HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell Bull Inc., Groupe Bull and Bull HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, Bull or Bull HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by Bull HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved */