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
|
Sun Jan 11 02:14:47 1998 Craig Burley <burley@gnu.org>
Support FORMAT(I<1+2>) (constant variable-FORMAT
expressions):
* bad.def (FFEBAD_FORMAT_VARIABLE): New diagnostic.
* std.c (ffestd_R1001rtexpr_): New function.
(ffestd_R1001dump_, ffestd_R1001dump_1005_1_,
ffestd_R1001dump_1005_2_, ffestd_R1001dump_1005_3_,
ffestd_R1001dump_1005_4_, ffestd_R1001dump_1005_5_,
ffestd_R1001dump_1010_2_, ffestd_R1001dump_1010_3_,
ffestd_R1001dump_1010_4_, ffestd_R1001dump_1010_5_):
Use new function instead of ffestd_R1001error_.
* stb.c (ffestb_R10014_, ffestb_R10016_, ffestb_R10018_,
ffestb_R100110_): Restructure `for' loop for style.
Fri Oct 10 13:00:48 1997 Craig Burley <burley@gnu.ai.mit.edu>
* ste.c (ffeste_begin_iterdo_): Fix loop setup so iteration
variable is modified only after the #iterations is calculated;
otherwise if the iteration variable is aliased to any of the
operands in the start, end, or increment expressions, the
wrong #iterations might be calculated.
* com.c (ffecom_save_tree): Fix indentation.
Mon Sep 29 16:18:21 1997 Craig Burley <burley@gnu.ai.mit.edu>
* stu.c (ffestu_list_exec_transition_,
ffestu_dummies_transition_): Specify `bool' type for
`in_progress' variables.
* com.h (assemble_string): Declare this routine (instead
of #include'ing "output.h" from gcc) to eliminate warnings
from lex.c.
Fri Sep 19 01:12:27 1997 Craig Burley <burley@gnu.ai.mit.edu>
* expr.c (ffeexpr_reduced_eqop2_):
(ffeexpr_reduced_relop2_): Minor fixes to diagnostic code.
* fini.c (main): Change return type to `int'.
Wed Sep 17 10:47:08 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com-rt.def (FFECOM_gfrtDSIGN, FFECOM_gfrtISIGN,
FFECOM_gfrtSIGN): Add second argument.
* expr.c (ffeexpr_cb_comma_c_): Trivial fixes.
Tue Sep 9 01:59:35 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Version 0.5.21 released.
Tue Sep 9 00:31:01 1997 Craig Burley <burley@gnu.ai.mit.edu>
* intdoc.c (dumpem): Put appropriate commentary in
output file, so readers know it isn't source.
Wed Aug 27 08:08:25 1997 Craig Burley <burley@gnu.ai.mit.edu>
* proj.h: Always #include "config.j" first, to pick up
gcc's configuration.
* com.c: Change bcopy() and bzero() calls to memcpy()
and memset() calls, to make more of g77 ANSI C.
1997-08-26 Dave Love <d.love@dl.ac.uk>
* Make-lang.in ($(srcdir)/f/runtime/configure,
$(srcdir)/f/runtime/libU77/configure): Fix for when srcdir isn't
relative.
Tue Aug 26 05:59:21 1997 Craig Burley <burley@gnu.ai.mit.edu>
* ansify.c (main): Make sure readers of stdout know
it's derived from stdin; omit comment text; get source
line numbers in future stderr output to be correct.
Tue Aug 26 01:36:01 1997 Craig Burley <burley@gnu.ai.mit.edu>
Fix 970825-0.f:
* stb.c (ffestb_R5284_): Allow OPEN_PAREN after closing
SLASH as well as NAME.
Mon Aug 25 23:48:17 1997 Craig Burley <burley@gnu.ai.mit.edu>
Changes to allow g77 docs to be built entirely from scratch
using any ANSI C compiler, not requiring GNU C:
* Make-lang.in ($(srcdir)/f/intdoc.texi): "Pipe" new
location of intrinsic documentation data base, f/intdoc.in,
through new `ansify' program to append `\n\' to quoted
newlines, into f/intdoc.h0. Do appropriate cleanups. Explain.
(f77.mostlyclean): Add f/ansify and f/intdoc.h0 to cleanups.
* f/ansify.c: New program.
* f/intdoc.c: Fix so it conforms to ANSI C.
#include f/intdoc.h0 instead of f/intdoc.h.
Avoid some warnings.
* f/intdoc.h, f/intdoc.in: Rename the former to the latter; no
changes made to the content in this patch!
* f/intrin.h (ffeintrinFamily): Fix to conform to ANSI C.
Sun Aug 24 06:52:48 1997 Craig Burley <burley@gnu.ai.mit.edu>
Fix up g77 compiler data base for libf2c routines:
* com-rt.def (FFECOM_gfrtSIGNAL): Change return type to
FTNINT to match actual code.
* com.c (ffecomRttype_): Replace FFECOM_rttypeINT_ with
FFECOM_rttypeFTNINT_.
Add and fix up comments.
(ffecom_make_gfrt_, ffecom_gfrt_basictype,
ffecom_gfrt_kindtype): Replace FFECOM_rttypeINT_ with
FFECOM_rttypeFTNINT_; add FFECOM_rttypeDOUBLEREAL_.
Wed Aug 20 17:18:40 1997 Craig Burley <burley@gnu.ai.mit.edu>
* global.c (ffeglobal_ref_progunit_): It's okay to have
a different CHARACTER*n length for a reference if the
existing length is for another reference, not a definition.
Mon Aug 18 14:27:18 1997 Craig Burley <burley@gnu.ai.mit.edu>
Fix 970814-0.f:
* global.c (ffeglobal_new_progunit_): Distinguish
between previously defined, versus inferred, filewide
when it comes to diagnostics.
Fix 970816-1.f:
* global.c (ffeglobal_ref_progunit_): Change BDATA into EXT
right at the beginning, so EXTERNAL FOO followed later
by SUBROUTINE FOO is not diagnosed.
Fix 970813-0.f:
* com-rt.def (FFECOM_gfrtALARM): Returns `integer', not
`void'.
Sun Aug 17 03:32:44 1997 Craig Burley <burley@gnu.ai.mit.edu>
Fix up problems when virtual memory exhausted:
* malloc.c (malloc_new_): Use gcc's xmalloc(), so we
print a nicer message when malloc returns no memory.
(malloc_resize_): Ditto for xrealloc().
* Make-lang.in, Makefile.in: Comment out lines containing
just formfeeds.
Sat Aug 16 19:41:33 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_make_gfrt_): For rttypeREAL_F2C_, return
double_type_node; for rttypeREAL_GNU_, return
_real_type_node.
1997-08-13 Dave Love <d.love@dl.ac.uk>
* config-lang.in (diff_excludes): Add some hints about known
problematic platforms.
1997-08-13 Dave Love <d.love@dl.ac.uk>
* intdoc.h: Document `alarm'.
Mon Aug 11 21:19:22 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Make-lang.in ($(RUNTIMESTAGESTUFF)): Add
f/runtime/stamp-lib.
Mon Aug 11 01:52:03 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_build_complex_constant_): Go with the
new build_complex() approach used in gcc-2.8.
* com.c (ffecom_sym_transform_): Don't set
DECL_IN_SYSTEM_HEADER for a tree node that isn't
a VAR_DECL, which happens when var is in common!
* com.c (ffecom_expr_intrinsic_) (case FFEINTRIN_impALARM):
No need to test codegen_imp -- there's only one valid here.
* intrin.def (FFEINTRIN_impALARM): Specify `Status' argument
as write-only.
Fri Aug 8 05:40:23 1997 Craig Burley <burley@gnu.ai.mit.edu>
Substantial changes to accommodate distinctions among
run-time routines that support intrinsics, and between
routines that compute and return the same type vs. those
that compute one type and return another (or `void'):
* com-rt.def: Specify new return type REAL_F2C_ instead
of many DOUBLE_, COMPLEX_F2C_ instead of COMPLEX_, and
so on.
Clear up the *BES* routines "once and for all".
* com.c: New return types.
(ffecom_convert_narrow_, ffecom_convert_widen_):
New functions that are "safe" variants of convert(),
to catch errors that ffecom_expr_intrinsic_() now
no longer catches.
(ffecom_arglist_expr_): Ensure arguments are not
converted to narrower types.
(ffecom_call_): Ensure return value is not converted
to a wider type.
(ffecom_char_args_): Use new ffeintrin_gfrt_direct()
routine.
(ffecom_expr_intrinsic_): Simplify how run-time
routine is selected (via `gfrt' only now; lose the
redundant `ix' variable).
Eliminate the `library' label; any code that doesn't
return directly just `break's out now with `gfrt'
set appropriately.
Set `gfrt' to default choice initially, either a
fast direct form or, if not available, a slower
indirect-callable form.
(ffecom_make_gfrt_): No longer need to do special
check for complex; it's built into the new return-type
regime.
(ffecom_ptr_to_expr): Use new ffeintrin_gfrt_indirect()
routine.
* intrin.c, intrin.h: `gfrt' field replaced with three fields,
so it is easier to provide faster direct-callable and
GNU-convention indirect-callable routines in the future.
DEFIMP macro adjusted accordingly, along with all its uses.
(ffeintrin_gfrt_direct): New function.
(ffeintrin_gfrt_indirect): Ditto.
(ffeintrin_is_actualarg): If `-fno-f2c' is in effect,
require a GNU-callable version of intrinsic instead of
an f2c-callable version, so indirect calling is still checked.
* intrin.def: Replace one GFRT field with the three new fields,
as appropriate for each DEFIMP intrinsic.
* com.c (ffecom_stabilize_aggregate_,
ffecom_convert_to_complex_): Make these `static'.
Thu Aug 7 11:24:34 1997 Craig Burley <burley@gnu.ai.mit.edu>
Provide means for front end to determine actual
"standard" return type for an intrinsic if it is
passed as an actual argument:
* com.h, com.c (ffecom_gfrt_basictype,
ffecom_gfrt_kindtype): New functions.
(ffecom_gfrt_kind_type_): Replaced with new function.
All callers updated.
(ffecom_make_gfrt_): No longer need do anything
with kind type.
* intrin.c (ffeintrin_basictype, ffeintrin_kindtype):
Now returns correct type info for specific intrinsic
(based on type of run-time-library implementation).
Wed Aug 6 23:08:46 1997 Craig Burley <burley@gnu.ai.mit.edu>
* global.c (ffeglobal_ref_progunit_): Don't reset
number of arguments just due to new type info,
so useful warnings can be issued.
1997-08-06 Dave Love <d.love@dl.ac.uk>
* intrin.def: Fix IDATE_vxt argument order.
* intdoc.h: Likewise.
Thu Jul 31 22:22:03 1997 Craig Burley <burley@gnu.ai.mit.edu>
* global.c (ffeglobal_proc_ref_arg): If REF/DESCR
disagreement, DESCR is CHARACTER, and types disagree,
pretend the argsummary agrees so the message ends up
being about type disagreement.
(ffeglobal_proc_def_arg): Ditto.
* expr.c (ffeexpr_token_first_rhs_3_): Set info for LABTOK
to NONE of everything, to avoid misdiagnosing filewide
usage of alternate returns.
Sun Jul 20 23:07:47 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_sym_transform_): If type gets set
to error_mark_node, just return that for transformed symbol.
(ffecom_member_phase2_): If type gets set to error_mark_node,
just return.
(ffecom_check_size_overflow_): Add `dummy' argument to
flag that type is for a dummy, update all callers.
Sun Jul 13 17:40:53 1997 Craig Burley <burley@gnu.ai.mit.edu>
Fix 970712-1.f:
* where.c (ffewhere_set_from_track): If start point
is too large, just use initial start point. 0.6 should
fix all this properly.
Fix 970712-2.f:
* com.c (ffecom_sym_transform_): Preserve error_mark_node for type.
(ffecom_type_localvar_): Ditto.
(ffecom_sym_transform_): If type is error_mark_node,
don't error-check decl size, because back end responds by
setting that to an integer 0 instead of error_mark_node.
(ffecom_transform_common_): Same as earlier fix to _transform_
in that size is checked by dividing BITS_PER_UNIT instead of
multiplying.
(ffecom_transform_equiv_): Ditto.
Fix 970712-3.f:
* stb.c (ffestb_R10014_): Fix flaky fall-through in error
test for FFELEX_typeCONCAT by just replicating the code,
and do FFELEX_typeCOLONCOLON while at it.
1997-07-07 Dave Love <d.love@dl.ac.uk>
* intdoc.h: Add various missing pieces; correct GMTIME, LTIME
result ordering.
* intrin.def, com-rt.def: Add alarm.
* com.c (ffecom_expr_intrinsic_): Add case for alarm.
Thu Jun 26 04:19:40 1997 Craig Burley <burley@gnu.ai.mit.edu>
Fix 970302-3.f:
* com.c (ffecom_sym_transform_): For sanity-check compare
of gbe size of local variable to g77 expectation,
use varasm.c/assemble_variable technique of dividing
BITS_PER_UNIT out of gbe info instead of multiplying
g77 info up, to avoid crash when size in bytes is very
large, and overflows an `int' or similar when multiplied.
Fix 970626-2.f:
* com.c (ffecom_finish_symbol_transform_): Don't bother
transforming a dummy argument, to avoid a crash.
* ste.c (ffeste_R1227): Don't return a value if the
result decl, or its type, is error_mark_node.
Fix 970626-4.f:
* lex.c (ffelex_splice_tokens): `-fdollar-ok' is
irrelevant to whether a DOLLAR token should be made
from an initial character of `$'.
Fix 970626-6.f:
* stb.c (ffestb_do3_): DO iteration variable is an
lhs, not rhs, expression.
Fix 970626-7.f and 970626-8.f:
* expr.c (ffeexpr_cb_comma_i_1_): Set IMPDO expression
to have clean info, because undefined rank, for example,
caused crash on mangled source on UltraSPARC but not
on Alpha for a series of weird reasons.
(ffeexpr_cb_close_paren_): If not CLOSE_PAREN, push
opANY expression onto stack instead of attempting
to mimic what program might have wanted.
(ffeexpr_cb_close_paren_): Don't wrap opPAREN around
opIMPDO, just warn that it's gratuitous.
* bad.def (FFEBAD_IMPDO_PAREN): New warning.
Fix 970626-9.f:
* expr.c (ffeexpr_declare_parenthesized_): Must shut down
parsing in kindANY case, otherwise the parsing engine might
decide there's an ambiguity.
(ffeexpr_token_name_rhs_): Eliminate parentypeSUBROUTINE_
case, so we crash right away if it comes through.
* st.c, st.h, sta.c, sta.h (ffest_shutdown, ffesta_shutdown):
New functions.
Tue Jun 24 19:47:29 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_check_size_overflow_): New function
catches some cases of the size of a type getting
too large. varasm.c must catch the rest.
(ffecom_sym_transform_): Use new function.
(ffecom_type_localvar_): Ditto.
Mon Jun 23 01:09:28 1997 Craig Burley <burley@gnu.ai.mit.edu>
* global.c (ffeglobal_proc_def_arg): Fix comparison
of argno to #args.
(ffeglobal_proc_ref_arg): Ditto.
* lang-options.h, top.c: Rename `-fdebug' to `-fxyzzy',
since it's an unsupported internals option and some
poor user might guess that it does something.
* bad.def: Make a warning for each filewide diagnostic.
Put all filewides together.
* com.c (ffecom_sym_transform_): Don't substitute
known global tree for global entities when `-fno-globals'.
* global.c (ffeglobal_new_progunit_): Don't produce
fatal diagnostics about globals when `-fno-globals'.
Instead, produce equivalent warning when `-Wglobals'.
(ffeglobal_proc_ref_arg): Ditto.
(ffeglobal_proc_ref_nargs): Ditto.
(ffeglobal_ref_progunit_): Ditto.
* lang-options.h, top.c, top.h: New `-fno-globals' option.
Sat Jun 21 12:32:54 1997 Craig Burley <burley@gnu.ai.mit.edu>
* expr.c (ffeexpr_fulfill_call_): Set array variable
to avoid warning about uninitialized variable.
* Make-lang.in: Get rid of any setting of HOST_* macros,
since these will break gcc's build!
* makefile: New file to make building derived files
easier.
Thu Jun 19 18:19:28 1997 Craig Burley <burley@gnu.ai.mit.edu>
* g77.c (main): Install Emilio Lopes' patch to support
Ratfor, and to fix the printing of the version string
to go to stderr, not stdout.
* lang-specs.h: Install Emilio Lopes' patch to support
Ratfor, and patch the result to support picking up
`*f771' from the `specs' file.
Thu Jun 12 14:36:25 1997 Craig Burley <burley@gnu.ai.mit.edu>
* storag.c (ffestorag_update_init, ffestorag_update_save):
Also update parent, in case equivalence processing
has already eliminated pointers to it via the
local equivalence info.
Tue Jun 10 14:08:26 1997 Craig Burley <burley@gnu.ai.mit.edu>
* intdoc.c: Add cross-reference to end of description
of any generic intrinsic pointing to other intrinsics
with the same name.
Warn about explicit type declaration for intrinsic
that disagrees with invocation:
* expr.c (ffeexpr_paren_rhs_let_): Preserve type info
for intrinsic functions.
(ffeexpr_token_funsubstr_): Ditto.
* intrin.c (ffeintrin_fulfill_generic): Warn if type
info of fulfilled intrinsic invocation disagrees with
explicit type info given symbol.
(ffeintrin_fulfill_specific): Ditto.
* stc.c (ffestc_R1208_item): Preserve type info
for intrinsics.
(ffestc_R501_item): Ditto.
Mon Jun 9 17:45:44 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_expr_intrinsic_): Fix several of the
libU77/libF77-unix handlers to properly convert their
arguments.
* com-rt.def (FFECOM_gfrtFSTAT): Append missing "i" to
arg string.
Fri Jun 6 14:37:30 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_expr_intrinsic_): Have a case statement
for every intrinsic implementation, so missing ones
are caught via gcc warnings.
Don't call ffeintrin_codegen_imp anymore.
* intrin.c (ffeintrin_fulfill_generic): Remove cg_imp
stuff from here.
(ffeintrin_codegen_imp): Delete this function.
* intrin.def, intrin.h: Remove DEFIMQ stuff from here
as well.
Thu Jun 5 13:03:07 1997 Craig Burley <burley@gnu.ai.mit.edu>
* top.c (ffe_decode_option): New -fbadu77-intrinsics-*
options.
* top.h: Ditto.
* intrin.h: New BADU77 family.
* intrin.c (ffeintrin_state_family): Ditto.
Implement new scheme to track intrinsic names vs. forms:
* intrin.c (ffeintrin_fulfill_generic),
(ffeintrin_fulfill_specific), (ffeintrin_is_intrinsic),
intrin.def: The documented name is now either in the
generic info or, if no generic, in the specific info.
For a generic, the specific info contains merely the
distinguishing form (usually "function" or "subroutine"),
used for diagnostics about ambiguous references and
in the documentation.
* intrin.def: Clean up formatting of DEFNAME block.
Convert many libU77 intrinsics into generics that
support both subroutine and function forms.
Put the function forms of side-effect routines into
the new BADU77 family.
Make MCLOCK and TIME return INTEGER*4 again, and add
INTEGER*8 equivalents called MCLOCK8 and TIME8.
Fix up more status return values to be written and
insist on them being I1 as well.
* com.c (ffecom_expr_intrinsic_): Lots of changes to
support new libU77 intrinsic interfaces.
Mon Jun 2 00:37:53 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_init_0): Pointer type is now INTEGER(KIND=7),
not INTEGER(KIND=0), since we want to reserve KIND=0 for
future use.
Thu May 29 14:30:33 1997 Craig Burley <burley@gnu.ai.mit.edu>
Fix bugs preventing CTIME(I*4) from working correctly:
* com.c (ffecom_char_args_): For FUNCREF case, process
args to intrinsic just as they would be in
ffecom_expr_intrinsic_.
* com-rt.def (FFECOM_gfrtCTIME, FFECOM_gfrtTTYNAM): Fix
argument decls to specify `&'.
Wed May 28 22:19:49 1997 Craig Burley <burley@gnu.ai.mit.edu>
Fix gratuitous warnings exposed by dophot aka 970528-1:
* global.c (ffeglobal_proc_def_arg, ffeglobal_proc_ref_arg):
Support distinct function/subroutine arguments instead of
just procedures.
* global.h: Ditto.
* expr.c (ffeexpr_fulfill_call_): A SYMTER with kindNONE
also is a procedure (either function or subroutine).
Mon May 26 20:25:31 1997 Craig Burley <burley@gnu.ai.mit.edu>
* bad.def: Have several lexer diagnostics refer to
documentation for people who need more info on what Fortran
source code is supposed to look like.
* expr.c (ffeexpr_reduced_bool1_), bad.def: New diagnostics
specific to .NOT. now mention only one operand instead
of two.
* g77.c: Recognize -fsyntax-only, similar to -c etc.
(lookup_option): Fix bug that prevented non-`--' options
from being recognized.
Sun May 25 04:29:04 1997 Craig Burley <burley@gnu.ai.mit.edu>
* intrin.def (FFEINTRIN_impCTIME): Accept `I*' expression
for STime instead of requiring `I2'.
Tue May 20 16:14:40 1997 Craig Burley <burley@gnu.ai.mit.edu>
* symbol.c (ffesymbol_reference): All references to
standard intrinsics are considered explicit, so as
to avoid generating basically useless warnings.
* intrin.c, intrin.h (ffeintrin_is_standard): Returns TRUE
if intrinsic is standard.
Sun May 18 21:14:59 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com-rt.def: Changed all external names of the
form `"\([a-z0-9]*\)_' to `"G77_\1_0"' so as to
allow any name valid as an intrinsic to be used
as such and as a user-defined external procedure
name or common block as well.
Thu May 8 13:07:10 1997 Craig Burley <burley@gnu.ai.mit.edu>
* expr.c (ffeexpr_cb_end_notloc_): For %VAL, %REF, and
%DESCR, copy arg info into new node.
Mon May 5 14:42:17 1997 Craig Burley <burley@gnu.ai.mit.edu>
From Uwe F. Mayer <mayer@math.Vanderbilt.Edu>:
* Make-lang.in (g77-cross): Fix typo in g77.c path.
From Brian McIlwrath <bkm@star.rl.ac.uk>:
* lang-specs.h: Have g77 pick up options from a section
labeled `*f771' of the `specs' file.
Sat May 3 02:46:08 1997 Craig Burley <burley@gnu.ai.mit.edu>
* intrin.def (FFEINTRIN_defSIGNAL): Add optional `Status'
argument that com.c already expects (per Dave Love).
More changes to support better tracking of (filewide)
globals, in particular, the arguments to procedures:
* bad.def (FFEBAD_FILEWIDE_NARGS, FFEBAD_FILEWIDE_NARGS_W,
FFEBAD_FILEWIDE_ARG, FFEBAD_FILEWIDE_ARG_W): New diagnostics.
* expr.c (ffebad_fulfill_call_): Provide info on each
argument to ffeglobal.
* global.c, global.h (ffeglobal_proc_def_arg,
ffeglobal_proc_def_nargs, ffeglobal_proc_ref_arg,
ffeglobal_proc_ref_args): New functions.
(ffeglobalArgSummary, ffeglobalArgInfo_): New types.
Tue Apr 29 18:35:41 1997 Craig Burley <burley@gnu.ai.mit.edu>
More changes to support better tracking of (filewide)
globals:
* expr.c (ffeexpr_fulfill_call_): New function.
(ffeexpr_token_name_lhs_): Call after building procedure
reference expression. Also leave info field for ANY-ized
expression alone.
(ffeexpr_token_arguments_): Ditto.
Mon Apr 28 20:04:18 1997 Craig Burley <burley@gnu.ai.mit.edu>
Changes to support better tracking of (filewide)
globals, mainly to avoid crashes due to inlining:
* bad.def: Go back to quoting intrinsic names,
(FFEBAD_FILEWIDE_DISAGREEMENT, FFEBAD_FILEWIDE_TIFF,
FFEBAD_FILEWIDE_TYPE_MISMATCH): New diagnostics.
(FFEBAD_INTRINSIC_EXPIMP, FFEBAD_INTRINSIC_GLOBAL): Reword
for clarity.
* com.c (ffecom_do_entry_, ffecom_start_progunit_,
ffecom_sym_transform_): Accommodate new FFEGLOBAL_typeEXT
possibility.
* expr.c (ffeexpr_sym_lhs_call_, ffeexpr_sym_lhs_extfunc_,
ffeexpr_sym_rhs_actualarg_, ffeexpr_declare_parenthesized_,
ffeexpr_paren_rhs_let_, ffeexpr_token_funsubstr_):
Fill in real kind info instead of leaving NONE where
appropriate.
Register references to intrinsics and globals with ffesymbol
using new ffesymbol_reference function instead of
ffesymbol_globalize.
* global.c (ffeglobal_type_string_): New array for
new diagnostics.
* global.h, global.c:
Replace ->init mechanism with ->tick mechanism.
Move other common-related members into a substructure of
a union, so the proc substructure can be introduced
to include members related to externals other than commons.
Don't complain about ANY-ized globals; ANY-ize globals
once they're complained about, in any case where code
generation could become a problem.
Handle global entries that have NONE type (seen as
intrinsics), EXT type (seen as EXTERNAL), and so on.
Keep track of kind and type of externals, both via
definition and via reference.
Diagnose disagreements about kind or type of externals
(such as functions).
(ffeglobal_ref_intrinsic, ffeglobal_ref_progunit_): New
functions.
* stc.c (ffestc_R1207_item, ffestc_R1208_item,
ffestc_R1219, ffestc_R1226):
Call ffesymbol_reference, not ffesymbol_globalize.
* stu.c (ffestu_sym_end_transition,
ffestu_sym_exec_transition):
Call ffesymbol_reference, not ffesymbol_globalize.
* symbol.c (ffesymbol_globalize): Removed...
(ffesymbol_reference): ...to this new function,
which more generally registers references to symbols,
globalizes globals, and calls on the ffeglobal module
to check globals filewide.
* global.h, global.c: Rename some macros and functions
to more clearly distinguish common from other globals.
All callers changed.
* com.c (ffecom_sym_transform_): Trees describing
filewide globals must be allocated on permanent obstack.
* expr.c (ffeexpr_token_name_lhs_): Don't generate
gratuitous diagnostics for FFEINFO_whereANY case.
Thu Apr 17 03:27:18 1997 Craig Burley <burley@gnu.ai.mit.edu>
* global.c: Add support for flagging intrinsic/global
confusion via warnings.
* bad.def (FFEBAD_INTRINSIC_EXPIMP,
FFEBAD_INTRINSIC_GLOBAL): New diagnostics.
* expr.c (ffeexpr_token_funsubstr_): Ditto.
(ffeexpr_sym_lhs_call_): Ditto.
(ffeexpr_paren_rhs_let_): Ditto.
* stc.c (ffestc_R1208_item): Ditto.
Wed Apr 16 22:40:56 1997 Craig Burley <burley@gnu.ai.mit.edu>
* expr.c (ffeexpr_declare_parenthesized_): INCLUDE
context can't be an intrinsic invocation either.
Fri Mar 28 10:43:28 1997 Craig Burley <burley@gnu.ai.mit.edu>
* expr.c (ffeexpr_token_arguments_): Make sure top of
exprstack is operand before dereferencing operand field.
* lex.c (ffelex_prepare_eos_): Fill up truncated
hollerith token, so crash on null ->text field doesn't
happen later.
* stb.c (ffestb_R10014_): If NAMES isn't recognized (or
the recognized part is followed in the token by a
non-digit), don't try and collect digits, as there
might be more than FFEWHERE_indexMAX letters to skip
past to do so -- and the code is diagnosed anyway.
Thu Mar 27 00:02:48 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_sym_transform_): Force local
adjustable array onto stack.
* stc.c (ffestc_R547_item_object): Don't actually put
the symbol in COMMON if the symbol has already been
EQUIVALENCE'd to a different COMMON area.
* equiv.c (ffeequiv_add): Don't actually do anything
if there's a disagreement over which COMMON area is
involved.
Tue Mar 25 03:35:19 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_transform_common_): If no explicit init
of COMMON area, don't actually init it even though
storage area suggests it.
Mon Mar 24 12:10:08 1997 Craig Burley <burley@gnu.ai.mit.edu>
* lex.c (ffelex_image_char_): Avoid overflowing the
column counter itself, as well as the card image.
* where.c (ffewhere_line_new): Cast ffelex_line_length()
to (size_t) so 255 doesn't overflow to 0!
* stc.c (ffestc_labeldef_notloop_begin_): Don't gratuitously
terminate loop before processing statement, so block
doesn't disappear out from under EXIT/CYCLE processing.
(ffestc_labeldef_notloop_): Has old code from above
function, instead of just calling it.
* expr.c (ffeexpr_cb_comma_i_4_): Don't skip over
arbitrary token (such as EOS).
* com.c (ffecom_init_zero_): Handle RECORD_TYPE and
UNION_TYPE so -fno-zeros works with -femulated-complex.
1997-03-12 Dave Love <d.love@dl.ac.uk>
* intrin.def: New intrinsics INT2, INT8, CPU_TIME. Fix AND, OR,
XOR. [Integrated by burley, AND/OR/XOR already fixed, INT8
implementation changed/fixed.]
Wed Mar 12 10:40:08 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Make-lang.in ($(srcdir)/f/intdoc.texi): Simplify rules
so building f/intdoc is not always necessary; remove
f/intdoc after running it if it is built.
Tue Mar 11 23:42:00 1997 Craig Burley <burley@gnu.ai.mit.edu>
* intrin.def (FFEINTRIN_impAND, FFEINTRIN_impOR,
FFEINTRIN_impXOR): Use the IAND, IOR, and IEOR implementations
of these, instead of crashing in ffecom_expr_intrinsic_
or adding case labels there.
Mon Mar 10 22:51:23 1997 Craig Burley <burley@gnu.ai.mit.edu>
* intdoc.c: Fix so any C compiler can compile this.
Fri Feb 28 13:16:50 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Version 0.5.20 released.
Fri Feb 28 01:45:25 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Make-lang.in (RUNTIMESTAGESTUFF, LIBU77STAGESTUFF):
Move some files incorrectly in the former to the latter,
and add another file or two to the latter.
New meanings for (KIND=n), and new denotations in the
little language describing intrinsics:
* com.c (ffecom_init_0): Assign new meanings.
* intdoc.c: Document new meanings.
Support the new denotations.
* intrin.c: Employ new meanings, mapping them to internal
values (which are the same as they ever were for now).
Support the new denotations.
* intrin.def: Switch DEFIMP table to the new denotations.
* intrin.c (ffeintrin_check_): Fix bug that was leaving
LOC() and %LOC() returning INTEGER*4 on systems where
it should return INTEGER*8.
* type.c: Canonicalize function definitions, for etags
and such.
Wed Feb 26 20:43:03 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_init_0): Choose INTEGER(KIND=n) types,
where n is 2, 3, and 4, according to the new docs
instead of according to the old C correspondences
(which seem less useful at this point).
* equiv.c (ffeequiv_destroy_): New function.
(ffeequiv_layout_local_): Use this new function
whenever the laying out of a local equivalence chain
is aborted for any reason.
Otherwise ensure that symbols no longer reference
the stale ffeequiv entries that result when they
are killed off in this procedure.
Also, the rooted symbol is one that has storage,
it really is irrelevant whether it has an equiv entry
at this point (though the code to remove the equiv
entry was put in at the end, just in case).
(ffeequiv_kill): When doing internal checks, make
sure the victim isn't named by any symbols it points
to. Not as complete a check as looking through the
entire symbol table (which does matter, since some
code in equiv.c used to remove symbols from the lists
for an ffeequiv victim but not remove that victim as the
symbol's equiv info), but this check did find some
real bugs in the code (that were fixed).
Mon Feb 24 16:42:13 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_expr_intrinsic_): Fix a couple of
warnings about uninitialized variables.
* intrin.c (ffeintrin_check_): Ditto, but there were
a couple of _real_ uninitialized-variable _bugs_ here!
(ffeintrin_fulfill_specific): Ditto, no real bug here.
Sun Feb 23 15:01:20 1997 Craig Burley <burley@gnu.ai.mit.edu>
Clean up diagnostics (especially about intrinsics):
* bad.def (FFEBAD_UNIMPL_STMT): Remove.
(FFEBAD_INTRINSIC_*, FFEBAD_NEED_INTRINSIC): Clean these
up so they're friendlier.
(FFEBAD_INTRINSIC_CMPAMBIG): New.
* intrin.c (ffeintrin_fulfill_generic,
ffeintrin_fulfill_specific, ffeintrin_is_intrinsic):
Always choose
generic or specific name text (which is for doc purposes
anyway) over implementation name text (which is for
internal use).
* intrin.def: Use more descriptive name texts for generics
and specifics in cases where the names themselves are not
enough (e.g. IDATE, which has two forms).
Fix some intrinsic mappings:
* intrin.def (FFEINTRIN_specIDINT, FFEINTRIN_specAND,
FFEINTRIN_specDFLOAT, FFEINTRIN_specDREAL, FFEINTRIN_specOR,
FFEINTRIN_specXOR): Now have their own implementations,
instead of borrowing from others.
(FFEINTRIN_specAJMAX0, FFEINTRIN_specAJMIN0, FFEINTRIN_specBJTEST,
FFEINTRIN_specDFLOTJ, FFEINTRIN_specFLOATJ, FFEINTRIN_specJIABS,
FFEINTRIN_specJIAND, FFEINTRIN_specJIBCLR, FFEINTRIN_specJIBITS,
FFEINTRIN_specJIBSET, FFEINTRIN_specJIDIM, FFEINTRIN_specJIDINT,
FFEINTRIN_specJIDNNT, FFEINTRIN_specJIEOR, FFEINTRIN_specJIFIX,
FFEINTRIN_specJINT, FFEINTRIN_specJIOR, FFEINTRIN_specJISHFT,
FFEINTRIN_specJISHFTC, FFEINTRIN_specJISIN, FFEINTRIN_specJMAX0,
FFEINTRIN_specJMAX1, FFEINTRIN_specJMIN0, FFEINTRIN_specJMIN1,
FFEINTRIN_specJMOD, FFEINTRIN_specJNINT, FFEINTRIN_specJNOT,):
Turn these implementations off, since it's not clear
just what types they expect in the context of portable Fortran.
(DFLOAT): Now in FVZ family, since f2c supports them
Support intrinsic inquiry functions (BIT_SIZE, LEN):
* intrin.c: Allow `i' in <arg_extra>.
* intrin.def (FFEINTRIN_impBIT_SIZE, FFEINTRIN_impLEN):
Mark args with `i'.
Sat Feb 22 13:34:09 1997 Craig Burley <burley@gnu.ai.mit.edu>
Only warn, don't error, for reference to unimplemented
intrinsic:
* bad.def (FFEBAD_INTRINSIC_UNIMPLW): Warning version
of _UNIMPL.
* intrin.c (ffeintrin_is_intrinsic): Use new warning
version of _UNIMPL (FFEBAD_INTRINSIC_UNIMPLW).
Complain about REAL(Z) and AIMAG(Z) (Z is DOUBLE COMPLEX):
* bad.def (FFEBAD_INTRINSIC_CMPAMBIG): New diagnostic.
* expr.c: Needed #include "intrin.h" anyway.
(ffeexpr_token_intrincheck_): New function handles delayed
diagnostic for "REAL(REAL(expr)" if next token isn't ")".
(ffeexpr_token_arguments_): Do most of the actual checking here.
* intrin.h, intrin.c (ffeintrin_fulfill_specific): New
argument, check_intrin, to tell caller that intrin is REAL(Z)
or AIMAG(Z). All callers updated, mostly to pass NULL in
for this.
(ffeintrin_check_): Also has new arg check_intrin for same
purpose. All callers updated the same way.
* intrin.def (FFEINTRIN_impAIMAG): Change return type
from "R0" to "RC", to accommodate f2c (and perhaps other
non-F90 F77 compilers).
* top.h, top.c: New option -fugly-complex.
New GNU intrinsics REALPART, IMAGPART, and COMPLEX:
* com.c (ffecom_expr_intrinsic_): Implement impCOMPLEX
and impREALPART here. (specIMAGPART => specAIMAG.)
* intrin.def: Add the intrinsics here.
Rename implementations of VXTIDATE and VXTTIME to IDATEVXT
and TIMEVXT, so they sort more consistently:
* com.c (ffecom_expr_intrinsic_):
* intrin.def:
Delete intrinsic group `dcp', add `gnu', etc.:
* intrin.c (ffeintrin_state_family): FFEINTRIN_familyGNU
replaces FFEINTRIN_familyDCP, and gets state from `gnu'
group.
Get rid of FFEINTRIN_familyF2Z, nobody needs it.
Move FFEINTRIN_specDCMPLX from DCP family to FVZ family,
as f2c has it.
Move FFEINTRIN_specDFLOAT from F2C family to FVZ family.
(FFEINTRIN_specZABS, FFEINTRIN_specZCOS, FFEINTRIN_specZEXP,
FFEINTRIN_specZLOG, FFEINTRIN_specZSIN, FFEINTRIN_specZSQRT):
Move these from F2Z family to F2C family.
* intrin.h (FFEINTRIN_familyF2Z, FFEINTRIN_familyDCP): Remove.
(FFEINTRIN_familyGNU): Add.
* top.h, top.c: Replace `dcp' with `gnu'.
* com.c (ffecom_expr_intrinsic_): Clean up by collecting
simple conversions into one nice, conceptual place.
Fix up some intrinsic subroutines (MVBITS, KILL, UMASK) to
properly push and pop call temps, to avoid wasting temp
registers.
* g77.c (doit): Toon says variables should be defined
before being referenced. Spoilsport.
* intrin.c (ffeintrin_check_): Now Dave's worried about
warnings about uninitialized variables. Okay, so for
basic return values 'g' and 's', they _were_
uninitialized -- is determinism really _that_ useful?
* intrin.def (FFEINTRIN_impFGETC): Fix STATUS argument
so that it is INTENT(OUT) instead of INTENT(IN).
1997-02-21 Dave Love <d.love@dl.ac.uk>
* intrin.def, com.c: Support Sun-type `short' and `long'
intrinsics. Perhaps should also do Microcruft-style `int2'.
Thu Feb 20 15:16:53 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_expr_intrinsic_): Clean up indentation.
Support SECONDSUBR intrinsic implementation.
Rename SECOND to SECONDFUNC for direct support via library.
* g77.c: Fix to return proper status value to shell,
by obtaining it from processes it spawns.
* intdoc.c: Fix minor typo.
* intrin.def: Turn SECOND into generic that maps into
function and subroutine forms.
* intrin.def: Make FLOAT and SNGL into specific intrinsics.
* intrin.def, intrin.h: Change the way DEFGEN and DEFSPEC
macros work, to save on verbage.
Mon Feb 17 02:08:04 1997 Craig Burley <burley@gnu.ai.mit.edu>
New subsystem to automatically generate documentation
on intrinsics:
* Make-lang.in ($(srcdir)/f/g77.info,
$(srcdir)/f/g77.dvi): Move g77 doc rules around.
Add to g77 doc rules the new subsystem.
(f77.mostlyclean, f77.maintainer-clean): Also clean up
after new doc subsystem.
* intdoc.c, intdoc.h: New doc subsystem code.
* intrin.h [FFEINTRIN_DOC]: When 1, don't pull in
stuff not needed by doc subsystem.
Improve on intrinsics mechanism to both be more
self-documenting and to catch more user errors:
* intrin.c (ffeintrin_check_): Recognize new arg-len
and arg-rank information, and check it.
Move goto and signal indicators to the basic type.
Permit reference to arbitrary argument number, not
just first argument (for BESJN and BESYN).
(ffeintrin_init_0): Check and accept new notations.
* intrin.c, intrin.def: Value in COL now identifies
arguments starting with number 0 being the first.
Some minor intrinsics cleanups (resulting from doc work):
* com.c (ffecom_expr_intrinsic_): Implement FLUSH
directly once again, handle its optional argument,
so it need not be a generic (awkward to handle in docs).
* intrin.def (BESJ0, BESJ1, BESJN, BESY0, BESY1, BESYN,
CHDIR, CHMOD, CTIME, DBESJ0, DBESJ1, DBESJN, DBESY0,
DBESY1, DBESYN, DDIM, ETIME, FGETC, FNUM, FPUTC, FSTAT,
GERROR, GETCWD, GETGID, GETLOG, GETPID, GETUID, GMTIME,
HOSTNM, IDATE, IERRNO, IIDINT, IRAND, ISATTY, ITIME, JIDINT,
LNBLNK, LSTAT, LTIME, MCLOCK, PERROR, SRAND, SYMLNK, TTYNAM,
UMASK): Change capitalization of initcaps (official) name
to be consistent with Burley's somewhat arbitrary rules.
(BESJN, BESYN): These have return arguments of same type
as their _second_ argument.
(FLUSH): Now a specific, not generic, intrinsic, with one
optional argument.
(FLUSH1): Eliminated.
Add arg-len and arg-rank info to several intrinsics.
(ITIME): Change argument type from REAL to INTEGER.
Tue Feb 11 14:04:42 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Make-lang.in (f771): Invocation of Makefile now done
with $(srcdir)=gcc to go along with $(VPATH)=gcc.
($(srcdir)/f/runtime/configure,
$(srcdir)/f/runtime/libU77/configure): Break these out
so spurious triggers of this rule don't happen (as when
configure.in is more recent than libU77/configure).
(f77.rebuilt): Distinguish source versus build files,
so this target can be invoked from build directory and
still work.
* Makefile.in: This now expects $(srcdir) to be the gcc
source directory, not gcc/f, to agree with $(VPATH).
Accordingly, $(INCLUDES) has been fixed, various cruft
removed, the removal of f771 has been fixed to remove
the _real_ f771 (not the one in gcc's parent directory),
and so on.
* lex.c: Part of ffelex_finish_statement_() now done
by new function ffelex_prepare_eos_(), so that, in one
popular case, the EOS can be prepared while the pointer
is at the end of the non-continued line instead of the
end of the line that marks no continuation. This improves
the appearance of diagnostics substantially.
Mon Feb 10 12:44:06 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Make-lang.in: runtime Makefile's, and include/f2c.h,
also depend on f/runtime/configure and f/runtime/libU77/configure.
Fix various libU77 routines:
* com-rt.def (FFECOM_gfrtCTIME, FFECOM_gfrtMCLOCK,
FFECOM_gfrtTIME): These now use INTEGER*8 for time values,
for compatibility with systems like Alpha.
(FFECOM_gfrtSYSTEM_CLOCK, FFECOM_gfrtTTYNAM): Delete incorrect
trailing underscore in routine names.
* intrin.c, intrin.def: Support INTEGER*8 return values and
arguments ('4'). Change FFEINTRIN_impCTIME, FFEINTRIN_impMCLOCK,
and FFEINTRIN_impTIME accordingly.
(ffeintrin_is_intrinsic): Don't give caller a clue about
form of intrinsic -- shouldn't be needed at this point.
Cope with generic intrinsics that are subroutines and functions:
* com.c (ffecom_finish_symbol_transform_, ffecom_expr_transform_):
Don't transform an intrinsic that is not known to be a subroutine
or a function. (Maybe someday have to avoid transforming
any intrinsic with an undecided or unknown implementation.)
* expr.c (ffeexpr_declare_unadorned_,
ffeexpr_declare_parenthesized_): Ok to invoke generic
intrinsic that has at least one subroutine form as a
subroutine.
Ok to pass intrinsic as actual arg if it has a known specific
intrinsic form that is valid as actual arg.
(ffeexpr_declare_parenthesized_): An unknown kind of
intrinsic has a paren_type chosen based on context.
(ffeexpr_token_arguments_): Build funcref/subrref based
on context, not on kind of procedure being called.
* intrin.h, intrin.c (ffeintrin_is_intrinsic): Undo changes of
Tue Feb 4 23:12:04 1997 by me, change all callers to leave
intrinsics as FFEINFO_kindNONE at this point. (Some callers
also had unused variables deleted as a result.)
Enable all intrinsic groups (especially f90 and vxt):
* target.h (FFETARGET_defaultSTATE_DCP, FFETARGET_defaultSTATE_F2C,
FFETARGET_defaultSTATE_F90, FFETARGET_defaultSTATE_MIL,
FFETARGET_defaultSTATE_UNIX, FFETARGET_defaultSTATE_VXT):
Delete these macros, let top.c set them directly.
* top.c (ffeintrinsic_state_dcp_, ffe_intrinsic_state_f2c_,
ffe_intrinsic_state_f90_, ffe_intrinsic_state_mil_,
ffe_intrinsic_state_unix_, ffe_intrinsic_state_vxt_):
Enable all these directly.
Sat Feb 8 03:21:50 1997 Craig Burley <burley@gnu.ai.mit.edu>
* g77.c: Incorporate recent changes to ../gcc.c.
For version magic (e.g. `g77 -v'), instead of compiling
/dev/null, write, compile, run, and then delete a small
program that prints the version numbers of the three
components of libf2c (libF77, libI77, and libU77),
so we get this info with bug reports.
Also, this change reduces the chances of accidentally
linking to an old (complex-alias-problem) libf2c.
Fix `-L' so the argument is expected in `-Larg'.
* com.h (FFECOM_f2cLONGINT): For INTEGER*8 support in f2c.h,
dynamically determine proper type here, instead of
assuming `long long int' is correct.
Tue Feb 4 23:12:04 1997 Craig Burley <burley@gnu.ai.mit.edu>
Add libU77 library from Dave Love <d.love@dl.ac.uk>:
* Make-lang.in (f77-runtime): Depend on new Makefile.
(f/runtime/libU77/Makefile): New rule.
Also configure libU77.
($(srcdir)/f/runtime/configure: Use Makefile.in,
so configuration doesn't have to have happened.
(f77.mostlyclean, f77.clean, f77.distclean,
f77.maintainer-clean): Some fixups here, but more work
needed.
(RUNTIMESTAGESTUFF): Add libU77's config.status.
(LIBU77STAGESTUFF, f77.stage1, f77.stage2, f77.stage3,
f77.stage4): New macro, appropriate uses added.
* com-rt.def: Add libU77 procedures.
* com.c (ffecom_f2c_ptr_to_integer_type_node,
ffecom_f2c_ptr_to_real_type_node): New type nodes.
(FFECOM_rttypeCHARACTER_): New type of run-time function.
(ffecom_char_args_): Handle CHARACTER*n intrinsics
where n != 1 here, instead of in ffecom_expr_intrinsic_.
(ffecom_expr_intrinsic_): New code to handle new
intrinsics.
In particular, change how FFEINTRIN_impFLUSH is handled.
(ffecom_make_gfrt_): Handle new type of run-time function.
(ffecom_init_0): Initialize new type nodes.
* config-lang.in: New libU77 directory.
* intrin.h, intrin.c (ffeintrin_is_intrinsic): Handle
potential generic for subroutine _and_ function
specifics via two new arguments. All callers changed.
Properly ignore deleted/disabled intrinsics in resolving
generics.
(ffeintrin_check_, ffeintrin_init_0): Handle CHARACTER intrinsics of (*)
length.
* intrin.def: Permission granted by FSF to place this in
public domain, which will allow it to serve as source
for both g77 program and its documentation.
Add libU77 intrinsics.
(FLUSH): Now a generic, not specific, intrinsic.
(DEFIMP): Now support return modifier for CHARACTER intrinsics.
* com-rt.def (FFECOM_gfrtDIM, FFECOM_gfrtERF,
FFECOM_gfrtERFC, FFECOM_gfrtEXP, FFECOM_gfrtSIGN,
FFECOM_gfrtSIN, FFECOM_gfrtSINH, FFECOM_gfrtTAN,
FFECOM_gfrtTANH, FFECOM_gfrtPOW_RI): Change "&r" to "&f".
Sat Feb 1 12:15:09 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Version 0.5.19.1 released.
* com.c (ffecom_expr_, ffecom_expr_intrinsic_,
ffecom_tree_divide_): FFECOM_gfrtPOW_ZI,
FFECOM_gfrtCONJG, FFECOM_gfrtDCONJG,
FFECOM_gfrtCCOS, FFECOM_gfrtCDCOS,
FFECOM_gfrtCLOG, FFECOM_gfrtCDLOG,
FFECOM_gfrtCSIN, FFECOM_gfrtCDSIN,
FFECOM_gfrtCSQRT, FFECOM_gfrtCDSQRT,
FFECOM_gfrtDIV_CC, FFECOM_gfrtDIV_ZZ: These all require
result to _not_ overlap one or more inputs.
Sat Feb 1 00:25:55 1997 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_init_0): Do internal checks only if
-fset-g77-defaults not specified.
Fix %LOC(), LOC() to return sufficiently wide type:
* com.h, com.c (ffecom_pointer_kind_, ffecom_label_kind_,
ffecom_pointer_kind(), ffecom_label_kind()): New globals
and accessor macros hold kind for integer pointers on target
machine.
(ffecom_init_0): Determine narrowest INTEGER type that
can hold a pointer (usually INTEGER*4 or INTEGER*8),
store it in ffecom_pointer_kind_, etc.
* expr.c (ffeexpr_cb_end_loc_): Use right type for %LOC().
* intrin.c (ffeintrin_check_, ffeintrin_init_0): Support
new 'p' kind for type of intrinsic.
* intrin.def (FFEINTRIN_impLOC): Returns "Ip" instead of "I1",
so LOC() type is correct for target machine.
Support -fugly-assign:
* lang-options.h, top.h, top.c (ffe_decode_option):
Accept -fugly-assign and -fno-ugly-assign.
* com.c (ffecom_expr_): Handle -fugly-assign.
* expr.c (ffeexpr_finished_): Check right type for ASSIGN
contexts.
Fri Jan 31 14:30:00 1997 Craig Burley <burley@gnu.ai.mit.edu>
Remove last vestiges of -fvxt-not-f90:
* stb.c (ffestb_R10012_, ffestb_R10014_, ffestb_V0201_):
top.c, top.h:
Fri Jan 31 02:13:54 1997 Craig Burley <burley@gnu.ai.mit.edu>
* top.c (ffe_decode_option): Warn if -fugly is specified,
it'll go away soon.
* symbol.h: No need to #include "bad.h".
Reorganize features from -fvxt-not-f90 to -fvxt:
* lang-options.h, top.h, top.c:
Accept -fvxt and -fno-vxt, but not -fvxt-not-f90 or -ff90-not-vxt.
Warn if the latter two are used.
* expr.c (ffeexpr_nil_rhs_): Double-quote means octal constant.
(ffeexpr_token_rhs_): Double-quote means octal constant.
* target.h (FFETARGET_defaultIS_VXT_NOT_90): Delete macro
definition, no longer needed.
Make some -ff90 features the default:
* data.c (ffedata_value): DATA implies SAVE.
* src.h (ffesrc_is_name_noninit): Underscores always okay.
Fix up some more #error directives by quoting their text:
* bld.c (ffebld_constant_is_zero):
* target.h:
Sat Jan 18 18:22:09 1997 Craig Burley <burley@gnu.ai.mit.edu>
* g77.c (lookup_option, main): Recognize `-Xlinker',
`-Wl,', `-l', `-L', `--library-directory', `-o',
`--output'.
(lookup_option): Don't depend on SWITCH_TAKES_ARG
being correct, it might or might not have `-x' in
it depending on host.
Return NULL argument if it would be an empty string.
(main): If no input files (by gcc.c's definition)
but `-o' or `--output' specified, produce diagnostic
to avoid overwriting output via gcc.
Recognize C++ `+e' options.
Treat -L as another non-magical option (like -B).
Don't append_arg `-x' twice.
Fri Jan 10 23:36:00 1997 Craig Burley <burley@gnu.ai.mit.edu>
* top.c [BUILT_FOR_270] (ffe_decode_option): Make
-fargument-noalias-global the default.
Fri Jan 10 07:42:27 1997 Craig Burley <burley@gnu.ai.mit.edu>
Enable inlining of previously-compiled program units:
* com.c (ffecom_do_entry_, ffecom_start_progunit_):
Register new public function in ffeglobal database.
(ffecom_sym_transform_): Any GLOBAL or potentially GLOBAL
symbol should be looked up in ffeglobal database and
that tree node used, if found. That way, gcc knows
the references are to those earlier definitions, so it
can emit shorter branches/calls, inline, etc.
(ffecom_transform_common_): Minor change for clarity.
* expr.c (ffeexpr_sym-lhs_call_, ffeexpr_sym_lhs_extfunc_,
ffeexpr_sym_rhs_actualarg_, ffeexpr_paren_rhs_let_,
ffeexpr_token_funsubstr_): Globalize symbol as needed.
* global.c (ffeglobal_promoted): New function to look up
existing local symbol in ffeglobal database.
* global.h: Declare new function.
* name.h (ffename_token): New macro, plus alphabetize.
* stc.c (ffestc_R1207_item): Globalize EXTERNAL symbol.
* stu.c (ffestu_sym_end_transition, ffestu_sym_exec_transition):
Globalize symbol as needed.
* symbol.h, symbol.c (ffesymbol_globalize): New function.
Thu Jan 9 14:20:00 1997 Craig Burley <burley@gnu.ai.mit.edu>
* ste.c (ffeste_R809): Produce a diagnostic for SELECT CASE
on CHARACTER type, instead of crashing.
Thu Jan 9 00:52:45 1997 Craig Burley <burley@gnu.ai.mit.edu>
* stc.c (ffestc_order_entry_, ffestc_order_format_,
ffestc_R1226): Allow ENTRY and FORMAT before IMPLICIT
NONE, by having them transition only to state 1 instead
of state 2 (which is disallowed by IMPLICIT NONE).
Mon Jan 6 22:44:53 1997 Craig Burley <burley@gnu.ai.mit.edu>
Fix AXP bug found by Rick Niles (961201-1.f):
* com.c (ffecom_init_0): Undo my 1996-05-14 change, as
it is incorrect and prevented easily finding this bug.
* target.h [__alpha__] (ffetargetReal1, ffetargetReal2):
Use int instead of long.
(ffetarget_cvt_r1_to_rv_, ffetarget_cvt_rv_to_r1_,
ffetarget_cvt_r2_to_rv_, ffetarget_cvt_rv_to_r2_):
New functions that intercede for callers of
REAL_VALUE_(TO|UNTO)_TARGET_(SINGLE|DOUBLE).
All callers changed, and damaging casts to (long *) removed.
Sun Jan 5 03:26:11 1997 Craig Burley <burley@gnu.ai.mit.edu>
* Make-lang.in (g77, g77-cross): Depend on both g77.c and
zzz.c, in $(srcdir)/f/.
Better design for -fugly-assumed:
* stc.c (ffestc_R501_item, ffestc_R524_item,
ffestc_R547_item_object): Pass new is_ugly_assumed flag.
* stt.c, stt.h (ffestt_dimlist_as_expr,
ffestt_dimlist_type): New is_ugly_assumed flag now
controls whether "1" is treated as "*".
Don't treat "2-1" or other collapsed constants as "*".
Sat Jan 4 15:26:22 1997 Craig Burley <burley@gnu.ai.mit.edu>
* stb.c (ffestb_R10012_): Don't confirm on FORMAT(A,)
or even FORMAT(A,,B), as R1229 only warns about the
former currently, and this seems reasonable.
Improvements to diagnostics:
* sta.c (ffesta_second_): Don't add any ffestb parsers
unless they're specifically called for.
Set up ffesta_tokens[0] before calling ffestc_exec_transition,
else stale info might get used.
(ffesta_save_): Do a better job picking which parser to run
after running all parsers with no confirmed possibles.
(FFESTA_maxPOSSIBLES_): Decrease from 100 now that so few
possibles are ever on the list at a given time.
(struct _ffesta_possible): Add named attribute.
(ffesta_add_possible_exec_, ffesta_add_possible_nonexec_):
Make these into macros that call a single function that now
sets the named attribute.
(ffesta_add_possible_unnamed_exec_,
ffeseta_add_possible_unnamed_nonexec_): New macros.
(ffesta_second_): Designate unnamed possibles as
appropriate.
* stb.c (ffestb_R1229, ffestb_R12291_): Use more general
diagnostic, so things like "POINTER (FOO, BAR)" are
diagnosed as unrecognized statements, not invalid statement
functions.
* stb.h, stb.c (ffestb_unimplemented): Remove function.
1996-12-30 Dave Love <d.love@dl.ac.uk>
* com.c: #include libU77/config.h
(ffecom_f2c_ptr_to_integer_type_node,
ffecom_f2c_ptr_to_integer_type_node): New variables.
(ffecom_init_0): Use them.
(ffecom_expr_intrinsic_): Many news cases for libU77 intrinsics.
* com-rt.def: New definitions for libU77.
* intrin.def: Likewise. Also correct ftell arg spec.
* Makefile.in (f/runtime/libU77/config.h): New target for com.c
dependency.
* Make-lang.in (f771): Depend on f/runtime/Makefile for the above.
Sat Dec 28 12:28:29 1996 Craig Burley <burley@gnu.ai.mit.edu>
* stt.c (ffestt_dimlist_type): Treat ([...,]1) in dimlist
as ([...,]*) if -fugly-assumed, so assumed-size array
detected early enough.
Thu Dec 19 14:01:57 1996 Craig Burley <burley@gnu.ai.mit.edu>
* target.h (FFETARGET_REAL_VALUE_FROM_INT_): Conditionalize
definition on BUILT_FOR_280, not BUILT_WITH_280, since
the name of the macro was (properly) changed since 0.5.19.
Fix warnings/errors resulting from ffetargetOffset becoming
`long long int' instead of `unsigned long' as of 0.5.19,
while ffebitCount remains `unsigned long':
* bld.c (ffebld_constantarray_dump): Avoid warnings by
using loop var of appropriate type, and using casts.
* com.c (ffecom_expr_): Use right type for loop var.
(ffecom_sym_transform_, ffecom_transform_equiv_):
Cast to right type in assertions.
* data.c (ffedata_gather_, ffedata_value_): Cast to right
type in assertions and comparisons.
Wed Dec 18 12:07:11 1996 Craig Burley <burley@gnu.ai.mit.edu>
Patch from Alexandre Oliva <oliva@dcc.unicamp.br>:
* Makefile.in (all.indirect): Don't pass -bbigtoc option
to GNU ld.
Cope with new versions of gcc:
* com.h (BUILT_FOR_280): New macro.
* com.c (ffecom_ptr_to_expr): Conditionalize test of
OFFSET_REF.
(ffecom_build_complex_constant_): Conditionalize calling
sequence for build_complex.
Sat Dec 7 07:15:17 1996 Craig Burley <burley@gnu.ai.mit.edu>
* Version 0.5.19 released.
Fri Dec 6 12:23:55 1996 Craig Burley <burley@gnu.ai.mit.edu>
* g77.c: Default to assuming "f77" is in $LANGUAGES, since
the LANGUAGE_F77 macro isn't defined by anyone anymore (but
might as well leave the no-f77 code in just in case).
* Make-lang.in (g77, g77-cross): Don't define LANGUAGE_F77
anymore.
1996-12-06 Dave Love <d.love@dl.ac.uk>
* Make-lang.in (g77, g77-cross): Revert to building `g77' or not
conditional on `f77' in LANGUAGES.
Wed Dec 4 13:08:44 1996 Craig Burley <burley@gnu.ai.mit.edu>
* Make-lang.in (g77, g77-cross): No libs or lib dependencies
in case where "f77" is not in $LANGUAGES.
* lex.c (ffelex_image_char_, ffelex_file_fixed,
ffelex_file_free): Fixes to properly handle lines with
null character, and too-long lines as well.
* lex.c: Call ffebad_start_msg_lex instead of
ffebad_start_msg throughout.
Sun Dec 1 21:19:55 1996 Craig Burley <burley@gnu.ai.mit.edu>
Fix-up for 1996-11-25 changes:
* com.c (ffecom_member_phase2_): Subtract out 0 offset for
elegance and consistency with EQUIVALENCE aggregates.
(ffecom_sym_transform_): Ditto for LOCAL/COMMON, and
ensure we get the same parent storage area.
* data.c (ffedata_gather_, ffedata_value_): Subtract out
aggregate offset.
Wed Nov 27 13:55:57 1996 Craig Burley <burley@gnu.ai.mit.edu>
* proj.h: Quote the text of the #error message, to avoid
strange-looking diagnostics from non-gcc ANSI compilers.
* top.c: Make -fno-debug-kludge the default.
Mon Nov 25 20:13:45 1996 Craig Burley <burley@gnu.ai.mit.edu>
Provide more info on EQUIVALENCE mismatches:
* bad.def (FFEBAD_EQUIV_MISMATCH): More detailed message.
* equiv.c (ffeequiv_layout_local_, ffeequiv_layout_cblock):
More details for FFEBAD_EQUIV_MISMATCH.
Fix problem with EQUIVALENCE handling:
* equiv.c (ffeequiv_layout_local_): Redesign algorithm --
old one was broken, resulting in rejection of good code.
(ffeequiv_offset_): Add argument, change callers.
Clean up the code, fix up the (probably unused) negative-value
case for SYMTER.
* com.c (ffecom_sym_transform_): For local EQUIVALENCE
member, subtract out aggregate offset (which is <= 0).
Thu Nov 21 12:44:56 1996 Craig Burley <burley@gnu.ai.mit.edu>
Change type of ffetargetOffset from `unsigned long' to `long long':
* bld.c (ffebld_constantarray_dump): Change printf formats.
* storag.c (ffestorag_dump): Ditto.
* symbol.c (ffesymbol_report): Ditto.
* target.h (ffetargetOffset_f): Ditto and change type itself.
Handle situation where list of languages does not include f77:
* Make-lang.in: Define LANGUAGE_F77 to 1 only if `f77' is in
the $LANGUAGES macro for the build.
* g77.c: Compile to a (nearly) no-op program if LANGUAGE_F77
is not defined to 1.
Fixes to delay confirmation of READ, WRITE, and GOTO statements
so the corresponding assignments to same-named CHAR*(*) arrays
work:
* stb.c (ffestb_R90915_, ffestb_91014_): New functions.
(ffestb_goto3_, ffestb_goto5_): Move confirmation from 3 to 5
for the OPEN_PAREN case.
(ffestb_R9091_, ffestb_R9094_, ffestb_R90913_, ffestb_R90914_,
ffestb_R91012_, ffestb_R91013_): Use new functions, and confirm
except for the OPEN_PAREN case.
Fixes to not confirm declarations with an open paren where
an equal sign or other assignment-like token might be, so the
corresponding assignments to same-named CHAR*(*) arrays work:
(ffestb_decl_entsp_5_): Move assertion so we crash on that first,
if it turns out to be wrong, before the less-debuggable crash
on mistaken confirmation.
(ffestb_decl_entsp_6_, ffestb_decl_entsp_7_, ffestb_decl_entsp_8_):
Include OPEN_PAREN in list of assignment-only tokens.
Fix more diagnosed-crash bugs:
* stu.c (ffestu_sym_end_transition): ANY-ize an adjustable array
with bad dimension expressions even if still stateUNCERTAIN.
(ffestu_symter_end_transition_, ffestu_symter_exec_transition_):
Return TRUE for opANY as well.
For code elegance, move opSYMTER case into first switch.
1996-11-17 Dave Love <d.love@dl.ac.uk>
* lex.c: Fix last change.
1996-11-14 Dave Love <d.love@dl.ac.uk>
* Make-lang.in, config-lang.in: Remove the (broken) libU77 stuff,
pending 0.5.20.
Thu Nov 14 15:40:59 1996 Craig Burley <burley@gnu.ai.mit.edu>
* bad.def (FFEBAD_UNIMPL_STMT): Explain that invalid
intrinsic references can trigger this message, too.
1996-11-12 Dave Love <d.love@dl.ac.uk>
* lex.c: Declare dwarfout routines.
* config-lang.in: Sink grep o/p.
Mon Nov 11 14:21:13 1996 Craig Burley <burley@gnu.ai.mit.edu>
* g77.c (main): Might as well print version number
for --verbose as well.
Thu Nov 7 18:41:41 1996 Craig Burley <burley@gnu.ai.mit.edu>
* expr.c, lang-options.h, target.h, top.c, top.h: Split out
remaining -fugly stuff into -fugly-logint and -fugly-comma,
leaving -fugly as simply a `macro' that expands into other
options, and eliminate defaults for some of the ugly stuff
in target.h.
* Make-lang.in (gcc-cross): Compile zzz.c, not version.o (!),
in to get version info for this target.
* config-lang.in: Test for GBE patch application based
on whether 2.6.x or 2.7.x GBE is detected.
Wed Nov 6 14:19:45 1996 Craig Burley <burley@gnu.ai.mit.edu>
* Make-lang.in (g77): Compile zzz.c in to get version info.
* g77.c: Add support for --help and --version.
* g77.c (lookup_option): Short-circuit long-winded tests
when second char is not hyphen, just to save a spot of time.
Sat Nov 2 13:50:31 1996 Craig Burley <burley@gnu.ai.mit.edu>
* intrin.def: Add FTELL and FSEEK intrinsics, plus new
`g' codes for alternate-return (GOTO) arguments.
* intrin.c (ffeintrin_check_): Support `g' codes.
* com-rt.def: Add ftell_() and fseek_() to database.
* com.c (ffecom_expr_intrinsic_): Ditto. Also, let each
subroutine intrinsic decide for itself what to do with
tree_type, the default being NULL_TREE once again (so
ffecom_call_ doesn't think it's supposed to cast the
function call to the type in the fall-through case).
* ste.c (ffeste_R909_finish): Don't special-case list-directed
I/O, now that libf2c can return non-zero status codes.
(ffeste_R910_finish): Ditto.
(ffeste_io_call_): Simplify logic.
(ffeste_io_impdo_):
(ffeste_subr_beru_):
(ffeste_R904):
(ffeste_R907):
(ffeste_R909_start):
(ffeste_R909_item):
(ffeste_R909_finish):
(ffeste_R910_start):
(ffeste_R910_item):
(ffeste_R910_finish):
(ffeste_R911_start):
(ffeste_R923A): Ditto all the above.
Thu Oct 31 20:56:28 1996 Craig Burley <burley@gnu.ai.mit.edu>
* config-lang.in, Make-lang.in: Rename flag file
build-u77 to build-libu77, for consistency with
install-libf2c and such.
* config-lang.in: Don't complain about failure to patch
if pre-2.7.0 gcc is involved (since our patch for that
doesn't add support for tooning).
Sat Oct 26 05:56:51 1996 Craig Burley <burley@gnu.ai.mit.edu>
* bad.def (FFEBAD_TYPELESS_TOO_LARGE): Remove this
unused and redundant diagnostic.
Sat Oct 26 00:45:42 1996 Craig Burley <burley@gnu.ai.mit.edu>
* target.c (ffetarget_integerhex): Fix dumb bug.
1996-10-20 Dave Love <d.love@dl.ac.uk>
* gbe/2.7.2.1.diff: New file.
* Makefile.in (F771_LDFLAGS): Add -bbigtoc for AIX4.1 up, suggested by
endo@material.tohoku.ac.jp [among others!].
Sat Oct 19 03:11:14 1996 Craig Burley <burley@gnu.ai.mit.edu>
* bad.def, bld.c, bld.h, expr.c, lang-options.h, target.c,
target.h, top.c, top.h (ffebld_constant_new_integerbinary,
ffebld_constant_new_integerhex, ffebld_constant_new_integeroctal,
ffeexpr_token_name_apos_name_, ffetarget_integerbinary,
ffetarget_integerhex, ffetarget_integeroctal): Support
new -fno-typeless-boz option with new functions, mods to
existing octal-handling functions, new macros, new error
messages, and so on.
* com.c, lang-options.h, top.c, top.h (ffecom_notify_primary_entry):
Print program unit name on stderr if -fno-silent (new option).
* lang-options.h, top.c, top.h, stt.c (ffestt_dimlist_as_expr):
Treat ([...,]1) in dimlist as ([...,]*) if -fugly-assumed
(new option).
* lang-options.h: Comment out options duplicated in gcc/toplev.c,
because, somehow, having them commented in and building on my
DEC Alpha results in a cc1 that always segfaults, and gdb that
also segfaults whenever it debugs it up to init_lex() calling
xmalloc() or so.
Thu Oct 17 00:39:27 1996 Craig Burley <burley@gnu.ai.mit.edu>
* stb.c (ffestb_R10013_): Don't change meaning of .sign until
after previous meaning/value used to set sign of value
(960507-1.f).
Sun Oct 13 22:15:23 1996 Craig Burley <burley@gnu.ai.mit.edu>
* top.c (ffe_decode_option): Don't set back-end flags
that are nonexistent prior to gcc 2.7.0.
Sun Oct 13 12:48:45 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (convert): Don't convert emulated complex expr to
real (via REALPART_EXPR) if the target type is (emulated)
complex.
Wed Oct 2 21:57:12 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_debug_kludge_): Set DECL_IN_SYSTEM_HEADER so
-Wunused doesn't complain about these manufactured decls.
(ffecom_expr_): Ditto, for original (non-ASSIGN'ed) variable.
(ffecom_transform_equiv_): Clear DECL_IGNORED_P for aggregate
area so it shows up as a debug-accessible symbol.
(pushdecl): Default for "invented" identifiers (a g77-specific
concept for now) is that they are artificial, in system header,
ignored for debugging purposes, used, and (for types) suppressed.
This ought to be overkill.
Fri Sep 27 23:13:07 1996 Craig Burley <burley@gnu.ai.mit.edu>
* ste.c (ffeste_begin_iterdo_, ffeste_end_iterdo_): Support
one-trip DO loops (F66-style).
* lang-options.h, top.c, top.h (-fonetrip): New option.
Thu Sep 26 00:18:40 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_debug_kludge_): New function.
(ffecom_sym_transform_): Use new function for COMMON and EQUIVALENCE
members.
* lang-options.h, top.c, top.h (-fno-debug-kludge):
New option.
1996-09-24 Dave Love <d.love@dl.ac.uk>
* Make-lang.in (include/f2c.h):
Remove dependencies on xmake_file and tmake_file.
They expand inconsistently in 2.8 c.f. 2.7; $(GCC_PARTS) depends on
them anyhow.
1996-09-22 Dave Love <d.love@dl.ac.uk>
* config-lang.in: Add --enable-libu77 option handling.
* Make-lang.in:
Conditionally add --enable-libu77 when running runtime configure.
Define LIBU77STAGESTUFF and use it in relevant rules.
1996-08-21 Dave Love <d.love@dl.ac.uk>
* Make-lang.in (f77-runtime):
`stmp-hdrs' should have been `stmp-headers'.
1996-08-20 Dave Love <d.love@dl.ac.uk>
* Make-lang.in (f77-runtime):
Depend on stmp-hdrs, not stmp-int-hdrs, since libF77
needs float.h.
Sat Jun 22 18:17:11 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_tree_divide_): Fix RECORD_TYPE case to
look at type of first field, properly, to determine
whether to call c_div or z_div.
Tue Jun 4 04:27:18 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_build_complex_constant_): Explicitly specify
TREE_PURPOSE.
(ffecom_expr_): Fix thinko.
(ffecom_2): For COMPLEX_EXPR, explicitly specify TREE_PURPOSE.
Mon May 27 16:23:43 1996 Craig Burley <burley@gnu.ai.mit.edu>
Changes to optionally avoid gcc's back-end complex support:
* com.c (ffecom_stabilize_aggregate_): New function.
(ffecom_convert_to_complex_): New function.
(ffecom_make_complex_type_): New function.
(ffecom_build_complex_constant_): New function.
(ffecom_expr_): For opCONVERT of non-COMPLEX to COMPLEX,
don't bother explicitly converting to the subtype first,
because gcc does that anyway, and more code would have
to be added to find the subtype for the emulated-complex
case.
(ffecom_f2c_make_type_): Use ffecom_make_complex_type_
instead of make_node etc. to make a complex type.
(ffecom_1, ffecom_2): Translate operations on COMPLEX operands
to appropriate operations when emulating complex.
(ffecom_constantunion): Use ffecom_build_complex_constant_
instead of build_complex to build a complex constant.
(ffecom_init_0): Change point at which types are laid out
for improved consistency.
Use ffecom_make_complex_type_ instead of make_node etc.
to make a complex type.
Always calculate storage sizes from TYPE_SIZE, never TYPE_PRECISION.
(convert): Use e, not expr, since we've copied into that anyway.
For RECORD_TYPE cases, do emulated-complex conversions.
(ffecom_f2c_set_lio_code_): Always calculate storage sizes
from TYPE_SIZE, never TYPE_PRECISION.
(ffecom_tree_divide_): Allow RECORD_TYPE to also be handled
by run-time library.
(ffecom_expr_intrinsic_): Handle possible RECORD_TYPE as argument
to AIMAG intrinsic.
* top.h, top.c, lang-options.h: Support new -f(no-)emulate-complex option.
* com.c (ffecom_sym_transform_): Clarify and fix typos in comments.
Mon May 20 02:06:27 1996 Craig Burley <burley@gnu.ai.mit.edu>
* target.h: Use new REAL_VALUE_UNTO_TARGET_* macros instead
of REAL_VALUE_FROM_TARGET_DOUBLE and _SINGLE.
Explicitly use long instead of HOST_WIDE_INT for emulation
of ffetargetReal1 and ffetargetReal2.
1996-05-20 Dave Love <d.love@dl.ac.uk>
* config-lang.in:
Test for patch being applied with flag_move_all_movables in toplev.c.
* install.texi (Patching GNU Fortran):
Mention overriding X_CFLAGS rather than
editing proj.h on SunOS4.
* Make-lang.in (F77_FLAGS_TO_PASS):
Add X_CFLAGS (convenient for SunOS4 kluge, in
particular).
(f77.{,mostly,dist}clean): Reorder things, in particular not to delete
Makefiles too early.
* g77.c (DEFAULT_SWITCH_TAKES_ARG): Define a la gcc.c in the
current GCC snapshot.
Tue May 14 00:24:07 1996 Craig Burley <burley@gnu.ai.mit.edu>
Changes for DEC Alpha AXP support:
* com.c (ffecom_init_0): REAL_ARITHMETIC means internal
REAL/DOUBLE PRECISION might well have a different size
than the compiled type, so don't crash if this is the
case.
* target.h: Use `int' for ffetargetInteger1,
ffetargetLogical1, and magical tests. Set _f format
strings accordingly.
Tue Apr 16 14:08:28 1996 Craig Burley <burley@gnu.ai.mit.edu>
* top.c (ffe_decode_option): -Wall no longer implies
-Wsurprising.
Sat Apr 13 14:50:06 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_char_args_): If item is error_mark_node,
set *length that way, too.
* com.c (ffecom_expr_power_integer_): If either operand
is error_mark_node, return that.
* com.c (ffecom_intrinsic_len_): If item is error_mark_node,
return that for length.
* expr.c (ffeexpr_declare_unadorned_,
ffeexpr_declare_parenthesized_): Instead of crashing
on unexpected contexts, produce a diagnostic.
* intrin.c (ffeintrin_check_), intrin.def (impSIGNAL):
Allow procedure as second arg to SIGNAL intrinsic.
* stu.c (ffestu_symter_end_transition_): New function.
(ffestu_symter_exec_transition_): Return bool arg.
Always transition symbol (don't inhibit when !whereNONE).
(ffestu_sym_end_transition): If DUMMY/LOCAL arg has any
opANY exprs in its dimlist, diagnose it so it doesn't
make it through to later stages that try to deal with
dimlist stuff.
(ffestu_sym_exec_transition): If sym has any opANY exprs
in its dimlist, diagnose it so it becomes opANY itself.
* symbol.c (ffesymbol_error): If token arg is NULL,
just ANY-ize the symbol -- don't produce diagnostic.
Mon Apr 1 10:14:02 1996 Craig Burley <burley@gnu.ai.mit.edu>
* Version 0.5.18 released.
Mon Mar 25 20:52:24 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_expr_power_integer_): Don't generate code
that compares COMPLEX (or, as it happens, REAL) via "LT_EXPR",
since the back end crashes on that. (This code would never
be executed anyway, but the test that avoids it has now been
translated to control whether the code gets generated at all.)
Fixes 960323-3.f.
* com.c (ffecom_type_localvar_): Handle variable-sized
dimension bounds expressions here, so they get calculated
and saved on procedure entry. Fixes 960323-4.f.
* com.c (ffecom_notify_init_symbol): Symbol has no init
info at all if only zeros have been used to initialize it.
Fixes 960324-0.f.
* expr.c, expr.h (ffeexpr_type_combine): Renamed from
ffeexpr_type_combine_ and now a public procedure; last arg now
a token, instead of an internal structure used to extract a token.
Now allows the outputs to be aliased with the inputs.
Now allows a NULL token to mean "don't report error".
(ffeexpr_reduced_bool2_, ffeexpr_reduced_eqop2_,
ffeexpr_reduced_math2_, ffeexpr_reduced_power_,
ffeexpr_reduced_relop2_): Handle new calling sequence for
ffeexpr_type_combine.
* (ffeexpr_convert): Don't put an opCONVERT node
in just because the size is unknown; all downstream code
should be able to deal without it being there anyway, and
getting rid of it allows new intrinsic code to more easily
combine types and such without generating bad code.
* info.c, info.h (ffeinfo_kindtype_max): Rewrite to do
proper comparison of size of types, not just comparison
of their internal kind numbers (so I2.eq.I1 doesn't promote
I1 to I2, rather the other way around).
* intrin.c (ffeintrin_check_): Combine types of arguments
in COL a la expression handling, for greater flexibility
and permissiveness (though, someday, -fpedantic should
report use of this kind of thing).
Make sure Hollerith/typeless where CHARACTER expected is
rejected. This all fixes 960323-2.f.
* ste.c (ffeste_begin_iterdo_): Fix some more type conversions
so INTEGER*2-laden DO loops don't crash at compile time on
certain machines. Believed to fix 960323-1.f.
* stu.c (ffestu_sym_end_transition): Certainly reject
whereDUMMY not in any dummy list, whether stateUNCERTAIN
or stateUNDERSTOOD. Fixes 960323-0.f.
Tue Mar 19 13:12:40 1996 Craig Burley <burley@gnu.ai.mit.edu>
* data.c (ffedata_value): Fix crash on opANY, and simplify
the code at the same time.
* Make-lang.in (f77-runtime): Also depends on lib[FI]77/Makefile...
(include/f2c.h...): ...which in turn depend on */Makefile.in.
(f77.rebuilt): Rebuild runtime stuff too.
* intrin.c (ffeintrin_check_): Accommodate TYPELESS/HOLLERITH
types, convert args as necessary, etc.
* expr.c (ffeexpr_convert): Fix test for TYPELESS/HOLLERITH
to obey the docs; crash if no source token when error.
(ffeexpr_collapse_convert): Crash if no token when error.
Mon Mar 18 15:51:30 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_init_zero_): Renamed from
ffecom_init_local_zero_; now handles top-level
(COMMON) initializations too.
* bld.c (ffebld_constant_is_zero):
* com.c (ffecom_symbol_transform_, ffecom_sym_transform_assign_,
ffecom_transform_common_, ffecom_transform_equiv_):
* data.c:
* equiv.c:
* equiv.h:
* lang-options.h:
* stc.c:
* storag.c:
* storag.h:
* symbol.c:
* symbol.h:
* target.c:
* target.h:
* top.c:
* top.h: All of this is mostly housekeeping-type changes
to support -f(no-)zeros, i.e. not always stuff zero
values into the initializer fields of symbol/storage objects,
but still track that they have been given initial values.
* bad.def: Fix wording for DATA-related diagnostics.
* com.c (ffecom_sym_transform_assign_): Don't check
any EQUIVALENCE stuff for local ASSIGN, the check was
bad (crashing), and it's not necessary, anyway.
* com.c (ffecom_expr_intrinsic_): For MAX and MIN,
ignore null arguments as far arg[123], and fix handling
of ANY arguments. (New intrinsic support now allows
spurious trailing null arguments.)
* com.c (ffecom_init_0): Add HOLLERITH (unsigned)
equivalents for INTEGER*2, *4, and *8, so shift intrinsics
and other things that need unsigned versions of signed
types work.
Sat Mar 16 12:11:40 1996 Craig Burley <burley@gnu.ai.mit.edu>
* storag.c (ffestorag_exec_layout): Treat adjustable
local array like dummy -- don't create storage object.
* com.c (ffecom_sym_transform_): Allow for NULL storage
object in LOCAL case (adjustable array).
Fri Mar 15 13:09:41 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_sym_transform_): Allow local symbols
with nonconstant sizes (adjustable local arrays).
(ffecom_type_localvar_): Allow dimensions with nonconstant
component (adjustable local arrays).
* expr.c: Various minor changes to handle adjustable
local arrays (a new case of stateUNCERTAIN).
* stu.c (ffestu_sym_end_transition,
ffestu_sym_exec_transition): Ditto.
* symbol.def: Update docs to reflect these changes.
* com.c (ffecom_expr_): Reduce space/time needed for
opACCTER case by handling it here instead of converting
it to opARRTER earlier on.
(ffecom_notify_init_storage): Don't convert ACCTER to ARRTER.
(ffecom_notify_init_symbol): Ditto.
* com.c (ffecom_init_0): Crash and burn if any of the types'
sizes, according to the GBE, disagrees with the sizes of
the FFE's internal implementation. This might catch
Alpha/SGI bugs earlier.
Fri Mar 15 01:09:41 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com-rt.def, com.c, com.h: Changes for rewrite of intrinsic
handling.
* com.c (ffecom_arglist_expr_): New function.
(ffecom_widest_expr_type_): New function.
(ffecom_expr_intrinsic_): Reorganize, some rewriting.
(ffecom_f2c_make_type_): Layout complex types.
(ffecom_gfrt_args_): New function.
(ffecom_list_expr): Trivial change for consistency.
* expr.c (ffeexpr_token_name_rhs_): Go back to getting
type from specific, not implementation, info.
(ffeexpr_token_funsubstr_): Set intrinsic implementation too!
* intrin.c: Major rewrite of most portions.
* intrin.def: Major rearchitecting of tables.
* intrin.h (ffeintrin_basictype, ffeintrin_kindtype):
Now (once again) take ffeintrinSpec as arg, not ffeintrinImp;
for now, these return NONE, since they're not really needed
and adding the necessary info to the tables is not trivial.
(ffeintrin_codegen_imp): New function.
* stc.c (ffestc_R1208_item): Change way ffeintrin funcs called,
back to original per above; but comment out the code anyway.
* intrin.c (ffe_init_0): Do internal checks only if
-fset-g77-defaults not specified.
* lang-options.h: Add -fset-g77-defaults option.
* lang-specs.h: Always pass -fset-g77-defaults.
* top.c, top.h: New option.
Sat Mar 9 17:49:50 1996 Craig Burley <burley@gnu.ai.mit.edu>
* Make-lang.in (stmp-int-hdrs): Use --no-validate when
generating the f77.rebuilt files (BUGS, INSTALL, NEWS)
so cross-references can work properly in g77.info
without a lot of hassle. Users can probably deal with
the way they end up looking in the f77.rebuilt files.
* bld.c (ffebld_constant_new_integer4_val): INTEGER*8
support -- new function.
(ffebld_constant_new_logical4_val): New function.
* com.c (ffecom_f2c_longint_type_node): New type.
(FFECOM_rttypeLONGINT_): New return type code.
(ffecom_expr_): Add code to invoke pow_qq instead
of pow_ii for INTEGER4 (INTEGER*8) case.
If ffecom_expr_power_integer_ returns NULL_TREE, just do
the usual work.
(ffecom_make_gfrt_): Handle new type.
(ffecom_expr_power_integer_): Let caller do the work if in
dummy-transforming case, since
caller now knows about INTEGER*8 and such, by returning
NULL_TREE.
* expr.c (ffeexpr_reduced_power_): Complain about non-INTEGER
raised to INTEGER4 (INTEGER*8) power.
* target.c (ffetarget_power_integerdefault_integerdefault):
Fix any**negative.
* com.c (ffecom_expr_power_integer_): Fix (-1)**(-8) and similar
to ABS() the integral result if the exponent is negative
and even.
* ste.c (ffeste_begin_iterdo_): Clean up a type ref.
Always convert iteration count to _default_ INTEGER.
* sta.c (ffesta_second_): Add BYTE and WORD type/stmts;
changes by Scott Snyder <snyder@d0sgif.fnal.gov>.
* stb.c (ffestb_decl_recursive): Ditto.
(ffestb_decl_recursive): Ditto.
(ffestb_decl_entsp_2_): Ditto.
(ffestb_decl_entsp_3_): Ditto.
(ffestb_decl_funcname_2_): Ditto.
(ffestb_decl_R539): Ditto.
(ffestb_decl_R5395_): Ditto.
* stc.c (ffestc_establish_declstmt_): Ditto.
* std.c (ffestd_R539item): Ditto.
(ffestd_R1219): Ditto.
* stp.h: Ditto.
* str-1t.fin: Ditto.
* str-2t.fin: Ditto.
* expr.c (ffeexpr_finished_): For DO loops, allow
any INTEGER type; convert LOGICAL (assuming -fugly)
to corresponding INTEGER type instead of always default
INTEGER; let later phases do conversion of DO start,
end, incr vars for implied-DO; change checks for non-integral
DO vars to be -Wsurprising warnings.
* ste.c (ffeste_io_impdo_): Convert start, end, and incr
to type of DO variable.
* com.c (ffecom_init_0): Add new types for [IL][234],
much of which was done by Scott Snyder <snyder@d0sgif.fnal.gov>.
* target.c: Ditto.
* target.h: Ditto.
Wed Mar 6 14:08:45 1996 Craig Burley <burley@gnu.ai.mit.edu>
* top.c (ffe_init_gbe_): Make -frerun-loop-opt the default.
Mon Mar 4 12:27:00 1996 Craig Burley <burley@gnu.ai.mit.edu>
* expr.c (ffeexpr_exprstack_push_unary_): Really warn only
about two successive _arithmetic_ operators.
* stc.c (ffestc_R522item_object): Allow SAVE of (understood)
local entity.
* top.c (ffe_decode_option): New -f(no-)second-underscore options.
* top.h: New options.
* com.c (ffecom_get_external_identifier_, ffecom_get_identifier_):
New options.
* Make-lang.in (f77.maintainer-clean): Clean f/BUGS, f/INSTALL,
f/NEWS.
($(srcdir)/f/BUGS, $(srcdir)/f/INSTALL, $(srcdir)/f/NEWS):
New rules.
($(srcdir)/f/g77.info, $(srcdir)/f/g77.dvi): Depend on
f/bugs.texi and f/news.texi.
(f77.install-man): Install f77 man pages (if enabled).
(f77.uninstall): Uninstall info docs, f77 man pages (if enabled).
* top.c (ffe_init_gbe_): New function.
(ffe_decode_option, ffe_file): Call ffe_init_gbe_ to
set defaults for gcc options.
Sat Jan 20 13:57:19 1996 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_get_identifier_): Eliminate needless
comparison of results of strchr.
Tue Dec 26 11:41:56 1995 Craig Burley <burley@gnu.ai.mit.edu>
* Make-lang.in: Add rules for new files g77.texi, g77.info,
and g77.dvi.
Reorganize the *clean rules to more closely parallel gcc's.
* config-lang.in: Exclude g77.info from diffs.
Sun Dec 10 02:29:13 1995 Craig Burley <burley@gnu.ai.mit.edu>
* expr.c (ffeexpr_declare_unadorned_,
ffeexpr_declare_parenthesized_): Break out handling of
contextDATAIMPDO[INDEX,CTRL] so it's independent of symbol state.
Don't exec-transition these here (let ffeexpr_sym_impdoitem_
handle that when appropriate). Don't "declare" them twice.
Tue Dec 5 06:48:26 1995 Craig Burley <burley@gnu.ai.mit.edu>
* stc.c (ffestc_promote_sfdummy_): Allow whereNONE parent
symbol, since it is not necessarily known whether it will
become LOCAL or DUMMY.
Mon Dec 4 03:46:55 1995 Craig Burley <burley@gnu.ai.mit.edu>
* lex.c (ffelex_display_token, ffelex_type_string_): Resurrect
these from their old versions and update them for possible invocation
from debugger.
* lex.h (ffelex_display_token): Declare this in case anyone
else wants to call it.
* lex.c (ffelex_total_tokens_): Have this reflect actual allocated
tokens, no longer include outstanding "uses" of tokens.
* malloc.c, malloc.h (MALLOC_DEBUG): New macro to control
checking of whether callers follow rules, now defaults to 0
for "no checking" to improve compile times.
* malloc.c (malloc_pool_kill): Fix bug that could prevent
subpool from actually being killed (wasn't setting its use
count to 1).
* proj.h, *.c (dmpout): Replace all occurrences of `stdout'
and some of `stderr' with `dmpout', so where to dump debugging
output can be easily controlled during build; add default
for `dmpout' of `stderr' to proj.h.
Sun Dec 3 00:56:29 1995 Craig Burley <burley@gnu.ai.mit.edu>
* com.c (ffecom_return_expr): Eliminate attempt at warning
about unset return values, since the back end does this better,
with better wording, and is not triggered by clearly working
(but spaghetti) code as easily as this test.
Sat Dec 2 08:28:56 1995 Craig Burley <burley@gnu.ai.mit.edu>
* target.c (ffetarget_power_*_integerdefault): Raising 0 to
integer constant power should not be an error condition;
if so, other code should catch 0 to any power, etc.
* bad.def (FFEBAD_BAD_POWER): 0**integer now a warning instead
of an error.
Fri Dec 1 00:12:03 1995 Craig Burley (burley@gnu.ai.mit.edu)
* bad.def: Clarify diagnostic regarding complex constant elements.
* expr.c (ffeexpr_cb_comma_c_): Capitalize real/imaginary
for clarified diagnostic.
* com.c (ffecom_close_include_): Close the file!
* lex.c (ffelex_file_fixed): Update line info if the line
has any content, not just if it finishes a previous line
or has a label.
(ffelex_file_free): Clarify switch statement code.
Sat Nov 18 19:37:22 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.17 released.
Fri Nov 17 14:27:24 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Make-lang.in: Fix typo in comment.
* Makefile.in (f/fini.o, f/proj-h.o): Don't use `$<' since
not all makes support it (e.g. NeXT make), use explicit
source name instead (with $(srcdir) and munging).
(ASSERT_H): assert.h lives in source dir, not build dir.
Thu Nov 16 12:47:50 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_init_0): Fix dumb bug in code to produce
warning message about non-32-bit-systems.
* stc.c (ffestc_R501_item): Parenthesize test to make
warning go away (and perhaps fix bug).
Thu Nov 16 03:43:33 1995 Craig Burley (burley@gnu.ai.mit.edu)
* g77.c: Upgrade to 2.7.0's gcc.c.
Fix -v to pass a temp name instead of "/dev/null" for "-o".
Fri Nov 10 19:16:05 1995 Craig Burley (burley@gnu.ai.mit.edu)
* ste.c (ffeste_begin_iterdo_): Add Toon's change to
make loops faster on some machines (implement termination
condition as "--i >= 0" instead of "i-- > 0").
Thu Nov 2 03:58:17 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Make-lang.in: Remove unnecessary $(exeext) a la cp/Make-lang.in.
* com.c (ffecom_expr_): Restore old strategy for assignp variant
of opSYMTER case...always return the ASSIGN version of var.
That way, `-O -Wuninitialized' will catch "I=3;GOTO I;END"
(though the diagnostic will refer to `__g77_ASSIGN_i').
* com.c (ffecom_expr_power_integer_): For constant rhs case,
wrap every new eval of lhs in save_expr() so it is clear to
back end that MULT_EXPR(lhs,lhs) has identical operands,
otherwise for an rhs like 32767 it generates around 65K pseudo
registers, which which stupid_life_analysis cannot cope
(due to reg_renumber in regs.h being `short *' instead of
`int *').
* com.c (ffecom_expr_): Speed up implementation of LOGICAL
versions of opNOT, opAND, opOR, opXOR/opNEQV, and opEQV by
assuming the values actually are kosher LOGICAL bit patterns.
Also simplify code that implements some of the INTEGER versions
of these.
* com.c (skip_redundant_dir_prefix, read_name_map,
ffecom_open_include_, signed_type, unsigned_type): Fold in
changes to cccp.c made from 2.7.0 through ss-950826.
* equiv.c (ffeequiv_layout_local_): Kill the equiv list
if no syms in list.
* expr.c (ffeexpr_reduced_eqop2_): Issue specific diagnostic
regarding usage of .EQV./.NEQV. in preference to .EQ./.NE..
* intrin.c: Add ERF and ERFC as generic intrinsics.
intrin.def: Same.
* sta.c (ffesta_save_, ffesta_second_): Whoever calls
ffestd_exec_begin must also set ffesta_seen_first_exec = TRUE,
and anytime stc sees an exec transition, it must do both.
stc.c (ffestc_eof): Same.
* stc.c (ffestc_promote_sfdummy_): If failed implicit typing
or CHARACTER*(*) arg, after calling ffesymbol_error, don't
reset info to ENTITY/DUMMY, because ffecom_sym_transform_
doesn't expect such a thing with ANY/ANY type.
* target.h (*logical*): Change some of these so they parallel
changes in com.c, e.g. for _eqv_, use (l)==(r) instead of
!!(l)==!!(r), to get a more faithful result.
Fri Oct 27 07:06:59 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_sym_transform_): Simplify code for local
EQUIVALENCE case.
* expr.c (ffeexpr_exprstack_push_unary_): Warn about two
successive operators.
(ffeexpr_exprstack_push_binary_): Warn about "surprising"
operator precedence, as in "-2**2".
* lang-options.h: Add -W(no-)surprising options.
* parse.c (yyparse): Don't reset -fpedantic if not -pedantic.
* top.c (ffe_decode_option): Support new -Wsurprising option.
* top.h: Ditto.
Mon Oct 23 09:14:15 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_finish_symbol_transform_): Don't transform
NONE/NONE (CHARACTER*(*)) vars, as these don't mean anything
in debugging terms, and can't be turned into anything
in the back end (so ffecom_sym_transform_ crashes on them).
* com.c (ffecom_expr_): Change strategy for assignp variant
of opSYMTER case...always return the original var unless
it is not wide enough.
* ste.c (ffeste_io_cilist_): Clarify diagnostic for ASSIGN
involving too-narrow variable. This shouldn't happen, though.
(ffeste_io_icilist_): Ditto.
(ffeste_R838): Ditto.
(ffeste_R839): Ditto.
Thu Oct 19 03:21:20 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_sym_transform_assign_): Set TREE_STATIC
using the same decision-making process as used for their twin
variables, so ASSIGN can last across RETURN/CALL as appropriate.
Fri Sep 22 20:21:18 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Makefile.in: fini is a host program, so it needs a host-compiled
version of proj.o, named proj-h.o. f/fini, f/fini.o, and
f/proj-h.o targets updated accordingly.
* com.c (__eprintf): New function.
Wed Sep 20 02:26:36 1995 Craig Burley (burley@gnu.ai.mit.edu)
* lang-options.h: Add omitted -funix-intrinsics-* options.
* malloc.c (malloc_find_inpool_): Check for infinite
loop, crash if detected (user reports encountering
them in some large programs, this might help track
down the bugs).
Thu Sep 7 13:00:32 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (lang_print_error_function): Don't dereference null
pointer when outside any program unit.
(ffecom_let_char_, ffecom_arg_ptr_to_expr): If catlist
item or length ever error_mark_node, don't continue processing,
since back-end functions like build_pointer_type crash on
error_mark_node's (due to pushing bad obstacks, etc.).
Wed Aug 30 15:58:35 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.16 released.
Mon Aug 28 12:24:20 1995 Craig Burley (burley@gnu.ai.mit.edu)
* bad.c (ffebad_finish): Fix botched message when no places
are printed (due to unknown line info, etc.).
* std.c (ffestd_subr_labels_): Do a better job finding
line info in the case of typeANY and diagnostics.
Fri Aug 25 15:19:29 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (DECL_ARTIFICIAL): Surround all references to this
macro with #if !BUILT_FOR_270 and #endif.
(init_lex): Surround print_error_function decl with
#if !BUILT_FOR_270 and #endif.
(lang_init): Call new ffelex_hash_kludge function to solve
problem with preprocessed files that have INCLUDE statements.
* lex.c (ffelex_getc_): New function.
(ffelex_cfelex_): Use ffelex_getc_ instead of getc in any
paths of code that can be affected by ffelex_hash_kludge.
Don't make an EOF token for unrecognized token; set token
to NULL instead, to avoid problems when not initialized.
(ffelex_hash_): Use ffelex_getc_ instead of getc in any
paths of code that can be affected by ffelex_hash_kludge.
Test token returned by ffelex_cfelex_ for NULL, meaning
unrecognized token.
Get rid of useless used_up variable.
Don't do ffewhere stuff or kill any tokens if in
ffelex_hash_kludge.
(ffelex_file_fixed, ffelex_file_free): Use ffelex_getc_
instead of getc in any paths of code that can be affected
by ffelex_hash_kludge.
(ffelex_hash_kludge): New function.
* lex.h (ffelex_hash_kludge): New function.
Wed Aug 23 15:17:40 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c: Implement -f(no-)underscoring options by always
compiling in code to do it, and having that code inhibit
itself when -fno-underscoring is in effect. This option
overrides -f(no-)f2c for this purpose; -f(no-)f2c returns
to it's <=0.5.15 behavior of affecting only how code
is generated, not how/whether names are mangled.
* target.h: Redo specification of appending underscores so
the macros are named "_default" instead of "_is" and the
two-underscore macro defaults to 1.
* top.c, top.h (underscoring): Add appropriate stuff
for the -f(no-)underscoring options.
Tue Aug 22 10:25:01 1995 Craig Burley (burley@gnu.ai.mit.edu)
* bad.c (ffebad_finish): Call report_error_function (in toplev.c)
to better identify location of problem.
Say "(continued):" instead of "(continued:)" for consistency.
* com.c (ffecom_gen_sfuncdef_): Set and reset new
ffecom_nested_entry_ variable to hold ffesymbol being compiled.
(lang_print_error_function): New function from toplev.c.
Use ffecom_nested_entry_ to help determine which name
and kind-string to print.
(ffecom_expr_intrinsic_): Handle EXIT and FLUSH invocations
with different calling sequences than library functions.
Have SIGNAL and SYSTEM push and pop calltemps, and convert
their return values to the destination type (just in case).
(FFECOM_rttypeINT_): New return type for `int', in case
gcc/f/runtime/libF77/system_.c(system_) is really supposed
to return `int' instead of `ftnint'.
* com.h (report_error_function): Declare this.
* equiv.c (ffeequiv_layout_local_): Don't forget to consider
root variable itself as possible "first rooted variable",
else might never set symbol and then crash later.
* intrin.c (ffeintrin_check_exit_): Change to allow no args
and rename to ffeintrin_check_int_1_o_ for `optional'.
#define ffeintrin_check_exit_ and _flush_ to this new
function, so intrin.def can refer to the appropriate names.
* intrin.def (FFEINTRIN_impFLUSH): Validate using
ffeintrin_check_flush_ so passing an INTEGER arg is allowed.
* lex.c (ffelex_file_push_, ffelex_file_pop_): New functions
to manage input_file_stack in gbe.
(ffelex_hash_): Call new functions (instead of doing code).
(ffelex_include_): Call new functions to update stack for
INCLUDE (_hash_ handles cpp output of #include).
Mon Aug 21 08:09:04 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Makefile.in: Put `-W' in front of every `-Wall', since
2.7.0 requires that to engage `-Wunused' for parameters.
* com.c: Mark all parameters as artificial, so
`-W -Wunused' doesn't complain about unused ones (since
there's no way right not to individually specify attributes
like `unused').
* proj.h: Don't #define UNUSED if already defined, regardless
of host compiler.
Sun Aug 20 16:03:56 1995 Craig Burley (burley@gnu.ai.mit.edu)
* gbe/2.7.0.diff: Regenerate.
* lang-options.h, lang-specs.h: If not __STDC__ (ANSI C),
avoid doing anything, especially the stringizing in -specs.h.
Thu Aug 17 03:36:12 1995 Craig Burley (burley@gnu.ai.mit.edu)
* lang-specs.h: Remove useless optional settings of -traditional,
since -traditional is always set anyway.
Wed Aug 16 16:56:46 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Make-lang.in (F2C_INSTALL_FLAG, F2CLIBOK): More
control over whether to install f2c-related stuff.
(install-f2c-*): New targets to install f2c-related
stuff in system, not just gcc, directories.
* com.c: Change calls to ffecom_get_invented_identifier
to use generally more predictable names.
Change calls to build_range_type to ensure consistency
of types of operands.
(ffecom_get_external_identifier_): Change to accept
symbol info, not just text, so it can use f2c flag for
symbol to decide whether to append underscore(s).
(ffecom_get_identifier_): Don't change names if f2c flag
off for compilation.
(ffecom_type_permanent_copy_): Use same type for new max as
used for min.
(ffecom_notify_init_storage): Offline fixups for stand-alone.
* data.c (ffedata_gather): Explicitly test for common block,
since it's no longer always the case that a local EQUIVALENCE
group has no symbol ptr (it now can, if a user-predictable
"rooted" symbol has been identified).
* equiv.c: Add some debugging stuff.
(ffeequiv_layout_local_): Set symbol ptr with user-predictable
"rooted" symbol, for giving the invented aggregate a
predictable name.
* g77.c (append_arg): Allow for 20 extra args instead of 10.
(main): For version-only case, add `-fnull-version' and, unless
explicitly omitted, `-lf2c -lm'.
* lang-options.h: New "-fnull-version" option.
* lang-specs.h: Support ".fpp" suffix for preprocessed source
(useful for OS/2, MS-DOS, other case-insensitive systems).
* stc.c (ffestc_R544_equiv_): Swap way lists are merged so this
is consistent with the order in which lists are built, making
user predictability of invented aggregate name much higher.
* storag.c, storag.h (FFESTORAG_typeDUMMY): Delete this enum.
* top.c: Accept, but otherwise ignore, `-fnull-version'.
Tue Aug 15 07:01:07 1995 Craig Burley (burley@gnu.ai.mit.edu)
* DOC, INSTALL, PROJECTS: Extensive improvements to documentation.
Sun Aug 13 01:55:18 1995 Craig Burley (burley@gnu.ai.mit.edu)
* INSTALL (f77-install-ok): Document the use of this file.
* Make-lang.in (F77_INSTALL_FLAG): New flag to control
whether to install an `f77' command (based on whether
a file named `f77-install-ok' exists in the source or
build directory) to replace the broken attempt to use
comment lines to avoid installing `f77' (broken in the
sense that it prevented installation of `g77').
Mon Aug 7 06:14:26 1995 Craig Burley (burley@gnu.ai.mit.edu)
* DOC: Add new sections for g77 & gcc compiler options,
source code form, and types, sizes and precisions.
Remove lots of old "delta-version" info, or at least
summarize it.
* INSTALL: Add info here that used to be in DOC.
Other changes.
* g77.c (lookup_option, main): Check for --print-* options,
so we avoid adding version-determining stuff.
Wed Jul 26 15:51:03 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Make-lang.in, Makefile.in (input.j, INPUT_H): New file.
Update dependencies accordingly.
* bad.c (ffebad_here): Okay to use unknown line/col.
* compilers.h (@f77-cpp-input): Remove -P option now that
# directives are handled by f771. Update other options
to be more consistent with @c in gcc/gcc.c. Don't run f771
if -E specified, etc., a la @c.
(@f77): Don't run f771 if -E specified, etc., a la @c.
* config-lang.in: Avoid use of word "guaranteed".
* input.j: New file to wrap around gcc/input.h.
* lex.j: Add support for parsing # directives output by cpp.
(ffelex_cfebackslash_): New function.
(ffelex_cfelex_): New function.
(ffelex_get_directive_line_): New function.
(ffelex_hash_): New function.
(ffelex_include_): Change to not use ffewhere_file_(begin|end).
Also fix bug in pointing to next line (for diagnostics, &c)
following successful INCLUDE.
(ffelex_next_line_): New function that does chunk of code
seen in several places elsewhere in the lexers.
(ffelex_file_fixed): Delay finishing statement until source
line is registered with ffewhere, so INCLUDE processing
picks up the info correctly.
Okay to kill or use unknown line/col objects now.
Handle HASH (#) lines.
Reorder tests for insubstantial lines to put most frequent
occurrences at top, for possible minor speedup.
Some general consolidation of code.
(ffelex_file_free): Handle HASH (#) lines.
Okay to kill or use unknown line/col objects now.
Some general consolidation of code.
(ffelex_init_1): Detect HASH (#) lines.
(ffelex_set_expecting_hollerith): Okay to kill or use unknown
line/col objects now.
* lex.h (FFELEX_typeHASH): New enum.
* options-lang.h (-fident, -fno-ident): New options.
* stw.c (ffestw_update): Okay to kill unknown line/col objects
now.
* target.h (FFETARGET_okREALQUAD, FFETARGET_okCOMPLEXDOUBLE,
FFETARGET_okCOMPLEXQUAD): #define these appropriately.
* top.c: Include flag.j wrapper, not flags.h directly.
(ffe_is_ident_): New flag.
(ffe_decode_option): Handle -fident and -fno-ident.
(ffe_file): Replace obsolete ffewhere_file_(begin|end) with
ffewhere_file_set.
* top.h (ffe_is_ident_, ffe_is_ident, ffe_set_is_ident):
New flag and access functions.
* where.c, where.h: Remove all tracking of parent file.
(ffewhere_file_begin, ffewhere_file_end): Delete these.
(ffewhere_line_use): Make it work with unknown line object.
Mon Jul 17 03:04:09 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_sym_transform_): Set DECL_IN_SYSTEM_HEADER
flag for any local vars used as stmtfunc dummies or DATA
implied-DO iter vars, so no -Wunused warnings are produced
for them (a la f2c).
(ffecom_init_0): Do "extern int xargc;" for IARGC() intrinsic.
Warn if target machine not 32 bits, since g77 isn't yet
working on them at all well.
* expr.c (ffeexpr_sym_lhs_call_, ffeexpr_sym_lhs_data_,
ffeexpr_sym_lhs_extfunc_, ffeexpr_sym_rhs_actualarg_,
ffeexpr_sym_rhs_let_, ffeexpr_paren_rhs_let_): Don't
gratuitously set attr bits that don't apply just
to avoid null set meaning error; instead, use explicit
error flag, and allow null attr set, to
fix certain bugs discovered by looking at this code.
* g77.c: Major changes to improve support for gcc long options,
to make `g77 -v' report more useful info, and so on.
Mon Jul 3 14:49:16 1995 Craig Burley (burley@gnu.ai.mit.edu)
* DOC, com.c, intrin.h, intrin.c, intrin.def, target.h, top.c,
top.h: Add new `unix' group of intrinsics, which includes the
newly added ERF, ERFC, EXIT, plus even newer ABORT, DERF, DERFC,
FLUSH, GETARG, GETENV, SIGNAL, and SYSTEM.
Tue Jun 27 23:01:05 1995 Craig Burley (burley@gnu.ai.mit.edu)
* bld.c, bld.h (ffebld_constant_pool,
ffebld_constant_character_pool): Use a single macro (the
former) to access the pool for allocating constants, instead
of latter in public and FFEBLD_CONSTANT_POOL_ internally
in bld.c (which was the only one that was correct before
these changes). Add verification of integrity of certain
heap-allocated areas.
* com.c (ffecom_overlap_, ffecom_args_overlap_,
ffecom_tree_canonize_ptr_, ffecom_tree_canonize_ref_): New
functions to optimize calling COMPLEX and, someday, CHARACTER
functions requiring additional argument to be passed.
(ffecom_call_, ffecom_call_binop_, ffecom_expr_,
ffecom_expr_intrinsic_): Change calling
sequences to include more info on possible destination.
(ffecom_expr_intrinsic_): Add ERF(), ERFC(), and EXIT()
intrinsic code.
(ffecom_sym_transform_): For assumed-size arrays, set high
bound to highest possible value instead of low bound, to
improve validity of overlap checking.
(duplicate_decls): If olddecl and newdecl are the same,
don't do any munging, just return affirmative.
* expr.c: Change ffecom_constant_character_pool() to
ffecom_constant_pool().
* info.c (ffeinfo_new): Compile this version if not being
compiled by GNU C.
* info.h (ffeinfo_new): Don't define macro if not being
compiled by GNU C.
* intrin.c, intrin.def: Add ERF(), ERFC(), and EXIT() intrinsics.
(ffeintrin_check_exit_): New for EXIT() subroutine intrinsic.
* malloc.c, malloc.h (malloc_verify_*): New functions to verify
integrity of heap-storage areas.
* stc.c (ffestc_R834, ffestc_R835): Handle possibility that
an enclosing DO won't have a construct name even when the
CYCLE/EXIT does (i.e. without dereferencing NULL).
* target.c, target.h (ffetarget_verify_character1): New function
to verify integrity of heap storage used to hold character constant.
Thu Jun 22 15:36:39 1995 Howard Gordon (flash@super.org)
* stp.h (ffestpVxtcodeIx): Fix typo in typedef for this.
Mon May 29 15:22:31 1995 Craig Burley (burley@gnu.ai.mit.edu)
* *: Make all sorts of changes to accommodate upcoming gcc-2.7.0.
I didn't keep track of them, nor just when I made them, nor
when I (much later, probably in early August 1995) modified
them so they could properly handle both 2.7.0 and 2.6.x.
* com.c (ffecom_expr_power_integer_): Don't expand_start_stmt_expr
if transforming dummy args, because the back end cannot handle
that (it's rejected by the gcc front end), just generate
call to run-time library.
Back out changes in 0.5.15 because more temporaries might be
needed anyway (for COMPLEX**INTEGER).
(ffecom_push_tempvar): Remove inhibitor.
Around start_decl and finish_decl (in particular, arround
expand_decl, which is called by them), push NULL_TREE into
sequence_rtl_expr, an external published by gcc/function.c.
This makes sure the temporary is truly in the function's
context, not the inner context of a statement-valued expression.
(I think the back end is inconsistent here, but am not
interested in convincing the gbe maintainers about this now.)
(pushdecl): Make sure that when pushing PARM_DECLs, nothing
other than them are pushed, as happened for 0.5.15 and which,
if done for other reasons not fixed here, might well indicate
some other problem -- so crash if it happens.
* equiv.c (ffeequiv_layout_local_): If the local equiv group
has a non-nil COMMON field, it should mean that an error has
occurred and been reported, so just trash the local equiv
group and do nothing.
* stc.c (ffestc_promote_sfdummy_): Set sfdummy arg state to
UNDERSTOOD so above checking for duplicate args actually
works, and so we don't crash later in pushdecl.
* ste.c (ffeste_R1001): Set initial value only for VAR_DECLs,
not for, e.g., LABEL_DECLs, which the FORMAT label can be
if it was previously treated as an executable label.
Sat May 20 01:53:53 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_sym_transform_): For adjustable arrays,
pass high bound through variable_size in case its primaries
are changed (dumb0.f, and this might also improve
performance so it approaches f2c|gcc).
Fri May 19 11:00:36 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.15 released.
* com.c (ffecom_expr_power_integer_): Push temp vars
before expanding a statement expression, since that seems
to cause temp vars to be "forgotten" after the end of the
expansion in the back end. Disallow more temp-var
pushing during such an expansion, just in case.
(ffecom_push_tempvar): Crash if a new variable needs to be
pushed but cannot be at this point (should never happen).
Wed May 17 12:26:16 1995 Craig Burley (burley@gnu.ai.mit.edu)
* expr.c (ffeexpr_collapse_convert): Add code to convert
LOGICAL to CHARACTER. Reject conversion of REAL or COMPLEX
to CHARACTER entirely, as it cannot be supported with all
configurations.
* target.h, target.c (ffetarget_convert_character1_logical1):
New function.
Sun May 14 00:00:09 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_do_entry_, ffecom_gen_sfuncdef_,
ffecom_start_progunit_, ffecom_sym_transform_,
ffecom_init_0, start_function): Changes to have REAL
external functions return same type as DOUBLE PRECISION
external functions when -ff2c is in force; while at it,
some code cleanups done.
* stc.c (ffestc_R547_item_object): Disallow array declarator
if one already exists for symbol.
* ste.c (ffeste_R1227): Convert result variable to type
of function result as seen by back end (e.g. for when REAL
external function actually returns result as double).
* target.h (FFETARGET_defaultFIXED_LINE_LENGTH): New
macro for default for -ffixed-line-length-N option.
* top.c (ffe_fixed_line_length_): Initialize this to new
target.h macro instead of constant 72.
Tue May 9 01:20:03 1995 Craig Burley (burley@gnu.ai.mit.edu)
* lex.c (ffelex_send_token_): If sending CHARACTER token with
null text field, put a single '\0' in it and set length/size
fields to 0 (to fix 950508-0.f).
(ffelex_image_char_): When setting ffelex_bad_line_ to TRUE,
always "close" card image by appending a null char and setting
ffelex_card_length_. As part of this, append useful text
to identify the two kinds of problems that involve this.
(ffelex_file_fixed): Reset ffelex_bad_line_ to FALSE after
seeing a line with invalid first character (fixes 950508-1.f).
If final nontab column is zero, assume tab seen in line.
(ffelex_card_image_): Always make this array 8 characters
longer than reflected by ffelex_card_size_.
(ffelex_init_1): Get final nontab column info from top instead
of assuming 72.
* options-lang.h: Add -ffixed-line-length- prefix.
* top.h: Add ffe_fixed_line_length() and _set_ version, plus
corresponding extern.
* top.c: Handle -ffixed-line-length- option prefix.
Fri Apr 28 05:40:25 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.14 released.
* Make-lang.in: Add assert.j.
* Makefile.in: Add assert.j.
* assert.j: New file.
Thu Apr 27 16:24:22 1995 Craig Burley (burley@gnu.ai.mit.edu)
* bad.h (ffebad_severity): New function.
* bad.c (ffebad_severity): New function.
* bad.def (FFEBAD_OPEN_INCLUDE): Change severity from SEVERE
to FATAL, since processing continues, and that seems fine.
* com.c: Add facility to handle -I.
(ffecom_file, ffecom_close_include, ffecom_open_include,
ffecom_decode_include_option): New global functions for -I.
(ffecom_file_, ffecom_initialize_char_syntax_,
ffecom_close_include_, ffecom_decode_include_option_,
ffecom_open_include_, append_include_chain, open_include_file,
print_containing_files, read_filename_string, file_name_map,
savestring): New internal functions for -I.
* compilers.h: Pass -I flag(s) to f771 (via "%{I*}").
* lex.c (ffelex_include_): Call ffecom_close_include
to close include file, for its tracking needs for -I,
instead of using fclose.
* options-lang.h: Add -I prefix.
* parse.c (yyparse): Call ffecom_file for main input file,
so -I handling works (diagnostics).
* std.c (ffestd_S3P4): Have ffecom_open_include handle
opening and diagnosing errors with INCLUDE files.
* ste.c (ffeste_begin_iterdo_): Use correct algorithm for
calculating # of iterations -- mathematically similar but
computationally different algorithm was not handling cases
like "DO I=6,5,2" correctly, because (5-6)/2+1 => 1, not 0.
* top.c (ffe_decode_option): Allow -I, restructure a bit
for clarity and, maybe, speed.
Mon Apr 17 13:31:11 1995 Craig Burley (burley@gnu.ai.mit.edu)
* g77.c: Remove -lc, turns out not all systems has it, but
leave other changes in for clarity of code.
Sun Apr 16 21:50:33 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_expr_): Implement ARRAY_EXPR as INDIRECT_REF
of appropriate PLUS_EXPRs of ptr_to_expr of array, to see
if this generates better code. (Conditional on
FFECOM_FASTER_ARRAY_REFS.)
Sun Apr 16 00:22:48 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Make-lang.in (F77_SRCS): Remove g77.c, since it doesn't
contribute to building f771.
* Makefile.in (dircheck): Remove/replace with f/Makefile, because
phony targets that are referenced in other real targets get run
when those targets are specified, which is a waste of time (e.g.
when rebuilding and only g77.c has changed, f771 was being linked
anyway).
* g77.c: Include -lc between -lf2c and -lm throughout.
* implic.c (ffeimplic_establish_symbol): If -Wimplicit, warn if
implicit type given to symbol.
* lex.c (ffelex_include_): Don't gratuitously increment line
number here.
* top.h, top.c (ffe_is_warn_implicit_): New global variable and
related access macros.
(ffe_decode_option): Handle -W options, including -Wall and
-Wimplicit.
* where.c (ffewhere_line_new): Don't muck with root line (was
crashing on null input since lexer changes over the past week
or so).
Thu Apr 13 16:48:30 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_init_0): Register built-in functions for cos,
sin, and sqrt.
(ffecom_tree_fun_type_double): New variable.
(ffecom_expr_intrinsic_): Update f2c input and output files
to latest version of f2c (no important g77-related changes
noted, just bug fixes to f2c and such).
(builtin_function): New function from c-decl.c.
* com-rt.def: Refer to built-in functions for cos, sin, and sqrt.
Thu Apr 13 10:25:09 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_expr_intrinsic_): Convert 0. to appropriate
type to keep DCMPLX(I) from crashing the compiler.
(ffecom_expr_): Don't convert result from ffecom_tree_divide_.
(ffecom_tree_divide_): Add tree_type argument, have all callers
pass one, and don't convert right-hand operand to it (this is
to make this new function work as much like the old in-line
code used in ffecom_expr_ as possible).
* lex.c: Maintain lineno and input_filename the way the gcc
lexer does.
* std.c (ffestd_exec_end): Save and restore lineno and
input_filename around the second pass, which sets them
appropriately for each saved statement.
Wed Apr 12 09:44:45 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_expr_power_integer_): New function.
(ffecom_expr_): Call new function for power op with integer second
argument, for generating better code. Also replace divide
code with call to new ffecom_tree_divide_ function.
Canonicalize calls to ffecom_truth_value(_invert).
(ffecom_tree_divide_): New function.
Wed Apr 5 14:15:44 1995 Craig Burley (burley@gnu.ai.mit.edu)
* lex.c: Change to allocate text for tokens only when actually
needed, which should speed compilation up somewhat.
Change to allow INCLUDE at any point where a statement
can end, i.e. in ffelex_finish_statement_ or when a SEMICOLON
token is sent.
Remove some old, obsolete code.
Clean up layout of entire file to improve formatting,
readability, etc.
(ffelex_set_expecting_hollerith): Remove include argument.
Fri Mar 31 23:19:08 1995 Craig Burley (burley@gnu.ai.mit.edu)
* bad.h, bad.c (ffebad_start_msg, ffebad_start_msg_lex):
New functions to generate arbitrary messages.
(FFEBAD_severityPEDANTIC): New severity, to correspond
to toplev's pedwarn() function.
* lex.c (ffelex_backslash_): New function to implement
backslash processing.
(ffelex_file_fixed, ffelex_file_free): Implement new
backslash processing.
* std.c (ffestd_R1001dump_): Don't assume CHARACTER and
HOLLERITH tokens stop at '\0' characters, now that backslash
processing is supported -- use their advertised lengths instead,
and double up the '\002' character for libf2c.
Mon Mar 27 17:10:33 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_init_local_zero_): Implement -finit-local-zero.
(ffecom_sym_transform_): Same.
(ffecom_transform_equiv_): Same.
* options-lang.h: Add -f(no-)(init-local-zero,backslash,ugly-init).
* stb.c (ffestb_V020): Reject "TYPEblah(...", which might be
an array assignment.
* target.h, top.h, top.c: Implement -finit-local-zero.
Fri Mar 24 19:56:22 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Make-lang.in, Makefile.in: Remove conf-proj(.in) and
proj.h(.in) rules, plus related config.log, config.cache,
and config.status stuff.
* com.c (ffecom_init_0): Change messages when atof(), bsearch(),
or strtoul() do not work as expected in the start-up test.
* conf-proj, conf-proj.in: Delete.
* lex.c (ffelex_file_fixed): Allow f2c's '&' in column 1
to mean continuation line.
* options-lang.h: New file, #include'd by ../toplev.c.
* proj.h.in: Rename back to proj.h.
* proj.h (LAME_ASSERT): Remove.
(LAME_STDIO): Remove.
(NO_STDDEF): Remove.
(NO_STDLIB): Remove.
(NO_BSEARCH): Remove auto detection, rename to !FFEPROJ_BSEARCH.
(NO_STRTOUL): Remove auto detection, rename to !FFEPROJ_STRTOUL.
(USE_HOST_LIMITS): Remove (maybe still needed by stand-alone?).
(STR, STRX): Do only ANSI C definitions.
Mon Mar 13 10:46:13 1995 Craig Burley (burley@gnu.ai.mit.edu)
* BUGS: Add item about g77 requiring gcc to compile it.
* NEWS: New file listing user-visible changes in the release.
* PROJECTS: Update to include a new item or two, and modify
or delete items that are addressed in this or previous releases.
* bad.c (ffebad_finish): Don't crash if missing string &c,
just substitute obviously distressed string "[REPORT BUG!!]"
for cases where the message/caller are fudgy.
* bad.def: Clean up error messages in a major way, add new ones
for use by changes in target.c.
* com.c (ffecom_expr_): Handle opANY in opCONVERT.
(ffecom_let_char_): Disregard destinations with ERROR_MARK.
(ffecom_1, ffecom_1_fn, ffecom_2, ffecom_2s, ffecom_3,
ffecom_3s, &c): Check all inputs for error_mark_node.
(ffecom_start_progunit_): Don't transform all symbols
in BLOCK DATA, since it never executes, and it is silly
to, e.g., generate all the structures for NAMELIST.
(ffecom_char_length_expr_): Rename to ffecom_intrinsic_len_.
(ffecom_intrinsic_ichar_): New function to handle ICHAR of
arbitrary expression with possible 0-length operands.
(ffecom_expr_intrinsic_): Use ffecom_intrinsic_char_.
For MVBITS, set tree_type to void_type_node.
(ffecom_start_progunit_): Name master function for entry points
after primary entry point so users can easily guess it while
debugging.
(ffecom_arg_ptr_to_expr): Change treatment of Hollerith,
Typeless, and %DESCR.
(ffecom_expr_): Change treatment of Hollerith.
* data.c (ffedata_gather_): Handle opANY in opCONVERT.
* expr.c (ffeexpr_token_apostrophe_): Issue FFEBAD_NULL_CHAR_CONST
warning as necessary.
(ffeexpr_token_name_rhs_): Set context for args to intrinsic
so that assignment-like concatenation is allowed for ICHAR(),
IACHAR(), and LEN() intrinsics.
(ffeexpr_reduced_*_): Say "an array" instead of "an entity" in
diagnostics, since it's more informative.
(ffeexpr_finished_): For many contexts, check for null expression
and array before trying to do a conversion, to avoid redundant
diagnostics.
* g77.1: Fix typo for preprocessed suffix (.F, not .f).
* global.c (ffeglobal_init_common): Warn if initializing
blank common.
(ffeglobal_pad_common): Enable code to warn if initial
padding needed.
(ffeglobal_size_common): Complain if enlarging already-
initialized common, since it won't work right anyway.
* intrin.c: Add IMAG() intrinsic.
(ffeintrin_check_loc_): Allow opSUBSTR in LOC().
* intrin.def: Add IMAG() intrinsic.
* lex.c: Don't report FFEBAD_NULL_CHAR_CONST errors.
* sta.c, sta.h, stb.c: Changes to clean up error messages (see
bad.def).
* stb.c (ffestb_R100113_): Issue FFEBAD_NULL_CHAR_CONST
warning as necessary.
* stc.c (ffestc_shriek_do_): Don't try to reference doref_line
stuff in ANY case, since it won't be valid.
(ffestc_R1227): Allow RETURN in main program unit, with
appropriate warnings/errors.
(ffestc_subr_format_): Array of any type is a CHAREXPR (F77 C5).
* ste.c (ffeste_begin_doiter_): Couple of fixes to accurately
determine if loop never executes.
* target.c (ffetarget_convert_*_hollerith_): Append spaces,
not zeros, to follow F77 Appendix C, and to warn when
truncation of non-blanks done.
(ffetarget_convert_*_typeless): Rewrite to do typeless
conversions properly, and warn when truncation done.
(ffetarget_print_binary, ffetarget_print_octal,
ffetarget_print_hex): Rewrite to use new implementation of
typeless.
(ffetarget_typeless_*): Rewrite to use new implementation
of typeless, and to warn about overflow.
* target.h (ffetargetTypeless): New implementation of
this type.
* type.h, type.c (ffetype_size_typeless): Remove (incorrect)
implementation of this function and its extern.
Sun Mar 5 18:46:42 1995 Craig Burley (burley@gnu.ai.mit.edu)
* BUGS: Clarify that constant handling would also fix lack of
adequate IEEE-754/854 support to some degree, and typeless
and non-decimal constants.
* com.c (ffecom_type_permanent_copy_): Comment out to avoid
warnings.
(duplicate_decls): New function a la gcc/c-decl.c.
(pushdecl): Use duplicate_decls to decide whether to return
existing decl or new one, instead of always returning existing
decl.
(ffecom_expr_): opPERCENT_LOC now supports CHARACTER arguments.
(ffecom_init_0): Give f2c I/O code 0 for basictypeANY/kindtypeANY.
(ffecom_sym_transform_): For adjustable arrays, pass low bound
through variable_size in case its primaries are changed (950302-1.f).
* com.h: More decls that belong in tree.h &c.
* data.c (ffedata_eval_integer1_): Fix opPAREN case to not
treat value of expression as an error code.
* expr.c (ffeexpr_finished_): Allow opSUBSTR in contextLOC case.
* proj.c: Add "const" as appropriate.
Mon Feb 27 10:04:03 1995 Craig Burley (burley@gnu.ai.mit.edu)
* bad.def (FFEBAD_BAD_SUBSTR): Fix bad grammar in message.
Fri Feb 24 16:21:31 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.13 released.
* INSTALL: Warn that f/zzz.o will compare differently between
stages, since it puts the __TIME__ macro into a string.
* com.c (ffecom_sym_transform_): Transform kindFUNCTION/whereDUMMY
to pointer-to-function, not function.
(ffecom_expr_): Use ffecom_arg_ptr_to_expr instead of
ffecom_char_args_ to handle comparison between CHARACTER
types, so either operand can be a CONCATENATE.
(ffecom_transform_common_): Set size of initialized common area
to global (largest-known) size, even though size of init might
be smaller.
* equiv.c (ffeequiv_offset_): Check symbol info for ANY.
* expr.c (ffeexpr_find_close_paren_, ffeexpr_nil_*): New functions
to handle following the contour of a rejected expression, so
statements like "PRINT(I,I,I)=0" don't cause the PRINT statement
code to get the second passed back to it as if there was a
missing close-paren before it, the comma causing the PRINT code
to confirm the statement, resulting in an ambiguity vis-a-vis
the let statement code.
Use the new ffecom_find_close_paren_ handler when an expected
close-paren is missing.
(ffeexpr_isdigits_): New function, use in all places that
currently use isdigit in repetitive code.
(ffeexpr_collapse_symter): Collapse to ANY if init-expr is ANY,
so as to avoid having symbol get "transformed" if used to
dimension an array.
(ffeexpr_token_real_, ffeexpr_token_number_real_): Don't issue
diagnostic about exponent, since it'll be passed along the
handler path, resulting in a diagnostic anyway.
(ffeexpr_token_apos_char_): Use consistent handler path
regardless of whether diagnostics inhibited.
(ffeexpr_token_name_apos_name_): Skip past closing quote/apos
even if not a match or other diagnostic issued.
(ffeexpr_sym_impdoitem_): Exec-transition local SEEN symbol.
* lex.c (ffelex_image_char_): Set ffelex_saw_tab_ if TAB
seen, not if anything other than TAB seen!
* stc.c (ffestc_R537_item): If source is ANY but dest isn't,
set dest symbol's init expr to ANY.
(ffestc_R501_attrib, ffestc_R522, ffestc_R522start): Complain
about conflict between "SAVE" by itself and other uses of
SAVE only in pedantic mode.
* ste.c (ffeste_R1212): Fix loop over labels to always
increment caseno, to avoid pushcase returning 2 for duplicate
values when one of the labels is invalid.
Thu Feb 23 12:42:04 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.12 released.
* Make-lang.in (f77.install-common): Add "else true;" before outer
"fi" per Makefile.in patch.
* Makefile.in (dircheck): Add "else true;" before "fi" per
patch from chs1pm@surrey.ac.uk.
* com.c (ffecom_push_tempvar): If type desired is ERROR_MARK,
return error_mark_node, to avoid crash that results from
making a VAR_DECL with error_mark_node as its type.
* ste.c (ffeste_begin_iterdo_): Convert itercount to INTEGER
anytime calculation of number of iterations ends up with type
other than INTEGER (e.g. DOUBLE PRECISION, REAL).
Thu Feb 23 02:48:38 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.11 released.
* DOC: Explain -fugly-args.
* bad.def (FFEBAD_ACTUALARG): Explain -fugly-args and how to
rewrite code to not require it.
* com.c (ffecom_vardesc_): Handle negative type code, just in
case.
(ffecom_arg_ptr_to_expr): Let ffecom_expr handle hollerith
and typeless constants (move code to ffecom_constantunion).
(ffecom_constantunion): Handle hollerith and typeless constants.
* expr.c (ffecom_finished_): Check -fugly-args in actual-arg
context where hollerith/typeless provided.
* intrin.def (FFEINTRIN_genDFLOAT): Add FFEINTRIN_specDFLOAT.
(FFEINTRIN_specDFLOAT): Add as f2c intrinsic.
* target.h (ffetarget_convert_real[12]_integer,
ffetarget_convert_complex[12]_integer): Pass -1 for high integer
value if low part is negative.
(FFETARGET_defaultIS_UGLY_ARGS): New macro.
* top.c (ffe_is_ugly_args_): New variable.
(ffe_decode_option): Handle -fugly-args and -fno-ugly-args.
* top.h (ffe_is_ugly_args_, ffe_is_ugly_args(),
ffe_set_is_ugly_args()): New variable and macros.
Thu Feb 23 02:48:38 1995 Pedro A M Vazquez (vazquez@iqm.unicamp.br)
* g77.c (sys_errlist): Use const for __FreeBSD__ systems
as well.
Wed Feb 22 13:33:43 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.10 released.
* CREDITS: Add Rick Niles.
* INSTALL: Note how to get around lack of makeinfo.
* Make-lang.in (f/proj.h): Remove # comment.
* Makefile.in (f/proj.h): Remove # comment.
* com.c (ffecom_expr_): Simplify opFUNCREF/opSUBRREF conversion.
(ffecom_sym_transform_): For whereGLOBAL and whereDUMMY
kindFUNCTION, use ffecom_tree_fun_type[][] only for non-constant
(non-statement-function) f2c functions.
(ffecom_init_0): ffecom_tree_fun_type[][] and _ptr_to_*_* are
really f2c-interface arrays, so use base type void for COMPLEX
(like CHARACTER).
Tue Feb 21 19:01:18 1995 Dave Love <d.love@dl.ac.uk>
* Make-lang.in (f77.install-common): Expurgate the test for and
possible installation of f2c in line with elsewhere. Seems to have
been missing a semicolon anyhow!
Tue Feb 21 11:45:25 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.9 released.
* Make-lang.in (f/proj.h): touch file to register update,
because the previous commands won't necessarily modify it.
* Makefile.in (f/proj.h): touch file to register update,
because the previous commands won't necessarily modify it.
* Makefile.in (f/str-*.h, f/str-*.j): Explicitly specify
output file names, so these targets go in build, not source,
directory.
* bits.c, bits.h: Switch to valid ANSI C replacement for
ARRAY_ZERO.
* com.c (ffecom_expr_): Add assignp arg to support ASSIGN better.
If assignp is TRUE, use different tree for FFEBLD_opSYMTER case.
(ffecom_sym_transform_assign_): New function.
(ffecom_expr_assign): New function.
(ffecom_expr_assign_w): New function.
* com.c (ffecom_f2c_make_type_): Do make_signed_type instead
of make_unsigned_type throughout.
* com.c (ffecom_finish_symbol_transform_): Expand scope of
commented-out code to probably produce faster compiler code.
* com.c (ffecom_gen_sfuncdef_): Push/pop calltemps so
COMPLEX works right.
Remove obsolete comment.
* com.c (ffecom_start_progunit_): If non-multi alt-entry
COMPLEX function, primary (static) entry point returns result
directory, not via extra arg -- to agree with ffecom_return_expr
and others.
Pretransform all symbols so statement functions are defined
before any code emitted.
* com.c (ffecom_finish_progunit): Don't posttransform all
symbols here -- pretransform them instead.
* com.c (ffecom_init_0): Don't warn about possible ASSIGN
crash, as this shouldn't happen now.
* com.c (ffecom_push_tempvar): Fix to handle temp vars
pushed while context is a statement (nested) function, and
add appropriate commentary.
* com.c (ffecom_return_expr): Check TREE_USED to determine
where return value is unset.
* com.h (struct _ffecom_symbol_): Add note about length_tree
now being used to keep tree for ASSIGN version of symbol.
* com.h (ffecom_expr_assign, ffecom_expr_assign_rw): New decls.
(error): Add this prototype for back-end function.
* fini.c (main): Grab input, output, and include names
directly off the command line instead of making the latter
two out of the first.
* lex.c: Improve tab handling for both fixed and free source
forms, and ignore carriage-returns on input, while generally
improving the code. ffelex_handle_tab_ has been renamed and
reinvented as ffelex_image_char_, among other things.
* malloc.c, malloc.h: Switch to valid ANSI C replacement for
ARRAY_ZERO, and kill the full number of bytes in pools and
areas.
* proj.h.in (ARRAY_ZERO, ARRAY_ZERO_SIZE): Remove.
* ste.c (ffeste_io_cilist_, ffeste_io_icilist_, ffeste_R838,
ffeste_R839): Issue diagnostic if a too-narrow variable used in an
ASSIGN context despite changes to this code and code in com.c.
* where.c, where.h: Switch to valid ANSI C replacement for
ARRAY_ZERO.
Fri Feb 17 03:35:19 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.8 released.
* INSTALL: In quick-build case, list g77 target first so g77
gets installed. Also, explain that gcc gets built and installed
as well, even though this isn't really what we want (and maybe
we'll find a way around this someday).
Fri Feb 17 02:35:41 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.7 released.
* Makefile.in (CONFIG_H, HCONFIG_H, TCONFIG_H, TM_H): Remove
../ prefix in front of .h files, since they're in the cd.
Fri Feb 17 01:50:48 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.6 released.
Thu Feb 16 20:26:54 1995 Craig Burley (burley@gnu.ai.mit.edu)
* ../README.g77: Remove description of g77 as "not-yet-published".
* CREDITS: More changes.
* Make-lang.in (G77STAGESTUFF): Remove cktyps stuff.
* Makefile.in (CONFIG_H, HCONFIG_H, TCONFIG_H, TM_H): Don't
prefix gcc dir with $(srcdir) since these don't live there,
they are created in the build dir by gcc's configure. Add
a note explaining what these macros are about.
Update dependencies via deps-kinda.
* README.NEXTSTEP: Credit Toon, and per his request, add his
email address.
* com.h (FFECOM_DETERMINE_TYPES): #include "config.j".
* config.j, convert.j, flags.j, hconfig.j, rtl.j, tconfig.j,
tm.j, tree.j: Don't #include if already done.
* convert.j: #include "tree.j" first, as convert.h clearly depends
on trees being defined.
* rtl.j: #include "config.j" first, since there's some stuff
in rtl.h that assumes it has been #included.
* tree.j: #include "config.j" first, or real.h makes inconsistent
decision about return type of ereal_atof, leading to bugs, and
because tree.h/real.h assume config.h already included.
Wed Feb 15 14:40:20 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.5 released.
* Copyright notices updated to be FSF-style.
* INSTALL: Some more clarification regarding building just f77.
* Make-lang.in (F77_SRCS): Update wrt changing some .h to .j.
(install-libf77): Fix typo in new parenthetical note.
* Makefile.in (f/*.o): Update.
(CONFIG_H, CONVERT_H, FLAGS_H, GLIMITS_H, HCONFIG_H, RTL_H,
TCONFIG_H, TM_H, TREE_H): Update/new symbols.
(deps-kinda): More fixes wrt changing some .h to .j.
Document and explain this rule a bit better.
Accommodate changes in output of gcc -MM.
* *.h, *.c: Change #include's so proj.h not assumed to #include
malloc.h or config.h (now config.j), and so new .j files are
used instead of old .h ones.
* com.c (ffecom_init_0): Use FLOAT_TYPE_SIZE for f2c's
TYLONG/TYLOGICAL type codes, to get g77 working on Alpha.
* com.h: Make all f2c-related integral types "int", not "long
int".
* config.j, convert.j, flags.j, glimits.j, hconfig.j, rtl.j,
tconfig.j, tm.j, tree.j: New files wrapping around gbe
.h files.
* config.h, convert.h, flags.h, glimits.h, hconfig.h, rtl.h,
tconfig.h, tm.h, tree.h: Deleted so new .j files
can #include the gbe files directly, instead of using "../",
and thus do better with various kinds of builds.
* proj.h: Delete unused NO_STDDEF and related stuff.
Tue Feb 14 08:28:08 1995 Craig Burley (burley@gnu.ai.mit.edu)
* BUGS: Remove item #12, cross-compiling & autoconf scripts
reportedly expected to work properly (according to d.love).
* INSTALL: Add explanation of d.love's patch to config-lang.in.
Add explanation of how to install just g77 when gcc already installed.
Add note about usability of "-Wall". Add note about bug-
reporting.
* Make-lang.in ($(srcdir)/f/conf-proj): Add comment about why
conf-proj.out.
(install-libf77): Echo parenthetical note to user about how to do
just the (aborted) libf2c installation.
(deps-kinda): Update to work with new configuration/build stuff.
* bad.c (ffebad_finish): Put capitalized "warning:" &c message
as prefix on any diagnostic without pointers into source.
* bad.def (FFEBAD_TOO_BIG_INIT): Add this warning message.
* config-lang.in: Add Dave Love's patch to catch case where
back-end patches not applied and abort configuration.
* data.c (ffedata_gather_, ffedata_value_): Warn when about
to initialize a large aggregate area, due to design flaw resulting
in too much time/space used to handle such cases.
Use COMMON area name, and first notice of symbol, for multiple-
initialization diagnostic, instead of member symbol and unknown
location.
(FFEDATA_sizeTOO_BIG_INIT_): New macro per above.
Mon Feb 13 13:54:26 1995 Dave Love <d.love@dl.ac.uk>
* Make-lang.in (F77_SRCS): Use $(srcdir)/f/proj.h.in, not
$(srcdir)/f/proj.h for build outside srcdir.
Sun Feb 12 13:37:11 1995 Craig Burley (burley@gnu.ai.mit.edu)
* ../README.g77: Clarify procedures for unpacking, add asterisks
to mark important things the user must do.
* Fix dates in/add dates to ../README.g77, BUGS, CREDITS, DOC,
INSTALL, PROJECTS, README.
Sun Feb 12 00:26:10 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.4 released.
* Make-lang.in (f/proj.h): Reproduce this rule here from
Makefile.in.
($(srcdir)/f/conf-proj): Put autoconf's stdout in temp file
conf-proj.out, then mv to conf-proj only if successful, so
conf-proj not touched if autoconf not installed.
* Makefile.in ($(srcdir)/conf-proj): See Make-lang.in's similar
rule.
Sat Feb 11 20:56:02 1995 Craig Burley (burley@gnu.ai.mit.edu)
* BUGS: Clarify some bugs.
* DOC: Many improvements and fixes.
* README: Move bulk of text, edited, to ../README.g77, and
replace with pointer to that file.
* com.c (ffecom_init_0): Comment out warning about sizeof(ftnlen)
as per ste.c change. Add text about ASSIGN to help user understand
what is being warned about.
* conf-proj.in: Fix typos in comments.
* proj.h.in: Add ARRAY_ZERO_SIZE to parallel malloc.h's version,
in case it proves to be needed.
* ste.c: Comment out assertions requiring sizeof(ftnlen) >=
sizeof(char *), in the hopes that overflow will never happen.
(ffeste_R838): Change assertion to fatal() with at least
partially helpful message.
Sat Feb 11 12:38:00 1995 Craig Burley (burley@gnu.ai.mit.edu)
* com.c (ffecom_vardesc_): Crash if typecode is -1.
* ste.c (ffeste_io_dolio_): Crash if typecode is -1.
Sat Feb 11 09:51:57 1995 Craig Burley (burley@gnu.ai.mit.edu)
* ste.c: In I/O code tests for item arrayness, sort of revert
to much earlier code that tests original exp, but also check
in newer way just in case. Newer way alone treated FOO(1:40)
as an array, not sure why older way alone didn't work, but I
think maybe it was when diagnosed code was involved, and
since there are now checks for error_mark_node, maybe the old
way alone would work. But better to be safe; both original
ffebld exp _and_ the transformed tree must indicate an array
for the size-determination code to be used, else just 1/2 elements
assumed. And this text is for EMACS: (foo at bar).
Fri Feb 10 11:05:50 1995 Craig Burley (burley@gnu.ai.mit.edu)
* ste.c: In many cases, surround statement-expansion code
with ffecom_push_calltemps () and ffecom_pop_calltemps ()
so COMPLEX-returning functions can have temporaries pushed
in "auto-pop" mode and have them auto-popped at the end of
the statement.
Wed Feb 8 14:35:10 1995 Dave Love <d.love@dl.ac.uk>
* runtime/f2c.h.in (ftnlen, ftnint): Make same size as integer.
* runtime/libI77/err.c (f_init): Thinko in MISSING_FILE_ELEMS
conditional.
* runtime/libI77/wrtfmt.c (mv_cur): Likewise.
* runtime/libI77/wsfe.c (x_putc): Likewise.
* runtime/libF77/signal_.c (signal_): Return 0 (this is a
subroutine).
* Makefile.in (f/proj.h): Depend on com.h.
* Make-lang.in (include/f2c.h): Likewise (and proj.h).
(install-libf77): Also install f2c.h.
* runtime/libI77/Makefile.in (*.o): Add f2c.h dependency.
* runtime/libF77/Makefile.in: Likewise.
Wed Feb 8 13:56:47 1995 Craig Burley (burley@gnu.ai.mit.edu)
* stc.c (ffestc_R501_item): Don't reset kind/where to NONE when
setting basictype/kindtype info for symbol, or especially
its function/result twin, because kind/where might not be NONE.
Tue Feb 7 14:47:26 1995 Dave Love <d.love@dl.ac.uk>
* Make-lang.in (include/f2c.h:): Set shell variable src more
robustly (independent of whether srcdir is relative or absolute).
* Makefile.in (f/proj.h:): Likewise.
* conf-proj.in: Check need for LAME_ASSERT. Fix indentation in
check for LAME_STDIO (cosmetic only with ANSI C).
* com.h: Extra ...SIZE stuff taken from com.c.
* com.c (FFECOM_DETERMINE_TYPES): Define before including com.h.
(BITS_PER_WORD etc.) Remove and use conditional definitions to com.h.
* runtime/configure.in: #define FFECOM_DETERMINE_TYPES for com.h in
f2c type determination.
* tm.h: Remove (at least pro tem) because of relative path and use
top-level one.
* Make-lang.in (include/f2c.h:): Set shell variable src more
robustly (independent of whether srcdir is relative or absolute).
* Makefile.in (f/proj.h:): Likewise.
Mon Feb 6 19:58:32 1995 Dave Love <d.love@dl.ac.uk>
* g77.c (append_arg): Use K&R declaration for, e.g. SunOS4 build.
Fri Feb 3 20:33:14 1995 Craig Burley (burley@gnu.ai.mit.edu)
* g77.c (main): Treat -l like filename in terms of -x handling.
Rewrite arglist mechanism for ease of maintenance.
Make sure every -lf2c is followed by -lm and vice versa.
* Make-lang.in: Put complete list of sources in F77_SRCS def
so changing a .h file, for example, causes rebuild.
* Makefile.in: Change test for nextstep to m68k-next-nextstep* so
all versions of nextstep on m68k get the necessary flag.
Fri Feb 3 19:10:32 1995 Dave Love <d.love@dl.ac.uk>
* INSTALL: Note about possible conflict with existing libf2c.a and
f2c.h.
* Make-lang.in (f77.distclean): Tidy and move deletion of
f/config.cache to mostlyclean.
(install-libf77): Test for $(libdir)/libf2c.* and barf if found
unless F2CLIBOK defined.
* runtime/Makefile.in (all): Change path to include directory (and
elsewhere).
(INCLUDES): Remove (unused/misleading).
(distclean): Include f2c.h.
(clean): Include config.cache.
* runtime/libF77/Makefile.in (.SUFFIXES): Correct typo.
(ALL_CFLAGS) Fix up include search path to find f2c.h in top level
includes always.
(all): Depend on f2c.h.
* runtime/libI77/Makefile.in (.SUFFIXES): Likewise.
Thu Feb 2 17:17:06 1995 Dave Love <d.love@dl.ac.uk>
* INSTALL: Note about --srcdir and GNU make.
* runtime/f2c.h.in (Pad_UDread, ALWAYS_FLUSH): Reomve the #defines
per below.
* runtime/configure.in (Pad_UDread, ALWAYS_FLUSH): Define these
here, not in f2c.h as they'r eonly relevant for building.
* runtime/configure: Regenerated.
* config-lang.in: Warn about using GNU make outside source tree
since I can't get Irix5 or SunOS4 makes to work in this case.
* Makefile.in (VPATH): Don't set it here.
(srcdir): Make it the normal `.' (overridden) at top level.
(all.indirect): New dependency `dircheck'.
(f771): Likewise
(dircheck): New target for foolproofing.
(f/proj.h:): Change finding source.
(CONFIG_H): Don't use this as the relative path in the include loses
f builddir != srcdir.
* config.h: Remove per CONFIG_H change above.
* Make-lang.in (F77_FLAGS_TO_PASS): Remove GCC_FOR_TARGET.
(f771:): Pass VPATH, srcdir to sub-make.
(f/Makefile:): New target.
(stmp-int-hdrs): new variable for cheating build.
(f77-runtime:): Alter GCC_FOR_TARGET treatment.
(include/f2c.h f/runtime/Makefile:) Likewise.
(f77-runtime-unsafe:): New (cheating) target.
Thu Feb 2 12:09:51 1995 Craig Burley (burley@gnu.ai.mit.edu)
* BUGS: Update regarding losing EQUIVALENCE members in -g, and
regarding RS/6000 problems in the back end.
* CREDITS: Make some changes as requested.
* com.c (ffecom_member_trunk_): Remove unused static variable.
(ffecom_finish_symbol_transform_): Improve comments.
(ffecom_let_char_): Fix size of temp address-type var.
(ffecom_member_phase2_): Try fixing problem fixed by change
to ffecom_transform_equiv_ (f_m_p2_ function currently not used).
(ffecom_transform_equiv_): Remove def of unused static variable.
Comment-out use of ffecom_member_phase2_, until problems with
back end fixed.
(ffecom_push_tempvar): Fix assertion to not crash okay code.
* com.h: Remove old, commented-out code.
Add prototype for warning() in back end.
* ste.c (ffeste_io_dofio_, ffeste_io_dolio_, ffeste_io_douio_,
ffeste_io_icilist_): Check correct type of variable for arrayness.
Sun Jan 29 14:41:42 1995 Dave Love <d.love@dl.ac.uk>
* BUGS: Remove references to my configure bugs; add another.
* runtime/Makefile.in (AR_FLAGS): Provide default value.
* runtime/f2c.h.in (integer, logical): Take typedefs from
F2C_INTEGER configuration parameter again.
(NON_UNIX_STDIO): don't define it.
* runtime/configure.in: Bring type checks for f2c.h in line with
com.h.
(MISSING_FILE_ELEMS): New variable to determine whether the relevant
elements of the FILE struct exist, independent of NON_UNIX_STDIO.
* runtime/libI77/{err,wrtfmt,wsfe}.c (MISSING_FILE_ELEMS): Use new
parameter.
* config-lang.in: Comment out more of f2c rules (c.f. Make-lang.in).
(This stuff is relevant iff you gave configure --enable-f2c.)
Create f/runtime directory tree iff not building in source
directory.
* Makefile.in (srcdir): Append slash so we get the right value when
not building in the source directory. This is a consequence of not
building the `f' sources in `f'.
(VPATH): Override configure's value for reasons above.
(f/proj.h f/conf-proj): New rules to build proj.h by
autoconfiguration.
* proj.h: Rename to proj.h.in for autoconfiguration.
* proj.h.in: New as above.
* conf-proj conf-proj.in: New files for autoconfiguration.
* Make-lang.in (include/f2c.h f/runtime/Makefile:): Change the order
of setting the sh variables so that the right GCC_FOR_TARGET is
used.
(f77.*clean:) Add products of new configuration files and make sure
all the *clean targets do something (unlike the ones in
cp/Make-lange.in).
* com.h (FFECOM_f2cINTEGER, FFECOM_f2cLOGICAL): Define as long or
int appropriately to ensure sizeof(real) == sizeof(integer).
* PROJECTS: Library section.
* runtime/libI77/endfile.c: Don't #include sys/types.h conditional
on NON_UNIX_STDIO since rawio.h needs size_t.
* runtime/libI77/uio.c: #include <sys/types.h> for size_t if not
KR_headers.
Wed Jan 25 03:31:51 1995 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.3 released.
* INSTALL: Revise.
* Make-lang.in: Comment out rules for building f2c itself (f/f2c/).
* README: Revise.
* com.c (ffecom_init_0): Warn if ftnlen or INTEGER not big enough
to hold a char *.
* gbe/2.6.2.diff: Update.
Mon Jan 23 17:10:49 1995 Craig Burley (burley@gnu.ai.mit.edu)
* TODO: Remove.
BUGS: New file.
PROJECTS: New file.
CREDITS: New file.
* cktyps*: Remove.
Make-lang.in: Remove cktyps stuff.
Makefile.in: Remove cktyps stuff.
* DOC: Add info on changes for 0.5.3.
* bad.c: Put "warning:" &c on diagnostic messages.
Don't output informational messages if warnings disabled.
Thu Jan 19 12:38:13 1995 Craig Burley (burley@gnu.ai.mit.edu)
* g77.c: Avoid putting out useless "-xnone -xf77" pairs so
larger command lines can be accommodated.
Recognize both `-xlang' and `-x lang'.
Recognize `-xnone' and `-x none' to mean what it does, instead
of treating "none" as any other language.
Some minor, slight improvements in the way args are handled
(hopefully for clearer, more maintainable code), including
consistency checks on arg count just in case.
Wed Jan 18 16:41:57 1995 Craig Burley (burley@gnu.ai.mit.edu)
* DOC: Explain -fautomatic better.
* INSTALL: Describe libf2c.a better.
* Make-lang.in, Makefile.in: Build f771 &c with gcc/ as cd instead
of gcc/f/ so debugging info is better (source file tracking).
Add new source file type.c.
* Makefile.in: For nextstep3, link f771 with -segaddr __DATA
6000000. Fix typo. Change deps-kinda target to handle building
from gcc/. Update dependencies.
* bld-op.def, bld.h, bld.c: Remove opBACKEND and all related
stuff.
Remove consistency tests that cause compiler warnings.
* cktyps.c: Remove all typing checking.
* com-rt.def: Change all rttypeFLOAT_ intrinsics to rttypeDOUBLE_,
to precisely match how they're declared in libf2c.
* com.h, com.c: Revise to more elegantly track related stuff
in the version of f2c.h used to build libf2c.
* com.c: Increase FFECOM_sizeMAXSTACKITEM, and if 0 or undefined
when checked to determine where to put entity, treat as infinite.
Rewrite temporary mechanism to be based on trees instead of
ffeinfo stuff, and make it much simpler. Change interface
accordingly.
Fixes to better track types of things, make appropriate
conversions, etc. E.g. when making an arg for a libf2c
function, make sure it's of the right type (such as ftnlen).
Delete opBACKEND transformation code.
(ffecom_init_0): Smoother initialization of types, especially
paying attention to using consistent rules for making INTEGER,
REAL, DOUBLE PRECISION, etc., and for deciding their "*N"
and kind values that will work across all g77 platforms.
No longer require per-target configuration info in target.h
or config/*/*; use new type module to store size, alignment.
(ffecom_member_phase2): Declare COMMON/EQUIVALENCE group members
so debugger sees them.
(ffecom_finish_progunit): Transform all symbols in program unit,
so -g will show they all exist.
* expr.c (ffeexpr_collapse_substr): Handle strange substring
range values.
* info.h, info.c: Provide connection to new type module.
Remove tests that yield compiler warnings.
* intrin.c (ffeintrin_is_intrinsic): Properly handle deleted
intrinsic.
* lex.c (ffelex_file_fixed): Remove redundant/buggy code.
* stc.c (ffestc_kindtype_kind_, ffestc_kindtype_star_): Replace
boring switch stmt with simple call to new type module. This
sort of thing is a reason to get up in the morning.
* ste.c: Update to handle new interface for
ffecom_push/pop_tempvar.
Fixes to better track types of things.
Fixes to not crash for certain diagnosed constructs.
(ffeste_begin_iterdo_): Check only constants for overflow to avoid
spurious diagnostics.
Don't convert larger integer (say, INTEGER*8) to canonical integer
for iteration count.
* stw.h: Track DO iteration count temporary variable.
* symbol.c: Remove consistency tests that cause compiler warnings.
* target.c (ffetarget_aggregate_info): Replace big switch with
little call to new type module.
(ffetarget_layout): Remove consistency tests that cause
compiler warnings.
(ffetarget_convert_character1_typeless): Pick up length of
typeless type from new type module.
* target.h: Crash build if target float bit pattern cannot be
precisely determined.
Remove all the type cruft now determined by ffecom_init_0
at invocation time and maintained in new type module.
Put casts on second arg of all REAL_VALUE_TO_TARGET_DOUBLE
uses so compiler warnings avoided (requires target float bit
pattern to be precisely determined, hence code to crash build).
* top.c: Add inits/terminates for new type module.
* type.h, type.c: New module.
* gbe/2.6.2.diff: Remove all patches to files in gcc/config/
directory and its subdirectories.
Mon Jan 9 19:23:25 1995 Dave Love <d.love@dl.ac.uk>
* com.h (FFECOM_F2C_INTEGER_TYPE_NODE): Define and use instead of
long_integer_type_node where appropriate.
Tue Jan 3 14:56:18 1995 Dave Love <d.love@dl.ac.uk>
* com.h: Make ffecom_f2c_logical_type_node long, consistent with
integer.
Fri Dec 2 20:07:37 1994 Dave Love <d.love@dl.ac.uk>
* config-lang.in (stagestuff): Add f2c conditionally.
* Make-lang.in: Add f2c and related targets.
* f2c: Add the directory.
Fri Nov 25 22:17:26 1994 Dave Love <d.love@dl.ac.uk>
* Makefile.in (FLAGS_TO_PASS): pass $(CROSS)
* Make-lang.in: more changes to runtime targets
Thu Nov 24 18:03:21 1994 Dave Love <d.love@dl.ac.uk>
* Makefile.in (FLAGS_TO_PASS): define for sub-makes
* g77.c (main): change f77-cpp-output to f77-cpp-input (.F files)
Wed Nov 23 15:22:53 1994 Dave Love <d.love@dl.ac.uk>
* bad.c (ffebad_finish): kluge to fool emacs19 into finding errors:
add trailing space to <file>:<line>:
Tue Nov 22 11:30:50 1994 Dave Love <d.love@dl.ac.uk>
* runtime/libF77/signal_.c (RETSIGTYPE): added
Mon Nov 21 13:04:13 1994 Dave Love <d.love@dl.ac.uk>
* Makefile.in (compiler): add runtime
* config-lang.in (stagestuff): add libf2c.a to stagestuff
* Make-lang.in:
G77STAGESTUFF <- MORESTAGESTUFF
f77-runtime: new target, plus supporting ones
* runtime: add the directory, containing libI77, libF77 and autoconf
stuff
* g++.1: remove
* g77.1: minor fixes
Thu Nov 17 15:18:05 1994 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.2 released.
* bad.def: Modify wording of FFEBAD_UNIMPL_STMT to indicate
that it covers a wide array of possible problems (that, someday,
should be handled via separate diagnostics).
* lex.c: Allow $ in identifiers if -fdollar-ok.
* top.c: Support -fdollar-ok.
* top.h: Support -fdollar-ok.
* target.h: Support -fdollar-ok.
* DOC: Describe -fdollar-ok.
* std.c (ffestd_R1229_finish): Fix bug so stand-alone build works.
* ste.c (ffeste_R819A): Fix bug so stand-alone build works.
* Make: Improvements for stand-alone build.
* Makefile.in: Fix copyright text at top of file.
* LINK, SRCS, UNLINK: Removed. Not particularly useful now that
g77 sources live in their own subdirectory.
* g77.c (main): Cast arg to bzero to avoid warning. (This is
identical to Kenner's fix to cp/g++.c.)
* gbe/: New subdirectory, to contain .diff files for various
versions of the GNU CC back end.
* gbe/README: New file.
* gbe/2.6.2.diff: New file.
Tue Nov 8 10:23:10 1994 Dave Love <d.love@dl.ac.uk>
* Make-lang.in: don't install as f77 as well as g77 to avoid
confusion with system's compiler (especially while testing)
* g77.c (main): use -lf2c and -lm; fix sense of test for .f/.F files
Fri Oct 28 09:45:00 1994 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.1 released.
* gcc.c: Invoke f771 instead of f-771.
Fri Oct 28 02:00:44 1994 Craig Burley (burley@gnu.ai.mit.edu)
* Version 0.5.0 released.
Fri Oct 14 15:03:35 1994 Craig Burley (burley@gnu.ai.mit.edu)
* Makefile.in: Handle the Fortran-77 front-end in a subdirectory.
* f-*: Move Fortran-77 front-end to f/*.
|