6 <USE "COMPDEC" "CODGEN" "CHKDCL" "STRGEN" "MIMGEN">
8 <DEFINE ALL-REST-GEN (N W
9 "AUX" (R? <==? <NODE-SUBR .N> ,REST>) SAC NAC TEM STR NUM
10 SPARE (K <KIDS .N>) (SS <TYPE-INFO .N>) T1 T2 CAC)
11 #DECL ((N) NODE (K) <LIST NODE NODE> (SS) <LIST LIST LIST LIST>)
14 <COND (<TYPE? .W TEMP> .W)
15 (<NOT <EMPTY? <3 .SS>>> <TEMP-NAME-SYM <NODE-NAME <3 .SS>>>)
17 <COND (<OR <NOT <TYPE? .STR TEMP>>
18 <AND <N==? .W .STR> <G? <TEMP-REFS .STR> 1>>>
19 <SET STR <MOVE-ARG .STR <GEN-TEMP <>>>>)>
20 <COND (.CAREFUL <EMPTY-CHECK LIST .STR LIST>)>
22 (<OR <NOT <EMPTY? <1 .SS>>> <NOT <EMPTY? <2 .SS>>>>
25 <COND (<NOT <EMPTY? <1 .SS>>>
26 <TEMP-NAME-SYM <NODE-NAME <1 <1 .SS>>>>)
27 (<NOT <EMPTY? <2 .SS>>>
28 <TEMP-NAME-SYM <NODE-NAME <1 <2 .SS>>>>)
31 <COND (<ASSIGNED? NUM> <IEMIT `LOOP (<TEMP-NAME .MUM> VALUE)
32 (<TEMP-NAME .STR> VALUE)>)
33 (ELSE <IEMIT `LOOP (<TEMP-NAME .STR> VALUE)>)>
34 <LABEL-TAG <SET T1 <MAKE-TAG>>>
35 <REST-LIST .STR <SET SPARE <GEN-TEMP>> 1>
36 <EMPTY-LIST .SPARE <SET T2 <MAKE-TAG>> T>
37 <SET-TEMP .STR .SPARE>
39 <COND (<ASSIGNED? NUM> <IEMIT `ADD .NUM 1 = .NUM>)>
42 <MUNG-VALS .STR <3 .SS>>
43 <COND (<ASSIGNED? NUM>
44 <MUNG-VALS .NUM <1 .SS>>
45 <COND (<AND <NOT <EMPTY? <2 .SS>>> <NOT <EMPTY? <1 .SS>>>>
46 <IEMIT `ADD .NUM 1 = .NUM>)>
47 <MUNG-VALS .NUM <2 .SS>>)>
48 <COND (.R? <MOVE-ARG .STR .W>)
50 <COND (<==? .W DONT-CARE> <SET W <GEN-TEMP>>)
51 (<TYPE? .W TEMP> <USE-TEMP .W>)>
56 <DEFINE MUNG-VALS (D L)
57 #DECL ((L) <LIST [REST NODE]>)
59 <FUNCTION (N "AUX" (S <NODE-NAME .N>))
61 <COND (<N==? .D <TEMP-NAME-SYM .S>>