summaryrefslogtreecommitdiff
path: root/gnu/usr.bin/gcc/ChangeLog.2
blob: a5e092c26a7d0c49e07be13ad32f7df3e762d3bb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
Thu Jan 31 00:33:33 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* loop.c (scan_loop): Check each libcall for regs it uses
	but does not mention in the equivalent value.
	To move the libcall, we must have at most one such reg
	and it must be moved as well.
	(libcall_other_reg): New subroutine.
	* rtlanal.c (record_excess_regs): New function.

	* tree.c (gcc_obstack_init): New function.
	(init_obstacks, save_tree_context): Use that.
	(OBSTACK_CHUNK_SIZE): New parameter.
	* xm-next.h: New file.
	* configure (m68k/next): Use that file.

	* flags.h (flag_no_common): Declare new flag to treat external defs
	as ANSI specifies (i.e. not as common).
	* toplev.c (flag_no_common, f_options): Support -fno-common.
	* varasm.c (assemble_variable): Don't output a common if
	flag_no_common is set.	Treat as if initialized to 0.

	* gcc.c (default_compilers): Define __ASSEMBLER__ for .S file.

	* tm-aix386.h (ASM_OUTPUT_LOCAL): Ok to use bss, since no shared libs.
	(LINK_SPEC): Pass through all -K and -T options.
	* xm-aix386.h (TRUE, FALSE): Undef if already def, to avoid warning.

	* tm-m68k.h (TARGET_68040, TARGET_68040_ONLY): New machine flags.
	(TARGET_SWITCHES): Alternatives to set them.
	* tm-next.h (TARGET_DEFAULT): Changed to 0407 for 68040.

	* out-m68k.h (standard_68881_constant_p):  Always return 0
	for TARGET_68040 since fmovecr is no longer implemented in hardware.

	* m68k.md (ftruncdf2, ftruncsf2): Don't emit fintrz for
	TARGET_68040, since it is no longer implemented in hardware.
	(muldf3): Don't use fscale on 68040, since not implemented in hardware.

	* toplev.c (optimize): Now stores specified optimization level.
	(main): Keep the largest optimization level specified.
	Handle any integer.

	* c-decl.c (pushdecl): Don't make an extern global for -traditional
	if it uses any local types.

	* tm-sun386i.h (PCC_BITFFIELD_TYPE_MATTERS): Use 1 as value.

Wed Jan 30 12:41:15 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* fixincludes (sys/systypes.h): Edit this to handle _SIZE_T, etc.

	* function.c (put_var_into_stack): Allocate var ref chain link
	while in the proper function's obstack.

	* fold-const.c (const_binop): Don't crash for real/0 if have infinity.

	* flow.c (mark_set_1): Don't make log link for hard reg in asm insn.

Wed Jan 30 07:45:33 1991  Tom Wood  (wood at dg-rtp.dg.com)

	* sched.c (schedule_block): Indicate what insns constitute each
	basic block.

Tue Jan 29 12:35:42 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (gnulib1.*, gnulib2.*): Declare them phony targets.

	* print-tree.c (print_node): Print message if TREE_PERMANENT is wrong.
	* tree.c (object_permanent_p): New function.

	* print-tree.c (print_node): Remove DECL_LANG_FLAG_10.

Tue Jan 29 10:07:48 1991  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md (minus/xor/and, neg/ne/compare/and): Delete these.  This
	should be done by combine.
	(compare operator): Eliminate except when a SET_SRC.
	* tm-m88k.h (OPTIMIZATION_OPTIONS): -fomit-frame-pointer is a
	default optimization.

Mon Jan 28 12:52:11 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* tree.h (DECL_VIRTUAL_P): Renamed from TREE_VIRTUAL.
	(struct tree_common): Eliminate virtual_flag.
	(struct tree_decl): Add virtual_flag.

	* Makefile.in (enquire.o): Pass -DNO_STDDEF.

	* m68k.md (tablejump): Now have a define_expand that does
	different things depending on CASE_VECTOR_PC_RELATIVE,
	and a separate define_insn for each case.

	* function.h (outer_function_chain): Declare the variable.

	* tree.c (debug_obstack): Fix typos.
	* tree.h (struct tree_common): Fix typo.

	* Makefile.in (GNULIB1_TARGET, GNULIB2_TARGET): Variables deleted.
	(gnulib): Depend on gnulib1.target and gnulib2.target explicitly.

	* dbxout.c (dbxout_type): Use DECL_VIRTUAL_P, not TREE_VIRTUAL.

	* cplus-tree.h (TREE_PRIVATE, TREE_PROTECTED): #if 0.

	* cexp.y (keywords): Cast names for parens to U_CHAR *.

	* gcc.c (process_command): Fix typo setting switches[n_switches].arg.

	* loop.c (loop_reg_used_before_p): Check insns before INSN, not after.

	* objc-actions.c (objc_finish): Renamed from lang_finish.
	* objc-parse.y (program): Call objc_finish at the end.

	* Changes from Matthew Self (mself@next.com):

	* objc-parse.y:	 Since objc-parse.y was so out of date with
	respect to c-parse.y, I started over with c-parse.y and
	reintegrated the Objective-C modifications.  Now that
	Objective-C is working I hope that objc-parse.y will be kept
	more up to date....  I did not re-integrate the lexer since I
	don't have gperf working.  I simply cut and pasted what
	Stallman had in objc-parse.y.  Someone with access to gperf
	should re-generate this stuff.

	* objc-actions.c (comp_method_with_proto,
	comp_proto_with_proto):	 Stallman's change to use the
	functions end_temporary_allocation and
	resume_temporary_allocation is incorrect, since it always
	leaves allocation temporary, whether it was before or not. 

	Perhaps the push and pop functions would do the trick....

	* objc-actions.c (get_arg_type_list):  Use new function
	groktypename_in_parm_context.

	* objc-actions.c (_OBJC_SELECTOR_REFERENCES_decl,
	_OBJC_SELECTOR_REFERENCES_id):	Removed.

	* objc-actions.c (synth_module_prologue):  Eliminated code to
	forward declare the selector references array.

	* objc-actions.c (init_objc_symtab):  Eliminated code to
	initialize "refs" field in objc_symtab structure (which is
	now vestigial).

	* objc-actions.c (build_selector_translation_table): Rewrote.

	* objc-actions.c (build_selector_reference):  New routine.

	* objc-actions.c (build_message_expr, build_selector_expr):
	Use new routine.

	* config/tm-next.h (GO_IF_INDEXABLE_BASE):  Don't use pc
	relative addressing for LABEL_REF's.  Since branch tables are
	in the const section, we treat LABEL_REF's like SYMBOL_REF's
	here.  Otherwise invalid addresses were being generated.

	* config/tm-next.h (CASE_VECTOR_PC_RELATIVE, CASE_VECTOR_MODE):
	Use absolute branch tables rather than relative ones.

	* config/tm-next.h (ASM_OUTPUT_MAIN_SOURCE_FILE_END):  Output
	an N_SO symbol with no name to mark the end of the module.
	This is needed to support scattered loading on the NeXT.

	* config/out-next.c (handle_pragma):  Call to xrealloc had wrong args.

	* configure: Entry for NeXT must set out_file to out-next.c.

	* config/out-next.c:  Typo: "flags" -> "flags.h"

	* config/tm-next.h (LIB_SPEC):	Brought up-to-date.  There
	are probably more changes needed here.

	* c-decl.c (pushdecl_top_level):  New function.	 This was
	copied from an older version of g++.

	* c-decl.c (init_decl_processing): Make alloca first arg sizetype.

	* c-decl.c (groktypename_in_parm_context): New function.

Mon Jan 28 07:07:01 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (loop_reg_used_before_p): Don't use INSN_LUID since INSN
	might have been made by loop.c for an outer loop.

	* loop.c (move_movables, strength_reduce): Replace register references
	in REG_NOTES as well as PATTERN.

	* loop.c (strength_reduce): Call maybe_eliminate_biv twice, not 
	three times.
	(maybe_eliminate_biv): Don't abort if elimination fails even though
	we thought it wouldn't.	 This can happen if certain insn patterns 
	aren't valid.
	(maybe_eliminate_biv_1): Ensure that we do not change the insn at
	all if all the required changes can't be done.

Sun Jan 27 21:26:29 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in: Rename config-dir back to config.

Sat Jan 26 17:48:22 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* objc-parse.y (program): Call objc_finish.
	* objc-actions.c (objc_finish): Renamed from lang_finish.

	* objc-actions.c, objc-parse.y: New version from NeXT.

Sat Jan 26 17:37:48 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, case COND_EXPR): Disable special-case of
	A ? B : C when B and C are simple.  This is now done better by jump.

Sat Jan 26 13:16:58 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* tree.h (TREE_PRIVATE, TREE_PROTECTED, TREE_VIRTUAL): New macros.
	(struct tree_common): New flag fields.
	* dbxout.c (dbxout_type): Get rid of conditional; can always use these.

	* cccp.c (lookup_import): Do return -2 if file found.
	(main): Handle `.m' suffix like `.S'.

	* configure (m68k/next): Use out-next.c.

	* WORD_SWITCH_TAKES_ARG and SWITCH_TAKES_ARG now give # of args.
	* gcc.c (struct switchstr): New field `args' replaces `part2'.
	(process_command): Record all the args a switch has.
	(give_switch): Pass all the strings in `args'.

	* tree.h (struct tree_common): Normally make `code' an enum tree_code.

	* m68k.md (tablejump): New pattern.
	(casesi, etc.): Deleted.

	* tree.c (debug_obstack): New function.

	* toplev.c (compile_file): Call dbxout_finish near the end.
	* dbxout.c (dbxout_finish): New function.

	* print-tree.c (print_node): Always print ERROR_MARK node briefly. 

	* objc-actions.h (METHOD_ENCODING, CLASS_CATEGORY_LIST): New macros.

	* gcc.c (execute): Make fatal signal message clearer.
	(default_compilers): For .m file, define __OBJC__,
	and pass -lang-objc and -gen-decls to cc1.

	* dwarfout.c: Include output.h.
	(current_function_decl, asm_out_file): Explicit extern decls deleted.
	(abort, fatal): Explicit extern decls deleted.
	(NO_RETURN): Definition deleted.
	(named_labels): Don't declare it.
	(output_symbol): Don't use it.
	(MAXPATHLEN): Don't define this.  Don't include sys/param.h.
	(output_source_file_die): Avoid limit on file name size.
	(output_symbols_for_stmt): Deleted.
	(output_symbols_for_block): Adapt to using BLOCK, not LET_STMT.

	* configure: Renamed from `config'.
	* config: Directory renamed back from config-dir.

Sat Jan 26 1990	 Ron Guilmette (rfg at ncd.com)

	* README.DWARF: updated to reflect changes to dwarfout.c, the
	inclusion of dwarf.h (and its changes) and the fact that the
	DWARF support is no longer directly tied to the DG versions of
	GCC.

	* dwarfout.c: included a patch (provided by Ray Essick) to allow
	dwarfout.c to properly get a value for MAXPATHLEN even on (old)
	System V.3 systems.

	* dwarfout.c: added support for long long types (as suggested by
	Ray Essick).

	* dwarfout.c: added support for the AT_comp_dir attribute.  Also,
	as part of this change, the name of the compilation directory is
	no longer placed into in the .sources section.

	* dwarfout.c: added support for the AT_addr_ranges attribute.

	* dwarfout.c: added support for the AT_prototyped attribute.

	* dwarfout.c: added support for the AT_src_info attribute. Also,
	as part of this change, there is no longer a "special" entry
	at the start of the .srcinfo section for each compilation unit,
	and the contents of the "special" final entry in the .srcinfo
	section have changed (to { -1, -1 }).

	* dwarfout.c: modified to allow additional GNU DWARF extensions
	to be generated whenever the corresponding extended attribute
	codes are defined (presumably within a modified dwarf.h file).

	* dwarfout.c: use the section names .srcinfo and .sources rather
	than .finfo and .files.	 The additional specificity is warranted
	because the DWARF information may someday include information
	about object files as well as source files.

	* dwarfout.c: fixed a bug where a type attribute was being generated
	for functions and function types even when the return type was
	void.  "Standard" dwarf says that if the return type for a function
	or function type is void then no type attribute should be generated
	for the corresponding DIE.

Sat Jan 26 04:22:08 1991  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-lex.c (interface_strcmp): Handle String.String.Map.cc and
	friends.

	* cplus-typeck.c (build_unary_op): Merge change to generate better
	code from simple cast expression.

Fri Jan 25 10:06:28 1991  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl.c (pushtag): Don't call `pushdecl' if the type's name
	is anonymous, lest we recurse ad infinitum.

Thu Jan 24 23:56:55 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* optabs.c (expand_binop, expand_unop): Word at a time only for ints.

Thu Jan 24 09:40:37 1991  Tom Wood  (wood at dg-rtp.dg.com)

	* sdbout.c (sdbout_symbol): Apply changes in dbxout.c to deal with
	SUBREG.	 Don't emit a symbolic definition for variables that can't
	be represented.

Thu Jan 24 21:18:15 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* config: Conditional for setting $os was backward.
	Also mention name of make-var file if one exists.

	* out-i386.c: Delete a large piece of accidental insertion.

	* dwarfout.c: Don't include c-tree.h or cplus-tree.h.
	(INT_TYPE_SIZE, etc.): Define them if not overridden.
	(fundamental_type_code): Distinguish types by TYPE_PRECISION.
	But also check for the built-in C type names.

Thu Jan 24 15:23:17 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* gcc.c (default_compilers): Pass all args starting with "O" to 
	cc1 so that -O2 is passed along.

Thu Jan 24 13:10:27 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* stmt.c (expand_expr_stmt): Don't warn for any casts to void.

	* config: Fix typos setting shell vars.
	Rename config to config-dir.
	Insert missing \ in case for delta.

Wed Jan 23 16:31:27 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (emit_jump_insn_{before,after}): Allow PATTERN to be
	a SEQUENCE.

	* loop.c (check_dbra_loop): Use emit_jump_insn_before when writing 
	out compare and jump sequence, not emit_insn_before, to ensure that
	if we only write one insn  that it is a JUMP_INSN.

	* toplev.c (flag_rerun_cse_after_loop): New: -frerun-cse-after-loop.
	(rest_of_compilation): Rerun cse after loop if desired.
	(main): Add support for -O2.
	Prescan args for -O and -O2 to set default values for many -f options.
	Add call to new macro OPTIMIZATION_OPTIONS.
	Save status of -version until all args have been processed; then
	write out the info.
	(print_single_switch): New function.
	(print_switch_values): Renamed from print_target_switch_defaults.
	Now prints out currently enabled -f, -m, and -W switches.  Calls
	print_single_switch to write out switch and handle long lines.

	* rtl.def (SUBREG): Change rtx class from 'o' to 'x'.

	* cse.c (find_comparison_args): Ignore hash table entry if not valid.

Wed Jan 23 00:12:24 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* config: File renamed from config.gcc.
	Allow abbreviations for +-options.
	Allow config HOST TARGET.
	Support +gas and +nfp as separate options.
	Rename all the machine alternatives to general scheme:
	cpu/company-system.  Allow abbreviations for cpu/company pairs.
	* config-dir: Dir renamed from config.

	* Makefile.in (install-dir): Create bindir here.

	* cccp.c (main): Delete duplicat p++ left in last change.

	* Makefile.in (GNULIB1, GNULIB1_TARGET): Renamed from GNULIB*.
	(gnulib1.portable, gnulib1.target): Renamed from gnulib.*.
	They now make a file named gnulib1, from gnulib1.c.
	(LIB1FUNCS, LIB1FUNCS_EXTRA): Renamed from LIBFUNCS*.
	(for-bootstrap, rest.encap): Depend on gnulib, not GNULIB2_TARGET.
	(stamp-gnulib2): This file is no longer used.
	(gnulib2.portable): Old stamp-gnulib2 rule renamed to this.
	Now create a file named gnulib2, from gnulib2.c alone.
	(gnulib): New target, combines gnulib1 and gnulib2 into gnulib.
	(mostlyclean): Delete additional temporary files.
	No need to avoid deleting stamp-gnulib2.
	(clean): Delete gnulib1 and gnulib2, but not stamp-gnulib2.
	(realclean): No need to delete gnulib here.
	(install-gnulib): Changed dependencies.
	* gnulib1.c: File gnulib.c renamed.

	* Makefile.in (install-dir): Create bindir here.

	* cccp.c (main): Delete duplicat p++ left in last change.

Sun Jan 20 14:00:16 1991  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (finish_struct): Conditionalize EMPTY_FIELD_BOUNDARY
	on whether or not it is defined.  Similarly for	PCC_BIT_FIELD_MATTERS. 

Wed Jan 16 18:56:30 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* cse.c (fold_rtx): When folding dispatch table, stay inside bounds.

Wed Jan 16 08:11:48 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload.c (find_reloads_toplev): Fix typo in recent change.

	* reload1.c (eliminate_regs): If we have a non-paradoxical
	(subreg (pseudo)) and the pseudo has an equivalent memory
	location, replace the SUBREG because find_reloads may do it.

Tue Jan 15 01:41:28 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* loop.c (scan_loop): Condition for movability was wrong.
	A reg that isn't necessarily set may be unsafe
	even if used only inside the loop.
	However, a reg used only in the same basic block after the set is safe.
	So is a reg that isn't a user-level variable.

	* loop.c (loop_optimize): Reverse order of scanning loops.

	* loop.c (scan_loop): After skipping the insns of a libcall sequence,
	ignore notes when searching back to find the last insn of the seq.

	* cccp.c (main): Use envvar GCC_EXEC_PATH to specify translation
	of prefixe in default include dirs.

	* cccp.c (main): Do path_includes after explicit options.

	* combine.c (try_distrib): Don't push + thru negative count shifts.

Mon Jan 14 09:40:28 1991  Ken Raeburn  (raeburn at watch.com)

	* cplus-lex.c (yylex): Even in `extern "C"', the keywords are the
	same.

	* cplus-lex.c (input_from_saved_text): New function.  Set string
	source for FILE pointer.
	(yylex, do_pending_inlines): Call it.

	* cplus-parse.y (stmts, stmt): Type is now `tree'.  Some actions
	fixed to return it.

	* cplus-lex.c (reinit_parse_for_block): New function, with most of
	the guts of reinit_parse_for_method.  Magic argument IS_TEMPLATE
	chooses a set of error messages.
	(reinit_parse_for_method): Call it.
	cplus-template.c (reinit_parse_for_template): New function, also
	calls reinit_parse_for_block.

Mon Jan 14 07:20:36 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (skip_consec_insns, move_movables, strength_reduce): Don't
	call find_reg_note on a NOTE.

Sun Jan 13 15:45:23 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c: Separate namespace for assertions.  Don't expand macros
	inside assertions in #if.  Allow arbitrary token sequences.
	(rescan): Special handling after `#' if assertions_flag.
	(expand_to_temp_buffer): New arg sets assertions_flag. Callers changed.
	(eval_if_expression): Pass 1 for that arg.
	(skip_paren_group): New function.
	(assertion_hashtab, ASSERTION_HASHSIZE, ASSERTION_HASHNODE): New.
	(assertion_install, assertion_lookup, delete_assertion): New functions.
	(T_ASSERTION): Deleted.
	(tokenlist_list): Renamed from arglist_list.
	(read_token_list): Renamed from read_keyword_list.  Much changed.
	Copy the strings into the heap.
	(free_token_list): Renamed from free_keyword_list.  Free the strings.
	(do_assert, do_unassert): Considerably changed.
	(check_assertion): Somewhat changed.
	(check_macro_name): Extra arg contributes to error message.
	* cexp.y (yylex): Parse everything as a name if keyword_parsing.
	(rule for assertions): Set, then clear, keyword_parsing.
	(keywords): Allow empty sequence.  Allow nested parens.

Sat Jan 12 12:18:00 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (build_unary_op): Make better code for simple casts.

	* reload.c (find_reloads): Computing reload_when_needed, don't neglect
	operands that don't have output reloads.

	* cse.c (refers_to_mem_p): At check_addr, handle PLUS inside CONST.

Sat Jan 12 06:30:56 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (steal_delay_list_from_*): Add missing argument to calls to
	insn_sets_resource_p.
	(fill_eager_delay_slots, relax_delay_slots): Add missing argument
	to calls to mostly_true_jump.
	(relax_delay_slots): Correctly handle case where we can't invert jump.

	* reload.c (find_reloads_toplev): If we have a SUBREG of a
	pseudo that resides in memory and the address is not offsettable,
	substitute for the pseudo now so we can generate a reload for the
	address.

Fri Jan 11 14:39:09 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-next.h (LIB_SPEC, STARTFILE_SPEC): Don't support -p.

Thu Jan 10 12:26:49 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-sun2.h (CC1_SPEC): Define to ignore -sun2 and -target.
	(WORD_SWITCH_TAKES_ARG): Define to recognize -target.
	(LIB_SPEC): Define; handle -a.
	* tm-sun2os4.h: New file.
	* tm-m68k.h (TARGET_SWITCHES): Handle -msky and -mnosky.
	(TARGET_SKY): New macro.

	* tm-next.h (LIB_SPEC): Use -lsys_s, not -lc.

	* c-parse.y (yylex): Fix typo.

	* genoutput.c (output_prologue): Make insn-output.c use insn-codes.h.
	* Makefile.in (insn-output.o): Depend on insn-codes.h.

	* Makefile.in (install-headers): Save $(libsubdir) before cd.

	* Makefile.in (gnulib): Depend on config.status.

	* gnulib2.c (__umulsidi3): Use #else around inline function.
	Use __-style names for all machines.

Wed Jan	 9 17:06:18 1991  Michael Tiemann  (tiemann at cygnus.com)

	* out-sparc.c (various places): Change \; to \n\t in printf
	strings.

	* sparc.md: Change PIC initialization pattern to recognize pattern
	that doesn't involve a clobber.
	* out-sparc.c: Rest of change is here, where PIC initialization is
	emitted.

	* cse.c (simplify_unary_operation, simplify_binary_operation):
	Correctly adjust VAL for bits outside MODE.

Wed Jan	 9 15:45:26 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* flow.c (libcall_dead_p): Handle a CALL in a PARALLEL.

Tue Jan	 8 13:35:50 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expmed.c (emit_store_flag): Correct UNSIGNEDP value passed to
	convert_to_mode and expand_unop.

Mon Jan	 7 11:56:31 1991  Michael Tiemann  (tiemann at cygnus.com)

	* gplus.gperf: New keywords for templates and other extensions.

	* cplus-lex.c: Incorprate new gperf code.

	* cplus-class.c (resolve_scope_to_name): New function.
	(build_scoped_method_call): Call `resolve_scope_to_name' instead of
	handling by itself.
	* cplus-decl.c (pushdecl_class_level): Give forward declaration.
	(lookup_nested_type): New function.
	(pushtag,lookup_tag,xref_tag): Handle nested classes.
	(finish_function): Add comment about obscure argument passing
	convention for static method calls (at the call site).	Also, don't
	call operator delete with NULL pointer.	 Call it with
	`current_class_decl' instead.
	(globalize_nested_type): New function.	Used when we learn that a
	type which initially appeared to be nested should be defined in the
	global scope instead.
	(grokdeclarator): Call `globalize_nested_type' when grokking an
	as-yet undefined class type.
	* cplus-dem.c: Updated to handle qualified (i.e. nested) types.
	This means handling the new letter `Q' in mangled names.
	* cplus-init.c (build_member_call): Handle nested classes using
	`resolve_scope_to_name' instead of handling itself.
	* cplus-lex.c (typename_scope_in_progress): New static variable to
	allow the lexer to figure out what are nested class typenames,
	scoped member references, etc., without getting the parser too
	involved.
	(yylex): Recognize SCOPED_TYPENAME and TYPENAME_SCOPE tokens.
	Also, recognize '<' and '>' separately from ARITHCOMPARE so we can
	implement templates.
	No longer recognizes (X::*) or (X::&) as single tokens.
	* cplus-method.c (build_overload_nested_name): New function to build
	internal names for nested typenames.
	* cplus-parse.y: Handle parameterized type syntax (more or less).
	(dummy_decl): Gone!
	Nested types are now handled.
	* cplus-tree.h (DECL_UNDEFINED_FRIENDS): Moved out of DECL_CONTEXT
	slot of TYPE_DECLs.  DECL_CONTEXT of typename is now the enclosing
	type for nested types.
	(DECL_NESTED_TYPENAME): An identifier pointer that makes the name of
	the type unique for the compilation.
	(IDENTIFIER_*): When initializing, call `perm_calloc', not
	permalloc, since non-zero values actually mean something,
	and we don't guarantee to initialize everything in one go.
	* tree.c (perm_calloc): New function.
	* cplus-typeck.c (default_conversion): Don't defaultly convert a
	naked METHOD_REF such that it becomes a virtual function table
	index.	Only let this happen if user requests it with `&'.

	* Makefile.in: Handle new source file cplus-template.c.

Mon Jan	 7 15:03:53 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (process_init_constructor): Error if values
	provided for an array of empty elements.

	* out-i386.c (fp_top_dead_p1): Follow jump only if optimizing.
	(fp_call_internal): Discard result if unused.  Use fp_top_dead_p1.

	* cse.c (cse_insn): In special case for (set REG0 REG1),
	change any REG_EQUIV notes to REG_EQUAL.

	* tm-sun386i.h (PCC_BITFIELD_TYPE_MATTERS): Define it.

	* tm-att386.h (ASM_OUTPUT_LOCAL): Change back to data section.

	* genrecog.c (write_tree_1): Typo in printf string.

	* flow.c (libcall_dead_p): New arguments NOTE and INSN.
	Now test that the hard return reg in the call is dead.
	Callers changed.

Mon Jan	 7 12:27:07 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* recog.c (cancel_changes): Cancel changes in opposite order we made
	them.

	* integrate.c (subst_constants): Only commute operands if op0 is const.

	* rtl.def (INLINE_HEADER): Add new integer field.
	* rtl.h (POPS_ARGS): New macro for place to save
	current_function_pops_args.
	(FUNCTION_FLAG_POPS_ARGS): Deleted; no longer a single bit.
	* emit-rtl.c (gen_inline_header_rtx): Add new arg for "pops args".
	* integrate.c (initialize_for_inline, output_inline_function):
	Correctly save and restore current_function_pops_args.

Sun Jan	 6 14:10:44 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* rtl.h (ASM_OPERANDS_INPUT_LENGTH): New macro.
	* reload1.c (eliminate_regs): Use ASM_OPERANDS_... macros.
	* recog.c (asm_noperands, decode_asm_operands): Likewise.

	* rtl.def (IF_THEN_ELSE): Set class to '3'.

	* cse.c (simplify_{unary,binary,ternary}_operation): New functions,
	from fold_rtx.
	(fold_rtx): Call these function to do the bulk of the work.
	Use GET_RTX_CLASS to find commutative and comparison operations.
	Swap folded_arg[01] when commuting operands.
	* rtl.h: Define new functions.
	* integrate.c (try_constants): Replace constant folding code with
	calls to new functions above.
	In commutative operations, put constants last.
	
	* genemit.c (struct clobber_pat): New data structure.
	(gen_insn): If pattern ends with a group of CLOBBERs of hard
	registers, store this information in a struct clobber_pat.
	(output_add_clobbers): New function.
	(main): Call it to write code to add CLOBBERs.
	* genrecog.c (struct decision): Add new field num_clobbers_to_add.
	(make_insn_sequence): If pattern ends with a group of CLOBBERs,
	set up to recognize it without the CLOBBERs but to indicate the
	number of CLOBBERs omitted.
	(add_to_sequence): Initialize num_clobbers_to_add.
	Remove unnecessary conditionalization on STORE_FLAG_VALUE.
	(break_out_subroutines, write_subroutine, write_tree): Remove
	RETURN_PREFIX parameter; TYPE is sufficient.
	(write_subroutine): Add extra parameter for recog_* functions.
	(write_tree_1): Pass TYPE instead of string for return.
	Write out code to return number of CLOBBERs needed.
	(write_tree): Add new parameter to recog_*.
	(main): Add new parameter to recog.
	Don't pass return string to break_out_subroutines and write_tree.
	* recog.c (recog_memoized): Pass extra (0) parameter to recog.
	* combine.c (recog_for_combine): New function.
	(try_combine, simplify_and_cc0, try_distrib): Use it instead of recog.
	(reg_dead_at_p, reg_dead_at_p_1): New functions.

	* flow.c (mark_set_1): Count in reg_n_sets when a part of a register
	is modified.
	Update SIGNIFICANT correctly when subreg_p and multiple hard regs.
	Compute reg_n_sets for hard registers.

Sun Jan	 6 13:41:49 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* function.c (locate_and_pad_parm): Do REG_PARM_STACK_SPACE just once.

	* Changes by wilson@cygnus.com.
	* calls.c (expand_call): Test value of REG_PARM_STACK_SPACE instead
	of assuming that it will always be greater than zero.
	* function.c (assign_parms): Same as above.  Also, correct
	calculation of STACK_BYTES.

	* reload1.c (reload_reg_free_p): Old input reload blocks input_addr.

Sat Jan	 5 18:32:15 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (mostlyclean): New name for old `clean'.
	(clean): Deletes gnulib also.
	(cleanconfig): Need not delete gnulib here.

	* reload.c (push_reload): Don't use dying reg unless operand fits.

	* c-parse.y (yylex): Hex and octal constants now traditionally signed.

Sat Jan	 5 18:03:50 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* regclass.c (regclass): reg_n_sets is one per set.  It does not
	take into account loop_depth.  So don't adjust by loop_depth here.

Fri Jan	 4 13:18:07 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* function.c (put_var_into_stack): Don't mung virtual reg.
	(fix_lexical_addr): Accept the virtual arg pointer.
	* function.h (struct var_refs_queue): New structure.
	(struct function): Use that for the pending var refs queue.

	* print-tree.c (print_node): Nicer format for rtl of decls.

	* c-decl.c (push_c_function_context, pop_c_function_context):
	No need to deal with current_function_decl.

	* c-parse.y (nested_function): Delete spurious nonterminal.

Fri Jan	 4 12:13:14 1991  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (modify_vtable_entries): In case we are modifying
	the main vtable, start with the vtable that comes from the immediate
	baseclass, not the most base class.  This is needed because later
	fixups (for non-first and virtual baseclasses) do not fix up this
	case.

Fri Jan	 4 06:55:00 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (expand_binop): Fix typo in testing for SImode operation.
	Generalize to apply in more cases by calling emit_store_flag rather
	than doing the gen_sltu explicitly.

	* expmed.c (store_bit_field, extract_bit_field): When insv/extv
	don't allow MEM and we need to load the field into a register, don't
	use the mode of OP0 if it is wider than the mode to be used for
	insv/extv operating on a register.

	* expmed.c (emit_stor_flag): Try to convert some comparisons with
	1 and -1 to comparisons with zero.
	Explicitly test sign bit of STORE_FLAG_VALUE rather than testing it
	for being less than zero.

	* cse.c (find_comparison_args): Don't compute STORE_FLAG_VALUE < 0;
	instead, test the relevant sign bit.
	Use GET_RTX_CLASS instead of comparison_code_p.
	* loop.c (get_condition): Likewise.

	* recog.c (validate_change): Eliminate duplicate code by always
	saving the change.  If in_group == 0, call apply_change_group.
	(apply_change_group): If recog_memoized fails, see if we have a
	CLOBBER at the end.  Use validate_change to replace the pattern
	with one without the CLOBBER if so; later we will verify that change.

	* tree.c (stabilize_reference_1): Now static; also, define as forward
	reference at start of file.

	* rtl.def: Add new field in DEF_RTL_EXPR macro to give the "class"
	of the rtx operation.
	* rtl.h: DEF_RTL_EXPR has one additional arg.
	(rtx_class, GET_RTX_CLASS): New var and macro.
	* rtl.c: DEF_RTL_EXPR has one additional arg.
	(rtx_class): Initialize table.

	* reload.c (push_reload): If an input operand contains a dead
	register used nowhere else in the insn, try to use it as a reload reg.
	* reload1.c (reload_as_needed): If cancelling optional reload,
	clear reload_reg_rtx.
	(choose_reload_regs): If we can find reload value lying around,
	use that register unless choice made by find_reloads would also save
	an insn (the new choice added above won't).

	* genoutput.c: Update comments on things written.  Change order to
	agree with the order written.
	(output_epilogue): Remove extraneous tests.

Thu Jan	 3 13:32:54 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* rtl.c (read_rtx): Cast NULL vector.

	* By Jim Wilson.
	* tree.c (stabilize_reference): Modified to call stabilize_reference_1
	instead of save_expr.
	(stabilize_reference_1): New function.	For arithmetic operator trees,
	recurse on the subtrees.  Otherwise, put a SAVE_EXPR around the
	tree if it has side-effects.  

Thu Jan	 3 12:37:56 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload1.c (choose_reload_regs): Only set reload_when_needed to
	RELOAD_FOR_OUTPUT or RELOAD_FOR_INPUT when it used to be RELOAD_OTHER.

Wed Jan	 2 18:28:23 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* emit-rtl.c (init_emit_once): Fix typo setting constm1_rtx.

Wed Jan	 2 07:53:04 1991  Michael Tiemann  (tiemann at cygnus.com)

	* sparc.md (fix_truncdfsi2 recognizer): xoperands must have 3
	elements because `output_fp_move_double' can write to operands[2].

Wed Jan	 2 17:16:20 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* calls.c (emit_call_1): If we have call_pop, use it if we have
	no stack arguments.

	* out-vax.c (relational_op): Deleted, redundant.
	* vax.md (branch): Use comparison_operator (in recog.c) instead of
	relational_op.
	* tm-vax.h (PRINT_OPERAND_PUNCT_VALID_P): "C" is not punctuation.

	* reload1.c (reload_as_needed, forget_old_reloads_1): Don't clear
	reg_has_output_reload and reg_is_output_reload for each insn, just
	ones that need reload.	Instead, interpret each entry as zero if
	n_reloads == 0.

Wed Jan	 2 15:52:13 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* optabs.c (expand_binop): Fix typos.

	* toplev.c (rest_of_compilation): Clear cse_not_expected after loop.
	* rtl.h (cse_not_expected): Declare here.
	* expr.h: Not here.

Tue Jan	 1 21:55:11 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* emit-rtl.c (constm1_rtx): New standard constant.
	(gen_rtx): Use it when appropriate.
	(init_emit_once): Initialize it.

	* out-vax.c (split_quadword_operands): New function.
	(relational_op): Likewise.
	* vax.md (extendsidi2, adddi3, subdi3): New patterns.
	(movdi): Use clrq when appropriate.
	(movaq recognizer): New pattern.

	* recog.h (OUT_FCN): New macro.
	* genoutput.c: Include recog.h in output file.	No
	longer define "const", since that happens in recog.h.

	* tm-vax.h (PRINT_OPERAND): Add 'C' to print a reversed condition.
	* out-vax.c (rev_cond_name): Return its name.
	* vax.md (unnamed patterns): Combine several reversed branch patterns
	into one, using match_operator with relational_op and "%C".

	* optabs.c (expand_binop): Handle multi-word addition and subtraction.

	* Makefile.in (install-gnulib): Use RANLIB_TEST.  Use libg_dir.
	(libg_dir): New customization variable.

	* assert.h (__assert): Use standard GNU format for error messages.

Tue Jan	 1 21:25:00 1991  Richard Kenner  (kenner at vlsi1)

	* reload1.c (eliminate_regs, case PLUS): Always move constant to the
	outside of a PLUS expression.

Tue Jan	 1 11:45:22 1991  Richard Stallman  (rms at mole.ai.mit.edu)

	* ecoff-cmp: Specify `c' in option to tail.

	* stor-layout.c (layout_record, layout_union, layout_type):
	Use ROUND_TYPE_ALIGN and ROUND_TYPE_SIZE to compute
	alignment and size of records, unions and arrays.
	* ROUND_TYPE_ALIGN: New.  Args are type, spec'd align, other min align.
	* ROUND_TYPE_SIZE: New.	 Args are type, size of contents, align.

	* reload1.c (emit_reload_insns) [PRESERVE_DEATH_INFO_REGNO_P]:
	Scan output and output-address reloads together.
	Check for matching hard reg.

	* config.gcc: Set proper shell vars in big dispatch.  Not `machine'.
	(i386-isc): New alternative.

Tue Jan	 1 08:29:49 1991  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (update_block): Turn bb_tick update back on; it is needed,
	after all.

Mon Dec 31 18:12:07 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genattrtab.c (write_test_expr, case EQ_ATTR): Use correct expression
	number for attribute value.

	* cse.c (cse_insn): Use single_set when looking for an insn that sets
	cc0 followed by one that no longer does.

	* recog.c (find_single_use): If the next insn after one that sets
	cc0 is not an INSN or JUMP_INSN, return 0; don't blow up on a NOTE.

	* emit-rtl.c (emit_insn_before, emit_insn_after, emit_insn): Return
	something sensible if a SEQUENCE of length zero was passed.
	We no longer make a SEQUENCE with XVEC == 0, so don't test for it.

	* reload1.c (emit_reload_insns): Handle gen_move_insn returning
	no insns (occurs on RT for dummy registers).
	
	* rtl.h (reg_cc0_rtx, find_cc): No longer needed.
	* emit-rtl.c: Likewise.
	* conditions.h: Entire file is #ifdef HAVE_cc0.
	* final.c (CC_STATUS_INIT): Make a null default #ifndef HAVE_cc0.
	(cc_status): No longer exists #ifndef HAVE_cc0.
	(final_scan_insn): Do CC processing only #ifdef HAVE_cc0.
	(alter_cond): Only exists #ifdef HAVE_cc0.
	* genemit.c (gen_exp): No longer have CC0_REGNUM or reg_cc0_rtx.
	* genoutput.c (main): Include insn-config.h before conditions.h.
	* reorg.c: Likewise.
	* jump.c (rtx_equal_for_thread_p): Remove reference to CC0_REGNUM;
	we'll have to do this optimization some other way later.
	* tm-a29k.h (NOTICE_UPDATE_CC): Deleted.

Mon Dec 31 14:44:31 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* reload.h (enum_reload_when_needed):
	New alternatives RELOAD_FOR_OUTPUT, RELOAD_FOR_INPUT.
	* reload1.c (choose_reload_regs): Use those when appropriate.
	(mark_reload_reg_in_use): Record this usage specially.
	(reload_reg_free_p, reload_reg_free_before_p): Handle this usage.
	(reload_reg_reaches_end_p): Likewise.
	(emit_reload_insns): Treat RELOAD_FOR_INPUT like RELOAD_OTHER.

	* i386.md (push for SFmode): Operand of fst was missing.

Mon Dec 31 08:50:17 1990  Craig Burley	(burley at pogo.ai.mit.edu)

	* stor-layout.c (layout_type): For ARRAY_TYPE case, don't try
	and compute a size if there is no TYPE_MAX_VALUE for the index.
	* tree.c, tree.h (build_index_2_type): New function, like
	build_index_type except it accepts the low value as an arg instead
	of assuming 0.

Mon Dec 31 08:09:10 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-typeck.c (c_expand_return): Handle case when we try
	to return a void value (such as a void function call) in a
	function returning void, and there are cleanups to run.

Sun Dec 30 21:08:32 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tm-a29k.h (TARGET_VERSION): Can't use target_flags since we can
	be called from gcc.c.

	* tm-rs6000.h (REG_ALLOC_ORDER): Put r12 after r13; it might be 
	holding a DImode value and so might be very expensive (we won't
	worry about TImode).

	* rs6000.md (subtract patterns): Fix incorrect operand number in %I.
	(movti): Disallow indexed memory operands.

	* out-rs6000.c (print_operand, case 'm'): Fix typo.
	(includes_rshift_p): Correctly compute mask.

	* out-a29k.c (output_operand): Add missing parentheses.
	(print_operand): Replace if/then/else structure with switch statement.

	* a29k.md (beq, bne): Try to use NE test whenever possible; it
	will produce better code if we have bit-tests.

Sun Dec 30 12:02:03 1990  Michael Tiemann  (tiemann at cygnus.com)

	* tm-sparc.h (PRINT_OPERAND): Put 'R' case before REG so that it
	takes when 'R' is passed in as CODE.  Also, handle 'B' letter.

	* sparc.md: (pattern for converting DFmode to SImode): Second
	argument to `output_asm_insn' should be `operands', not zero.
	(tablejump): The jump insn is "jmp", not "jump".
	(gen_fixtruncdfsi2): operands[2] should get the pseudo, not
	operands[3] (which is nonexistent).
	(call): Fix typo which had %o7 being emitted as %o.
	(various patterns): Fixed places where match_operand had the wrong
	operand number.

Sat Dec 29 17:27:00 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* sparc.md: cc_status no longer handles condition code updates.
	Instead, condition codes are explicitly set and used via
	hard register 0.  Special attributes specific to condition codes
	(such as whether conditional branches should test the integer or
	floating-point condition codes, or that the condition codes cannot
	be tested for a condition which would test the overflow bit) are
	handled by encoding the attribute in the mode for the condition
	code register.
	(type attributes): type "unary" insns have one input operand (1)
	and one output operand (0)
	type "binary" insns have two input operands (1,2) and one output (0)
	type "compare" insns have one or two input operands (0,1) and no output
	type "move" and type "arith" have been deleted.
	(prescan attribute): Deleted.  Machine description now puts
	floating-point zero in registers when needed.
	(use_cc attribute): Deleted.
	(fpcc define_delay): No longer depend on "use_cc" attribute.
	Also, fpcc delay characteristics hold for "fpcc" type insns.
	(cc attribute): Deleted.
	(cmpxx patterns): Now written as `define_expand's so we can stow
	away operands.	When the pattern that will use the results of the
	conditional test is emitted, it can use these operands to figure
	out the right way to emit the compare.
	(bcc patterns): Rewritten to emit comparison (based on stowed-away
	info) before emitting branch.
	(scc patterns): Handle all the cases with branch-free code.
	Added new pattern to recognize (x + (i == 0)).
	(movsi pattern recognizer): Split into two patterns so that e.g.
	"(set:SI (mem:SI ...) (const_int 5))" is never considered valid.
	Instead this has to be a two-insn sequence.
	(mov{hq}i pattern recognizers): Ditto.
	(movstrsi): Force operands[2] out of memory if it was in memory.
	({zero,sign}_extendXY): Now written as `define_expand's instead of
	`define_insn's for more accurate machine modeling.
	Added new pattern to optimize bit-field compares.
	(floatsisf2 patterns): Delete redundant setting of "in_call_delay"
	attribute.
	(fix_trunc{sf,df}si2 pattern): Use clobberable register in which
	the conversion can take place.	Used to use %f30,%f31.
	({add,sub}di3 pattern): Put explicit clobber of (reg 0) in the
	pattern.
	(negdi2 pattern): Ditto.
	Added new patterns to handle merging of addition/subtraction with
	condition code testing (with (reg:CC_NOOV 0)).
	({and,ior,xor}cbsi3 pattern): Obsolete.	 Deleted.
	Added patterns to represent setting of condition codes in addition
	to performing logical operations.
	({neg,abs}df2 pattern): Use `R' print letter to overcome the need
	to use a C action instead of a simple template.
	(ash{l,r}{hi,qi}3): Define patterns for shifts on sub-SImode
	operands.
	(jump pattern): Use `*' print code to obviate the need for a C
	action when a template can do.
	(tablejump pattern): Ditto, with `^' code as well.
	Deleted `define_split's that were used to handle mem-mem moves in
	the case of PIC generation.  Since all move insns are emitted and
	maintained as SPARC-valid insns, these should no longer be needed.
	(various patterns): (HI ...) is spelled (HI:SI ...).  Also, use
	`gen_lowpart' instead of building subregs directly.
	New `define_split's were added to split scc insns into simpler
	components which have single-insn templates.
	Fixed a return peephole when returning a SFmode value (it was
	missing the "ret"!).
	Lots of complicated peepholes that brought cc testing and
	arithmetic operations together were deleted.  This is because the
	combiner should now handle all these cases.

	* out-sparc.c (sparc_compare_op{0,1}): New global variables.
	Used to hold the operand(s) to compare insns in lieu of emitting a
	compare.
	(reg_or_cc0_operand): Deleted.
	(normal_comp_operator): New function.
	(cc_arithop): Now returns 0 for PLUS and MINUS.
	(cc_arithopn): Now returns 0 for XOR.
	(gen_compare_reg): New function.
	(sparc_address_cost): Simplified because it turns out it doesn't
	matter what is returned for illegitimate addresses.
	(hard_regno_mode_ok): Updated to use these new #defines.
	(C_MODES): New #define, for condition code modes.
	(S_MODES): Ditto, for single-word (and smaller) quantities.
	(D_MODES): Ditto, for double-word (and smaller) quantities.
	(T_MODES): Ditto, for tetra-word (and smaller) quantities.
	(SF_MODES): Ditto, for SFmode quantities.
	(DF_MODES): Ditto, for SF_MODE, DFmode, SCmode, etc.
	(TF_MODES): Ditto, for DF_MODE, TFmode, DCmode, etc.
	(output_floatsi{df,sf}2): Greatly simplified.
	(output_pic_sequence,output_pic_sequence_2,fp_zero_hook,
	output_tail_call): Turned off.

	* tm-sparc.h (ASM_SPEC): Pass `-k' to assembler if compiling PIC.
	(WORDS_BIG_ENDIAN): Define as 1, not 0.
	(FIXED_REGISTERS): %f30 and %f31 are now allocatable.
	(REG_CC0_RTX, CC0_REGNUM): Deleted.
	(EXTRA_CC_MODES): New modes CC_NOOVmode and CCFPmode.  The former
	is for when the overflow bit it not to be tested; the latter is
	for when the condition is sitting in the floating point unit.
	(SELECT_CC_MODE): New macro.
	(FINAL_PRESCAN_INSN): Deleted.
	(CC_* macros): Deleted.
	(PRINT_OPERAND_PUNCT_VALID_P): New valid chars are '#' (for
	whether to print a noop or not), '*' (for whether to print a ",a"
	or not), and '^' (for whether to emit code for PIC branch or not).
	(PRINT_OPERAND{,_ADDRESS}): Replace calls to fprintf by calls to
	fputs where that is convenient.

	* expr.h, cplus-dbxout.c: #ifdef BYTES_BIG_ENDIAN should be #if.

	* reload.c (struct replacement): Add new field subreg_loc.
	(push_reload): If reloading SUBREG_REG of a paradoxical SUBREG,
	store the location of the SUBREG in subreg_loc in REPLACEMENTS.
	(push_replacement): Initialize subreg_loc.
	(subst_reloads): Don't produce nested SUBREGs; use subreg_loc.

	* regclass.c (regclass): Handle (set X (op CONST Y)) properly when
	the modes of operands 0 and 1 are different.

Sat Dec 29 16:37:10 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (macroexpand): Test traditional when computing expansion size.

	* toplev.c (compile_file):
	If profiling, leave some space after `gcc_compiled.'.
	* tm-m88k.h, tm-sparc.h, tm-sun386i.h (ASM_IDENTIFY_GCC): Deleted.

	* reload1.c (emit_reload_insns): Set reg_reloaded_contents, etc, here.
	(choose_reload_regs): Not here--except for reg_has_output_reload.

	* c-parse.y (nested_function, notype_nested_function):
	Use compstmt for body, not compstmt_or_error.

	* Makefile.in (install-headers): Use basename on 
	* stupid.c (stupid_mark_refs): Really do mark clobbered hardreg
	live before the insn.

Fri Dec 28 05:44:10 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (subreg_lowpart_p): Use correct modes in
	WORDS_BIG_ENDIAN case.

	* reload.c (combine_reloads): Don't try to reference
	insn_operand_constraint for an ASM insn.
	Fix typo in testing for modified operand.

Thu Dec 27 19:02:54 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (cse_insn): Ensure we invalidate SET_DEST if SET_SRC is a CALL.

	* cse.c (fold_rtx): Save mode of original first operand in case this
	is becoming (sign_extend (const_int)).

Thu Dec 27 16:15:56 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md, out-m88k.c (CCmode): Use it.
	(emit_bcnd): Avoid loosing when bcnd is changed into sxx.
	(hi16/lo16): Don't use these to form 16-bit immediate values.
	Introduce and use %X/%x.
	(length attribute): Make better use of defaults.

	* tm-v88r32.h (LIB_SPEC): Goes here rather than in xm-v88r32.h.
	* xm-*88*.h: Clean these up.  Most differences go away by relying
	on the 88open standards.

Thu Dec 27 12:48:26 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expmed.c (store_bit_field, extract_bit_field):
	Change #ifdef to #if, testing BYTES_BIG_ENDIAN.

Thu Dec 27 07:36:45 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (find_end_label): Ignore USE and CLOBBERs when looking for
	label at end of function.

Wed Dec 26 22:35:59 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (sequence_element_free_list, sequence_result): New vars.
	(restore_emit_status, init_emit): Initialize them.
	(emit_insn_before, emit_insn_after, emit_insn): Save SEQUENCE in
	sequence_result.
	Make these three routines more alike in structure.
	(start_sequence, end_sequence, push_to_sequence): Cache INSN_LIST pairs
	in sequence_element_free_list rather than making new ones.
	(start_sequence): No longer return unused rtx; only one caller
	needed to be changed (in function.c, see below).
	(end_sequence): No longer has argument.
	(gen_sequence): Try obtaining a pre-built SEQUENCE from
	sequence_result; no longer special-case length 0 vectors.
	* function.c (fixup_memory_subreg): start_sequence no longer
	returns an rtx and end_sequence no longer has an argument.
	* rtl.h (start_sequence): Now void.
	(push_to_sequence, end_sequence): Define.

Wed Dec 26 13:19:40 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gnulib.c: No longer #undef perform_* if not __GNUC__.
	(perform_*): Define each if not already def.

Tue Dec 25 17:31:17 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (get_condition): Rework scan that looks for sets of things
	being compared to allow intervening insns; check to ensure that
	they don't set something that we need.	Return 0 if the best we can
	do is find something whose mode is in class MODE_CC.

	* calls.c (emit_call_1): RETURN_POPS_ARGS now gets the length of
	arguments on the stack and returns the number of bytes popped by the
	called function.
	* output.h (current_function_pops_args): Change description.
	* function.c (current_function_pops_args): Likewise.
	(assign_parms): Initialize current_function_pops_args here.
	(init_function_start): Not here.
	* tm-*.h (RETURN_POPS_ARGS): Reflect new meaning.
	(FUNCTION_EPILOGUE): Use new meaning of current_function_pops_args.
	* out-i386.c (function_epilogue): Likewise.

Tue Dec 25 15:52:06 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gnulib.c (all functions): Support a hook for redefining contents.
	These hooks are called perform_addsi3, and so on.
	They are used only if compiling with GCC.

	* rtlanal.c (single_set): Moved from loop.c.

	* cse.c (fold_rtx): For a MEM, fold address when looking for constant.
	(cse_insn): When fetch a constant label from a dispatch,
	substitute into following tablejump.
	(find_best_addr): Clear do_not_record before hashing.
	* jump.c (mark_jump_label): Don't record table-labels on non-jumps.

	* m68k.md (casesi_2 recognizer): Use register_operand as predicate.

Mon Dec 24 17:54:42 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cse.c (fold_rtx): Handle ADDR_DIFF_VEC like ADDR_VEC,
	when the index in it is constant.

	* c-decl.c (start_function): Handle new option -Wmissing_prototypes.
	(c_decode_option): Likewise.

Mon Dec 24 07:21:06 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* rtl.h (reload_completed, reload_in_progress): Now defined here.
	* output.h (reload_completed): No longer defined here.
	* emit-rtl.c, optabs.c, recog.c, sched.c, toplev.c, out-a29k.c:
	Don't define reload_in_progress or reload_completed.
	* a29k.md, romp.md, rs6000.md: Likewise.

	* machmode.def: Terminate GET_MODE_WIDER_MODE chains with VOIDmode,
	not zero.
	(CCmode): New mode.
	* machmode.h (enum machine_mode): Includes modes in EXTRA_CC_MODES,
	if defined.
	(enum mode_class): New class MODE_CC; delete MODE_FUNCTION.
	* rtl.c (mode_name): Define to be known size; add names for extra
	CC modes, if present.
	(mode_class, mode_size, mode_unit_size, mode_wider_mode): Define
	to be known size.
	(init_rtl): Initialize extra CC modes.

Sat Dec 22 19:33:54 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-i386v.h (MAXPATHLEN): Define if not already defined.
	* tm-i386vgas.h: New file.

	* out-i386.c (print_operand_address): Handle scaled indexing.

Sat Dec 22 11:15:03 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md, out-m88k.c, tm-m88k.h (swapped cmpsi): Don't rely on
	NOTICE_UPDATE_CC doing the job.	 Instead, compliment the swapped
	compare.  Also, make COMPARE SImode.
	(and/cmpsi/sxx/neg): Add patterns to do this in one instruction.
	Change sign_extend/sxx to neg/sxx for other cases.
	(iorsi3/xorsi3): Use alternatives and explicit patterns.
	(casesi): Make the constant the second operand to cmpsi.
	(output_and): Must compliment value to use the clr instruction.
	(output_reg_adjust): Simplify the interface and use TEMP_REGNUM.
	(TARGET_SWITCHES): Eliminate needless no-* options.

Fri Dec 21 05:46:34 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* recog.c (find_single_use{,_1}): New functions.
	* rtl.h (find_single_use): Declare it.

Thu Dec 20 21:27:36 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* optabs.c (init_optabs): Add __ to names of floating compare fcns.

Thu Dec 20 18:21:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_builtin, case BUILTIN_FFS): Get mode for arg from
	tree, not rtx, in case arg was CONST_INT.

Thu Dec 20 17:31:46 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (init_decl_processing): Don't define `ffs'.

Wed Dec 19 16:59:38 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gcc.c (main): Handle if SIGPIPE not defined.

	* cccp.c (xmalloc, xrealloc, xcalloc): Don't declare malloc or realloc.

Wed Dec 19 06:50:17 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (gen_lowpart_for_combine): Avoid making a nested SUBREG
	when we are being passed a paradoxical SUBREG of MEM.

	* cse.c (new_basic_block): Compilations spend about 5% of their time
	in this function so replace loop initializing qty_{first,last}_reg
	with copy from a larger consec_ints.  Only loop over extra entries.
	(cse_main): Allocate consec_ints to be default size of max_qty large.

	* reorg.c (get_branch_condition): Fix typos when reversing condition.
	(condition_dominates_p): Fix typo in comparison.
	(redundant_insn_p): This function was taking about 4% of the
	compilation time.  Rework so it doesn't split, only looks at resource
	usage if it finds a matching insn (since it usually won't), and
	improve code that looks at resources.  Now takes about 0.5% of
	compilation time.
	(fill_simple_delay_slots): Always call mark_target_live_regs with an
	active insn; currently being called with a CODE_LABEL.

Tue Dec 18 14:08:11 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* out-sparc.c: Fix uninitiated comment.

	* final.c (end_final): Call strip_off_ending to remove the file
	name suffix.
	(final_start_function): Execute SDB_DEBUGGING_INFO code only if
	generating SDB symbol info.

	* Makefile.in (cccp.o): Depend on gcc.

	* tm-sparc.h, xm-sparc.h: Make this machine big-endian.

	* expr.c (expand_builtin): Pass correct arguments to gen_cmpstrsi4.

	* recog.c (nonmemory_operand): Reject reg whose class is NO_REGS.

	* c-decl.c (finish_struct, grokdeclarator):
	Strip NON_LVALUE_EXPR more than once.

	* combine.c (combine_instructions): Check that a jump insn uses CC0
	before trying to combine it with an insn that sets CC0.

	* cplus-decl.c, cplus-search.c, gcc.c, objc-actions.c, rtl.c, stmt.c,
	symout.c, toplev.c: Use xmalloc instead of malloc.

	* cccp.c (do_include): Check for truncation of precompiled file name.

Mon Dec 17 16:53:46 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (build_binary_op_nodefault, build_conditional_expr):
	Fix indentation.
	* reload1.c (choose_reload_regs): Fix indentation.
	(gen_input_reload): Fix typo in comment.

	* reload.c (find_reloads): Call abort when the last operand is
	marked commutative, to make it easier to find this error.

	* rtlanal.c (refers_to_regno_p): Don't crash if X is 0.

Mon Dec 17 15:29:34 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (combine_regs): No need to see if suggested hard reg
	is suitable; if it isn't, it won't end up being used.  Existing tests
	were too conservative.

	* jump.c (delete_jump): When searching for the SET of the condition
	codes for a jump insn, give up if we hit a SEQUENCE.

Mon Dec 17 02:14:06 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (c_size_in_bytes): New function.
	(pointer_int_sum, pointer_diff): Use that.
	(pointer_diff): Handle warn_pointer_arith.

Sun Dec 16 22:27:11 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (start_decl): Ignore with error any init for a parm.
	(finish_decl): Likewise.

Sun Dec 16 01:02:57 1990  Michael Tiemann  (tiemann at cygnus.com)

	* jump.c (rtx_equal_for_thread_p): Treat the special CC register as
	equivalent for the two threads we are looking at.

	* combine.c (try_combine): Fix typo in loop over I1 with PARALLEL
	body.  Also, don't test HARD_REGNO_MODE_OK for hard registers we are
	thinking about combining.  This screws up using registers to
	represent the condition codes, and probably doesn't save anything in
	the general case.

	* expmed.c (expand_and): Comment says that result is always stored
	in target, so the code now does this.

Sat Dec 15 18:09:46 1990  Michael Tiemann  (tiemann at cygnus.com)

	* loop.c (get_condition): Try a little harder to find the setter of
	the register used in a conditional test.  On the SPARC it is vital
	to either find the setter of the register used for the condition
	codes or for this function to return 0.	 Also, have test for
	non-NULL, matching `set' govern both normal and reversed cases of
	comparisons.

	* jump.c (jump_optimize): When moving USE insns from before jumps to
	after BARRIERs, put the label for the redirected jump after the
	BARRIER instead of just before the PREV_INSN of the original target.
	This gets around problems when there are NOTEs between the BARRIER
	and the original target.
  
Sat Dec 15 10:16:29 1990  Michael Tiemann  (tiemann at cygnus.com)

	* sparc.md (cmpdf,cmpsf): No longer a define expand.  Now depends
	on fp zero being loaded into a register.
	(tstsi,tstdf,tstsf): Deleted.
	(seq,sne): Fail if we are not testing operands of integer mode.
	(movsi): Split recognizers into two parts.  The first handles
	[reg,mem,zero] <=> [reg,mem]; the second handles [reg,const] =>
	[reg].
	(adddf,subdf,negdf): Simplify output routines using 'R' as an
	output letter.
	(tail_call): Turn this off.  It is never used, and it depends on
	routines which are about to become broken.
	(various places): Add USE_CC attribute where appropriate.
	(various places): Change (use (reg:SI 0)) to (clobber (reg:SI 0))
	and delete CC_CLOBBER attribute from the pattern.
	* out-sparc.c (move_operand): No longer recognize certain
	immediates as a `move_operand'.
	(move_reg_or_immed_operand): New recognizer for immediates no
	longer recognized by `move_operand'.
	(output_pic_sequence*): Turned off.
	(sparc_address_cost): Simplified, since the value returned is not
	used if the address is not legitimate.
	(emit_move_sequence): Use `gen_lowpart' instead of building
	SUBREGs explicitly.
	(make_f30_contain_zero): Deleted.
	(output_tail_call): Turned off.
	* tm-sparc.h (PRINT_OPERAND): Recognize 'R' code letter, which
	means print the name of REGNO (X)+1.  No longer recognizes the 'G'
	letter.
	(PRINT_OPERAND,PRINT_OPERAND_ADDRESS): Replace various calls to
	fprintf with calls to fputs or fputc.
	(FINAL_PRESCAN_INSN): No longer defined.

Sat Dec 15 14:37:51 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* recog.c (offsettable_address_p): Check validity in narrower modes.

Sat Dec 15 11:21:55 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* syms.h sdbout.c (T_VOID): Ensure that T_VOID is provided a
	default meaning if <syms.h> is used.

Fri Dec 14 14:39:10 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md (increment and test peephole): Updated so it would apply
	with the new method for doing cmpsi/bxx.
	* m88k.md (function units): Replace decode with alu and update
	accordingly.
	* out-m88k.c (emit_test): Add a mode parameter.
	* tm-m88k.h (GO_IF_LEGITIMATE_ADDRESS): Constrain how the arg
	pointer can be used.

Fri Dec 14 06:48:07 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (convert_move): Add missing argument to some recursive calls.

	* jump.c (invert_jump): Pass new label to recursive call.

	* expr.h (setcc_gen_code): Replaces setcc_gen_fctn; stores insn_code.
	(expand_and, emit_store_flag, label_rtx): Add definitions.
	(get_condition, compare_from_rtx): Likewise.
	* rtl.h	 (STORE_FLAG_VALUE): Provide a default value of 1.
	(reg_set_last): Add definition.
	(const_true_rtx): New variable.
	* cse.c: Remove defaulting of STORE_FLAG_VALUE from here.
	(const_true_rtx): Remove static version; now global.
	* emit-rtl.c (const_true_rtx): Define here.
	(gen_rtx): Return const_true_rtx for CONST_INT of STORE_FLAG_VALUE.
	(init_emit_once): Initialize const_true_rtx.
	* expmed.c (emit_store_flag): Rewritten.  Is passed the operands
	to compare in addition to the compare operation and emits both the
	comparison and the store-flag insn.
	Handles special-case of testing for A < 0 and A >= 0.
	If result is constant, just return it.
	Accepts an argument saying how to normalize the result and does
	appropriate normalization.
	Give preference to using the sign bit rather than the low-order bit.
	Allow sxx insns to fail.
	If don't have seq or sne insns, can sometimes do with abs.
	* expr.c (expand_expr, case COND_EXPR): For X ? A + 1 : A, only
	do store_flag if it is cheap.
	(do_jump): True comparisons return STORE_FLAG_VALUE, not 1.
	(compare_constants): Correctly handle unsigned comparisons.
	Return STORE_FLAG_VALUE, not 1, for true comparison.
	(compare_from_rtx): New name for compare1.
	Accept size and alignment, for BLKmode.
	No longer statuc.
	(compare, compare_from_rtx): No need to pass forward and reverse codes;
	can trivially derive the reverse code from the forward one.
	All callers changed.
	If one operand is constant, make it the second one.
	(compare): Let compare1 do most of the work.
	(do_store_flag): Rewritten, now lets emit_store_flag do most of
	the work.
	Handles the special-case of comparing a single bit with zero.,
	Add additional argument ONLY_CHEAP; if non-zero, fail if it looks like
	this will be an expensive operation; all callers changed.
	If it looks like it will be possible to do a store-flag operation,
	call emit_store_flag; if it can't do it, emit as assignments and a
	jump.  If it doesn't look possible to do a store-flag operation, return
	zero before expanding anything.
	* final.c: (final_scan_insn): Don't check STORE_FLAG_VALUE; if the
	insn doesn't exist, we won't try to change it.
	* genemit.c (gen_exp): Use const_true_rtx when appropriate.
	* genrecog.c (add_to_sequence): Likewise.
	(try_merge_1): Two nodes aren't identical if they are to test
	different modes or if they have different values of EXACT.
	* integrate.c: Don't supply a default value for STORE_FLAG_VALUE here.
	* jump.c: Now includes expr.h (for emit_store_flag and get_condition).
	(jump_optimize): Split optimization that made store-flag insn
	into three separate optimizations, the first two of which are useful
	even in the absence of store-flag operations.
	(can_reverse_comparison): Set and use of cc0 must be immediately
	adjacent.
	(mark_jump_label): Abort if LABEL_REF codesn't contain a CODE_LABEL.
	Consider two labels adjacent after reload if separated by just USE or
	CLOBBER insns.
	* loop.c: Now includes real.h.
	(get_condition_for_loop): New function.	 All callers of get_condition
	in this file now call this function.
	(strength_reduce): no_labels_between_p now skips FROM.
	(get_condition): No longer static.
	Refine cases when we can't reverse a comparison operation.
	* optabs.c (init_optabs): Initialize and define setcc_gen_code
	instead of setcc_gen_fctn.
	* rtlanal.c (no_labels_between_p): Skip FROM, like as ..._between_...
	functions do.
	(no_labels_between): Deleted.
	(reg_set_last, reg_set_last_1): New functions.
	* Makefile.in (jump.o): Now include expr.h.
	(loop.o): Now includes real.h.

	* c-tree.h (int_ftype_cptr_cptr_sizet, ptr_ftype_ptr_cptr_sizet):
	New names.

	* alliant.md, i386.md, m68k.md, m88k.md, ns32k.md, sparc.md: Add mode
	to comparison operators (EQ, NE, etc.) to agree with the mode of the
	destination.
	* out-m88k.c (emit_test): Likewise.

Fri Dec 14 00:12:46 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (finish_struct): Strip NON_LVALUE_EXPR from field width.

Thu Dec 13 13:10:47 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cplus-init.c (expand_vec_init): Add missing arg to
	expand_exit_loop_if_false.

	* config.gcc (tron): Alias for gmicro.

	* c-decl.c (int_ftype_cptr_cptr_sizet): Variable renamed.
	(ptr_ftype_ptr_cptr_sizet): Likewise.

	* gcc.c (default_compilers): Handle .C.

	* Makefile.in (enquire.o): Add -I. so can find stddef.h.
	(install-cross): Install cc1obj like the others.

	* Makefile.in (gnulib.target): Renamed from gnulib.
	(gnulib): Renamed from tmpgnulib.  Rename that file in this rule.
	Also delete stamp-gnulib2 here.
	(gnulib.portable, gnulib.convert): Input now is named gnulib.
	(GNULIB_TARGET, GNULIB2_TARGET): Define these vars (already in use).
	(gnulib2.target): Renamed from gnulib2.
	(gnulib2): New rule, alias for gnulib2.target.

	* local-alloc.c (local_alloc): Cast an enum used as index.
	* optabs.c (emit_indirect_jump): Likewise.
	* reload1.c (choose_reload_regs): Likewise.

Thu Dec 13 12:38:31 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expmed.c (store_bit_field): Verify that operand 1 of movstrict
	satisfies its predicate.

Wed Dec 12 17:26:21 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gvarargs.h: Avoid duplicate inclusion using _VARARGS_H.

Wed Dec 12 14:11:30 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed condition
	code register.	As a temporary measure, NOTICE_UPDATE_CC is used
	to track swapped cmpsi cases.

	* m88k.md (shift patterns): Deal with TARGET_*_LARGE_SHIFT
	uniformly with define_expand.  Make gen_lshlsi3 generate ASHIFT
	and eliminate the optimization patterns using ASHIFT.  Eliminate
	other optimization patterns that will be handled by combine.

Tue Dec 11 22:13:48 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expr.c (convert_move): With slt, handle dest that's invalid.

	* stmt.c, tree.h (stmt_nesting):
	Typedef deleted; use `struct nesting *'.
	* stmt.c (expand_start_cond): If exitable, make an exit label.

Tue Dec 11 21:28:56 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (subst, case SUBREG): Update TO for earlier
	changes so we can always detect (subreg (mem ...)).

Tue Dec 11 10:56:53 1990  Craig Burley	(burley at pogo.ai.mit.edu)

	* stmt.c (expand_start_loop{,_continue_elsewhere}): Return pointer
	to nesting structure (new type stmt_nesting).
	(expand_exit_loop{,_if_false},expand_continue_loop): Accept pointer
	to nesting structure, substitute loop_stack if 0 (same behavior as
	before when there was no argument), so F90 CYCLE and EXIT statements
	(like C's continue and break stmts) can refer to other than the
	innermost loop.
	(expand_start_cond): Uses new names for if-related labels that
	reflect addition of "elseif" call, and sets endif_label to whatever
	exit_label gets set to (so we don't generate two identical labels
	for languages from which if is exitable via expand_exit_something).
	(expand_start_elseif): New function, used by Fortran.
	(expand_start_else): Moved above _end_cond so these four functions
	appear in the order they get called; uses new names, and fills in
	only endif_label if needed, not exit_label.
	(expand_end_cond): Handles end of any if, not just if-without-else.
	Generates both labels for next else/elseif pending (there was none)
	and the endif itself, if they exist (and there will always be at least
	one).
	(expand_end_else): Gone, call expand_end_cond instead.
	* c-parse.y, cplus-parse.y, objc-parse.y: Pass new 0 argument to
	expand_..._loop_... to indicate the innermost loop; call
	expand_end_cond instead of expand_end_else.
	* tree.h: Typedef for stmt_nesting returned by expand_start_loop...
	and change their return types accordingly.

Mon Dec 10 06:59:14 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (check_asm_operands): Delete from here.
	* recog.c (check_asm_operands): Move to here; no longer static.
	(validate_change): Don't assume change is valid is asm_noperands >= 0.
	If recog_memoized returns < 0, accept change if asm_noperands >= 0
	and check_asm_operands returns non-zero.
	(apply_change_group): Likewise.
	(validate_replace_rtx_1): Swap operands on commutative operation
	if first is constant.
	Use plus_constant to simplify a PLUS with CONST_INT as second operand.

	* reload.c (find_equiv_reg): We must have a stable SP if GOAL is
	a MEM that uses SP.

	* combine.c (try_combine): Don't do anything if I2 or I1
	has an ASM_OPERANDS and CLOBBERS; we'll need those clobbers
	and it is too messy to try to get things set up correctly.

Sun Dec	 9 22:07:41 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (collect_expansion): Don't check for /* */ concat here.
	(macroexpand): Always use raw arg if traditional.

	* c-parse.y (unary): Mark address of label as constant.

Sun Dec	 9 14:45:34 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (propagate_basetype_offsets): Take effect on ASSOC
	before recursive calling.
	(finish_struct): Call `layout_decl' with zero for KNOWN_ALIGN
	when laying out TYPE_DECL.
	* cplus-tree.c (assoc_value): Change recursion condition to compare
	ASSOC_VALUE (assoc) against TYPE_MAIN_VARIANT (type) instead of just
	against type.

Sat Dec	 8 10:40:00 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md (attributes): Reorganize and include a block diagram.
	Make better use of defaults.
	* m88k.md (peephole), out-m88k.c, tm-m88k.h (short_branch): Add
	the sparc peepholes for changing bsr/br into bsr.n/addu or
	bsr.n/subu.  Install the length attribute for this.  Requires the
	use of `def' to accomodate broken assemblers in the bsr.n/addu
	case.

Fri Dec	 7 06:12:43 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (find_end_label): Increment usage count of label we return
	so we know it won't go away.
	(dbr_schedule): Decrement count of end label and delete it if dead.

Wed Dec	 5 17:36:23 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md: Add instruction attributes for scheduling and delay
	slot information.
	* m88k.md (addsi pattern): Adding large constants does arise.
	(udivsi pattern): Wrong predicate.
	* tm-m88k.h, out-m88k.c (NOTICE_UPDATE_CC): Do so using
	attributes.

	* make-m88k, make-m88kdgux: Say how to create m88k-trace.asm.

Wed Dec	 5 13:52:16 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* optabs.c (expand_binop): Support insn_before == 0.

	* function.c (optimize_bit_field): Fix wrong arg to validate_change.

	* Makefile (includes): Export LIB.

Wed Dec	 5 13:31:57 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (try_combine): Don't discard CLOBBERs from an insn
	with ASM_OPERANDS.

Tue Dec	 4 16:12:21 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* tm-m88k.h, out-m88k.c, m88k.md: More cleanups: introduce
	POWER_OF_2 for tests (x && (x & (x-1) == 0); rename predicate
	functions *_p instead of *_operand; cleanup addsi3 insns; simplify
	udivsi3 insns; simplify memory shift insns; make LOW_SUM and HIGH
	SImode instead of VOIDmode; add a predicate to the increment and
	test peephole insn; deal with setting SFmode to zero; delete bogus
	pattern for divide-by-power-of-2.
	* make-m88k, make-m88kdgux: dg88k-trace.asm is now m88k-trace.asm.
	Move movstr-m88k.sh to config/m88k-movstr.sh.

Mon Dec	 3 19:08:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (gnulib2.ready): New target.
	(stamp-gnulib2): Depend on that.
	Avoids recompiling gnulib2 each time cc1 changes.

Mon Dec	 3 16:17:56 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* tm-m88kdgux.h, xm-m88kdgux.h (SEPARATE_AUX_OUTPUT): Should be in
	xm-m88kdgux.h.
	* tm-m88k.h, out-m88k.c, m88k.md: Eliminated the fixed literal
	synthesis register.  Reworked the addressing method to be like the
	sparc (uses HIGH and LO_SUM).  Numerous cleanups.  These changes
	are based on work done by Steve Chamberlain (steve@cygnus).
	* tm-m88k.h, out-m88k.c (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER):
	Implemented.

Mon Dec	 3 15:19:04 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (special_symbol): Use time_t as type of t.

	* m88k-movstr.sh, m88k-trace.asm, va-m88k.h: New files.

	* gcc.c: Don't define R_OK, etc. if already defined.

	* out-sparc.c (finalize_pic, emit_move_sequence, output_arc_profiler):
	Finish change to emit HIGH and LO_SUM as Pmode instead of VOIDmode.

Sun Dec	 2 22:13:53 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* config.gcc (tower): New alternative.
	(mips-news): Adapt for version 2.

	* tm-tower.h, tm-tower-as.h, xm-tower.h: New files.

Sun Dec	 2 17:47:28 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload1.c (eliminate_regs, case ASM_OPERANDS): Fix typo in testing
	for changed vector.

	* out-rs6000.c (output_epilogue): Fix typo restoring general registers.
	(print_operand): Add new option %H.
	* rs6000.md: Add (clobber (reg:SI 64)) to many patterns even though
	they don't clobber MQ to allow combining to work well.	This will be
	removed once combine knows how to add clobbers when required.
	Change patterns to reflect new canonicalization rules.
	Where we have (and (xshift)), add patterns for (zero_extend (xshift)).
	(andsi3, xorsi3): Fix bug in case where two insns are needed.
	(moveti): Don't call change_address when in reload.
	(sign_extend): Add patterns for sign extend preceeded or followed by
	one of the shifts it will do.  Use %H to output the merged shift.

	* out-romp.c (print_operand): Allow exact_log2 result to be zero.
	* romp.md: Likewise.
	* tm-romp.h (CONST_OK_FOR_LETTER): Likewise.

	* a29k.md (type attribute): Add types for floating-point insns.
	(in_delay_slot attribute): Update to allow for new types.
	(function_unit definitions): Add definitions for floating-point units.
	(andcb*3): Delete obsolete names.
	(convert insn): Use register_operand instead of gen_reg_operand for
	floating-point operand.
	(cpeq, feq, deq, etc): New patterns.
	(floating-point arithmetic): Add support for 29050 insns and
	accumulators; indicate function unit usage.
	(ior/and patterns): Put NOT as second operand.
	(orn insn): New, for 29050.
	(load patterns): If using match_operator, make it the highest operand
	number.
	(loadm insns): Add workaround for rev A1 bug on 29050.
	(negsf2, negdf2): Don't use XOR to negate on 29050.
	(movsf, movdf): Add support for accumulators on 29050.
	(movsi, movhi, movqi): No need to support special->special copies.
	Support consthz insn on 29050.
	(compare, scc, and branch insns): Rework to not use cc0.  Use a pseudo
	register instead.  Compare doesn't generate any code, but merely
	saves the operands.  scc and branch then emit the appropriate compare
	and jump (if branch) insns.
	(tstsi): Delete pattern; not used when no cc0.
	(peepholes): Remove peepholes to convert jumps to scc insns; now
	done in jump.c.
	* out-a29k.c (a29k_compare_*): New variables.
	(long_const_operand): Anything with low-order 16 bits zero is not a
	long constant on the 29050.
	(accum_reg_operand): New function.
	(gen_reg_operand): Returns false for accumulator registers.
	(output_operand): Allow accumulators.
	(ne_comparison_p, fp_comparison_p, return_peep_operand): Deleted.
	(fp_comparison_operator, branch_operator): New functions.
	(output_compare): Deleted.
	(print_operand): Change meaning of %b and %B.
	Add new code %J.
	* tm-a29k.h (TARGET_VERSION): Say if compiling for 29050.
	(TARGET_FLAGS): Add -29000 to turn off support for 29050; this is
	still the default.
	(various register macros): Add support for the floating-point
	accumulators on the 29050.
	(CONST_OK_FOR_LETTER): Use 'O' for a constant that can be set using
	conthz on the 29050; keep old definition for 29000.
	(STORE_FLAG_VALUE): Now 0x80000000.
	(ASM_FILE_START): Write ".cputype 29050" when compiling for 29050.

	* combine.c (subst): Put NOT, NEG, MULT, PLUS, and MINUS as the
	first operand of commutative operations.  Note that NOT used to be
	put as the second operand but it has always been assumed that 
	MULT would be the first operand in address expressions, so we have
	to change the previous canonicalization.  This is possible now that we
	have eliminated the andcbm3 operations.
	* i860.md (andnot): Remove obsolete andcbsi3 name and place NOT
	as first operand.
	* m68k.md (fpm*): Delete patterns with MULT as second operand and
	use "@" construct when possible.
	* m88k.md (and.c, ior.c): Remove obsolete andcbsi3 and iorcbsi3 names.
	Delete patterns with NOT as second operand.
	(xor.c): Rewrite in new canonical form.
	* mips.md (nor): Rewrite in new canonical form.
	* pyr.md (bicw): Remove pattern with NOT as first operand, removing
	obsolete name andcbsi3 in the process.
	* sparc.md: Remove patterns with NOT as first operand.
	Remove obsolete names andcbsi3, iorcb3, and xorcbsi3.
	Rewrite xnor into new canonicalized form.
	Add mode to HIGH and LO_SUM operations.
	* vax.md (bic*): Remove obsolete andcbm3 names.
	Put NOT as first operand when both generating and recognizing RTL.
	(jlbc): Rewrite with NOT as first operand.

Sun Dec	 2 17:08:16 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* m68k.md (recognizer for casesi_2): Handle ASM_RETURN_CASE_JUMP.

	* stddef.h (ptrdiff_t): Prevent definition, as with size_t.

Sat Dec	 1 16:31:30 1990  Ron Guilmette	 (rfg at ncd.com)

	* dwarfout.c (lookup_filename, dwarfout_finalize): changed from
	maintaining a linked list of filename entries to maintaining an
	(expandable) array of filename entries instead.	 Also, changed
	code so that *all* filename strings are output (to the .files
	section of the asm file) in one swell foop just as the asm file is
	being finalized rather than writing out new filenames one-by-one
	as they arise (as previously). This circumvents a problem caused
	by rfg's naive assumption that assemblers kept a stack of prior
	section names (of depth > 1) which could be successively popped
	via multiple `previous' directives.  For some assemblers, the
	depth of the stack is only 1 and they can get confused if you do
	two (or more) `previous' directives in a row.  Anyway, it is no
	longer either necessary or useful to do that, so who cares.

	* dwarfout.c: added code to output newlines to the asm file just
	prior to each and every change of section (for better readability
	of the asm files).

	* dwarfout.c: changed code so that if DWARF_DESCRIBE_USED_EXTERNS
	is defined, it forces DWARF_LOCATION_ATTRIBUTES to also be defined.

	* dwarfout.c: changed code so that if DWARF_LOCATION_ATTRIBUTES
	is defined, it forces DWARF_DESCRIBE_FILES to be defined (to `1').

	* dwarfout.c: changed code so that if DWARF_DESCRIBE_FILES is not
	already defined (in the user's tm.h file) it will automatically be
	defined (by default) to `1'.  Also changed all instances of
	`#ifdef DWARF_DESCRIBE_FILES' to `#if DWARF_DESCRIBE_FILES'.
	The user must now intentionally *disable* this feature (by
	defining DWARF_DESCRIBE_FILES to `0' in his tm.h file) if he
	wishes to have the additional information about files suppressed.

	* dwarfout.c: changed comments relating to optional defines for
	extended GNU DWARF features to include more information and to
	add some additional clarity.

Sat Dec	 1 16:00:34 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (subst): Call reverse_condition instead of
	reverse_comparison.
	We are allowed to reverse floating-point EQ and NE comparisons.

	* combine.c (subst): Call simplify_and_const_int for all AND
	and ZERO_EXTEND cases and all cases where we make one of them.
	Remove all other code in AND and ZERO_EXTEND cases.
	(simplify_and_const_int): Rewritten to follow a consistent model
	of tracking what AND's need to be done and which bits are not
	significant.  Consistently try a ZERO_EXTEND for all cases where
	the result is an AND with a mode-wide mask.  Move all remaining
	cases from AND any ZERO_EXTEND cases from subst.

Sat Dec	 1 09:13:17 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-tree.h (lang_type): Remove any_assigns_this,
	none_assigns_this from type_flags.
	* cplus-decl2.c (get_temp_name): If the initializer is a
	pointer to zero, cache it in EMPTY_TABLE.
	(finish_builtin_type): New function, to factor common code
	arising from building internal structures.
	* cplus-decl.c (init_decl_processing): Call it.

Fri Nov 30 10:39:04 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl.c (finish_function): Use CLASSTYPE_ASM_WRITTEN instead
	of TREE_USED to indicate that we need debugging info for
	TTYPE.
	Note that nobody ever sets EXTENDED_DBX_DEBUG.	For now,
	change to test DBX_DEBUG.  For later, change everything to
	key off of EXTENDED_DBX_DEBUG.	
	Also, set `warn_return_type' to one always, since this warning
	is too valuable to lose.
	* cplus-tree.c (lang_output_debug_info): Don't test TREE_USED.	That
	field is already used by other routines, and we have all we need now
	in CLASSTYPE_ASM_WRITTEN.
	* cplus-dbxout.c (dbxout_type_method_1): Handle const,
	volatile, and const/volatile member functions.

Fri Nov 30 04:51:46 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (reg_last_set_value): New variable.
	(combine_instructions): Allocate and initialize it.
	(record_dead_and_set_regs): Set reg_last_value to source
	of assignment; clear it for a CLOBBER or partial assignment.
	(subst): Use reg_last_set_value instead of interpreting the
	insn in reg_last_set as if it was a single SET.

	* combine.c (gen_lowpart_for_combine): Call gen_lowpart for CONST_INT.
	When making a new MEM, copy MEM_VOLATILE_P and MEM_IN_STRUCT_P.
	If cannot recognize the argument, just form a SUBREG; usually,
	it won't be recognized, but sometimes will allow further
	simplifications.

	* regclass.c (reg_scan): Save size of uid map; reallocate if
	we have more registers than we allocated.
	Leave some extra room in map.

	* stmt.c (emit_case_nodes): Supply missing argument to emit_cmp_insn.

	* fold-const.c (decode_field_reference): Add missing arg declaration.

	* expmed.c (store_bit_field): Add missing last argument to
	recursive call.

	* cse.c (cse_insn): Remove extra arg passed to rtx_equal_p.

	* Makefile.in (proto): Make protoize.1 and unprotoize.1.
	(protoize.1, unprotoize.1): New targets.
	(install_man): Install protoize.1 and unprotoize.1./
	* proto-unproto.1: New file.

	* loop.c (scan_loop): Properly set SET_SRC in movables entry for
	MOVE_INSN == 1 and CONSEC > 0 case.
	(force_movables): Don't look at SET_SRC when CONSEC > 0.

	* expr.c (expand_expr, case ARRAY_REF): Ensure TYPE_POINTER_TO
	gets initialized after we build a variant type.

Fri Nov 30 00:35:06 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* m68k.md (ashr of 16 to 24 bits): Use extl, not extw.

Thu Nov 29 21:41:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-vax.h (BLOCK_PROFILER, FUNCTION_BLOCK_PROFILER): New macros.

	* gcc.c (add_prefix): Add new element, don't replace old first elt.

	* dwarfout.c (dwarfout_finalize): Go to DEBUG_SECTION first thing.

Thu Nov 29 17:50:43 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu)

	* stmt.c (expand_end_loop): Stop looking for branch to the loop
	exit when we hit a NOTE_INSN_BLOCK_{BEG,END}.
	* jump.c (duplicate_loop_exit_test): Likewise.
	Also, only copy line-number notes.

	* integrate.c (expand_inline_function): Call expand_expr for the
	arguments before allocating maps that are based on register numbers.

	* loop.c (loop_reg_used_before_p): Accept new argument, SET, to
	indicate which part of INSN is setting the relevant register.
	(scan_loop): Pass new arg to loop_reg_used_before_p.

	* function.c (optimize_bit_field): Don't assume ZERO_EXTRACT can
	be replaced by MEM; use validate_change to check.

	* reload.c (find_reloads_toplev): Add missing arg to recursive call.

	* calls.c (expand_call): Correct two cases of missing mode to gen_rtx.

Thu Nov 29 02:42:35 1990  Michael Tiemann  (tiemann at cygnus.com)

	* version.c: Bump version number to 1.90.04.

	* toplev.c (rest_of_compilation): If FLAG_PIC is nonzero, emit any
	special PIC code once we start really compiling a function (i.e., we
	are not in an inline function).	 Inline functions cannot
	meaningfully hold PIC code because there is no notion of position
	independence in code that isn't really being written down.

	* Makefile.in: Don't build cplus-cadillac.o by default.	 Build
	cplus-edsel.o instead.	Until Lucid frees their programming
	environment, their Cadillac will always be an Edsel to GNUsers.

	* stmt.c (fixup_gotos): Change loop to run in two passes so that
	cleanups don't experience a race condition.
	(expand_cleanups): Replace Nov 5 word-around with consistency check.
	The same cleanups should never be run twice.

	* cplus-decl.c (lang_{init,finish}): Move these functions...
	cplus-lex.c: ...to here.  Also, make change to lang_init analogous
	to Nov 27 change for C compiler.

	* cplus-decl.c (pushdecl): Don't warn about static/extern conflicts
	if X is a TYPE_DECL.
	(build_enumerator): Certain CONST_INT nodes cannot be coopted to be
	the constant for enumerator.  Mark them as non-shareable and don't
	coopt them.

	* cplus-decl.c (lang_{init,finish}): Declare these to be void
	functions to match new tree.h.

Wed Nov 28 18:48:33 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload1.c (eliminate_regs): Convert (subreg (mem)) to (mem) when
	not a paradoxical SUBREG.

Wed Nov 28 17:15:43 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* emit-rtl.c (gen_label_rtx): Clear LABEL_NAME via gen_rtx.

Tue Nov 27 21:54:15 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* varasm.c (assemble_external): Never write a .extern for a static
	name.

	* recog.c (validate_replace_rtx_1): Handle making a SUBREG of a MEM
	by trying a new MEM.

Tue Nov 27 11:54:28 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-lang.c, objc-action.c: Include input.h.
	(lang_init): Call check_newline here.
	* toplev.c (compile_file): Not here.
	Call lang_init after setting input_filename.

	* tree.h: Declare numerous functions that the front end must provide.

	* rtl.h (LABEL_REFS): Use operand 5, same as LABEL_NUSES.

	* toplev.c (warn_return_type, W_options): Handle -Wreturn-type here.
	* c-decl.c: Not here.
	* flags.h: Declare it here, not in c-tree.h.

	* gcc.c (pexecute): Wait and retry if fork fails.

	* expr.c (do_jump): Pass all args to get_inner_reference.
	(expand_assignment): Fix typo in arg to get_inner_reference.

	* tm-hp9k320.h (STANDARD_STARTFILE_PREFIX): Don't alter if already set.

Mon Nov 26 18:28:51 1990  Michael I Bushnell  (mib at churchy.ai.mit.edu)

	* cccp.c (handle_directive): Do backslash-newlines inside of
	strings.

Mon Nov 26 15:39:29 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (main): Handle -w.
	(warning): Do nothing if -w.
	* gcc.c (compilers): Pass -w to cpp.

	* c-decl.c (grokdeclarator): Don't discard arg types
	for prototype even if traditional.

Sun Nov 25 20:52:31 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* protoize.c: Undef CHAR_BIT, etc, before including limits.h.

	* reload1.c (old_asm_operands_vec, new_asm_operands_vec): 
	Type should point to a vector.
	(Eliminate_regs): For asm_operands, copy the vector properly.

Sun Nov 25 20:35:12 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu)

	* jump.c (jump_optimize): Fix typo in stack push combining code.

	* reload1.c (eliminate_regs): Ensure we share operands 3 and 4
	of ASM_OPERANDS operations if they were originally shared.
	Copy all rtx flags when making a new MEM.
	(eliminate_regs_in_insn): Initialize for ASM_OPERANDS sharing check.

Sun Nov 25 16:37:10 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (stamp-gnulib2): Don't depend on gnulib2-indirect.

	* gcc.c (do_spec_1): Handle %W{...}.
	(default_compilers): Use %W{...} when passing -o option.

Sat Nov 24 16:39:56 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cplus-lex.c (init_lex, do_pending_inlines, reinit_lang_specific):
	Add conditionals for __GNU_LIBRARY__.

Thu Nov 22 13:48:06 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* fold-const.c (optimize_bit_field_compare): Pass additional
	arg to get_inner_reference; it gets set if something was volatile.
	(decode_field_reference): New arg PVOLATILEP; passed to
	get_inner_reference.
	(merge_component_references): Add pointer to place to store if
	something is volatile to calls to decode_field_reference; don't
	do anything if it gets set (this may be very conservative).

	* stmt.c (expand_end_loop): Skip initial CODE_LABEL at start of
	loop when looking for qualified conditional exit.

	* reload.c (push_reload): If (subreg:M1 (reg:M2 ....)) and we
	have trouble access the register in M1, reload the reg, not subreg.
	Fix typo in testing for memory.
	(reload): Force reload of the operand in the above cases.

Wed Nov 21 17:39:42 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (strength_reduce, combine_givs): Don't penalize
	non-replaceable givs unless they are user variables; temporaries
	are probably dead even though we can't prove it.

	* integrate.c (save_constants): Don't get confused by looking
	inside CONST_DOUBLE_MEM.
	Call recursively on what get_pool_constant returned, in case it
	was itself the address of a pool constant.
	(copy_for_inline, copy_rtx_and_substitute, restore_constants):
	Remake CONST_DOUBLE so it gets chained in correctly and we don't use
	obsolete CONST_DOUBLE_MEM values.  Call recusively on operand we are
	about to pass to force_const_mem; it might have been a case of a
	constant value being an address of another constant.

	* loop.c (find_mem_givs): Don't make a DEST_ADDR giv with mult_val == 1
	and add_val == 0.
	(maybe_eliminate_biv_1): Turn off elimination in (compare biv1 biv2)
	cases; they have problems.

Wed Nov 21 16:06:14 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* dwarfout.c (location_attribute): Offset for bitfields is special.

	* expr.c (get_inner_reference): New arg pvolatilep.
	(expand_expr, expand_assignment): Use to set MEM_VOLATILE_P.

Wed Nov 21 10:34:25 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* stor-layout.c (layout_decl): Record whether a FIELD_DECL is a
	bit-field and if so its original type.
	* tree.h (DECL_BIT_FIELD_TYPE): New.
	* dbxout.c (dbxout_type): Use DECL_BIT_FIELD_TYPE.
	* dwarfout.c (output_member_die, bit_offset_attribute,
	bit_size_attribute, member_declared_type): Use DECL_BIT_FIELD_TYPE.
	* sdbout.c (sdbout_one_type): Use DECL_BIT_FIELD_TYPE.

	* sdbout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): New
	interfaces to compute the location of arguments and automatic
	variables.
	* dbxout.c (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Likewise.

	* dbxout.c (dbxout_parms): Describe a parameter passed in
	registers but living on the stack as N_PSYM rather than N_LSYM.
	These are typically arg_pointer based locations.

	* out-m88k.c (m88k_debugger_offset): New function.
	* tm-m88k.h (DEBUGGER_ARG_OFFSET, DEBUGGER_AUTO_OFFSET): Replaces
	SDB_AUTO_NORMALIZE_OFFSET.
	* tm-m88k.h (STACK_BOUNDARY): Update to 16 byte aligned stacks.

Tue Nov 20 23:48:57 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* dwarfout.c (dwarfout_init): Set stack depth to 1 at start.
	(output_padded_null_die): New function.
	(dwarfout_finalize): Use that to ensure length divisible by 4.

	* ns32k.md (addsi3): Don't use `addr' for very large displacements.

Tue Nov 20 05:48:42 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (can_reverse_comparison_p): It is safe to reverse an EQ
	or NE comparison, even if IEEE floating-point.

	* integrate.h (struct inline_remap): const_*_map now maps registers
	in calling function, not called function.
	Add fields to save values recorded from SETs.
	* integrate.c: Now includes insn-config.h and real.h.
	(expand_inline_function): New meaning for const_*_map.
	Don't fill in constant equivalences here; now done in try_constants.
	Show CALL_INSNs potentialy clobber all hard registers since we
	now record equivalences for hard registers.
	(try_constants): No longer need original RTL; all callers changed.
	Call note_stores to kill any known equivalences for registers changed.
	Record equivalences for PC, CC0, and registers set by this insn.
	(subst_constants): No longer need original RTL; all callers changed.
	Reflect new meaning of const_*_map.
	Perform more extensive constant folding, basically a subset of
	fold_rtx in cse.c; specifically, fold the result of comparison
	operations and IF_THEN_ELSE operations.
	Record the constant equivalences of SETs, if any.
	(try_fold_condition, const_equiv, fold_out_const_cc0): Deleted.
	* Makefile.in (integrate.o): Now includes insn-config.h and real.h.

Sat Nov 17 07:48:45 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (local_alloc): Don't allocate a reg that wants a
	class that has only one register; let global-alloc do it so that it
	can be given a GENERAL_REG if reload needs a spill reg of that class.

	* regclass.c (regclass, reg_class_record): Count savings in loops as
	being greater the same way we adjust reg_n_refs for loops in flow.c.

	* expmed.c (store_bit_field, extract_bit_field): Remove change of
	Oct 16; it causes problems with long long bit fields.

	* rtlanal.c (reg_overlap_mentioned_p): If called with a constant,
	return zero.  If called with a MEM, return 1 iff the second arg
	contains a MEM. 
	* reload.c (push_reload): Call reg_overlap_mentioned_p only if OUT
	is a MEM and then pass it the address of OUT.

	* cse.c (cse_insn): Refine when SRC_EQV, SRC, and DEST are added
	to the hash table.  SRC_EQV is not added to the hash table if it
	is volatile or equal to DEST and similarly for SRC.  DEST is not
	added to the hash table unless either SRC_EQV or SRC is.

Thu Nov 15 23:43:20 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (convert_for_assignment): Change warning message.

Thu Nov 15 18:44:49 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* stmt.c (expand_end_loop): Generalize code to look for more
	than one branch to the exit and include unconditional branches
	to the exit; move the whole range to the end of the loop.
	* jump.c (duplicate_loop_exit_test): New function.
	(jump_optimize): Call it.
	Don't allocate jump_chain until we have finished deleting dead code.
	Leave some more room in jump_chain.
	(simplejump_p): Reject if not JUMP_INSN.
	(delete_insn): If simplejump_p, remove from jump chain.
	* loop.c (loop_skip_over): Deleted.
	(scan_loop): No longer call it.
	* cse.c (predecide_loop_entry): Deleted.
	(cse_basic_block): No longer call it.

Thu Nov 15 18:00:20 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* math-68881.h (HUGE_VAL): Add extra braces for Sun.

	* stor-layout.c (layout_type): Don't let array have less
	alignment than its mode calls for.

Thu Nov 15 13:05:30 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* sdbout.c (sdbout_parms, sdbout_reg_parms): Reimplemented based
	on dbxout_parms and dbxout_reg_parms.

Wed Nov 14 08:48:43 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (emit_...): All of these now return the last insn
	emitted; previously some of them returned void.
	(emit_barrier_before): New function, similar to others.
	* rtl.h: All emit_... functions now return an rtx; reorder so
	declarations are in the same order as definitions in emit-rtl.c.

	* reorg.c (steal_delay_list_from_{target,fallthrough}): Add missing
	test when checking candidate insn for resource conflicts.

Wed Nov 14 07:08:19 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* c-parse.y (pushlevel, compstmt): Place a line note at the first
	token beginning a block and at the close brace ending a block.
	These are the conventional locations for SDB and DWARF debugging
	information.

Tue Nov 13 18:16:47 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* function.c (assign_stack_local): If alignment not specified
	and not BLKmode, use at least word alignment.
	(assign_outer_stack_local): Likewise.

	* sparc.md: Turn off patterns that specify no_ov or CC_NO_OVERFLOW.

	* dwarfout.c (file_attribute): Fix arg to ASM_OUTPUT_DWARF_ATTRIBUTE.
	(AT_line, AT_file): New definitions.

	* out-i860.c (output_block_move): Move .Lm%3 down one insn.

	* c-decl.c (grokdeclarator): -funsigned-bit-field doesn't affect enums.

Tue Nov 13 09:28:27 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* gcc.c (default_compilers): Report an error if -C is used without
	-E.  Pass -H to cpp.

	* sdbout.c (plain_type, plain_type1): save and output the
	rightmost array dimensions.

	* syms.h (enum sdb_type): Add T_VOID, equal in value to T_ARG.
	* sdbout.c (plain_type_1): Use T_VOID for VOID_TYPE and define it
	to be T_INT if not present in <syms.h>.

	* sdbout.c (sdbout_toplevel_data): Use abort rather than fatal.

Mon Nov 12 08:49:33 1990  Michael Tiemann  (tiemann at cygnus.com)

	* expr.c (compare): Fix use of GET_MODE_CLASS so we don't abort if
	MODE is VOIDmode.
	* optabs.c (init_optab): Call `xmalloc' instead of `malloc'.

	* out-sparc.c (hard_regno_mode_ok): Change initialization of array
	to match behavior of Nov 11 change for complex modes.

	* jump.c (delete_labelref_insn): Chase all LOG_LINKS of insn to try
	to delete references to LABEL.	This is needed for machines like
	SPARC which use multiple insns to get the value of LABEL into a
	register.

Mon Nov 12 16:07:27 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* machmode.def (SCmode, ...): Class is MODE_COMPLEX_FLOAT.

Sun Nov 11 00:27:34 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-i860.h (HARD_REGNO_MODE_OK): Handle values more than 2 regs long.
	* tm-m68k.h (HARD_REGNO_MODE_OK): Likewise, for d7/a0 boundary.
	* tm-spur.h (HARD_REGNO_MODE_OK): Likewise, for 31/32 boundary.
	* tm-*.h (HARD_REGNO_NREGS): Use GET_MODE_NUNITS to handle
	complex values in fp registers on machines where one reg holds a DF.

	* sdbout.c (sdbout_one_type): Do nothing for incomplete type.

	* c-decl.c (duplicate_decls): Warning only when redefining built-in fn.

	* c-decl.c (init_decl_processing): Use sizetype, not unsigned long,
	in prototypes for memcpy and memcmp.

	* c-parse.y (component_decl): Don't read the semicolon here.

	* toplev.c (compile_file): Reverse top-level decls before output.

Sat Nov 10 22:27:47 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* stor-layout.c (layout_type): Use MODE_COMPLEX_{INT,FLOAT}.

Sat Nov 10 20:34:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload.c: Provide a default definition of REGISTER_MOVE_COST.

Sat Nov 10 01:43:09 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-init.c (emit_base_init): Don't use CLASSTYPE_ASSOC as a list
	of only immediate basetypes anymore.  Use `get_base_distance' to
	check whether a type is an immediate basetype or not.

	* stmt.c (expand_return): Don't emit a USE if VAL is a
	pseudo-register.

	* integrate.c (function_cannot_inline_p): Call to strcmp for
	"__builtin_va_alist" must use IDENTIFIER_POINTER not
	DECL_NAME.

	* genattrtab.c (check_attr_test): Use XSTR macro instead of
	XEXP macro in places where strings are used.

	* tree.c (type_hash_lookup): Have to check TYPE_DOMAIN for non-zero
	before comparing the equality of the possible lists.

	* cplus-typeck.c (build_c_cast): Check TREE_TYPE before checking
	that the TREE_TYPE is an OFFSET_TYPE.

	* cplus-typeck.c (c_expand_return): Use DECL_RESULT of
	current_function_decl instead of `result' since `result' might be
	set to zero.

	* cplus-decl.c (xref_tag): Fixed typo in setting
	TYPE_USES_COMPLEX_INHERITANCE.

	* cplus-tree.c (assoc_value): Changed interface to take COPYING
	parameter.
	* cplus-{class,init,search,tree}.c  All callers changed.

	* cplus-typeck.c (build_c_cast): Resolve OFFSET_REFs if the type we
	are converting to is not an OFFSET_TYPE.

Thu Nov	 8 15:26:27 1990  Craig Burley	(burley at pogo.ai.mit.edu)

	* tm-*.h: Try to change HARD_REGNO_NREGS, HARD_REGNO_OK, and other
	macro defs to handle new complex type stuff.  Mostly guesswork; needs
	checking by people who really know each machine.
	* machmode.def (SCmode, DCmode, XCmode, TCmode): New complex modes.
	* machmode.h (GET_MODE_ALIGNMENT): New macro from stor-layout.c.
	* tree.c (build_complex_type): New function.
	* stor-layout.c (layout_type): Handle COMPLEX_TYPE.
	* expr.c (compare1, compare, move_block_to_reg, emit_push_insn):
	Change uses of GET_MODE_CLASS.
	* optabs.c (expand_binop, expand_twoval_binop, expand_unop):
	(emit_cmp_insn): Likewise.

Thu Nov	 8 06:19:57 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (no_conflict_p): Initialize *WHERE_DEAD; previously
	uninitialized.

Thu Nov	 8 01:08:45 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (yylex): Size of wide STRING_CST counted terminator wrong.

Wed Nov	 7 14:55:38 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gnulib2.c (L_trampoline): Put it inside a dummy function.

	* enquire.c: Renamed from hard-params.c; new vers from steven@cwi.nl.
	Modified to undef CHAR_BIT, etc. if defined in stdio.h.
	* Makefile.in (enquire): Targets renamed.
	(enquire.o): Define NO_MEM.

Wed Nov	 7 14:18:34 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (invert_jump): If it is going to fail (i.e., redirect_jump
	fails), don't invert the jump.

	* expr.c (expand_expr, case COND_EXPR): Don't accept a hard register
	as a target if we are going to store into it before testing the
	condition because that evaluation may involve a subroutine call
	which might clobber it.

	* jump.c (delete_jump): reg_set_p should be called with PATTERN (insn).
	(thread_jumps): Add omitted last argument to rtx_equal_for_thread_p.

	* reload.c (find_reloads): Only skip insns which set one hard register
	to another if the cost of doing so is low;  if not, there may not be
	a single insn to do the copy and we may need a reload register.

Wed Nov	 7 00:01:18 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (component_decl_list): Allow missing semi at end.

	* loop.c (move_movables): When moving and deleting library call,
	don't be confused if an insn is deleted.

Tue Nov	 6 20:49:57 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-m68k.h (TRANSFER_TO_TRAMPOLINE): Fix asm syntax.
 
	* xm-iris.h (alloca): Delete redundant definition.
	* tm-iris.h (CPP_SPEC): Define variant symbols starting with _.
	Define __EXTENSIONS__.

	* config.gcc (editing .gdbinit): Search current dir, not just srcdir.

Tue Nov	 6 22:24:09 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, case COND_EXPR): Generate efficient code for
	A ? A : FOO and similar.

	* combine.c (subst): If we have, e.g., (lt CONST FOO), convert it
	to (gt FOO CONST).

	* recog.c (comparison_operand): Use comparison_code_p.

	* genconfig.c (walk_insn_part):	 Add operand to indicate if PART is
	going to be used to recognize an insn (as opposed to emitting rtl).
	If not, ignore CC0.
	(gen_insn, gen_expand, gen_split, gen_peephole): Add new operand to
	walk_insn_part calls.

	* cse.c (find_comparison_args): Correctly compute rtx_code of
	comparison; if we find another comparison code inside, use it.
	* loop.c (get_condition): Likewise.

	* expr.c (expand_builtin): For ffs, don't pass VOIDmode to expand_unop.

Mon Nov	 5 12:55:00 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* final.c (output_addr_const): Don't print parens for CONST.

	* reload1.c (choose_reload_regs): Handle case where find_equiv_reg
	returns a SUBREG.  Also, use variable `regno' uniformly throughout
	code that finds equivalent register.

	* gnulib2.c (__floatdisf, __fixunssfsi): New functions.
	(__fixsfdi, __fixunssfdi): New functions.
	* gnulib.c (__floatsisf, __fixsfsi): New functions.

Mon Nov	 5 06:37:02 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* fold-const.c (fold, case EQ_EXPR and NE_EXPR): Convert, e.g.,
	(A & 2) == 2 to (A & 2) != 0.  This eliminates the need for these
	patterns in MD files.
	Detect more general cases of comparing something with itself.

Mon Nov	 5 00:09:55 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* stmt.c (expand_cleanups): Don't run any cleanup twice.

Sun Nov	 4 23:49:22 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (convert_move): Use emit_no_conflict_block when converting
	SImode to DImode.
	If have slt insn, emit a compare insn; we must not have a use of
	cc0 without a set; normally, the compare will be deleted as
	redundant in final.c.
	Use shift rather than clear/test/negate for high-order word when
	doing sign extension.

	* optabs.c (emit_no_conflict_block): Don't put REG_NO_CONFLICT
	notes on the trailing copy insn; nobody looks there.

	* combine.c (try_combine): Don't combine a reg-reg copy if the
	destination is used in a REG_NO_CONFLICT note.

	* reload.c (find_equiv_reg): Use true_regnum to support SUBREGs
	as well as REGs.

Sun Nov	 4 12:55:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* i386.md (extend*): Take out last change.
	Unix assembler rejects movsx...

	* expr.c (expand_expr): Special case for ignored volatile
	failed to return.

Sat Nov	 3 14:42:34 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (do_jump, case PLUS_EXPR): Turn off this case; it was a
	pessimization.

Fri Nov	 2 01:51:31 1990  Michael Tiemann  (tiemann at cygnus.com)

	* stmt.c (expand_return): Don't emit a USE if VAL is a
	pseudo-register.

Fri Nov	 2 15:30:48 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gnulib2.c (__builtin_saveregs): Add version for i860.

	* out-i860.c (output_block_move): Rearrange the copy loop.
	Now uses two labels and a more complicated lead-in.

Fri Nov	 2 14:17:24 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md (extendsidi2):  New define_expand.

	* out-m88k.c:  Converted various constructs to use conventinal
	formatting.

	* m88k.md (ext pattern): Must have parens.
	* m88k.md (mul/div patterns): Added better documentation.  Removed
	unfounded restriction on immediate values.
	* m88k.md (increment and test peephole): Don't use %L.

	* out-m88k.c (m88k_layout_frame): Must allocate space for the
	addressing base register (-mpic).
	* out-m88k.c (output_tdesc): Use version 2 tdesc with PIC.

	* tm-m88k.h, tm-m88kdgux.h,: Don't predefine memcpy and others.
	* tm-m88k.h: Fixes for dwarf.
	* tm-m88ksvr4.h: Dwarf changes.
	* xm-m88k.h xm-m88kdgux.h xm-v88r32.h: Update comments.

Fri Nov	 2 12:30:15 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (comparison_dominates_p): Return 1 if codes are the same.
	(thread_jumps): Use get_label_after.

	* a29k.md (movdi): Handle CONST_INT as well as CONST_DOUBLE.
	(comparisons): Fix typo in define_split for floating-point NE.

	* reorg.c (fill_slots_from_thread): Don't mark as annulled if no
	delay list.

	* loop.c: Allow use of any register to store comparison results.
	(loop_skip_over): Don't treat comparison specially; copy all insns
	preceeding the jump.
	(check_for_endtest, other_reg_use_p): Deleted.
	(can_eliminate_biv_p, eliminate_biv): Deleted; code merged and
	placed into new maybe_eliminate_p_1.
	(may_eliminate_biv, may_eliminate_biv_1): New functions; recursively
	look at all rtx to see if every occurrence of a biv can be
	eliminated.
	(check_eliminate_biv): Deleted; callers changed to call
	may_eliminate_biv.
	(get_condition): Rework to look into previous insns to find insns
	that set the first operand of comparison insns.

Thu Nov	 1 22:07:42 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (fold_rtx, case COMPARE): Only convert compare to test if
	HAVE_cc0 is defined.
	* combine.c (subst): Copy COMPARE case from fold_rtx.  
	Simplify things like (ne (eq FOO BAR) (const_int 0)).

Thu Nov	 1 18:06:56 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* math-68881.h (HUGE_VAL): Alternate definition for Suns.

	* config.gcc (sun3, etc.): Assume os4 as default for Sun 3 and Sun 4.

	* tm-i386v.h (STARTFILE_SPEC, LIB_SPEC): Handle -posix.
	(CPP_SPEC): New macro.
	(LIB_SPEC): Handle -shlib.

	* c-decl.c (init_decl_processing): Make last arg to memcpy and memcmp
	an unsigned long, to be like size_t.

	* Makefile.in (hard-params): Depend on gnulib2, not gnulib.

Wed Oct 31 22:12:33 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* config.gcc (ultrix):	New alternative.

	* i386.md (extend*): Change opcode to movsx.  Was movs.

Wed Oct 31 09:41:27 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* m88k.md: Deleted an old pattern for subtracting 0.
	* m88k.md: Deleted patterns for aligned bit-field insns.
	* m88k.md: Changed define_expand to define_insn for mulsi3 and
	umulsi3.
	* m88k.md: Converted various constructs to use conventional
	formatting.
	* m88k.md (mak patterns):  Fixed transcription errors.

Wed Oct 31 00:05:54 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (init_decl_processing): Predefine the ordinary names
	of alloca, abs, memcpy, etc.

	* c-decl.c (duplicate_decls): Allow redefining built-in as static,
	but optionally warn.

Tue Oct 30 14:39:17 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (finish_function): Use DEFAULT_MAIN_RETURN in `main'.
	* tm-vms.h (DEFAULT_MAIN_RETURN): Define this.

	* c-parse.y (yylex): Base is not 8 for just `0'.

	* cccp.c (do_define): Invert test of compare_defs.

	* cccp.c (make_definition): Convert newline to newline-newline.

	* Makefile.in (hard-params): Depend on gnulib.

	* m88k.md (divsi3): Delete declarations of gen_... functions.

Tue Oct 30 14:26:20 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c: Rework handling of comparisons to generalize better to
	machines that use registers to hold condition code information.
	(prev_insn_cc0*): Just store last rtx assigned to cc0 in prev_insn_cc0.
	(find_comparison_args): New function.
	(fold_rtx): Folded value of cc0 is the value previously stored into it.
	Rework handling of comparisons:	 use find_comparison_args to see what
	is being compared.  If they are constants, compute the result of the
	comparison.  If not, see if the two operands are equivalent (only for
	non FP or non-IEEE FP).	 Then see if we have already seen a comparison
	involving these operands that lets us give a value to this comparison.
	True comparisons return STORE_FLAG_VALUE, not 1.
	(fold_cc0): Deleted.
	(predecide_loop_entry): Call cse_insn on a copy of each insn at the
	loop test to propagate the values of items at the start of the loop.
	Then use fold_rtx to see if we know the result of the jump.
	(record_jump_equiv): Use new function find_comparison_args.
	(cse_insn): Just record value of CC0 if set; don't call fold_cc0.
	Don't modify PREV_INSN (insn) if INSN is a copy.
	(cse_main): Initialize const_true_rtx to rtx for STORE_FLAG_VALUE.

	* jump.c (comparison_code_p, comparison_dominates_p): New functions.
	(thread_jumps): Use comparison_dominates_p.
	Remove debugging code.
	* reorg.c (condition_dominates_p): Use new function
	comparison_dominates_p.

	* emit-rtl.c (next_cc0_user): Don't get confused by being call with a
	copy of an insn; use INSN_UID to check for an insn in a delay slot.

	* rtl.c (reg_note_name): Add name for new REG_LABEL note.

	* emit-rtl.c (make_insn_raw): No longer have JUMP_LABEL for INSN.

Tue Oct 30 09:26:15 1990  Tom Wood  (wood at dg-rtp.dg.com)

	* Update what strings in files edited so far.
	* tm-m88k.h, tm-m88kdgux.h, tm-m88ksv4r.h: Introduce VERSION_STRING
	and VERSION_INFO to more appropriately identify the compiler.

	* tm-m88k.h (ASM_OUTPUT_OPCODE): Stop processing the opcode if `%'
	is encountered.
	* out-m88k.c (print_operand): Add a tab to %L output.  Delete
	unused cases.

	* m88k.md:  Rework the movstrsi pattern and provide call_block_move
	and call_block_move_loop to support expand_block_move.
	* out-m88k.c:  Rework the block move functions.
	* make-m88k, make-m88kdgux:  Eliminate movstr.h.

	* m88k.md, out-m88k.c: Eliminate assembler comments.

	* m88k.md (ashlsi3 ashrsi3 lshlsi3 lshrsi3): Eliminate warnings
	about out of range shifts.

	* tm-m88k.h, out-m88k.c: Rename CONDITION_CODE_REGNUM CC0_REGNUM.

Mon Oct 29 18:06:54 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* final.c (final_end_function): Handle dwarf output.
	(final_scan_insn): Likewise.
	(output_source_line): Likewise, using ASM_OUTPUT_DWARF_LINE.
	* toplev.c (rest_of_decl_compilation): Likewise.
	(rest_of_compilation, main): Likewise.
	* varasm.c (assemble_variable): Likewise.
	* flags.h (enum debugger): Define DWARF_DEBUG.

	* cccp.c (do_define): Rewrite criterion for warning.
	Don't warn if -D redefining symbol with constant numeric value.

	* toplev.c (output_file_directive): New function.
	* sdbout.c (sdbout_filename): Deleted.
	* tm-3b1.h, tm-att386.h, tm-encore.h, tm-m88k.h,
	tm-mot3300.h, tm-tahoe.h, tm-vaxv.h (ASM_FILE_START): Use that.

	* c-decl.c (named_labels): No longer static.
	(pushlevel): Clear named_labels.
	(poplevel): Don't clear it here.

Mon Oct 29 13:32:57 1990  Michael Tiemann  (tiemann at cygnus.com)

	* Makefile.in: Update dependencies for various files, mostly cplus-*
	files.

	* rtl.def: Remove Sep 26 that added JUMP_LABELs to INSN and
	CALL_INSN.
	* rtl.h: Add REG_LABEL register note.  For INSN and CALL_INSN, the
	presence of this register note has the same meaning that a non-NULL
	JUMP_LABEL would have with the Sep 26 change.
	* jump.c (jump_optimize): Revert to clearing JUMP_LABEL field of
	JUMP_INSNs only.
	(mark_jump_label): If INSN is an INSN or a CALL_INSN, add a
	REG_LABEL note if a LABEL appears (and no such note already exists).
	??? Once recorded, this information appears never to be used.

	* jump.c (delete_jump): The deletion of INSN must take place when
	INSN is a simple jump.	Also, don't try to optimize if we come
	across an insn with the reorg-generated pattern (USE (INSN ...)).

	* cplus-lex.c, cplus-dbxout.c: Remove vestigial support for dumping
	and undumping the compiler.

	* Merge cplus diffs from Kenner.
	* cplus-cvt.c (convert_to_integer): Fold the COND_EXPR we construct.
	* cplus-typeck.c (build_conditional_expr): Ditto in three places.
	* cplus-lex.c (yylex,do_pending_inlines): Add conditionals for
	_IBMR2.	 This hair will disappear when pcccp support is merged, but
	needed for now.
	* cplus-tree.h: Conditionalize use of non-int bitfield types on
	ONLY_INT_FIELDS.  Also, remove duplication declarations of
	get_temp_name, get_temp_aggr, and get_temp_regvar; add declaration
	of build_decl_list.

Mon Oct 29 11:45:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* fixincludes: Fix missing semi in rusers.h.

Mon Oct 29 07:07:47 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* flow.c (mark_used_regs): When converting "...*p...; q = p + size"
	to "q = p, ...*q..., q = q + size", show that Q is needed after INSN.

	* romp.md (negdi): Directly generate assembly code rather than
	converting this into a MINUS.

	* fold-const.c (fold, case COND_EXPR): Add missing condition in test
	for (A ? 0 : A).

Sun Oct 28 15:01:19 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* flow.c (find_basic_blocks): An indirect jump can go
	to any label whose address is used as data.

	* m68k.md (zero-extend QI): Use gen_rtx, not change_address.

	* Makefile.in (USER_H): List va-*.h explicitly.
	(toplev.o): Depend on RTL_H.
	(stamp-*): Depend on move-if-change.
	(install-headers): Depend on various header files.
	(install-man): Depend on gcc.1.
	(gcc.o): Depend on gvarargs.h and obstack.h.

	* Makefile.in: Make sure every `if' has an `else'.

	* c-typeck.c (build_binary_op_nodefault): Prevent warning for
	variable shift count.

	* i860.md (movsf): Handle moving from CONST_DOUBLE to reg or mem.

Sun Oct 28 09:39:14 1990  Michael Tiemann  (tiemann at cygnus.com)

	* jump.c (delete_jump): The deletion of INSN must take place when
	INSN is a simple jump.	Also, don't try to optimize if we come
	across an insn with the reorg-generated pattern (USE (INSN ...)).

	* sparc.md, tm-sparc.h, out-sparc.c: Significantly rewritten to take
	advantage of new 2.0 optimization capabilities.
	* old-sparc.md, tm-old-sparc.h, out-old-sparc.c: These are copies of
	the above files before the rewrite.  They may be interesting for
	measuring performance of old vs. new machine description idioms.

Sun Oct 28 00:22:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (scan_loop): Don't think that a branch to an end-test of
	a containing look is actually the branch to the end-test of the
	outer loop.

	* reload.c (indirect_ok): Deleted.
	(find_reloads): Accept new arg IND_LEVELS instead of old IND_OK;
	pass this to find_reloads_address and find_reloads_toplev.
	(find_reloads_toplev): Accept IND_LEVELS and pass to
	find_reloads_address.
	(find_reloads_address): Accept IND_LEVELS and pass it on to 
	find_reloads_address_1.
	When calling ourself recursively for a MEM as an address, show
	one indirect level has been used.
	(find_reloads_address_1): Accept IND_LEVELS and pass it to ourselves
	in recursive calls and to find_reloads_address.
	* reload1.c (spill_indirect_levels): New var; used to be
	spill_indirect_ok.
	(reload): Compute number of levels of indirection and set it into
	spill_indirect_levels.
	(reload, reload_as_needed): Pass spill_indirect_levels not
	spill_indirect_ok.

	* reload.c (find_reloads): Make similar change to "V" as "O".

	* reload1.c (eliminate_regs): For binary operations, don't call
	recursively on second arg if null (for EXPR_LIST).
	(eliminate_regs_in_insn): Perform register elmination in the
	REG_NOTES of an insn when we are doing it for the last time.

	* vax.md (call_value_pop): Use correct operand number for number
	of bytes popped.

	* tm-romp.h (EXTRA_CONSTRAINT): Ensure we ignore reg_renumber if
	register allocation hasn't been done yet.

	* function.c (init_function_start): Initialize reg_renumber to zero;
	it is checked in rtx_renumbered_equal_p.

	* loop.c (loop_optimize): Ensure we assign a new LUID to all
	special notes, including NOTE_INSN_FUNCTION_BEG (0).

Sat Oct 27 12:22:46 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* out-a29k.c (print_operand, output_prolog): Don't try to fill delay
	slots with parts of epilogue or prologue unless -O -fdelayed-branch.

	* tm-rs6000.h (STRUCTURE_SIZE_BOUNDARY): Should be 8.

	* reorg.c (mark_target_live_regs): Ignore REG_DEAD notes for pseudos;
	they must not have gotten hard registers.

Fri Oct 26 11:30:28 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gcc.c (main): Set machine_suffix before reading specs file.

	* c-typeck.c (build_binary_op_nodefault): Warn for bad shift counts.

	* stor-layout.c (layout_record):
	BITFIELD_NBYTES_LIMITED affects bitfields only.

	* loop.c (note_addr_stored): Don't assume PLUS in address is aggregate.

Fri Oct 26 00:46:09 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-tree.h: Declare `build_type_conversion' once instead of
	three times.

	* loop.c (loop_skip_over): Handle machines without cc0.
	(labels_in_range_p): Fixed typo where this function returned 0 when
	it meant to return 1.
	(check_for_endtest): New function.  Returns non-zero when
	argument is a simple conditional test insn (suitable for being the
	endtest of a loop).
	(strength_reduce): Use `check_for_endtest' to identify the endtest.
	Also fixed some typos in comments.
	(can_eliminate_biv): Use `check_for_endtest' here, too.
	(get_condition): Generalized to handle machines without cc0.  Now
	THIS_CC_RTX is the value of the cc rtx.

	* integrate.c (expand_inline_function): Conditionalize away
	cc0-specific code with HAVE_cc0.
	(try_constants): Add appropriate declaration for ORIG.
	(try_fold_condition): Generalized to work for non-cc0 condition
	values.

	* cplus-type2.c (digest_init): Add missing declaration of FIELD.
	* rtl.h: Add missing declaration of plus_constant_for_output.
	* jump.c (can_reverse_comparison): Fixed typo.
	(delete_jump): Made to work without cc0_rtx.

Fri Oct 26 00:01:27 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c: Conditionalize references to CC0_RTX on HAVE_cc0.

	* reload.c (find_reloads): For the `o' constraint, if IND_OK is
	true, use offsettable_memref_p instead of the nonstrict version.

	* jump.c (delete_jump): If HAVE_cc0 is not defined, it is not safe to
	delete previous insn that sets a condition code register, because it
	might not be dead.  Rework to look at all registers dying in this insn
	and delete the first previous insn that sets any such register if that
	is all it does.

	* jump.c (jump_optimize): Remove extraneous call to next_active_insn
	in optimization of "if (...) x = 1; else ...; if (x) ...".

	* cse.c (predecide_loop_entry): Don't set cc_value to null and then
	stick it in the rtl.

	* rtlanal.c (find_next_ref): Deleted from here.
	* explow.c: Include hard-reg-set.h for find_next_ref.
	(find_next_ref): Moved to here.
	* Makefile.in (explow.o): Includes hard-reg-set.h.

Thu Oct 25 21:37:15 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* va-mips.h (va_list): Put __ in member names.
	(va_dcl): Rename _va_alist to __va1_alist.
	* va-i860.h (__va_struct): Put __ in member names.
	* gvarargs.h, va-*.h: (__va_ellipsis): New macro.
	(va_dcl): Use that.

	* c-typeck.c (convert_for_assignment): For functions, reverse the
	usual criterion for warning about const vs non-const.  Volatile also.

	* m88k.md, tm-m88k.h, out-m88k.c: Rewrites by wood@dg-rtp.dg.com.
	* tm-m88kdgux.h, tm-v88r32.h, tm-m88ksvr4.h: New files.
	* xm-m88kdgux.h, xm-v88r32.h, xm-m88ksvr4.h: New files.
	* make-m88k, make-m88kdgux: New files.
	* config.gcc (m88k-dgux, m88k-v88r32, m88k-svr4): New alternatives.

	* gvarargs.h, gstdarg.h: Include alternate file for m88k.

	* expr.c (expand_expr): For ARRAY_REF, preserve const and volatile.

	* expr.c (expand_builtin): Handle strcmp and memcmp with function calls
	if can't be open coded.

	* function.c (expand_function_end): Round trampoline addr to init.
	(round_trampoline_addr): Fix braino in alignment.

Thu Oct 25 14:54:18 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c: Now includes insn-config.h.
	(jump_optimize): inequality_comparisons_p takes only one operand again.
	(can_reverse_comparison_p): Handle case where a register is used
	for the condition code; if we can't easily find the COMPARE that
	was used to set the register, say we can't reverse the comparison.
	* Makefile.in (jump.o): Now includes insn-config.h.

	* jump.c (jump_optimize): Put back change removed on Oct 21st;
	emit_store_flag has now been updated.

	* rtlanal.c (inequality_comparisons_p): Reject any ordered
	comparison; we need not just reject when comparing against
	cc0_rtx.
	* recog.c (next_insn{,s}_test_no_inequality): inequality_comparisons_p
	again has only one operand.
	* genattrtab.c (cc0_rtx): No longer needed; remove change of Oct 21.

	* genconfig.c (have_cc0_flag): New variable.
	(walk_insn_part): Set it when we see CC0.
	(main): Write #define HAVE_cc0 when it is set.
	* flow.c: Now includes insn-config.h.
	* Makefile.in (flow.o): Likewise.

	* combine.c (subst): If X and FROM are the same register number,
	but in different modes, force the combine not to be done.
	Add missing initialization of undobuf.storage.

Thu Oct 25 11:34:35 1990  Michael Tiemann  (tiemann at cygnus.com)

	* sched.c (new_sometimes_live): Protect this function in case it is
	called with (OFFSET,BIT) that evaluates to >= MAX_REGNO.

	* jump.c (sets_cc0_p): Conditionalized to abort if called when
	machine does not support cc0.

	* rtlanal.c (reg_set_p): Now non-static.
	* rtlanal.c (rtx_varies_p): Handle LO_SUM more accurately.
	* rtlanal.c (find_next_ref): New function.  Returns the insn that
	next references REG after INSN, or 0 if REG is clobbered before next
	referenced or it cannot easily find a reference to REG.

	* recog.c (next_insn_tests_no_inequality): Conditionalized on
	HAVE_cc0.

	* rtlanal.c (inequality_comparisons_p): Takes new argument
	THIS_CC0_RTX which is the rtl for the condition code value we are
	concerned about testing.  All callers changed.

	* flow.c (propagate_block,mark_used_regs): Conditionalize
	specialized cc0 handling only if HAVE_cc0 is defined.

	* genemit.c (gen_exp): In REG case, If CC0_REGNUM is defined,
	save space by using REG_CC0_RTX instead of allocating a new
	(REG, mode, CC0_REGNUM) rtx if the mode is SImode.

	* final.c (output_addr_const): Handle PC for P.I.C. code generation.
	Also, put parens around CONST expressions so that precedence can be
	maintained.
	* final.c (final_scan_insn): Don't look for redunant compares
	except when HAVE_cc0 is defined.
	Also, use `find_cc' to locate the rtx functioning as the
	condition code register in order to perform appropriate calls
	to `alter_cond'.

	* expr.c (expand_expr): Supply missing arg in calls to `store_expr'.

	* expmed.c (emit_store_flag): New argument COMPARISON is the
	comparison operation whose result we store.

	* recog.c (offsettable_address_p,adj_offsettable_operand): Use
	`plus_constant_for_output' instead of `plus_constant' since we
	are testing conditions which rely on being able to add small
	offsets to e.g. LO_SUM operands.
	* explow.c (plus_constant): No special handling for LO_SUM.  It is
	not valid to add a constant to a term with LO_SUM, since the
	constant may need to be added to the high bits that form the sum,
	and those high bits are not readily available.
	* explow.c (plus_constant_for_output): Same as `plus_constant'
	except that we do allow adding constants to LO_SUM terms.  This
	function works only in special cases such as for
	`adj_offsettable_operand' and `offsettable_address_p'.

	* emit-rtl.c: Declare reg_cc0_rtx which is like cc0_rtx, but
	is a register instead of a special form.  reg_cc0_rtx should
	be used when representing the condition code register on a
	machine where condition codes are only set if explicitly set.
	For machines which allow arbitrary registers to be used as
	condition code registers (such as the MIPS and 88k), normal
	pseudo registers should be used instead.
	* emit-rtl.c (next_cc0_user,prev_cc0_setter): Conditionalized
	on HAVE_cc0.
	* emit-rtl.c (find_cc): New function.  Given INSN, returns
	the rtx of what functions as the condition code register for
	INSN.  On machines which use cc0_rtx, this is always cc0_rtx.
	On machines which have a dedicated register for cc0, this is
	that register.	On machines which allocate pseudos for holding
	condition codes, this is the pseudo found in a REG_CC0 note.
	Otherwise, this function returns 0.
	* emit-rtl.c (init_emit_once): Allocate `reg_cc0_rtx' if
	CC0_REGNUM is defined.

	* cse.c (make_regs_equiv): Don't consider making a reg
	equivalent to another reg whose class is NO_REGS.
	* cse.c (canon_reg): Don't canonicalize a register to
	one whose class is NO_REGS.
	* cse.c (fold_rtx): Conditionalize code for handling cc0_rtx
	with HAVE_cc0.
	* cse.c (predecide_loop_entry): Generalize code to use either
	a register or cc0_rtx.
	* cse.c (cse_insn): Conditionalize code for handling cc0_rtx
	with HAVE_cc0.

	* combine.c (combine_instructions,try_combine,subst):
	Conditionalize code handling cc0_rtx with HAVE_cc0.
	* combine.c (simplify_set_cc0_and): Abort if HAVE_cc0 is not
	defined.
	* combine.c (try_distrib): Add break at end of switch cases.  It is
	dangerous to leave the last cases of a switch statement to fall
	through since new cases added after will get fallen into.

	* recog.c (validate_change): Always succeed for an asm insn,
	since recog always fails to recognize asm insns.  This is
	needed for virtual register instantiation in asm insns.

	* cse.c (cse_main): When following jumps, notice whether a
	particular basic block causes CSE_JUMPS_ALTERED to become set.	When
	this happens, repeat the scan.
	* cse.c (refers_to_mem_p): Changed parameter name REG to BASE,
	which is more accurate.	 Also, taught it how to cope with
	LO_SUM rtl constructs.

Wed Oct 24 15:36:12 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* calls.c (store_one_arg): Accept additional arg, FNDECL.
	Don't save argument area if it is within the REG_PARM_STACK_SPACE
	area, but mark the area in use.
	(expand_call): If ACCUMULATE_OUTGOING_ARGS and REG_PARM_STACK_SPACE,
	treat the stack area for the registers as be clobbered by the called
	routine (e.g., if it was compiled without -O) and save and restore
	it if it was previously used for arguments in a similar manner to
	the remainder of the argument area (done by store_one_arg).

	* calls.c (expand_call): Support new description macro,
	STACK_PARMS_IN_REG_PARM_AREA.
	* function.c (assign_parms): Likewise.

Wed Oct 24 12:47:21 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (build_array_ref): Use main variant for value type.

	* genoutput.c (output_prologue): Let SEPARATE_AUX_OUTPUT
	cause aux-output.c not to be included.
	Makefile.in (aux-output2.c): Copy aux-output.c and then compile it.

	* reload.c (subst_reg_equivs): Treat HIGH like other constants.

	* reload.c (push_reload): When testing hard reg for validity,
	test subsequent regs only against class, not for HARD_REGNO_MODE_OK.

Tue Oct 23 22:49:33 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (collect_expansion): Skip ## at start after the error.

	* gcc.c (default_compilers): Handle - as suffix.
	(main): Make that a special case; it matches only exactly `-'.

Tue Oct 23 22:40:33 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* romp.md (store{s,h,q}i pattern): Allow "b" for clobbered pseudo
	in addition to "d" in first alternative.

	* reload1.c (eliminate_regs): IF_THEN_ELSE isn't a unary operation.

Tue Oct 23 20:35:13 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* m68k.md (zero-extend QI): When pushing, store value at 1(sp).

Mon Oct 22 12:27:08 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (rescan): In the loop that handles numbers, discard \newline.
	Also make `..' terminate a preprocessing number.

	* Makefile.in (tmpgnulib, stamp-gnulib2): Do `set -e'.

	* gcc.c (default_compilers): Give __GNUC__ value 2.
	Don't define it for .S files.

Mon Oct 22 07:33:42 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (emit_indirect_jump): New function; now checks predicate
	of indirect_jump.
	* stmt.c (expand_computed_goto, expand_goto): Use new function instead
	of directly emitting indirect jump.

	* flow.c (mark_set_1): Make LOG_LINKS for hard registers.
	* combine.c (subst): Make new macro COMBINE_RTX_EQUAL_P which
	considers things equal if they are the identical RTX or the same
	register with the same mode; use to see if something changed and
	if we have a match.

	* cccp.c (S_ISREG): Use argument instead of global.
	(main): Correct sense of S_ISREG usage.
	(check_precompiled): Use S_ISREG.

	* flow.c (mark_used_regs): Don't allow reg_next_use to point to
	a NOTE; either point it to replacement insn or invalidate it.

Mon Oct 22 00:13:12 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (xdecls): No warning unless -pedantic.

Sun Oct 21 17:49:24 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genattrtab.c (cc0_rtx): Define, referenced in rtlanal.c.

	* jump.c (jump_optimize): Remove code that depends on changes to
	emit_store_flag that haven't been made yet.

	* expmed.c (extract_bit_field): Correctly check for bitfield
	completely filling a mode.

	* out-romp.c (output_epilogue): Correctly write number of words of
	arguments into trace table.

	* calls.c (store_one_arg): Fix error in change of Oct 19th.

	* reorg.c (mark_target_live_regs): Revert back to old behavior
	of scanning all insns, even those in delay slots.
	(fill_simple_delay_slots): Need only call update_block if we move
	an insn across a label.

	* Makefile.in (LIBFUNCS): Use consistent naming convention for
	comparison routines; gnulib.c was always correct.

	* function.c (assign_parms): Don't overwrite DECL_INCOMING_RTL when
	we are called for the second time.

	* integrate.c (initialize_for_inline): Don't make a new return label
	here; the maximum label number has already been computed.
	(save_for_inline_copying, save_for_inline_no_copy): Do it here instead.

	* reload.c (find_reloads_address): For indirect address where the
	underlying address is also invalid, ensure that we substitute into
	the MEM that we will use.

Sun Oct 21 14:12:47 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* reload.c (find_equiv_regs): Reject reg that overlaps goal.

	* expmed.c (extract_bit_field): For big fields, make sure
	value really goes in the target.

	* expr.c (expand_builtin): Delete __builtin_varargs.
	(EXPAND_BUILTIN_SAVEREGS): New macro says how to do __builtin_saveregs.

	* calls.c (expand_call): No "can't inline" warning if -fno-inline.

	* stddef.h: Add missing #endif.

Sat Oct 20 14:33:14 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* function.c (round_trampoline_addr): New function.
	(trampoline_address): Use that.

Fri Oct 19 15:13:31 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* calls.c (store_one_arg): Don't mark stack area used until after
	we have written into it; if we do it before, the restore might
	clobber a function result being put into that stack area.

	* objc-actions.c (print_lang_statistics): Add empty function.

	* recog.c (inequality_comparisons_p): Deleted from here.
	* rtlanal.c (inequality_comparisons_p): Moved to here; not static.

	* a29k.md (extendhisi2): Fix typo in define_split.

	* Makefile.in (integrate.o): Includes integrate.h.
	(reorg.o): Includes insn-flags.h.

Fri Oct 19 14:49:26 1990  Michael Tiemann  (tiemann at cygnus.com)

	* sdbout.c (sdbout_symbol): If a variable belongs to an inline
	function, the decl's rtl may not be rewritten by alter_reg.  So if
	we have a variable allocated to a pseudo, just get the hard register
	number from `reg_renumber'.  ?? But I thought that COFF was so
	losing that it was decided one could not represent debug info for
	inline functions in COFF.

Fri Oct 19 13:21:25 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* fold-const.c (split_tree): Use NEGATE_EXPR to negate *conp.

Fri Oct 19 00:15:21 1990  Michael Tiemann  (tiemann at cygnus.com)

	* version.c: Bumped to 1.90.03.

	* tree.c: Added facility for gathering statistics on the number of
	tree nodes allocated and the size in bytes they occupy.	 The
	statistics are by tree_node_kind, which is almost like using the
	tree code letter, but has more resolution for dealing with different
	kinds of `x' nodes.  The facility is enabled by compiling the
	compiler with -DGATHER_STATISTICS and using the -fstats flag.

	* expr.c (do_tablejump): Emit a BARRIER after the jump that performs
	the tablejump.

	* cplus-typeck.c (c_expand_return): Rewritten so that the function
	value return register is not used except as a target of the function
	return value.

	* cplus-tree.c (build_cplus_new): New argument WITH_CLEANUP_P
	controls whether this functino should build its result with a
	cleanup or not.	 All callers changed.

	* cplus-lex.c: File updated to latest changes to c-parse.y's lexical
	analyzer.

	* cplus-except.c (cplus_expand_raise): New parameter FOR_RERAISE
	is used to control whether to output extra gotos or not.  When
	nonzero, the compiler can avoid writing out the extra gotos that are
	otherwise needed to avoid warning messages.

	* cplus-decl2.c (flag_short_double): Add support for this option.

	* cplus-decl.c (finish_function): Always cause returns to jump to
	the return label.  This allows -Wreturn to give meaningful error
	messages.

	* jump.c (invert_exp): Make this non-static.
	(jump_optimize): Reorganization and simplification of main inner
	loop.  Comments added explaining what the optimizers are looking
	for.  New optimization added that optimizes for consecutive testing
	of an inequality test followed by an equality test (or vice-versa).
	Changes made to accommodate reorg.c on Sparc.  Code for
	cross-jumping return statements was previously dead in this
	function; as a result of the reorganization, it is now live.
	(find_cross_jump): Added temporary variable PREV1 to hold return
	value of `prev_nonnote_insn' instead of calling the function 3 times
	in a row.  Also changed so that USE or CLOBBERS are not cross-jumped
	unless some real insns are also cross-jumped.  This helps reorg.
	(redirect_jump): Fixed a return that returned no value so that it
	returns 1.
	(rtx_renumbered_equal_p): Test that reg_renumber is nonzero before
	using it.  We may want to call this function earlier than by the
	time that array has been initialized.

	* integrate.c (save_for_inline_{copying,nocopy}): New functions to
	replace `save_for_inline'.  save_for_inline_copying saves the rtl
	for inline functions by copying the rtl to the
	maybepermanent_obstack.	 It is called when the rtl of the current
	function is going to be compiled immediately.
	save_for_inline_nocopy takes advantage of the fact that inline
	function rtl is already allocated to the maybepermanent_obstack, and
	need therefore not be copied if it's not going to be modified by the
	compiler (such as by `rest_of_compilation').
	({initialize_for,finish}_inline): New helper routines for
	save_for_inline_... functions.
	(note_modified_parmregs): Function called by `mark_stores' to note
	whether parameters are assigned to in the body of an inline
	function.
	New interface, integrate.h, provides declarations for functions used
	by other routines that might want to copy chunks of rtl.
	({save,try}_constants): Now global (for integrate.h).
	(mark_stores): Ditto.
	(try_fold_condition): Ditto.

	* dbxout.c (dbxout_symbol): If a variable belongs to an inline
	function, the decl's rtl may not be rewritten by alter_reg.  So if
	we have a variable allocated to a pseudo, just get the hard register
	number from `reg_renumber'.

	* varasm.c (output_const_pool): No longer static.
	(assemble_variable): Do output debugging information for global
	register variables.  GDB does the right thing for global register
	variables.

	* toplev.c: New flag `warn_inline' for warning when a function
	declared inline was not in fact inlined.  Also, new flag
	`flag_no_inline' which disables function inlining, but retains
	other properties of inline functions (such as lazy compilation
	and write-only-if-needed).
	* toplev.c (compile_file): Changed logic for inline function
	handling to work with `warn_inline' and `flag_no_inline'.
	Also modified to call `save_for_inline_nocopy' when insns are to be
	saved but not immediately compiled.

	* function.c (instantiate_decls): If instantiating a function
	which was saved for inline expansion, preserve the rtl created
	by the instantiation as well.

	* flags.h (flag_no_inline): New flag; if nonzero, then no
	calls are inlined, regardless of their declaration.  We still
	save the insns for these functions in DECL_SAVED_INSNS so that
	the functions need not be written if they are never called.

	* calls.c (expand_call): If `flag_no_inline' is set, don't
	inline the call, regardless of whether it was declared inline
	or not.

Thu Oct 18 13:10:26 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* rtl.def (CODE_LABEL): Add new string field.
	* rtl.h (LABEL_NAME): Define macro for access.
	* emit-rtl.c (gen_label_rtx): Initialize it to 0.
	* stmt.c (expand_label): Store proper name of label.
	* final.c (final_scan_insn): Call sdbout_label.

	* tree.h (built_in_function): Add BUILT_IN_VARARGS.
	* c-decl.c (init_decl_processing): Declare __builtin_varargs.
	* expr.c (expand_builtin): Generate code for it.
	Uses new macro EXPAND_BUILTIN_VARARGS.

	* sdbout.c (SDB_IS_FAKE): Macro deleted.
	(MAKE_LINE_SAFE): New macro.
	(sdbout_begin_block, sdbout_end_block, sdbout_end_function): Use it.
	(sdbout_one_type): Delete spurious second arg in all callers.
	(sdbout_types, sdbout_end_function):
	Use sdbout_dequeue_anonymous_types.
	(sdbout_label): New function.

	* expr.h (FUNCTION_ARG_BOUNDARY): Default is now PARM_BOUNDARY.

	* gvarargs.h, va-*.h (va_dcl):
	Add ellipsis so current_function_varargs is set.

	* jump.c (jump_optimize): Exit push-optimize loop at end of insns.

Thu Oct 18 07:09:06 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c: Major reorganization.  Many special cases have been moved
	into more general code and an overall restructuring has been done.
	Numerous bugs have been fixed.	Highlights:
	(dbr_schedule): First make list of all insns needing filling.  Then
	iterate for two passes.	 In each pass, try two methods of filling
	delay slots, then do some canonicalizations, which may create more
	insns to fill.
	(fill_simple_delay_slots): Now uses list of insns that need filling,
	rather than making such a list.
	Enhance code that finds insns when code paths merge to allow multiple
	uses of the label as long as all uses are in the skipped code.
	(struct resource): Notice volatile memrefs.
	(stop_search_p): Allow option to continue when label is reached.
	(find_end_label, make_return_insns): New functions; when we have a
	filled branch that is really a RETURN, first convert it to a jump
	to a return label and then later see if the insns in the delay slots
	are also valid for a RETURN.
	(mostly_true_jump): Test for branch to loop beginning rather than
	branch at end of loop.	Also, conditional return insns predict false.
	(own_thread_p): New function to replace fall_through_to_p.
	(try_merge_delay_insns): Only support merging insns already in an
	insns delay list.
	(get_branch_condition, condition_dominates_p): New functions.
	(steal_delay_list_from_{target,fallthrough}): New functions to
	replace steal_delay_list.
	(redundant_insn_p): New function.
	(update_block, mark_target_live_regs, dbr_schedule): When moving
	an insn not at the front of the basic block to a delay slot,
	leave a "ghost" USE so that we can track things livened and killed.
	(fill_slots_from_thread): Eliminate use of static vars for number
	of slots to fill and already filled.
	Try to modify an insn that follows a register-register copy to use
	the original register; this may create a delay-slot opportunity.
	(try_hoist_target{,_1}): Deleted.
	(relax_delay_slots): Rewritten to just perform canonicalizations
	previously done elsewhere.  No actual delay slot filling is done
	here.  Any new delay slots created will hopefully be filled in the
	next pass around the loop in dbr_schedule.

	* expr.c (emit_push_insn): Don't try to compute a SUBREG of a
	hard register in a non-integer mode when pushing a "partial" arg.

	* recog.c (validate_change, apply_change_group): After reload, ensure
	that operands meet the constraints by calling constrain_operands.
	(validate_replace_rtx_1): Consider two rtx equal if they refer to
	the same register.

	* jump.c (jump_optimize): Extend change of Oct 16th to handle
	the other usage of find_equiv_reg; remove invalid death notes there.

	* rs6000.md, tm-rs6000.h, out-rs6000.c, xm-rs6000.h, make-rs6000:
	New files.

	* out-a29k.c (extract_subword): Use gen_{high,low}part from
	an FP CONST_DOUBLE if host and target float formats are the same
	or REAL_IS_NOT_DOUBLE.

	* out-romp.c (output_fpop, output_fpops): Provide fr0 as a scratch
	register unless it is used in the insn.

	* romp.md: In combined set CC0 and move, optimize case where move
	is nop.
	(DF moves): Fix typo in generation of `get' insn.
	Don't split if input is CONST_DOUBLE because we can't easily
	generate the proper constants.
	(call patterns): Copy data area address via a pseudo to allow
	better CSE'ing.

	* tm-romp.h (RTX_COSTS): Memory is expensive, except for a reference
	to our own data area, which is very cheap.
	(ADDRESS_COST): References to the constant pool are as cheap as
	register + offset, since that's what it will be.

	* emit-rtl.c (gen_{low,high}part): Can often extract word from FP
	CONST_DOUBLE when host and target floating formats agree.
	(add_insn_after): No longer static.

	* reload1.c (reg_equiv_memory_loc): Renamed from reg_equiv_stack_slot
	and now static.
	(reload): If have equivalence with constant that is not a legitimate
	constant operand, force it into memory and handle this as an
	equivalence to memory.
	* reload.h (reg_equiv_stack_loc): Deleted.

Wed Oct 17 20:50:58 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gcc.c, cccp.c (main): Use TARGET_VERSION if -v.

	* expmed.c (extract_bit_field): Typo in last change.

	* Makefile.in (tmpgnulib): Support assembler files named *.asm.

	* gcc.c (do_spec_1): Null-terminate error message.

	* sdbout.c (sdbout_symbol): Handle subreg as DECL_RTL.
	This happens for vars from the parms of inline functions.
	* dbxout.c (dbxout_symbol): Likewise.

	* genattr.c (fancy_abort): New function, as in gen*.c.

Wed Oct 17 14:53:48 1990  Michael I. Bushnell  (mib at geech.ai.mit.edu)

	* pcp.h: New file.

	* cccp.c: Support use of precompiled files
	Include "pcp.h".
	(no_precomp, stringlist, stringlist_tailp): New variables. 
	(union hashval): New field `keydef'.
	(enum nodetype): New alternative `T_PCSTRING'.
	(main): Support -noprecomp.
	Use write_output to write output.
	(rescan): Call pcstring_used for T_PCSTRING symbols.
	(do_include): New local variables pcftry, pcfname, pcf, pcfbuf, 
	pcfbuflimit, and pcfnum.
	Check for possible use of precompiled files.
	(check_precompiled): New function.
	(check_preconditions): New function.
	(pcfinclude): New function.
	(pcstring_used): New function.
	(write_output): New function.
	(create_definition): New function.
	(do_define): Moved most of the work into create_definition.
	(dump_single_macro): New function.
	(dump_all_macros): Moved most of the work into dump_single_macro.
	(dump_defn_1): New argument OF.
	(dump_arg_n): New argument OF.

	* cccp.c: Support generation of precompiled files
	(pcp_outfile, pcp_inside_if): New variables.
	(struct definition): New field `predefined'.
	(main): Support -pcp.
	(rescan): Don't expand macros outside #if during -pcp.
	(special_symbol): Error for most special symbols during #if in -pcp.
	Output precondition for T_CONST and T_SPEC_DEFINED symbols.
	(eval_if_expression): Set and clear pcp_inside_if.
	(do_ifxdef): Output preconditions.

Tue Oct 16 13:22:05 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* stor-layout.c (layout_record): For PCC_BITFIELD_TYPE_MATTERS,
	make it true that zero-length field affects alignment of next field.

	* rtlanal.c (get_integer_term, get_related_value): Moved from cse.c.

	* jump.c (jump_optimize): When reusing value via find_equiv_reg,
	delete obsolete death note.

	* expmed.c (extract_bit_field, store_bit_field):
	Handle fields wider than a word.
	Restrict special case for word-sized field to aligned words.

	* expmed.c (extract_bit_field, store_bit_field): Don't let
	BESTMODE be bigger than the insn can handle.

	* Makefile.in (tmpgnulib): Fix typos handling LIBFUNCS_EXTRA.

	* cccp.c (handle_directive): Turn on code to handle # LINENUM,
	and move initializations past the label `old_linenum'.

	* c-decl.c (grokdeclarator): If traditional, make bitfields unsigned.
	(finish_struct): Don't do that here.

	* fixincludes (CTRL): Don't put quotes around a quote.

	* stddef.h (size_t): Also inhibit if _SIZE_T_.

Mon Oct 15 13:15:30 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (grokdeclarator): Make flag_signed_bitfields work
	for int and for typedefs.

Sun Oct 14 21:28:32 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* flow.c (life_analysis): No hard regs for any pseudos live at setjmp.

	* c-decl.c (duplicate_decls): Don't suppress warning for fn defn
	after implicit declaration, if fn has already been defined.

Fri Oct 12 15:54:11 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (xdecls): Allow ellipsis after parm decls.
	Call c_mark_varargs.
	* c-decl.c (start_function): Clear c_function_varargs.
	(c_mark_varargs): New function.	 Set it.
	(store_parm_decls): Maybe call mark_varargs.
	* function.c (init_function_start): Clear current_function_varargs.
	(mark_varargs): New function.  Set it.

Thu Oct 11 13:15:36 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* genattrtab.c (fancy_abort): New function, as in gen*.c.

	* expr.c (saveregs_value): New variable.
	(init_expr, save_expr_status, restore_expr_status):
	Init, save, restore the variable.
	(expand_builtin): Don't call __builtin_saveregs twice in one function.

	* va-*.h: Rename all structure fields to start with __.
	* va-pyr.h: Rename variables also.
	(va_start): Delete the unmatched {.
	(va_end): Now a nop.

Wed Oct 10 22:03:20 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* va-sparc.h (__va_ctl): Rename fields to start with __.

Tue Oct	 9 12:55:48 1990  Michael Meissner  (meissner at osf.org)

	* Allow configuration to specify size of a wide character.
	(WCHAR_TYPE_SIZE): New parameter.
	(WCHAR_UNSIGNED): New parameter, says whether type is signed.

	* c-decl.c (WCHAR_TYPE_SIZE): Define if not defined.
	(WCHAR_UNSIGNED): Likewise.
	(wchar_type_node, signed_wchar_type_node, unsigned_wchar_type_node):
	(wchar_array_type_node): New variables.
	(init_decl_processing): Init them.
	* c-tree.h: Make them extern.

	* c-common.c (WCHAR_TYPE_SIZE, WCHAR_BYTES): Define them.
	(combine_strings): Handle them.
	* c-parse.y (init_lex, yylex): Likewise.

	* c-typeck.h (digest_init): Use wchar_type_node and
	signed_wchar_type_node to get the base type of wide strings, rather
	than using int and unsigned.

Tue Oct	 9 14:16:37 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expmed.c (extract_bit_field): Typo; section for extv used extzv.

	* c-typeck.c (digest_init): Error if union has no name field.
	(process_init_constructor): For union, use first named field.

	* flow.c (propagate_block): Include NOTE at end of block in scan.

	* fixincludes: Fix missing semicolon in rstat.h.

	* cccp.c (main): Record the option names used for assertions.
	Call make_assertion properly.

Tue Oct	 9 06:18:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (fold_rtx): Call find_best_addr before seeing if we know
	what is located at that address.
	Don't try to return the contents of an ADDR_DIFF_VEC table; we have
	no simple way of representing it.
	(cse_insn): Detect SRC == DEST even when DEST is not the canonicalized
	form of the value represented by SRC.

	* loop.c (scan_loop): Don't set THRESHOLD until LOOP_HAS_CALL
	has been set.
	(struct induction): Add field MEM_MODE.
	(find_mem_givs, combine_givs_p): Record mode used to access memory
	when making DEST_ADDR giv and use it to test validity of
	derived address.

	* jump.c (delete_jump): No longer static.
	(invert_jump): Allow changing RETURNs to branches and vice versa.
	Now returns success/failure indication like redirect_jump.
	* rtl.h (delete_jump): Define.

	* calls.c (store_one_arg): Don't expand a `partial' arg into
	arg->stack and don't set arg->value to arg->stack_slot for
	such args.
	Clean up by breaking out common code.

Mon Oct	 8 15:09:31 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* loop.c (can_eliminate_biv_p): Insist that mult_val be positive.

	* Makefile.in (insn-*): Remove semicolon from these rules.
	(INSTALL_PROGRAM, INSTALL_FILE): New variables.
	(install-*): Use those variables.
	(mandir): Default based on manext.

Mon Oct	 8 10:57:14 1990  Michael Tiemann  (tiemann at cygnus.com)

	* stmt.c (expand_catch_default): Return 1 if EXCEPT_STACK is
	nonzero.

	* c-decl.c (finish_enum): Argument to floor_log2 in
	calculation of negprecision was not negated.

Mon Oct	 8 06:50:15 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* rtl.h (INSN_ANNULLED_BRANCH_P, INSN_FROM_TARGET_P): New fields.

Sun Oct	 7 23:33:24 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-i386v.h (STARTFILE_SPEC): Handle -p here.
	(LIB_SPEC): Not here.

Thu Oct	 4 05:06:02 1990  Michael Tiemann  (tiemann at cygnus.com)

	* gcc.c (default_compilers): Define __OPTIMIZE__ for %{O*}, not just
	%{O}. This permits the use of -O2, -O3, etc., with predictable
	results.

	* expr.c (expand_expr): Do not build new cleanups for
	TARGET_EXPRs.  Their cleanups are now handled entirely by the
	language-specific code that causes them to be generated.

	* function.c ({push,pop}_temp_slots): Do not change
	temp_slot_level if within a sequence.  GNU C++ must be able to
	emit a sequence it is building anywhere at the level the sequence
	was initiated.	If the level is changed when building a sequence,
	temporaries could be unwittingly shared.

	* cplus-tree.def: change print strings for NEW_EXPR and
	CPLUS_CATCH_DECL.

	* cplus-dem.c (do_type): Support `long long' types.

	* cplus-decl.c (finish_file): No longer try to emit _init,_fini
	records for GNU C++.  This was supposed to help the SunOS dynamic
	linker link C++ code, but it turned out not to work.

	* cplus-decl.c ({start,finish}_function): Don't emit an extra
	binding contour if not in a constructor or destructor.	It is not
	needed, and saves writing out unneeded debugging info.

	* cplus-class.c (build_method_call): Conditionalize handling of
	wrappers and operator->(); these are now only compiled if ESKIT is
	#defined.

	* cplus-decl.c (define_label): Updated to treat labels in the same
	new fashion that c-decl.c treats them.

	* cplus-*.c: C++ front-end files now support a generic
	class-browser interface.  It is up to some adventurous hacker to
	implement the class browser.

	* cplus-*.c: C++ front-end files no longer #include rtl.h.

Sun Sep 30 15:53:02 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (make_assertion): New function.
	(main): Handle -A by calling make_assertion.
	-A- gets rid of predefined macros and those specified earlier.

	* print-tree.c (print_node_brief): Declare i for printing REAL_CST.

	* recog.c (immediate_operand, nonmemory_operand): Don't accept
	integer constants if caller wants a floating mode.

Sat Sep 29 18:40:08 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* reload1.c (emit_reload_insns): Handle preserving death info
	with find_equiv_reg.

	* reload.c (find_equiv_reg): Handle INSN_CLOBBERS_REGNO_P.

	* fixincludes: For link pointing outside /usr/include,
	use $x rather than $dest.

	* optabs.c (expand_float, expand_fix): Use dconst1, not 1.0.

Sat Sep 29 06:38:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (try_split): Use emit_insn_after and delete_insn to
	ensure that the correct insn chain is maintained in the presence of
	SEQUENCEs; be careful if the insn being split has a following BARRIER.
	* jump.c (delete_insn): Correctly update insn chain when deleting
	insn following or preceeding a SEQUENCE.

Fri Sep 28 16:07:42 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (yylex): Use REAL_VALUE_TRUNCATE for `f' suffix.

	* fold-const.c (const_binop): Don't initialize REAL_VALUE_TYPE decls.

Thu Sep 27 14:06:37 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expr.c (expand_expr): Set MEM_VOLATILE_P from TREE_THIS_VOLATILE.

Wed Sep 26 00:21:23 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-mips-news.h: New file.

	* out-i860.c (output_size_for_block_move): Don't decrement.
	(output_block_move): Decrement initial storing address instead.

	* c-parse.y (yylex): Always try unsigned int if `u' is written.

	* c-typeck.c (build_unary_op): Don't let &* make an lvalue.

	* c-parse.y (initlist): Use [N] rather than case N: for array index.

	* tm-seq386.h (LINK_SPEC): Define it.

	* c-parse.y (yylex): Don't try signed int for nondecimal constant
	if -traditional.  Improve messages for -Wtraditional.

	* stor-layout.c (layout_record): Avoid using DECL_SIZE_UNIT.

	* jump.c (jump_optimize): Scan all insns for label refs.
	(mark_jump_label): Quickly ignore uninteresting rtl types.
	* rtl.def (INSN, CALL_INSN): Add a slot for JUMP_LABEL.

	* jump.c (jump_optimize): Try combining stack adjusts with pushes.

Mon Sep 24 07:31:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* stmt.c (expand_computed_goto): Emit barrier after jump.

	* expr.c (case LABEL_DECL): Return a MEM, so we can take its
	address; correctly form LABEL_REF.

Sun Sep 23 22:54:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (struct movable): Delete field SET_EQUAL; new field MOVE_INSN.
	(scan_loop): Only use REG_EQUAL note under very restricted
	cirsumstances.	Set MOVE_INSN field in movables when appropriate.
	(combine_movables): Simplify matching test now that we only have one
	source field.
	(move_movables): Handle MOVE_INSN movables by emitting a new move
	insn in front of the loop.
	Correct typo in checking for CALL_INSN.
	Don't try to make a REG_EQUAL note.
	(count_loop_regs_set): Remove extraneous assignment to MAY_NOT_MOVE.

Sun Sep 23 14:59:21 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (S_ISREG): Define it unless overridden.
	(main, finclude): Use that.

	* reload1.c (reload): If insn after a function call uses the
	function value, and that reg is spilled, and the insn might
	use it for reloading, add an extra need.
	(reload_as_need): Detect such insns for new arg to choose_reload_regs.
	(choose_reload_regs): In that case, don't choose function value reg.

	* tm-convex1.h, tm-convex2.h (CPP_SPEC): Define __NO_INLINE_MATH.

Sun Sep 23 07:52:32 1990  Michael Tiemann  (tiemann at cygnus.com)

	* version.c (version_string): Bumped to 1.90.02.

	* final.c (leaf_function): Variable now non-static.
	* final.c (only_leaf_regs_used): Function now non-static.
	* final.c (leaf_function_p): Move initialization of
	`leaf_function' from here...
	* toplev.c (compile_file): ...to here.	We want to know the
	value of `leaf_function' when we perform code reorginization.
	* final.c (leaf_function_p): If profiling arcs, we cannot have
	a leaf function.  Also, we have to look at insns in
	`epilogue_delay_list' to know that all our constraints are
	satisfied.
	* final.c (only_leaf_regs_used): Have to look in
	`epilogue_delay_list' to know that all our constraints are
	satisfied.

	* toplev.c (warning_with_file_and_line,warning): Declare third
	argument V3 for warnings that require 3 `%' expressions in S.
	* toplev.c (strip_off_ending): New helper function that removes
	a GCC-recognized filename extension.  Call this function in
	GCC instead of expanding it inline in C code everywhere.

	* sched.c (schedule_block): The last basic block does not have
	no live registers.  Also, check that we don't copy from an
	entry in `basic_block_live_at_start' that does not exist.
	* sched.c (update_reg_first_use): When splitting insns, the
	insn that is in REG_FIRST_USE might become a NOTE, and a new
	insn become the insn that should be considered the first use.
	`update_first_use' keeps REG_FIRST_USE up to date.
	* sched.c (update_links): Call note_stores with
	`update_first_use' when an insn splits.

Sun Sep 23 00:05:49 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (grokdeclarator): Put var array bound in save_expr.

Sat Sep 22 14:01:00 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tree.c (build_index_type): Don't hash variable-bound type.

	* c-decl.c (start_decl): Error here if var-size object initialized.
	(grokdeclarator, finish_struct): Record types & decls
	with array sizes not written as constants.
	* c-tree.h (C_TYPE_VARIABLE_SIZE, C_DECL_VARIABLE_SIZE): New macros.

	* tm-aix386.h (LIB_SPEC): Different library name for -p.  Always -lc.
	(LINK_SPEC): Don't pass -lg or -g.
	(CPP_PREDEFINES): Define _I386 and _AIX.  Don't define unix.
	(SDB_DEBUGGING_INFO): Define it.
	(DBX_DEBUGGING_INFO): Undefine it.
	(ASM_FILE_START): Output .noopt if not optimizing.
	(PCC_BITFIELD_TYPE_MATTERS): Define it.
	(FUNCTION_PROFILER): Add definition.

Fri Sep 21 16:26:51 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* function.c (current_function_epilogue_list): Define this here.
	* reorg.c: Not here.

Fri Sep 21 13:11:11 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* varasm.c (assemble_external_libcall): Frob SYMBOL_REF_USED here.

Thu Sep 20 15:29:44 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expr.h (struct optab): Field libfunc, an rtx, replaces lib_call.
	* rtl.h (SYMBOL_REF_USED): New macro.
	* optabs.c (init_optabs): Initialize that field properly.
	Also initialize new variables *_libfunc.
	(various functions): Use those vars; use libfunc field.
	* expr.c (convert_move, emit_block_move, clear_storage): Use the vars.
	(emit_push_insn, expand_assignment): Likewise.

Thu Sep 20 13:51:18 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* out-a29k.c (current_function_epilogue_delay_slot): Renamed from
	epilogue_delay_slot.

	* romp.md (movdi): Fix missing short/long qualifier on memory ref.
	(SFmode/DFmode move patterns): Add explicit alternatives for
	storing and loading general registers from memory; also add
	DEFINE_SPLITs for these cases for DFmode.
	(negsf2,negdf2): Don't use XOR if an operand is a hard FP register.

	* tm-romp.h (FIXED_REGISTERS, CALL_USED_REGISTERS): Use correct
	register numbers for FP registers.

	* output.h (current_function_epilogue_delay_list): New var.
	* function.c: Include output.h and initialize new var above.
	* Makefile.in (function.o): Now includes output.h.
	* reorg.c (epilogue_delay_list): Renamed to
	current_function_epilogue_delay_list.

	* final.c (final_scan_insn): Don't delete no-op insn if in delay slot
	or if we have already pre-scanned.

	* genconfig.c (max_insns_per_split): Rename from
	max_insns_per_split_flag and default to 1 instead of 0.

	* genattrtab.c (n_comma_elts): Return zero for null string.

	* sdbout.c (MIN,MAX): Add to here; required by recent changes.

	* expr.c (safe_from_p): A MEM rtx is not safe from an INDIRECT_REF.

	* c-parse.y (ridpointers): Move definition in front of first use.

	* reorg.c (mark_referenced_resources): Allow for CODE_LABELs between a
	CALL_INSN and USE insns preceeding it.
	(mark_set_resources): Likewise, for following CLOBBERs.

Wed Sep 19 17:45:49 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* assert.h (printf): Don't define; should be in stdio.h.

	* rtl.h (PUT_REG_NOTE_KIND): New macro.
	* sched.c (attach_deaths): Use it.

	* reorg.c (mark_referenced_resources): If we put insns to load
	parameters into the delay slot of a CALL, ignore the USE insns
	for those parameters.

	* function.c (fixup_var_refs_1): Don't call fixup_memory_subreg unless
	its would-be operand is a SUBREG.

Wed Sep 19 00:26:59 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* print-tree.c (print_node): Indent before printing RTL.

	* Makefile.in (protoize.o, unprotoize.o): Look for SYSCALLS.c.X
	in libsubdir.

Tue Sep 18 21:55:01 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (fold_rtx): For MEM with constant address, split the
	address into possible base and offset; ensure constant pool
	value is same mode as our reference unless we are getting a
	word of a DImode CONST_INT.
	Treat SYMBOL_REF and LABEL_REF as constants.
	If we are getting a word at a constant offset from a jump table,
	replace with the contents of that jump table entry.
	(cse_insn): When folding jump to variable location (e.g., tablejump),
	LABEL_REF is the cheapest of all, since the branch would be simple.
	Special-case changing variable branch to normal unconditional
	because the RTL may be different (e.g., the variable branch may
	include a USE).

Tue Sep 18 18:33:19 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* toplev.c (count_error): Handle warnings_are_errors.
	(W_options): Handle -Werror.

Mon Sep 17 00:02:12 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (lookup_label): Use void as type of label.
	* stmt.c (label_rtx): No longer static.
	* expr.c (expand_expr): Handle LABEL_DECL.

Sun Sep 16 16:27:29 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expr.c (expand_builtin): Error for __builtin_nextarg
	if function definition doesn't have `...'.

	* expmed.c (store_bit_field): Adjust BITPOS to UNIT all at once.
	for insv, use mode of operand 3 instead of SImode.  Define MAXMODE.
	Adjust XBITPOS along with mode of XOP0.
	(extract_bit_field): Adjust XBITPOS along with mode of XOP0.
	for extv and extzv, use mode of operand 3 thoroughly instead of SImode.

	* sdbout.c (CHAR_TYPE_SIZE,...): Default definitions of these macros.
	(plain_type_1): Use those macros to distinguish int and floating types.

	* toplev.c (rest_of_decl_compilation): Output TYPE_DECL here for sdb
	only if top_level.

	* c-parse.y (unary): Don't forget to look up the label.

	* c-typeck.c (build_conditional_expr): Don't skip arg promotion.

Sun Sep 16 14:54:03 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* combine.c (try_combine): If we don't recognize the combined insn,
	try it without any CLOBBERs.

	* final.c (final_scan_insn): Prevent CC tracking from thinking
	that the CC was set by an insn in the delay slot of a CALL_INSN.

	* expmed.c (init_expmed, expand_divmod): Allow machine to have
	low cost specified for divides by powers of two if it can do it by
	a method that if cheaper than the normal shift/branch/adjust mechanism.

	* cse.c (fold_rtx): When putting constant last, ensure that the
	resulting insn is valid.

	* objc-actions (finish_objc): Remove dup defn of gen_declaration_file.

	* objc-parse.y (ridpointers, token_buffer): Define before use.

	* reload1.c (scan_paradoxical_subregs): Declare correctly.

	* tm-romp.h (ENCODE_SEGMENT_INFO): Use INTEGRATED bit to mark
	SYMBOL_REFs that are addresses of functions (really their data blocks).
	(LEGITIMATE_CONSTANT_P): Data block addresses of functions are not
	valid operands.
	* out-romp.c (symbolic_operand): Likewise.
	* romp.md (call*): emit_move_insn will now do force_const_mem
	so it needn't be done explicitly.

	* out-romp.c (output_fpop): Work around yet another RT fp bug;
	cannot merge output and first operand for SFmode if general reg.

	* romp.md: Add new pattern to match combination of copy and test.
	Use nilo instruction to set CC.

Fri Sep 14 07:07:01 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* c-tree.h: Define all *_type_node trees defined in c-decl.c, in the
	same order as defined there.

Fri Sep 14 08:39:17 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-typeck.c (build_c_cast): Convert READONLY_DECLs to make up
	for the fact that we do not call `default_conversion' anymore.

	* function.c (instantiate_virtual_regs): If the function is inline,
	we don't need to worry about making valid rtl, but we do need to
	worry about instantiating all virtual registers.  Otherwise we must
	make the rtl valid, and we have other opportunities to eliminate the
	virtual registers during the compilation.

Thu Sep 13 16:00:05 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* reload.c (MATCHES): Check for different rtx's with same reg number.

	* fixincludes: Discard `.' from value of `files'.

	* c-parse.y (unary_expr): Use unary && to get address of label.
	(stmt): Handle `goto *EXPRESSION;'.
	* stmt.c (expand_computed_goto): New function.

	* gstdarg.h: New name for stdarg.h.
	* Makefile (install-headers): Rename gstdarg.h while installing it.

	* sdbout.c (PUT_SDB_LAST_DIM): Get rid of SDB_DELIM.
	(plain_type): Output accumulated array dims and size.
	(plain_type_1): Eliminate arg NOSIZE.  Save up dims and size.
	Call self rather than plain_type for pointers and functions.
	(sdbout_array_type, sdbout_array_depth): Functions deleted.

Thu Sep 13 16:12:15 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (build_method_call): Fix typo in deciding whether to
	do hairy or trivial pointer conversions on `this'.

	* cplus-tree.c (layout_vbasetypes): Don't double-count space taken
	up by virtual baseclasses.

Wed Sep 12 18:14:19 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-m68k.h: Use asm_fprintf widely.
	(REG_PREFIX, IMMEDIATE_PREFIX, LOCAL_LABEL_PREFIX, USER_LABEL_PREFIX):
	New macros.

	* final.c (asm_fprintf): New function.

Wed Sep 12 06:07:50 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-dbxout.c (dbxout_type): Output basetype size and offset info
	in bits, not bytes.

	* cplus-decl.c (finish_{decl,function}): Set CLASSTYPE_ASM_WRITTEN
	bit of types used by non-extern VAR_DECLs.  Set it also for types of
	PARM_DECLs and return types of functions defined in the file being
	compiled.

Tue Sep 11 13:21:40 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* sdbout.c (plain_type_1): New argument NOSIZE.	 Inhibits size output.
	(sdbout_array_type): Call plain_type_1 directly; set NOSIZE.

	* sdbout.c (sdbout_array_type): New argument DEPTH.
	Don't output more than SDB_MAX_DIM dimensions.
	(sdbout_array_depth): New function.
	(plain_type_1): Start DEPTH by calling sdbout_array_depth.

	* gnulib2.c (_bb_init_func): Library member now named _bb.

	* tree.h: Add comments.

Mon Sep 10 17:20:06 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (install): Fix typo.

	* cccp.c (macarg1): With -traditional, backslash quotes chars.

Mon Sep 10 16:37:01 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (jump_optimize): Don't swap THEN and ELSE parts during jumps
	runs after reload.

Mon Sep 10 13:07:39 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (collect_expansion): Don't actually substitutee into a
	string if ANSI; just consider warning.

	* gnulib2.c (div_qrrnd for i386): Fix typo.  Rename some args.

	* sdbout.c (sdbout_array_type): New argument DEPTH.
	Don't output more than SDB_MAX_DIM dimensions.
	(plain_type_1): Start DEPTH at 1.

Sun Sep	 9 22:02:24 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* out-a29k.c (gen_reg_operand): Exclude SUBREG of a special
	register.

	* cse.c: (fold_rtx): Get equivalent for register before seeing if
	memory reference is to constant pool.
	(cse_ins): Only call force_const_mem if we actually try to use
	the constant (i.e., we haven't found anything cheaper).

Sun Sep	 9 21:49:18 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* ..._BIG_ENDIAN: Now expect definition to be 0 or 1.
	All refs and defs changed.

	* tm-mips.h (CPP_SPEC): Error for -EL (for -EB, if DECSTATION).

	* sdbout.c (sdbout_one_type): Set TREE_ASM_BEING_WRITTEN before
	recursion, and TREE_ASM_WRITTEN after.

Sat Sep	 8 16:47:27 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* hard-params.c (main): Don't try to malloc all memory.

Sat Sep	 8 16:38:53 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload1.c (reload): Set reg_equiv_constant if the equivalence
	is any constant, not just a legitimate constant operand.

	* final.c (get_attr_length, shorten_branches, final_scan_insn):
	If JUMP_TABLES_IN_TEXT_SECTION is defined, don't put jump tables
	in readonly data section, even if it exists.

Sat Sep	 8 14:07:05 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (bootstrap*): Pass null ALLOCA definition to recursive
	makes when compiling with GCC since it never needs alloca.c.

	* c-typeck.c (build_binary_op_nodefault): Warn for signed < unsigned.
	Controlled by -W.

	* tm-i386v4.h: New file.

Fri Sep	 7 13:10:24 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (STDC_VALUE): New macro, defaulting to 1.
	(intialize_builtins): Use that.

	* m68k.md (movqi): `st' does not set cc's.

Fri Sep	 7 07:49:23 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genemit.c (gen_expand): Fix test for no C code.
	If no C code, no MATCH_DUPs, and only one insn to write, handle
	like DEFINE_INSN and return that insn rather than making a sequence.

	* emit-rtl.c (add_insn_after): If previous or next insn is a
	SEQUENCE, update the NEXT_INSN in the last insn in the SEQUENCE or
	PREV_INSN of the first, as appropriate.
	(emit_insn_before, emit_jump_insn_before, emit_note_before):
	Call add_insn_after.

	* stmt.c (check_for_full_enumeration_handling): If a switch whose index
	is an enumerated type contains labels for every enumeration value,
	make the label for the last value the default label since such a
	switch can never fall through.

	* genattr.c (fatal): Declare first arg correctly.

	* combine.c (try_combine): No longer check REG_FUNCTION_VALUE_P;
	its value shouldn't matter once RTL generation is complete.
	(subst): If NOT is present as an operand in commutative operation,
	put it last to reduce the number of required patterns.

	* out-romp.c (output_fpops): Align to word boundary before writing
	any floating-point blocks.

	* function.c (instantiate_virtual_regs_1): Fix typo in previous change.
	When a MEM must be copied, use copy_rtx; the PLUS may also be shared.

Thu Sep	 6 15:19:42 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* gcc.c (do_spec_1): Don't add __ to -D if __ already present.

	* c-typeck.c (convert_for_assignment):
	Better warning for FCN * vs. void *
	Specific warning for char * vs. unsigned char *.

Thu Sep	 6 14:52:08 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (find_basic_block): Return -1, not 0, if we can't find
	the basic block.
	(mark_target_live_regs): Clear PENDING_DEAD_REGS unconditionally.
	(relax_delay_slots): Don't call optimize_skip for unconditional jump.
	Only try to remove jump if it is a simple conditional or
	unconditional jump (but not a tablejump or similar such).

	* cse.c (invalidate, refers_to_mem_p, cse_rtx_addr_varies_p):
	Consider (plus (reg) (const_int)) to be a fixed address if REG
	is constant; old code just handled REG.

	* genrecog.c (enum routine_type): Use to distinguish two types of
	routines that we write: recog and split_insns.
	(make_split_sequence): Write out extern for gen_split_ function.
	(break_out_subroutines, write_subroutine, write_tree, main):
	Use new enum routine_type instead of passing "split" or "recog".
	(write_subroutine): Write correct type for splitting functions and
	return 0, not -1.
	(main): Write includes before declarations of gen_split_ functions
	since "rtx" is needed for them.
	* rtl.h (try_split, split_insns): Added definitions.

Wed Sep	 5 16:20:07 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Makefile.in (includes): Use proper directory.

Tue Sep	 4 13:59:31 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (store_parm_decls): Let extra_warnings control
	warnings about parms not declared.

	* flow.c (life_analysis): Move code to detect stack-adjust insns.
	It was unreachable.

	* gnulib.c, gnulib2.c (abort): #undef in case config.h defines it.

Mon Sep	 3 17:50:16 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* calls.c (expand_call): If SETUP_INCOMIMG_VARARGS is defined, pass
	unnamed args in registers.
	* function.c (assign_parms): Call SETUP_INCOMING_VARARGS for
	stdargs as well as varargs; ensure we only call it once.

	* function.c (instantiate_virtual_regs_1): Don't assume all memory
	addresses are valid for all insns.

Sun Sep	 2 22:17:40 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* expr.c (emit_library_call): Push all stack args, then load regs.

	* c-decl.c (c_build_type_variant): For an ARRAY_TYPE,
	put the qualifier into the array as well as the element.
	(grokdeclarator): When a field or variable is supposed to be
	a const or volatile array, make the array elements const or
	volatile, but also make the field or variable so.

	* c-decl.c (grokdeclarator): Turn off the warning for const or volatile
	function type when making an array.  It was useless.

Fri Aug 31 16:26:40 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-common.c (truthvalue_conversion): Let the
	language-specific code decide how to convert EXPR
	if it is not one of the special forms we recognize.

Fri Aug 31 15:08:19 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* gcc.c (execute): Use I instead of undefined var J if DEBUG defined.

Fri Aug 31 14:37:36 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* sdbout.c (sdbout_begin_block): Delete excess arg to sdbout_block.

Thu Aug 30 21:31:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expmed.c (extract_bit_field): Fix typos in computations of UNIT.

Wed Aug 29 12:33:33 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* sdbout.c (sdbout_reg_parms): Don't advance parm twice.

Tue Aug 28 22:49:41 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (delete_newlines): New function.
	(macroexpand): Remove newlines from args used more than once.

Tue Aug 28 22:16:50 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* Makefile.in (sched.o): Add to list of files to compile.

	* c-parse.y (position_after_white_space): Declare with correct type.

	* fold-const.c (optimize_bit_field_compare): Fix typo.

	* reorg.c (split_insns): No longer need extern for this here.

	* toplev.c (sched_dump_file): Define.
	(compile_file): Initialize and print sched_time and sched2_time.

	* local-alloc.c (block_alloc): Fix typo in allocation of insn_map.

	* cse.c (cse_insn): Try related value in case where CONST is seen
	first and SYMBOL_REF later.

Tue Aug 28 16:26:50 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* cccp.c (main): Don't modify or validate arg of -D here.
	(make_definition): Do it all here.

	* function.c (assign_parms): Reenable `register' for parms.

Tue Aug 28 07:12:19 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tm-a29k.h (CONST_COSTS): All CONST_INTs are cost zero; adjust
	SYMBOL_REF and CONST_DOUBLE costs to reflect their actual cost.

	* expr.c (expand_expr): Don't suppress EXPAND_SUM here if not Pmode.
	(expand_expr, case *_DECL): Return constant address if
	EXPAND_SUM or EXPAND_INTO_STACK in addition to EXPAND_CONST_ADDRESS;
	all of these cases will later call memory_address.
	(expand_expr, case COMPONENT_REF): Always make recursive call with
	EXPAND_SUM.
	(expand_expr, case PLUS_EXPR): Try to form constant if X + CONST and
	mode is Pmode without EXPAND_SUM; if not EXPAND_SUM, use force_operand.
	Check for MODE != Pmode with EXPAND_SUM here.
	(expand_expr, case MINUS_EXPR): Always process X - CONST_INT as
	X + (-CONST_INT)).

Sun Aug 26 23:10:10 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-decl.c (c_decode_option): Handle -funsigned-bitfields. 
	(grokdeclarator): Do the real work.
	(grokfield): Pass either FIELD or BITFIELD to grokdeclarator.

	* tm-att386.h (asm_output_common): Use SIZE, not ROUNDED.

Sat Aug 25 17:17:27 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (unary_expr): Turn off handling of &...
	* c-decl.c (store_parm_decls): Turn off extra dummy parameter.

	* tm-att386.h (EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): New macros.
	(BSS_SECTION_ASM_OP): New macro.
	(ASM_OUTPUT_LOCAL): Call bss_section, don't just print .bss.

	* combine.c (subst): Handle shift within mem, as multiplication.

Sat Aug 25 11:43:09 1990  Michael Tiemann  (tiemann at cygnus.com)

	* final.c (alter_cond): Handle CC_INVERTED.

	* conditions.h (CC_INVERTED): New flag indicating that the condition
	tested leaves the falgs set opposite to the condition tested.  This
	is unsafe for IEEE floating point operations, but useful for integer
	operations which can combine with condition-code setting operations.

	* c-parse.y (position_after_white_space): New function.	 Skips
	all of the whitespace at the current location in the input
	file, taking NEXTCHAR into account.  Changed all callers of
	`skip_white_space' in grammar to use this function instead.

	* genrecog.c (main): Generate code which is more easily optimized by
	GCC's cse.  In particular, start each recognizer with the address of
	`recog_operands' in a register.

	* reload.c (combine_reloads): Can only combine reloads if the
	register we find can hold the entire output reload (i.e., SFmode
	register may not be suitable for combining with DFmode register).

	* optabs.c (have_sub2_insn): Fixed typo.
	* combine.c (combine_instructions): Fixed typo in comment.

	* function.c (expand_function_end): Emit a barrier after a RETURN
	jump.

	* Added diffs for new instruction scheduling code.
	* emit-rtl.c (try_split): Moved here from reorg.c and made
	public.	 Both instruction scheduling and delayed branch
	filling now use the same code to split insns.
	* flags.h: Add new flags FLAG_SCHEDULE_INSNS for instruction
	scheduling before register allocation and
	FLAG_SCHEDULE_INSNS_AFTER_RELOAD for insn scheduling after
	register allocation.
	* recog.c (constrain_operands): Recognize pseudo registers as
	registers for the purpose of insn constraint matching before
	register allocation.  Otherwise, the insn scheduler assumes
	the operands will be memory, which is usually wrong (and
	causes it to build bad schedules).
	* sched.c (order_calls): New function.	For two CALL_INSNS in
	the rtl chain, we set up a constraint that the second
	CALL_INSN may not be scheduled to run before the first.
	(sched_analyze_*): Three kinds of dependencies (true, anti,
	and output) constrain the order in which insns can be
	rearranged and still preserve their execution semantics.
	We now handle dependencies for pseudo and hard register usage
	and for memory usage in these functions.
	(launch_links): The ordering of which newly ready insns to
	execute is now preserved according to their `priority' in the
	insn chain, and no longer on their order in the dependency
	list from which they were launched.
	(schedule_block): Removed support for trying to schedule insns
	taking branch delays into account.  Reorg.c should be hacked
	to understand which insns to pull into delay slots and which
	insns to leave alone.
	(schedule_block): (Re-)compute all register life information here.
	No longer dependent on flow to keep `basic_block_live_at_end'
	allocated.
	(schedule_insns): Recompute LABEL->BASIC BLOCK mapping, so we
	can compute register life information.
	* rtl.c (add_dependence): New function to add and remove insn
	dependencies.  If an insn (I2) must execute after another
	(I1), we add an INSN_LIST containing I1 to I2's	LOG_LINKS.
	If such an INSN_LIST is already in I2's LOG_LINKS, we don't
	add a second.
	(remove_dependence): Similar, but removes dependencies.	 May
	not actually be needed.
	* toplev.c (compile_file,rest_of_compilation): Added code for
	dumping info about insn scheduling.

Fri Aug 24 17:24:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* Implement `aligned (INTEGER)' attribute for real.
	* c-parse.y (attrib): Really record info for `aligned' attribute.
	Don't warn for any integer alignment.
	(attribute_list): Make a list.
	(initdcl, notype_initdcl, component_declarator): Handle that info.
	* c-common.c (decl_attributes): New function.

Fri Aug 24 07:12:05 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genattrtab.c (insn-config.h): This is really needed after all.
	* Makefile.in (genattrab.o): Show dependency on insn-config.h.

	* local-alloc.c (block_alloc): Don't update qty_birth for a
	register whose quantity is <= 0.

	* fold-const.c (decode_field_reference): Actually obtain unsigned
	type where one is wanted.
	(merge_component_references): Correctly test for mutually exclusive
	conditions.

Thu Aug 23 14:56:44 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-typeck.c (digest_initializer): No pedantic warning for string
	and array of unsigned char.

	* tree.c (get_identifier): Do id_clash_len stuff if length equals that.

Thu Aug 23 10:30:10 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-tree.h (CLASSTYPE_CID): Key off of TYPE_MAIN_VARIANT.

Thu Aug 23 06:44:33 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* out-romp.c (romp_pushes_stack): Don't count
	current_function_pretend_args_size in size of stack.

Wed Aug 22 18:00:07 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tm-a29k.h, tm-a29kunix.h, xm-a29k.h, a29k.md, out-a29k.c: New files.

	* config.gcc (a29k-unix): New target.

	* calls.c (expand_call): Allow FUNCTION_ARG to return an EXPR_LIST
	specifying multiple registers to load.
	(store_one_arg): Likewise; also delete handling of fully-in-register
	case, which hasn't been handled here for a while.
	* expr.c (emit_library_call): Our subset of calling sequence for
	library routines does not include multiple registers for an arg.

Tue Aug 21 17:44:49 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* make-cc1.com: Compile and link version.c.

	* Makefile.in (install-gnulib): Create libg.a if none already.

	* expr.c (convert_move): Handle expand_unop retval not same as target.

	* reload.c (find_reloads): For register letters, don't win if BLK.

	* sdbout.c (sdbout_toplevel_data): Fix error message.

	* protoize.c (open): Prototype deleted.

	* flow.c (mark_set_1, mark_used_regs): Update reg_first_use.
	(allocate_for_life_analysis): Allocate and clear it.
	* local-alloc.c (block_alloc): Calculate INSN_MAP.
	Get first use of each reg from reg_first_use.

	* tm-vms.h (MAYBE_VMS_FUNCTION_PROLOGUE): Distinguish C from C++.
	(EXTRA_SECTIONS, EXTRA_SECTION_FUNCTIONS): Add a const data section.
	(ASM_OUTPUT_EXTERNAL): Use that section.
	(SELECT_SECTION): Go to that section when appropriate.

Tue Aug 21 18:26:47 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (fill_simple_delay_slots): Mark anything referenced by an
	insn that will be placed in a delay slot in the epilogue as being
	needed at the end of the function.

	* cse.c (constant_pool_entries_found): New static var.
	(cse_main): Initialize it.
	(use_related_value): Correctly look for registers in hash table.
	(fold_rtx): Fold constant pool entries to their constants and
	set constant_pool_entries_found.
	(cse_insn):  If we weren't able to place a constant in an insn
	and we have previously seen constant pool entries used, set up
	to try the constant pool entry also.

Mon Aug 20 12:14:27 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* function.c (assign_parms): Set LAST_NAMED for parm before dummy.
	See August 9 change in c-parse.y.

	* gcc.c (process_command): Split -oFOO into two arguments.

	* stmt.c (expand_asm_operands): Handle COMPONENT_REF and
	ARRAY_REF directly as output operands.	Avoids crash if BLKmode.

	* c-parse.y, cplus-parse.y, objc-parse.y: Include stdio before input.h.
	* input.h: Declare finput.

	* expr.c (emit_push_insn): Don't adjust for EXTRA separately
	if will have to adjust the stack anyway.

	* m68k.md (*sh*si3): On 68000, optimize case of >= 16 bits.

	* varasm.c (decode_rtx_const): Don't dereference a PLUS
	subexpression of a CONST twice.

Sun Aug 19 21:51:51 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* toplev.c (finput): Define here.
	* *-parse.y (lineno, finput): Duplicate definitions deleted.

	* global-alloc.c (find_reg): Test best_reg against 0,
	not first_pseudo_register.

Sun Aug 19 17:48:22 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* explow.c (plus_constant): If adding to constant pool constant,
	return a new one.

	* genattrtab.c: Need not include insn-config.h.

Sun Aug 19 17:23:10 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* tm-hp9k320bsd.h (CPP_SPEC): Def __HAVE_68881__ like __HAVE_FPU__.

	* Makefile.in (USE_ALLOCA): Test was backwards.
	(USE_HOST_ALLOCA): Likewise.

Sun Aug 19 09:58:16 1990  Michael Tiemann  (tiemann at cygnus.com)

	* stmt.c: Fixes from 2.0 for fixup_goto incorporated here.

	* cplus-decl2.c (write_vtable_entries): Don't test TREE_EXTERNAL
	of DECL_CONTEXT (FN).  TREE_EXTERNAL is not meaningful for types.

Fri Aug 17 22:14:09 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* optabs.c (emit_cmp_insn): Don't abort after floating lib cmp.

Thu Aug 16 23:16:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* varasm.c (assemble_variable, assemble_static_space): Don't
	call data section if -fshared-data.  If this section is needed,
	it should be entered from elsewhere, and this is believe to be
	done in all known cases.
	(output_constant_pool): Add support for ASM_OUTPUT_SPECIAL_POOL_ENTRY
	which writes certain constant pool entries specially; used for TOC
	on RS/6000.
	(assemble_external_libcall): New function.
	* expr.c (emit_library_call): Call it.

	* reorg.c (mark_target_live_regs): Don't follow around infinite loops.

	* varasm.c (struct rtx_cont): Don't use enums in bit fields if
	ONLY_INT_FIELDS is defined.

	* cse.c (remove): Rename to remove_from_table to avoid conflict
	with `remove' defined in stdio.h.

Thu Aug 16 22:44:35 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* stmt.c: fixup_gotos must ignore blocks started after the goto.
	(block_start_count): New variable, and slot in some structures.
	(expand_function_start): Initialize it.
	(expand_start_bindings): Increment it and store in struct nesting.
	(expand_goto): Store it in struct goto_fixup.
	(fixup_gotos): Compare fixup's count with block's count.
	(save_stmt_status, restore_stmt_status): Handle block_start_count.
	* function.h (struct function): Make slot to save it.

Thu Aug 16 18:02:03 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* obtabs.c (expand_fix, expand_float): Support direct conversion
	between SFmode and fixed modes by library call.

Wed Aug 15 18:36:28 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cccp.c (main): Allow -M to work on .s files by checking for .s
	and .S suffixes when writing dependencies.

	* reorg.c (optimize_skip, fill_eager_delay_slots, try_host_target):
	Don't need to call can_reverse_comparison_p because invert_jump is
	safe for floating-point; only reverse_condition isn't.

Wed Aug 15 15:50:36 1990  Michael Tiemann  (tiemann at cygnus.com)

	* dbxout.c (dbxout_type): Skip past const and volatile qualifiers
	that might appear in method names.

Wed Aug 15 15:44:17 1990  Richard Stallman  (rms at mole.ai.mit.edu)

	* c-parse.y (hash, is_reserved_word): Use __inline.

	* cccp.c (main): Support -dN and -dD.  Support -lint.
	(dump_macros): Two new alternatives.
	(handle_directive): Output macro definitions if -dN or -dD.
	(rescan): Check comments if -lint.
	(get_lintcmd): New subroutine.

	* c-decl.c (c_decode_option): Handle -fshort-double.
	(init_decl_processing): Create double_type_node accordingly.

	* c-decl.c (c_decode_option): Handle -Wno...

Tue Aug 14 23:10:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* explow.c (break_out_memory_refs): Don't break out reference if
	constant but not legitimate constant for a machine insn.
	(memory_address): Only put legitimate constants, rather than all
	constants, into registers if they are used as an address.

Tue Aug 14 14:34:02 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* reorg.c (steal_delay_list): Can't put something in a
	non-annulled delay slot that can trap.

	* tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Typo testing offset alignment.

	* cccp.c (do_assert, do_unassert, check_assertion): New functions.
	(compare_keyword_lists, read_keyword_list, free_keyword_list):
	New functions.
	* cexp.y (yylex): Allow `#' as token.
	Return name and length of symbol.
	(keywords): New nonterminal.
	(expr): Recognize # to test an assertion.
	(U_CHAR, struct arglist): Data types copied from cccp.c.
	(%union): New alternatives `keywords' and `name'.

Mon Aug 13 22:26:19 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tm-romp.h (SLOW_BYTE_ACCESS): Set to 0.

	* expmed.c (store_bit_field, extract_bit_field): Use get_best_mode
	to select mode to use for accessing memory when bitfield insns don't
	accept memory.

	* c-common.c (rewrite_for_merged_ref, make_merged_ref): Deleted.
	(merge_component_comparisons): Delete from here.
	* c-tree.h (merge_component_comparisons): No longer global.
	* c-convert.c (build_binary_op_nodefault): Don't try to merge component
	references here; now done in fold.
	* cplus-typeck.c (build_binary_op_nodefault): Likewise.
	* Makefile.in (fold-const.o): Now includes flags.h.
	* fold-const.c: Likewise.
	(STRIP_NOPS): New macro.
	(decode_field_reference, all_ones_mask): New functions.
	(merge_component_references): Put rewritten version here.
	This fixes bugs in the way that comparisons with non-equal
	constants (!p->a && p->b) are handled and in endianness checking.
	Also accepts more general comparisons, and, in particular, its
	own output so more than a pair of operations can be merged.
	(fold): Call it for TRUTH_{AND*,OR*}_EXPR.

	* tree.def (BIT_FIELD_REF): New tree code.
	* expr.c (get_inner_reference): Support BIT_FIELD_REF.
	If bitfield is a complete mode-sized unit, return that mode; if it
	is a subset of bits within a mode-sized unit, return VOIDmode.
	(expand_assignment): Check for BIT_FIELD_REF.
	Use mode returned from get_inner_reference to see if bit field.
	(store_constructor): Likewise.
	(store_field): Don't pass arg BIT_FIELD; use MODE == VOIDmode
	instead.  All callers changed.
	(expand_expr, case BIT_FIELD_REF): New case.  Handled same as
	COMPONENT_REF.
	Use mode returned from get_inner_reference rather than DECL_BIT_FIELD.
	(expand_increment): Must stabilize BIT_FIELD_REF.
	(do_jump, case NOP_EXPR): Check for inner BIT_FIELD_REF and ARRAY_REF.
	(do_jump, case COMPONENT_REF): Generalize to handle BIT_FIELD_REF
	and some ARRAY_REFs also.
	* fold-const.c (operand_equal_p): Handle BIT_FIELD_REF.
	* tree.c (staticp): Rework to use switch instead of if-then-else.
	Add support for BIT_FIELD_REF.
	(stabilize_reference, simple_cst_equal): Support BIT_FIELD_REF.

	* c-common.c (truthvalue_conversion): Rework to use switch rather
	than if-then-else.
	Generate either TRUTH_{OR*|AND*}_EXPR or comparison operations as
	much as possible.
	Handle REAL_CST, ADDR_EXPR, ABS_EXPR, FLOAT_EXPR, FFS_EXPR,
	LROTATE_EXPR, RROTATE_EXPR, BIT_XOR_EXPR, and MINUS_EXPR.
	Call fold for COND_EXPRs that we make.
	* c-convert.c (build_unary_op): invert_truthvalue can't return 0,
	so don't check for it.
	(invert_truthvalue): Delete from here.
	(convert_to_integer, build_conditional_expr): Try to fold COND_EXPR.
	* c-plus-cvt.c (convert_to_integer): Likewise.
	* cplus-typeck.c (build_conditional_expr): Likewise.
	(build_unary_op): invert_truthvalue can't return 0.
	(invert_truthvalue): Delete from here.
	* fold-const.c (invert_truthvalue): Move to here.
	Don't invert floating-point test.
	Look inside conversions.
	Use recursive call to negate inside logical operations rather than
	building a TRUTH_NOT_EXPR.
	Allow only certain TREE_CODEs as operands; abort for the rest.
	(fold_convert): Accept second argument that is item being
	converted to ensure that NOPs have been stripped.
	(operand_equal_p): Return 0 if either operand has side effects.
	If both integer or real constants, check the values.
	Do a more thorough test to see if two items are identical;
	specifically, compare the operands of simple TREE_CODEs.
	(omit_one_operand, distribute_bit_expr): New functions.
	(make_bit_field_ref, optimize_bit_field_compare): Likewise.
	(fold): Remove LOSES; now done explicitly or by calling
	omit_one_operand.  Some previous uses weren't needed.
	Try to fold any COND_EXPRs and some COMPOUND_EXPRs we make.
	Remove pair of NEGATE_EXPRs and BIT_NOT_EXPRs.
	Convert "- (a - b)" to "b - a" for non-floating-point.
	ABS_EXPR applied to ABS_EXPR or NEGATE_EXPR is ABS_EXPR of inner arg.
	Convert "a + (-b)" to "a - b" and "a - (-b)" to "a + b".
	If adding ANDs with constants that have no bits, in common, try
	bitwise-or, since we may then be able to distribute the operation,
	e.g., (a & 7) + (a & 0x70) -> a & 0x77.
	Add missing last arg to operand_equal_p call.
	Call distribute_bit_expr for BIT_AND_EXPR and BIT_IOR_EXPR.
	Exclusive-or with all ones is bit negation.
	If second arg of BIT_AND_TC_EXPR is constant, convert to BIT_AND_EXPR.
	Handle TRUTH_NOT_EXPR by calling invert_truthvalue.
	Call optimize_bit_field_compare for comparisons of bitfields.
	Handle "a ? 1 : 0" and "a ? 0 : 1" as test or negated test.
	Simplify "a & 4 ? a & 4 : 0" and "a ? a : 0" to remove conditonal.
	* stor-layout.c (get_best_mode): New function.
	* machmode.h: Define it.
	* tree.c (integer_pow2p): New function.
	* tree.h: Declare new functions and functions no longer static.

Mon Aug 13 17:45:13 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* config.gcc (sun3-mach): New alternative.
	* tm-sun3mach.h: New file.

	* m68k.md (bfextu patterns): Set CC_NOT_NEGATIVE.

Mon Aug 13 10:14:37 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl2.c (flag_minimal_debug): Now is default is
	-fflag-minimal-debug.

	* cplus-tree.c (virtual_member): Return the assoc of a non-virtual
	basetype that comes from a virtual baseclass.  Changed callers
	which used to call `value_member' to call virtual_member instead.

Mon Aug 13 06:54:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (expand_twoval_binop): Fix typo.

	* cse.c (lookup_as_function): Don't assume CODE is a unary
	operation.  It might be a binary op or REG.

Sun Aug 12 21:42:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, case COND_EXPR): Don't abort if first arg of
	COND_EXPR isn't a comparison; just suppress the do_store_flag call.

Sun Aug 12 14:26:45 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.h (enum built_in_function): Delete comma after last name.
	* c-parse.h (enum rid): Likewise.
	* expr.h (enum optab_methods): Likewise.
	* stab.h: Add dummy enum name at end.

	* config.gcc (genix): Set tm_file.
	* tm-genix.h (ASM_OUTPUT_DOUBLE): New overriding definition.

	* tree.h (struct tree_type, struct tree_decl): Handle ONLY_INT_FIELDS.
	* rtl.h (struct rtx_def): Likewise.  That macro goes in xm-*.h.

Sat Aug 11 16:56:19 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cplus-decl.c (finish_function): Check value of HAVE_return before
	calling gen_return.

	* reorg.c (optimize_skip): Don't reject skip when we jump around an
	insn and merge at the return point.

Fri Aug 10 17:00:31 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* dbxout.c (dbxout_parms, dbxout_reg_parms): Ignore nameless parms.
	* sdbout.c (sdbout_parms, sdbout_reg_parms): Ignore nameless parms.

Fri Aug 10 14:14:08 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* recog.c (indirect_operand): Modes need not agree if MODE == VOIDmode;
	remove test from here since it is in memory_operand, which this calls.

Thu Aug	 9 15:19:17 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (store_parm_decls): If function has variable number of args,
	put a dummy decl at end of parmlist.
	* c-parse.y (unary_expr): Handle &... with address of dummy decl.

	* tm-*.h (LEGITIMIZE_ADDRESS): Go to WIN instead of returning.

	* cccp.c (handle_directive): Add code to support `# DIGIT'
	but disable it for the time being.

	* tm-hp9k320.h (CPP_SPEC): Define _HPUX_SOURCE if not ANSI.
	(CPP_PREDEFINES): Don't define it here.
	Do define alternatives with __ prepended.

Wed Aug	 8 14:00:26 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* out-romp.c: Don't include hard-reg-set; already in insn-output.c.
	 
	* explow.c: insn-flags.h is needed to see if "probe" insn exists.
	* Makefile.in (explow.o): Likewise.

Wed Aug	 8 13:35:00 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (check_macro_name): Warn if name is `defined'.

	* tm-sun386i.h (ASM_IDENTIFY_GCC): If profiling, put a NOP after
	gcc_compiled.

Tue Aug	 7 23:51:38 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* toplev.c (main): Handle -W options like -f options.
	This supports -Wnounused, and such like.
	(warn_uninitialized): New variable, controls those warnings.
	Set it for -Wuninitialized, and for -W.

Tue Aug	 7 13:24:58 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genextract.c (walk_rtx): Fix typo in MATCH_PARALLEL case.

	* explow.c (allocate_dynamic_stack_space): Pass size of allocated stack
	to gen_probe.

Tue Aug	 7 12:19:46 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* pyr.md (extendsfdf2, truncsfdf2, float*, fix*): Use `&'.

Tue Aug	 7 07:13:54 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (find_cross_jump): Include a USE or CLOBBER in cross jump
	but don't count it against minimum size.
	Never return when cross-jump hasn't actually been done.

Mon Aug	 6 18:50:12 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* varasm.c: Include regs.h.
	(decode_reg_name): Remove extern for reg_names; it is in regs.h.
	* Makefile.in (varasm.o): Depends on regs.h.

Mon Aug	 6 12:46:07 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (grokdeclarator): Don't warn if initialized fcn is extern.
	(start_decl): Don't warn at all for initialized extern.

	* final.c (final_start_function): Handle PROFILE_BEFORE_PROLOGUE.
	(profile_function): New subroutine.

	* tm-i386sco.h: New file.
	* config.gcc (i386-sco): New alternative.

	* gcc.c (ENDFILE_SPEC): New macro.
	(do_spec_1): Handle %E.
	(link_spec): Use %E.

	* xm-i386.h (alloca): Define without arg.

	* Makefile.in (stage*): Use RANLIB_TEST.
	(LIMITS_H): New variable.
	(USER_H): Use that.
	* make-i386sco: New file.

Sun Aug	 5 13:11:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* rtl.h: Delete all machine mode defns; include machmode.h instead.
	* tree.h: Likewise.
	* machmode.h: New file.
	* stor-layout.c: No longer include rtl.h.
	* Makefile.in: (RTL_H, TREE_H): Add machmode.h.
	(stor-layout.o): No longer depends on RTL_H.

	* c-common.c  (binary_op_error, shorten_compare): Should no longer
	have been static when moved here.

Sun Aug	 5 12:57:02 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stor-layout.c (layout_record, layout_union): Test value of 
	PCC_BITFIELD_TYPE_MATTERS for being nonzero, if it is defined.
	* tm-*.h: Define with value 1.
	* tm-vax.h (PCC_BITFIELD_TYPE_MATTERS): Depends on -mvaxc-alignment.

	* proto.h: New file.
	* Makefile.in (USER_H): Add that file.

Sun Aug	 5 00:04:08 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl2.c (grokfield): It is no longer legal to specify
	the initializer for a static const member in the class
	declaration.  Dealing with default initializers is basically
	impossible.

	* cplus-init.c (build_delete): Don't wrap `addr' in a SAVE_EXPR
	until it is in fact an address.	 This allows us to call
	destructors on the return values of function calls.

	* cplus-typeck.c (commontype): Fixed bug in OFFSET_TYPE case which
	led to infinite recursion (since we did not reduce the types
	before we recursed).

	* cplus-lex.c (check_newline): Make `#pragma implementation' more
	forgiving.

	* cplus-init.c (expand_aggr_init): Changed Jan 20th change so that
	we test whether TYPE has a constructor defined, and we do not test
	at all whether INIT was from a GNU constructor expression or not.

	* cplus-typeck.c (build_modify_expr_1): Don't return
	`error_mark_node' unless there really was an error.  If there is
	no work to do, return `integer_zero_node'.

	* cplus-class.c (propagate_basetype_offsets): Count the space
	between baseclasses, not just the space they occupy.

	* cplus-typeck.c (commontype): Don't drop the exceptions that are
	raised by functions and methods.

	* cplus-cvt.c (convert_to_real): Fix if/else level problem in
	case where EXPR is of aggregate type.

	* cplus-decl.c (finish_decl): Emit a line-number note to give
	users a chance to set a breakpoint before the initialization of an
	object takes place.

	* cplus-class.c (build_method_call): If the function we get is not
	directly from the object we have, call `convert_pointer_to' if the
	object uses multiple inheritance or virtual baseclasses.

	* cplus-typeck.c (build_binary_op_nodefault): Don't call
	`convert_to_pointer' with an argument that might be
	the integer zero.

	* cplus-method.c (hack_identifier): Look for DECL_REFERENCE_SLOT
	in RESULT_DECLs as well.

	* cplus-init.c (build_vec_delete): Don't forget to deallocate the
	container if requested.	 Really use AUTO_DELETE and
	AUTO_DELETE_VEC with the same interpretation as `build_delete'
	gives to its AUTO_DELETE parameter.

Sat Aug	 4 22:08:44 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (find_cross_jump): Use prev_nonnone_insn.
	Don't cross-jump into the middle of a USE-CALL_INSN-CLOBBER
	block; doing so can confuse reorg.c.

	* optabs.c (expand_binop, expand_binop, expand_twoval_binop):
	If predicate doesn't match, ensure that operand is in a pseudo
	register.  Current code assumes that any register will suffice,
	but an insn may want to reject certain hard registers.
	(expand_unop, emit_unop_insn, emit_cmp_insn): Likewise.

Sat Aug	 4 15:29:09 1990  Michael Tiemann  (rms at sugar-bombs.ai.mit.edu)

	* function.c (assign_parms): For parms passed by reference,
	make the memory object's mode agree with the parm's original
	type mode.
	* calls.c (expand_call): Fixed braino in building argument
	reference when FUNCTION_ARG_PASS_BY_REFERENCE is defined.

	* varasm.c (assemble_variable): Hack our way around the problem
	that static class members look like initialized variables for the
	purposes of establishing FIRST_GLOBAL_OBJECT_NAME.

	* cplus-lex.c (reinit_parse_for_method): Give error message for
	common mistake of forgetting the function body.

	* cplus-typeck.c (build_component_ref): Make better error message
	when field is not found.

	* cplus-class.c (finish_struct): TYPE_GETS_*_INIT_REF comes from
	members as well.

	* cplus-typeck.c (c_expand_return): Give warning about returning
	non-lvalues that come from functional casts.

	* cplus-search.c (get_base_distance): Changed to follow leftmost
	path only when PARENT == TYPE_MAIN_VARIANT (PARENT).

	* cplus-class.c (modify_vtable_entries): Call get_base_distance
	with 0 path_ptr, since we do not appear to use the path computed.

Fri Aug	 3 07:37:30 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* final.c (leaf_function_p): Delete line advertently retained
	after change of July 29.

	* reorg.c (optimize_skip, try_hoist_target): Don't invert jump
	unless can_reverse_comparison_p says it is OK.	Use invert_jump
	to do it.
	(fill_simple_delay_slots): Another way flow of control can merge is
	for two insns to jump to the same place; try to get insns from there.
	(mostly_true_jump): Return 2 for a jump very likely to be true (the
	branch back to the start of a loop).
	(fill_slots_from_thread): Accept new arg LIKELY.  If true, see if can
	put increment in delay slot and undo it after the end of the loop.
	(fill_eager_delay_slots): Pass new arg to fill_slots_from_thread.
	If previous insn is conditional jump that also didn't get a delay
	slot, see if swapping targets helps.

Fri Aug	 3 00:18:35 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (MAKE_POS): Avoid constant of uncertain signedness.

	* gnulib2.c (__bb_init_func): Add dummy function to prevent warning.

Thu Aug	 2 17:44:59 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* output.h (current_function_return_rtx): Add new variable.
	* function.h (return_rtx): Likewise.
	* function.c (push_function_context, pop_function_context): Save
	and restore current_function_return_rtx.
	(assign_parms, expand_function_start): Set current_function_return_rtx
	to what is put in DECL_RTL (DECL_RESULT (current_function_decl)).
	* reorg.c: No longer uses tree.h.
	(dbr_schedule): Get result RTL from current_function_return_rtx instead
	of reading it from current_function_decl.
	* Makefile.in (reorg.o): No longer depends on TREE_H.

	* cse.c (remove_invalid_refs): Only invalidate an entry if it 
	references the actual register, not merely something sharing its
	quantity.
	(cse_insn): Don't abort if SRC and SRC_EQUIV map to different
	hash classes.  Merge them instead.

	* romp.md (mulsi3): Emit call to lmul$$ as a regular insn
	rather than a CALL_INSN.
	(divsi3, modsi3, udivsi3, umodsi3, call_libfcn): Deleted.
	(divmodsi4, udivmodsi4): New patterns to call ldiv$$ and uldiv$$
	as a normal insn to allow CSE'ing of MOD with DIV.

Wed Aug	 1 21:56:08 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y (yylex): Don't warn about non-decimal unsigned by default
	if `u' was specified.  Add similar warning for long and long long.

Tue Jul 31 23:31:46 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-encore.h (FUNCTION_PROFILER): Override, putting `.' in label.

	* xm-vms.h (const): Delete the definition.

Mon Jul 30 18:33:04 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (convert_for_assignment): Normally no warning
	between char * and unsigned char *, etc.
	(convert_arguments): Include arg number in incomplete type warning.

Mon Jul 30 07:38:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (invert_jump): Don't do anything with labels if NLABEL 
	equals JUMP_LABEL.
	(redirect_jump): Don't try to reference LABEL_NUSES if olabel is
	zero (meaning this is a return insn).
	(redirect_exp): Handle case of converting return to jump to
	label.

	* dbxout.c (dbxout_parms): Allow parameter at zero offset from
	AP to be represented as (MEM (REG ...)).
	* sdbout.c (sdbout_parms): Likewise.

Sun Jul 29 22:51:00 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (expand_twoval_binop_convert): Deleted.
	(expand_twoval_binop): Rework to be handle predicates, modes, and
	failures in a manner consistent with expand_binop.
	Move code from expand_twoval_binop_convert inline and rework to
	no longer hard-wire SImode and to handle failure.

	* config.gcc: Finish change of July 24th to have make_var_file depend
	on host machine.

	* jump.c: Now includes insn-flags.h.
	(jump_optimize): Try to put a RETURN at the end of the function if
	control flows through to it.
	JUMP_LABEL can now be zero for a RETURN or conditional RETURN.
	Try to convert jump to end of function into (possibly conditional)
	RETURN.
	Use next_active_insn instead of next_real_insn; these do the same
	thing prior to reload, after which USE and CLOBBERs don't matter.
	redirect_jump may now fail so don't set CHANGED if it does.
	Delete optimization of jump to RETURN; now subsumed by follow_jumps.
	Reset INSN_CODE if changing conditional jump to unconditional.
	(cond_jump_p): Conditional RETURN is conditional jump.
	(follow_jumps): Change argument name to AFTER_RELOAD.
	If not after reload, do not chain across a USE or CLOBBER.
	Recognize RETURN insns.
	(tension_vector_labels): Likewise.
	(redirect_jump, redirect_exp): If NLABEL is zero, turn JUMP into a
	(possibly conditional) RETURN; use validate_change to see if such an
	insn exists. 
	Now returns non-zero if succeeds, 0 otherwise.
	Unconditional RETURN looks like (RETURN), not (SET (PC) (RETURN)).
	(thread_jumps): Ignore any type of RETURN insn.
	* Makefile.in (jump.o): Depends on insn-flags.h.
	* loop.c (strength_reduce): Don't confuse conditional return with
	jump to top of loop when LOOP_TOP == 0.
	* final.c (leaf_function_p): No longer static; no longer takes an arg.
	(final_start_function): Don't pass START to leaf_function_p.
	* romp.md (return pattern): Convert to a named pattern.

Sun Jul 29 16:05:27 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-vms.h (ASM_OUTPUT_EXTERNAL): Check TREE_READONLY.

	* xm-vms.h (alloca): Use built-in alloca.

Sun Jul 29 06:47:33 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c (fill_slots_from_thread): Restore inadvertantly deleted
	lines.

Fri Jul 27 19:53:18 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* Makefile.in (reorg.o): Depends on tree.h, basic-block.h, regs.h,
	and output.h

Fri Jul 27 16:30:03 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* varasm.c (assemble_variable): Handle ASM_OUTPUT_SHARED_COMMON
	and ASM_OUTPUT_SHARED_LOCAL.

	* tm-encore.h (SHARED_SECTION_ASM_OP): New macro.
	(ASM_OUTPUT_SHARED_COMMON, ASM_OUTPUT_SHARED_LOCAL): New.
	All this waiting for papers from pabuhr@watmsg.waterloo.edu.

Fri Jul 27 16:10:02 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* make-romp (CC): Set up to allow use of hc.

Fri Jul 27 15:07:00 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* combine.c (subst): Handle (ASHIFT 1 x) in (EQ (AND ... y) 0)
	only if little-endian.

Thu Jul 26 23:19:15 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expmed.c (expand_shift): Consistently call protect_from_queue
	before doing anything else.
	Always put operand1 of extzv into a register because it is SImode
	and we assume that this means a register.

Thu Jul 26 14:18:11 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* varasm.c (assemble_variable): Delete dead code.
	DATA_ALIGNMENT takes tree and current alignment and gives new
	alignment for a non-automatic variable of that type.
	Also apply CONSTANT_ALIGNMENT to the initial value; it now takes
	the constant and old alignment and gives the new alignment.
	Adjust DECL_ALIGN to the resulting alignment.
	Use floor_log2 consistently instead of duplicating its function.
	(get_or_assign_label): Use CONSTANT_ALIGNMENT instead of DATA_ALIGNMENT
	and pass type instead of decl.
	* expr.c (get_pointer_alignment): Rework to: distinguish reliably
	between expressions giving the address and those giving the item being
	addressed; use the alignment from the type of the object being
	pointer to; return 0 if the type is not a pointer; and other 
	miscellaneous changes.
	(string_constant): Skip CONVERT_EXPR and NON_LVALUE_EXPR as well
	as NOP_EXPR.
	(expand_builtin): Allow get_pointer_alignment to fail, in which case
	we call the actual function.
	* stmt.c (expand_decl): Set actual alignment obtained into DECL_ALIGN
	since it may be better aligned than required and get_pointer_alignment
	can take advantage of this.
	* tm-gmicro.h, tm-pyr.h, tm.romp-h: Add or replace definitions of
	CONSTANT_ALIGNMENT to word-align string constants and
	DATA_ALIGNMENT to word-align character arrarys for builtin memory
	functions.

	* fold-const.c (rshift_double): Reset carry after each shift of
	one bit.

	* vax.md (ashrsi3): If right shift by constant, emit as ASHIFTRT.
	(ashrsi3_const): New pattern  to match it.
	(casel): Delete patterns no longer needed.
	* cse.c (cse_insn): Remove unneeded part of change of July 23.
	(fold_rtx): Convert shift with negative constant count to shift in
	the opposite direction.
	* combine.c (subst): Likewise.

	* emit-rtl.c (init_emit_once): Initialize arg_pointer_rtx before
	struct pointer and static chain values in case they want to use it.

Thu Jul 26 12:31:02 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* final.c (final_scan_insn): Align label table to boundary appropriate
	for items of its size.
	(get_attr_length, shorten_branches): Allow for label table alignment.

Wed Jul 25 15:06:44 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* fixincludes: Handle uses of _IO* followed by spaces.
	Change redirections for cd when testing that directory exists.

	By Tiemann:

	* emit-rtl.c (next_cc0_user): Handle insns in which cc0
	is set and used in the same insn.

	* final.c (leaf_function_p): Look inside INSNs which contain
	a delayed-call sequence.
	(final_start_function): Test `only_leaf_regs_used' before
	`leaf_function_p', since that is likely to be faster.
	(final_scan_insns): Normally we don't have NOTICE_UPDATE_CC
	take action when processing the path of an annulled branch,
	since that path does not affect the cc's of the fall-through
	insns at all.  However, we cannot always ignore the effect of
	the cc's when processing a delayed annulled branch: when the
	delayed annulled branch follows a label and carries a
	REG_CC_STATUS note, that note must be processed.

	* genattr.c (main): Generate #defines for annulled branches
	which are consistent with documentation.

	* reorg.c: Finish recent rework by modifying code specific to
	machines that have annulling branches.

	* c-common.c (merge_component_comparisons): Previous logic did
	not handle cases of (A == 1) && (B == 1), (A != 0) && (B != 0),
	and (A != 1) || (B != 1).  Fixed by expanding the logic out
	longhand and letting the compiler do the proper cross-jumping.

	* tm-vms.h (ASM_OUTPUT_EXTERNAL): Use assemble_name.

	* expr.c (expand_expr): For BIND_EXPR, do the init for all vars.

	* stupid.c: Include flags.h.
	* genrecog.c (main): Make insn-recog.c include flags.h.

Sun Jul 22 12:04:43 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-except.c (cplus_expand_end_except): If the user gives a
	default handler, the exception is considered caught in that
	handler.
	* cplus-parse.y (except_stmts): Rest of fix went here, in DEFAULT
	case.

	* cplus-decl.c (finish_decl): Don't emit cleanups twice.

	* cplus-class.c (finish_struct_bits): Don't call
	`fixup_vbase_offsets'.
	* cplus-tree.c (fixup_vbase_offsets): #if 0 this function.

	* cplus-cvt.c (build_default_binary_type_conversion): Handle
	arguments which are REFERENCE_TYPE.

	* cplus-method.c (prepare_inline): Set DECL_CONTEXT of this
	function's parameters.

	* cplus-decl.c (grokfndecl): When adding a new virtual function
	entry, RAISES may change a second time.

Thu Jul	 5 10:44:39 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl2.c (grokfield): Static consts need not be initialized
	in the class definition.

Mon Jul	 2 06:12:49 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-init.c (resolve_offset_ref): If BASETYPE is not a base
	type for the current class, give error and return.

Sun Jul	 1 00:18:47 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-decl.c (finish_function): Throw away more code if we have
	an inline function from the interface.

	* cplus-class.c (add_virtual_function): Set DECL_VINDEX from the
	virtual function which comes from the vtable shared by
	CURRENT_CLASS_TYPE, if possibe.

	* cplus-typeck.c (build_binary_op): Call `default_conversion'
	after doing type instantiation.

	* cplus-init.c (build_new): New 2.0 interpretation: `new int (10)'
	means allocate an int, and initialize it with 10.

	* cplus-init.c (emit_base_init): Completion of fix for virtual
	function table initialization.	@@ BTW, this may now cause extra
	virtual function table initializations.	 They will all be correct,
	but they may also be redundant.	 GCC's optimizer doesn't know how
	to remove even the simplest such redundancy.

Sat Jun 30 13:54:30 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (finish_base_struct): Store BASETYPE in the
	VFIELDS chain (in its TREE_TYPE).

Fri Jun 29 09:26:17 1990  Michael Tiemann  (tiemann at cygnus.com)

	* cplus-class.c (build_vtable,prepare_fresh_vtable): Stash the
	type that caused this vtable to be defined in DECL_CONTEXT
	* cplus-search.c (bfs_unmark_finished_struct): Work around
	DECL_CONTEXT conflict for vtables.  @@ NOT A SOLUTION.

	* cplus-lex.c: Extend meaning of `#pragma implementation'
	to allow files to `implement' types from general headers.

Tue Jul 24 22:18:23 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reorg.c: Major rework.  Changes includes:
	(mark_target_live_regs): Scan code to compute which registers are
	live at particular insns.  Uses tables created by flow, REG_DEAD
	notes, and registers set before they are used.
	(emit_delay_sequence): Always write SEQUENCE as INSN.  Many routines
	changed to reflect this.
	(fill_simple_delay_slots): Loop for merge point when target of jump
	comes back to fallthrough code.	 Try to get insns from there.
	(fill_eager_delay_slots): Fallthrough and target case merged into new
	function fill_slots_from_thread.

	* tm-romp.h, romp.md, out-romp.c, xm-romp.h, make-romp: New files to
	support the ROMP microprocessor, used in the IBM PC RT.

	* recog.c (comparison_operator): New function.

	* jump.c (jump_optimize): If putting constant into register, see
	if it is already present in the register.

Tue Jul 24 15:35:04 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (build_binary_op_nodefault): Allow compare of any
	pointer with const void *, etc.

Tue Jul 24 17:10:59 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (get_inner_reference): New function.
	(expand_assignment): Use it to find out about our target.
	(expand_expr, case COMPONENT_REF): Likewise.
	(expand_expr, case COND_EXPR): If can do store-flag, convert
	X ? A+1 : A to A + (X!=0); fold-const made the former from the latter.
	Only create label when we know we will need it.
	Simplify unnessarily complex call to safe_from_p.
	(expand_expr): Make new variable UNSIGNEDP and use it instead
	of TREE_UNSIGNED (type).  Also, consistently use existing
	variable TYPE instead of TREE_TYPE (exp) and similarly for MODE.

Tue Jul 24 13:50:33 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (collect_expansion): Error if ## at beg or end.

	* c-decl.c (grokdeclarator): Error for long, etc. with nonarith type.
	Error for signed or unsigned with floating type.
	Error for initialized parm.

	* config.gcc: Make make_var_file depend on host machine, not target.

Tue Jul 24 13:40:35 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* varasm.c (decode_reg_name): Make TABLE static for non-GCC compilers.

	* c-typeck.c (type_for_size, type_for_mode): Delete from here.
	(binary_op_error, shorten_compare, truthvalue_conversion): Likewise.
	* cplus-typeck.c: Delete second copy from here.
	* c-common: Move above functions to here.

Tue Jul 24 12:20:04 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (path_include): Fix typo in var name.

Mon Jul 23 17:46:57 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* config.gcc: Remove redundant assignment to tm_file for 88000.
	Fix typo when assigning to make_var_file.

	* function.c (optimize_bit_field): Fix typo in change_address call.

Mon Jul 23 16:59:27 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* varasm.c (decode_reg_name): Ignore % at beginning of name.
	Support extra names defined by ADDITIONAL_REGISTER_NAMES.
	* tm-i386.h (ADDITIONAL_REGISTER_NAMES): Define it.

	* dbxout.c (dbxout_init): Handle new macros
	ASM_OUTPUT_MAIN_SOURCE_FILENAME and ASM_OUTPUT_MAIN_SOURCE_DIRECTORY.
	* sdbout.c (sdbout_filename): Handle ASM_OUTPUT_MAIN_SOURCE_FILENAME.

Mon Jul 23 16:50:32 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tm-vax.h (NOTICE_UPDATE_CC): CALL clobbers CC if inside PARALLEL too.

	* vax.md (call_value_pop): Fix typo in argument number.

	* cse.c (cse_insn): Shift's aren't associative if in different
	directions, even if same rtx_code.
	Try to fold result of associating the operation in case it is now
	trivial.

	* jump.c (mark_modified_reg): New function.
	(thread_jumps): Look at insns between target of first jump and the
	second jump.  Mark any registers that they modify and record if they
	modify memory.
	Don't go past a CODE_LABEL.
	If we pass an unconditional jump, follow it.
	Use prev_nonnote_insn instead of explicit loop.
	(rtx_equal_for_thread_p): Consult recorded information to see if
	memory of registers were modified prior to second jump.
	* Makefile.in (jump.o): Now needs hard-reg-set.h.

Sat Jul 21 13:58:16 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (O_RDONLY): Define it if not defined.

	* c-decl.c (finish_decl): No error for nonstatic incomplete array.

Sat Jul 21 08:24:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* alliant.md (call patterns): Function address must be memory operand.
	* convex.md, m68k.md, mips.md, ns32k.md, tahoe.md, vax.md: Likewise.

Thu Jul 19 16:06:02 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (path_include): New function.
	(main): Call that to handle CPATH envvar.

	* varasm.c (assemble_variable): Error if size exceeds 2**32-1.

	* emit-rtl.c (init_emit_once): Pass write_symbols to this function
	(init_emit): Not this one.  All callers changed.

Tue Jul 17 21:24:08 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (update_equiv_regs): Don't replace a register with
	an equivalence if the insn making the equivalence has a source
	different from the equivalent value.

Tue Jul 17 16:47:42 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (emit_block_move): Allow movstr* to fail.

Tue Jul 17 15:19:18 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (change_address): Don't call memory_address if reload
	is in progress, not just after it has completed.

Mon Jul 16 00:34:27 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (can_reverse_comparison_p): New function.
	(jump_optimize): In if (x) ... else x = 0; reverse comparison
	if second operand of IF_THEN_ELSE is PC; use new function to
	validate the reversal.
	(jump_back_p): Use new function to see if safe to reverse comparison.

Sun Jul 15 17:03:31 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): Bug in last change; reject uncond jump
	where conditional is expected.

	* flow.c (mark_used_regs): Handle autoincrement for *p
	followed by q = p+size (neither one dead).

Sat Jul 14 22:37:45 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* combine.c (subst): Remove (zero_extend (subreg)) around lshiftrt.
	Remove (and...) from second arg of shift.
	Remove (and...) from around shift.

Sat Jul 14 21:35:50 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (update_equiv_regs): New function.
	(local_alloc): Call it.
	(block_alloc): Don't handle REG_EQUIV notes here; now done in
	update_equiv_reg.
	
	* calls.c: Include insn-flags.h.
	* Makefile.in (calls.o): Likewise.

Sat Jul 14 13:28:28 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (duplicate_decls): Don't set DECL_FRAME_SIZE for builtins.

	* vax.md (SImode bit-field patterns): Use nonmemory_operand.

	* jump.c (jump_optimize):
	For if (...) x = 1; else x = 0; x must be integer.

	* gcc.c (default_compilers): Pass -P to cpp.

Thu Jul 12 23:38:14 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stor-layout.c (layout_record): Handle BITFIELD_NBYTES_LIMITED.

	* sparc.md (call recognizers): Don't allow address arithmetic.

Thu Jul 12 21:47:45 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (change_address): If reload has completed, don't call
	memory_address.	 Instead, abort if address is not valid.

Thu Jul 12 20:41:32 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* calls.c (emit_call_1): Handle vax, without call and call_value.

Thu Jul 12 20:39:33 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (merge_equiv_classes): New function, from record_jump_equiv.
	(record_jump_equiv): Use new function.
	(gen_lowpart_if_possible): New function, based on gen_lowpart.
	(cse_insn): In some cases of (set (subreg (FOO) 0) (BAR)), note
	that (subreg BAR) is an equivalent of FOO.
	* integrate.c (expand_inline_function): Likewise.

	* combine.c (subst): Check for constant in merge of shift into
	ZERO_EXTRACT.
	(gen_lowpart_for_combine): Look for SIGN_EXTEND or ZERO_EXTEND:

	* emit-rtl.c (gen_lowpart, gen_highpart): If passed a hard register,
	return a new rtx for it in the proper mode, rather than a SUBREG.

Wed Jul 11 17:05:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (cse_insn): If already have a REG_WAS_0 note, don't make
	another one.
	Rework some loops on SETs to eliminate duplicate code and clean up
	a bit.

	* rtlanal.c (refers_to_regno_p, reg_overlap_mentioned): Allow these
	to work on pseudos as well as hard registers.

	* optabs.c (emit_no_conflict_block): Use reg_overlap_mentioned
	to see if register is mentioned in insn.

Wed Jul 11 16:56:01 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): Don't optimize jumps to store-flags
	if after register allocation.  And don't do it if memref is used.

Wed Jul 11 16:12:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c ({next,prev}_nonnote_insn, prev_label, prev_cc0_setter):
	New functions.
	({next,prev}_{real,active}_insn, next_label): Rework to allow
	argument of zero; return zero in that case.
	(next_active_insn, prev_active_insn): If reload is not yet complete,
	do the same thing as next_real_insn and prev_real_insn.
	(next_cc0_user): Fix some bugs and typos.

	* rtlanal.c (reg_mentioned_p): Allow searches for labels to work.

Wed Jul 11 12:25:27 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (duplicate_decls): In prev fix, use TREE_PUBLIC both times.

Tue Jul 10 22:54:31 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* rtl.def (trap): New code.

Tue Jul 10 17:48:26 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tree.c (integer_zerop, integer_onep, integer_all_onesp): Look inside
	a NON_LVALUE_EXPR.
	(real_zerop, real_onep, simple_cst_equal): Likewise.

Tue Jul 10 17:05:50 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y, objc-parse.y, cplus-lex.c (yylex):
	Terminate token_buf after integer.

Mon Jul	 9 15:22:22 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* c-decl.c (duplicate_decls): Correct test for extern followed by
	static function declaration.

Mon Jul	 9 14:13:06 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (grokdeclarator): Move warning and error
	about initializer with extern to the same place.  Do one or the other.

	* rltanal.c (reg_mentioned_p): Don't look inside a CONST_DOUBLE.

Sun Jul	 8 14:12:21 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* toplev.c (pedwarn, pedwarn_with_file_and_line, pedwarn_with_decl):
	New functions.
	(flag_pedantic_errors): New variable controls them.
	* c-decl.c, c-parse.y, c-typeck.c: Use new functions for many warnings.
	* varasm.c: Likewise.
	* gcc.c (default_compilers): Pass -pedantic* to cc1, cpp, etc.
	* cccp.c (pedwarn): New function.  Many calls to `warning' changed.

	* c-common.c (c_expand_expr_stmt): New function.
	Error about incomplete type moved here.
	* expr.c (expand_expr): Error deleted from here.
	* c-parse.y: Use c_expand_expr_stmt where suitable.

	* flow.c (propagate_block): Set following_insn_dead on insn after test.
	(mark_used_regs): Test that var; don't call insn_dead_p here.

Fri Jul	 6 13:05:01 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (build_indirect_ref):
	No error if result is incomplete array.

	* expmed.c (store_bit_field, extract_bit_field): New arg TOTAL_SIZE.
	Don't extract a bigger unit from memory than this.
	* expr.c: Callers changed.
	(store_field): New arg TOTAL_SIZE; callers changed.

	* out-ns32k.c (print_operand_address): Changes from Ian Dall.
	* xm-ns32k.h: Use built in alloca.
	* ns32k.md (ashlsi3): Don't forget to return a value.
	(movsf): Output floating constants only if GAS_SYNTAX.
	(call, call_value): Support JSR_ALWAYS.
	Change handling of bsr if GAS_SYNTAX.
	(bit test patterns): Use g constraint for op1 and rm for op0.

Thu Jul	 5 21:53:10 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (build_c_cast): Don't do implicit arithmetic conversions.
	* fold-const.c (fold): Don't combine two conversions if one is
	signed and the other is unsigned.
	* integrate.c (copy_parm_decls): Finish making last change.

Thu Jul	 5 18:26:03 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (safe_from_p): If EXP is readonly memory, any memory location
	is safe from it.

Thu Jul	 5 15:05:19 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gnulib2.c (__fixunsdfsi): Change > to >=.

	* c-decl.c (start_struct, start_enum): Set C_TYPE_BEING_DEFINED.
	(grokdeclarator): Don't warn of array if elt type being defined.

	* c-typeck.c (build_conditional_expr): Handle ((void *) 0).
	Allow 0 versus function pointer.

Thu Jul	 5 08:05:09 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (cse_insn): If machine has post-increment, don't associate
	PLUS operations if they are both adding the same constant that is
	a power of two.	 Similarly for post-decrement.

Wed Jul	 4 19:04:20 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* flow.c (mark_used_regs): Don't scan a comparison if the following
	insn that uses the cc's is dead.

	* flow.c (propagate_block): If cc-using insn is dead, so is previous.

	* expmed.c (emit_store_flag): New function.

Wed Jul	 4 18:45:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* c-typeck.c (common_type, comptypes, default_conversion):
	Use TYPE_READONLY in type to indicate const type; use TREE_READONLY
	in decl to indicate object will never change.
	(build_unary_op, readonly_warning, build_modify_expr): Likewise.
	(c_expand_asm_operands): Likewise.
	* cplus-class.c (finish_struct_bits): Likewise.
	* cplus-cvt.c (build_type_conversion): Likewise.
	* cplus-type2.c (readonly_warning_or_error): Likewise.
	* cplus-typeck.c (default_conversion, build_unary_op): Likewise
	(build_modify_expr, c_expand_asm_operands): Likewise.

	* cplus-cvt.c (popclass): When making INDIRECT_REF, don't set
	TREE_READONLY from TYPE_READONLY.

Wed Jul	 4 15:16:37 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): Fix bugs in last change.

Wed Jul	 4 07:52:53 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, case COMPONENT_REF): Delete extraneous test
	for structure-value stack slot, which no longer exists.

	* reload1.c (bad_spill_regs): Should be static.

	* combine.c (subst, gen_lowpart_for_combine): Propagate
	RTX_UNCHANGING_P when making a new MEM.
	* c-typeck.c, cplus-typeck.c (build_indirect_ref): ANSI says that
	de-reference of pointer-to-const is not readonly so don't set
	RTX_UNCHANGING_P.
	* explow.c (validize_mem): Use change_address so flags get copied
	to new MEM.
	* expr.c (convert_move, block_block_{to,from}_reg, emit_move_insn):
	Likewise.
	(do_tablejump): Set RTX_UNCHANGING_P in MEM accessing address table.
	* function.c (optimize_bit_field, instantiate_virtual_regs_1):
	Preserve flags when making new MEM.
	* loop.c (invariant_p): Memory references to an invariant address
	are invariant if RTX_UNCHANGING_P is set.
	* recog.c (adj_offsettable_operand): Propagate RTX_UNCHANGING_P
	when making new MEM.
	* reload.c (find_reloads_toplev): Likewise.
	* reload1.c (alter_reg): Stack slot is readonly if pseudo was.
	(eliminate_regs): Propagate RTX_UNCHANING_P in new MEM.
	* varasm.c (force_const_double_mem): Set RTX_UNCHANGING_P in new MEM.

Tue Jul	 3 21:50:58 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expmed.c (expand_and): New function.

	* stmt.c (expand_expr_stmt): 
	If value is volatile, fetch it and then ignore it.

	* expr.c (expand_expr): Error if variable type is incomplete.

	* c-decl.c (grokdeclarator): Don't warn of incomplete array in typedef.

Tue Jul	 3 18:03:24 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* fold-const.c (fold): Convert "(1 << foo) & bar" to "(bar >> foo) & 1"
	In "(a & 1) != 0", can convert to simply "a & 1".
	* combine.c (subst): Convert branch on sign bit to signed comparison
	with zero (possibly adding a SUBREG).
	Convert ZERO_EXTRACT of the low-order bit of a right shift into a
	ZERO_EXTRACT of the proper bit.

Mon Jul	 2 12:07:08 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c (jump_optimize): Convert conditionals for storing one
	value into a store-flags insn.

	* vax.md (call_pop, call_value_pop): New names for call patterns.
	Include the popping explicitly in the rtl. 

	* jump.c (jump_optimize): Delete case for condjump followed
	by unconditional to same label; was special case of another case.
	Switch back to next_active_insn or prev_active_insn in a few cases.

	* function.c (init_function_start): Initialize
	frame_pointer_needed to zero.

	* i386.md (tstsf): Clobber reg 0 in SImode.

Sun Jul	 1 14:31:14 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* jump.c: Use next_real_insn instead of next_active_insn.
	Likewise for prev_active_insn.	USE insns make a difference!

	* function.c (assign_stack_temp): Use largest alignment if BLKmode.

	* stddef.h: Check __SIZE_T also.

	* toplev.c: Include types.h first.

	* i386.md (trunc*2): Don't allow moving symbolic constant to memory.
	Use wider move only for symbolic constant.

	* tm-convex.h (LINK_SPEC): Posix link flags.
	* tm-convex.h (STARTFILE_SPEC): Posix start files.
	* tm-convex[12].h (CPP_SPEC): Posix defines.
	* tm-convex[12].h (LIB_SPEC): Posix libraries.
	* tm-conv[12]os7.h: New files.
	* config.gcc: use tm-conv*os7 if /usr/include/stdlib.h isn't there.

	* xm-convex.h (S_IFMT, S_IFREG): make visible if hidden for posix.
	* xm-convex.h (_PROTO): define to keep 8.0 includes from screwing up.

	* tm-convex.h (ASM_OUTPUT_{FLOAT,DOUBLE}, PRINT_OPERAND):
	  use %e instead of %#g, which is broken or non-posix.

	* tm-convex.h (current_section_is_text): make extern.
	* out-convex.c (current_section_is_text): define here.
	* tm-convex.h (OVERRIDE_OPTIONS), out-convex.c (override_options):
	  useless; remove.
	* tm-convex.h (CPP_PREDEFINES): remove parsec, long gone from
	  system includes.

Sat Jun 30 14:01:52 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (pending_xref_error): Fix typo in arg order.

	* cccp.c (do_include): Mention non-ex system headers for -M.
	Guess the directory.
	(check_macro_name): Should not be static.

	* rtl.def (inline_header): Add a vector at the end.
	* rtl.h (ORIGINAL_ARG_VECTOR): New macro.
	(RTVEC_ELT): New macro.
	* emit-rtl.c (gen_inline_header_rtx): New argument for that vector.
	* integrate.c (save_for_inline): Copy arg rtls if nec, then make
	an arg vector to put in the header.
	(expand_inline_function): Look in that vector for the rtl.
	(copy_parm_decls): Likewise.

	* c-decl.c (duplicate_decls): Warn if function declared external
	and later static.

Fri Jun 29 13:29:24 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cccp.c (handle_directive): Supply missing *.

Thu Jun 28 21:39:43 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* m68k.md (muldf3 for 68881): Generate fscale if appropriate.
	* out-m68k.c (floating_exact_log2): New function.

Wed Jun 27 17:19:36 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (finish_struct): New handling of zero-width bit fields.
	Store appropriate data in them like other bit fields.
	Don't delete them until after layout.
	Don't mess with alignment of following field; set its own.
	If PCC_BITFIELD_TYPE_MATTERS, get alignment from type.
	* stor-layout.c (layout_record): For zero-width field, if
	PCC_BITFIELD_TYPE_MATTERS, alignment does not affect that of structure.
	(layout_decl): Don't abort for zero-width if no name.

	* function.c (expand_function_start):
	Output ...FUNCTION_BEG note here, after assign_parms.
	(init_function_start): Not here.

	* sdbout.c (sdbout_record_type_name): Conditionalize for 
	SDB_ALLOW_FORWARD_REFERENCES.  Don't use typedef names, just tags.
	(sdbout_begin_block): Likewise.
	(plain_type_1): Likewise.  Also move code to output structure size.
	(sdbout_symbol): Output the type if not yet output.
	Don't output top-level initialized variables yet.
	Avoid crash if variable never got any rtl.
	Add conditional for SDB_AUTO_NORMALIZE_OFFSET.
	(sdbout_toplevel_data, sdbout_queue_anonymous_type): 
	(sdbout_dequeue_anonymous_type): New functions.
	(sdbout_tags): Reverse the list first.
	Output enums before other things.
	(sdbout_reg_parm): Fake a name if necessary.  Use C_REGPARM.
	* toplev.c (compile_file): Call sdbout_toplevel_data.

	* c-typeck.c (convert_for_assignment): Disable warnings for pointers
	to const and volatile functions.

	* expr.c (expand_expr): Mark variable as used.

Tue Jun 26 17:05:00 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-sparc.h (LINK_SPEC): Delete spurious `-'.

	* tm-sun3.h (ASM_OUTPUT_FLOAT_OPERAND): Handle minus zero.
	(ASM_OUTPUT_DOUBLE_OPERAND): Likewise.

	* stor-layout.c (layout_type): Check TYPE_NO_FORCE_BLK in union fields.

Tue Jun 26 01:48:57 1990  Michael Tiemann  (tiemann at cygnus.com)

	* tree.c (dump_tree_statistics): Dummy function.  To be filled in
	later when we decide what tree statistics should be measured.
	(build): Now ok to take arguments of length 1.	`build1' cannot be
	used to allocate 's' tree nodes whcih might have length 1.

	* All GNU C++ files updated to 1.37.2 (alpha 2).  NOTE: cplus-decl.c
	needs to be fixed to not us RTL.  I'm leaving this file in its
	current state so that the GNU C++ compiler at least compiles.

	* All SPARC files: modified to use registers %f30 and %f31 as
	temporaries for holding floating-point zero.  Used to use %f0 and
	%f1, which made it impossible to compare function return values with
	zero.

Mon Jun 25 16:54:13 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* function.c (init_function_start): New args give file/line for first note.
	* c-decl.c (store_parm_decls): Pass them.
	* integrate.c (output_inline_function): Pass dummies for them.
	* final.c (final_start_function): For sdb, don't output a line number, 
	just set last_linenum.

	* c-parse.y (hash, is_reserved_word): New keyword __label__.

	* stddef.h: Check _T_SIZE as well as _SIZE_T.

Sun Jun 24 16:09:17 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (expand_expr): Do preserve_temp_slots for TARGET_EXPR.

Sat Jun 23 09:52:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genpeep.c (gen_peephole): Ignore USE and CLOBBER insn as well as
	NOTE when matching peephole.

Fri Jun 22 17:40:56 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (process_init_constructor): Set up TREE_PURPOSE
	in record constructor elements.

	* cexp.y (exp1): If pedantic, warn about commas.
	(tokentab2): Add entries for ++ and --.
	(yylex): Error if those are used.

	* c-decl.c (lookup_tag): For wrong kind of type, just set flag.
	(shadow_tag): Clear the flag.
	(pending_xref_error): Print the error message here if flag set.
	* c-parse.y (setspecs): Call that.

	* calls.c (emit_call_1): Use call_pop and call_value_pop insns
	to record when the called function pops its args.

Fri Jun 22 16:43:12 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* local-alloc.c (wipe_dead_reg): Remove REG_DEAD note for unset reg.

	* tm-sparc.h: Replace FIX_FRAME_POINTER_ADDRESS with
	INITIAL_FRAME_POINTER_OFFSET.

	* tm-vax.h (RTX_COSTS): Show shifts are relatively expensive.

Fri Jun 22 15:05:24 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* Makefile.in (GEN): New variable.
	(P): New variable.
	(cc1, cc1plus, cc1obj): Use $(P).

	* cccp.c (check_macro_name): New subroutine taken from do_define.
	(do_define, do_undef): Use this.
	(do_undef): Warn if junk follows name.
	(handle_directive): Always ignore empty directive.
	Warn if \f or \v in directive.	Error for malformed directive name.

	* tree.h (BUILT_IN_NEXT_ARG): Define it.
	* c-decl.c (init_decl_processing): Declare __builtin_next_arg.
	* expr.h (current_function_arg_offset_rtx): Declare it.
	* function.c (assign_parms): Set that variable at end.
	* expr.c (expand_builtin): Implement __builtin_next_arg.
	* stdarg.h (va_start): Use __builtin_next_arg.

	* c-decl.c (grokdeclarator): Check for TRADITIONAL_RETURN_FLOAT.

Fri Jun 22 07:07:53 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* final.c (final_scan_insn): Put label for jump table in same section
	(read-only data) as jump table.

	* loop.c: Allow tm.h to define ..._BENEFIT and COPY_PENALTY.

Wed Jun 20 13:03:53 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-apollo68.h (FUNCTION_ARG_PADDING): Never pad.
	(STACK_BOUNDARY): Make it 32.
	(CPP_SPEC): Add spaces.	 Define _APOLLO_SOURCE if not -ansi.

	* c-common.c (check_case_value): New function.
	* c-parse.y (stmt, when parsing case): Use that.
	Add new rule for case range.

	* reload1.c (reload_inheritance_insn): New variable.
	(reg_reloaded_insn): New variable.
	(choose_reload_regs): Update those variables.
	(emit_reload_insns): Use them to remove deaths from insns
	that used input reloads.
	(reload_as_needed): Clear reg_reloaded_insn when necessary.

	* m68k.md (ashlsi3, lshlsi3): Use add to self to shift one bit.

	* dbxout.c (STAB_CODE_TYPE): New macro defined as type for stab codes.
	Use in place of enum __stab_debug_code.

Tue Jun 19 22:56:40 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (expand_increment): For preincrement, don't load value twice:
	use TEMP as input to addition.

Tue Jun 19 06:53:13 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* explow.c (adjust_stack, anti_adjust_stack): Use expand_binop instead
	of gen_{add,sub}2_insn since the latter will abort if the constant is
	out of range for the machine.

Tue Jun 19 00:35:16 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* local-alloc.c (post_mark_life): Don't decrement DEATH
	if it equals BIRTH.  Don't ever increment DEATH.

	* varasm.c (output_constructor): Discard non_lvalue_expr, not nop_expr.
	Handle missing values.	Use field in the tree_list, if any.
	(output_addressed_constants): Don't die if value is missing.
	* c-typeck.c (process_init_constructor): Handle index and field specs.
	* c-parse.y (initlist): Parse them.

Mon Jun 18 15:58:48 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c, cplus-decl.c (duplicate_decls):
	Types don't "match" if one is error.

	* c-parse.y (label_decl): Use new keyword __label__, not colon.

	* c-parse.gperf (__label__): New keyword.

	* mips.md (probe): Make a single insn, just a memref.

Mon Jun 18 14:27:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (loop_optimize): Set max_luid to last luid + 1, as documented.

	* local-alloc.c (qty_clobber): New variable.
	(local_alloc): Allocate and initialize it.
	(reg_is_set): Set qty_clobber for a clobber of a pseudo used only
	in this insn.
	(find_free_reg): Pass qty_clobber to post_mark_life.
	(post_mark_life): If CLOBBER if non-zero, register isn't live after
	its death insn.

	* integrate.c (expand_inline_function): Don't call try_constants on
	an insn that sets CC0 until we have processed the next insn.  Then
	call it on both.  This is because the recognizer for these insns
	may want to look at the user of CC0.

Mon Jun 18 13:25:59 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* mips.md (ashlqi3, ashlhi3, one_cmplqi2, one_cmplhi2): Deleted.
	(ashlsi3, ashrsi3, lshrsi3, neg*, one_cmplsi2): Simplified.
	Don't output comments.	Use more specific predicates.

	* mips.md (movsf, movdf): Use L, M codes to avoid #ifdef's.
	Also simplify and don't output comments.
	(anonymous patterns for those insns): Deleted.
	(loading floating constant): New patterns added.
	(move qi to si pattern): Deleted; ridiculous.
	(movdi, movsi, movhi, movqi): No need to check for moving reg to self.

	* mips.md (nop): Use .set noreorder to placate assembler.

Sun Jun 17 20:01:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* gcc.c (set_spec): Don't use `name' for both old spec and name of
	spec.  Use new var old_spec for the former use.
	Don't use (char *) 0 for null spec; use a null string instead.

	* jump.c (jump_optimize): Don't special-case deleting an ADDR_DIFF_VEC.
	Merge code to detect trivial ADDR_VEC and ADDR_DIFF_VEC.
	(mark_jump_label): Don't count the use of a vector table label in 
	ADDR_DIFF_VEC.
	(delete_insn): Can now handle ADDR_DIFF_VEC.
	(delete_labelref_insn): New function.
	(redirect_tablejump): Call new function to delete insn that references
	the jump table.

Sun Jun 17 01:19:26 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* genemit.c (gen_expand): Don't generate `operands' if size is 0.

	* tm-i860.h (GO_IF_LEGITIMATE_ADDRESS): Displacement must be multiple
	of the alignment of the operand.

	* i860.md (signed bit field recognizers): Don't shift by >31 bits.

	* out-i860.c (output_delayed_branch): Pass register properly to
	load_opcode.

	* mips.md (general/fp reg move patterns): Use codes L, M, D.
	(movdi): Likewise.  And don't output useless comments.
	Use the assembler temp reg for non-offsettable address.
	(movsi, movhi, movqi): Output nothing for move from reg to itself.
	Output li to load a constant.  Use `move' instead of `add'.
	Don't output useless comments.
	(load-address pattern): Deleted; handled by addsi3 pattern.

	* mips.md (addsi3, mulsi3): Make both input predicates arith_operand
	since they are commutative.
	(andsi3, iorsi3, xorsi3): Likewise.

	* tm-mips.h (MOST_SIGNIFICANT_WORD, LEAST_SIGNIFICANT_WORD): New.

	* tm-mips.h (PRINT_OPERAND): New codes D, L, M.
	* mips.md (anddi3, iordi3, xordi3): Use earlyclobber to stop overlap.
	Use new print code D.

	* mips.md (andsi3, iorsi3, xorsi3): Make predicates more specific.
	(andhi3, ..., andqi3, ...): Patterns deleted.
	(patterns for nor): New anonymous patterns.
	* out-mips.c (uns_arith_operand): New function.

	* mips.md (trunc*, zero_extend*, extend*, fix_trunc*, float*):
	Use more specific predicates.

	* mips.md (addhi3, ..., addqi3, ...): Patterns deleted.
	(addsi3, subsi3, mulsi3, divsi3): Make predicates more specific.
	Delete useless comments from assembler code.
	Use more generic op codes rather than special cases such as addiu.
	(divmodsi4, udivmodsi4, udivsi3, modsi3, umodsi3): New patterns.
	(abssf2, absdf2): New patterns.

Sun Jun 17 06:56:10 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (COST, rtx_cost, make_regs_eqv): Indicate that hard registers
	in fixed_regs are even cheaper than pseudos.

	* function.c (instantiate_virtual_regs_1): If valid, replace PLUS
	whose second operand would be zero with its first operand.

Sun Jun 17 00:17:03 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* sdbout.c (sdbout_symbol): Get right regno for var-length object.

	* combine.c (simplify_set_cc0_and): Strip SUBREGs, but only if
	they truncate.	Handle ASHIFTRT like LSHIFTRT.
	(try_combine): Call simplify_set_cc0_and in all those cases.
	(subst): Handle (zero_extract (subreg (lshift (reg )))).

Sat Jun 16 23:11:52 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.c (get_narrower, get_unwidened): Bit field test was backwards.

Sat Jun 16 19:07:16 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* fold-const.c (fold): Fix typo in test for distributing binary
	operator over conditional and compound expressions.

	* genoutput.c: Remove vestiges of obsolete and never used
	INSN_MACHINE_INFO.

	* rtl.def (MATCH_PARALLEL): Add new RTL code.
	* genconfig.c (walk_insn_part): Support MATCH_PARALLEL.
	* genemit.c (max_operand_1): Likewise.
	(gen_exp): Just write operand for MATCH_PARALLEL.
	(gen_expand, gen_split): Support MATCH_PARALLEL.
	* genrecog.c (walk_rtx): Add support for MATCH_PARALLEL.
	* genoutput.c (scan_operands): Suppport MATCH_PARALLEL
	like MATCH_OPERATOR.
	* genpeep.c (match_rtx): Add code to support MATCH_PARALLEL.
	Don't write unnecessary cast to `rtx'.
	* genrecog.c (add_to_sequence): Simplify handling of mode.
	Support MATCH_PARALLEL.

	* expr.c (move_block_{to,from}_reg): Support load/store multiple.
	* function.c (instantiate_virtual_regs_1): If can't substitute
	new pseudo for virtual register, try doing the substitution
	globally throughout the entire insn.  This lets load/store multiple
	insns refer to virtual registers in their addresses.
	
	* genrecog.c (write_split_tree, write_split_subroutine): Deleted.
	(break_out_subroutines, write_subroutine, write_tree):	Accept
	parameters that indicate whether we are making gen_split or gen_recog.
	(main): Pass new parameters to break_out_subroutines and write_tree.

	* final.c (final_scan_insn): Process insns that set CC whenever a
	REG_CC_STATUS note is found; not only JUMP_INSNs can use CC.
	When scanning REG_CC_STATUS insns, set cc_prev_status from cc_status
	each time.

	* recog.c (validate_replace_rtx): New function that tries to 
	replace all occurrences of an object within an insn and see if the
	resulting insn is valid.

Thu Jun 14 06:58:26 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (emit_no_conflict_block): Write REG_NO_CONFLICT notes all
	all insns in the block that modify the output.	Write them on the
	final insn even if we don't put a REG_EQUAL note there.

	* stmt.c (expand_return): Only distribute return down a conditional
	expression if tail recursion is possible in a branch.

	* expr.c (expand_expr): Remove obsolete reference to when we had
	a shared structure-value slot.

	* jump.c (get_label_before, get_label_after, follow_jumps): No longer
	static.
	* rtl.h: Define them.

Mon Jun 11 17:35:40 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* loop.c (INSN_LUID): Check for INSN_UID above the area that we
	know about.
	(loop_optimize): Cannot use INSN_LUID as lhs.
	(scan_loop): If first jump is to label made by loop, we can't
	tell if it is in range or not, so reject loop.
	Reject loop if SCAN_START was an insn previously made by loop since
	we won't know its luid.
	Only call loop_reg_used_before if argument has known luid.
	Mark partial invariant as global if its insn was made by loop.
	(ignore_some_movables): Don't assume all invariants have luids.
	(strength_reduce): Use no_labels_between_p instead of
	labels_in_range_p.
	Don't look at luid of insns for which one doesn't exist.
	(valid_initial_value_p): Reject initializations in insns whose
	luid we don't know.

	* loop.c (product_cheap_p): Put all our rtl into a separate obstack
	and free memory from it.  If we use current_obstack, we may free
	memory allocated by gen_reg_rtx, which must be preserved.

	* c-common.c (rewrite_for_merged_ref): A non-zero one-bit signed field
	is -1, not 1.
	* c-typeck.c, cplus-typeck.c (build_binary_op_nodefault): If can't
	merge comparisons, don't use result of rewrite_for_merged_ref;
	comparisons with zero are more efficient.

	* protoize.c (main): Don't declare as extern.

	* c-aux-info.c (gen_aux_info_record): Don't declare extern.

	* genemit (gen_split): Rework to fix numerous bugs and typos.

	* function.c (assign_parms): Avoid generating (PLUS foo (const_int 0)).

Wed Jun	 6 20:03:31 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* gencodes.c (main): Count a code number for DEFINE_SPLIT.

	* rtlanal.c (note_store): Pass SUBREG of a hard register to function.
	(reg_overlap_mentioned_p): Handle receiving SUBREG of hard register.
	* integrate.c (mark_stores): Likewise.
	* local-alloc.c (reg_is_set, reg_is_born): Likewise.
	* reload1.c (mark_not_eliminable): Likewise.

	* loop.c (move_movables): Don't blow up if moving last real insn
	in function.

Wed Jun	 6 19:44:04 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gcc.c (default_compilers): Pass -traditional before -f*.
	Delete -gg option.

Sun Jun	 3 22:44:12 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (grokdeclarator): Warn about extern with initializer.

Sun Jun	 3 22:32:19 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* genrecog.c (main): Don't call write_tree with null if no insns
	were in file.

Sat Jun	 2 21:49:24 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, cases ABS_EXPR, MAX_EXPR, MIN_EXPR): Use target
	unless zero or safe_from_p rejects it.
	(expand_expr, conditional cases): Likewise.

Sat Jun	 2 14:46:18 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (grokdeclarator): Handle const and volatile with parm
	specified as function type.

Fri Jun	 1 16:13:39 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* rtl.def (DEFINE_FUNCTION_UNIT): Change specifications so
	it now is one per operation type, rather than one per
	function unit.
	* genattr.c (write_units): Write out new function names and
	function unit table structure.
	* genattrtab.c (struct function_unit_op): New structure.
	(struct function_unit): Updated for new definition of
	DEFINE_FUNCTION_UNIT.
	(SIMPLIFY_TEST_EXP): New macro to reduce number of function calls
	to simplify_test_exp.  Replace all call to the function with
	uses of the macro.
	(check_attr_test, make_alternative_compare): Show that EQ_ATTR with
	attribute of "alternative", MATCH_OPERAND, and comparison cases can't
	be simplified.
	(expand_units, gen_unit, write_function_unit_info): Support new
	meaning of DEFINE_FUNCTION_UNIT.
	(simplify_test_expr): Rework AND and IOR cases to reduce rescans.
	Once an expression has been simplified, set RTX_UNCHANGING_P so
	we won't try simplifying it again.  Don't do this if INSN_CODE == -2.
	(write_attr_set): Don't make a recursive call if we know that
	the test we are writing will always be false.  Also clean up a bit.
	(main): true_rtx and false_rtx don't need to be simplified.
	Write gen_attr_... routines before special routines.

Fri Jun	 1 14:17:48 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-sparc.h (FUNCTION_PROLOGUE, FUNCTION_EPILOGUE):
	Round frame size to multiple of STACK_BOUNDARY.

Fri Jun	 1 09:38:51 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* optabs.c (emit_no_conflict_block): Place REG_NO_CONFLICT notes on
	insn that contains REG_EQUAL note instead of insn doing computation.

	* cplus-decl2.c, cplus-lex.c: Rename gettime to get_run_time.
	Likewise for my_gettime to my_get_run_time.

	* Makefile.in (varasm.o, calls.o, explow.o, integrate.o, loop.o):
	These do not depend on insn-codes.h.
	* function.c: Explicitly include insn-codes.h to make it clear that it
	is needed for the values of the CODE_FOR_... macros.

Thu May 31 12:59:28 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gnulib2.c (__trampoline): New function.
	* Makefile.in (LIB2FUNCS): Compile it.
	* tm-m68k.h (TRAMPOLINE_ALIGN): Define it.
	* function.c (trampoline_address): Handle extra alignment.
	* tm-m68k.h (TRAMPOLINE_TEMPLATE, INITIALIZE_TRAMPOLINE): 
	Redefine to transfer via __trampoline.
	(TRANSFER_FROM_TRAMPOLINE): Define it, for gnulib2.c.

	* fold-const.c (fold): Preserve sign on constant when other terms
	cancel (after call to split_tree).

Thu May 31 12:39:51 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (preexpand_calls): Ignore BLOCK to avoid infinite recursion.

	* function.c (assign_parms): Fix typo getting mode of result.

	* cse.c (cse_basic_block): Don't go past TO if it is target of
	followed jump.

Wed May 30 21:31:16 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-parse.y (fndef, nested_function, notype_nested_function):
	Use YYERROR1 instead of YYERROR. 
	(YYERROR1): New macro.
	* cplus-parse.y, objc-parse.y: Likewise.

Tue May 29 21:53:19 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* optabs.c (expand_float): Don't use hard reg as intermediate.

	* c-parse.y, objc-parse.y (yylex): Fix typo checking for ERANGE.
	* cplus-lex.c (yylex): Copy current code for ERANGE from c-parse.y.

	* toplev.c (get_run_time): Renamed from gettime.

Mon May 28 15:47:48 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (emit_push_insn): Don't push by pieces if alignment
	forces use of small pushes that do problematical padding.

	* tm-sparc.h (SELECT_SECTION): Use TREE_SIDE_EFFECTS.
	(STACK_POINTER_OFFSET): Now 68; does not include REG_PARM_STACK_SPACE.
	(REG_PARM_STACK_SPACE): Now takes arg and has value.
	(ACCUMULATE_OUTGOING_ARGS): Define this.
	(FUNCTION_PROLOGUE, FUNCTION_EPILOGUE, EXIT_IGNORE_STACK): Use
	current_function_outgoing_args_size, not ..._pretend_...
	(INITIALIZE_TRAMPOLINE): Use size_int.

	* varasm.c (make_decl_rtl, make_function_rtl): Run ENCODE_SEGMENT_INFO
	if it is defined.

	* tree.def (BIND_EXPR): Add operand, which holds the BLOCK.
	* expr.c (expand_expr): When BIND_EXPR is seen, flag the BLOCK.
	* dbxout.c (dbxout_block): Test the flag in the BLOCK.
	* sdbout.c (sdbout_block): Likewise.
	* symout.c (symout_function): Likewise.
	* c-parse.y (stmt expr rule): Corresponding change.

Sun May 27 20:53:16 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* caller-save.c (save_call_clobbered_regs): Correctly mark registers
	live for multi-word pseudos.

Sat May 26 13:42:04 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* sdbout.c (sdb_begin_function_line): Now -1 if not in use.
	(sdbout_end_function): Set it to -1.

	* tree.def: Rename EXIT_STMT to EXIT_EXPR and likewise for LOOP_STMT.
	Also LET_STMT to BIND_EXPR, and GOTO_STMT, LABEL_STMT, RETURN_STMT
	to ..._EXPR.
	(struct tree_stmt, struct tree_if_stmt, struct tree_bind_stmt):
	(struct tree_case_stmt): Types deleted.

	* tree.c (make_node, copy_node): Treat 's' like 'e' for size of node.
	In make_node, make BLOCK and BIND_EXPR savable.
	* expr.c (expand_expr): Rename, and use TREE_OPERAND to get body.
	* cplus-init.c (build_vec_delete): Likewise, and build appropriately.
	* print-tree.c (print_node): No special handling for these and IF_STMT.
	* stmt.c (warn_if_unused_value): Likewise.

	* tree.def (BLOCK): New tree code for binding blocks.
	* tree.h (BLOCK_VARS, BLOCK_TYPE_TAGS):
	(BLOCK_SUBBLOCKS, BLOCK_SUPERCONTEXT): Renamed from STMT_...
	(STMT_...): Except for those, all deleted.
	(BLOCK_CONTROLLER): Points to corresponding BIND_EXPR, if any.
	(BLOCK_CHAIN): New macro.
	* tree.c (build_block): Renamed from build_let.
	(decl_type_context, decl_function_context): Corresponding change.
	* print-tree.c (print_node): Likewise.
	* c-decl.c, cplus-decl.c (poplevel): Likewise.
	* integrate.c (copy_decl_tree): Likewise.
	* function.c (setjmp_protect, uninitialized_vars_warning):
	(instantiate_decls_1): Likewise.
	* c-parse.y, cplus-parse.y, objc-parse.y (stmt expr rule): Likewise.
	* dbxout.c (dbxout_block): Expect only BLOCKs in this tree.
	Ignore those with controllers that are not marked used.
	* sdbout.c (sdbout_block): Likewise.
	* symout.c (symout_function): Likewise.

	* tree.def: Delete IF_STMT, COMPOUND_STMT, WITH_STMT.
	* expr.c (expand_expr): Delete handling of IF_STMT.
	* tree.c (build_if, build_loop, build_case, build_goto): Deleted.
	(build_expr_stmt, build_asm_stmt, build_return, build_exit): Likewise.
	(build_compound): Likewise.
	* cplus-init.c (build_vec_delete): Use COND_EXPR instead of IF_STMT.

Sat May 26 13:23:12 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* calls.c (struct arg_data): Add new fields slot_offset and stack_slot.
	(expand_call): Compute both location of start of stack slot and	the
	place in the stack slot where the first byte of the argument will be
	placed.
	Use stack_slot when loading a BLKmode object into registers.
	When loading into registers, don't check reg_parm_seen, just look
	at args[i].reg.
	(expand_call, store_one_arg): Save and restore stack slot starting
	from beginning of slot, not begining location where arg is stored.
	(store_one_arg): After calling emit_push_insn, argument is really
	at arg->stack_slot instead of arg->stack because if we want to
	load it into registers, we include any padding.

Sat May 26 01:37:27 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.h (struct tree_type): Rename sep=>minval, sep_unit=>precision.

	* tree.c (init_obstacks, init_tree_codes): init_tree split in two.
	* toplev.c (compike_file): Call them.

Fri May 25 16:40:45 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stor-layout.c (layout_record): Nuke excess set of DECL_FIELD_BITPOS.
	* varasm.c (output_constructor): Bitpos is zero for array (field == 0).

Fri May 25 00:48:45 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* final.c (final_scan_insn): Restore inadvertent deletion in change
	of May 24th.

Fri May 25 00:13:12 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* print-tree.c (print_node): Print some missing fields for decls.
	(print_node_brief): Always print value of integer or real constant.

Thu May 24 21:28:36 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* fold-const.c (real_zerop): Function deleted; was redundant.

	* tree.h (DECL_OFFSET): Macro deleted.
	(struct tree_decl): Field deleted.

	* c-typeck.c (build_unary_op): For ADDR_EXPR of COMPONENT_REF,
	use DECL_FIELD_BITPOS and handle non-constant values.
	* stor-layout.c (layout_record, layout_union): Likewise.
	* expr.c (expand_assignment, store_constructor, expand_expr): Likewise.
	* dbxout.c (dbxout_type): Likewise.
	* sdbout.c (sdbout_one_type): Likewise.
	* c-common.c (merge_component_comparisons, make_merged_ref): Likewise.
	* print-tree.c (print_node): Likewise.
	* varasm.c (decode_addr_const, output_constructor): Likewise.
	* objc-actions.c (build_ivar_list_initializer): Likewise.
	* cplus-typeck.c (build_component_addr): Likewise.
	And preserve TREE_CONSTANT flag.
	(unary_complex_lvalue): Likewise.
	
	* tree.h (DECL_FUNCTION_CODE): Use the frame_size field, not `offset'.
	Now meaningful only if function is built in.
	(DECL_BUILT_IN): New flag macro.
	* c-decl.c (builtin_function): Set the flag.
	(pushdecl, duplicate_decls): Use and set it.
	* c-typeck.c, cplus-typeck.c (build_function_call): Test it.
	* cplus-decl.c (define_function): Set the flag.
	(pushdecl, duplicate_decls): Use and set it.
	* expr.c (expand_expr, preexpand_calls): Test it.

	* tree.h (DECL_INCOMING_RTL): New macro.
	* function.c (assign_parms): Set up that field.
	* dbxout.c (dbxout_parms, dbxout_reg_parms): Don't try to use
	DECL_OFFSET for a parm; it is not set.	Use DECL_INCOMING_RTL.
	(PARM_PASSED_IN_MEMORY): New macro.
	* sdbout.c (sdbout_parms, sdbout_reg_parms): Likewise.
	(PARM_PASSED_IN_MEMORY): New macro.

	* cccp.c (macarg): When popping frame, free via free_ptr, not buf.

Thu May 24 18:04:06 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (next_cc0_user): New function.
	* recog.c (next_insn_tests_no_inequality): Use next_cc0_user.
	* rtl.h: Define next_cc0_user.

	* cse.c (cse_insn): Make canon_reg calls in separate loop over the
	SETs to avoid problems when MATCH_DUPs are present in an insn
	pattern.
	Don't canon CLOBBER in PARALLEL.  Instead, canon MEM of CLOBBER,
	both within a PARALLEL and standalone.	Also, call note_mem_clobbered
	only for MEM.

Thu May 24 13:08:25 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* gnulib2.c (__negdi2): Make this inline for other functions.

Thu May 24 07:15:04 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* jump.c (no_labels_between_p, prev_real_insn, next_real_insn):
	(prev_active_insn, next_active_insn, next_label): Delete from here.
	* rtlanal.c (no_labels_between_p): Put here.
	* emit-rtl.c (prev_real_insn, next_real_insn, prev_active_insn):
	(next_active_insn, next_label): Add to here.

	* c-common.c: Define NULL so NULL_TREE macro will work.

	* cplus-typeck.c (common_parms): Use oballoc and obfree to
	avoid external current_obstack.

	* cse.c (fold_cc0, cse_insn): Use HASH macro instead of call to
	canon_hash.
	(cse_insn): When just recording jump insn, show it doesn't set CC0
	and set it as previous insn.

	* genoutput.c (gen_split): Fix typo in comment.

	* reorg.c: No longer need define next_label and next_real_insn as
	extern.

	* toplev.c (rest_of_compilation): Use DELAY_SLOTS instead of
	obsolete HAVE_DELAYED_BRANCH; include insn-attr.h.

	* final.c (dbr_sequence_length): Now present #ifdef DELAYED_BRANCHES.
	Eliminate references to obsolete DBR_INSN_SLOTS.
	(get_attr_length): Support ADJUST_INSN_LENGTH.
	(get_attr_length, shorten_branches): Handle a SEQUENCE built for an
	insn with filled delay slots.
	(final_scan_insn): Avoid unnecessary call to recog_memoized.
	Use validate_change instead of assuming replacement of CC0 by
	STORE_FLAG_VALUE or const0_rtx is valid.

Wed May 23 16:32:32 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* out-m68k.c, out-alliant.c (output_btst):
	Use next_insn_tests_no_inequality, not next_insns_test_...
	* recog.c (next_insns_test_no_inequality): Function deleted.

Wed May 23 13:26:57 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expmed.c (store_bit_field): Don't bother making a SUBREG when we
	call ourself recursively; the recursive call will just strip it off.

	* reorg.c: Include insn-attr.h before testing DELAY_SLOTS.
	(emit_delay_sequence): Assign new INSN_UID to the SEQUENCE.
	Chain insns through the sequence via NEXT_INSN and PREV_INSN.
	* emit-rtl.c (next_insn, prev_insn): Go inside a SEQUENCE to
	find the next or previous insn.
	(make_insn_raw): No longer static.
	* rtl.h: Define make_insn_raw, prev_active_insn, next_active_insn,
	next_insn, and previous_insn.

	* genattrtab.c (write_eligible_delay): Always use "*delay_type";
	annuling only applies to candidate insn, not insn needing slot.

	* tree.c (init_tree): tree_node_counter doesn't exist any more.
	(make_node, copy_node, make_tree_vec, build1): No longer set TREE_UID.

Wed May 23 00:48:57 1990  Michael Tiemann  (tiemann at cygnus.com)

	* genemit.c, genextract.c: Add support for MATCH_OP_DUP and
	DEFINE_SPLIT.

	* cplus-init.c (build_delete): TREE_SIDE_EFFECTS can be
	nonzero when address to be deleted is a cast of something
	with side-effects (like a call).
	(build_vec_delete): Simplify code now that `make_node' does the
	right thing for _STMT nodes.

Tue May 22 22:59:43 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (cse_end_basic_block): Don't crash if NEXT_INSN of
	our branch target is zero.
	Don't skip scanning first insn after destination label of branch.

	* expr.c (emit_move_insn): Abort if modes differ.
	(expand_expr, comparison cases): Use TMODE when convenient.
	(expand_expr, case COND): When optimizing (C ? 1 : 0), ensure
	we return a result of the correct mode.

	* integrate.c (expand_inline_function): Can't call try_constants for
	JUMP_INSN since we may have changed RETURN to jump.

Tue May 22 22:40:22 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.h (struct tree_common): Delete field `uid'.
	(TREE_UID): Macro deleted.

	* c-decl.c (finish_decl): Discard any variable sizes in the decl.

	* calls.c (expand_call): When making reg_notes for const function,
	don't test is_const twice, and take account of order of pushing.

Tue May 22 21:41:48 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* reload1.c (eliminate_regs): Ensure we process pseudo that is first
	operand of PLUS.

	* expmed.c (store_bit_field): When stripping a SUBREG, adjust the
	bit position to correspond to the change in modes.

	* cse.c (rtx_cost): Use COSTS_N_INSNS macro.

	* cse.c (qty_comparison_*): New vars.
	(new_basic_block): Initialize qty_comparison_code.
	(fold_rtx): If we see a comparison, check if we have seen the
	same comparison before.	 If so, we know the result.
	(record_jump_equiv): Save the comparison being passed in the
	qty_comparison_* variables for possible later use by fold_rtx.
	(cse_insn): If the current insn doesn't reference cc0, but the
	previous insn sets it, delete the previous insn; presumably we
	used to test it.
	(cse_basic_block): Allocate new qty_comparison_* vars.

	* reload1.c (eliminate_regs): Second arg is now mode of enclosing
	MEM, if any, rather than simply flag indicating inside MEM.
	Use this mode to determine amount that, e.g., PRE_DEC adjusts by.

	* reload1.c (reload): Set regs_ever_live for a register that couldn't
	be eliminated.
	* final.c (only_leaf_regs_used): Don't do it here.

	* reorg.c: Eliminate obsolete macros *_REORG_FUNCTION.
	Entire file is conditional on #ifdef DELAY_SLOTS.

	* Makefile.in: Use reorg.c instead of dbranch.c.

Tue May 22 20:40:30 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-decl.c (complete_array_type): Get string elt size in bytes.

Tue May 22 00:42:07 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* toplev.c (rest_of_compilation): Turn off VERBOSE arg to thread_jumps.

	* objc-parse.y, objc-actions.c: Replaces uses of build with build1
	when being used for 1-operand nodes.

Mon May 21 23:59:21 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* global-alloc.c (hard_reg_full_preferences): New variable.
	(global_alloc): Allocate and initialize it.
	(prune_preferences): Include in regs_someone_prefers all words
	of multi-word items that have preferences.  Don't includes registers
	we also prefer unless they are prefered by an allocno that needs
	more registers.
	(set_preference): Set hard_reg_full_preferences also.

Mon May 21 21:36:29 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tree.c (make_node): All ..._STMT nodes have side effects, type void.

Mon May 21 16:03:23 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* integrate.c (expand_inline_function): Set insns_at_start before
	processing parameters since it might be needed during that processing. 
	Set RTX_INTEGRATED_P in all insns emitted, including labels and
	barriers.
	Ensure COPY is set correctly when replacing RETURN and avoid
	duplicate barriers by calling emit_jump_insn instead of emit_jump.
	Call note_stores for JUMP_INSNs and CALL_INSNs in case they have
	side-effects we care about.
	(copy_rtx_and_substitute): Convert (use (subreg FOO)) to (use FOO).
	(subst_constants): Don't crash if we see a SUBREG replaced by a
	REG or vice versa; we have no work to do in that case.
	Fix typo in case MULT.

	* recog.c (constrain_operands): Call reg_fits_class_p with original
	mode of OP, not mode of SUBREG_REG (op) when OP is SUBREG.

Mon May 21 14:25:14 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expmed.c (extract_bit_field): Use class of TMODE for simple reg case.

	* flags.h (flag_pic): Declare it.
	* tree.h (mode_for_size): Declare it.
	* c-tree.h (merge_component_comparisons): Declare it.

Mon May 21 07:27:12 1990  Michael Tiemann  (tiemann at cygnus.com)

	* jump.c (thread_jumps): New function to optimize the case where one
	conditional jump jumps to another testing the same condition.  This
	function usefully optimzies code both before common subexpression
	elimination (where it "finds" common subexpressions that cse won't
	find) and after loop optimization (where the loop optimizer
	introduces new conditional jumps after rearranging loops).
	(rtx_equal_for_thread_p): cheaply builds equivalences between
	register so that jump threading can be effectively run before cse.

	* emit-rtl.c (init_emit_once): Initialize PIC_OFFSET_TABLE_RTX if
	PIC_OFFSET_TABLE_REGNUM is defined.

	* tree.c (build,build1,build_nt): Set TREE_RAISES in addition to
	TREE_SIDE_EFFECTS.
	({temp,saveable,perm}_tree_cons): Call `tree_cons' with arguments
	instead of calling `make_node' directly.  Eventually, `tree_cons'
	could be faster than `make_node'.
	(get_identifier): Use `bcmp' instead of `strcmp', since it's
	faster.	 Also, test the first letter of each string before calling
	the string comparison function.

	* toplev.c: Add new flags FLAG_THREAD_JUMPS and FLAG_PIC.  The
	former gives better common sub-expression elimination while the
	latter tells the compiler to emit position-independent code.
	(rest_of_compilation): Thread jumps if requested.

	* stor-layout.c (layout_{record,union}): For loop bodies meant only
	for FIELD_DECLs, make sure we have a FIELD_DECL before proceeding.

	* stmt.c (expand_end_case): Use ADDR_DIFF_VEC if FLAG_PIC is
	nonzero.
	@@ NOTE: This would look a lot nicer if CASE_VECTOR_PC_RELATIVE were
	an expression (like zero/nonzero) instead of soley a #define.
	(fixup_cleanups): If cleanups emitted no code, don't call
	`reorder_insns'.
	(expand_decl_cleanup): Return 0 in case we are not in a block
	(but instead at top-level).

	* stack.h: New GNU C++ file.

	* rtl.c (REG_NOTE_NAMES): Add REG_CC_STATUS and REG_TAIL_CALL.
	* rtl.h: Ditto.	 Also make external declaration of
	pic_offset_table_rtx.
	* rtl.def: Add the following new RTL codes: DEFINE_SPLIT,
	MATCH_OP_DUP, LO_SUM and HIGH.

	* reorg.c: New file.  Performs instruction reorganizations
	(primarily branch scheduling) after register allocation.

	* local-alloc.c (local_alloc): If defined, execute
	ORDER_REGS_FOR_LOCAL_ALLOC.

	* genrecog.c (struct decision): Extended to handle DEFINE_SPLITs.
	(write_tree): Split into three subroutines: `write_tree_1' which
	does the main work, `write_tree' which does the original job, and
	`write_split_tree' which builds the recognizer for insn splitting.
	(add_to_sequence): Handle MATCH_OP_DUP.
	(main): Bui.Build both insn->insn_code and insn->insn_list
	recognizers.
	Also, fixed comment at the top of the file.
	* genpeep.c (main): Handle DEFINE_SPLIT.
	(match_rtx): Handle MATCH_OP_DUP.
	* genoutput.c (main): Handle DEFINE_SPLIT.
	* genconfig.c (main): Handle DEFINE_SPLIT and MATCH_OP_DUP.
	* genattrtab.c (main): Handle DEFINE_SPLIT.

	* fold-const.c (various places): Use `build1' constructor instead of
	`build' constructor whenever possible.

	* final.c (final_scan_insn): If we know the status of the condition
	codes at a particular JUMP_INSN (by dint of the fact that it has a
	REG_CC_STATUS note), set CC_STATUS to reflect that value.
	(only_leaf_regs_used): @@ For some reason the frame pointer register
	is not marked live, even when it is.  If FRAME_POINTER_NEEDED is
	nonzero, set REGS_EVER_LIVE[FRAME_POINTER_REGNUM] to 1.

	* expr.c (emit_library_call): Round ARGS_SIZE.CONSTANT up, not down.
	Use new macro MAX to accomplish this.
	(safe_from_p): Don't check that EXP is nonzero.	 Instead, make
	caller check (only in one place) that argument to `safe_from_p' is
	non-zero.
	(expand_expr): In COND_EXPR case, make sure that the predicate is
	safe from the two conditions.  Lossage occured in a construct of the
	form (c = c < 0 ? d : -d).

	* explow.c (plus_constant): Handle LO_SUM rtl.

	* c-typeck.c (build_binary_op_nodefault): If optimizing, try merging
	component refs and/or comparisons into larger operations.

	* c-common.c (rewrite_for_merged_ref): New function.  Canonicallizes
	expressions to be recognizable as candidates for merged
	COMPONENT_REF operations.
	(make_merged_ref): Builds custom FIELD_DECLs for accessing multiple
	bits in a byte simultaneously.
	(merge_component_comparisons): Optimize COMPONENT_REFs in
	expressions that look like (x.p == y.p && x.q == y.q) or
	(x.p != y.p || x.q != y.q).  Also optimize (x.p == c1 && x.q == c2),
	where C1 and C2 are known constants.

	* c-lang.c (print_lang_statistics): Added new hook function.
	Currently does nothing for C.

	* c-convert.c: Use `build1' constructor instead of `build'
	constructor whenever possible.

	* cplus-typeck.c (build_binary_op_nodefault): Call this function for
	better applicability of the merged component ref optimization. 
	Also, add more recognized cases.

	* cplus-type2.c (merge_component_comparisons): Code improved, and
	moved to c-common.c.

	* cplus-parse.y (operator_name): Recognize `operator,'.
	(expr): On parsing ',', call `build_x_compound_expr' instead of
	`build_compound_expr'.
	(various places): Call `note_decl_list_got_semicolon' instead of
	`note_decl_got_semicolon' where object in question is a list instead
	of a type.
	(component_declarator0): Set CURRENT_DECLSPECS from the bitfield
	type.

	* cplus-method.c (hack_wrapper): Rename parameter TYPE to CNAME,
	since it is a type name we pass in, not a type.

	* cplus-lex.c (opname_tab): Add `operator,'.
	(note_decl_list_got_semicolon): Make notation that a list of
	declarations should be considered as having "gotten a semicolon".
	(extract_interface_info,interface_strcmp): Commented.

	* cplus-init.c (build_delete): Rest of changes to reimplement new
	destructor mechanism.
	(build_vbase_delete): Fix bug whereby arrays of length 0 and 1 were
	not being correctly handled.  Also, where elsements were not being
	deleted.  Use new destrouct calling convention.
	(various places): Change TYPE_HAS_CONSTRUCTOR to
	TREE_HAS_CONSTRUCTOR where appropriate.

	* cplus-expr.c (cplus_expand_expr): Use `emit_block_move' to copy
	data from RETURN_TARGET to CALL_TARGET in case they do not line up
	normally.

	* cplus-decl2.c (finish_file): No need to call `build_vbase_delete'
	on top-level objects anymore, since destructors now do the right
	thing.

	* cplus-decl.c (finish_function): Implement new destructor
	mechanism: destroy virtual baseclass objects if (in$charge & 2) is
	nonzero.  Deallocate if (in$charge & 1) is nonzero.

	* cplus-cvt.c (build_up_reference): Use TREE_HAS_CONSTRUCTOR, not
	TYPE_HAS_CONSTRUCTOR on non-TYPE tree nodes.
	(build_up_reference): Only build up references between compatible
	types.	I.e., don't build a char& to an int object.
	(convert_to_aggr): Set the TREE_SIDE_EFFECTS bit if the result is a
	CALL_EXPR.

	* cplus-class.c (build_vbase_path): Recover from bad parse errors.
	(build_method_call): Implement new ctor/dtor semantics to allow
	differentiation between tearing an object down and deallocating it.
	This also means that ctors and dtors can now aviod going through the
	virtual function table mechanism as they construct/destruct their
	objects.

	* ALL GNU C++ files: Use new macro IDENTIFIER_TYPE_VALUE to lookup
	type value of an identifier.  Also implement related macros
	IDENTIFIER_HAS_TYPE_VALUE, and IDENTIFIER_TYPEDECL_VALUE.

	* cplus-cadillac.c (cadillac_switch_source): Change Prototype
	declaration to non-prototype declaration.
	(readable_p): Ditto.

Sun May 20 20:23:39 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (c_sizeof): For incomplete type, warn and return 0.
	(c_sizeof): Similar.

Sun May 20 17:20:48 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* emit-rtl.c (gen_highpart): Support SUBREG like gen_lowpart.

Sun May 20 16:59:17 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* c-typeck.c (build_c_cast): Warn about pointer-integer casts 
	where size differs.

	* stor-layout.c (layout_type): Multi-word field doesn't force BLKmode.

	* expmed.c (extract_bit_field): Use mode_for_size for lsb-aligned
	fields in regs.	 No longer knows explicit modes for this.

Sun May 20 15:12:38 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* Makefile.in: (reload1.o): Now depends on output.h.

	* calls.c (expand_call): No need to set frame_pointer_needed.

	* emit-rtl.c (gen_rtx): If reference to sp, ap, or fp, use
	appropriate already-made rtx (e.g., stack_pointer_rtx).

	* expr.c (expand_builtin, case BUILT_IN_ALLOCA): No need to set
	frame_pointer_needed.

	* final.c (final_start_function): No longer round size of frame here.
	(final_scan_insn): Call constrain_operands with new operand.

	* flow.c (life_analysis): Change test on whether sp is live or
	not to depend on FRAME_POINTER_REQUIRED and -fomit-frame-pointer.
	(This code may not be relevant any more.)

	* function.c (push_function_context, pop_function_context): No need
	to save and restore frame_pointer_needed.
	(assign_{outer_,}stack_local): No need to set frame_pointer_needed.
	(assign_parms): Likewise.
	(init_function_start): Don't initialize frame_pointer_needed here.

	* function.h (frame_pointer_needed): Deleted.

	* genattrtab.c (write_attr_case): Write call to constrain_operands
	with new second argument (reload_completed).

	* global-alloc.c (global_alloc): Don't left fp be allocated if we
	already know we can't eliminate it.
	(find_reg): Argument LOSERS is now a HARD_REG_SET instead of an	array.
	Precompute HARD_REG_SETs before loop over registers to speed up
	allocation.
	(retry_global_alloc): Argument FORBIDDEN_REGS is now a HARD_REG_SET.
	(check_frame_pointer_required): Deleted; no longer needed.

	* integrate.c (save_for_inline, output_inline_function): No longer
	need to save and restore frame_pointer_needed.

	* local-alloc.c (block_alloc): No longer have to worry that having
	a stack variable might cause a frame pointer to be needed when it
	might otherwise not be.
	(find_free_reg): Don't allocate into registers that may be eliminated
	later even if they are not FIXED_REGS.

	* output.h: Define reload_completed.

	* recog.c (constrain_operands): Add new argument, STRICT.  If zero
	and the constraints could not be matched, try again with a less
	strict view (i.e., assume that reload will fix those things that
	it can).  This allows attribute values to be obtained prior to
	reload.
	Don't call alter_subreg or assume it has been called.  Instead,
	look inside SUBREGs.

	* reload.c (find_reloads_address{,_1}): Handle an address that
	is a MEM; it may have been produced by register elimination.
	(find_reloads_address): sp can also be the base register for a
	stack slot.
	(form_sum): No longer static.

	* reload1.c: Rewrite code that performs frame pointer elimination.  Do
	it during reload to ensure that all addresses and operands remain
	valid; also generalize to support more than one pair of eliminations.
	(reg_equiv_stack_slot, bad_spill_regs): New vars.
	(forbidden_regs): Now a HARD_REG_SET.
	(struct elim_table): New structure to describe register eliminations.
	(reload): Start scanning registers after virtual registers.
	Initialize reg_equiv_stack_slot for each register.  Compute
	reg_equiv_{mem,address} during register scan only if not eliminating
	registers.
	Compute initial default value of frame_pointer_needed.
	Round frame size to BIGGEST_ALIGNMENT.
	Create obstack for scratch rtl created by register elmination.
	Initialize elimination table and spill registers that we know can't
	be eliminated.
	On each scan of the insns: Reset all elimination entries to initial
	offsets, compute reg_equiv_{mem,address}, and see if any potentially
	eliminable register changed status.
	Try to eliminate registers from each insn unless we know that none
	can be eliminated.
	Don't complete groups for spill registers from registers that
	shouldn't be used as spill registers.
	Call reload_as_needed if register eliminations can be done, even if
	no reloads are needed.
	(new_spill_reg): Don't allow spilling an eliminable register.
	Don't set forbidden_regs here.
	Indicate something changed if a register that wasn't ever used before
	was made a spill register.
	(eliminate_frame_pointer, {alter,fix}_frame_pointer_address): Deleted.
	(delete_dead_insn): New function.
	(alter_reg): Call it.
	Always set reg_equiv_stack_slot; if not eliminating registers, also
	set reg_equiv_{mem,address}.
	(eliminate_regs, eliminate_regs_in_insn): New functions.
	(spill_hard_reg): Add new argument, CANT_ELIMINATE.
	Set bit for register being spilled in forbidden_regs.
	Use new argument instead of seeing if we are spilling fp.
	No longer need to have frame pointer just because a reg needs a
	stack slot.
	(order_regs_for_reload): Set bad_spill_regs to contain those registers
	that can't be used for spill registers.
	Consider any eliminable register as bad to use as a spill register.
	Rework initialization of potential_reload_regs.
	(reload_as_needed): Handle register elimination in a similar manner
	as function reload.
	(gen_input_reload): When generating a reload for a PLUS, first try to
	use a three-operand add insn.  If that fails, emit two two-operand
	insns.

	* rtl.h (FUNCTION_FLAGS_FRAME_POINTER_NEEDED): Deleted; all others
	renumbered.

	* stmt.c (expand_decl): No longer have to set frame_pointer_needed
	for variable-sized decl.

	* stupid.c (stupid_find_reg): Don't try to allocate an eliminable
	register.

	* tm-vax.h (INITIAL_FRAME_POINTER_OFFSET): Add definition.

	* recog.c (next_insn_tests_no_inequality): If no next insn, return 0.

	* print-tree.c (print_node): Set length for TREE_VEC.

	* calls.c (store_one_arg): Set arg->value to location where argument
	was placed (either register or stack).

	* recog.c: Needs flags.h (for flag_pretend_float):
	* Makefile.in (recog.o): Likewise.

	* expr.c (convert_move): Add missing RETURN statements.

Sat May 19 14:26:31 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (expand_expr, case EXIT_STMT): Return rather than falling
	out of switch statement (and into `binop').

	* cse.c (cse_insn): Allow conditional branches to be turned into
	noops when the condition is known false by not calling validate_change.

	* cse.c (fold_rtx): Add LABEL_REF to list of fast RTL codes.

Sat May 19 12:41:44 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-i386gas.h (ASM_OUTPUT_ALIGN): Use log as arg to .align.
	(ASM_OUTPUT_ALIGN_CODE): Likewise.

	* gcc.c (default_compilers): For .cc, pass -g* to cc1.

Sat May 19 06:51:26 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* tree.c (push_obstacks, pop_obstacks): Put struct obstack_stack
	in obstack instead of using xmalloc/free.
	(init_tree): Initialize new obstack for {push,pop}_obstacks.

	* tree.c (simple_cst_list_equal): No longer static.

Fri May 18 19:38:01 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.h (MUST_PASS_IN_STACK): Refine test for case where padding
	requirement prohibits passing in register.

Fri May 18 18:14:18 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* fixincludes: Fix CAT macro in memvar.h.

Fri May 18 16:13:59 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* expr.c (do_jump): Don't explicitly copy item being tested from
	MEM to REG.  If needed, this will be done later.

Thu May 17 14:33:50 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* Makefile.in (bootstrap): Pass LANGUAGES to inner makes.

Thu May 17 13:57:34 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* fixincludes: Handle _CTRL like CTRL.

Wed May 16 21:09:42 1990  Richard Kenner  (kenner at vlsi1.ultra.edu)

	* fold-const (fold): Two conversions in a row are needed if from an
	integer type to a pointer type of a different precision.

Wed May 16 16:09:47 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* expr.c (expand_expr): Make sure a volatile value is referenced
	even if value is ignored.

	* c-typeck.c (truthvalue_conversion): Result COND_EXPR gets type int.
	(invert_truthvalue): Simplify COND_EXPR.

Tue May 15 00:25:03 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* stor-layout.c (layout_record): Do set TYPE_SIZE if size is var.

	* reload.c (push_reload): If insn is an asm, verify that CLASS
	is at least possible for the specified mode.

	* c-decl.c (complete_array_type): Compensate for wide string constant.

	* final.c (leaf_function_p): Reject everything if profiling.

	* function.c (optimize_bit_field): Adjust OFFSET if
	BITS_BIG_ENDIAN != BYTES_BIG_ENDIAN.

	* expmed.c (store_bit_field, extract_bit_field): Rework the code
	to adjust XBITPOS for the size within which to count.
	(extract_bit_field): When converting MEM to REG, don't make SUBREG
	immediately; fall through and let this happen in the code that
	handles original registers of the wrong mode.

Mon May 14 16:01:13 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* cexp.y (yylex): Ignore carriage return.
	* cccp.c (initialize_char_syntax): Likewise.
	(newline_fix, name_newline_fix): Likewise.

	* c-common.c: New file.
	(combine_strings): Moved here.	Fix errors for wide string length.
	* c-parse.y, objc-parse.y, cplus-lex.c: Function deleted here.

Sun May 13 08:08:41 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* integrate.c (subst_constants): Fix typo in case 'E'.

Sat May 12 17:14:26 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* combine.c (subst): Don't change -(y-x) to x-y for IEEE floats.
	Include real.h.

	* cse.c (fold_rtx): Don't simplify float+0, float-0, float*0
	if using IEEE floating point.
	Don't simplify float-self even if not IEEE.
	* fold-const.c (fold): Likewise.

	* i386.md (trunc**): Use long move if source is constant.
	* out-i386.c (PRINT_REG): Handle CODE == 'k'.

	* fixincludes: Use rm -fr to delete before making link.

	* optabs.c (init_optabs): Support MULDI3_LIBCALL, etc.

Sat May 12 17:04:58 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* cse.c (find_best_addr): Don't modify constant address MEMs; they
	are shared.

Sat May 12 15:17:37 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* ns32k.md (signed bitfield extract): Don't output assembler comment.

Fri May 11 15:23:55 1990  Richard Kenner  (kenner at vlsi1.ultra.nyu.edu)

	* Makefile.in: Don't use $(libsubdir) as a target since it involves
	shell `...` constructs.

	* genattr.c (fatal, main): Remove relics of old program name.
	* genattrtab.c: Likewise.

	* expr.c (expand_expr, case COND_EXPR): Add missing argument to
	operand_equal_p.

	* reload.c (form_sum): Handle case where second operand is
	(plus foo (const_int ...)).

	* c-typeck.c (c_sizeof{,_nowarn}, c_alignof): Don't blow up for
	ERROR_MARK.
	* cplus-typeck.c (c_sizeof{,_nowarn}, c_alignof): Likewise.

	* cplus-typeck.c (c_sizeof{,_nowarn}): Convert from bytes to chars,
	since c defines sizeof (char) as 1.

	* loop.c (mark_loop_jump): RETURN, SIGN_EXTEND, and ZERO_EXTEND can
	also occur in JUMP_INSN's.

	* reload.c (find_reloads, find_reloads_address): Correct errors where
	an arg to find_reloads is "VOIDmode" instead of "0" and vice versa.
	(find_reloads_address_1): Likewise.

	* global-alloc.c (global_alloc): Avoid divide-by-zero for allocnos
	where all regs have reg_live_length == -2.

Fri May 11 14:45:06 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* tm-i860.h (ASM_OUTPUT_CASE_LABEL): Align to multiple of 4.

Thu May 10 23:43:31 1990  Richard Stallman  (rms at sugar-bombs.ai.mit.edu)

	* out-i860.c (single_insn_src_p, strict_single_insn_src_p):
	Correct conditions for needing multiple instructions.
	(output_delayed_branch): Likewise.

See file ChangeLog.1.

Local Variables:
mode: indented-text
left-margin: 8
fill-column: 76
version-control: never
End: