COMPILATION LISTING OF SEGMENT propagate_bit Compiled by: Multics PL/I Compiler, Release 28d, of September 14, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 10/03/83 1550.7 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 propagate_bit: proc(sym,number); 12 13 /* Modified 780616 by PG for unsigned */ 14 /* Modified Dec 1978 by DS for new cross-ref 'set' format */ 15 16 /* parameters */ 17 18 dcl ( sym ptr, 19 number fixed bin (15)) parameter; 20 21 /* automatic */ 22 23 dcl (p, r) ptr; 24 25 /* builtins */ 26 27 dcl (null, string, substr) builtin; 28 29 /* include files */ 30 1 1 /* BEGIN INCLUDE FILE ... symbol.incl.pl1 */ 1 2 1 3 dcl 1 symbol based aligned, 1 4 2 node_type bit(9) unal, 1 5 2 source_id structure unal, 1 6 3 file_number bit(8), 1 7 3 line_number bit(14), 1 8 3 statement_number bit(5), 1 9 2 location fixed(18) unal unsigned, 1 10 2 allocated bit(1) unal, 1 11 2 dcl_type bit(3) unal, 1 12 2 reserved bit(6) unal, 1 13 2 pix unal, 1 14 3 pic_fixed bit(1) unal, 1 15 3 pic_float bit(1) unal, 1 16 3 pic_char bit(1) unal, 1 17 3 pic_scale fixed(7) unal, 1 18 3 pic_size fixed(7) unal, 1 19 2 level fixed(8) unal, 1 20 2 boundary fixed(3) unal, 1 21 2 size_units fixed(3) unal, 1 22 2 scale fixed(7) unal, 1 23 2 runtime bit(18) unal, 1 24 2 runtime_offset bit(18) unal, 1 25 2 block_node ptr unal, 1 26 2 token ptr unal, 1 27 2 next ptr unal, 1 28 2 multi_use ptr unal, 1 29 2 cross_references ptr unal, 1 30 2 initial ptr unal, 1 31 2 array ptr unal, 1 32 2 descriptor ptr unal, 1 33 2 equivalence ptr unal, 1 34 2 reference ptr unal, 1 35 2 general ptr unal, 1 36 2 father ptr unal, 1 37 2 brother ptr unal, 1 38 2 son ptr unal, 1 39 2 word_size ptr unal, 1 40 2 bit_size ptr unal, 1 41 2 dcl_size ptr unal, 1 42 2 symtab_size ptr unal, 1 43 2 c_word_size fixed(24), 1 44 2 c_bit_size fixed(24), 1 45 2 c_dcl_size fixed(24), 1 46 1 47 2 attributes structure aligned, 1 48 3 data_type structure unal, 1 49 4 structure bit(1) , 1 50 4 fixed bit(1), 1 51 4 float bit(1), 1 52 4 bit bit(1), 1 53 4 char bit(1), 1 54 4 ptr bit(1), 1 55 4 offset bit(1), 1 56 4 area bit(1), 1 57 4 label bit(1), 1 58 4 entry bit(1), 1 59 4 file bit(1), 1 60 4 arg_descriptor bit(1), 1 61 4 storage_block bit(1), 1 62 4 explicit_packed bit(1), /* options(packed) */ 1 63 4 condition bit(1), 1 64 4 format bit(1), 1 65 4 builtin bit(1), 1 66 4 generic bit(1), 1 67 4 picture bit(1), 1 68 1 69 3 misc_attributes structure unal, 1 70 4 dimensioned bit(1), 1 71 4 initialed bit(1), 1 72 4 aligned bit(1), 1 73 4 unaligned bit(1), 1 74 4 signed bit(1), 1 75 4 unsigned bit(1), 1 76 4 precision bit(1), 1 77 4 varying bit(1), 1 78 4 local bit(1), 1 79 4 decimal bit(1), 1 80 4 binary bit(1), 1 81 4 real bit(1), 1 82 4 complex bit(1), 1 83 4 variable bit(1), 1 84 4 reducible bit(1), 1 85 4 irreducible bit(1), 1 86 4 returns bit(1), 1 87 4 position bit(1), 1 88 4 internal bit(1), 1 89 4 external bit(1), 1 90 4 like bit(1), 1 91 4 member bit(1), 1 92 4 non_varying bit(1), 1 93 4 options bit(1), 1 94 4 variable_arg_list bit(1), /* options(variable) */ 1 95 4 alloc_in_text bit(1), /* options(constant) */ 1 96 1 97 3 storage_class structure unal, 1 98 4 auto bit(1), 1 99 4 based bit(1), 1 100 4 static bit(1), 1 101 4 controlled bit(1), 1 102 4 defined bit(1), 1 103 4 parameter bit(1), 1 104 4 param_desc bit(1), 1 105 4 constant bit(1), 1 106 4 temporary bit(1), 1 107 4 return_value bit(1), 1 108 1 109 3 file_attributes structure unal, 1 110 4 print bit(1), 1 111 4 input bit(1), 1 112 4 output bit(1), 1 113 4 update bit(1), 1 114 4 stream bit(1), 1 115 4 reserved_1 bit(1), 1 116 4 record bit(1), 1 117 4 sequential bit(1), 1 118 4 direct bit(1), 1 119 4 interactive bit(1), /* env(interactive) */ 1 120 4 reserved_2 bit(1), 1 121 4 reserved_3 bit(1), 1 122 4 stringvalue bit(1), /* env(stringvalue) */ 1 123 4 keyed bit(1), 1 124 4 reserved_4 bit(1), 1 125 4 environment bit(1), 1 126 1 127 3 compiler_developed structure unal, 1 128 4 aliasable bit(1), 1 129 4 packed bit(1), 1 130 4 passed_as_arg bit(1), 1 131 4 allocate bit(1), 1 132 4 set bit(1), 1 133 4 exp_extents bit(1), 1 134 4 refer_extents bit(1), 1 135 4 star_extents bit(1), 1 136 4 isub bit(1), 1 137 4 put_in_symtab bit(1), 1 138 4 contiguous bit(1), 1 139 4 put_data bit(1), 1 140 4 overlayed bit(1), 1 141 4 error bit(1), 1 142 4 symtab_processed bit(1), 1 143 4 overlayed_by_builtin bit(1), 1 144 4 defaulted bit(1), 1 145 4 connected bit(1); 1 146 1 147 /* END INCLUDE FILE ... symbol.incl.pl1 */ 31 2 1 /* BEGIN INCLUDE FILE ... symbol_bits.incl.pl1 */ 2 2 2 3 dcl ( aliasable_bit initial (72), 2 4 passed_as_arg_bit initial (74), 2 5 set_bit initial (76), 2 6 overlayed_by_builtin_bit initial (87)) fixed bin (15) internal static options (constant); 2 7 2 8 /* END INCLUDE FILE ... symbol_bits.incl.pl1 */ 32 3 1 /* BEGIN INCLUDE FILE ... cross_reference.incl.pl1 */ 3 2 3 3 dcl 1 cross_reference based aligned, 3 4 2 node_type bit(9) unaligned, 3 5 2 source_id structure unaligned, 3 6 3 file_number bit(8), 3 7 3 line_number bit(14), 3 8 3 statement_number bit(5), 3 9 2 next ptr unaligned, 3 10 2 ref_type structure unaligned, 3 11 3 set_reference bit(1), 3 12 3 pad bit(35); 3 13 3 14 /* END INCLUDE FILE ... cross_reference.incl.pl1 */ 33 34 35 /* program */ 36 37 if sym->symbol.temporary then return; 38 39 p = sym; 40 41 if number = set_bit /* Set gets propagated to ancestors as well */ 42 then do; 43 r = p -> symbol.cross_references; 44 if r ^= null then r -> cross_reference.set_reference = "1"b; 45 /* r = null means symbol is compiler-developed */ 46 /* Support new 'set' format in listing */ 47 r = p; 48 do while(r->symbol.father^=null); 49 r=r->symbol.father; 50 substr(string(r->symbol.attributes),number,1) = "1"b; 51 end; 52 end; 53 else if substr (string (p->symbol.attributes), number, 1) 54 then return; 55 56 substr(string(p->symbol.attributes),number,1) = "1"b; 57 if p->symbol.son^=null 58 then call propagate((p->symbol.son)); 59 60 propagate: proc(p); 61 62 dcl p ptr unal, 63 q ptr; 64 65 q = p; 66 67 do while(q^=null); 68 substr(string(q->symbol.attributes),number,1) = "1"b; 69 70 if q->symbol.son^=null 71 then call propagate(q->symbol.son); 72 73 q = q->symbol.brother; 74 end; 75 76 end propagate; 77 78 end /* propagate_bit */; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/03/83 1006.9 propagate_bit.pl1 >spec>on>pl128d>propagate_bit.pl1 31 1 10/02/83 0828.4 symbol.incl.pl1 >spec>on>pl128d>symbol.incl.pl1 32 2 07/21/80 1546.3 symbol_bits.incl.pl1 >ldd>include>symbol_bits.incl.pl1 33 3 10/25/79 1645.8 cross_reference.incl.pl1 >ldd>include>cross_reference.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. attributes 31 based structure level 2 dcl 1-3 ref 50 53 56 68 brother 20 based pointer level 2 packed unaligned dcl 1-3 ref 73 cross_reference based structure level 1 dcl 3-3 cross_references 10 based pointer level 2 packed unaligned dcl 1-3 ref 43 father 17 based pointer level 2 packed unaligned dcl 1-3 ref 48 49 null builtin function dcl 27 ref 44 48 57 67 70 number parameter fixed bin(15,0) dcl 18 ref 11 41 50 53 56 68 p 000100 automatic pointer dcl 23 in procedure "propagate_bit" set ref 39* 43 47 53 56 57 57 p parameter pointer unaligned dcl 62 in procedure "propagate" ref 60 65 q 000100 automatic pointer dcl 62 set ref 65* 67 68 70 70 73* 73 r 000102 automatic pointer dcl 23 set ref 43* 44 44 47* 48 49* 49 50 ref_type 2 based structure level 2 packed unaligned dcl 3-3 set_bit constant fixed bin(15,0) initial dcl 2-3 ref 41 set_reference 2 based bit(1) level 3 packed unaligned dcl 3-3 set ref 44* son 21 based pointer level 2 packed unaligned dcl 1-3 set ref 57 57 70 70* storage_class 32(09) based structure level 3 packed unaligned dcl 1-3 string builtin function dcl 27 ref 50 53 56 68 substr builtin function dcl 27 set ref 50* 53 56* 68* sym parameter pointer dcl 18 ref 11 37 39 symbol based structure level 1 dcl 1-3 temporary 32(17) based bit(1) level 4 packed unaligned dcl 1-3 ref 37 NAMES DECLARED BY DECL Processed root_02: 126 47 305 46 2$ TS? Cvinc incremental_volume_dumper: Processed root_03: 129 45 883 54 3$ TSv$Cvinc incremental_volume_dumper: Processed root_04: 103 41 238 36 3$ TS{ ;vinc incremental_volume_dumper: Processed tr01: 0 0 1 1 24$ TSg?vinc incremental_volume_dumper: Processed bull01: 0 0 118 2 15$ TS4}=vinc incremental_volume_dumper: Processed bull02: 0 0 0 0 12$ TSs#=vinc incremental_volume_dumper: Processed bull03: 0 0 0 0 13$ TS=vinc incremental_volume_dumper: Processed bull04: 0 0 0 0 12$ TS.=vinc incremental_volume_dumper: Processed bull05: 0 0 0 0 37$ TSX=vinc incremental_volume_dumper: Processed pub_01: 0 0 15 7 0$ TSF=vinc incremental_volume_dumper: Processed pub_02: 0 0 34 9 0$ TS>vinc incremental_volume_dumper: Processed pub_03: 0 0 36 16 0$ TS=vinc incremental_volume_dumper: Processed pub_04: 0 0 20 8 0$ TS0=vinc incremental_volume_dumper: Processed pub_05: 0 0 15 8 0$ TSAV>vinc incremental_volume_dumper: Processed pub_06: 0 0 127 8 0$ TS,\<vinc incremental_volume_dumper: Processed pub_07: 0 0 7 5 0$ TS=vinc incremental_volume_dumper: Processed pub_08: 0 0 26 7 0$ TS<vinc incremental_volume_dumper: Processed abb01: 0 0 52 2 2$ TS3;vinc incremental_volume_dumper: Processed abb02: 0 0 7 4 9$ TS9<vinc incremental_volume_dumper: Processed abb03: 0 0 68 8 7$ TS-<vinc incremental_volume_dumper: Processed abb04: 0 0 76 7 6$ TS =vinc incremental_volume_dumper: Processed abb05: 0 0 136 8 1$ TS$=vinc incremental_volume_dumper: Processed abb06: 0 0 224 9 4$ TS<.>vinc incremental_volume_dumper: Processed abb07: 0 0 159 19 4$ TSI<vinc incremental_volume_dumper: Processed abb08: 0 0 55 6 1$ TSI8vinc incremental_volume_dumpe