Browse Source

Plan 9 from Bell Labs 2004-10-23

David du Colombier 19 years ago
parent
commit
2ca54a43ee

+ 18 - 15
dist/replica/_plan9.db

@@ -5395,7 +5395,7 @@ sys/src/9/pc/mem.h - 664 sys sys 1018553448 4573
 sys/src/9/pc/memory.c - 664 sys sys 1071245460 13028
 sys/src/9/pc/mkfile - 664 sys sys 1067810339 3219
 sys/src/9/pc/mmu.c - 664 sys sys 1091110410 10043
-sys/src/9/pc/mouse.c - 664 sys sys 1065717607 6625
+sys/src/9/pc/mouse.c - 664 sys sys 1098479254 7057
 sys/src/9/pc/mp.c - 664 sys sys 1084475127 17013
 sys/src/9/pc/mp.h - 664 sys sys 1015014520 6575
 sys/src/9/pc/nv_dma.h - 664 sys sys 1081384508 12943
@@ -6570,7 +6570,7 @@ sys/src/cmd/1c/mul.c - 664 sys sys 944961353 2599
 sys/src/cmd/1c/peep.c - 664 sys sys 1089299178 15578
 sys/src/cmd/1c/reg.c - 664 sys sys 1089299178 21252
 sys/src/cmd/1c/sgen.c - 664 sys sys 1089299179 10853
-sys/src/cmd/1c/swt.c - 664 sys sys 1089299179 15357
+sys/src/cmd/1c/swt.c - 664 sys sys 1098463320 15417
 sys/src/cmd/1c/txt.c - 664 sys sys 944961353 16943
 sys/src/cmd/1l - 20000000775 sys sys 954038577 0
 sys/src/cmd/1l/asm.c - 664 sys sys 1089299178 27888
@@ -6601,7 +6601,7 @@ sys/src/cmd/2c/mul.c - 664 sys sys 944960717 2599
 sys/src/cmd/2c/peep.c - 664 sys sys 1089299176 15926
 sys/src/cmd/2c/reg.c - 664 sys sys 1089299176 22310
 sys/src/cmd/2c/sgen.c - 664 sys sys 1089299177 12738
-sys/src/cmd/2c/swt.c - 664 sys sys 1089299177 17110
+sys/src/cmd/2c/swt.c - 664 sys sys 1098463320 17170
 sys/src/cmd/2c/txt.c - 664 sys sys 944960718 17625
 sys/src/cmd/2l - 20000000775 sys sys 954035020 0
 sys/src/cmd/2l/asm.c - 664 sys sys 1045503932 28491
@@ -6633,7 +6633,7 @@ sys/src/cmd/5c/mul.c - 664 sys sys 969500849 9271
 sys/src/cmd/5c/peep.c - 664 sys sys 1089299175 24469
 sys/src/cmd/5c/reg.c - 664 sys sys 1089299174 19492
 sys/src/cmd/5c/sgen.c - 664 sys sys 1089299174 9114
-sys/src/cmd/5c/swt.c - 664 sys sys 1089299174 12828
+sys/src/cmd/5c/swt.c - 664 sys sys 1098463320 12888
 sys/src/cmd/5c/txt.c - 664 sys sys 1089299173 19028
 sys/src/cmd/5i - 20000000775 sys sys 984756705 0
 sys/src/cmd/5i/5i.c - 664 sys sys 1091732882 4886
@@ -6678,7 +6678,7 @@ sys/src/cmd/7c/mul.c - 664 sys sys 944961627 9189
 sys/src/cmd/7c/peep.c - 664 sys sys 950104622 11473
 sys/src/cmd/7c/reg.c - 664 sys sys 1089299275 19737
 sys/src/cmd/7c/sgen.c - 664 sys sys 952627644 8781
-sys/src/cmd/7c/swt.c - 664 sys sys 944961627 11569
+sys/src/cmd/7c/swt.c - 664 sys sys 1098463320 11561
 sys/src/cmd/7c/txt.c - 664 sys sys 1089299172 20195
 sys/src/cmd/7l - 20000000775 sys sys 954267784 0
 sys/src/cmd/7l/asm.c - 774 sys sys 1045503943 27093
@@ -6714,7 +6714,7 @@ sys/src/cmd/8c/mul.c - 664 sys sys 1089382812 5535
 sys/src/cmd/8c/peep.c - 664 sys sys 1089299181 11182
 sys/src/cmd/8c/reg.c - 664 sys sys 1089299180 20556
 sys/src/cmd/8c/sgen.c - 664 sys sys 1089299181 12833
-sys/src/cmd/8c/swt.c - 664 sys sys 1089299180 10883
+sys/src/cmd/8c/swt.c - 664 sys sys 1098463321 10943
 sys/src/cmd/8c/txt.c - 664 sys sys 1089299180 24215
 sys/src/cmd/8l - 20000000775 sys sys 1017165863 0
 sys/src/cmd/8l/asm.c - 664 sys sys 1089299184 10256
@@ -6799,7 +6799,7 @@ sys/src/cmd/acme/mkfile - 664 sys sys 1058463682 543
 sys/src/cmd/acme/regx.c - 664 sys sys 1014926094 16057
 sys/src/cmd/acme/rows.c - 664 sys sys 1084542482 14664
 sys/src/cmd/acme/scrl.c - 664 sys sys 1014926095 3072
-sys/src/cmd/acme/text.c - 664 sys sys 1097972739 27552
+sys/src/cmd/acme/text.c - 664 sys sys 1098466676 27550
 sys/src/cmd/acme/time.c - 664 sys sys 1014926095 1783
 sys/src/cmd/acme/util.c - 664 sys sys 1079102916 7412
 sys/src/cmd/acme/wind.c - 664 sys sys 1096388102 11187
@@ -7218,19 +7218,19 @@ sys/src/cmd/cc - 20000000775 sys sys 1018556175 0
 sys/src/cmd/cc/acid.c - 664 sys sys 944960808 5314
 sys/src/cmd/cc/bits.c - 664 sys sys 944960873 850
 sys/src/cmd/cc/cc.a8 - 664 sys sys 1089383589 487648
-sys/src/cmd/cc/cc.h - 664 sys sys 1089299183 12053
+sys/src/cmd/cc/cc.h - 664 sys sys 1098463305 12048
 sys/src/cmd/cc/cc.y - 664 sys sys 1076969746 15801
 sys/src/cmd/cc/com.c - 664 sys sys 1089299183 18909
 sys/src/cmd/cc/com64.c - 664 sys sys 1089299182 9975
 sys/src/cmd/cc/compat - 664 sys sys 1014925177 684
 sys/src/cmd/cc/compat.c - 664 sys sys 1084472048 417
 sys/src/cmd/cc/dcl.c - 664 sys sys 1089299183 26723
-sys/src/cmd/cc/dpchk.c - 664 sys sys 1089299182 7089
+sys/src/cmd/cc/dpchk.c - 664 sys sys 1098463305 7033
 sys/src/cmd/cc/funct.c - 664 sys sys 984718510 6167
 sys/src/cmd/cc/lex.c - 664 sys sys 1089299182 23826
-sys/src/cmd/cc/lexbody - 664 sys sys 1089299183 9017
+sys/src/cmd/cc/lexbody - 664 sys sys 1098499731 9014
 sys/src/cmd/cc/mac.c - 664 sys sys 944960808 36
-sys/src/cmd/cc/macbody - 664 sys sys 1089299183 11365
+sys/src/cmd/cc/macbody - 664 sys sys 1098463324 11358
 sys/src/cmd/cc/machcap.c - 664 sys sys 1084472048 78
 sys/src/cmd/cc/mkfile - 664 sys sys 1089299182 578
 sys/src/cmd/cc/pickle.c - 664 sys sys 1063855374 4829
@@ -9590,7 +9590,7 @@ sys/src/cmd/kc/mul.c - 664 sys sys 1089299171 9255
 sys/src/cmd/kc/peep.c - 664 sys sys 1089299171 10332
 sys/src/cmd/kc/reg.c - 664 sys sys 1089299171 18937
 sys/src/cmd/kc/sgen.c - 664 sys sys 952627586 8742
-sys/src/cmd/kc/swt.c - 664 sys sys 1089299171 11895
+sys/src/cmd/kc/swt.c - 664 sys sys 1098463321 11955
 sys/src/cmd/kc/txt.c - 664 sys sys 1089299171 19578
 sys/src/cmd/ki - 20000000775 sys sys 944961015 0
 sys/src/cmd/ki/bpt.c - 664 sys sys 944961014 2247
@@ -10137,7 +10137,7 @@ sys/src/cmd/qc/peep.c - 664 sys sys 1089299168 15241
 sys/src/cmd/qc/q.out.h - 664 sys sys 1089299169 5042
 sys/src/cmd/qc/reg.c - 664 sys sys 1089299169 19059
 sys/src/cmd/qc/sgen.c - 664 sys sys 1089299169 9499
-sys/src/cmd/qc/swt.c - 664 sys sys 1089299168 11985
+sys/src/cmd/qc/swt.c - 664 sys sys 1098463321 12045
 sys/src/cmd/qc/txt.c - 664 sys sys 1089299169 20223
 sys/src/cmd/qi - 20000000775 sys sys 1076688570 0
 sys/src/cmd/qi/bpt.c - 644 sys sys 1076688568 2247
@@ -10230,7 +10230,7 @@ sys/src/cmd/rio/data.c - 664 sys sys 1014926356 6169
 sys/src/cmd/rio/fns.h - 664 sys sys 1039133251 1065
 sys/src/cmd/rio/fsys.c - 664 sys sys 1019678647 13259
 sys/src/cmd/rio/mkfile - 664 sys sys 1039133251 454
-sys/src/cmd/rio/rio.c - 664 sys sys 1080159097 21977
+sys/src/cmd/rio/rio.c - 664 sys sys 1098468361 22140
 sys/src/cmd/rio/scrl.c - 664 sys sys 1014926357 3245
 sys/src/cmd/rio/time.c - 664 sys sys 1014926357 1829
 sys/src/cmd/rio/util.c - 664 sys sys 1014926357 2061
@@ -10992,7 +10992,7 @@ sys/src/cmd/vc/mul.c - 664 sys sys 944961340 9189
 sys/src/cmd/vc/peep.c - 664 sys sys 1089299165 10302
 sys/src/cmd/vc/reg.c - 664 sys sys 1089299166 19378
 sys/src/cmd/vc/sgen.c - 664 sys sys 1089299165 8548
-sys/src/cmd/vc/swt.c - 664 sys sys 1089299165 12101
+sys/src/cmd/vc/swt.c - 664 sys sys 1098463321 12161
 sys/src/cmd/vc/txt.c - 664 sys sys 1089299165 22720
 sys/src/cmd/vc/v.out.h - 664 sys sys 1089299165 2630
 sys/src/cmd/venti - 20000000775 sys sys 947360466 0
@@ -12387,3 +12387,6 @@ usr/glenda/lib/profile - 664 glenda glenda 1021580005 847
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
+sys/src/cmd/cc/y.tab.c - 664 sys sys 1098501521 53564
+sys/src/cmd/cc/y.tab.h - 664 sys sys 1098501521 1680
+sys/src/cmd/cc/cc.a8 xxx REMOVED xxx xxx 0 0

+ 17 - 16
dist/replica/plan9.db

@@ -5395,7 +5395,7 @@ sys/src/9/pc/mem.h - 664 sys sys 1018553448 4573
 sys/src/9/pc/memory.c - 664 sys sys 1071245460 13028
 sys/src/9/pc/mkfile - 664 sys sys 1067810339 3219
 sys/src/9/pc/mmu.c - 664 sys sys 1091110410 10043
-sys/src/9/pc/mouse.c - 664 sys sys 1065717607 6625
+sys/src/9/pc/mouse.c - 664 sys sys 1098479254 7057
 sys/src/9/pc/mp.c - 664 sys sys 1084475127 17013
 sys/src/9/pc/mp.h - 664 sys sys 1015014520 6575
 sys/src/9/pc/nv_dma.h - 664 sys sys 1081384508 12943
@@ -6570,7 +6570,7 @@ sys/src/cmd/1c/mul.c - 664 sys sys 944961353 2599
 sys/src/cmd/1c/peep.c - 664 sys sys 1089299178 15578
 sys/src/cmd/1c/reg.c - 664 sys sys 1089299178 21252
 sys/src/cmd/1c/sgen.c - 664 sys sys 1089299179 10853
-sys/src/cmd/1c/swt.c - 664 sys sys 1089299179 15357
+sys/src/cmd/1c/swt.c - 664 sys sys 1098463320 15417
 sys/src/cmd/1c/txt.c - 664 sys sys 944961353 16943
 sys/src/cmd/1l - 20000000775 sys sys 954038577 0
 sys/src/cmd/1l/asm.c - 664 sys sys 1089299178 27888
@@ -6601,7 +6601,7 @@ sys/src/cmd/2c/mul.c - 664 sys sys 944960717 2599
 sys/src/cmd/2c/peep.c - 664 sys sys 1089299176 15926
 sys/src/cmd/2c/reg.c - 664 sys sys 1089299176 22310
 sys/src/cmd/2c/sgen.c - 664 sys sys 1089299177 12738
-sys/src/cmd/2c/swt.c - 664 sys sys 1089299177 17110
+sys/src/cmd/2c/swt.c - 664 sys sys 1098463320 17170
 sys/src/cmd/2c/txt.c - 664 sys sys 944960718 17625
 sys/src/cmd/2l - 20000000775 sys sys 954035020 0
 sys/src/cmd/2l/asm.c - 664 sys sys 1045503932 28491
@@ -6633,7 +6633,7 @@ sys/src/cmd/5c/mul.c - 664 sys sys 969500849 9271
 sys/src/cmd/5c/peep.c - 664 sys sys 1089299175 24469
 sys/src/cmd/5c/reg.c - 664 sys sys 1089299174 19492
 sys/src/cmd/5c/sgen.c - 664 sys sys 1089299174 9114
-sys/src/cmd/5c/swt.c - 664 sys sys 1089299174 12828
+sys/src/cmd/5c/swt.c - 664 sys sys 1098463320 12888
 sys/src/cmd/5c/txt.c - 664 sys sys 1089299173 19028
 sys/src/cmd/5i - 20000000775 sys sys 984756705 0
 sys/src/cmd/5i/5i.c - 664 sys sys 1091732882 4886
@@ -6678,7 +6678,7 @@ sys/src/cmd/7c/mul.c - 664 sys sys 944961627 9189
 sys/src/cmd/7c/peep.c - 664 sys sys 950104622 11473
 sys/src/cmd/7c/reg.c - 664 sys sys 1089299275 19737
 sys/src/cmd/7c/sgen.c - 664 sys sys 952627644 8781
-sys/src/cmd/7c/swt.c - 664 sys sys 944961627 11569
+sys/src/cmd/7c/swt.c - 664 sys sys 1098463320 11561
 sys/src/cmd/7c/txt.c - 664 sys sys 1089299172 20195
 sys/src/cmd/7l - 20000000775 sys sys 954267784 0
 sys/src/cmd/7l/asm.c - 774 sys sys 1045503943 27093
@@ -6714,7 +6714,7 @@ sys/src/cmd/8c/mul.c - 664 sys sys 1089382812 5535
 sys/src/cmd/8c/peep.c - 664 sys sys 1089299181 11182
 sys/src/cmd/8c/reg.c - 664 sys sys 1089299180 20556
 sys/src/cmd/8c/sgen.c - 664 sys sys 1089299181 12833
-sys/src/cmd/8c/swt.c - 664 sys sys 1089299180 10883
+sys/src/cmd/8c/swt.c - 664 sys sys 1098463321 10943
 sys/src/cmd/8c/txt.c - 664 sys sys 1089299180 24215
 sys/src/cmd/8l - 20000000775 sys sys 1017165863 0
 sys/src/cmd/8l/asm.c - 664 sys sys 1089299184 10256
@@ -6799,7 +6799,7 @@ sys/src/cmd/acme/mkfile - 664 sys sys 1058463682 543
 sys/src/cmd/acme/regx.c - 664 sys sys 1014926094 16057
 sys/src/cmd/acme/rows.c - 664 sys sys 1084542482 14664
 sys/src/cmd/acme/scrl.c - 664 sys sys 1014926095 3072
-sys/src/cmd/acme/text.c - 664 sys sys 1097972739 27552
+sys/src/cmd/acme/text.c - 664 sys sys 1098466676 27550
 sys/src/cmd/acme/time.c - 664 sys sys 1014926095 1783
 sys/src/cmd/acme/util.c - 664 sys sys 1079102916 7412
 sys/src/cmd/acme/wind.c - 664 sys sys 1096388102 11187
@@ -7217,25 +7217,26 @@ sys/src/cmd/cb/mkfile - 664 sys sys 1062860425 172
 sys/src/cmd/cc - 20000000775 sys sys 1018556175 0
 sys/src/cmd/cc/acid.c - 664 sys sys 944960808 5314
 sys/src/cmd/cc/bits.c - 664 sys sys 944960873 850
-sys/src/cmd/cc/cc.a8 - 664 sys sys 1089383589 487648
-sys/src/cmd/cc/cc.h - 664 sys sys 1089299183 12053
+sys/src/cmd/cc/cc.h - 664 sys sys 1098463305 12048
 sys/src/cmd/cc/cc.y - 664 sys sys 1076969746 15801
 sys/src/cmd/cc/com.c - 664 sys sys 1089299183 18909
 sys/src/cmd/cc/com64.c - 664 sys sys 1089299182 9975
 sys/src/cmd/cc/compat - 664 sys sys 1014925177 684
 sys/src/cmd/cc/compat.c - 664 sys sys 1084472048 417
 sys/src/cmd/cc/dcl.c - 664 sys sys 1089299183 26723
-sys/src/cmd/cc/dpchk.c - 664 sys sys 1089299182 7089
+sys/src/cmd/cc/dpchk.c - 664 sys sys 1098463305 7033
 sys/src/cmd/cc/funct.c - 664 sys sys 984718510 6167
 sys/src/cmd/cc/lex.c - 664 sys sys 1089299182 23826
-sys/src/cmd/cc/lexbody - 664 sys sys 1089299183 9017
+sys/src/cmd/cc/lexbody - 664 sys sys 1098499731 9014
 sys/src/cmd/cc/mac.c - 664 sys sys 944960808 36
-sys/src/cmd/cc/macbody - 664 sys sys 1089299183 11365
+sys/src/cmd/cc/macbody - 664 sys sys 1098463324 11358
 sys/src/cmd/cc/machcap.c - 664 sys sys 1084472048 78
 sys/src/cmd/cc/mkfile - 664 sys sys 1089299182 578
 sys/src/cmd/cc/pickle.c - 664 sys sys 1063855374 4829
 sys/src/cmd/cc/scon.c - 664 sys sys 1089343502 8606
 sys/src/cmd/cc/sub.c - 664 sys sys 1089299183 33811
+sys/src/cmd/cc/y.tab.c - 664 sys sys 1098501521 53564
+sys/src/cmd/cc/y.tab.h - 664 sys sys 1098501521 1680
 sys/src/cmd/cdfs - 20000000775 sys sys 959922196 0
 sys/src/cmd/cdfs/buf.c - 664 sys sys 964456822 1848
 sys/src/cmd/cdfs/dat.h - 664 sys sys 1014925665 2334
@@ -9590,7 +9591,7 @@ sys/src/cmd/kc/mul.c - 664 sys sys 1089299171 9255
 sys/src/cmd/kc/peep.c - 664 sys sys 1089299171 10332
 sys/src/cmd/kc/reg.c - 664 sys sys 1089299171 18937
 sys/src/cmd/kc/sgen.c - 664 sys sys 952627586 8742
-sys/src/cmd/kc/swt.c - 664 sys sys 1089299171 11895
+sys/src/cmd/kc/swt.c - 664 sys sys 1098463321 11955
 sys/src/cmd/kc/txt.c - 664 sys sys 1089299171 19578
 sys/src/cmd/ki - 20000000775 sys sys 944961015 0
 sys/src/cmd/ki/bpt.c - 664 sys sys 944961014 2247
@@ -10137,7 +10138,7 @@ sys/src/cmd/qc/peep.c - 664 sys sys 1089299168 15241
 sys/src/cmd/qc/q.out.h - 664 sys sys 1089299169 5042
 sys/src/cmd/qc/reg.c - 664 sys sys 1089299169 19059
 sys/src/cmd/qc/sgen.c - 664 sys sys 1089299169 9499
-sys/src/cmd/qc/swt.c - 664 sys sys 1089299168 11985
+sys/src/cmd/qc/swt.c - 664 sys sys 1098463321 12045
 sys/src/cmd/qc/txt.c - 664 sys sys 1089299169 20223
 sys/src/cmd/qi - 20000000775 sys sys 1076688570 0
 sys/src/cmd/qi/bpt.c - 644 sys sys 1076688568 2247
@@ -10230,7 +10231,7 @@ sys/src/cmd/rio/data.c - 664 sys sys 1014926356 6169
 sys/src/cmd/rio/fns.h - 664 sys sys 1039133251 1065
 sys/src/cmd/rio/fsys.c - 664 sys sys 1019678647 13259
 sys/src/cmd/rio/mkfile - 664 sys sys 1039133251 454
-sys/src/cmd/rio/rio.c - 664 sys sys 1080159097 21977
+sys/src/cmd/rio/rio.c - 664 sys sys 1098468361 22140
 sys/src/cmd/rio/scrl.c - 664 sys sys 1014926357 3245
 sys/src/cmd/rio/time.c - 664 sys sys 1014926357 1829
 sys/src/cmd/rio/util.c - 664 sys sys 1014926357 2061
@@ -10992,7 +10993,7 @@ sys/src/cmd/vc/mul.c - 664 sys sys 944961340 9189
 sys/src/cmd/vc/peep.c - 664 sys sys 1089299165 10302
 sys/src/cmd/vc/reg.c - 664 sys sys 1089299166 19378
 sys/src/cmd/vc/sgen.c - 664 sys sys 1089299165 8548
-sys/src/cmd/vc/swt.c - 664 sys sys 1089299165 12101
+sys/src/cmd/vc/swt.c - 664 sys sys 1098463321 12161
 sys/src/cmd/vc/txt.c - 664 sys sys 1089299165 22720
 sys/src/cmd/vc/v.out.h - 664 sys sys 1089299165 2630
 sys/src/cmd/venti - 20000000775 sys sys 947360466 0

+ 19 - 0
dist/replica/plan9.log

@@ -16886,3 +16886,22 @@
 1098284411 0 c 386/bin/aux/stub - 775 sys sys 1098284028 133023
 1098374429 0 c sys/games/lib/fortunes - 664 sys sys 1098373940 250679
 1098387031 0 c sys/games/lib/fortunes - 664 sys sys 1098386393 250626
+1098464446 0 c sys/src/cmd/2c/swt.c - 664 sys sys 1098463320 17170
+1098464446 1 c sys/src/cmd/5c/swt.c - 664 sys sys 1098463320 12888
+1098464446 2 c sys/src/cmd/8c/swt.c - 664 sys sys 1098463321 10943
+1098464446 3 c sys/src/cmd/cc/cc.h - 664 sys sys 1098463305 12048
+1098464446 4 c sys/src/cmd/cc/dpchk.c - 664 sys sys 1098463305 7033
+1098464446 5 c sys/src/cmd/cc/macbody - 664 sys sys 1098463324 11358
+1098464446 6 c sys/src/cmd/kc/swt.c - 664 sys sys 1098463321 11955
+1098464446 7 c sys/src/cmd/1c/swt.c - 664 sys sys 1098463320 15417
+1098464446 8 c sys/src/cmd/qc/swt.c - 664 sys sys 1098463321 12045
+1098464446 9 c sys/src/cmd/vc/swt.c - 664 sys sys 1098463321 12161
+1098464446 10 c sys/src/cmd/7c/swt.c - 664 sys sys 1098463320 11561
+1098468046 0 c sys/src/cmd/acme/text.c - 664 sys sys 1098466676 27550
+1098469848 0 c sys/src/cmd/rio/rio.c - 664 sys sys 1098468361 22140
+1098478849 0 c sys/src/9/pc/mouse.c - 664 sys sys 1098478589 7037
+1098480649 0 c sys/src/9/pc/mouse.c - 664 sys sys 1098479254 7057
+1098500453 0 c sys/src/cmd/cc/lexbody - 664 sys sys 1098499731 9014
+1098502254 0 a sys/src/cmd/cc/y.tab.c - 664 sys sys 1098501521 53564
+1098502254 1 a sys/src/cmd/cc/y.tab.h - 664 sys sys 1098501521 1680
+1098502254 2 d sys/src/cmd/cc/cc.a8 - 664 sys sys 1089383589 0

+ 16 - 4
sys/src/9/pc/mouse.c

@@ -128,11 +128,22 @@ ps2mouseputc(int c, int shift)
 				nb = 1;
 				/* fall through to emit previous packet */
 			}else{
-				/* the AccuPoint on the Toshiba 34[48]0CT encodes extra buttons as 4 and 5 */
-				/* they repeat and don't release, however, so user-level timing code is required */
-				if(msg[3] == 0xFF) 
+				/* The AccuPoint on the Toshiba 34[48]0CT
+				 * encodes extra buttons as 4 and 5. They repeat
+				 * and don't release, however, so user-level
+				 * timing code is required. Furthermore,
+				 * intellimice with 3buttons + scroll give a
+				 * two's complement number in the lower 4 bits
+				 * (bit 4 is sign extension) that describes
+				 * the amount the scroll wheel has moved during
+				 * the last sample. Here we use only the sign to
+				 * decide whether the wheel is moving up or down
+				 * and generate a single button 4 or 5 click
+				 * accordingly.
+				 */
+				if((msg[3] >> 3) & 1) 
 					buttons |= 1<<3;
-				if(msg[3] == 0x01) 
+				else if(msg[3] & 0x7) 
 					buttons |= 1<<4;
 			}
 		}
@@ -271,6 +282,7 @@ mousectl(Cmdbuf *cb)
 		setlinear();
 		break;
 	case CMps2:
+		intellimouse = 0;
 		ps2mouse();
 		break;
 	case CMps2intellimouse:

+ 4 - 0
sys/src/cmd/1c/swt.c

@@ -903,6 +903,8 @@ align(long i, Type *t, int op)
 
 	case Asu2:	/* padding at end of a struct */
 		w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael1:	/* initial allign of struct element */
@@ -911,6 +913,8 @@ align(long i, Type *t, int op)
 		w = ewidth[v->etype];
 		if(w <= 0 || w >= SZ_SHORT)
 			w = SZ_SHORT;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael2:	/* width of a struct element */

+ 4 - 0
sys/src/cmd/2c/swt.c

@@ -985,6 +985,8 @@ align(long i, Type *t, int op)
 
 	case Asu2:	/* padding at end of a struct */
 		w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael1:	/* initial allign of struct element */
@@ -993,6 +995,8 @@ align(long i, Type *t, int op)
 		w = ewidth[v->etype];
 		if(w <= 0 || w >= SZ_SHORT)
 			w = SZ_SHORT;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael2:	/* width of a struct element */

+ 4 - 0
sys/src/cmd/5c/swt.c

@@ -696,6 +696,8 @@ align(long i, Type *t, int op)
 
 	case Asu2:	/* padding at end of a struct */
 		w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael1:	/* initial allign of struct element */
@@ -704,6 +706,8 @@ align(long i, Type *t, int op)
 		w = ewidth[v->etype];
 		if(w <= 0 || w >= SZ_LONG)
 			w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael2:	/* width of a struct element */

+ 4 - 4
sys/src/cmd/7c/swt.c

@@ -641,8 +641,8 @@ align(long i, Type *t, int op)
 
 	case Asu2:	/* padding at end of a struct */
 		w = SZ_VLONG;
-		if(hjdickflg)
-			w = hjdickflg;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael1:	/* initial allign of struct element */
@@ -651,8 +651,8 @@ align(long i, Type *t, int op)
 		w = ewidth[v->etype];
 		if(w <= 0 || w >= SZ_VLONG)
 			w = SZ_VLONG;
-		if(hjdickflg)
-			w = hjdickflg;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael2:	/* width of a struct element */

+ 4 - 0
sys/src/cmd/8c/swt.c

@@ -587,6 +587,8 @@ align(long i, Type *t, int op)
 
 	case Asu2:	/* padding at end of a struct */
 		w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael1:	/* initial allign of struct element */
@@ -595,6 +597,8 @@ align(long i, Type *t, int op)
 		w = ewidth[v->etype];
 		if(w <= 0 || w >= SZ_LONG)
 			w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael2:	/* width of a struct element */

+ 2 - 2
sys/src/cmd/acme/text.c

@@ -668,7 +668,7 @@ texttype(Text *t, Rune r)
 		n = 2*t->maxlines/3;
 	case_Down:
 		q0 = t->org+frcharofpt(t, Pt(t->r.min.x, t->r.min.y+n*t->font->height));
-		textsetorigin(t, q0, FALSE);
+		textsetorigin(t, q0, TRUE);
 		return;
 	case Kup:
 		n = t->maxlines/3;
@@ -680,7 +680,7 @@ texttype(Text *t, Rune r)
 		n = 2*t->maxlines/3;
 	case_Up:
 		q0 = textbacknl(t, t->org, n);
-		textsetorigin(t, q0, FALSE);
+		textsetorigin(t, q0, TRUE);
 		return;
 	case Khome:
 		textshow(t, 0, 0, FALSE);

+ 2 - 2
sys/src/cmd/cc/cc.h

@@ -469,7 +469,7 @@ EXTERN	Type*	fntypes[NTYPE];
 EXTERN	Node*	initlist;
 EXTERN	Term	term[NTERM];
 EXTERN	int	nterm;
-EXTERN	int	hjdickflg;
+EXTERN	int	packflg;
 EXTERN	int	fproundflg;
 EXTERN	int	profileflg;
 EXTERN	Bits	zbits;
@@ -711,7 +711,7 @@ int	bset(Bits, uint);
 void	dpcheck(Node*);
 void	arginit(void);
 void	pragvararg(void);
-void	praghjdicks(void);
+void	pragpack(void);
 void	pragfpround(void);
 void pragprofile(void);
 void	pragincomplete(void);

+ 8 - 9
sys/src/cmd/cc/dpchk.c

@@ -375,26 +375,25 @@ dpcheck(Node *n)
 }
 
 void
-praghjdicks(void)
+pragpack(void)
 {
 	Sym *s;
 
-	hjdickflg = 0;
+	packflg = 0;
 	s = getsym();
 	if(s) {
-		hjdickflg = atoi(s->name+1);
+		packflg = atoi(s->name+1);
 		if(strcmp(s->name, "on") == 0 ||
-		   strcmp(s->name, "yes") == 0 ||
-		   strcmp(s->name, "dick") == 0)
-			hjdickflg = 1;
+		   strcmp(s->name, "yes") == 0)
+			packflg = 1;
 	}
 	while(getnsc() != '\n')
 		;
 	if(debug['f'])
-		if(hjdickflg)
-			print("%4ld: hjdicks %d\n", lineno, hjdickflg);
+		if(packflg)
+			print("%4ld: pack %d\n", lineno, packflg);
 		else
-			print("%4ld: hjdicks off\n", lineno);
+			print("%4ld: pack off\n", lineno);
 }
 
 void

+ 1 - 1
sys/src/cmd/cc/lexbody

@@ -3,7 +3,7 @@
  */
 
 void
-praghjdicks(void)
+pragpack(void)
 {
 	while(getnsc() != '\n')
 		;

+ 2 - 3
sys/src/cmd/cc/macbody

@@ -654,8 +654,8 @@ macprag(void)
 
 	if(s && strcmp(s->name, "lib") == 0)
 		goto praglib;
-	if(s && strcmp(s->name, "hjdicks") == 0) {
-		praghjdicks();
+	if(s && strcmp(s->name, "pack") == 0) {
+		pragpack();
 		return;
 	}
 	if(s && strcmp(s->name, "fpround") == 0) {
@@ -674,7 +674,6 @@ macprag(void)
 		pragincomplete();
 		return;
 	}
-
 	while(getnsc() != '\n')
 		;
 	return;

+ 1895 - 0
sys/src/cmd/cc/y.tab.c

@@ -0,0 +1,1895 @@
+
+#line	2	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+#include "cc.h"
+
+#line	4	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+typedef union 	{
+	Node*	node;
+	Sym*	sym;
+	Type*	type;
+	struct
+	{
+		Type*	t;
+		char	c;
+	} tycl;
+	struct
+	{
+		Type*	t1;
+		Type*	t2;
+	} tyty;
+	struct
+	{
+		char*	s;
+		long	l;
+	} sval;
+	long	lval;
+	double	dval;
+	vlong	vval;
+} YYSTYPE;
+extern	int	yyerrflag;
+#ifndef	YYMAXDEPTH
+#define	YYMAXDEPTH	150
+#endif
+YYSTYPE	yylval;
+YYSTYPE	yyval;
+#define	LPE	57346
+#define	LME	57347
+#define	LMLE	57348
+#define	LDVE	57349
+#define	LMDE	57350
+#define	LRSHE	57351
+#define	LLSHE	57352
+#define	LANDE	57353
+#define	LXORE	57354
+#define	LORE	57355
+#define	LOROR	57356
+#define	LANDAND	57357
+#define	LEQ	57358
+#define	LNE	57359
+#define	LLE	57360
+#define	LGE	57361
+#define	LLSH	57362
+#define	LRSH	57363
+#define	LMM	57364
+#define	LPP	57365
+#define	LMG	57366
+#define	LNAME	57367
+#define	LTYPE	57368
+#define	LFCONST	57369
+#define	LDCONST	57370
+#define	LCONST	57371
+#define	LLCONST	57372
+#define	LUCONST	57373
+#define	LULCONST	57374
+#define	LVLCONST	57375
+#define	LUVLCONST	57376
+#define	LSTRING	57377
+#define	LLSTRING	57378
+#define	LAUTO	57379
+#define	LBREAK	57380
+#define	LCASE	57381
+#define	LCHAR	57382
+#define	LCONTINUE	57383
+#define	LDEFAULT	57384
+#define	LDO	57385
+#define	LDOUBLE	57386
+#define	LELSE	57387
+#define	LEXTERN	57388
+#define	LFLOAT	57389
+#define	LFOR	57390
+#define	LGOTO	57391
+#define	LIF	57392
+#define	LINT	57393
+#define	LLONG	57394
+#define	LREGISTER	57395
+#define	LRETURN	57396
+#define	LSHORT	57397
+#define	LSIZEOF	57398
+#define	LUSED	57399
+#define	LSTATIC	57400
+#define	LSTRUCT	57401
+#define	LSWITCH	57402
+#define	LTYPEDEF	57403
+#define	LTYPESTR	57404
+#define	LUNION	57405
+#define	LUNSIGNED	57406
+#define	LWHILE	57407
+#define	LVOID	57408
+#define	LENUM	57409
+#define	LSIGNED	57410
+#define	LCONSTNT	57411
+#define	LVOLATILE	57412
+#define	LSET	57413
+#define	LSIGNOF	57414
+#define YYEOFCODE 1
+#define YYERRCODE 2
+
+#line	1158	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+
+short	yyexca[] =
+{-1, 1,
+	1, -1,
+	-2, 178,
+-1, 35,
+	4, 8,
+	5, 8,
+	6, 9,
+	-2, 5,
+-1, 52,
+	93, 191,
+	-2, 190,
+-1, 55,
+	93, 195,
+	-2, 194,
+-1, 57,
+	93, 199,
+	-2, 198,
+-1, 76,
+	6, 9,
+	-2, 8,
+-1, 305,
+	4, 96,
+	93, 82,
+	-2, 0,
+-1, 322,
+	6, 22,
+	-2, 21,
+-1, 327,
+	93, 82,
+	-2, 96,
+-1, 333,
+	4, 96,
+	93, 82,
+	-2, 0,
+-1, 383,
+	4, 96,
+	93, 82,
+	-2, 0,
+-1, 385,
+	4, 96,
+	93, 82,
+	-2, 0,
+-1, 387,
+	4, 96,
+	93, 82,
+	-2, 0,
+-1, 397,
+	4, 96,
+	93, 82,
+	-2, 0,
+-1, 403,
+	4, 96,
+	93, 82,
+	-2, 0,
+};
+#define	YYNPROD	241
+#define	YYPRIVATE 57344
+#define	YYLAST	1206
+short	yyact[] =
+{
+ 175, 324, 256, 328, 209, 321, 203,  40, 207, 326,
+  87, 341,  38, 342, 266,  23, 205,  52,  55,  57,
+  89, 257,  46,  46,  85,   4,   5, 265,  79, 103,
+ 210, 124,  90, 201, 133, 136, 201, 135,  86,  41,
+  42,  65, 140, 138,  41,  42, 268,  80,  41,  42,
+  35, 369, 277, 252, 204, 254, 123,  54, 310,  46,
+ 140, 253, 308, 288,  46,  88,  46, 142, 403, 389,
+ 252, 388, 316, 315, 309, 293, 290, 140, 253, 129,
+ 287, 117, 131, 128, 117,  46,  66, 375, 118,  58,
+ 397,  68, 217,  81, 195, 254, 254, 194,  54,  25,
+  26, 125,   5, 127, 254, 174, 254,  76, 254, 386,
+ 217, 365, 116, 364, 182, 183, 184, 185, 186, 187,
+ 188, 189, 303,  25,  26, 200,  82, 360,  34, 134,
+ 136, 129,  41,  42, 190, 192, 357, 140, 138,  41,
+  42,  88, 295, 368, 221, 222, 223, 224, 225, 226,
+ 227, 228, 229, 230, 231, 232, 233, 234, 235, 236,
+ 237, 238,  81, 240, 241, 242, 243, 244, 245, 246,
+ 247, 248, 249, 250, 206, 239, 218, 258, 214, 219,
+ 213, 399, 387,  25,  26,  66, 260, 261,  44,  75,
+ 385, 259, 383,  53, 255, 216, 215, 356, 121,  64,
+  63, 355,  43, 273,  56, 174,  37, 174, 251, 129,
+  48, 269,  88, 278,  39,  41,  42,  88, 173, 136,
+ 283, 220, 282, 141, 270, 254, 140, 138,  41,  42,
+ 117, 271,  67, 272,   7, 320, 367,  67, 289, 279,
+  37,  45,  45,  50, 285,  81, 371, 196,  39,  41,
+  42, 301, 284,  69,   6, 286, 347, 348,  67,  25,
+  26, 116, 252,  49, 119,  37, 122,  22, 292, 140,
+ 253,  88, 281,  39,  41,  42,  51, 269,  45,  37,
+ 202, 302,  78,  45, 254,  45, 307,  39,  41,  42,
+ 311, 218, 298, 306, 291, 258, 300, 296, 297,   5,
+ 304, 402,  88, 294,  45, 275, 276, 117,  59,  60,
+  33, 312, 319, 269, 129, 318, 314, 280, 262, 132,
+ 263, 398, 346, 206, 396, 395,  24,  74, 384, 284,
+ 143, 144, 145,  47,  47, 358, 354, 352, 359, 351,
+  37, 378, 376, 362, 366, 199, 363, 361,  39,  41,
+  42, 322, 353, 350, 370, 146, 147, 143, 144, 145,
+ 373, 317, 299,  73,  72, 258, 258, 379, 380, 372,
+  47, 374, 129,  70, 377,  47, 382,  47, 181, 180,
+ 178, 179, 177, 176,  71, 390, 329, 392, 391, 394,
+ 264, 198, 120, 349,  62, 322,  47,  94, 126, 400,
+ 393,  77, 401,  61,   3, 404,  95,  96,  93,   2,
+   1, 100,  99, 139, 137, 208,  91,  84,  12, 109,
+ 108, 104, 105, 106, 107, 110, 111, 114, 115,  27,
+ 267, 327,  13,  36, 113, 112,  20, 305,  29,  19,
+ 274,  92, 325,  15,  16,  32,   8,  14, 101,   0,
+  28,   9,   0,  30,  31,  10,  18,   0,  21,  11,
+  17,  25,  26,  94, 102,   0,   0,   0,   0,  97,
+  98,   0,  95,  96,  93,   0,   0, 100,  99,   0,
+   0,   0,  91, 345,   0, 109, 108, 104, 105, 106,
+ 107, 110, 111, 114, 115,   0, 336, 343,   0, 337,
+ 344, 333,   0,   0,   0,   0, 331, 338, 330,   0,
+ 325,   0, 334,   0, 101, 339,   0,   0, 335,   0,
+   0,   0,   0, 332,   0,   0,   0,   0,   0, 340,
+ 102,  94,   0,   0, 323,  97,  98,   0,   0,   0,
+  95,  96,  93,   0,   0, 100,  99,   0,   0,   0,
+  91, 345,   0, 109, 108, 104, 105, 106, 107, 110,
+ 111, 114, 115,   0, 336, 343,   0, 337, 344, 333,
+   0,   0,   0,   0, 331, 338, 330,   0,   0,   0,
+ 334,   0, 101, 339,   0,   0, 335,   0,   0,   0,
+   0, 332,   0,   0,   0,   0,  94, 340, 102,   0,
+   0,   0,   0,  97,  98,  95,  96,  93,   0,   0,
+ 100,  99,   0,   0,   0,  91, 345,   0, 109, 108,
+ 104, 105, 106, 107, 110, 111, 114, 115,   0, 336,
+ 343,   0, 337, 344, 333,   0,   0,   0,   0, 331,
+ 338, 330,   0,   0,   0, 334,   0, 101, 339,   0,
+   0, 335,   0,   0,   0,   0, 332,   0,   0,   0,
+   0,  94, 340, 102,   0,   0,   0,   0,  97,  98,
+  95,  96,  93,   0,   0, 100,  99,   0, 212, 211,
+  91,  84,   0, 109, 108, 104, 105, 106, 107, 110,
+ 111, 114, 115,   0,  94, 149, 148, 146, 147, 143,
+ 144, 145,   0,  95,  96,  93,   0,   0, 100,  99,
+   0,   0, 101,  91,  84,   0, 109, 108, 104, 105,
+ 106, 107, 110, 111, 114, 115,   0,  94, 102,   0,
+   0, 130,   0,  97,  98,   0,  95,  96,  93,   0,
+   0, 100,  99,   0,   0, 101,  91,  84,   0, 109,
+ 108, 104, 105, 106, 107, 110, 111, 114, 115,   0,
+  94, 102,   0,   0, 130,   0,  97,  98,   0,  95,
+  96,  93,   0,   0, 100,  99,   0,   0, 101,  91,
+  84,   0, 109, 108, 104, 105, 106, 107, 110, 111,
+ 114, 115,   0,  94, 102,   0,   0, 313,   0,  97,
+  98,   0,  95,  96,  93,   0,   0, 100,  99,   0,
+   0, 101, 193,  84,   0, 109, 108, 104, 105, 106,
+ 107, 110, 111, 114, 115,   0,  94, 102,   0,   0,
+   0,   0,  97,  98,   0,  95,  96,  93,   0,   0,
+ 100,  99,   0,   0, 101, 191,  84,   0, 109, 108,
+ 104, 105, 106, 107, 110, 111, 114, 115,   0,   0,
+ 102,   0,   0,   0,   0,  97,  98,   0,   0,   0,
+   0,   0,   0,   0,   0,   0,  12, 101,   0,   0,
+   0,   0,   0,   0,   0,   0,   0,  27,   0,   0,
+  13,   0,   0, 102,  20,   0,  29,  19,  97,  98,
+   0,  15,  16,  32,   0,  14,   0,   0,  28,   9,
+   0,  30,  31,  10,  18,   0,  21,  11,  17,  25,
+  26,  83,   0,   0,  84,  12, 197,   0,   0,   0,
+   0,   0,   0,   0,   0,   0,  27,   0,   0,  13,
+   0,   0,   0,  20,   0,  29,  19,   0,   0,   0,
+  15,  16,  32,   0,  14,   0,   0,  28,   9,  12,
+  30,  31,  10,  18,   0,  21,  11,  17,  25,  26,
+  27,   0,   0,  13,   0,   0,   0,  20,   0,  29,
+  19,   0,   0,   0,  15,  16,  32,   0,  14,   0,
+   0,  28,   9,   0,  30,  31,  10,  18,   0,  21,
+  11,  17,  25,  26,  27,   0,   0,  13,   0,   0,
+   0,  20,   0,  29,  19,   0,   0,   0,  15,  16,
+  32,   0,  14,   0,   0,  28,   0,   0,  30,  31,
+   0,  18,   0,  21,   0,  17,  25,  26, 162, 163,
+ 164, 165, 166, 167, 169, 168, 170, 171, 172, 161,
+ 381, 160, 159, 158, 157, 156, 154, 155, 150, 151,
+ 152, 153, 149, 148, 146, 147, 143, 144, 145, 162,
+ 163, 164, 165, 166, 167, 169, 168, 170, 171, 172,
+ 161,   0, 160, 159, 158, 157, 156, 154, 155, 150,
+ 151, 152, 153, 149, 148, 146, 147, 143, 144, 145,
+ 161,   0, 160, 159, 158, 157, 156, 154, 155, 150,
+ 151, 152, 153, 149, 148, 146, 147, 143, 144, 145,
+ 159, 158, 157, 156, 154, 155, 150, 151, 152, 153,
+ 149, 148, 146, 147, 143, 144, 145, 158, 157, 156,
+ 154, 155, 150, 151, 152, 153, 149, 148, 146, 147,
+ 143, 144, 145, 157, 156, 154, 155, 150, 151, 152,
+ 153, 149, 148, 146, 147, 143, 144, 145, 156, 154,
+ 155, 150, 151, 152, 153, 149, 148, 146, 147, 143,
+ 144, 145, 154, 155, 150, 151, 152, 153, 149, 148,
+ 146, 147, 143, 144, 145, 150, 151, 152, 153, 149,
+ 148, 146, 147, 143, 144, 145
+};
+short	yypact[] =
+{
+-1000, 915,-1000, 306,-1000,-1000, 949, 949, 915,   5,
+   5,  -4,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,-1000,-1000, 304,-1000, 158,-1000,-1000, 245,
+-1000,-1000,-1000, 949,-1000,-1000,-1000,-1000, 949,-1000,
+ 949,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+ 245,-1000, 276, 881, 737, 172,  -3,-1000,  12, 949,
+ -36, 915, -36, -37,  58,-1000,-1000, 915, 671,  -9,
+ 314,-1000, 185, 183,-1000,-1000, -25,-1000,1063,-1000,
+-1000, 374, 341, 737, 737, 737, 737, 737, 737, 737,
+ 737, 803, 770,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000,-1000,  44,  40,-1000,-1000,-1000,-1000,-1000,-1000,
+ 832,-1000,-1000,-1000,  31, 274, -39, 245,-1000,1063,
+ 638,-1000, 881,-1000,-1000,-1000,-1000, 154,   1,-1000,
+ 737, 181,-1000, 737, 737, 737, 737, 737, 737, 737,
+ 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
+ 737, 737, 737, 737, 737, 737, 737, 737, 737, 737,
+ 737, 737, 737, 228, 103,1063, 737, 737,  89,  89,
+-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000, 374,-1000, 374,-1000,-1000,-1000,-1000, 206,  58,
+-1000,  58, 737,-1000,-1000, 301,-1000, -42, 638, 312,
+ 266, 737,  89,-1000,  96, 881, 737,-1000, -11, -29,
+-1000,-1000,-1000,-1000, 296, 296, 323, 323, 665, 665,
+ 665, 665,1169,1169,1158,1145,1131,1116,1100, 220,
+1063,1063,1063,1063,1063,1063,1063,1063,1063,1063,
+1063, -15,-1000,  19, 737,-1000, -16, 298,1063,  50,
+-1000,-1000, 228, 228, 206, 358, 291,-1000,-1000, 233,
+ 737,  28,-1000,1063, 915,-1000, 245,-1000, 281, 266,
+-1000,-1000, -30,-1000,-1000, -17, -34,-1000,-1000, 737,
+ 704,  36,-1000,-1000, 737,-1000, -18, -19, 357,-1000,
+ 206, 737,-1000,-1000, 231, 440,-1000,-1000,-1000,-1000,
+-1000,1083,-1000, 638,-1000,-1000,-1000,-1000,-1000,-1000,
+-1000, 252,-1000,-1000,-1000, 349,-1000, 573, 348, -39,
+ 159, 155,  94, 508, 737,  85, 343, 339,  89,  71,
+  69,-1000, 279, 737, 218, 125, -43,-1000, 245, 240,
+-1000,-1000,-1000,-1000,-1000, 737, 737, 737,   4, 338,
+ 737,-1000,-1000, 337, 737, 737,1032,-1000,-1000,-1000,
+-1000, 671, 101, 324,  99,  67,-1000,  91,-1000, -20,
+ -22,-1000,-1000, 508, 737, 508, 737, 508, 321, 320,
+  27, 317,-1000,  90,-1000,-1000,-1000, 508, 737, 297,
+-1000, -23,-1000, 508,-1000
+};
+short	yypgo[] =
+{
+   0,   7, 188, 267, 326,  15, 234, 202, 446,  41,
+ 126, 193, 254,  24,  28,  47,   3,  29,   6,   1,
+  13,   0,  20, 441,   2,  21, 440, 437,  32, 435,
+ 434,  46, 433, 431,  11,   9,   5, 430,  12,  30,
+ 415,  34,  37, 414, 413,  38,  10,   4,   8, 410,
+ 409, 404, 128, 403, 401, 398, 394,  25, 393,  16,
+ 392, 391,  27, 390,  14, 386, 384, 373, 364, 363,
+ 345,  31, 327
+};
+short	yyr1[] =
+{
+   0,  49,  49,  50,  50,  53,  55,  50,  52,  56,
+  52,  52,  31,  31,  32,  32,  32,  32,  26,  26,
+  26,  36,  58,  36,  36,  54,  54,  59,  59,  61,
+  60,  63,  60,  62,  62,  64,  64,  37,  37,  37,
+  41,  41,  42,  42,  42,  43,  43,  43,  44,  44,
+  44,  47,  47,  39,  39,  39,  40,  40,  40,  40,
+  48,  48,  48,  14,  14,  15,  15,  15,  15,  15,
+  18,  27,  27,  33,  33,  34,  34,  34,  19,  19,
+  19,  35,  65,  35,  35,  35,  35,  35,  35,  35,
+  35,  35,  35,  35,  35,  35,  16,  16,  45,  45,
+  46,  20,  20,  21,  21,  21,  21,  21,  21,  21,
+  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
+  21,  21,  21,  21,  21,  21,  21,  21,  21,  21,
+  21,  21,  21,  21,  22,  22,  22,  28,  28,  28,
+  28,  28,  28,  28,  28,  28,  28,  28,  23,  23,
+  23,  23,  23,  23,  23,  23,  23,  23,  23,  23,
+  23,  23,  23,  23,  23,  23,  23,  23,  29,  29,
+  30,  30,  24,  24,  25,  25,  66,  11,  51,  51,
+  13,  13,  13,  13,  13,  13,  13,  13,  10,  57,
+  12,  67,  12,  12,  12,  68,  12,  12,  12,  69,
+  70,  12,  72,  12,  12,   7,   7,   9,   9,   2,
+   2,   2,   8,   8,   3,   3,  71,  71,  71,  71,
+   6,   6,   6,   6,   6,   6,   6,   6,   6,   4,
+   4,   4,   4,   4,   4,   5,   5,  17,  38,   1,
+   1
+};
+short	yyr2[] =
+{
+   0,   0,   2,   2,   3,   0,   0,   6,   1,   0,
+   4,   3,   1,   3,   1,   3,   4,   4,   0,   3,
+   4,   1,   0,   4,   3,   0,   4,   1,   3,   0,
+   4,   0,   5,   0,   1,   1,   3,   1,   3,   2,
+   0,   1,   2,   3,   1,   1,   4,   4,   2,   3,
+   3,   1,   3,   3,   2,   2,   2,   3,   1,   2,
+   1,   1,   2,   0,   1,   1,   2,   2,   3,   3,
+   4,   0,   2,   1,   2,   3,   2,   2,   2,   1,
+   2,   2,   0,   2,   5,   7,   9,   5,   7,   3,
+   5,   2,   2,   3,   5,   5,   0,   1,   0,   1,
+   1,   1,   3,   1,   3,   3,   3,   3,   3,   3,
+   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
+   3,   3,   5,   3,   3,   3,   3,   3,   3,   3,
+   3,   3,   3,   3,   1,   5,   7,   1,   2,   2,
+   2,   2,   2,   2,   2,   2,   2,   2,   3,   5,
+   5,   4,   4,   3,   3,   2,   2,   1,   1,   1,
+   1,   1,   1,   1,   1,   1,   1,   1,   1,   2,
+   1,   2,   0,   1,   1,   3,   0,   4,   0,   1,
+   1,   1,   1,   2,   2,   3,   2,   3,   1,   1,
+   2,   0,   4,   2,   2,   0,   4,   2,   2,   0,
+   0,   7,   0,   5,   1,   1,   2,   0,   2,   1,
+   1,   1,   1,   2,   1,   1,   1,   3,   2,   3,
+   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
+   1
+};
+short	yychk[] =
+{
+-1000, -49, -50, -51, -57, -13, -12,  -6,  -8,  77,
+  81,  85,  44,  58,  73,  69,  70,  86,  82,  65,
+  62,  84,  -3,  -5,  -4,  87,  88,  55,  76,  64,
+  79,  80,  71,   4, -52, -31, -32,  34, -38,  42,
+  -1,  43,  44,  -7,  -2,  -6,  -5,  -4,  -7, -12,
+  -6,  -3,  -1, -11,  93,  -1, -11,  -1,  93,   4,
+   5, -53, -56,  42,  41,  -9, -31,  -2,  -9,  -7,
+ -67, -66, -68, -69, -72, -52, -31, -54,   6, -14,
+ -15, -17, -10,  40,  43, -13, -45, -46, -21, -22,
+ -28,  42, -23,  34,  23,  32,  33,  95,  96,  38,
+  37,  74,  90, -17,  47,  48,  49,  50,  46,  45,
+  51,  52, -29, -30,  53,  54, -31,  -5,  91, -11,
+ -60, -10, -11,  93, -71,  43, -55, -57, -47, -21,
+  93,  91,   5, -41, -31, -42,  34, -43,  42, -44,
+  41,  40,  92,  34,  35,  36,  32,  33,  31,  30,
+  26,  27,  28,  29,  24,  25,  23,  22,  21,  20,
+  19,  17,   6,   7,   8,   9,  10,  11,  13,  12,
+  14,  15,  16, -10, -20, -21,  42,  41,  39,  40,
+  38,  37, -22, -22, -22, -22, -22, -22, -22, -22,
+ -28,  42, -28,  42,  53,  54, -10,  94, -61, -70,
+  94,   5,   6, -18,  93, -59, -31, -48, -40, -47,
+ -39,  41,  40, -15,  -9,  42,  41,  91, -42, -45,
+  40, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -20,
+ -21, -21, -21, -21, -21, -21, -21, -21, -21, -21,
+ -21, -41,  34,  42,   5,  91, -24, -25, -21, -20,
+  -1,  -1, -10, -10, -63, -62, -64, -37, -31, -38,
+  18, -71, -71, -21, -26,   4,   5,  94, -47, -39,
+   5,   6, -46,  -1, -42, -14, -45,  91,  92,  18,
+  91,  -9, -20,  91,   5,  92, -41, -41, -62,   4,
+   5,  18, -46,  94, -57, -27, -59,   5,  92,  91,
+  92, -21, -22,  93, -25,  91,  91,   4, -64, -46,
+   4, -36, -31,  94, -19,   2, -35, -33, -16, -65,
+  68,  66,  83,  61,  72,  78,  56,  59,  67,  75,
+  89, -34, -20,  57,  60,  43, -48,   4,   5, -58,
+   4, -34, -35,   4, -18,  42,  42,  42, -19, -16,
+  42,   4,   4,  -1,  42,  42, -21,  18,  18,  94,
+ -36,   6, -20, -16, -20,  83,   4, -20,   4, -24,
+ -24,  18, -47,  91,   4,  91,  42,  91,  91,  91,
+ -19, -16, -19, -20, -19,   4,   4,  63,   4,  91,
+ -19, -16,   4,  91, -19
+};
+short	yydef[] =
+{
+   1,  -2,   2,   0, 179, 189, 180, 181, 182,   0,
+   0,   0, 204, 220, 221, 222, 223, 224, 225, 226,
+ 227, 228, 212, 214, 215, 235, 236, 229, 230, 231,
+ 232, 233, 234,   3,   0,  -2,  12, 207,  14,   0,
+ 238, 239, 240, 183, 205, 209, 210, 211, 184, 207,
+ 186, 213,  -2, 193, 176,  -2, 197,  -2, 202,   4,
+   0,  25,   0,  63,  98,   0,   0, 206, 185, 187,
+   0,   0,   0,   0,   0,  11,  -2,   6,   0,   0,
+  64,  65,  40,   0, 237, 188,   0,  99, 100, 103,
+ 134,   0, 137,   0,   0,   0,   0,   0,   0,   0,
+   0,   0,   0, 157, 158, 159, 160, 161, 162, 163,
+ 164, 165, 166, 167, 168, 170,  13, 208,  15, 192,
+   0,  29, 196, 200,   0, 216,   0,   0,  10,  51,
+   0,  16,   0,  66,  67,  41, 207,  44,   0,  45,
+  98,   0,  17,   0,   0,   0,   0,   0,   0,   0,
+   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+   0,   0,   0,  40,   0, 101, 172,   0,   0,   0,
+ 155, 156, 138, 139, 140, 141, 142, 143, 144, 145,
+ 146,   0, 147,   0, 169, 171,  31, 177,  33,   0,
+ 203, 218,   0,   7,  18,   0,  27,   0,  60,  61,
+  58,   0,   0,  69,  42,  63,  98,  48,   0,   0,
+  68, 104, 105, 106, 107, 108, 109, 110, 111, 112,
+ 113, 114, 115, 116, 117, 118, 119, 120, 121,   0,
+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
+ 133,   0, 207,   0,   0, 148,   0, 173, 174,   0,
+ 153, 154,  40,  40,  33,   0,  34,  35,  37,  14,
+   0,   0, 219, 217,  71,  26,   0,  52,  62,  59,
+  56,  55,   0,  54,  43,   0,   0,  50,  49,   0,
+   0,  42, 102, 151,   0, 152,   0,   0,   0,  30,
+   0,   0,  39, 201,   0,  -2,  28,  57,  53,  46,
+  47, 122, 135,   0, 175, 149, 150,  32,  36,  38,
+  19,   0,  -2,  70,  72,   0,  79,  -2,   0,   0,
+   0,   0,   0,  -2,  96,   0,   0,   0,   0,   0,
+   0,  73,  97,   0,   0, 237,   0,  20,   0,   0,
+  78,  74,  80,  81,  83,   0,  96,   0,   0,   0,
+   0,  91,  92,   0, 172, 172,   0,  76,  77, 136,
+  24,   0,   0,   0,   0,   0,  89,   0,  93,   0,
+   0,  75,  23,  -2,  96,  -2,   0,  -2,   0,   0,
+  84,   0,  87,   0,  90,  94,  95,  -2,  96,   0,
+  85,   0,  88,  -2,  86
+};
+short	yytok1[] =
+{
+   1,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+   0,   0,   0,  95,   0,   0,   0,  36,  23,   0,
+  42,  91,  34,  32,   5,  33,  40,  35,   0,   0,
+   0,   0,   0,   0,   0,   0,   0,   0,  18,   4,
+  26,   6,  27,  17,   0,   0,   0,   0,   0,   0,
+   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+   0,  41,   0,  92,  22,   0,   0,   0,   0,   0,
+   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+   0,   0,   0,  93,  21,  94,  96
+};
+short	yytok2[] =
+{
+   2,   3,   7,   8,   9,  10,  11,  12,  13,  14,
+  15,  16,  19,  20,  24,  25,  28,  29,  30,  31,
+  37,  38,  39,  43,  44,  45,  46,  47,  48,  49,
+  50,  51,  52,  53,  54,  55,  56,  57,  58,  59,
+  60,  61,  62,  63,  64,  65,  66,  67,  68,  69,
+  70,  71,  72,  73,  74,  75,  76,  77,  78,  79,
+  80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
+  90
+};
+long	yytok3[] =
+{
+   0
+};
+#define YYFLAG 		-1000
+#define	yyclearin	yychar = -1
+#define	yyerrok		yyerrflag = 0
+
+#ifdef	yydebug
+#include	"y.debug"
+#else
+#define	yydebug		0
+char*	yytoknames[1];		/* for debugging */
+char*	yystates[1];		/* for debugging */
+#endif
+
+/*	parser for yacc output	*/
+
+int	yynerrs = 0;		/* number of errors */
+int	yyerrflag = 0;		/* error recovery flag */
+
+extern	int	fprint(int, char*, ...);
+extern	int	sprint(char*, char*, ...);
+
+char*
+yytokname(int yyc)
+{
+	static char x[10];
+
+	if(yyc > 0 && yyc <= sizeof(yytoknames)/sizeof(yytoknames[0]))
+	if(yytoknames[yyc-1])
+		return yytoknames[yyc-1];
+	sprint(x, "<%d>", yyc);
+	return x;
+}
+
+char*
+yystatname(int yys)
+{
+	static char x[10];
+
+	if(yys >= 0 && yys < sizeof(yystates)/sizeof(yystates[0]))
+	if(yystates[yys])
+		return yystates[yys];
+	sprint(x, "<%d>\n", yys);
+	return x;
+}
+
+long
+yylex1(void)
+{
+	long yychar;
+	long *t3p;
+	int c;
+
+	yychar = yylex();
+	if(yychar <= 0) {
+		c = yytok1[0];
+		goto out;
+	}
+	if(yychar < sizeof(yytok1)/sizeof(yytok1[0])) {
+		c = yytok1[yychar];
+		goto out;
+	}
+	if(yychar >= YYPRIVATE)
+		if(yychar < YYPRIVATE+sizeof(yytok2)/sizeof(yytok2[0])) {
+			c = yytok2[yychar-YYPRIVATE];
+			goto out;
+		}
+	for(t3p=yytok3;; t3p+=2) {
+		c = t3p[0];
+		if(c == yychar) {
+			c = t3p[1];
+			goto out;
+		}
+		if(c == 0)
+			break;
+	}
+	c = 0;
+
+out:
+	if(c == 0)
+		c = yytok2[1];	/* unknown char */
+	if(yydebug >= 3)
+		fprint(2, "lex %.4lux %s\n", yychar, yytokname(c));
+	return c;
+}
+
+int
+yyparse(void)
+{
+	struct
+	{
+		YYSTYPE	yyv;
+		int	yys;
+	} yys[YYMAXDEPTH], *yyp, *yypt;
+	short *yyxi;
+	int yyj, yym, yystate, yyn, yyg;
+	long yychar;
+	YYSTYPE save1, save2;
+	int save3, save4;
+
+	save1 = yylval;
+	save2 = yyval;
+	save3 = yynerrs;
+	save4 = yyerrflag;
+
+	yystate = 0;
+	yychar = -1;
+	yynerrs = 0;
+	yyerrflag = 0;
+	yyp = &yys[-1];
+	goto yystack;
+
+ret0:
+	yyn = 0;
+	goto ret;
+
+ret1:
+	yyn = 1;
+	goto ret;
+
+ret:
+	yylval = save1;
+	yyval = save2;
+	yynerrs = save3;
+	yyerrflag = save4;
+	return yyn;
+
+yystack:
+	/* put a state and value onto the stack */
+	if(yydebug >= 4)
+		fprint(2, "char %s in %s", yytokname(yychar), yystatname(yystate));
+
+	yyp++;
+	if(yyp >= &yys[YYMAXDEPTH]) {
+		yyerror("yacc stack overflow");
+		goto ret1;
+	}
+	yyp->yys = yystate;
+	yyp->yyv = yyval;
+
+yynewstate:
+	yyn = yypact[yystate];
+	if(yyn <= YYFLAG)
+		goto yydefault; /* simple state */
+	if(yychar < 0)
+		yychar = yylex1();
+	yyn += yychar;
+	if(yyn < 0 || yyn >= YYLAST)
+		goto yydefault;
+	yyn = yyact[yyn];
+	if(yychk[yyn] == yychar) { /* valid shift */
+		yychar = -1;
+		yyval = yylval;
+		yystate = yyn;
+		if(yyerrflag > 0)
+			yyerrflag--;
+		goto yystack;
+	}
+
+yydefault:
+	/* default state action */
+	yyn = yydef[yystate];
+	if(yyn == -2) {
+		if(yychar < 0)
+			yychar = yylex1();
+
+		/* look through exception table */
+		for(yyxi=yyexca;; yyxi+=2)
+			if(yyxi[0] == -1 && yyxi[1] == yystate)
+				break;
+		for(yyxi += 2;; yyxi += 2) {
+			yyn = yyxi[0];
+			if(yyn < 0 || yyn == yychar)
+				break;
+		}
+		yyn = yyxi[1];
+		if(yyn < 0)
+			goto ret0;
+	}
+	if(yyn == 0) {
+		/* error ... attempt to resume parsing */
+		switch(yyerrflag) {
+		case 0:   /* brand new error */
+			yyerror("syntax error");
+			yynerrs++;
+			if(yydebug >= 1) {
+				fprint(2, "%s", yystatname(yystate));
+				fprint(2, "saw %s\n", yytokname(yychar));
+			}
+
+		case 1:
+		case 2: /* incompletely recovered error ... try again */
+			yyerrflag = 3;
+
+			/* find a state where "error" is a legal shift action */
+			while(yyp >= yys) {
+				yyn = yypact[yyp->yys] + YYERRCODE;
+				if(yyn >= 0 && yyn < YYLAST) {
+					yystate = yyact[yyn];  /* simulate a shift of "error" */
+					if(yychk[yystate] == YYERRCODE)
+						goto yystack;
+				}
+
+				/* the current yyp has no shift onn "error", pop stack */
+				if(yydebug >= 2)
+					fprint(2, "error recovery pops state %d, uncovers %d\n",
+						yyp->yys, (yyp-1)->yys );
+				yyp--;
+			}
+			/* there is no state on the stack with an error shift ... abort */
+			goto ret1;
+
+		case 3:  /* no shift yet; clobber input char */
+			if(yydebug >= 2)
+				fprint(2, "error recovery discards %s\n", yytokname(yychar));
+			if(yychar == YYEOFCODE)
+				goto ret1;
+			yychar = -1;
+			goto yynewstate;   /* try again in the same state */
+		}
+	}
+
+	/* reduction by production yyn */
+	if(yydebug >= 2)
+		fprint(2, "reduce %d in:\n\t%s", yyn, yystatname(yystate));
+
+	yypt = yyp;
+	yyp -= yyr2[yyn];
+	yyval = (yyp+1)->yyv;
+	yym = yyn;
+
+	/* consult goto table to find next state */
+	yyn = yyr1[yyn];
+	yyg = yypgo[yyn];
+	yyj = yyg + yyp->yys + 1;
+
+	if(yyj >= YYLAST || yychk[yystate=yyact[yyj]] != -yyn)
+		yystate = yyact[yyg];
+	switch(yym) {
+		
+case 3:
+#line	74	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dodecl(xdecl, lastclass, lasttype, Z);
+	} break;
+case 5:
+#line	79	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		lastdcl = T;
+		firstarg = S;
+		dodecl(xdecl, lastclass, lasttype, yypt[-0].yyv.node);
+		if(lastdcl == T || lastdcl->etype != TFUNC) {
+			diag(yypt[-0].yyv.node, "not a function");
+			lastdcl = types[TFUNC];
+		}
+		thisfn = lastdcl;
+		markdcl();
+		firstdcl = dclstack;
+		argmark(yypt[-0].yyv.node, 0);
+	} break;
+case 6:
+#line	93	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		argmark(yypt[-2].yyv.node, 1);
+	} break;
+case 7:
+#line	97	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		Node *n;
+
+		n = revertdcl();
+		if(n)
+			yypt[-0].yyv.node = new(OLIST, n, yypt[-0].yyv.node);
+		if(!debug['a'] && !debug['Z'])
+			codgen(yypt[-0].yyv.node, yypt[-4].yyv.node);
+	} break;
+case 8:
+#line	109	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dodecl(xdecl, lastclass, lasttype, yypt[-0].yyv.node);
+	} break;
+case 9:
+#line	113	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yypt[-0].yyv.node = dodecl(xdecl, lastclass, lasttype, yypt[-0].yyv.node);
+	} break;
+case 10:
+#line	117	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		doinit(yypt[-3].yyv.node->sym, yypt[-3].yyv.node->type, 0L, yypt[-0].yyv.node);
+	} break;
+case 13:
+#line	125	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OIND, yypt[-0].yyv.node, Z);
+		yyval.node->garb = simpleg(yypt[-1].yyv.lval);
+	} break;
+case 15:
+#line	133	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = yypt[-1].yyv.node;
+	} break;
+case 16:
+#line	137	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OFUNC, yypt[-3].yyv.node, yypt[-1].yyv.node);
+	} break;
+case 17:
+#line	141	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OARRAY, yypt[-3].yyv.node, yypt[-1].yyv.node);
+	} break;
+case 18:
+#line	149	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = Z;
+	} break;
+case 19:
+#line	153	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = dodecl(adecl, lastclass, lasttype, Z);
+		if(yypt[-2].yyv.node != Z)
+			if(yyval.node != Z)
+				yyval.node = new(OLIST, yypt[-2].yyv.node, yyval.node);
+			else
+				yyval.node = yypt[-2].yyv.node;
+	} break;
+case 20:
+#line	162	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = yypt[-3].yyv.node;
+		if(yypt[-1].yyv.node != Z) {
+			yyval.node = yypt[-1].yyv.node;
+			if(yypt[-3].yyv.node != Z)
+				yyval.node = new(OLIST, yypt[-3].yyv.node, yypt[-1].yyv.node);
+		}
+	} break;
+case 21:
+#line	173	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dodecl(adecl, lastclass, lasttype, yypt[-0].yyv.node);
+		yyval.node = Z;
+	} break;
+case 22:
+#line	178	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yypt[-0].yyv.node = dodecl(adecl, lastclass, lasttype, yypt[-0].yyv.node);
+	} break;
+case 23:
+#line	182	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		long w;
+
+		w = yypt[-3].yyv.node->sym->type->width;
+		yyval.node = doinit(yypt[-3].yyv.node->sym, yypt[-3].yyv.node->type, 0L, yypt[-0].yyv.node);
+		yyval.node = contig(yypt[-3].yyv.node->sym, yyval.node, w);
+	} break;
+case 24:
+#line	190	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = yypt[-2].yyv.node;
+		if(yypt[-0].yyv.node != Z) {
+			yyval.node = yypt[-0].yyv.node;
+			if(yypt[-2].yyv.node != Z)
+				yyval.node = new(OLIST, yypt[-2].yyv.node, yypt[-0].yyv.node);
+		}
+	} break;
+case 27:
+#line	207	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dodecl(pdecl, lastclass, lasttype, yypt[-0].yyv.node);
+	} break;
+case 29:
+#line	217	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		lasttype = yypt[-0].yyv.type;
+	} break;
+case 31:
+#line	222	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		lasttype = yypt[-0].yyv.type;
+	} break;
+case 33:
+#line	228	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		lastfield = 0;
+		edecl(CXXX, lasttype, S);
+	} break;
+case 35:
+#line	236	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dodecl(edecl, CXXX, lasttype, yypt[-0].yyv.node);
+	} break;
+case 37:
+#line	243	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		lastbit = 0;
+		firstbit = 1;
+	} break;
+case 38:
+#line	248	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OBIT, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 39:
+#line	252	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OBIT, Z, yypt[-0].yyv.node);
+	} break;
+case 40:
+#line	260	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = (Z);
+	} break;
+case 42:
+#line	267	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OIND, (Z), Z);
+		yyval.node->garb = simpleg(yypt[-0].yyv.lval);
+	} break;
+case 43:
+#line	272	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OIND, yypt[-0].yyv.node, Z);
+		yyval.node->garb = simpleg(yypt[-1].yyv.lval);
+	} break;
+case 46:
+#line	281	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OFUNC, yypt[-3].yyv.node, yypt[-1].yyv.node);
+	} break;
+case 47:
+#line	285	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OARRAY, yypt[-3].yyv.node, yypt[-1].yyv.node);
+	} break;
+case 48:
+#line	291	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OFUNC, (Z), Z);
+	} break;
+case 49:
+#line	295	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OARRAY, (Z), yypt[-1].yyv.node);
+	} break;
+case 50:
+#line	299	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = yypt[-1].yyv.node;
+	} break;
+case 52:
+#line	306	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OINIT, invert(yypt[-1].yyv.node), Z);
+	} break;
+case 53:
+#line	312	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OARRAY, yypt[-1].yyv.node, Z);
+	} break;
+case 54:
+#line	316	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OELEM, Z, Z);
+		yyval.node->sym = yypt[-0].yyv.sym;
+	} break;
+case 57:
+#line	325	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLIST, yypt[-2].yyv.node, yypt[-1].yyv.node);
+	} break;
+case 59:
+#line	330	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLIST, yypt[-1].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 62:
+#line	338	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLIST, yypt[-1].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 63:
+#line	343	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = Z;
+	} break;
+case 64:
+#line	347	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = invert(yypt[-0].yyv.node);
+	} break;
+case 66:
+#line	355	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OPROTO, yypt[-0].yyv.node, Z);
+		yyval.node->type = yypt[-1].yyv.type;
+	} break;
+case 67:
+#line	360	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OPROTO, yypt[-0].yyv.node, Z);
+		yyval.node->type = yypt[-1].yyv.type;
+	} break;
+case 68:
+#line	365	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ODOTDOT, Z, Z);
+	} break;
+case 69:
+#line	369	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLIST, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 70:
+#line	375	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = invert(yypt[-1].yyv.node);
+		if(yypt[-2].yyv.node != Z)
+			yyval.node = new(OLIST, yypt[-2].yyv.node, yyval.node);
+		if(yyval.node == Z)
+			yyval.node = new(OLIST, Z, Z);
+	} break;
+case 71:
+#line	384	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = Z;
+	} break;
+case 72:
+#line	388	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLIST, yypt[-1].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 74:
+#line	395	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLIST, yypt[-1].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 75:
+#line	401	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCASE, yypt[-1].yyv.node, Z);
+	} break;
+case 76:
+#line	405	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCASE, Z, Z);
+	} break;
+case 77:
+#line	409	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLABEL, dcllabel(yypt[-1].yyv.sym, 1), Z);
+	} break;
+case 78:
+#line	415	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = Z;
+	} break;
+case 80:
+#line	420	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLIST, yypt[-1].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 82:
+#line	426	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		markdcl();
+	} break;
+case 83:
+#line	430	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = revertdcl();
+		if(yyval.node)
+			yyval.node = new(OLIST, yyval.node, yypt[-0].yyv.node);
+		else
+			yyval.node = yypt[-0].yyv.node;
+	} break;
+case 84:
+#line	438	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OIF, yypt[-2].yyv.node, new(OLIST, yypt[-0].yyv.node, Z));
+		if(yypt[-0].yyv.node == Z)
+			warn(yypt[-2].yyv.node, "empty if body");
+	} break;
+case 85:
+#line	444	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OIF, yypt[-4].yyv.node, new(OLIST, yypt[-2].yyv.node, yypt[-0].yyv.node));
+		if(yypt[-2].yyv.node == Z)
+			warn(yypt[-4].yyv.node, "empty if body");
+		if(yypt[-0].yyv.node == Z)
+			warn(yypt[-4].yyv.node, "empty else body");
+	} break;
+case 86:
+#line	452	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OFOR, new(OLIST, yypt[-4].yyv.node, new(OLIST, yypt[-6].yyv.node, yypt[-2].yyv.node)), yypt[-0].yyv.node);
+	} break;
+case 87:
+#line	456	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OWHILE, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 88:
+#line	460	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ODWHILE, yypt[-2].yyv.node, yypt[-5].yyv.node);
+	} break;
+case 89:
+#line	464	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ORETURN, yypt[-1].yyv.node, Z);
+		yyval.node->type = thisfn->link;
+	} break;
+case 90:
+#line	469	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCONST, Z, Z);
+		yyval.node->vconst = 0;
+		yyval.node->type = types[TINT];
+		yypt[-2].yyv.node = new(OSUB, yyval.node, yypt[-2].yyv.node);
+
+		yyval.node = new(OCONST, Z, Z);
+		yyval.node->vconst = 0;
+		yyval.node->type = types[TINT];
+		yypt[-2].yyv.node = new(OSUB, yyval.node, yypt[-2].yyv.node);
+
+		yyval.node = new(OSWITCH, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 91:
+#line	483	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OBREAK, Z, Z);
+	} break;
+case 92:
+#line	487	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCONTINUE, Z, Z);
+	} break;
+case 93:
+#line	491	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OGOTO, dcllabel(yypt[-1].yyv.sym, 0), Z);
+	} break;
+case 94:
+#line	495	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OUSED, yypt[-2].yyv.node, Z);
+	} break;
+case 95:
+#line	499	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OSET, yypt[-2].yyv.node, Z);
+	} break;
+case 96:
+#line	504	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = Z;
+	} break;
+case 98:
+#line	510	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = Z;
+	} break;
+case 100:
+#line	517	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCAST, yypt[-0].yyv.node, Z);
+		yyval.node->type = types[TLONG];
+	} break;
+case 102:
+#line	525	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCOMMA, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 104:
+#line	532	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OMUL, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 105:
+#line	536	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ODIV, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 106:
+#line	540	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OMOD, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 107:
+#line	544	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OADD, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 108:
+#line	548	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OSUB, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 109:
+#line	552	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASHR, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 110:
+#line	556	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASHL, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 111:
+#line	560	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLT, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 112:
+#line	564	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OGT, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 113:
+#line	568	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLE, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 114:
+#line	572	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OGE, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 115:
+#line	576	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OEQ, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 116:
+#line	580	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ONE, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 117:
+#line	584	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OAND, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 118:
+#line	588	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OXOR, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 119:
+#line	592	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OOR, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 120:
+#line	596	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OANDAND, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 121:
+#line	600	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OOROR, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 122:
+#line	604	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCOND, yypt[-4].yyv.node, new(OLIST, yypt[-2].yyv.node, yypt[-0].yyv.node));
+	} break;
+case 123:
+#line	608	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OAS, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 124:
+#line	612	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASADD, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 125:
+#line	616	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASSUB, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 126:
+#line	620	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASMUL, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 127:
+#line	624	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASDIV, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 128:
+#line	628	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASMOD, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 129:
+#line	632	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASASHL, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 130:
+#line	636	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASASHR, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 131:
+#line	640	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASAND, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 132:
+#line	644	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASXOR, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 133:
+#line	648	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OASOR, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 135:
+#line	655	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCAST, yypt[-0].yyv.node, Z);
+		dodecl(NODECL, CXXX, yypt[-3].yyv.type, yypt[-2].yyv.node);
+		yyval.node->type = lastdcl;
+	} break;
+case 136:
+#line	661	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OSTRUCT, yypt[-1].yyv.node, Z);
+		dodecl(NODECL, CXXX, yypt[-5].yyv.type, yypt[-4].yyv.node);
+		yyval.node->type = lastdcl;
+	} break;
+case 138:
+#line	670	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OIND, yypt[-0].yyv.node, Z);
+	} break;
+case 139:
+#line	674	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OADDR, yypt[-0].yyv.node, Z);
+	} break;
+case 140:
+#line	678	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OPOS, yypt[-0].yyv.node, Z);
+	} break;
+case 141:
+#line	682	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ONEG, yypt[-0].yyv.node, Z);
+	} break;
+case 142:
+#line	686	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ONOT, yypt[-0].yyv.node, Z);
+	} break;
+case 143:
+#line	690	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCOM, yypt[-0].yyv.node, Z);
+	} break;
+case 144:
+#line	694	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OPREINC, yypt[-0].yyv.node, Z);
+	} break;
+case 145:
+#line	698	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OPREDEC, yypt[-0].yyv.node, Z);
+	} break;
+case 146:
+#line	702	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OSIZE, yypt[-0].yyv.node, Z);
+	} break;
+case 147:
+#line	706	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OSIGN, yypt[-0].yyv.node, Z);
+	} break;
+case 148:
+#line	712	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = yypt[-1].yyv.node;
+	} break;
+case 149:
+#line	716	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OSIZE, Z, Z);
+		dodecl(NODECL, CXXX, yypt[-2].yyv.type, yypt[-1].yyv.node);
+		yyval.node->type = lastdcl;
+	} break;
+case 150:
+#line	722	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OSIGN, Z, Z);
+		dodecl(NODECL, CXXX, yypt[-2].yyv.type, yypt[-1].yyv.node);
+		yyval.node->type = lastdcl;
+	} break;
+case 151:
+#line	728	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OFUNC, yypt[-3].yyv.node, Z);
+		if(yypt[-3].yyv.node->op == ONAME)
+		if(yypt[-3].yyv.node->type == T)
+			dodecl(xdecl, CXXX, types[TINT], yyval.node);
+		yyval.node->right = invert(yypt[-1].yyv.node);
+	} break;
+case 152:
+#line	736	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OIND, new(OADD, yypt[-3].yyv.node, yypt[-1].yyv.node), Z);
+	} break;
+case 153:
+#line	740	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ODOT, new(OIND, yypt[-2].yyv.node, Z), Z);
+		yyval.node->sym = yypt[-0].yyv.sym;
+	} break;
+case 154:
+#line	745	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ODOT, yypt[-2].yyv.node, Z);
+		yyval.node->sym = yypt[-0].yyv.sym;
+	} break;
+case 155:
+#line	750	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OPOSTINC, yypt[-1].yyv.node, Z);
+	} break;
+case 156:
+#line	754	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OPOSTDEC, yypt[-1].yyv.node, Z);
+	} break;
+case 158:
+#line	759	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCONST, Z, Z);
+		yyval.node->type = types[TINT];
+		yyval.node->vconst = yypt[-0].yyv.vval;
+	} break;
+case 159:
+#line	765	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCONST, Z, Z);
+		yyval.node->type = types[TLONG];
+		yyval.node->vconst = yypt[-0].yyv.vval;
+	} break;
+case 160:
+#line	771	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCONST, Z, Z);
+		yyval.node->type = types[TUINT];
+		yyval.node->vconst = yypt[-0].yyv.vval;
+	} break;
+case 161:
+#line	777	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCONST, Z, Z);
+		yyval.node->type = types[TULONG];
+		yyval.node->vconst = yypt[-0].yyv.vval;
+	} break;
+case 162:
+#line	783	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCONST, Z, Z);
+		yyval.node->type = types[TDOUBLE];
+		yyval.node->fconst = yypt[-0].yyv.dval;
+	} break;
+case 163:
+#line	789	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCONST, Z, Z);
+		yyval.node->type = types[TFLOAT];
+		yyval.node->fconst = yypt[-0].yyv.dval;
+	} break;
+case 164:
+#line	795	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCONST, Z, Z);
+		yyval.node->type = types[TVLONG];
+		yyval.node->vconst = yypt[-0].yyv.vval;
+	} break;
+case 165:
+#line	801	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OCONST, Z, Z);
+		yyval.node->type = types[TUVLONG];
+		yyval.node->vconst = yypt[-0].yyv.vval;
+	} break;
+case 168:
+#line	811	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OSTRING, Z, Z);
+		yyval.node->type = typ(TARRAY, types[TCHAR]);
+		yyval.node->type->width = yypt[-0].yyv.sval.l + 1;
+		yyval.node->cstring = yypt[-0].yyv.sval.s;
+		yyval.node->sym = symstring;
+		yyval.node->etype = TARRAY;
+		yyval.node->class = CSTATIC;
+	} break;
+case 169:
+#line	821	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		char *s;
+		int n;
+
+		n = yypt[-1].yyv.node->type->width - 1;
+		s = alloc(n+yypt[-0].yyv.sval.l+MAXALIGN);
+
+		memcpy(s, yypt[-1].yyv.node->cstring, n);
+		memcpy(s+n, yypt[-0].yyv.sval.s, yypt[-0].yyv.sval.l);
+		s[n+yypt[-0].yyv.sval.l] = 0;
+
+		yyval.node = yypt[-1].yyv.node;
+		yyval.node->type->width += yypt[-0].yyv.sval.l;
+		yyval.node->cstring = s;
+	} break;
+case 170:
+#line	839	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLSTRING, Z, Z);
+		yyval.node->type = typ(TARRAY, types[TUSHORT]);
+		yyval.node->type->width = yypt[-0].yyv.sval.l + sizeof(ushort);
+		yyval.node->rstring = (ushort*)yypt[-0].yyv.sval.s;
+		yyval.node->sym = symstring;
+		yyval.node->etype = TARRAY;
+		yyval.node->class = CSTATIC;
+	} break;
+case 171:
+#line	849	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		char *s;
+		int n;
+
+		n = yypt[-1].yyv.node->type->width - sizeof(ushort);
+		s = alloc(n+yypt[-0].yyv.sval.l+MAXALIGN);
+
+		memcpy(s, yypt[-1].yyv.node->rstring, n);
+		memcpy(s+n, yypt[-0].yyv.sval.s, yypt[-0].yyv.sval.l);
+		*(ushort*)(s+n+yypt[-0].yyv.sval.l) = 0;
+
+		yyval.node = yypt[-1].yyv.node;
+		yyval.node->type->width += yypt[-0].yyv.sval.l;
+		yyval.node->rstring = (ushort*)s;
+	} break;
+case 172:
+#line	866	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = Z;
+	} break;
+case 175:
+#line	874	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(OLIST, yypt[-2].yyv.node, yypt[-0].yyv.node);
+	} break;
+case 176:
+#line	880	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.tyty.t1 = strf;
+		yyval.tyty.t2 = strl;
+		strf = T;
+		strl = T;
+		lastbit = 0;
+		firstbit = 1;
+	} break;
+case 177:
+#line	889	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.type = strf;
+		strf = yypt[-2].yyv.tyty.t1;
+		strl = yypt[-2].yyv.tyty.t2;
+	} break;
+case 178:
+#line	896	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		lastclass = CXXX;
+		lasttype = types[TINT];
+	} break;
+case 180:
+#line	904	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.tycl.t = yypt[-0].yyv.type;
+		yyval.tycl.c = CXXX;
+	} break;
+case 181:
+#line	909	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.tycl.t = simplet(yypt[-0].yyv.lval);
+		yyval.tycl.c = CXXX;
+	} break;
+case 182:
+#line	914	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.tycl.t = simplet(yypt[-0].yyv.lval);
+		yyval.tycl.c = simplec(yypt[-0].yyv.lval);
+		yyval.tycl.t = garbt(yyval.tycl.t, yypt[-0].yyv.lval);
+	} break;
+case 183:
+#line	920	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.tycl.t = yypt[-1].yyv.type;
+		yyval.tycl.c = simplec(yypt[-0].yyv.lval);
+		yyval.tycl.t = garbt(yyval.tycl.t, yypt[-0].yyv.lval);
+		if(yypt[-0].yyv.lval & ~BCLASS & ~BGARB)
+			diag(Z, "duplicate types given: %T and %Q", yypt[-1].yyv.type, yypt[-0].yyv.lval);
+	} break;
+case 184:
+#line	928	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.tycl.t = simplet(typebitor(yypt[-1].yyv.lval, yypt[-0].yyv.lval));
+		yyval.tycl.c = simplec(yypt[-0].yyv.lval);
+		yyval.tycl.t = garbt(yyval.tycl.t, yypt[-0].yyv.lval);
+	} break;
+case 185:
+#line	934	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.tycl.t = yypt[-1].yyv.type;
+		yyval.tycl.c = simplec(yypt[-2].yyv.lval);
+		yyval.tycl.t = garbt(yyval.tycl.t, yypt[-2].yyv.lval|yypt[-0].yyv.lval);
+	} break;
+case 186:
+#line	940	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.tycl.t = simplet(yypt[-0].yyv.lval);
+		yyval.tycl.c = simplec(yypt[-1].yyv.lval);
+		yyval.tycl.t = garbt(yyval.tycl.t, yypt[-1].yyv.lval);
+	} break;
+case 187:
+#line	946	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.tycl.t = simplet(typebitor(yypt[-1].yyv.lval, yypt[-0].yyv.lval));
+		yyval.tycl.c = simplec(yypt[-2].yyv.lval|yypt[-0].yyv.lval);
+		yyval.tycl.t = garbt(yyval.tycl.t, yypt[-2].yyv.lval|yypt[-0].yyv.lval);
+	} break;
+case 188:
+#line	954	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.type = yypt[-0].yyv.tycl.t;
+		if(yypt[-0].yyv.tycl.c != CXXX)
+			diag(Z, "illegal combination of class 4: %s", cnames[yypt[-0].yyv.tycl.c]);
+	} break;
+case 189:
+#line	962	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		lasttype = yypt[-0].yyv.tycl.t;
+		lastclass = yypt[-0].yyv.tycl.c;
+	} break;
+case 190:
+#line	969	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dotag(yypt[-0].yyv.sym, TSTRUCT, 0);
+		yyval.type = yypt[-0].yyv.sym->suetag;
+	} break;
+case 191:
+#line	974	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dotag(yypt[-0].yyv.sym, TSTRUCT, autobn);
+	} break;
+case 192:
+#line	978	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.type = yypt[-2].yyv.sym->suetag;
+		if(yyval.type->link != T)
+			diag(Z, "redeclare tag: %s", yypt[-2].yyv.sym->name);
+		yyval.type->link = yypt[-0].yyv.type;
+		suallign(yyval.type);
+	} break;
+case 193:
+#line	986	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		taggen++;
+		sprint(symb, "_%d_", taggen);
+		yyval.type = dotag(lookup(), TSTRUCT, autobn);
+		yyval.type->link = yypt[-0].yyv.type;
+		suallign(yyval.type);
+	} break;
+case 194:
+#line	994	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dotag(yypt[-0].yyv.sym, TUNION, 0);
+		yyval.type = yypt[-0].yyv.sym->suetag;
+	} break;
+case 195:
+#line	999	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dotag(yypt[-0].yyv.sym, TUNION, autobn);
+	} break;
+case 196:
+#line	1003	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.type = yypt[-2].yyv.sym->suetag;
+		if(yyval.type->link != T)
+			diag(Z, "redeclare tag: %s", yypt[-2].yyv.sym->name);
+		yyval.type->link = yypt[-0].yyv.type;
+		suallign(yyval.type);
+	} break;
+case 197:
+#line	1011	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		taggen++;
+		sprint(symb, "_%d_", taggen);
+		yyval.type = dotag(lookup(), TUNION, autobn);
+		yyval.type->link = yypt[-0].yyv.type;
+		suallign(yyval.type);
+	} break;
+case 198:
+#line	1019	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dotag(yypt[-0].yyv.sym, TENUM, 0);
+		yyval.type = yypt[-0].yyv.sym->suetag;
+		if(yyval.type->link == T)
+			yyval.type->link = types[TINT];
+		yyval.type = yyval.type->link;
+	} break;
+case 199:
+#line	1027	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		dotag(yypt[-0].yyv.sym, TENUM, autobn);
+	} break;
+case 200:
+#line	1031	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		en.tenum = T;
+		en.cenum = T;
+	} break;
+case 201:
+#line	1036	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.type = yypt[-5].yyv.sym->suetag;
+		if(yyval.type->link != T)
+			diag(Z, "redeclare tag: %s", yypt[-5].yyv.sym->name);
+		if(en.tenum == T) {
+			diag(Z, "enum type ambiguous: %s", yypt[-5].yyv.sym->name);
+			en.tenum = types[TINT];
+		}
+		yyval.type->link = en.tenum;
+		yyval.type = en.tenum;
+	} break;
+case 202:
+#line	1048	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		en.tenum = T;
+		en.cenum = T;
+	} break;
+case 203:
+#line	1053	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.type = en.tenum;
+	} break;
+case 204:
+#line	1057	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.type = tcopy(yypt[-0].yyv.sym->type);
+	} break;
+case 206:
+#line	1064	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.lval = typebitor(yypt[-1].yyv.lval, yypt[-0].yyv.lval);
+	} break;
+case 207:
+#line	1069	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.lval = 0;
+	} break;
+case 208:
+#line	1073	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.lval = typebitor(yypt[-1].yyv.lval, yypt[-0].yyv.lval);
+	} break;
+case 213:
+#line	1085	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.lval = typebitor(yypt[-1].yyv.lval, yypt[-0].yyv.lval);
+	} break;
+case 216:
+#line	1095	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		doenum(yypt[-0].yyv.sym, Z);
+	} break;
+case 217:
+#line	1099	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		doenum(yypt[-2].yyv.sym, yypt[-0].yyv.node);
+	} break;
+case 220:
+#line	1106	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BCHAR; } break;
+case 221:
+#line	1107	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BSHORT; } break;
+case 222:
+#line	1108	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BINT; } break;
+case 223:
+#line	1109	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BLONG; } break;
+case 224:
+#line	1110	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BSIGNED; } break;
+case 225:
+#line	1111	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BUNSIGNED; } break;
+case 226:
+#line	1112	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BFLOAT; } break;
+case 227:
+#line	1113	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BDOUBLE; } break;
+case 228:
+#line	1114	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BVOID; } break;
+case 229:
+#line	1117	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BAUTO; } break;
+case 230:
+#line	1118	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BSTATIC; } break;
+case 231:
+#line	1119	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BEXTERN; } break;
+case 232:
+#line	1120	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BTYPEDEF; } break;
+case 233:
+#line	1121	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BTYPESTR; } break;
+case 234:
+#line	1122	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BREGISTER; } break;
+case 235:
+#line	1125	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BCONSTNT; } break;
+case 236:
+#line	1126	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{ yyval.lval = BVOLATILE; } break;
+case 237:
+#line	1130	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ONAME, Z, Z);
+		if(yypt[-0].yyv.sym->class == CLOCAL)
+			yypt[-0].yyv.sym = mkstatic(yypt[-0].yyv.sym);
+		yyval.node->sym = yypt[-0].yyv.sym;
+		yyval.node->type = yypt[-0].yyv.sym->type;
+		yyval.node->etype = TVOID;
+		if(yyval.node->type != T)
+			yyval.node->etype = yyval.node->type->etype;
+		yyval.node->xoffset = yypt[-0].yyv.sym->offset;
+		yyval.node->class = yypt[-0].yyv.sym->class;
+		yypt[-0].yyv.sym->aused = 1;
+	} break;
+case 238:
+#line	1145	"/n/sources/plan9/sys/src/cmd/cc/cc.y"
+{
+		yyval.node = new(ONAME, Z, Z);
+		yyval.node->sym = yypt[-0].yyv.sym;
+		yyval.node->type = yypt[-0].yyv.sym->type;
+		yyval.node->etype = TVOID;
+		if(yyval.node->type != T)
+			yyval.node->etype = yyval.node->type->etype;
+		yyval.node->xoffset = yypt[-0].yyv.sym->offset;
+		yyval.node->class = yypt[-0].yyv.sym->class;
+	} break;
+	}
+	goto yystack;  /* stack new state and value */
+}

+ 94 - 0
sys/src/cmd/cc/y.tab.h

@@ -0,0 +1,94 @@
+
+typedef union 	{
+	Node*	node;
+	Sym*	sym;
+	Type*	type;
+	struct
+	{
+		Type*	t;
+		char	c;
+	} tycl;
+	struct
+	{
+		Type*	t1;
+		Type*	t2;
+	} tyty;
+	struct
+	{
+		char*	s;
+		long	l;
+	} sval;
+	long	lval;
+	double	dval;
+	vlong	vval;
+}	YYSTYPE;
+extern	YYSTYPE	yylval;
+#define	LPE	57346
+#define	LME	57347
+#define	LMLE	57348
+#define	LDVE	57349
+#define	LMDE	57350
+#define	LRSHE	57351
+#define	LLSHE	57352
+#define	LANDE	57353
+#define	LXORE	57354
+#define	LORE	57355
+#define	LOROR	57356
+#define	LANDAND	57357
+#define	LEQ	57358
+#define	LNE	57359
+#define	LLE	57360
+#define	LGE	57361
+#define	LLSH	57362
+#define	LRSH	57363
+#define	LMM	57364
+#define	LPP	57365
+#define	LMG	57366
+#define	LNAME	57367
+#define	LTYPE	57368
+#define	LFCONST	57369
+#define	LDCONST	57370
+#define	LCONST	57371
+#define	LLCONST	57372
+#define	LUCONST	57373
+#define	LULCONST	57374
+#define	LVLCONST	57375
+#define	LUVLCONST	57376
+#define	LSTRING	57377
+#define	LLSTRING	57378
+#define	LAUTO	57379
+#define	LBREAK	57380
+#define	LCASE	57381
+#define	LCHAR	57382
+#define	LCONTINUE	57383
+#define	LDEFAULT	57384
+#define	LDO	57385
+#define	LDOUBLE	57386
+#define	LELSE	57387
+#define	LEXTERN	57388
+#define	LFLOAT	57389
+#define	LFOR	57390
+#define	LGOTO	57391
+#define	LIF	57392
+#define	LINT	57393
+#define	LLONG	57394
+#define	LREGISTER	57395
+#define	LRETURN	57396
+#define	LSHORT	57397
+#define	LSIZEOF	57398
+#define	LUSED	57399
+#define	LSTATIC	57400
+#define	LSTRUCT	57401
+#define	LSWITCH	57402
+#define	LTYPEDEF	57403
+#define	LTYPESTR	57404
+#define	LUNION	57405
+#define	LUNSIGNED	57406
+#define	LWHILE	57407
+#define	LVOID	57408
+#define	LENUM	57409
+#define	LSIGNED	57410
+#define	LCONSTNT	57411
+#define	LVOLATILE	57412
+#define	LSET	57413
+#define	LSIGNOF	57414

+ 4 - 0
sys/src/cmd/kc/swt.c

@@ -654,6 +654,8 @@ align(long i, Type *t, int op)
 
 	case Asu2:	/* padding at end of a struct */
 		w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael1:	/* initial allign of struct element */
@@ -662,6 +664,8 @@ align(long i, Type *t, int op)
 		w = ewidth[v->etype];
 		if(w <= 0 || w >= SZ_LONG)
 			w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael2:	/* width of a struct element */

+ 4 - 0
sys/src/cmd/qc/swt.c

@@ -661,6 +661,8 @@ align(long i, Type *t, int op)
 
 	case Asu2:	/* padding at end of a struct */
 		w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael1:	/* initial allign of struct element */
@@ -669,6 +671,8 @@ align(long i, Type *t, int op)
 		w = ewidth[v->etype];
 		if(w <= 0 || w >= SZ_LONG)
 			w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael2:	/* width of a struct element */

+ 6 - 0
sys/src/cmd/rio/rio.c

@@ -505,6 +505,11 @@ mousethread(void*)
 				/* convert to logical coordinates */
 				xy.x = mouse->xy.x + (winput->i->r.min.x-winput->screenr.min.x);
 				xy.y = mouse->xy.y + (winput->i->r.min.y-winput->screenr.min.y);
+
+				/* the up and down scroll buttons are not subject to the usual rules */
+				if((mouse->buttons&(8|16)) && !winput->mouseopen)
+					goto Sending;
+
 				inside = ptinrect(mouse->xy, insetrect(winput->screenr, Selborder));
 				if(winput->mouseopen)
 					scrolling = FALSE;
@@ -520,6 +525,7 @@ mousethread(void*)
 			}else
 				sending = FALSE;
 			if(sending){
+			Sending:
 				if(mouse->buttons == 0){
 					cornercursor(winput, mouse->xy, 0);
 					sending = FALSE;

+ 4 - 0
sys/src/cmd/vc/swt.c

@@ -660,6 +660,8 @@ align(long i, Type *t, int op)
 
 	case Asu2:	/* padding at end of a struct */
 		w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael1:	/* initial allign of struct element */
@@ -668,6 +670,8 @@ align(long i, Type *t, int op)
 		w = ewidth[v->etype];
 		if(w <= 0 || w >= SZ_LONG)
 			w = SZ_LONG;
+		if(packflg)
+			w = packflg;
 		break;
 
 	case Ael2:	/* width of a struct element */