aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/cp/ChangeLog-2006
blob: 09df1ef2184671b9b65f0dedab7d8410a567ac30 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
2006-12-31  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/29731
	* parser.c (cp_parser_primary_expression): Return error_mark_node when
	a statement-expression is found outside of a function body.

2006-12-28  Kazu Hirata  <kazu@codesourcery.com>

	* cp-tree.h (TYPE_NAMESPACE_SCOPE_P, TYPE_FUNCTION_SCOPE_P):
	Remove.

	* decl2.c: Fix a comment typo.

2006-12-21  Andrew Pinski  <pinskia@gmail.com>

	PR C++/30225
	* decl.c (cxx_builtin_function): Only copy the decl if adding
	it to the std namespace.

2006-12-21  Andrew Pinski  <pinskia@gmail.com>

	PR C++/30168
	* optimize.c (update_cloned_parm): Copy DECL_GIMPLE_REG_P also.

2006-12-22  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c: Fix a coment typo.

2006-12-18  Ian Lance Taylor  <iant@google.com>

	* decl.c (start_preparsed_function): Add support for
	-Wmissing-declarations.

2006-12-16  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/29475
	* cp-tree.h (struct deferred_access_check): New structure to represent a
	deferred access check. It replaces the previous representation as a tree.
	(get_deferred_access_checks): Return a vector of struct
	deferred_access_check instead of a tree list.
	(perform_access_checks): Take a vector of struct deferred_access_check
	instead of a tree list.
	* semantics.c (struct deferred_access): Store the deferred access checks
	as a vector of struct deferred_access_check instead of a tree list.
	(push_deferring_access_checks): Handle the change in struct
	deferred_access.
	(get_deferred_access_checks): Likewise.
	(pop_to_parent_deferring_access_checks): Likewise.
	(perform_or_defer_access_check): Likewise.
	(perform_access_checks): Take a vector of struct deferred_access_check
	instead of a tree list.
	* parser.c (struct tree_check): New structure to store various data
	associated with a CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID token.
	(struct cp_token): Changed the value field to be a union with a pointer to
	a struct tree_check for CPP_NESTED_NAME_SPECIFIER or CPP_TEMPLATE_ID
	tokens and a tree field for all other tokens.
	(eof_token): Adjusted due to the change in struct cp_token.
	(cp_lexer_get_preprocessor_token): Likewise.
	(cp_lexer_purge_token): Likewise.
	(cp_lexer_purge_tokens_after): Likewise.
	(cp_lexer_print_token): Likewise.
	(cp_parser_error): Likewise.
	(cp_parser_identifier): Likewise.
	(cp_parser_string_literal): Likewise.
	(cp_parser_primary_expression): Likewise.
	(cp_parser_unqualified_id): Likewise.
	(cp_parser_parenthesized_expression_list): Likewise.
	(cp_parser_storage_class_specifier_opt): Likewise.
	(cp_parser_function_specifier_opt): Likewise.
	(cp_parser_type_specifier): Likewise.
	(cp_parser_simple_type_specifier): Likewise.
	(cp_parser_initializer_list): Likewise.
	(cp_parser_member_specification_opt): Likewise.
	(cp_parser_attribute_list): Likewise.
	(cp_parser_objc_expression): Likewise.
	(cp_parser_objc_protocol_qualifiers): Likewise.
	(cp_parser_objc_selector): Likewise.
	(cp_parser_objc_declaration): Likewise.
	(cp_parser_objc_statement): Likewise.
	(cp_parser_omp_clause_name): Likewise.
	(cp_parser_omp_clause_default): Likewise.
	(cp_parser_omp_clause_schedule): Likewise.
	(cp_parser_omp_parallel): Likewise.
	(cp_parser_initial_pragma): Likewise.
	(pragma_lex): Likewise.
	(cp_parser_pre_parsed_nested_name_specifier): Likewise.
	(cp_parser_nested_name_specifier_opt): Likewise.
	Use cp_token::u::tree_check_value to save the token's value, the
	associated deferred checks and its qualifying scope.
	(cp_parser_template_id): Likewise.
	(cp_parser_template_declaration_after_export): Adjusted the call to
	get_deferred_access_checks.
	(cp_parser_init_declarator): Take the access checks as a vector of struct
	deferred_access_check instead of a tree list.
	(cp_parser_single_declaration): Likewise.
	(cp_parser_perform_template_parameter_access_checks): Likewise.
	(cp_parser_simple_declaration): Adjusted the call to
	cp_parser_init_declarator.
	(cp_parser_explicit_specialization): Adjusted the call to
	cp_parser_single_declaration.

2006-12-13  Ian Lance Taylor  <iant@google.com>

	PR c++/19564
	PR c++/19756
	* parser.c (cp_parser_expression_stack_entry): Add field
	lhs_type.
	(cp_parser_binary_expression): Track tree code of left hand side
	of expression.  Use it when calling build_x_binary_op.
	(cp_parser_selection_statement): Add if_p parameter.  Change all
	callers.  Warn about ambiguous else.
	(cp_parser_statement): Add if_p parameter.  Change all callers.
	(cp_parser_implicitly_scoped_statement): Likewise.
	* typeck.c (build_x_binary_op): Add parameters arg1_code and
	arg2_code.  Change all callers.  Call warn_about_parentheses.
	* cp-tree.h (build_x_binary_op): Update declaration.

2006-12-12  Manuel Lopez-Ibanez  <manu@gcc.gnu.org>

	* decl.c (build_enumerator): Update error message to match C
	front-end.
	
2006-12-11  Jan Hubicka  <jh@suse.cz>

	* decl2.c (var_finalized_p): Update for renamed varpool functions.

2006-12-09  Zack Weinberg  <zackw@panix.com>

	* parser.c (yydebug, enum pragma_omp_clause): Delete.

2006-12-07  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29732
	* cp-tree.h (DECL_USE_TEMPLATE): Mention partial specializations.
	(explicit_class_specialization_p): Declare.
	* pt.c (explicit_class_specialization_p): New function.
	* parser.c (cp_parser_init_declarator): Check correct number of
	template parameters for in-class function definitions.
	(cp_parser_check_declrator_template_parameters): Stop looking for
	template classes when we find an explicit specialization.

2006-12-07  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/29980
	* cp_parser_elaborated_type_specifier: Check
	the return value of check_elaborated_type_specifier.

2006-12-06  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29730
	* parser.c (cp_parser_init_declarator): Reject initialization of
	functions.

2006-12-05  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29729
	* decl2.c (check_member_template): Move check for member
	templates in local classes to ...
	* parser.c (cp_parser_template_declaration_after_export):
	... here.

	PR c++/29728
	* decl.c (check_array_designated_initializer): New function.
	(maybe_deduce_size_from_array_init): Use it.
	(reshape_init_array): Likewise.

2006-12-05  Aldy Hernandez  <aldyh@redhat.com>

	Merge from gimple-tuples-branch.

	2006-10-05  Aldy Hernandez  <aldyh@redhat.com>

	* cp-gimplify.c (cp_gimplify_expr): Adjust for GIMPLE_MODIFY_STMT.
	(cxx_omp_clause_apply_fn): Adjust for GIMPLE_MODIFY_STMT.
	(cxx_omp_clause_copy_ctor): Same.
	(cxx_omp_clause_assign_op): Same.

	2006-09-28  Aldy Hernandez  <aldyh@redhat.com>

	* cp-tree.h (union lang_tree_node): Gimple statements do not
	have a TREE_CHAIN.
	(TREE_INDIRECT_USING): Look in base.

2006-12-04  Jan Hubicka  <jh@suse.cz>

	* cp-objcp-common.c (cp_expr_size): Return NULL in the case
	size is undefined.

2006-12-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29733
	* pt.c (tsubst_decl): Disallow variables of function type.

	PR c++/29632
	* call.c (add_builtin_candidate): Do not permit NULL pointer
	constants to be compared with template parameters.

2006-12-04  Eric Botcazou  <ebotcazou@adacore.com>

	* pt.c (for_each_template_parm_r) <INTEGER_TYPE>: New case.
	Call for_each_template_parm on TYPE_MIN_VALUE and TYPE_MAX_VALUE.

2006-12-03  Richard Henderson  <rth@redhat.com>
	    Andrew Pinski  <pinskia@gmail.com>

	PR C++/14329
	* error.c (cp_printer) <'D'>: Handle DECL_DEBUG_EXPR.

2006-12-02  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR C++/30033
	* decl.c (cp_tree_node_structure): Handle STATIC_ASSERT.

2006-12-02  Kazu Hirata  <kazu@codesourcery.com>

	* name-lookup.c: Follow spelling conventions.

2006-12-01  Geoffrey Keating  <geoffk@apple.com>

	* decl.c (poplevel): Check DECL_INITIAL invariant.
	(duplicate_decls): Preserve DECL_INITIAL when eliminating
	a new definition in favour of an old declaration.
	(start_preparsed_function): Define and document value of
	DECL_INITIAL before and after routine.
	(finish_function): Check DECL_INITIAL invariant.
	* parser.c
	(cp_parser_function_definition_from_specifiers_and_declarator):
	Skip duplicate function definitions.

2006-12-01  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/30022
	* typeck.c (type_after_usual_arithmetic_conversions):
	Fix assertion for vector types.
	(build_binary_op): Use temporary for inner type of vector types.

2006-12-01  Ryan Mansfield  <rmansfield@qnx.com>

	PR c++/29066
	* typeck.c (build_binary_op):  Fix pointer to member function
	comparison for ptrmemfunc_vbit_in_delta targets.

2006-12-01  Dirk Mueller  <dmueller@suse.de>

	PR c++/18313
	* decl.c (grokdeclarator): Warn for type qualifiers on return
	type for non-dependent types.
	* pt.c (tsubst_function_type): Warn for type qualifiers on
	return type for dependent types.

2006-11-30  Geoffrey Keating  <geoffk@apple.com>

	* rtti.c (get_tinfo_decl): Handle return value from
	pushdecl_top_level_and_finish.

2006-11-29  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/29022
	* parser.c (cp_parser_class_head): Move processing
	of any base classes to...
	(cp_parser_class_specifier) ...here. Take an extra
	tree* parameter for any base classes. Only process
	them if the opening brace was found.

2006-11-28  Jakub Jelinek  <jakub@redhat.com>

	PR c++/29735
	* decl.c (grokfndecl): Check main's type after applying
	attributes, not before.

2006-11-27  Mark Mitchell  <mark@codesourcery.com>

	* class.c (build_vcall_offset_vtbl_entries): Do not add vcall
	entries for a primary construction virtual table.

2006-11-26  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29886
	* parser.c (cp_parser): Add in_function_body.
	(cp_parser_new): Initialize it.
	(cp_parser_primary_expression): Use parser->in_function_body
	instead of at_function_scope_p.
	(cp_parser_asm_definition): Likewise.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_class_specifier): Clear parser->in_function_body.
	(cp_parser_constructor_declarator_p): Use parser->in_function_body
	instead of at_function_scope_p.
	(cp_parser_function_body_after_declarator): Set
	parser->in_function_body.

2006-11-21      Douglas Gregor <doug.gregor@gmail.com>

	* cp-tree.def (STATIC_ASSERT): New.
	* cp-objcp-common.c (cp_tree_size): Handle STATIC_ASSERT.
	* error.c (dump_decl): Handle STATIC_ASSERT.
	* cp-tree.h (STATIC_ASSERT_CONDITION): New.
	(STATIC_ASSERT_MESSAGE): New.
	(STATIC_ASSERT_SOURCE_LOCATION): New.
	(struct tree_static_assert): New.
	(enum cp_tree_node_structure_enum): Add TS_CP_STATIC_ASSERT.
	(union lang_tree_node): Add static_assertion.
	(finish_static_assert): Declare.
	* cxx-pretty-print.c (pp_cxx_statement): Handle STATIC_ASSERT.
	(pp_cxx_declaration): Handle STATIC_ASSERT.
	* pt.c (instantiate_class_template): Handle
	STATIC_ASSERT members.
	(tsubst_expr): Handle STATIC_ASSERT statements.
	* semantics.c (finish_static_assert): New.
	* lex.c (D_CPP0X): New.
	(reswords): Add static_assert keyword.
	(init_reswords): If not flag_cpp0x, mask out C++0x keywords.
	* parser.c (cp_parser_block_declaration): Parse static
	assertions.
	(cp_parser_static_assert): New.
	(cp_parser_member_declaration): Parse static assertions.

2006-11-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/29570
	* decl.c (cp_finish_decl): Check for value dependent brace enclosed
	scalar initializer.

	PR c++/29734
	* cp-tree.h (WANT_VECTOR): Define.
	(WANT_ARITH): Add WANT_VECTOR.
	* cvt.c (build_expr_type_conversion): Handle vector types.
	* typeck.c (build_unary_op): Add WANT_VECTOR to
	build_expr_type_conversion flags.

2006-11-20  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/29475
	* cp-tree.h (enforce_access, perform_or_defer_access_check): Added an
	extra argument that represents the declaration to use to print
	potential error messages.
	* init.c (build_offset_ref): Adjusted the call to
	perform_or_defer_access_check.
	* class.c (alter_access, resolve_address_of_overloaded_function):
	Likewise.
	* decl.c (make_typename_type, make_unbound_class_template): Likewise.
	* search.c (lookup_member): Likewise.
	* friend.c (add_friend): Likewise.
	* parser.c (cp_parser_template_id,
	cp_parser_pre_parsed_nested_name_specifier): Likewise.
	* semantics.c (finish_non_static_data_member,
	check_accessibility_of_qualified_id, finish_id_expression): Likewise.
	(pop_to_parent_deferring_access_checks, perform_access_checks,
	perform_or_defer_access_check): Adjusted the call to enforce_access.
	* call.c (enforce_access): Use the new extra argument to build the
	error message.
	(build_op_delete_call): Adjusted the call to
	perform_or_defer_access_check.
	(build_over_call): Likewise.

2006-11-16  Dirk Mueller  <dmueller@suse.de>

	* name-lookup.c (begin_scope): Use GGC_CNEW instead of
	GGC_NEW and memset.

2006-11-13  Roger Sayle  <roger@eyesopen.com>

	* rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
	base type info initializer has the correct type.

2006-11-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29518
	* pt.c (coerce_template_parms): Do not skip_evaluation while
	substituting template arguments.

2006-11-11  Richard Guenther  <rguenther@suse.de>

	* typeck.c (build_unary_op): Remove handling of FIX_CEIL_EXPR,
	FIX_FLOOR_EXPR and FIX_ROUND_EXPR.

2006-11-03  Roger Sayle  <roger@eyesopen.com>

	* call.c (build_op_delete_call): Test user-visible type against
	size_type_node, instead of against the internal type, sizetype.
	* class.c (type_requires_array_cookie): Likewise.
	* mangle.c (write_builtin_type) <INTEGER_TYPE>: Remove special
	handling of TYPE_IS_SIZETYPE.
	* typeck.c (type_after_usual_arithmetic_conversions): Remove
	special case handling of TYPE_IS_SIZETYPE.
	(comptypes): Likewise.

2006-11-01  Danny Smith  <dannysmith@users.sourceforge.net>

	* decl.c (get_atexit_node): Reference atexit, not __cxa_exit.
	if targetm.cxx.use_atexit_for cxa_atexit.
	(start_cleanup_fn): Likewise.
	(register_dtor_fn): Likewise.

2006-09-25  Geoffrey Keating  <geoffk@apple.com>

	* decl2.c (cp_write_global_declarations): Rename from
	cp_finish_file.
	* cp-lang.c (finish_file): Don't call cp_finish_file.
	* cp-tree.h (cp_write_global_declarations): Rename from
	cp_finish_file.
	* cp-objcp-common.h (LANG_HOOKS_WRITE_GLOBALS): Define to
	cp_write_global_declarations.

2006-10-31  Geoffrey Keating  <geoffk@apple.com>

	* name-lookup.c (get_anonymous_namespace_name): New.
	(push_namespace_with_attribs): Use get_anonymous_namespace_name.
	* decl2.c (start_objects): Update for rename of
	get_file_function_name_long.

2006-10-30  Dirk Mueller  <dmueller@suse.de>

	PR c++/28704
	* decl.c (grokdeclarator): Duplicate diagnostic message
	for easier translation.
	* decl.c (grokdeclarator): Fix line-wrapping.

2006-10-30  Dirk Mueller  <dmueller@suse.de>

	PR c++/6321
	* decl.c (grokfndecl): Use check_main_parameter_types.

2006-10-30  Dirk Mueller  <dmueller@suse.de>

	PR c++/28669
	* decl.c (grokfndecl): Duplicate warning message for
	easier translation.

2006-10-30  Dirk Mueller  <dmueller@suse.de>

	* typeck.c (build_unary_op): Fix indenting. Use G_().

2006-10-29  Dirk Mueller  <dmueller@suse.de>

	PR c++/29089
	* typeck.c (build_unary_op): Duplicate warning message
	for easier translation.

2006-10-29  Dirk Mueller  <dmueller@suse.de>

	PR c++/16307
	* typeck.c (build_array_ref): Warn for char subscriptions
	on pointers.

2006-10-29  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c: Fix a comment typo.

2006-10-28  Andrew Pinski  <andrew_pinski@playstation.sony.com>

	PR C++/29295
	* typeck.c (build_unary_op): Use same_type_p when comparing to
	boolean type.

2006-10-29  Dirk Mueller  <dmueller@suse.de>

	PR c++/29033
	* typeck.c (build_binary_op): Duplicate warning message
	for better translation.

2006-10-23  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* decl.c (builtin_function_1): Move common code to
	add_builtin_function.
	(builtin_function): Rename to cxx_builtin_function.
	Change the signature.
	* call.c: Include langhooks.h.
	(build_java_interface_fn_ref):  Replace calls to
	builtin_function with add_builtin_function.
	* Make-lang.in (cp/call.o): Depend on langhooks.h.
	* cp-objcp-common.h (LANG_HOOKS_BUILTIN_FUNCTION): Define as
	cxx_builtin_function.
	* cp-tree.h (builtin_function): Rename to cxx_builtin_function.
	Change the signature.

2006-10-22  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/20647
	* rtti.c (tinfo_base_init): The type info string is always global.

2006-10-20  Lee Millward  <lee.millward@codesourcery.com>
	    Mark Mitchell <mark@codesourcery.com>

	PR c++/28053
	* decl2.c (grokbitfield): Detect invalid non-integral
	types earlier when possible.

2006-10-18  Mark Shinwell  <shinwell@codesourcery.com>

	PR c++/26884
	* typeck2.c (digest_init): Raise error upon attempts to
	initialize arrays with variables.

2006-10-17  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/27952
	* cp-tree.h (xref_basetypes): Return bool instead of void.
	* decl.c (xref_basetypes): Adjust definition. Return false
	if the class bases are invalid.
	* parser.c (cp_parser_class_head): Check the return value
	from xref_basetypes.

2006-10-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28261
	* parser.c (cp_lexer_next_token_is_decl_specifier_keyword): Add
	comment.

	PR c++/28261
	* parser.c (cp_lexer_next_token_is_decl_specifier_keyword): New
	function.
	(cp_parser_constructor_declarator_p): Use it.
	(cp_parser_check_type_definition): Return a value indicating
	whether or not the definition is valid.
	(cp_parser_enum_specifier): Skip invalid enum definitions.

2006-10-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29039
	* typeck2.c (build_functional_cast): Don't zero-initialize
	non-PODs; instead, call their constructors.
	* method.c (synthesize_method): Always build mem-initializers, if
	we're synthesizing the default constructor.

2006-10-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27270
	* decl.c (reshape_init_class): Move check for designated
	to ...
	* parser.c (cp_parser_initializer_list): ... here.
	* pt.c (tsubst_copy_and_build): Use finish_compound_literal.

2006-10-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27270
	* typeck2.c (process_init_constructor_array): Reword comment.
	* pt.c (tsubst_copy_and_built): Call reshape_init before calling
	digest_init.

	PR c++/29408
	* parser.c (cp_parser_using_declaration): Stop parsing when
	something goes wrong with an access declaration.

	PR c++/29435
	* typeck.c (cxx_sizeof_or_alignof_type): Complete non-dependent
	types when their sizes are required.  Refine test for VLAs.

	PR c++/28211
	* parser.c (cp_parser_template_argument): Don't consider "&var" a
	possible constant-expression.
	* pt.c (convert_nontype_argument): Refine handling of arguments of
	pointer type.

2006-10-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28506
	* parser.c (function_declarator_p): New function.
	(cp_parser_init_declarator): Use it.
	(cp_parser_member_declaration): Likewise.

2006-10-12  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29318
	* rtti.c (get_tinfo_decl): Refuse to create type info objects for
	variably modified types.

2006-10-12 Lee Millward <lee.millward@codesourcery.com>

       PR c++/27961
       * decl.c (start_decl): Return error_mark_node if a
       function is initialized like a variable.
       (check_var_type): If a variable of field is declared void,
       set the type to error_mark_node.
       (grokdeclarator): Check the return type of check_var_type.
       * class.c (finish_struct_1): Robustify.

2006-10-11  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29175
	* decl.c (check_initializer): Issue errors about trying to
	initialize arrays whose elements have variable size.

2006-10-11  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/29024
	* cp-tree (struct cp_decl_specifier_seq): Rename to
	conflicting_specifiers_p
	* parser.c (cp_parser_set_storage_class): Set
	conflicting_specifiers_p for the input decl specifier
	if a typedef specifier is present. Rename uses of
	multiple_specifiers_p to conflicting_specifiers_p.
	(cp_parser_decl_specifier_seq) <RID_TYPEDEF>: If a storage
	class specifier has already been set for this declaration,
	set conflicting_specifiers_p to true on the decl_specs.
	* decl.c (grokdeclarator): Rename uses of
	multiple_specifiers_p to conflicting_specifiers_p.

2006-10-10  Brooks Moses  <bmoses@stanford.edu>

	* Make-lang.in: Added "c++.pdf" target support.

2006-10-10  Richard Guenther  <rguenther@suse.de>

	PR rtl-optimization/29323
	* decl.c (finish_function): Set TREE_NOTHROW only for
	functions that bind local.

2006-10-09  Richard Henderson  <rth@redhat.com>

	Revert emutls patch.

2006-10-04  Richard Henderson  <rth@redhat.com>
	    Jakub Jelinek  <jakub@redhat.com>

	* decl.c (grokvardecl): Don't error if !have_tls.
	(grokdeclarator): Likewise.
	* parser.c (cp_parser_omp_threadprivate): Likewise.

2006-10-03  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29020
	* friend.c (do_friend): Improve comments; add assertion.
	* parser.c (cp_parser_nested_name_specifier_opt): Resolve
	typenames for qualified names used in declarations, even when
	caching qualified name lookup.

	PR c++/29138
	* decl2.c (grokfield): Don't handle access declarations here.
	* parser.c (cp_parser_using_declaration): Handle access
	declarations too.
	(cp_parser_block_declaration): Adjust calls to
	cp_parser_using_declaration.
	(cp_parser_member_declaration): Likewise.  Use
	cp_parser_using_declaration to look for access_declarations.

2006-10-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/29291
	* init.c (build_new): Check for invalid init.

2006-10-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29226
	* typeck.c (cxx_sizeof_or_alignof_type): Tidy.  In templates, do
	not try to actually evaluate sizeof for a VLA type.

2006-10-01  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29105
	* pt.c (tsubst_baselink): Substituteinto the qualifying scope.
	* semantics.c (baselink_for_fns): Build a baselink, even when
	processing a template.

	PR c++/29080
	* parser.c (cp_parser_postfix_dot_deref_expression): Use
	BASELINK_ACCESS_BINFO as the qualifying scope when calling
	adjust_result_of_qualified_name_lookup.

2006-09-25  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/27329
	PR c++/26938
	* cp-tree.h (redeclare_class_template): Adjust declaration
	to return bool instead of void.
	* pt.c (redeclare_class_template): Update definition.
	Return false on error.
	* decl.c (xref_tag): Return error_mark_node if
	redeclare_class_template returned false.

	PR c++/27667
	* cp-tree.h (begin_specialization): Return bool
	instead of void.
	* pt.c (check_specialization_scope): Likwise.
	Adjust comment. Return false if a specialization
	isn't permitted in the current scope.
	(begin_specialization): Use the return value of
	check_specialization_scope.
	* parser.c (cp_parser_explicit_specialization): If
	begin_specialization returned false, skip the rest
	of the specialization.

2006-09-21  Mark Mitchell  <mark@codesourcery.com>

	PR c++/29016
	* typeck.c (build_unary_op): Don't form an ADDR_EXPR around a
	BASELINK.

2006-09-21  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/28861
	* decl.c (shadow_tag): Return error_mark_node
	if maybe_process_partial_specialization failed.

	PR c++/28303
	* decl.c (grokdeclarator): Return error_mark_node on
	declaration with two or more data types.

2006-09-20  Danny Smith  <dannysmith@users.sourceforge.net>

	PR target/27650
	* class.c (check_for_override): Remove dllimport from virtual
	methods.

2006-09-18  Steven Bosscher  <steven@gcc.gnu.org>

	PR c++/29087
	* parser.c (cp_parser_labeled_statement): Return nothing.  Do
	not take in_statement_expr and in_compound as arguments.  Rename
	to cp_parser_label_for_labeled_statement.  Parse only the label,
	not the statement.
	(cp_parser_statement): Parse the statement of a labeled-statement
	from here, using tail recursion.

2006-09-14  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/29002
	* init.c (build_zero_init): If we have an error mark node for
	the array size, return.

2006-09-10  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28991
	* cp-objcp-common.c (cxx_staticp): New function.
	* cp-objcp-common.h (LANG_HOOOKS_STATICP): Use it.
	* cp-tree.h (cxx_staticp): New function.

2006-09-09  Jason Merrill  <jason@redhat.com>

	PR c++/28996
	* cvt.c (convert_to_void): Strip COMPONENT_REF to functions.

2006-09-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28858
	* parser.c (cp_parser_skip_until_found): Rename to
	cp_parser_skip_to_end_of_template_parameter_list.  Remove last two
	parameters.  Track levels of '< ... >'.  Stop at '{', '}', or ';'.
	Reorganize.  Adjust comment.
	(cp_parser_template_declaration_after_export): Adjust call.
	(cp_parser_enclosed_template_argument_list): Likewise.

2006-09-07  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/28906
	* init.c (build_new_1): Build a distinct type copy
	for the array type that was returned from
	build_cplus_array_type.

2006-09-07  Jason Merrill  <jason@redhat.com>

	PR c++/27371
	* cvt.c (convert_to_void): Enable previous change.

	PR c++/26957
	* method.c (use_thunk): Clear DECL_HAS_VALUE_EXPR_P on copied
	parms.

2006-09-07  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/28284
	* pt.c (fold_non_dependent_expr): Make sure expr is not
	dereferenced if it is NULL.

2006-09-06  Zak Kipling  <zak@transversal.com>

	PR c++/26195
	* decl.c (make_rtl_for_nonlocal_decl),
	(start_preparsed_function): Don't use lbasename on
	input_filename when calling get_fileinfo.
	* semantics.c (begin_class_definition): Likewise.
	* lex.c (cxx_make_type): Likewise.
	(handle_pragma_interface): Call get_fileinfo on input_filename,
	not on the parameter to the directive.

2006-09-06  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28903
	* pt.c (tsubst): Use fold_non_dependent_expr to fold array
	dimensions.

	PR c++/28886
	* pt.c (unify): Avoid unnecessary calls to fold_build2 for array
	dimensions.

2006-09-06  Jason Merrill  <jason@redhat.com>

	PR c++/27371
	* cvt.c (convert_to_void): Strip useless TARGET_EXPR.
	* cp-tree.h (TARGET_EXPR_IMPLICIT_P): New macro.
	* tree.c (build_cplus_new): Set it.

	PR c++/26696
	* cvt.c (convert_to_void): Replace a subexpression with no side
	effects with void_zero_node.
	* tree.c (is_overloaded_fn): Look through COMPONENT_REF.
	(get_first_fn): Ditto.
	* decl.c (grokdeclarator): No need to look through COMPONENT_REF.

2006-09-05  Jason Merrill  <jason@redhat.com>

	PR c++/26571
	* parser.c (cp_parser_diagnose_invalid_type_name): Handle the case
	where the name is a type used incorrectly.

	PR c++/26671
	* typeck.c (maybe_warn_about_returning_address_of_local): Look
	through COMPONENT_REF and ARRAY_REF.

	PR c++/26102
	* name-lookup.c (do_class_using_decl): Try to find the base even
	if bases_dependent_p.
	* pt.c (type_dependent_expression_p): A USING_DECL is dependent.

	PR c++/19809
	* pt.c (tsubst_friend_function): Set DECL_INITIAL before pushdecl.

2006-09-04  Nathan Sidwell  <nathan@codesourcery.com>

	PR 23287 Revert my 2006-09-01 patch.
	* parser.c: Reverted.
	* pt.c: Reverted.

2006-09-02  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/27670
	PR c++/27493
	PR c++/27494
	PR c++/27397
	* parser.c (cp_parser_template_parameter_list): Add
	invalid template parameters to the parameter list as
	error_mark_node.

2006-09-02  Jakub Jelinek  <jakub@redhat.com>

	PR c++/28878
	* except.c (build_throw): Only set current_function_returns_abnormally
	if cfun is not NULL.

	PR c++/26917
	* repo.c (repo_file): Remove.
	(open_repo_file, reopen_repo_file_for_write): Return fopened
	FILE * instead of setting global repo_file variable.
	(init_repo): Adjust caller.
	(finish_repo): Likewise.  Return instead of goto out before
	reopen_repo_file_for_write has been called.

2006-09-01  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/28705
	* semantics.c (finish_call_expr): Add assert.
	* name-lookup.c (lookup_arg_dependent): Check we found an overload
	or an object.

	PR c++/23287
	* parser.c (cp_parser_id_expression): Add member_p
	argument. Update all callers.
	(cp_parser_unqualified_id): Likewise.  Lookup a destructor name in
	the object's scope, if valid.
	(cp_parser_global_scope_opt): Add object_scope_valid_p.  Update
	callers.
	(cp_parser_postfix_dot_deref_expression): Set object_scope.
	* pt.c (tsubst_copy_and_build): Lookup dependent dtor name here.

2006-08-30  Jason Merrill  <jason@redhat.com>

	PR c++/26670
	* class.c (check_field_decls): Don't unset TYPE_PACKED until all
	the fields have been processed.

2006-08-29  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/28349
	* call.c (build_x_va_arg): Remove the reference type
	from the type before creating the pointer type.

2006-08-29  J"orn Rennecke  <joern.rennecke@st.com>

	PR c++/28139
	* except.c (expand_start_catch_block): Use correct types for bitwise
	copy.

2006-08-28  Jason Merrill  <jason@redhat.com>

	PR c++/26670
	* class.c (check_field_decls): Unset TYPE_PACKED (t) if one of the
	fields can't be packed.

	PR c++/26577
	* cvt.c (convert_to_void): Don't automatically load from volatiles
	of TREE_ADDRESSABLE type.

2006-08-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28860
	* cp-tree.h (maybe_process_partial_specialization): Return
	tree instead of void.
	* parser.c (cp_parser_class_head): Use return value of
	maybe_process_partial_specialization.
	* pt.c (maybe_process_partial_specialization): Return error_mark_node
	for broken specializations, TYPE otherwise.  Check for template
	template parameters.

2006-08-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28058
	* pt.c (register_specialization): Return error_mark_node for
	specialization-after-instantiation.
	* decl2.c (mark_used): Mark the main function used when one of its
	clones is used.

2006-08-27  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/26573
	* class.c (check_field_decls): Don't issue error about
	local classes containing static data members.

2006-08-26  Joseph S. Myers  <joseph@codesourcery.com>

	PR c++/24009
	* parser.c (struct cp_token): Add input_file_stack_index.
	(eof_token): Update.
	(cp_lexer_get_preprocessor_token): Save input_file_stack_tick.
	(cp_lexer_set_source_position_from_token): Restore input file
	stack.

2006-08-26  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/28736
	PR c++/28737
	PR c++/28738
	* pt.c (process_template_parm): Store invalid template
	parameters as a TREE_LIST with a TREE_VALUE of error_mark_node.
	(push_inline_template_parms_recursive): Check for template
	parameters having a TREE_VALUE of error_mark_node rather than
	check the parameter itself.
	(mangle_class_name_for_template): Likewise.
	(comp_template_parms): When comparing the individual template
	parameters, return 1 if either is error_mark_node.
	(current_template_args): Robustify.
	(redeclare_class_template): Likewise.

2006-08-26  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28588
	* class.c (resolve_address_of_overloaded_function): Add
	access_path parameter.  Perform access checks.
	(instantiate_type): Adjust call to
	resolve_address_of_overloaded_function.  Remove unnecessary code.
	* tree.c (is_overloaded_fn): Document.  Return 2 when there are
	acutally multiple functions.
	(really_overloaded_fn): Use is_overloaded_fn.
	* mangle.c (write_expression): Handle BASELINKs.
	* cp-tree.h (really_overloaded_fn): Return bool.
	(baselink_for_fns): Declare.
	* search.c (lookup_member): Check access for single static
	functions here.
	* pt.c (convert_nontype_argument_function): Handle BASELINKs.
	(tsubst_copy_and_build): Generate BASELINKs for template-ids.
	* semantics.c (finish_call_expr): Use baselink_for_fns.
	(baselink_for_fns): New function.
	(finish_id_expression): Use it.
	* parser.c (cp_parser_template_argument): Don't strip BASELINKs.

	PR c++/28595
	* pt.c (tsubst): Issue errors about attempts to create VLAs at
	template-instantiation time.

2006-08-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28853
	* typeck2.c (cxx_incomplete_type_diagnostic): Handle template
	template parameters.  Improve error message for template type
	parameters.

	PR c++/28852
	* cp-tree.h (grok_op_properties): Return bool instead of void.
	* decl.c (grokfndecl): Discard invalid operator declarations.
	(copy_fn_p): Revert change for PR 27547.
	(grok_op_properties): Return error status (true on success).
	* pt.c (tsubst_decl): Discard invalid operator declarations.

2006-08-25  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28056
	* decl.c (grokdeclarator): Disallow declarations with qualified
	names in local scopes.

2006-08-25  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/27787
	* decl.c (make_typename_type): Only try and resolve it when
	context is not dependent.  Refactor.
	* decl2.c (check_classfn): Push to class scope before looking for
	the function.

2006-08-24  Danny Smith   <dannysmith@users.sourceforge.net>

	PR driver/28528
	* g++spec.c (lang_specific_driver): Always check if we need to
	swallow a space-separated  arg to '-x'.
	* lang-specs.h: Don't create ouput files for '-xc++-header'
	if -fsyntax-only.

2006-08-23  Jason Merrill  <jason@redhat.com>

	PR c++/27714
	* pt.c (push_template_decl_real): A friend template with class
	scope isn't primary.

2006-08-23  Benjamin Smedberg <benjamin@smedbergs.us>

	PR c++/28687
	* rtti.c (build_dynamic_cast, build_dynamic_cast_1):
	Move -fno-rtti check to be more specific.

2006-08-22  Jason Merrill  <jason@redhat.com>

	PR c++/23372
	* call.c (build_over_call): Don't make a copy here if build_call
	will make one too.

2006-08-22  Andrew Pinski  <pinskia@physics.uc.edu>

	PR C++/28450
	* cp/init.c (build_zero_init): Handle VECTOR_TYPE and
	COMPLEX_TYPEs.

2006-08-22  Simon Martin  <simartin@users.sourceforge.net>

	PR c++/28420
	* parser.c (cp_parser_postfix_expression): Make sure that the
	saved value for parser->type_definition_forbidden_message is
	restored before returning to avoid an invalid free().

2006-08-22  Jason Merrill  <jason@redhat.com>

	PR c++/28659
	* typeck.c (merge_types): If either of the types have the right
	attributes, return that one.

	* tree.c (cp_build_type_attribute_variant): Make sure we aren't
	doing this to class types.
	* typeck.c (original_type): Deal with type quals properly.

2006-08-21  Jason Merrill  <jason@redhat.com>

	PR c++/27115
	* semantics.c (finish_stmt_expr_expr): Don't try to voidify here,
	just leave the expression as it is.
	(finish_stmt_expr): If the statement-expression has class type,
	wrap it in a TARGET_EXPR.
	* cp-gimplify.c (cp_gimplify_init_expr): Don't bother with
	CLEANUP_POINT_EXPR.
	* except.c (build_throw): Give the CLEANUP_POINT_EXPR void type.

2006-08-21  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/26269
	* decl.c (duplicate_decls): Return early if either
	newdecl or olddecl is error_mark_node.

	 PR c++/28505
	* decl.c (grokdeclarator): Return early after
	issuing diagnostic about an incomplete type.

	PR c++/28741
	* tree.c (decl_anon_ns_mem_p): Robustify.
	* decl2.c (determine_visibility): Likewise.

2006-08-20  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28341
	* tree.c (cast_valid_in_integral_constant_expression_p): New
	function.
	* cp-tree.h (tsubst_copy_and_build): Adjust prototype.
	* pt.c (tsubst_expr): Add integral_constant_expression_p
	parameter.
	(fold_non_dependent_expr): Adjust callers of
	tsubst_{expr,copy_and_build}.
	(tsubst_friend_function): Likewise.
	(tsubst_template_arg): Likewise.
	(tsubst_default_argument): Likewise.
	(tsubst_decl): Likewise.
	(tsubst): Likewise.
	(tsubst_omp_clasuses): Likewise.
	(regenerate_decl_fromp_template): Likewise.
	(instantiate_decl): Likewise.
	(tsubst_initializer_list): Likewise.
	(tsubst_enum): Likewise.
	(tsubst_expr): Use RECUR throughout.
	(tsubst_copy_and_build): Change definition of RECUR.  Do not allow
	invalid casts in integral constant expressions.
	* parser.c (cp_parser_postfix_expression): Use
	cast_valid_in_integral_constant_expression_p.
	(cp_parser_cast_expression): Likewise.
	(cp_parser_functional_cast): Likewise.

	PR c++/28346
	* pt.c (tsubst_qualified_id): Do not strip references from
	OFFSET_REFs.

2006-08-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28606
	* parser.c (cp_parser_diagnose_invalid_type_name): Handle BIT_NOT_EXPR.
	Fix formatting.
	(cp_parser_parse_and_diagnose_invalid_type_name): Tighten condition
	for valid type-names.
	(cp_parser_unqualified_id): Fix error handling for destructors.

	PR c++/28710
	* decl.c (xref_tag): Improve error message.  Return early on error.

	PR c++/28711
	* pt.c (tsubst_copy_and_build) <case CONSTRUCTOR>: Robustify.

2006-08-17  Paolo Bonzini  <bonzini@gnu.org>

	PR c++/28573
	* semantics.c (finish_offsetof): Add new argument to fold_offsetof.

2006-08-16  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/28302
	* typeck.c (build_unary_op <case BIT_NOT_EXPR:>): Don't call
	perform_integral_promotions for non integral type.

2006-08-16  Jason Merrill  <jason@redhat.com>

	PR c++/28385
	* pt.c (tsubst) [TEMPLATE_TYPE_PARM]: Ignore quals from template
	if arg is a function.

2006-08-16  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28593
	* init.c (build_new): Return early on invalid placement.

2006-08-15  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/28594
	* pt.c (process_template_parm): Robustify.

2006-08-14  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28288
	PR c++/14556
	* operators.def: Remove <?, ?>, <?=, and >?= operators.
	* parser.c: Remove CPP_MIN, CPP_MAX, CPP_MIN_EQ, and CPP_MAX_EQ.
	(cp_parser_warn_min_max): Remove.

2006-08-11  Jason Merrill  <jason@redhat.com>

	PR c++/28559
	* parser.c (cp_parser_elaborated_type_specifier): Also ignore
	attributes applied to a TYPENAME_TYPE.

2006-08-09  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/28637
	* pt.c (coerce_template_parms): Copy across the
	invalid template arguments to the new template inner arguments.
	(retrieve_specialization): Robustify.

	PR c++/28638
	* pt.c (coerce_template_template_parms): Robustify.

	PR c++/28639
	* error.c (dump_template_parms): Robustify.

	PR c++/28640
	* pt.c (redeclare_class_template): Robustify.

	PR c++/28641
	* pt.c (type_unification_real): Robustify.

2006-08-03  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/28347
	* decl.c (start_decl): Return error_mark_node if a
	diagnostic was issed for an invalid typedef initialization.

2006-08-03  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27508
	* parser.c (cp_parser_unqualified_id): Check for invalid scopes
	when parsing destructor names.

	PR c++/28274
	* decl.c (duplicate_decls): Call check_default_args here.
	(start_preparsed_function): Do not call check_default_args.
	* name-lookup.c (pushdecl_maybe_friend): Only call
	check_default_args if duplicate_decls got bypassed.

2006-08-02  Richard Guenther  <rguenther@suse.de>

	PR c++/28479
	Revert
	2006-07-05  Richard Guenther  <rguenther@suse.de>
	Andrew Pinski  <pinskia@gcc.gnu.org>

	PR c++/27084
	* cp-objcp-common.c (cxx_types_compatible_p): Ignore
	top level qualifiers for pointer type comparisons.

2006-08-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28557
	* pt.c (tsubst_baselink): Substitute into BASELINK_OPTYPE.

2006-07-31  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28523
	* tree.c (stabilize_expr): Tweak documentation.  Add assertion.
	(stabilize_call): Tweak documentation.
	(stabilize_init): Only call stabilize_call for calls.

2006-08-01  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28432
	* decl2.c (check_classfn): Remove early return.
	* search.c (lookup_member): Return NULL with bad type.

2006-08-01  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28256
	* decl.c (check_initializer): Check for 1 initializer on scalar types.

2006-08-01  Daniel Jacobowitz  <dan@codesourcery.com>

	PR debug/23336
	* pt.c (tsubst_copy_and_build): Mark used enum types.
	* semantics.c (finish_id_expression): Likewise.

2006-07-31  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/6634
	* decl.c (grokdeclarator): Check whether "long" or "short" was
	specified for non-integral types.

2006-07-28  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* Make-lang.in: Use $(HEADER_H) instead of header.h in dependencies.

2006-07-28  Lee Millward  <lee.millward@codesourcery.com>

	PR c++/27668
	PR c++/27962
	* pt.c (process_template_parm) Store invalid template
	parameters as error_mark_node in the paramater list.
	(push_inline_template_parms_recursive): Handle invalid
	template parameters.
	(comp_template_parms): Likewise.
	(check_default_tmpl_arg): Likewise.
	(coerce_template_template_parms): Likewise.
	(mangle_class_name_for_template): Likewise.
	(tsubst_template_parms): Likewise.
	* error.c (dump_template_argument_list): Likewise.

2006-07-28  Kazu Hirata  <kazu@codesourcery.com>

	* cp-tree.h: Fix a comment typo.

2006-07-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27572
	* decl.c (grokdeclarator): Return error_mark_node after invalid
	typedef.

2006-07-23  Daniel Jacobowitz  <dan@codesourcery.com>

	PR c++/28460
	* decl.c (grokvardecl): Use FROB_CONTEXT.
	* pt.c (register_specialization): Likewise.

2006-07-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28025
	* cp-tree.h (LOOKUP_HIDDEN): New macro.  Reformat comments.
	* name-lookup.c (unqualified_namespace_lookup): There is no way to
	have a hidden name in non-namespace scopes.
	* pt.c (tsubst_friend_class): Look for hidden names.
	* decl.c (lookup_and_check_tag): Fix typo in comment.

	* semantics.c (finish_compound_literal): Fix typo in comment.

2006-07-21  Jason Merrill  <jason@redhat.com>

	* decl2.c (determine_visibility): Don't propagate visibility from
	type to decl.
	(constrain_class_visibility): Don't warn in system headers.
	Don't warn about pointer fields.

2006-07-20  Mike Stump  <mrs@apple.com>

	* decl2.c (determine_visibility_from_class): Don't use hidden
	visibility for explicit instantiations.

2006-07-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28250
	* pt.c (tsubst_expr): Only apply DECL_TEMPLATE_INSTANTIATED to
	valid decls.  Cleanup.

	PR c++/28363
	* semantics.c (check_template_template_default_arg): Simplify
	error handling.

2006-07-20  Jason Merrill  <jason@redhat.com>

	PR c++/28407
	* decl.c (grokvardecl): Set DECL_THIS_STATIC on file-scope
	const variables with implicit internal linkage.
	* tree.c (decl_linkage): Only return lk_external if it's set.

	PR c++/28409
	* decl2.c (constrain_visibility): Ignore the anonymous namespace
	for extern "C" decls.
	(VISIBILITY_STATIC): Rename to VISIBILITY_ANON.

	* decl2.c (constrain_visibility): Remove specified and reason
	parameters.  Don't touch decls that already have explicit visibility.
	(determine_visibility): Do copy DECL_VISIBILITY_SPECIFIED from
	template.
	(determine_visibility_from_class): Reverse sense of
	DECL_VISIBILITY_SPECIFIED test for target-specific visibility rules.
	(constrain_class_visibility): Only complain about member visibility
	if the member type is another class.  Don't change visibility of the
	current class.

2006-07-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28338
	* decl.c (layout_var_decl): Don't call push_local_name here.
	(initialize_artificial_var): Assert artificiality.
	(cp_finish_decl): Call push_local_name here.

2006-07-18  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28337
	* typeck.c (build_binary_op): Short-circuit pointer arithmetic in
	templates.

2006-07-18  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28048
	* semantics.c (check_accessibility_of_qualified_id): Robustify.

	PR c++/28235
	* pt.c (tsubst_decl): Handling substitutions into a static data
	member from within the scope of the tempalte itself.

2006-07-18  Lee Millward  <lee.millward@gmail.com>

	PR c++/28258
	* method.c (locate_copy): Check for non_reference
	returning error_mark_node.

	PR c++/28260
	* decl.c (duplicate_decls): Return error_mark_node
	on ambiguous declaration.

2006-07-18  Steve Ellcey  <sje@cup.hp.com>

	PR c++/27495
	* search.c (adjust_result_of_qualified_name_lookup): Change
	assert to part of if statement.

2006-07-17  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28291
	* decl.c (reshape_init_class): Return error_mark_node on error.

2006-07-17  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28304
	* decl2.c (check_classfn): Return NULL_TREE on error.

2006-07-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28250
	* name-lookup.c (pushdecl_maybe_friend): Return early on
	error_mark_node.
	* except.c (expand_start_catch_block): Use error_mark_node instead
	of NULL_TREE for invalid decls.
	* parser.c (cp_parser_exception_declaration): Return error_mark_node
	on invalid catch parameter. Simplify.

2006-07-16  Jakub Jelinek  <jakub@redhat.com>

	PR c++/28370
	* decl2.c (note_vague_linkage_var): Removed.
	(finish_static_data_member_decl): Add decl to pending_statics vector
	directly.  Do it even for non-public decls.

2006-07-15  Lee Millward  <lee.millward@gmail.com>

	PR c++/28292
	* decl2.c (acceptable_java_type): Robustify. Use
	proper Boolean return type instead of return 1.
	(check_java_method): Don't issue error about
	type not being an acceptable Java parameter if
	it's error_mark_node.

	PR c++/28269
	* parser.c (cp_parser_elaborated_type_specifier):
	Return early if an invalid type was detected.

2006-07-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28249
	* parser.c (cp_parser_check_decl_spec): New function.
	(cp_parser_decl_specifier_seq): Factor out check for repeated
	decl-specifiers into cp_parser_check_decl_spec. Use it.
	(cp_parser_type_specifier_seq): Use it.

	PR c++/28294
	* semantics.c (finish_offsetof): Use TREE_OPERAND for COMPONENT_REFs
	only.

	PR c++/28387
	* decl2.c (cplus_decl_attributes): Check for invalid decls.

2006-07-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28343
	* decl.c (cp_finish_decl): Check asmspec_tree for error_mark_node.
	* decl2.c (grokfield): Likewise.

2006-07-12  Geoffrey Keating  <geoffk@apple.com>

	* decl2.c (determine_visibility): Don't change visibility of
	function locals because of -fvisibility-inlines-hidden.

2006-07-12  Jason Merrill  <jason@redhat.com>

	PR c++/28217
	* semantics.c (note_decl_for_pch): Don't premangle templates.

2006-07-12  Martin Michlmayr  <tbm@cyrius.com>

	* typeck.c (string_conv_p): Remove spurious quotation mark in
	warning.

2006-07-07  Lee Millward  <lee.millward@gmail.com>
	    Andrew Pinski  <pinskia@gmail.com>

	PR c++/27820
	* decl.c (define_label): Return error_mark_node on error.
	* semantics.c (finish_label_stmt): Don't call
	add_stmt for invalid labels.

2006-07-06  Jason Merrill  <jason@redhat.com>

	PR c++/28279
	* decl2.c (finish_static_data_member_decl): Don't assert
	TREE_PUBLIC.

2006-07-05  Jason Merrill  <jason@redhat.com>

	PR c++/13983
	PR c++/17519
	* class.c (check_field_decls): Check TYPE_PACKED after
	stripping array types.
	(finish_struct_bits): Don't copy TYPE_SIZE here.

	PR c++/18681
	* friend.c (is_friend): Fix DR 45 implementation.

2006-07-05  Richard Guenther  <rguenther@suse.de>
	Andrew Pinski  <pinskia@gcc.gnu.org>

	PR c++/27084
	* cp-objcp-common.c (cxx_types_compatible_p): Ignore
	top level qualifiers for pointer type comparisons.

2006-07-01  Jason Merrill  <jason@redhat.com>

	PR c++/28215
	* method.c (make_thunk): Unset DECL_USE_TEMPLATE and
	DECL_TEMPLATE_INFO.

2006-06-30  Jason Merrill  <jason@redhat.com>

	PR c++/26577
	* call.c (build_new_method_call): Force evaluation of the
	instance pointer, not the object.

2006-06-30  Kazu Hirata  <kazu@codesourcery.com>

	* decl2.c: Fix a comment typo.

2006-06-30  Jason Merrill  <jason@redhat.com>

	PR c++/18698
	* decl2.c (grokfield): Only try to treat the decl as an access
	declaration if the scope is a class.

2006-06-29  Jason Merrill  <jason@redhat.com>

	PR c++/26905
	PR c++/26612
	PR c++/27000
	PR c++/26984
	PR c++/19134
	* decl2.c (determine_visibility): Overhaul.
	(determine_visibility_from_class): Likewise.
	(min_vis_r, type_visibility, constrain_visibility): New fns.
	(constrain_visibility_for_template): Likewise.
	(constrain_class_visibility): Likewise.
	* decl.c (cp_finish_decl): Call determine_visibility for function
	decls, too.
	* name-lookup.c (pushtag): Call determine_visibility.
	* decl.c (duplicate_decls): Don't copy visibility from template to
	specialization.
	* pt.c (check_explicit_specialization): Likewise.
	(lookup_template_class, tsubst_decl): Call determine_visibility.
	* class.c (finish_struct_1): Call constrain_class_visibility.

	PR c++/26905
	PR c++/21675
	PR c++/17470
	* parser.c (cp_parser_explicit_instantiation): Pass the attributes
	to grokdeclarator.
	(cp_parser_type_specifier): Allow 'enum __attribute ((...)) E'.
	(cp_parser_enum_specifier): Likewise.
	(cp_parser_elaborated_type_specifier): Apply attributes if this
	declares only the class.
	(cp_parser_class_specifier): Apply leading attributes immediately.
	* semantics.c (begin_class_definition): Add attributes parameter,
	apply them to the type.

	PR c++/21581
	PR c++/25915
	* tree.c (decl_anon_ns_mem_p): New function.
	* cp-tree.h: Declare it.
	* decl2.c (determine_visibility): Make anonymous namespace
	members static.
	(min_vis_r, constrain_visibility): Likewise.
	* rtti.c (create_pseudo_type_info): Set TREE_PUBLIC on
	pseudo-types.
	* decl.c (cxx_init_decl_processing): Set TREE_PUBLIC on
	global_namespace.
	* name-lookup.c (push_namespace_with_attribs): Don't set TREE_PUBLIC
	on anonymous namespaces.

2006-06-28  Jason Merrill  <jason@redhat.com>

	PR c++/27424
	* pt.c (convert_template_argument): Pass all template arguments
	on to coerce_template_template_parms.

2006-06-25  Lee Millward  <lee.millward@gmail.com>
	    Mark Mitchell <mark@codesuorcery.com>

	PR c++/28054
	* decl2.c (grokbitfied): Remove check for grokdeclarator
	returning NULL_TREE, instead check for error_mark_node
	to indicate failure.
	* decl.c (grokdeclarator): Adjust block comment.

2006-06-25  Lee Millward  <lee.millward@gmail.com>

	PR c++/28051
	* mangle.c (mangle_conv_op_name_for_type): Check for
	invalid types.
	* name-lookup.c (push_class_level_binding): Robustify.
	(do_class_using_decl): Return early if name is error_mark_node.

2006-06-23  Steve Ellcey  <sje@cup.hp.com>

	PR c++/28114
	* name-lookup.c (pushtag): Return if we have error_mark_node.

2006-06-23  Steve Ellcey  <sje@cup.hp.com>

	PR c++/27019
	* typeck2.c (process_init_constructor_array): Set ce->value on errors.

2006-06-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28112
	* parser.c (cp_parser_attribute_list): Skip attributes with invalid
	arguments.  Fix comment.

	PR c++/11468
	* init.c (build_new_1): Handle error_mark_nodes returned by
	build_java_class_ref.
	(build_java_class_ref): Do not abort compilation, but return
	error_mark_node.  Improve error message.  Fix indentation.

2006-06-23  Danny Smith   <dannysmith@users.sourceforge.net>

	PR target/27789
	* decl.c (start_decl): Check that dllimports are not initialized.

2006-06-22  Lee Millward  <lee.millward@gmail.com>

	PR c++/27805
	* typeck2.c (build_m_component_ref): Use error_operand_p.

	PR c++/27821
	* decl.c (grokdeclarator): Return error_mark_node on
	invalid uses of the scope resolution operator.

2006-06-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28111
	* pt.c (determine_specialization): Check for invalid decls.

	PR c++/28110
	* pt.c (unify) <case TEMPLATE_PARM_INDEX>: Check for invalid
	parameters.

	PR c++/28109
	* rtti.c (get_tinfo_decl_dynamic): Robustify.

2006-06-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/28052
	* init.c (push_base_cleanups): Skip members with invalid types.
	* typeck.c (build_class_member_access_expr): Robustify.

2006-06-19  Mark Mitchell  <mark@codesourcery.com>

	* pt.c (instantiate_template): Fix typo in comment.

2006-06-19  Richard Guenther  <rguenther@suse.de>

	* parser.c (CP_LEXER_BUFFER_SIZE): Adjust to assure near
	power-of-two token vector size.

2006-06-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28016
	* decl.c (cp_finsh_decl): Do not emit uninstantiated static data
	members.

	PR c++/27979
	* call.c (standard_conversion): Strip cv-qualifiers from bitfield
	types.

	PR c++/27884
	* decl.c (have_extern_spec): Remove.
	(start_decl): Do not check have_extern_spec.
	(start_function): Likewise.
	* cp-tree.h (have_extern_spec): Remove.
	* parser.c (cp_parser_linkage_specification): Don't set
	have_extern_spec.
	(cp_parser_init_declarator): Likewise.
	(cp_parser_parameter_declaration): Do not treat parameters as
	within the scope of an unbraced linkage specification.

2006-06-15  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27689
	* cp-tree.h (CLASSTYPE_SPECIALIZATION_OF_PRIMARY_TEMPLATE_P): New
	macro.
	* pt.c (unify): Use it.

	PR c++/27666
	* call.c (build_conditional_expr): Robustify.

	PR c++/27640
	* pt.c (instantiate_template): Set processing_template_decl to
	zero while performing substitutions.

2006-06-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27665
	* parser.c (cp_parser_unqualified_id): Use constructor_name_p to
	identify destructors.
	(cp_parser_nested_name_specifier_opt): Remove invalid
	optimization.
	(cp_parser_template_id): Refine heuristic for determining whether
	we are entering a scope.

	PR c++/27648
	* parser.c (cp_parser_declarator): Robustify.

	PR c++/26559
	* pt.c (tsubst_expr): Use finish_omp_atomic.
	(value_dependent_expression_p): All CALL_EXPRs are dependent.
	* semantics.c (finish_omp_atomic): Rework to use standard
	paradigms for handling non-dependent expressions.

2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* typeck.c (build_modify_expr): Tidy diagnostic message.

2006-06-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/28018
	* typeck.c (build_modify_expr): Disallow array assignment.

2006-06-14  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cp-tree.def: Fix typo.

2006-06-13  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27227
	* decl.c (decls_match): Allow an extern "C" variable declarations
	from different namespaces to match.
	(duplicate_decls): Disallow redeclaring a variable with a
	different linkage specification.

2006-06-13  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/27793
	* cp-tree.h (cxx_int_tree_map): New struct.
	(struct language_function): Add extern_decl_map field.
	* name-lookup.c (pushdecl_maybe_friend): Add x -> t mapping
	to cp_function_chain->extern_decl_map hash table instead of
	copying over DECL_UID.
	* cp-gimplify.c (cxx_int_tree_map_eq, cxx_int_tree_map_hash): New
	functions.
	(cp_genericize_r): Remap DECL_EXTERN local decls using
	cp_function_chain->extern_decl_map hash table.
	* decl.c (finish_function): Clear extern_decl_map.

2006-06-12  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27601
	* semantics.c (finish_offsetof): Handle pseudo-destructors.

	PR c++/27933
	* name-lookup.c (lookup_qualified_name): Always return error_mark_node
	if lookup fails.

	PR c++/27951
	* decl2.c (finish_anon_union): Return early if build_anon_union_vars
	fails.

2006-06-12  Roger Sayle  <roger@eyesopen.com>

	PR c++/21210
	* typeck2.c (build_functional_cast): Use cp_convert to construct
	non-aggregate initializers instead of the user-level build_c_cast.

2006-06-07  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27601
	* cp-tree.h (finish_offsetof): Add prototype.
	* semantics.c (finish_offsetof): New function.
	* parser.c (cp_parser_builtin_offsetof): Call it instead of
	fold_offsetof.
	* pt.c (tsubst_copy_and_build): Likewise.

2006-06-06  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27177
	* call.c (standard_conversion): Require that the derived type be
	complete when performing a derived-to-base conversion.

2006-06-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27819
	* decl.c (cp_finish_decl): Process initializers for static data
	members with non-dependent initializers, even in templates.

	PR c++/27722
	* decl.c (maybe_deduce_size_from_array_init): If the declaration
	is erroneous, give it an erroneous type.
	(layout_var_decl): If the type is erroneous, give up.
	(check_initializer): Likewise.

	PR c++/27807
	* cp-tree.h (TYPE_OBJ_P): New macro.
	(TYPE_PTROB_P): Use it.
	(TYPE_REF_OBJ_P): Likewise.
	* semantics.c (finish_compound_literal): Do not permit compound
	literals of non-object types.

	PR c++/27806
	* typeck.c (original_type): Robustify.

2006-06-05  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27804
	* init.c (constant_value_1): Return decl instead of error_mark_node
	for invalid initializers.

2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/27592
	* rtti.c (build_dynamic_cast_1): Call c_common_truthvalue_conversion
	on operand of the COND_EXPR for the null pointer check.

2006-06-01  Andrew Pinski  <pinskia@physics.uc.edu>

	PR c++/26740
	* typeck.c (build_unary_op): Mark the function as being used.

2006-06-01  Alexandre Oliva  <aoliva@redhat.com>

	PR c++/26660
	* parser.c (cp_parser_initial_pragma): Read one more token for
	caller after reading PCH file in.

2006-05-31  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27801
	* call.c (perform_implicit_conversion): Do not actually perform
	conversions in templates.

	PR c++/26496
	* call.c (resolve_args): Check for invalid uses of bound
	non-static member functions.
	* init.c (build_offset_ref): Return error_mark_node for errors.

	PR c++/27385
	* decl.c (reshape_init): Robustify.
	(reshape_init_array_1): Likewise.

2006-05-30  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27808
	* parser.c (cp_parser_decl_specifier_seq): Issue errors about
	"friend" specifiers that do not appear in class scopes.

	PR c++/27803
	* class.c (check_bitfield_decl): Ensure that all bitfields have
	integral type.

2006-05-29  Kazu Hirata  <kazu@codesourcery.com>

	* pt.c (convert_nontype_argument): Fix a typo in an error
	message.

2006-05-28  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c, decl2.c, parser.c: Fix comment typos.  Follow
	spelling conventions.

2006-05-24  Mark Mitchell  <mark@codesourcery.com>

	PR c++/20103
	* decl.c (cp_make_fname_decl): Don't set DECL_INITIAL to
	error_mark_node to indicate an initialization is OK.
	(start_decl): Likewise.  Adjust call to start_decl_1.
	(start_decl_1): Add initialized parameter.  Simplify.
	* except.c (initialize_handler_parm): Adjust call to
	setart_decl_1.
	(expand_start_catch_block): Let cp_finish_decl initialize catch
	parameters.
	* cp-tree.h (start_decl_1): Adjust prototype.
	* pt.c (tsubst_expr): Don't set DECL_INITIAL to error_mark_node.
	(instantiate_decl): Let cp_finish_decl handle initialization.
	* semantics.c (finish_compound_literal): Create a temporary
	variable for the literal.
	* typeck.c (build_unary_op): Remove COMPOUND_LITERAL_P special
	cases.
	* decl2.c (finish_static_data_member_decl): Don't set
	DECL_INITIAL.
	(grokfield): Do not try to initialize functions.

2006-05-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/20173
	* pt.c (determine_specialization): Disallow partial
	specializations of templates.

2006-05-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27716
	* typeck.c (build_modify_expr): Test arguments for error_operand_p.

	* decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE.

2006-05-21  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27210
	* cp-tree.h (cp_save_expr): New function.
	* init.c (build_new): Correct logic for zero-element array
	warning.  Use cp_save_expr.
	* tree.c (cp_save_expr): New function.

2006-05-21  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27398
	* decl.c (grokdeclarator): Return error_mark_node instead of NULL_TREE
	or void_type_node.

2006-05-19  Mike Stump  <mrs@apple.com>

	* typeck.c (default_conversion): Remove static.

2006-05-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26433
	* cp-tree.h (begin_function_try_block): Change prototype.
	(finish_function_handler_sequence): Likewise.
	* parser.c (cp_parser_function_try_block): Adjust calls.
	* pt.c (tsubst_expr): Adjust calls.
	* semantics.c (begin_function_try_block): Create an artificial
	outer scope.
	(finish_function_handler_sequence): Close it.

2006-05-18  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27471
	PR c++/27506
	* typeck.c (decay_conversion): Convert bitfields to their declared
	types here.  Improve documentation.  Avoid use of cp_convert.
	(default_conversion): Make it static.  Perform integral promotions
	before lvalue-to-rvalue, function-to-pointer, and array-to-pointer
	conversions.
	* init.c (build_init): Remove.
	(expand_default_init): Do not call rvalue.
	* call.c (null_ptr_cst_p): Robustify.
	(build_conditional_expr): Tidy.
	* except.c (build_throw): Do not perform lvalue-to-rvalue
	conversion on operand before initializing temporary.
	* tree.c (convert.h): Include it.
	(convert_bitfield_to_declared_type): Use convert_to_integer, not
	cp_convert.
	(rvalue): Don't convert bitfields to their declared type here.
	* cp-tree.h (build_init): Remove.
	(default_conversion): Likewise.
	* typeck2.c (build_m_component_ref): Do not perform
	lvalue-to-rvalue, function-to-pointer, or array-to-pointer
	conversions here.  Correct error message.

2006-05-17  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26122
	* decl2.c (check_member_template): Remove checks for virtual
	functions.
	* parser.c (cp_parser_function_specifier_opt): Complain about
	virtual templates.
	(cp_parser_pure_specifier): Likewise.

	PR c++/26068
	* parser.c (cp_parser_set_storage_class): Check for
	invalid uses of storage classes on unbraced linkage
	specifications.
	(cp_parser_decl_specifier_seq): Pass keywords, not storage classes,
	to cp_parser_set_storage_class.

2006-05-17  Jakub Jelinek  <jakub@redhat.com>

	PR c++/27491
	* semantics.c (finish_compound_literal): Only set TREE_HAS_CONSTRUCTOR
	on CONSTRUCTORs.

	PR middle-end/27415
	* parser.c (cp_parser_omp_parallel): Set OMP_PARALLEL_COMBINED
	on combined parallel workshare constructs.
	* pt.c (tsubst_expr): Copy OMP_PARALLEL_COMBINED flag.

2006-05-16  H.J. Lu  <hongjiu.lu@intel.com>

	PR driver/26885
	* Make-lang.in (GXX_OBJS): Replace gcc.o with $(GCC_OBJS).

2006-05-15  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27339
	* cp-tree.h (perform_access_checks): New function.
	* semantics.c (perform_access_checks): New function.
	(perform_deferred_access_checks): Use it.
	* parser.c (cp_parser_simple_declaration): Adjust call to
	cp_parser_init_declarator.
	(cp_parser_type_parameter): Do not defer checks in default
	arguments.
	(cp_parser_explicit_specialization): Adjust call to
	cp_parser_single_declaration.
	(cp_parser_init_declarator): Perform template-parameter access
	checks.
	(cp_parser_parameter_declaration): Do not defer checks for
	template parameter default arguments.
	(cp_parser_template_declaration_after_export): Gather access
	checks for template parameters, and pass them to
	cp_parser_single_declaration.
	(cp_parser_template_parameter_access_checks): New function.
	(cp_parser_single_declaration): Add checks parameter.

	PR c++/27505
	* call.c (convert_like_real): Convert bitfields to their declared
	types when forming an rvalue.
	* tree.c (convert_bitfield_to_declared_type): New function.
	(rvalue): Use it.
	* cp-tree.h (convert_bitfield_to_declare_type): Declare it.

2006-05-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27582
	* pt.c (any_dependent_template_arguments_p): Return early on invalid
	argument list.

	PR c++/27581
	* search.c (adjust_result_of_qualified_name_lookup): Skip on
	invalid context_class.

	PR c++/27315
	* pt.c (do_decl_instantiation): Return early on invalid decl.

	PR c++/27559
	* pt.c (push_template_decl_real): Return error_mark_node instead
	of broken decl.

	PR c++/27496
	* pt.c (tsubst_friend_class): Return early on invalid friend
	declarations.

2006-05-14  H.J. Lu  <hongjiu.lu@intel.com>

	* Make-lang.in (cp/decl.o): Add dependency on $(TARGET_H).
	(cp/decl2.o): Likewise.
	(cp/typeck.o): Likewise.
	(cp/cvt.o): Likewise.
	(cp/parser.o): Likewise.
	(cp/call.o): Replace target.h with $(TARGET_H).

2006-05-14  Alexandre Oliva  <aoliva@redhat.com>

	* pt.c (build_non_dependent_expr): Leave ADDR_EXPR of
	COMPONENT_REF alone.

2006-05-11  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27547
	* decl.c (copy_fn_p): Return early on non-member functions.

2006-05-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27447
	* decl2.c (build_memfn_type): Skip invalid functions and class types.

2006-05-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27427
	* pt.c (convert_nontype_argument): Return early on invalid arguments.

	* pt.c (process_template_parm): Remove superfluous temporary.

	PR c++/27430
	* pt.c (process_template_parm): Handle erroneous non-type parameters.

	PR c++/27423
	* typeck.c (convert_for_initialization): Skip erroneous types.

	PR c++/27422
	* typeck.c (convert_arguments): Return early on args with
	invalid types.

2006-05-03  Aldy Hernandez  <aldyh@redhat.com>

	PR/21391
	* typeck.c (build_static_cast_1): Save casted types in used types
	hash table.
	(build_reinterpret_cast_1): Same.
	* rtti.c (build_dynamic_cast_1): Same.

2006-05-04  Jakub Jelinek  <jakub@redhat.com>

	PR c++/27359
	* parser.c (cp_parser_omp_for_loop): Only call
	cp_parser_abort_tentative_parse if cp_parser_parse_definitely was not
	called.

2006-05-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27102
	* decl.c (grokdeclarator): Robustify checks for defining members
	of incomplete types.

	PR c++/27309
	* class.c (add_method): Call grok_special_member_properties.
	* decl.c (grokdeclarator): Don't call it here.
	(copy_fn_p): A TEMPLATE_DECL is never a copy constructor or
	assignment operator.  Set TYPE_HAS_CONSTURCTOR if DECL is a
	constructor.
	(start_method): Don't call grok_special_member_properties.
	* method.c (implicitly_declare_fn): Likewise.
	* pt.c (instantiate_class_template): Likewise.
	* decl2.c (grokfield): Likewise.

2006-05-02  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/27337
	* cp-gimplify.c (cxx_omp_privatize_by_reference): New function.
	* cp-tree.h (cxx_omp_privatize_by_reference): New prototype.
	* cp-objcp-common.h (LANG_HOOKS_OMP_PRIVATIZE_BY_REFERENCE): Define.

2006-04-30  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27094
	* pt.c (tsubst_default_argument): Increment function_depth around
	call to tsubst_expr.
	* parser.c (cp_parser_parameter_declaration): Likewise.
	* decl2.c (mark_used): Tidy.

2006-04-30  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27278
	* decl.c (grok_op_properties): Skip operators with invalid args
	when checking for class-type or enum-type args.

2006-04-29  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/27279
	* decl.c (copy_fn_p): Skip functions with invalid first arg.

2006-04-27  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27292
	* tree.c (rvalue): Convert bitfields to their declared types.

	PR c++/27102
	* typeck2.c (cxx_incomplete_type_diagnostic): Handle
	TYPENAME_TYPE.

2006-04-24  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27292
	* typeck.c (decay_conversion): Don't adjust bitfield types.
	(perform_integral_promotions): Treat bitfield enums as enums, not
	as short integer types.
	* tree.c (rvalue): Convert bitfields to their correct types.

2006-04-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/19963
	* class.c (layout_class_type): Skip fields with invalid types.

2006-04-23  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26912
	* cp-tree.h (build_this_parm): Declare.
	(grok_method_quals): Remove.
	(build_memfn_type): Declare.
	(build_artificial_parm): Declare.
	(do_friend): Remove quals parameter.
	* decl.c (build_this_parm): New function.
	(grokfndecl): Use it.  Do not pass quals to grokclassfn.
	(grokdeclarator): Rename quals to memfn_quals.  Avoid allocating
	unnecessary TYPE_DECLs.  Correct qualification of member function
	types.  Tidy.
	* method.c (implicitly_declare_fn): Use build_this_parm.
	* friend.c (do_friend): Remove quals parameter.
	* decl2.c (grok_method_quals): Remove.
	(build_memfn_type): New function.
	(build_artificial_parm): Give it external linkage.
	(grokclassfn): Remove quals parameter.  Do not build "this"
	PARM_DECL here.

	PR c++/26534
	* cp-tree.h (is_bitfield_expr_with_lowered_type): New function.
	* typeck.c (is_bitfield_expr_with_lowered_type): New function.
	(decay_conversion): Convert bitfield expressions to the correct
	type.
	(build_modify_expr): Remove spurious conversions.
	* class.c (layout_class_type): Modify the type of bitfields to
	indicate a limited range.
	* call.c (standard_conversion): Adjust the type of bitfield
	expressions used in an rvalue context.
	(build_conditional_expr): Likewise.

2006-04-22  Kazu Hirata  <kazu@codesourcery.com>

	* decl.c: Fix comment typos.

2006-04-21  Eric Christopher  <echristo@apple.com>

	* decl.c: Fix typo in function name.

2006-04-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/26558
	* parser.c (cp_parser_class_name): Check for invalid typenames.
	Rearrange code.

	PR c++/26739
	* pt.c (tsubst_friend_function): Return early if
	pushdecl_namespace_level fails.

	PR c++/26036
	* typeck.c (convert_arguments): Return error_mark_node instead of
	error_mark_list.
	* cp-tree.h (error_mark_list): Remove declaration.
	* decl.c (error_mark_list): Remove definition.
	(cxx_init_decl_processing): Do not initialize error_mark_list.

	PR c++/10385
	* rtti.c (build_dynamic_cast_1): Check for invalid conversions
	before calling convert_to_reference.
	* cvt.c (convert_to_reference): Assert that reftype is a
	REFERENCE_TYPE.

2006-04-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/27102
	* class.c (currently_open_class): Tidy.
	* decl.c (grokdeclarator): If we encounter an erroneous
	declarator, assume that we have already issued an error message
	and return.  Return error_mark_node instead of NULL_TREE in more
	places.  Issue errors about function definitions that do not have
	a function declarator.  Check for complete types for all function
	definitions.
	* cp-tree.h (cp_error_declarator): Remove.
	(currently_open_class): Change return type.
	* parser.c (cp_parser_id_expression): Add optional_p parameter.
	(cp_parser_parse_diagnose_invalid_type_name): Adjust calls.
	(cp_parser_id_expression): Likewise.
	(cp_parser_unqualified_id): If the name is optional, return
	NULL_TREE.
	(cp_parser_postfix_dot_deref_expression): Adjust calls.
	(cp_parser_type_parameter): Likewise.
	(cp_parser_unqualified_id): Likewise.
	(cp_parser_direct_declarator): Likewise.
	(cp_parser_declarator_id): Add optional_p parameter.
	(cp_parser_function_definition_from_specifiers_and_declarator):
	Assume that start_function indicates failure only if it has issued
	an error.
	(cp_parser_omp_var_list_no_open): Adjust calls.

2006-04-17  Janis Johnson  <janis187@us.ibm.com>

	PR c++/26114, c++/26115
	* typeck.c (cxx_mark_addressable): Restore check for extra_warnings.
	* class.c (check_field_decls): Ditto.

2006-04-17  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* init.c (build_offset_ref): Remove superfluous temporary.

2006-04-16  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26365
	* typeck.c (finish_class_member_access_expr): Robustify

2006-04-15  Kazu Hirata  <kazu@codesourcery.com>

	* Make-lang.in (cp/pt.o): Depend on vecprim.h.
	* pt.c: Include vecprim.h.
	(inline_parm_levels): Change the type to VEC(int,heap) *.
	(inline_parm_levels_used): Remove.
	(maybe_begin_member_template_processing,
	maybe_end_member_template_processing): Use VEC instead of
	VARRAY.

	* cp/call.c: Fix comment typos.

2006-04-12  Mark Mitchell  <mark@codesourcery.com>

	* parser.c (cp_parser_init_declarator): Initialize local variables
	aggressively.

2006-04-12  Roger Sayle  <roger@eyesopen.com>

	* parser.c (cp_parser_init_declarator): Initialise
	is_parenthesized_init to false to avoid compiler warning.

2006-04-11  Mark Mitchell  <mark@codesourcery.com>

	* cp-tree.h (build_operator_new_call): Adjust prototype.
	(build_new_method_call): Likewise.
	(build_op_delete_call): Likewise.
	* init.c (build_raw_new_expr): New function.
	(build_new_1): Pass information as parameters, rather than
	bundling it into a NEW_EXPR.
	(build_new): Adjust accordingly.
	(build_vec_delete_1): Adjust for changes to build_op_delete_call.
	(build_delete): Likewise.
	* decl.c (finish_destructor_body): Likewise.
	* call.c (build_operator_new_call): Return the allocation function
	used.
	(build_op_delete_call): Take allocation function as parameter.
	(build_special_member_call): Adjust call to build_new_method_call.
	(build_new_method_call): Return function called.
	* pt.c (tsubst_copy_and_build): Adjust call to
	build_new_method_call.
	* semantics.c (finish_call_expr): Likewise.
	* parser.c (cp_parser_postfix_expression): Likewise.
	* typeck2.c (cxx_incomplete_type_diagnostic): Refer to
	"incomplete", not "undefined", types.

	PR c++/26295
	* decl.c (grokdeclarator): Remove namespace-handling code for
	pointers-to-members.
	* parser.c (cp_parser_ptr_operator): Check for qualified names
	using namespaces.

	PR c++/26122
	* parser.c (cp_parser_init_declarator): Adjust logic for deciding
	whether or not to look for a pure-specifier.
	(cp_parser_member_declaration): Likewise.

2006-04-08  Kazu Hirata  <kazu@codesourcery.com>

	* decl2.c, pt.c, semantics.c: Fix comment typos.

2006-04-06  Roger Sayle  <roger@eyesopen.com>

	* call.c (null_ptr_cst_p): Add explicit TREE_CONSTANT_OVERFLOW check.

2006-04-05  Jason Merrill  <jason@redhat.com>

	* name-lookup.c (push_namespace_with_attribs): Temporarily disable
	default hidden visibility for anonymous namespace.

2006-03-29  Roger Sayle  <roger@eyesopen.com>

	PR c++/22494
	* init.c (build_vec_delete_1): Convert BASE pointer's type to
	the base pointer type to avoid a type mismatch in the EQ_EXPR.

2006-03-24  Carlos O'Donell  <carlos@codesourcery.com>

	* search.c (maybe_suppress_debug_info): If
	flag_emit_class_debug_always then don't suppress.

2006-03-22  Jason Merrill  <jason@redhat.com>

	* name-lookup.c (push_namespace_with_attribs): Only apply hidden
	visibility to anonymous namespaces if HAVE_GAS_HIDDEN.

2006-03-21  Jakub Jelinek  <jakub@redhat.com>

	PR c++/26691
	* cp-gimplify.c (cxx_omp_clause_apply_fn): Handle default arguments.

2006-03-21  Jason Merrill  <jason@redhat.com>

	PR c++/21581
	* parser.c (cp_parser_declaration): Support attributes on
	anonymous namespaces.
	* name-lookup.c (push_namespace_with_attribs): Anonymous
	namespaces default to hidden visibility.

2006-03-20  Jason Merrill  <jason@redhat.com>

	PR c++/21764, c++/19238
	* decl.c (cp_finish_decl): Call determine_visibility later.
	(start_preparsed_function): Likewise.
	* cp-tree.h (CP_TYPE_CONTEXT, TYPE_NAMESPACE_SCOPE_P): New macros.
	(TYPE_CLASS_SCOPE_P, TYPE_FUNCTION_SCOPE_P): New macros.
	* name-lookup.h (struct cp_binding_level): Add has_visibility
	bitfield.
	* name-lookup.c: Include c-pragma.h.
	(push_namespace_with_attribs): Split out from push_namespace.
	Push visibility if appropriate.  Set TREE_PUBLIC on namespaces.
	(leave_scope): Pop visibility if appropriate.
	* decl2.c (determine_visibility_from_class): Split out from...
	(determine_visibility): ...here.  Handle function scope and
	nested classes.
	(import_export_decl): Move visibility handling to
	determine_visibility_from_class.
	* parser.c (cp_parser_declaration, cp_parser_namespace_name): Allow
	attributes on namespace declarations.

2006-03-15  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/6634
	* decl.c (grokdeclarator): Do not accept long long double.
	Reorganize checks for invalid (combinations of) type modifiers.
	Quote modifiers in messages.

2006-03-09  Jason Merrill  <jason@redhat.com>

	PR c++/16387, c++/16389
	* typeck.c (cxx_alignof_expr, cxx_sizeof_expr): New functions.
	(cxx_sizeof_or_alignof_expr): Split out from here.

2006-03-09  Diego Novillo  <dnovillo@redhat.com>

	Merge from gomp-20050608-branch

	2006-02-02  Diego Novillo  <dnovillo@redhat.com>

		* decl.c (pop_labels_1): Use appropriate pointer casting.
		(poplevel_named_label_1): Likewise.
		(named_label_entry_hash): Likewise.
		(named_label_entry_eq): Likewise.
		(check_goto): Likewise.
		(define_label): Likewise.

	2006-01-26  Diego Novillo  <dnovillo@redhat.com>

		* cp-tree.h (CP_OMP_CLAUSE_INFO): Use TREE_TYPE instead
		of TREE_BLOCK.
		* pt.c: Use OMP_CLAUSE_CODE and OMP_CLAUSE_OPERAND
		instead of TREE_CODE/TREE_OPERAND.
		* semantics.c: Likewise.
		* parser.c: Likewise.

	2005-11-10  Diego Novillo  <dnovillo@redhat.com>

		* parser.c (cp_parser_omp_threadprivate): Emit diagnostic if
		target does not support TLS.

	2005-11-09  Jakub Jelinek  <jakub@redhat.com>

		* decl.c (redeclaration_error_message): Don't error about
		DECL_THREAD_LOCAL_P mismatches if CP_DECL_THREADPRIVATE_P
		(olddecl).

	2005-11-08  Jakub Jelinek  <jakub@redhat.com>

		PR c++/24735
		* semantics.c (finish_omp_barrier, finish_omp_flush): New
		  functions.
		* parser.c (cp_parser_omp_barrier): Call finish_omp_barrier.
		(cp_parser_omp_flush): Call finish_omp_flush.
		* cp-tree.h (finish_omp_barrier, finish_omp_flush): New
		  prototypes.

		PR c++/24734
		* pt.c (tsubst_expr): Handle OMP_MASTER and OMP_ORDERED.

	2005-11-03  Jakub Jelinek  <jakub@redhat.com>

		* semantics.c (finish_omp_threadprivate): Error on class-scope
		variables.

	2005-11-02  Jakub Jelinek  <jakub@redhat.com>

		* parser.c (cp_parser_omp_all_clauses): If some clause
		type is not allowed, don't remove just one of the
		clauses, but all clauses added in that loop round.

		* semantics.c (finish_omp_clauses): Fix function
		comment. Don't handle non-const or mutable specially,
		as const and not mutable is predetermined shared and
		that leads to double error. Don't ICE if copyin var is
		PARM_DECL.

		PR c++/24613
		* parser.c (cp_parser_pragma): Diagnose
		PRAGMA_OMP_SECTION outside of PRAGMA_OMP_SECTIONS
		construct.

		* semantics.c (finish_omp_threadprivate): Error if V
		  is automatic variable or has incomplete type.

	2005-11-01  Diego Novillo  <dnovillo@redhat.com>

		* parser.c (cp_parser_omp_all_clauses): Use
		OMP_CLAUSE_CHAIN instead of TREE_CHAIN.

	2005-11-01  Diego Novillo  <dnovillo@redhat.com>

		* parser.c (cp_parser_omp_all_clauses): When emitting an
		error message, remove the invalid clause from the list.

	2005-10-31  Diego Novillo  <dnovillo@redhat.com>

		* parser.c (cp_parser_omp_parallel): Do not allow 'nowait' in
		combined parallel+workshare directives.

	2005-10-31  Richard Henderson  <rth@redhat.com>

		* cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DTOR):
		Use cxx_omp_clause_dtor.
		* cp-tree.h (CP_OMP_CLAUSE_INFO): New.
		(cxx_omp_clause_dtor): New.
		* cp-gimplify.c (cxx_omp_clause_apply_fn): New.
		(cxx_omp_clause_default_ctor): Use it.
		(cxx_omp_clause_copy_ctor, cxx_omp_clause_assign_op):
		Likewise.
		(cxx_omp_clause_dtor): New.
		* semantics.c (finish_omp_clauses): Rewrite cdtor
		checking to fill in CP_OMP_CLAUSE_INFO.  Don't
		specialcase LASTPRIVATE for removal.
		(cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor,
		cxx_omp_clause_assign_op): Move to cp-gimplify.c.

	2005-10-28  Jakub Jelinek  <jakub@redhat.com>

		* semantics.c (finish_omp_threadprivate): If
		  DECL_RTL_SET_P, call make_decl_rtl again so that
		  encode_section_info can update SYMBOL_REF's flags.

	2005-10-26  Jakub Jelinek  <jakub@redhat.com>

		* semantics.c (finish_omp_for): Don't segfault if COND
		or INCR is NULL.  If not calling c_finish_omp_for
		right away and one of COND and INCR is NULL, issue
		error and don't expand anything.

		PR c++/24512
		* cp-tree.h (finish_omp_for): Add PRE_BODY argument.
		* semantics.c (finish_omp_for): Likewise.  Set
		OMP_FOR_PRE_BODY to PRE_BODY if deferring, add it
		into the current statement list if not processing
		template decl or pass it to c_finish_omp_for.

		* parser.c (cp_parser_omp_for_loop): Expand optional DECL_EXPRs
		into PRE_BODY statement list.  Pass it to finish_omp_for.
		* pt.c (tsubst_expr) <case OMP_FOR>: tsubst_expr also
		OMP_FOR_PRE_BODY into PRE_BODY stmt list, pass it to
		finish_omp_for.  Put all the statements into sk_omp
		scope.

	2005-10-25  Jakub Jelinek  <jakub@redhat.com>

		PR c++/24516
		* parser.c (struct cp_parser): Rename in_iteration_statement
		field to in_statement.
		(IN_SWITCH_STMT, IN_ITERATION_STMT): Define.
		(IN_OMP_BLOCK, IN_OMP_FOR): Change values.
		(cp_parser_new, cp_parser_begin_omp_structured_block,
		cp_parser_end_omp_structured_block,
		cp_parser_omp_for_loop): Adjust for
		in_iteration_statement renaming.
		(cp_parser_selection_statement): Save
		parser->in_iteration, or it temporarily with
		IN_SWITCH_STMT for the
		cp_parser_implicitly_scoped_statement call.
		(cp_parser_iteration_statement): Adjust for
		in_iteration_statement renaming.  Use
		IN_ITERATION_STMT rather than true.
		(cp_parser_jump_statement): Adjust for
		in_iteration_statement renaming and new values.  Don't
		error on break in a switch statement within OMP_FOR or
		OpenMP structured block.

		PR c++/24513
		* parser.c (cp_parser_cache_group): Don't stop if next
		token is CPP_PRAGMA_EOL and end is CPP_PRAGMA_EOL as
		well.  If current token is CPP_PRAGMA, consume
		everything until CPP_PRAGMA_EOL inclusive.

	2005-10-24  Jakub Jelinek  <jakub@redhat.com>

		PR c++/24502
		* semantics.c (finish_omp_for): Handle MODOP_EXPR in
		addition to MODIFY_EXPR.

	2005-10-23  Richard Henderson  <rth@redhat.com>

		* cp-gimplify.c (struct cp_gimplify_ctx): Remove.
		(bc_label): New.
		(begin_bc_block, finish_bc_block): Use it.
		(push_context, pop_context): Remove.
		(cp_genericize): Don't use them.  Assert bc_label is null.
		* semantics.c (finish_omp_clauses): Create a fake data
		element of TYPE for probing ctors.

	2005-10-23  Richard Henderson  <rth@redhat.com>

		* cp-objcp-common.h (LANG_HOOKS_OMP_CLAUSE_DEFAULT_CTOR): New.
		(LANG_HOOKS_OMP_CLAUSE_COPY_CTOR): New.
		(LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP): New.
		(LANG_HOOKS_OMP_CLAUSE_DTOR): New.
		* semantics.c (finish_omp_clauses): Look through
		arrays when looking up special member calls.  Also
		remove FIRSTPRIVATE when LASTPRIVATE fails.
		(cxx_omp_clause_default_ctor, cxx_omp_clause_copy_ctor): New.
		(cxx_omp_clause_assign_op): New.
		* cp-tree.h: Declare them.

	2005-10-21  Richard Henderson  <rth@redhat.com>

		* decl.c (check_previous_goto_1): Return false if error.
		(check_switch_goto): Likewise.
		(finish_case_label): Don't emit the case label on error.
		* parser.c (struct cp_parser): Revert
		in_switch_statement_p changes.
		(cp_parser_labeled_statement,
		cp_parser_selection_statement): Likewise.
		(cp_parser_begin_omp_structured_block): Don't save...
		(cp_parser_end_omp_structured_block): or restore
		in_switch_statement_p.

	2005-10-21  Richard Henderson  <rth@redhat.com>

		* semantics.c (finish_omp_threadprivate): Set
		decl_flags.u2sel when necessary.

	2005-10-21  Richard Henderson  <rth@redhat.com>

		* decl.c (poplevel_named_label_1): Restore creation of the
		bad_decls list.
		(decl_jump_unsafe): Check for error_mark_node types.
		(check_goto): Don't check cdtor_label.  Don't use identify_goto.
		* semantics.c (finish_return_stmt): Do check_omp_return before
		converting to cdtor_label goto.

	2005-10-21  Richard Henderson  <rth@redhat.com>

		PR c++/24451
		* decl.c (check_omp_return): Return false on error.
		* cp-tree.h (check_omp_return): Update decl.
		* semantics.c (finish_return_stmt): Avoid adding
		return on error.

	2005-10-21  Richard Henderson  <rth@redhat.com>

		* cp-tree.h (struct language_function): Remove
		x_named_label_uses.
		Change x_named_labels to a hashtable.
		(check_omp_return): Declare.
		* decl.c (struct named_label_use_entry): Rename from
		named_label_use_list.  Remove label_decl.
		(struct named_label_entry): Rename from
		named_label_list.  Remove old_value and next.  Change
		in_try_scope and in_catch_scope to bool. Add
		in_omp_scope.
		(pop_labels_1): New.
		(pop_labels): Use it.
		(pop_local_label, poplevel_named_label_1): New.
		(poplevel): Use them.
		(named_label_entry_hash, named_label_entry_eq): New.
		(make_label_decl): Create named_labels.  Move label
		creation bits from lookup_label.
		(declare_local_label): Tidy.
		(identify_goto): Split out from ...
		(check_previous_goto_1): Add exited_omp argument.
		Handle omp scopes.

		(use_label): Merge into...
		(check_goto): ... here.  Handle omp scopes.
		(check_omp_return): New.
		(check_previous_gotos): Merge into...
		(define_label): ... here.
		(save_function_data): Remove x_named_label_uses reference.
		(finish_function): Likewise.
		* name-lookup.h (sk_omp): New.
		* name-lookup.c (begin_scope): Handle it.
		* parser.c (cp_parser_omp_for): Don't create extra
		compound stmt.

		(cp_parser_omp_sections): Likewise.
		* semantics.c (finish_return_stmt): Call check_omp_return.
		(begin_omp_structured_block): Use sk_omp.
		(finish_omp_structured_block): Use do_poplevel.  Don't build a
		MUST_NOT_THROW expression here.
		(begin_omp_parallel, finish_omp_parallel): Don't create extra
		compound statements.

	2005-10-21  Diego Novillo  <dnovillo@redhat.com>

		PR 24455
		* cp/cp-tree.h (struct lang_decl_flags): Add field
		threadprivate_p.
		(CP_DECL_IS_THREADPRIVATE): Define.
		* cp/semantics.c (finish_omp_threadprivate): Set.  Do
		not error out if CP_DECL_IS_THREADPRIVATE is set
		already.
		* cp/decl.c (duplicate_decls): Merge
		CP_DECL_THREADPRIVATE_P.

	2005-10-20  Richard Henderson  <rth@redhat.com>

		* cp-gimplify.c (cp_gimplify_omp_for): New.
		(cp_gimplify_expr): Call it.
		* cp-tree.h (OMP_FOR_GIMPLIFYING_P): New.
		* parser.c (struct cp_parser): Rename
		in_iteration_statement_p to in_iteration_statement and
		change to unsigned char.  Similarly with
		in_switch_statement.  Update all users.
		(IN_OMP_BLOCK, IN_OMP_FOR): New.
		(cp_parser_labeled_statement): Diagnose case labels
		binding closer to an openmp block nested than the
		switch.
		(cp_parser_jump_statement): Diagnose break and
		continue labels binding closer to an openmp block than
		an iteration or switch.
		(cp_parser_omp_for_loop): Mark in_iteration_statement
		for an omp for.
		(cp_parser_begin_omp_structured_block): New.
		(cp_parser_end_omp_structured_block): New.
		(cp_parser_omp_structured_block): Use them.
		(cp_parser_omp_for, cp_parser_omp_sections_scope): Likewise.
		(cp_parser_omp_parallel): Likewise.

	2005-10-20  Richard Henderson  <rth@redhat.com>

		* semantics.c (begin_omp_structured_block): New.
		(finish_omp_structured_block): New.
		(begin_omp_parallel, finish_omp_parallel): Use them.
		* parser.c (cp_parser_omp_structured_block): Likewise.
		(cp_parser_omp_for): Likewise.
		(cp_parser_omp_sections_scope): Likewise.
		* cp-tree.h: Declare them.

	2005-10-20  Richard Henderson  <rth@redhat.com>

		* parser.c (cp_parser_omp_master): Return the statement.
		(cp_parser_omp_ordered): Likewise.
		(cp_parser_omp_construct): Set the locus for them.

	2005-10-19  Richard Henderson  <rth@redhat.com>

		* semantics.c (finish_omp_atomic): Revert to
		uses_template_parms.

	2005-10-19  Richard Henderson  <rth@redhat.com>

		* semantics.c (finish_omp_clauses): Avoid
		DECL_THREAD_LOCAL_P on a PARM_DECL.  Remove some
		stub asserts guaranteed to fail.

	2005-10-19  Richard Henderson  <rth@redhat.com>

		* cp-tree.h (OMP_ATOMIC_DEPENDENT_P, OMP_ATOMIC_CODE): New.
		(finish_omp_clauses, finish_omp_for, finish_omp_atomic): New.
		* parser.c (cp_parser_omp_clause_copyin): Remove.
		(cp_parser_omp_all_clauses): Use cp_parser_omp_var_list instead.
		Call finish_omp_clauses.
		(cp_parser_omp_clause_if): Don't do error checking here.
		(cp_parser_omp_clause_num_threads): Likewise.
		(cp_parser_omp_clause_schedule): Likewise.
		(cp_parser_omp_atomic): Use finish_omp_atomic.
		(cp_parser_omp_for_loop): Don't discard DECL_EXPR.
		Don't decompose assignment statment here.  Use
		finish_omp_for.

		* pt.c (tsubst_omp_clauses): New.
		(tsubst_expr): Handle OMP_PARALLEL, OMP_FOR, OMP_SECTIONS,
		OMP_SINGLE, OMP_SECTION, OMP_CRITICAL, OMP_ATOMIC.
		* semantics.c (finish_omp_clauses): New.
		(begin_omp_parallel, finish_omp_parallel): Know Less about the
		internals of the stmt_list stack.
		(finish_omp_for, finish_omp_atomic): New.

	2005-10-18  Jakub Jelinek  <jakub@redhat.com>

		* semantics.c (cxx_omp_predetermined_sharing): New function.
		* cp-tree.h (cxx_omp_predetermined_sharing): New prototype.
		* cp-objcp-common.h
		(LANG_HOOKS_OMP_PREDETERMINED_SHARING): Redefine.

	2005-10-18  Richard Henderson  <rth@redhat.com>

		* parser.c (cp_parser_omp_single): Use make_node and accessors
		instead of build.

	2005-10-17  Richard Henderson  <rth@redhat.com>

		* parser.c (cp_parser_omp_for_loop): Handle declarations.

	2005-10-12  Richard Henderson  <rth@redhat.com>

		* Make-lang.in (CXX_C_OBJS): Add c-omp.o.
		* cp-tree.h (begin_omp_parallel, finish_omp_parallel): Declare.
		(finish_omp_threadprivate): Declare.
		* parser.c (struct cp_lexer): Add in_pragma.
		(cp_lexer_consume_token): Don't consume a PRAGMA_EOL
		when in_pragma.
		(cp_parser_skip_to_closing_parenthesis): Stop at PRAGMA_EOL.
		(cp_parser_skip_to_end_of_statement): Likewise.
		(cp_parser_skip_to_end_of_block_or_statement): Likewise.
		(cp_parser_skip_to_closing_brace): Likewise.
		(cp_parser_skip_to_pragma_eol): Reset in_pragma.
		(cp_parser_require_pragma_eol): New.
		(cp_parser_statement): Add in_compound argument;
		update all callers.
		Restart if a non-statement pragma seen outside a
		compound.
		(cp_parser_statement_seq_opt): Stop at PRAGMA_EOL.
		(cp_parser_declaration_seq_opt): Likewise.
		(cp_parser_member_specification_opt): Likewise.
		(cp_parser_function_definition_after_decl): Likewise.
		(cp_parser_skip_until_found): Likewise.
		(cp_parser_cache_group): Likewise.
		(enum pragma_omp_clause, cp_parser_omp_clause_name,
		check_no_duplicate_clause,
		cp_parser_omp_var_list_no_open,
		cp_parser_omp_var_list, cp_parser_omp_clause_copyin,
		cp_parser_omp_clause_default, cp_parser_omp_clause_if,
		cp_parser_omp_clause_nowait,
		cp_parser_omp_clause_num_threads,
		cp_parser_omp_clause_ordered,
		cp_parser_omp_clause_reduction,
		cp_parser_omp_clause_schedule,
		cp_parser_omp_all_clauses,
		cp_parser_omp_structured_block, cp_parser_omp_atomic,
		cp_parser_omp_barrier, cp_parser_omp_critical,
		cp_parser_omp_flush, cp_parser_omp_for_loop,
		cp_parser_omp_for, cp_parser_omp_master,
		cp_parser_omp_ordered, cp_parser_omp_sections_scope,
		cp_parser_omp_sections, cp_parser_omp_parallel,
		cp_parser_omp_single, cp_parser_omp_threadprivate,
		cp_parser_omp_construct): New.
		(cp_parser_pragma): Handle OpenMP pragmas.
		* semantics.c (finish_omp_threadprivate): New.
		(begin_omp_parallel, finish_omp_parallel): New.

	2005-10-11  Richard Henderson  <rth@redhat.com>

		* parser.c (struct cp_token): Add pragma_kind.
		(eof_token): Initialize it.
		(cp_lexer_handle_pragma): Remove.
		(cp_parser_initial_pragma): New.
		(cp_lexer_new_main): Use it.
		(cp_lexer_get_preprocessor_token): Initialize pragma_kind.
		(cp_lexer_print_token): Don't handle CPP_PRAGMA.
		(cp_parser_skip_to_pragma_eol): New.
		(cp_parser_error): Use it.
		(pragma_lex): New.

	2005-10-09  Richard Henderson  <rth@redhat.com>

		* lex.c (parse_strconst_pragma): Update for c_lex name change.
		(handle_pragma_java_exceptions): Likewise.
		* parser.c (cp_lexer_new_main): Likewise.

	2005-10-06  Richard Henderson  <rth@redhat.com>

		* parser.c (cp_lexer_new_main): Comment out defer_pragmas.
		(cp_lexer_handle_pragma): Comment out
		cpp_handle_deferred_pragma.

	2005-10-01  Richard Henderson  <rth@redhat.com>

		* name-lookup.c (lookup_name): Remove prefer_type argument.
		(lookup_name_prefer_type): New function.
		* name-lookup.h (lookup_name_prefer_type): Declare it.
		* decl.c (lookup_and_check_tag): Use it.
		* pt.c (tsubst_friend_class): Likewise. Update for
		lookup_name change.
		(lookup_template_class, tsubst_copy_and_build): Likewise.

2006-03-06  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/15759
	* tree.c (bot_manip): Don't call mark_used.

2006-03-02  Mike Stump  <mrs@apple.com>

	* decl2.c (import_export_decl): Remove redundant call to
	targetm.cxx.key_method_may_be_inline ().

2006-03-02  Richard Sandiford  <richard@codesourcery.com>

	* decl.c (start_decl): Use have_global_bss_p when deciding
	whether to make the decl common.

2006-03-01  Mike Stump  <mrs@apple.com>

	PR darwin/25908
	* decl2.c (import_export_decl): Fix ABI breakage on darwin.

2006-02-24  Geoffrey Keating  <geoffk@apple.com>

	* except.c (expand_start_catch_block): Handle
	flag_use_cxa_get_exception_ptr.

2006-02-22  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/26291
	* decl.c (grok_op_properties): Check for ellipsis in arguments of
	operators.

2006-02-20  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* Make-lang.in (C++): Remove.
	(.PHONY): Remove C++.

2006-02-18  Mark Mitchell  <mark@codesourcery.com>

	PR c++/26266
	* cp-tree.h (cp_finish_decl): Adjust declaration.
	(grokbitfield): Likewise.
	(finish_static_data_member_decl): Likewise.
	* init.c (constant_value_1): Ensure processing_template_decl when
	folding non-dependent initializers for static data members of
	dependent types.  Return error_mark_node for erroneous
	initailizers.
	* class.c (get_vtable_decl): Use finish_decl, not cp_finish_decl.
	* decl.c (cp_make_fname_decl): Adjust call to cp_finish_decl.
	(cp_finish_decl): Add init_const_expr_p parameter.  Set
	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
	(finish_decl): Adjust call to cp_finish_decl.
	(compute_array_index_type): Robustify.
	(start_method): Use finish_decl, not cp_finish_decl.
	* rtti.c (emit_tinfo_decl): Likewise.
	* except.c (initialize_handler_parm): Adjust call to
	cp_finish_decl.
	(expand_start_catch_block): Likewise.
	* cvt.c (build_up_reference): Adjust call to cp_finish_decl.
	* pt.c (instantiate_class_template): Adjust call to
	finish_static_data_member_decl.
	(tsubst_expr): Use finish_decl, not cp_finish_decl.
	(instantiate_decl): Adjust call to cp_finish_decl.
	* name-lookup.c (pushdecl_top_level_1): Use finish_decl, not
	cp_finish_decl.
	* decl2.c (finish_static_data_member_decl): Add init_const_expr_p
	parameter.
	(grokfield): Likewise.
	* parser.c (cp_parser_condition): Check for constant initializers.
	(cp_parser_init_declarator): Adjust calls to grokfield and
	cp_finish_decl.  Don't set
	DECL_INITIALIZED_BY_CONSTANT_EXPRESSION_P here.
	(cp_parser_member_declaration): Likewise.
	(cp_parser_objc_class_ivars): Likewise.

2006-02-14  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* call.c (standard_conversion): Return NULL instead of 0.
	(build_user_type_conversion_1): Likewise.
	(tourney): Likewise.
	* decl.c (redeclaration_error_message): Likewise.
	* error.c (language_to_string): Likewise.

2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* cp-tree.h (warn_hidden): Remove prototype.
	* class.c (warn_hidden): Make static.

	* cp-tree.h (build_type_conversion): Remove prototype.
	* cvt.c (build_type_conversion): Add prototype, make static.

	* cp-tree.h (push_tinst_level): Remove prototype.
	(pop_tinst_level): Likewise.
	* pt.c (push_tinst_level): Add prototype, make static.
	(pop_tinst_level): Likewise.

2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* decl.c (grokdeclarator): Return NULL_TREE instead of 0.
	* typeck.c (unary_complex_lvalue): Likewise.

2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* lex.c (parse_strconst_pragma): Return error_mark_node instead of
	"(tree)-1" to indicate failure.  Simplify.
	(handle_pragma_interface): Test for error_mark_node instead of
	"(tree)-1".
	(handle_pragma_implementation): Likewise.

2006-02-13  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/26151
	* parser.c (cp_parser_decl_specifier_seq): Check for duplicate
	decl-specifiers.  Remove extra check for duplicate 'friend'.
	* decl.c (grokdeclarator): Remove check for duplicate
	decl-specifiers.  Set longlong together with long_p.

2006-02-12  Jason Merrill  <jason@redhat.com>

	PR c++/24996
	* except.c (build_throw): Add a CLEANUP_POINT_EXPR inside the
	TRY_CATCH_EXPR or MUST_NOT_THROW_EXPR.

2006-02-10  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* class.c (debug_class): Remove extern.
	(debug_thunks): Likewise.

2006-02-09  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* typeck.c (string_conv_p): Don't test for flag_const_strings.

2006-02-08  Jason Merrill  <jason@redhat.com>

	PR c++/25979
	* cp-gimplify.c (cp_gimplify_expr): Don't call
	cp_gimplify_init_expr for MODIFY_EXPRs.
	* typeck2.c (split_nonconstant_init_1): Use INIT_EXPR.

2006-02-08  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/26071
	* decl.c (grokdeclarator): Set dname also for destructor.

	PR c++/26070
	* decl.c (grokdeclarator): Clear storage_class together with staticp.

2006-02-07  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cp-tree.h (tf_warning_or_error): Renamed from tf_warn_or_error.
	(cp_build_qualified_type): Propogate renaming.
	* call.c (convert_like_real): Likewise.
	* cvt.c (cp_convert_to_pointer, convert_to_reference): Likewise.
	* decl.c (make_typename_type, grokdeclarator): Likewise.
	* pt.c (tsubst_friend_function, instantiate_class_template,
	tsubst_default_argument, instantiate_decl,
	tsubst_initializer_list, tsubst_enum): Likewise.
	* semantics.c (finish_template_type): Likewise.
	* typeck.c (build_ptrmemfunc, convert_for_assignment): Likewise.

2006-02-07  Dirk Mueller  <dmueller@suse.com>

	* typeck.c (build_binary_op): Annotate div-by-zero
	warnings to make -Wno-div-by-zero have an effect.

2006-02-07  Mark Mitchell  <mark@codesourcery.com>

	PR c++/9737
	* pt.c (coerce_template_template_parms): Do not templates with
	excess default arguments to match template template parameters
	with fewer parameters.
	(coerce_template_parms): Add use_default_args parameter; use
	default arguments only when true.
	(lookup_template_class): Adjust call to coerce_template_parms.
	(fn_type_unification): Likewise.
	(unify): Likewise.
	(get_bindings): Likewise.
	(dependent_type_p): Add assertions.

2006-02-06  Roger Sayle  <roger@eyesopen.com>

	* decl.c (grokdeclarator): Don't bother checking for CHAR_TYPE.
	* rtti.c (typeinfo_in_lib_p): Likewise.
	* cp-tree.h (INTEGRAL_CODE_P, CP_INTEGRAL_TYPE_P): Likewise.
	* name-lookup.c (arg_assoc_type): Likewise.

2006-02-04  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* cp-tree.h (tf_warn_or_error): New substituion flag.
	(cp_build_qualified_type): Use it.
	* call.c (convert_like_real): Likewise.
	* cvt.c (cp_convert_to_pointer): Likewise.
	(convert_to_reference): Likewise.
	* decl.c (make_typename_type): Likewise.
	(grokdeclarator): Likewise.
	* pt.c (tsubst_friend_function): Likewise.
	(tsubst_friend_class): Likewise.
	(instantiate_class_template): Likewise.
	(tsubst_default_argument): Likewise.
	(instantiate_decl): Likewise.
	(tsubst_initializer_list): Likewise.
	(tsubst_enum): Likewise.
	* semantics.c (finish_template_type): Likewise.
	* typeck.c (build_ptrmemfunc): Likewise.
	(convert_for_assignment): Likewise.

2006-02-03  Lee Millward  <lee.millward@gmail.com>

	* typeck.c (string_conv_p): Pass appropiate
	OPT_Wxxxx values when calling warning().
	(build_array_ref, cxx_mark_addressable): Likewise.
	(check_return_expr): Likewise.

	* init.c (perform_member_init): Likewise.
	(sort_mem_initializers, emit_mem_initializers): Likewise.

	* class.c (check_field_decls): Likewise.
	(warn_about_ambiguous_bases): Likewise.

	* decl.c (pop_label, poplevel): Likewise.
	(duplicate_decls, grok_op_properties): Likewise.
	(start_preparsed_function, finish_function): Likewise.

	* name-lookup.c (pushdecl_maybe_friend): Likewise.
	(pushdecl_maybe_friend): Likewise.

	* parser.c (cp_parser_warn_min_max): Likewise.
	(cp_parser_cast_expression): Likewise.

	* method.c (lazily_declare_fn): Likewise.
	* cvt.c (convert_to_void): Likewise.
	* mangle.c (finish_mangling): Likewise.
	* cp-gimplify.c (gimplify_expr_stmt): Likewise.

2006-02-03  Mark Mitchell  <mark@codesourcery.com>

	* name-lookup.c (do_class_using_decl): Use IDENTIFIER_TYPENAME_P,
	not IDENTIFIER_OPNAME_P.

2006-01-31  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25342
	* cp-tree.h (DECL_TEMPLATE_SPECIALIZATIONS): Revise
	documentation.
	* pt.c (determine_specialization): Use INNERMOST_TEMPLATE_PARMS,
	not TREE_VALUE.
	(instantiate_class_template): Simplify.
	(verify_class_unification): Remove.
	(unify): Document parameters.  Use INNERMOST_TEMPLATE_ARGS to
	permit multiple levels of template arguments.
	(more_specialized_class): Simplify.
	(get_class_bindings): Pass full arguments to unify.  Fold
	verify_class_unification into this function.  Return full
	arguments.
	(most_specialized_class): Adjust for changes to
	get_class_bindings.  Issue errors here for ambiguity.  Return the
	fully deduced arguments for the most specialized class, in
	addition to the partial specialization.

2006-01-31  Ben Elliston  <bje@au.ibm.com>

	* mangle.c: Comment fix.

2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* Make-lang.in (cp-warn): Include CXX_COMPAT_WARN.
	* repo.c (extract_string, afgets): Use cast when converting from
	void *.

2006-01-29  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* call.c (alloc_conversion): Use cast when converting from void *.
	(alloc_conversions): Likewise.
	(add_candidate): Likewise.
	(print_z_candidates): Likewise.
	(add_warning): Likewise.
	* pt.c (retrieve_local_specialization): Likewise.
	(process_partial_specialization): Likewise.
	(mangle_class_name_for_template): Likewise.
	(tsubst_template_args): Likewise.
	* typeck2.c (pat_calc_hash): Likewise.
	(pat_compare): Likewise.
	(abstract_virtuals_error): Likewise.
	* class.c (method_name_cmp): Likewise.
	(resort_method_name_cmp): Likewise.
	(get_vfield_name): Likewise.
	* decl2.c (generate_ctor_and_dtor_functions_for_priority): Likewise.
	* lex.c (init_reswords): Likewise.
	* rtti.c (create_pseudo_type_info): Likewise.
	* search.c (dfs_lookup_base): Likewise.
	(dfs_dcast_hint_pre): Likewise.
	(dfs_dcast_hint_post): Likewise.
	* tree.c (hash_tree_cons): Likewise.
	* repo.c (extract_string): Likewise.
	(afgets): Likewise.
	* cp-objcp-common.c (decl_shadowed_for_var_lookup): Likewise.
	* g++spec.c (lang_specific_driver): Likewise.

2006-01-28  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* call.c (joust): Pass option code to warning.  Use inform for
	explanation.
	* class.c (check_bases): Likewise.
	(maybe_warn_about_overly_private_class): Likewise.
	(check_field_decls): Likewise.
	(layout_empty_base): Likewise.
	(layout_virtual_bases): Likewise.
	(layout_class_type): Likewise.

2006-01-28  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25999
	* decl.c (start_preparsed_function): Call maybe_apply_pragma_weak
	here, not ...
	(start_function): ... here.

2006-01-28  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25855
	* class.c (resolve_address_of_overloaded_function): Adjust use of
	return value from most_specialized_instantiation.
	* pt.c (determine_specialization): Avoid multiple calls to
	get_bindings.
	(most_specialized_instantiation): When a tie occurs, set the
	current presumed champion to the next template.  Return the
	TREE_LIST node containing the template, rather than the template
	itself.
	(most_specialized): Remove.
	* name-lookup.c (push_overloaded_decl): When duplicate_decls
	indicates a failed redeclaration, report that to callers.

2006-01-26  Jason Merrill  <jason@redhat.com>

	PR c++/16021
	* name-lookup.c (parse_using_directive): Require strong using to
	name a nested namespace.

2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	Revert:
	* cp-tree.h (do_poplevel): Remove prototype.
	* semantics.c (do_poplevel): Add prototype.  Make static.

	Revert:
	* cp-tree.h (default_conversion): Remove prototype.
	* typeck.c (default_conversion): Make static.

2006-01-25  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* cp-tree.h (get_primary_binfo): Remove prototype.
	(push_using_decl): Likewise.
	(current_template_args): Likewise.
	(more_specialized_class): Likewise.
	(mark_class_instantiated): Likewise.
	(default_conversion): Likewise.
	(pfn_from_ptrmemfunc): Likewise.
	* class.c (get_primary_binfo): Add prototype, make static, simplify.
	* name-lookup.c (push_using_decl): Make static.
	* pt.c (current_template_args): Likewise.
	(more_specialized_class): Likewise.
	(mark_class_instantiated): Likewise.
	* typeck.c (default_conversion): Make static.
	(pfn_from_ptrmemfunc): Add prototype, make static.

2006-01-24  Dirk Mueller  <dmueller@suse.de>

	* typeck.c (build_binary_op): Use OPT_Wfloat_equal in warning().

2006-01-24  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/25552
	* parser.c (cp_parser_unqualified_id): Check that destructor name
	and scope match.
	* call.c (check_dtor_name): Do not expect a BIT_NOT_EXPR.
	Adjust comment.  Return early if possible.
	Use same_type_p to compare types.
	* typeck.c (lookup_destructor): Adjust call to check_dtor_name.

2006-01-24  Mark Mitchell  <mark@codesourcery.com>

	* semantics.c: Remove outdated comment.

2006-01-23  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* cp-tree.h (do_poplevel): Remove prototype.
	* semantics.c (do_poplevel): Add prototype.  Make static.

	* cp-tree.h (original_type): Remove prototype.
	* typeck.c (original_type): Make static.

	* cp-tree.h (declare_global_var): Remove prototype.
	* decl.c (declare_global_var): Make static.

	* cp-tree.h (implicitly_declare_fn): Remove prototype.
	* method.c (implicitly_declare_fn): Make static.

	* cp-tree.h (fold_decl_constant_value): Remove prototype.
	* pt.c (fold_decl_constant_value): Make static.

	* cp-tree.h (build_x_delete): Remove prototype.
	* init.c (build_vec_delete_1): Call build_op_delete_call directly
	and not via build_x_delete.
	(build_x_delete): Remove.

	* cp-tree.h (get_vtt_name): Remove prototype.
	* class.c (get_vtt_name): Remove.
	(build_vtt): Call mangle_vtt_for_type instead of get_vtt_name.

2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* rtti.c (build_dynamic_cast): Fix comment.

2006-01-22  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	PR c++/10891
	* rtti.c (build_dynamic_cast): Reject dynamic_cast use if
	-fno-rtti.

2006-01-21  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25895
	* class.c (build_base_path): Generate a NOP_EXPR instead of a
	COMPONENT_REF if the base and derived classes are at the same
	address.

	PR c++/25856
	* decl.c (begin_destructor_body): Robustify.

	PR c++/25858
	* parser.c (cp_parser_direct_declarator): Robustify.

2006-01-20  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* parser.c (cp_lexer_next_token_is_keyword): Simplify.

	* parser.c (clear_decl_specs): Remove prototype.

	* parser.c (cp_parser_expression_fn): Remove.

	* call.c (add_builtin_candidates): Remove superfluous return.
	* name-lookup.c (do_toplevel_using_decl): Likewise.
	* parser.c (cp_parser_type_specifier_seq): Likewise.
	(cp_parser_save_default_args): Likewise.

2006-01-20  Dirk Mueller  <dmueller@suse.com>

	PR c++/5520
	* semantics.c (finish_if_stmt): Call empty_body_warning.
	* parser.c (cp_parser_implicitly_scoped_statement):
	Mark empty statement with an empty stmt.

2006-01-19  Mark Mitchell  <mark@codesourcery.com>

	PR c++/22136
	* name-lookup.c (do_class_using_decl): Don't try to look up base
	classes in templates with dependent base types.

2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/25854
	* pt.c (maybe_process_partial_specialization): Return early on
	error_mark_node.

2006-01-19  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	PR c++/16829
	* decl.c (start_preparsed_function): Check default arguments
	unconditionally.
	* name-lookup.c (pushdecl_maybe_friend): Check default arguments
	of all functions and function templates.
	* parser.c (cp_parser_late_parsing_default_args): Check default
	arguments.
	* decl2.c (check_default_args): Set missing default arguments to
	error_mark_node.

2006-01-18  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25836
	* cp-tree.h (push_class_stack): New function.
	(pop_class_stack): Likewise.
	* class.c (class_stack_node): Add hidden field.
	(pushclass): Clear it.
	(push_class_stack): New function.
	(pop_class_stack): Likewise.
	(currently_open_class): Ignore hidden classes.
	(currently_open_derived_class): Likewise.
	* name-lookup.c (push_to_top_level): Call push_class_stack.
	(pop_from_top_level): Call pop_class_stack.

2006-01-18  Kazu Hirata  <kazu@codesourcery.com>

	* tree.c (find_tree_t, find_tree): Remove.
	* cp-tree.h: Remove the prototype for find_tree.

2006-01-18  Jakub Jelinek  <jakub@redhat.com>

	* search.c (lookup_conversions_r): Fix a pasto.

2006-01-17  Eric Christopher  <echristo@apple.com>

	* call.c (convert_like_real): When issuing conversion
	warnings, depend on OPT_Wconversion.
	* cvt.c (build_expr_type_conversion): Ditto.

2006-01-17  Kazu Hirata  <kazu@codesourcery.com>

	* name-lookup.c (lookup_namespace_name): Remove.
	* name-lookup.h: Remove the prototype for
	lookup_namespace_name.

2006-01-17  Jakub Jelinek  <jakub@redhat.com>

	PR c/25682
	* decl.c (compute_array_index_type): After issuing not an integral
	constant-expression error, set size to 1 to avoid ICEs later on.

2006-01-16  Ian Lance Taylor  <ian@airs.com>

	* parser.c: Include "cgraph.h".
	(cp_parser_asm_definition): Call cgraph_add_asm_node rather than
	assemble_asm.

2006-01-16  Rafael Ávila de Espíndola  <rafael.espindola@gmail.com>

	* g++spec.c (lang_specific_spec_functions): Remove.

2006-01-15  Gabriel Dos Reis  <gdr@integrable-solutions.net>

	* decl.c (check_initializer): Fix thinko.

2006-01-14  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25663
	* parser.c (cp_parser_direct_declarator): Use cp_parser_error
	instead of error.

2006-01-13  Jason Merrill  <jason@redhat.com>

	* pt.c (check_explicit_specialization): Use CP_DECL_CONTEXT even more.

	* name-lookup.c (set_decl_namespace): Use CP_DECL_CONTEXT.
	* pt.c (check_explicit_specialization): Likewise.

2006-01-12  Jason Merrill  <jason@redhat.com>

	PR libstdc++/24660
	* pt.c (check_explicit_specialization): Handle namespace
	association.
	* name-lookup.c (set_decl_namespace): Likewise.

2006-01-12  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/24824
	* class.c (handle_using_decl): Pass correct scope to
	cp_emit_debug_info_for_using.

2006-01-11  Nathan Sidwell  <nathan@codesourcery.com>

	PR c++/25386
	* tree.c (lvalue_p_1): Any part of a COMPONENT_REF affects
	packedness.

2006-01-06  Gabriel Dos Reis  <gdr@integrablesolutions.net>

	* parser.c (cp_parser_primary_expression): Document the grammar
	for the built-in offsetof, a GNU extension.

2006-01-04  Zdenek Dvorak <dvorakz@suse.cz>

	PR c++/25632
	* init.c (constant_value_1): Unshare use of DECL_INITIAL.  Fix a typo
	in condition.

2006-01-04  Chris Lattner  <sabre@gnu.org>

	* typeck2.c: update copyright to 2006
	(split_nonconstant_init_1):  Set TREE_CONSTANT to true.

2006-01-04  Mark Mitchell  <mark@codesourcery.com>

	PR c++/24782
	* parser.c (cp_parser_nested_name_specifier_opt): Preserve access
	checks, even when parsing tentatively.

2006-01-04  Richard Henderson  <rth@redhat.com>

	Merge from gomp branch.
	* lex.c (handle_pragma_java_exceptions): Fix whitespace.
	* parser.c (struct cp_token): Add pragma_kind.
	(eof_token): Update to match.
	(struct cp_lexer): Add in_pragma; rearrange next for better packing.
	(cp_parser_initial_pragma): New.
	(cp_lexer_new_main): Use it.  Don't bother clearing
	c_lex_return_raw_strings.
	(cp_lexer_get_preprocessor_token): Always initialize keyword
	and pragma_kind fields.  Handle CPP_PRAGMA.
	(cp_lexer_consume_token): Don't allow CPP_PRAGMA_EOL when
	in_pragma is set.
	(cp_lexer_handle_pragma): Remove.  Update callers to cp_parser_pragma.
	(cp_lexer_print_token) <CPP_PRAGMA>: Don't print as a string.
	(cp_parser_skip_to_pragma_eol): New.
	(cp_parser_error): Use it.
	(cp_parser_skip_to_closing_parenthesis): Stop at CPP_PRAGMA_EOL;
	rearrange with switch statement.
	(cp_parser_skip_to_end_of_statement): Likewise.
	(cp_parser_skip_to_end_of_block_or_statement): Likewise.
	(cp_parser_skip_to_closing_brace): Likewise.
	(cp_parser_skip_until_found): Likewise.
	(cp_parser_statement): Add in_compound argument; update callers.
	Use it to decide how to handle pragma parsing.
	(cp_parser_labeled_statement): Add in_compound argument; pass
	it on to cp_parser_statement.
	(cp_parser_statement_seq_opt): Stop at CPP_PRAGMA_EOL.
	(cp_parser_declaration_seq_opt): Likewise.
	(cp_parser_parameter_declaration): Likewise.
	(cp_parser_member_specification_opt): Likewise.
	(cp_parser_function_definition_after_decl): Likewise.
	(cp_parser_cache_group): Handle CPP_PRAGMA/CPP_PRAGMA_EOL pairs.
	(cp_parser_pragma): New.
	(pragma_lex): New.

2006-01-04  Dirk Mueller <dmueller@suse.com>

	* decl.c (finish_constructor_body): create simple
	compound stmt instead of a if(1) { } construct.

2006-01-03  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25492
	* name-lookup.c (push_class_level_binding): When a derived class
	provides a type binding, eliminate any type binding from a base
	class.

	PR c++/25625
	* repo.c (repo_emit_p): Always instantiate static data members
	initialized by constant expressions, so that there values are
	available.

2006-01-02  Mark Mitchell  <mark@codesourcery.com>

	PR c++/25635
	* class.c (add_method): Set TYPE_HAS_CONVERSION for classes with a
	conversion operator.
	* decl.c (grokdeclarator): Do not set TYPE_HAS_CONVERSION here.

	PR c++/25638
	* class.c (add_method): Never associate more than one destructor
	with a single class.

	PR c++/25637
	* cp-tree.h (do_friend): Adjust prototype.
	* decl.c (grokfndecl): Make funcdef_flag a bool, not an int.
	(grokdeclarator): Likewise.  Refine check for invalid
	declarations/definitions of member functions outside of their own
	class.
	* friend.c (do_friend): Make funcdef_flag a bool, not an int.

	PR c++/25633
	* parser.c (cp_parser_mem_initializer_list): Check result of
	cp_parser_mem_initializer against error_mark_node, not NULL_TREE.
	(cp_parser_mem_initializer): Return error_mark_node for failure.

	PR c++/25634
	* parser.c (cp_parser_template_parameter_list): Call
	begin_template_parm_list and end_template_parm_list here.
	(cp_parser_type_parameter): Not here.
	(cp_parser_template_declaration_after_export): Or here.
	(cp_parser_elaborated_type_specifier): Call
	cp_parser_check_template_parameters.

	* tree.c (build_target_expr_with_type): Use force_target_expr.

	* decl2.c (mark_used): Fix typo in comment.

2006-01-02  Volker Reichelt  <reichelt@igpm.rwth-aachen.de>

	* parser.c (cp_parser_using_declaration): Skip name-lookup on
	invalid scope.



Copyright (C) 2006 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.