aboutsummaryrefslogtreecommitdiff
path: root/ChangeLog.name-lookup
blob: fd7fe12e11724945d48543e947b33825291f8976 (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
2018-08-20  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r263667.

	Merge trunk r263658.

2018-08-17  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r263622.

	Merge trunk r263618.

2018-08-16  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r263587.

2018-08-15  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r263558.

	libcpp/
	* incude/cpplib.h (NODE_...): Reenumerate.
	(enum node_type): NT_VOID may be assert.
	(struct _cpp_hashnode_value): Add assert field.
	(cpp_user_macro_p): Don't check for assert here.
	* directives.c (find_answer): Rename to ...
	(find_assert): ... here. Adjust.
	(undefine_macros): Zap value.assert.
	(_cpp_test_assertion, do_assert, do_unassert): Adjust.

2018-08-08  Nathan Sidwell  <nathan@acm.org>

	gcc/c-family/
	c-ppoutput.c (dump_macro): No need to check for assert here.
	libcpp/
	* include/cpplib.h (cpp_user_macro_p): Check non-assertness here.
	(cpp_fun_like_macro_p): Make inline.
	* macro.c (enter_macro_context): Use it directly.
	(cpp_fun_like_macro_p): Remove definition here.
	* pch.c (save_macros): Not need to check assertness here.

	Merge trunk r263434.

	Fold cpp-id-data.h into cpplib.h
	libcpp/
	* internal.h: Include cpplib.h, not cpp-id-data.h.
	(uchar, UC): From cpp-id-data.h.
	* include/cpplib.h (cpp_macro_kind, cpp_macro): From cpp-id-data.h.
	* include.cpp-id-data.h: Delete.
	* Makefile.in (TAGS_SOURCES): Drop cpp-id-data.h.
	gcc/
	* Makefile.in (CPP_ID_DATA_H): Delete.
	(CPP_INTERNAL_H): Drop CPP_ID_DATA_H.
	(GT_FILES): Replace CPP_ID_DATA_H with CPPLIB_H.
	* cppbuiltin.c: Include cpplib.h instead of cpp-id-data.h.
	gcc/c-family
	* c-ada-spec.c: Don't include cpp-id-data.h.
	* c-cppbuiltin.h: Likewise.

	libcpp/
	* include/cpplib.h (enum node_type): Rename to NT_USER_MACR,
	NT_BUILTIN_MACRO.
	(CPP_HASNODE_VALUE_IDX): Delete.
	(union _cpp_hashnode_value): Adjust.
	(struct cpp_hashnode): Likewise.
	(cpp_macro_p, cpp_user_macro_p, cpp_builtin_macro_p): New.
	* internal.h (_cpp_mark_macro_used): Use cpp_user_macro_p.
	* directives.c (do_undef, do_pragma_poison, do_ifdef, do_ifndef)
	(cpp_pop_definition): Use cpp_macro_p and friends.
	(doassert): Adjust.
	* expr.c (parse_defined): Use cpp_macro_p.
	* files.c (should_stack_file): Likewise.
	* identifiers.c (cpp_defined): Likewise.
	* init.c (cpp_init_special_builtins): Adjust.
	* lex.c (is_macro): Use cpp_macro_p.
	* macro.c (cpp_warn_if_unused_macro, enter_macro_context)
	(warn_of_redefinition, _cpp_create_definition): Use cpp_macro_p
	and friends.
	(_cpp_notify_macro_use): Adjust.
	(cpp_macro_p): Delete old definition.
	(cp_fun_like_macro_p): Use cpp_user_macro_p.
	(cpp_macro_definition): Likewise.
	* pch.c (write_macdef, count_defs, write_defs, save_macros): Adjust.
	* traditional.c (fun_loke_macro, maybe_start_funlike)
	(_cpp_scan_out_logical_line, push_replacement_text): Use
	cpp_macro_p and friends.
	gcc/c-family/
	* c-ada-spec.c (count_ada_macro, store_ada_macro): Use cpp_user_macro_p.
	* c-ppoutput.c (cb_used_define, dump_macro): Likewise.
	* c-spellcheck.cc (should_suggest_as_macro_p): Likewise.
	gcc/
	* config/powerpcspe/powerpcspe-c.c (rs6000_macro_to_expand): Adjust.
	* config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Adjust.
	gcc/cp/
	* name-lookup.c (lookup_name_fuzzy): Use cpp_user_macro_p.
	gcc/fortran/
	* cpp.c (dump_macro): Use cpp_user_macro_p.

	libcpp/
	* internal.h (_cpp_notify_macro_use): Declare.
	(_cpp_maybe_notify_macro_use): Define.
	(_cpp_do_lazy_macro, _cpp_maybe_lazy_macro): Delete.
	* directives.c (do_ifdef, do_ifndef): Call
	_cpp_maybe_notify_macro_use.
	* expr.c (parse_defined): Likewise.
	* macro.c (enter_macro_context): Use _cpp_maybe_notify_macro_use.
	(warn_of_redefinition): Do lazy definition explicitly.
	(_cpp_notify_macro_use): Define.
	(_cpp_do_lazy_macro): Delete.

	Move NODE_BUILTIN to NT_BUILTIN.
	gcc/c-family/
	* c-ppoutput.c (cb_used_define): Use cpp_macro_p.
	gcc/cp/
	* name-lookup.c (lookup_name_fuzzy): Use cpp_macro_p.
	libcpp/
	* directives.c (do_undef): Adjust macro detection.
	(undefine_macros): Adjust.
	(do_pragma_poison, do_ifndef, do_ifdef, cpp_pop_definition):
	Adjust.
	* expr.c (parse_defined): Adjust.
	* files.c (should_stack_file): Adjust.
	* identifiers.c (cpp_defined): Adjust.
	* include/cpplib.h (NODE_BUILTIN): Delete.
	(enum node_type): Add NT_BUILTIN.
	(CPP_HASHNODE_VALUE_IDX): Adjust.
	* init.c (cpp_init_special_builtins): Adjust.
	* internal.h (_cpp_mark_macro, _cpp_maybe_lazy_macro): Adjust.
	* lex.c (is_macro): Adjust.
	* macro.c (struct macro_arg_saved_data): Add type field.
	(_cpp_warn_if_unused_macro): Adjust.
	(enter_macro_context, cpp_get_token_1, warn_of_redefinition)
	(_cpp_free_defintion, _cpp_safe_parameter)
	(_cpp_unsave_parameters, _cpp_create_definition): Adjust.
	(cpp_macro_p): Adjust.
	* pch.c (write_macdef, count_defs, write_defs, cpp_validate_state)
	(save_macros): Adjust.
	* traditional.c (fun_like_macro, maybe_start_funlike)
	(_cpp_scan_out_logical_line, push_replacement_text): Adjust.

2018-08-07  Nathan Sidwell  <nathan@acm.org>

	Move NODE_MACRO_ARG to NT_MACRO_ARG.
	libcpp/
	* include/libcpp.h (NODE_MACRO_ARG): Delete.
	(enum node_type): Add NT_MACRO_ARG.
	(CPP_HSHNODE_VALUE_IDX): Adjust.
	* macro.c (_cpp_save_parameter, _cpp_unsave_parameter): Adjust.
	(lex_expansion_token): Likewise.
	* traditional.c (_cpp_scan_out_logical_line): Likewise.

2018-08-06  Nathan Sidwell  <nathan@acm.org>

	Macro laziness now a property of cpp_macro.
	libcpp/
	* include/cpp-id-data.h (cpp_macro): Add lazy field.
	* include/libcpp.h (struct cpp_callbacks): Rename and retype
	user_builtin_macro to user_lazy_macro.
	(cpp_define_lazily): Adjust,
	(cpp_define_lazy): Delete.
	(enum cpp_builtin_type): Remove BT_FIRST_USER, BT_LAST_USER.
	* internal.h (_cpp_do_lazy_macro): Declare.
	(_cpp_maybe_lazy_macro): Inline fn.
	* macro.c (enter_macro_context, warn_of_redefinition): Use
	_cpp_maybe_lazy_macro.
	(_cpp_new_macro): Initialize lazy field.
	(cpp_define_lazily): Adjust.
	(_cpp_do_lazy_macro): Define.
	(cpp_macro_definition): Simplify.
	* pch.c (write_macrodef, save_macros): Likewise.
	* directives.c (do_ifdef, do_ifndef): Use _cpp_maybe_lazy_macro.
	* expr.c (parse_defined): Likewise.
	gcc/c-family/
	* c-cppbuiltin.c (lazy_hex_fp_value): Adjust for API changes.
	(builtin_define_with_hex_fp_valye): Likewise.

	Merge trunk r263332.

2018-08-03  Nathan Sidwell  <nathan@acm.org>

	An API for lazy builtin macros.
	libcpp/
	* include/libcpp.h (struct cpp_callbacks): Adjust
	user_builtin_macro callback.
	(cpp_define_lazily, cpp_define_lazy): Declare.
	* macro.c (enter_macro_context, warn_of_redefinition): Adjust.
	(cpp_define_lazily, cpp_define_lazy): Define.
	(cpp_macro_definition): Adjust.
	* pch.c (write_macrdef, save_macros): Likewise.
	* directives.c (do_ifdef, do_ifndef): Adjust.
	* expr.c (parse_defined): Likewise.
	gcc/c-family/
	* c-cppbuiltin.c (lazy_hex_fp_value): Adjust for API changes.
	(builtin_define_with_hex_fp_valye): Likewise.

2018-08-02  Nathan Sidwell  <nathan@acm.org>

	libcpp/
	* include/cpplib.h (enum node_type): Remove NT_ASSERTION.
	(NTV_NONE): Delete.
	(CPP_HASHNODE_VALUE_IDX): Adjust.
	* macro.c (_cpp_free_definition): Zap macro pointer.
	(_cpp_create_definition): Move _cpp_free_definition call.
	* directives.c (find_answer): Initialize result.
	(_cpp_test_assertion): Check macro pointer.
	(do_assert): Likewise.
	(do_unassert): Don't node type.
	* pch.c (write_macdef, count_Defs, write_defs)
	(save_macros): Adjust fo loss of NT_ASSERTION.

	Asserts are now macro variants
	libcpp/
	* directives.c (parse_answer, parse_assertion, find_answer): Use
	cpp_macro, not struct answer.
	(do_assert, do_unassert): Adjust.
	* include/cpp-id-data.h (struct answer): Delete.
	* include/cpplib.h (NTV_ANSWER): Delete.
	(CPP_HASNODE_VALUE_IDX): Adjust.
	(_cpp_hashnode_value): Remove answer.
	(cpp_macro_p): Make outline ...
	* macro.c (cpp_macro_p): ... here.

	Assert body is back as trailing array
	libcpp/
	* include/cpp-id-data.h (struct answer): Make body a trailing array
	pointer.
	* directives.c (parse_answer, parse_assertion, find_answer):
	Return whole answer struct.
	(_cpp_test_assertion, do_assert, do_unassert): Adjust.

2018-08-01  Nathan Sidwell  <nathan@acm.org>

	libcpp/
	* internal.h (_cpp_construct_macro): Rename to ...
	(_cpp_new_macro): ... here.  Kill old declaration.
	* macro.c (_cpp_construct_macro): Rename to ...
	(_cpp_new_macro): ... here.  Kill old definition.
	(create_iso_definition): Adjust.
	* traditional.c (_cpp_create_trad_definition): Adjust.

	Macro tokens are trailing array
	libcpp/
	* include/cpp-id-data.h (cpp_macro): Move tokens to trailing array.
	* internal.h (_cpp_construct_macro): Declare.
	* macro.c (lex_expansion): Return macro pointer, adjust.
	(macro_real_token_count): Count backwards.
	(replace_args): Use pointer equality, not orderedness.
	(create_iso_definition): Adjust for trailing token array.
	(_cpp_construct_macro): New, broken out of ...
	(_cpp_new_macro): ... here.  Call it.
	(cpp_macro_definition): Constify token pointer.
	gcc/c-family/
	* c-ada-spec.c (macro_length): Constify token pointer.
	(dump_ada_macros): Likewise.

2018-07-17  Nathan Sidwell  <nathan@acm.org>

	libcpp/
	* macro.c (create_iso_definition): Create macro after saving
	parms.
	* traditional.c (_cpp_create_trad_definition): Likewise.

2018-07-16  Nathan Sidwell  <nathan@acm.org>

	libcpp/
	* internal.h (_cpp_reserve_room): New inline.
	(_cpp_commit_buff): Declare.
	* lex.c (_cpp_commit_buff): Implement.
	* directives.c (parse_answer): Use them.
	* macro.c (alloc_expansion_token): Fold ito ...
	(lex_expansion_token): ... here.
	(_cpp_save_parameter): Use _cpp_reserve_room.
	(create_iso_definition): Use _cpp_reserve_room, _cpp_commit_buff).

2018-07-13  Nathan Sidwell  <nathan@acm.org>

	libcpp/
	* macro.c (parse_params): Re implement state machine.
	(create_iso_definition): Adjust first token peeking.
	* traditional.c (save_replacement_text): No need to set macro kind
	here.
	gcc/testsuite/
	* gcc.dg/cpp/macsyntx.c: Update errors.
	* gcc.dg/cpp/macsyntx2.c: Update errors.

	libcpp/
	* internal.h (_cpp_new_macro): Declare.
	(_cpp_unsave_parameters): Declare.
	(_cpp_create_trad_definition): Return cpp_macro.
	* macro.c (_cpp_unsave_parameters): New.
	(parse_params): Take nparm & varadic ptr parms, not macro.
	(create_iso_definition): Return cpp_macro.  Adjust throughout.
	(_cpp_new_macro): New.
	(_cpp_create_definition): Adjust.
	* traditional.c (scan_parameters): Take nparm ptr, not macro.
	(_cpp_create_trad_definition): Return cpp_macro, adjust.

	libcpp/
	* internal.h (_cpp_save_parameter): Take parm no, not macro.
	* macro,c (_cpp_save_parameter): Adjust.  Invert sense of return value.
	(parse_params): Adjust.
	* traditional.c (scan_parameters): Likewise.

2018-07-12  Nathan Sidwell  <nathan@acm.org>

	assert body is indirect.
	libcpp/
	* include/cpp-id-data.h (struct answer): Make body an external
	pointer.
	* directives.c (parse_answer, parse_assertion, find_answer): Use
	separate base-ptr/len tuple for body.
	(_cpp_test_assertion, do_assert, do_unassert): Adjust.

2018-07-11  Nathan Sidwell  <nathan@acm.org>

	Add cmk_assert structures
	libcpp/
	* include/cpp-id-data.h (enum cpp_macro_kind): Add cmk_assert.
	(struct cpp_macro): Place parms in union.
	* macro.c (warn_of_redefinition): Adjust param field access.
	(create_iso_definiton, _cpp_create_definition): Likewise.
	(check_trad_stringification, cpp_macro_definition): Likewise.
	* traditional.c (_cpp_replacement_text_len): Likewise.
	(_cpp_copy_replacement_text, _cpp_create_trad_definition): Likewise.
	gcc/c-family/
	* c-ada-spec.c (macro_length, dump_ada_macros): Adjust param field
	access.

	Add cpp_macro_kind
	libcpp/
	* include/cpp-id-data.h (enum cpp_macro_kind): New.
	(struct cpp_macro): Replace traditional with kind.  Adjust GTY.
	* macro.c (create_iso_definition): Set kind.
	* traditional.c (push_replacement_text): Assert trad.
	(save_replacement_text): Set kind.

	Store include-from as a location, not line-map index.
	libcpp/
	* include/line-map.h (line_map_ordinary): Replace included_from
	index with included_at source_location.
	(ORDINARY_MAP_INCLUDER_FILE_INDEX, LAST_SOURCE_LINE_LOCATION)
	(LAST_SOURCE_LINE, LAST_SOURCE_COLUMN): Delete.
	(INCUDED_FROM): Delete.
	(INCLUDED_AT, linemap_included_at): New.
	(MAIN_FILE_P): Adjust.
	* directives.c (do_linemarker): Use linemap_included_at.
	* line-map.c (include_at_map): New.
	(line_check_files_exited): Use it.
	(LAST_SOURCE_LINE_LOCATION): New (moved from header).
	(linemap_add, linemap_dump, linemap_dump_location): Adjust.
	gcc/
	* diagnostic.c (diagnostic_report_current_module): Use
	linemap_included_at.  Adjust line & col discovery.
	gcc/c-family/
	* c-common.c (try_to_locate_new_include_insertion_point): Use
	linemap_included_at.
	* c-lex.c (fe_file_change): Use INCLUDED_AT.
	* c-ppoutput.c (pp_file_change): Likewise.
	gcc/fortran/
	* cpp.c (cb_file_change): Adjust for line map inclusion changes.

2018-07-09  Nathan Sidwell  <nathan@acm.org>

	libcpp/
	* include/line-map.h (enum lc_reason): Reformat comments.
	gcc/
	* diagnostic.c (diagnostic_report_current_module): Reroll loop.
	use array for prefix strings.

	Default allocator
	libcpp/
	* include/line-map.h (line_maps): Document default allocator.
	* line-map.c (linemap_init): Set default allocator.
	(new_linemap): No need to set default here.  Simplify data flow.

2018-07-06  Nathan Sidwell  <nathan@acm.org>

	Hide NT_MACRO
	libcpp/
	* include/cpplib.h (cpp_macro_p): New.
	* macro.c (cpp_fun_like_macro_p): Use it.
	gcc/c-family/
	* c-ada-spec.c (count_ada_macro, store_ada_macro): Use
	cpp_macro_p.
	* c-ppoutput.c (dump_macro): Likewise.
	* c-spellcheck.cc (should_suggest_as_macro_p): Likewise.
	gcc/
	* config/rs6000/rs6000-c.c (rs6000_macro_to_expand): Use cpp_macro_p.
	* config/powerpcspe/powerpcspe-c.c (rs6000_macro_to_expand): Likewise.
	gcc/fortran/
	* cpp.c (dump_macro): Use cpp_macro_p.

	Merge trunk r262473.

	Merge trunk r260623.

2017-11-03  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r254369.

2017-11-01  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r254314.

	Merge trunk r254279.

2017-10-31  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r254263.

	Merge trunk r254243.

2017-10-30  Nathan Sidwell  <nathan@acm.org>

	Operator code compaction part 12.
	gcc/cp/
	* cp-tree.h (CPTI_CONV_OP_IDENTIFIER): Restore.
	(conv_op_identifier): Revert.
	* decl.c (initialize_predefined_identifiers): Restore.
	(grok_op_properties): Detect conversion operators.
	* decl2.c (mark_used): Dectect lambda conversion properly.
	* lambda.c (maybe_add_lambda_conv_op): Not an overloaded fn.
	* lex.c (init_operators): No need to deal with TYPE_EXPR.

	Merge trunk r254231.

	Operator code compaction part 11.
	gcc/cp/
	* cp-tree.h (lang_decl_fn): Move spare bits to end.
	(ovl_op_flags): Adjust names.
	* decl.c (grokdeclarator): Use OVL_OP_FLAG_ALLOC.
	(grok_op_properties): Adjust ellipsis and arg scanning.
	* lex.c (init_operators): Adjust assert.
	* operators.def: Adjust new & delete flags.
	* pt.c (push_template_decl_real): Use OVL_OP_FLAG_ALLOC.
	* typeck.c (check_return_expr): Likewise.

	Operator code compaction part 10.
	gcc/cp/
	* cp-tree.h (ovl_op_flags): Adjust.
	(ovl_op_alternate): Declare.
	* decl.c (grokdeclarator): Adjust NEW/DEL selection.
	(grok_op_properties): Move warnings to end.  Don't multiply check
	specific tree codes.
	* lex.c (ovl_op_alternate): Define.
	(init_operators): Initialize it.
	* operators.def: Adjust new/delete.
	* pt.c (push_template_decl_real): Likewise.
	* typeck.c (check_return_expr): Likewise.
	gcc/testsuite/
	* g++.dg/other/operator2.C: Adjust diagnostic.
	* g++.old-deja/g++.jason/operator.C: Likewise.

2017-10-27  Nathan Sidwell  <nathan@acm.org>

	Operator code compaction part 9.
	gcc/cp/
	* cp-tree.h (lang_decl_fn): Replace operator_code with smaller
	ovl_op_code field.
	(DECL_OVERLOADED_OPERATOR_CODE, SET_OVERLOADED_OPERATOR_CODE): Delete.
	(DECL_OVERLOADED_OPERATOR_CODE_RAW): New.
	(DECL_OVERLOADED_OPERATOR_IS): Adjust.
	* decl.c (duplicate_decls): Open code operator copying.
	(builtin_function_1): Don't set operator code.
	(build_library_fn): Adjust operator code setting.
	(grok_op_properties): Likewise.
	* lambda.c (maybe_add_lambda_conv_op): Likewise.
	* method.c (implicitly_declare_fn): Likewise.
	* mangle.c (write_unqualified_name): Adjust operator name
	accessor.
	libcc1/
	* libcp1plugin.cc (plugin_build_decl): Adjust.

	Operator code compaction part 8.
	gcc/cp/
	* cp-tree.h (CPTI_CONV_OP_IDENTIFIER): Delete.
	(conv_op_identifier): Map into ovl_op_info array.
	(enum cp_identifier_kind): Swap cik_conv_op &
	cik_reserved_for_udlit.
	(IDENTIFIER_CONV_OP_P): Adjust.
	* decl.c (initialize_predefined_identifiers): Drop conv_op.
	(grok_op_properties): Use IDENTIFIER_OVL_OP_INFO for all ops.
	* lex.c (get_identifier_kind_name): Adjust.
	(init_operators): Special case TYPE_EXPR.
	* operators.def: Add TYPE_EXPR. Casts are mangling only.

	Operator code compaction part 7.
	gcc/cp/
	* cp-tree.h (cp_identifier_kind): Swap cik_assign_op &
	cik_reserved_for_udlit.
	(IDENTIFIER_OVL_OP_P, IDENTIFIER_ASSIGN_OP_P,
	IDENTIFIER_CONV_OP_P, IDENTIFIER_OVL_OP_INFO): Update.
	* decl.c (ambi_op_p, unary_op_p): Delete.
	(grok_op_properties): Reimplement operator lookup.
	* lex.c (get_identifier_kind_name): Adjust.
	* mangle.c (write_unqualified_id): Use IDENTIFIER_OVL_OP_INFO.
	* operators.def (COMPONENT_REF): Is unary.

	Operator code compaction part 6.
	gcc/cp/
	(enum cp_operator_kind): Delete cik_newdel_op.
	(IDENTIFIER_NEWDEL_OP_P): Delete.
	(IDENTIFIER_OVL_OP_P): New.
	(enum ovl_op_flags): New.
	(struct ovl_op_info_t): Delete kind, reorder.
	(IDENTIFIER_OVL_OP_INFO, IDENTIFIER_OVL_OP_FLAGS): New.
	* decl.c (grokdeclarator): Use IDENTIFIER_OVL_OP_FLAGS.
	* lex.c (ovl_op_info): Adjust initialization.
	(get_identifier_kind_name): Lose new-del-op.
	(set_operator_ident): Return identifier.  Don't set kind.
	(init_operators): Set kind here.  Set IDENTIFIER_CP_INDEX.
	* mangle.c (write_unqualified_id): Pick first operator.
	* operators.def: Adjust.
	* pt.c (push_template_decl_real): Use IDENTIFIER_OVL_OP_FLAGS.
	* typeck.c (check_return_expr): Likewise.

	Operator code compaction part 5.
	gcc/cp/
	* cp-tree.h (ovl_op_code): Rename from overloaded_operator_code.
	(ovl_op_info_t, ovl_op_info, ovl_op_mapping): Rename from
	ooc_$FOO.
	(operator_name_info_t, operator_name_info,
	assignment_operator_name_info): Delete.
	* *.c: Update all uses.

	Merge trunk r254141.

	Operator code compaction part 4.
	gcc/cp/
	* cp-tree.h (cp_assignment_operator_id): Delete.
	(assign_op_identifier, call_op_identifier): New.
	* call.c (build_op_call_1): Use call_op_identifier.
	(has_trivial_copy_assign_p): Use assign_op_identifier.
	(build_special_member_call): Likewise.
	* class.c (dfs_declare_virt_assop_and_dtor,
	classtype_has_move_assign_or_move_ctor_p): Likewise.
	* decl.c (grok_special_member_properties): Likewise.
	* lambda.c (lambda_function): Use call_op_identifier.
	* method.c (do_build_copy_assign): Use assign_op_identifier.
	(get_copy_assign, synthesized_method_walk,
	implicitly_declare_fn): Likewise.
	* parser.c (cp_parser_lambda_declarator_opt): Use call_op_identifier.
	* semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
	assign_op_identifier.
	* typeck.c (check_return_expr): Likewise.

2017-10-26  Nathan Sidwell  <nathan@acm.org>

	Operator code compaction part 3.
	gcc/cp
	* cp-tree.h (cp_operator_id): Delete.
	(ovl_op_identifier): Define.
	(OOC_INFO): Define.
	* call.c (build_op_call_1): Use ovl_op_identifier.
	(op_error): Use OOC_INFO.
	(build_conditional_expr_1): Use ovl_op_identifier.
	(build_new_op_1): Likewise.
	(build_op_delete_call): Likewise.
	* class.c (type_requires_array_cookie): Likewise.
	* decl.c (push_cp_library_fn): Likewise.
	* decl2.c (maybe_warn_sized_delete): Likewise.
	* error.c (dump_expr): Use OOC_INFO.
	(parm_to_string): Use ovl_op_identifier.
	* init.c (build_new_1): Likewise.
	* lambda.c (lambda_function): Likewise.
	* lex.c (unqualified_name_lookup_error): Don't check ERROR_MARK.
	* mangle.c (write_unqualified_name): Use OOC_INFO.
	(write_expression): Likewise.
	* method.c (synthesized_method_walk): Use ovl_op_identifier.
	* parser.c (cp_parser_lambda_declarator_opt): Likewise.
	(cp_parser_operator): Likewise.
	(cp_parser_omp_clause_reduction): Likewise.
	* semantics.c (omp_reduction_id): Likewise.
	* typeck.c (cxx_sizeof_or_alignof_type): Use OOC_INFO.
	libcc1/
	* libcp1plugin.cc (plugin_build_decl): Use ovl_op_identifier.
	(plugin_build_dependent_expr): Likewise.

	Operator code compaction part 2.
	gcc/cp/
	* cp-tree.h (IDENTIFIER_CP_INDEX): New.
	* call.c (op_error): Use ooc_info.
	(build_new_op_1): Likewise.
	(build_op_delete_call): Likewise.
	* error.c (assop_to_string): Delete.
	(op_to_string): Add assop arg. Use ooc_info.
	(dump_expr): Use ooc_info.
	(cp_printer): Adjust.
	* mangle.c (write_unqualified_name): Use ooc_info.
	* typeck.c (cxx_sizeof_or_alignof_type): Likewise.

2017-10-25  Nathan Sidwell  <nathan@acm.org>

	Operator code compaction part 1.
	gcc/cp/
	* cp-tree.h (enum overloaded_operator_codes): New.
	(struct ooc_info_t): New.
	(OOC_OPERATORS, OOC_ASSIGNMENTS): New.
	(ooc_info, ooc_mapping): Declare.
	* decl.c (grok_op_properties): Use ooc_info.
	* lex.c (ooc_info, ooc_mapping): Define.
	(set_operator_ident): New.
	(init_operators): Initialize ooc_info, ooc_mapping.
	* mangle.c (write_unqualified_id): Use ooc_info.
	(write_expression): Use ooc_mapping and ooc_info.
	* operators.def: Conditionally define DEF_ASSN_OPERATOR.  Move
	assignment ops later.  Invoke OPERATOR_TRANSITION.

	Merge trunk r254084.

	Kill IDENTIFIER_LABEL_VALUE.
	gcc/cp/
	* cp-tree.h (lang_identifier): Delete label_value slot.
	(IDENTIFIER_LABEL_VALUE, SET_IDENTIFIER_LABEL_VALUE): Delete.
	(struct named_label_hasher): Rename to ...
	(struct named_label_hash): ... here.  Reimplement.
	(struct language_function): Adjust x_named_labels.
	(lookup_label): Declare here too.
	* decl.c (struct named_label_entry): Add name and outer slots.
	(pop_label): Rename to ...
	(check_label_used): ... here.  Don't pop.
	(note_label, sort_labels): Delete.
	(pop_labels, pop_local_label): Reimplement.
	(poplevel): Pop local labels as any other decl. Remove
	shadowed_labels handling.
	(named_label_hash::hash, named_label_hash::equal): New.
	(make_label_decl): Absorb into ...
	(lookup_label_1): ... here.  Add making_local_p arg, reimplement.
	(lookup_label, declare_local_label): Adjust.
	(identify_goto, check_previous_goto, check_goto): Adjust.
	(check_omp_return, define_label_1, define_label): Adjust.
	* lex.c (make_conv_op_name): Don't clear IDENTIFIER_LABEL_VALUE.
	* name-lookup.h (struct cp_label_binding): Delete.
	(struct cp_binding_level): Delete shadowed_labels slot.
	* ptree.c (cxx_print_identifier): Don't print identifier binding.

2017-10-20  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* class.c (layout_class_type): Cleanup as-base creation, determine
	mode here.
	(finish_struct_1): ... not here.

2017-10-19  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (LAMBDA_FUNCTION_P): Use
	DECL_OVERLOADED_OPERATOR_IS.
	(DECL_OVERLOADED_OPERATOR_P): Just be a predicate.
	(DECL_VERLOADED_OPERATOR_IS): New.
	(DECL_OVERLOADED_OPERAT_CODE): New.
	* call.c (add_function_candidate): Use
	DECL_OVERLOADED_OPERATOR_IS.
	(build_op_call_1, build_over_call): Likewise.
	* decl.c (duplicate_decls): Adjust DECL_OVERLOADED_OPERATOR_P,
	USE_DECL_OVERLOADED_OPERATOR_CODE.
	(start_preparsed_function): Use DECL_OVERLOADED_OPERATOR_IS.
	* decl2.c (mark_used): Likwise.
	* dump.c (dump_op): Delete.
	(cp_dump_tree): Don't call it.
	* mangle.c (wite_unqualified_name): Use
	DECL_OVERLOADED_OPERATOR_CODE.
	* method.c (synthesize_method): Use DECL_OVERLOADED_OPERATOR_IS.
	(defaultable_fn_check): LIkewise.
	* tree.c (special_function_p): Likewise.
	* typeck.c (check_return_expr): Use IDENTIFIER_NEWDEL_OP_P.

	gcc/cp/
	* lex.c (get_identifier_kind_name): Fix names.
	(init_operators): Nuke extraneous operators.
	* operators.def (DEF_OPERATOR): Fix documentation.
	(DEF_ASSN_OPERATOR): Lose ARITY.
	(DEF_SIMPLE_OPERATOR, DEF_ASSN_OPERATOR): Undef at end.

2017-10-17  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r253836.

	gcc/cp/
	* name-lookup.c (get_member_vec_index): New. Broken out of ...
	(member_vec_binary_search): ... here.  Use it.
	(member_vec_linear_search): Delete.
	(fields_linear_search, get_class_binding_direct): Adjust.
	(get_member_slot): Use get_member_vec_index, reorganize.

2017-10-13  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r253733

	gcc/
	* tree.c (tree_code_size): Reformat.  Punt to lang hook for unknown
	TYPE nodes.
	gcc/cp/
	* cp-objcp-common.c (cp_tree_size): Reformat.  Adjust returns size
	of TYPE nodes.
	* cp-tree.h (PACK_EXPANSION_PATTERN): Correct formatting.
	gcc/objc/
	* objc-act.c (objc_common_tree_size): Return size of TYPE nodes.

	Merge trunk r253723.

2017-10-11  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r253649.

	gcc/
	* incpath.h (enum incpath_e): Name enum, prefix values.
	(add_path, add_cpp_dir_path, get_added_cpp_dirs): Use incpath_e type.
	* incpath.c (heads, tails): Use INC_MAX.
	(add_env_var_paths, add_standard_paths): Use incpath_e type.
	(merge_include_chains, split_quote_chain,
	register_include_chains): Update incpath_e names.
	(add_cpp_dir_path, add_path, get_added_cpp_dirs): Use incpath_e type.
	* config/darwin-c.c (add_system_framework_path): Update incpath_e
	names.
	(add_framework_path, darwin_register_objc_includes ): Likewise.
	* config/vms/vms-c.c (vms_c_register_includes): Likewise.

	gcc/fortran/
	* cpp.c (gfc_cpp_add_include_path): Update incpath_e names.
	(gfc_cpp_add_include_path_after): Likewise.

	gcc/c-family/
	* c-opts.c (add_prefixed_path): Change chain to incpath_e type.
	(c_common_handle_option): Update incpath_e names.

	Merge trunk r253623

2017-10-10  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r253619.

2017-10-06  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r253485.

	gcc/cp/
	* cp-tree.h (struct default_hash_traits <lang_identifier *>):
	Delete specialization.

2017-10-05  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.c (extern_c_fns): Use hash_table<named_decl_hash>.
	(check_extern_c_conflict, c_linkage_bindings): Adjust.

	gcc/cp/
	* cp-tree.h (struct named_decl_hash): New.
	(lang_decl_ns): Change type of bindings field.
	* lex.c (maybe_add_lang_decl_raw): Adjust.
	* name-lookup.c (find_namespace_slot): Adjust.

	gcc/cp/
	* decl2.c (struct mangled_decl_hash): New.
	(mangled_decls): Use a hash_table, not map.
	(generate_mangled_alias, record_mangling): Adjust.
	gcc/
	* tree.h (DECL_ASSEBLER_NAME_RAW): New.
	(DECL_ASSEBLER_NAME_SET_P, SET_DECL_ASSEMBLER_NAME): Use it.

	gcc/cp/
	* name-lookup.c (set_global_binding): No need for stat_hack.

	Merge trunk r253446.

	gcc/cp/
	Kill IDENTIFIER_GLOBAL_VALUE, SET_IDENTIFIER_GLOBAL_VALUE
	* cp-tree.h (IDENTIFIER_GLOBAL_VALUE,
	SET_IDENTIFIER_GLOBAL_VALUE): Delete.
	* name-lookup.h (set_global_binding): Remove NAME parm.
	(get_global_binding): New inline fn.
	* name-lookup.c (identifier_global_value): Use get_global_binding.
	(set_global_binding): Adjust arg name.
	* class.c (build_ctor_vtbl_group, build_vtbl_initializer): Adjust.
	* decl.c (record_builtin_type, expand_static_init,
	grokdeclarator): Adjust.
	* decl2.c (get_guard, get_local_tls_init_fn, get_tls_init_fn,
	get_tls_wrapper_fn, maybe_warn_sized_delete): Adjust.
	* except.c (declare_library_fn, build_throw): Adjust.
	* init.c (throw_bad_array_length): Adjust.
	* rtti.c (throw_bad_cast, throw_bad_typeid, get_tinfo_decl): Adjust.

2017-10-04  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r253413.

	gcc/cp/
	* cp-tree.h (SET_IDENTIFIER_GLOBAL_VALUE): Drop NAME arg.
	* decl.c (record_builtin_type): Adjust SET_IDENTIFIER_GLOBAL_VALUE.
	* decl2.c (get_local_tls_init_fn, get_tls_init_fn): Likewise.
	* name-lookup.c (set_global_binding): Drop NAME arg.
	* name-lookup.h (set_global_binding): Drop NAME arg.

	gcc/cp/
	* decl.c (record_builtin_type): Reimplement. Push decls with
	matching name.

	gcc/cp/
	* cp-tree.h (record_mangling): Adjust arg types.
	* decl2.c (mangled_decls): New hash_map.
	(generate_mangling_alias): Use mangled_decls, not
	IDENTFIFIER_GLOBAL_VALUE.
	(decl_implicit_alias_p): Delete.
	(record_mangling): Use mangled_decls, not
	IDENTIFIER_GLOBAL_VALUE. Diagnose conflict here.
	* mangle.c (mangle_decl): Adjust record_mangling call.  Don't
	diagnose here.
	* name-lookup.c (set_global_binding): Remove temporary hack.
	gcc/testsuite/
	* g++.dg/abi/mangle41.C: Adjust diags.
	libcc1/
	* libcp1plugin.cc (supplement_binding): Don't call
	maybe_remove_implicit_alias.

2017-10-03  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (record_mangling): Declare.
	(maybe_remove_implicit_alias): Delete.
	* mangle.c (maybe_remove_implicit_alias): Delete.
	(mangle_decl): Use record_mangling.
	(decl_implicit_alias_p): Move to ...
	* decl2.c (decl_implicit_alias_p): ... here.
	(record_mangling): New.
	* name-lookup.c (supplement_binding_1): Delete implicit_alias
	handling.
	(set_global_binding): Allow zapping a slot, for now.

2017-09-13  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r252087.

2017-09-06  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r251808.

	Merge trunk r251780.

2017-09-05  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r251721.

	gcc/cp/
	* cp-tree.h (DECL_TEMPLATE_CONV_FN_P): Delete.
	* pt.c (push_template_decl_real): Don't set it.

	gcc/cp/
	* cp-tree.h (DECL_CONV_FN_P): No need to check DECL_NAME nullness.
	(DECL_CONV_FN_TYPE): FN must be a conv op.

	gcc/cp/
	* class.c (add_method): Move conv_op marker handling to ...
	* name-lookup.c (find_method_slot): ... here.

	gcc/cp/
	* name-lookup.h (get_class_binding_direct, get_class_binding):
	Merge want_type and restricted args.
	* name-lookup.c (get_class_binding_direct): Merge want_type and
	restricted args.  Adjust.
	(get_class_binding): Adjust for argument merge.
	* decl.c (reshape_init_class): Adjust get_class_binding call.
	* search.c (lookup_field_r): Adjust get_class_binding call.

	Kill CLASSTYPE_SORTED_FIELDS
	gcc/cp/
	* cp-tree.h (struct lang_type): Delete sorted_fields.
	(CLASSTYPE_SORTED_FIELDS): Delete.
	gcc/c-family/
	* c-common.c (field_decl_cmp, resort_data,
	resort_field_decl_cmp, resort_sorted_fields): Move ...
	* c-common.h (field_decl_cmp, resort_sorted_fields): ... and ...
	(struct sorted_fields_type): ... and to ...
	gcc/c/
	* c-decl.c (field_decl_cmp, resort_data,
	resort_field_decl_cmp, resort_sorted_fields): Here and ...
	* c-lang.h (struct sorted_fields_type): here..

	Merge TYPE_FIELDS to METHOD_VEC
	gcc/cp/
	* name-lookup.c (method_vec_binary_search,
	method_vec_linear_search): New.  Broken out of ...
	(legacy_fn_member_lookup): ... here.  Delete.
	(fields_linear_search): New.  Broken out of ...
	(legacy_nonfn_member_lookup): ... here.  Delete.
	(find_method_slot): Call set_class_bindings if adding method_vec
	to completed class.
	(get_class_binding_direct): Use new searching functions.
	(method-name_cmp): Order identically named decls.
	(resort_method_name_cmp): Adjust.
	(sorted_fields_type_new): Delete.
	(count_fields): Rename to ...
	(count_class_fields): ... here.  Take RECORD_TYPE and adjust.
	(add_fields_to_record_type): Rename to ...
	(method_vec_append_class_fields): ... here.  Take RECORD_TYPE and
	adjust.
	(add_enum_fields_to_record_type): Rename to ...
	(method_vec_append_enum_values): ... here.  Adjust.
	(method_vec_dedup): New.
	(set_class_bindings): Reimplement.
	(insert_late_enum_def_bindings): Reimplement.
	* name-lookup.h (lookup_field_1, lookup_fnfields_slot,
	lookup_fnfields_slot_nolazy): Delete.
	(get_class_binding_direct, get_class_binding, find_method_slot): Move.
	(set_class_bindings): Add EXTRA parm.
	* class.c (warn_hidden): Cope with non-functions.
	* decl.c (cxx_init_decl_processing): Make conv-op marker function
	not so bogusly typed.

2017-09-01  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r251609.

	gcc/cp/
	* class.c (warn_hidden): Clean up.
	(clone_constructors_and_destructors): No need to check METHOD_VEC.
	(type_has_user_provided_constructor): Likewise.
	(type_has_user_provided_or_explicit_constructor): Likewise.
	(classtype_has_move_assign_or_move_ctor_p): Likewise.
	(finish_struct): Adjust comment.

	gcc/cp/
	* cp-tree.h (resort_type_method_vec): Move declaration to ...
	* name-lookup.h (resort_type_method_vec): ... here.
	* class.c (finish_struct_1, finish_struct): Adjust
	set_class_bindings call.  Don't call finish_struct_methods.
	(resort_data, method_name_cmp, resort_method_name_cmp,
	resort_type_method_vec, finish_struct_methods): Move to ...
	* name-lookup.c (resort_data, method_name_cmp,
	resort_method_name_cmp, resort_type_method_vec): ... here.
	(set_class_bindings): Lose fields arg.  Swallow finish_struct_methods.

	Merge trunk r251592.

	gcc/cp/
	* class.c (finish_struct): Also call set_class_bindings in
	template case.

2017-08-31  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* class.c (finish_struct_1): Move finish_struct_methods and
	set_class_bindings to just after layout.
	(finish_struct): Process using_decls before setting template
	pseudo-size. Call finish_struct_methods immediately after.

	gcc/cp/
	* class.c (finish_struct_methods): Don't warn about private bases
	here.
	(finish_struct_1): Move set_class_bindings as late as possible.
	(finish_struct): Warn about overly private bases after completing
	the type.

	gcc/cp/
	* class.c (finish_struct_methods): Move DECL_IN_AGGR_P frobbing to
	finish_struct_1.
	(check_bases_and_members): Move finish_struct_methods to ...
	(finish_struct_1): ... here.  Frob DECL_IN_AGGR_P.
	(unreverse_member_declarations): Remove unneeded if.
	* method.c (lazily_declare_fn): Adjust comment.
	* pt.c (do_class_deduction): No need to check CLASSTYPE_METHOD_VEC.
	* tree.c (type_has_nontrivial_copy_init): Likewise.

	gcc/cp/
	* class.c (add_method): Use find_method_slot.
	* name-lookup.h (find_method_slot): Declare.
	* name-lookup.c (legacy_fn_member_lookup): Allow NULL slot in
	incomplete type.
	(find_method_slot): Use.
	* decl.c (grok_special_member_properties): Check conv-op here.

	Restore get_class_binding name.
	gcc/cp/
	* name-lookup.c (get_class_value, get_class_value_direct): Rename
	to ...
	(get_class_binding, get_class_binding_direct): ... here.
	* name-lookup.h (get_class_value, get_class_value_direct): Rename
	to ...
	(get_class_binding, get_class_binding_direct): ... here.
	* call.c (builduser_type_conersion_1): Rename calls.
	(has_trivial_copy_assign_p, has_trvial_copy_p): Likewise.
	* class.c (vbase_has_user_provided_move_assign,
	classtype_has_move_assign_or_move_ctor_p, type_build_ctor_call,
	type_build_dtor_call): Likewise.
	* cp-tree.h (CLASSTYPE_CONSTRUCTORS, CLASSTYPE_DESTRUCTOR): Likewise.
	* decl.c (reshape_init_class, register_dtor_fn): Likewise.
	* decl2.c (check_classfn): Likewise.
	* pt.c (retrieve_specialization,
	check_explicit_specialization): Likewise.
	* search.c (lookup_field_r, look_for_overrides_here,
	lookup_conversions_r): Likewise.
	* semantics.c (classtype_has_nothrow_assign_or_copy_p): Likewise.

	gcc/cp/
	* name-lookup.c (insert_late_enum_def_bindings): Swap args.
	* decl.c (finish_enum_value_list): Adjust
	insert_late_enum_def_bindings call.

	Restore lang_type::sorted_fields
	gcc/c/
	* c-decl.c (field_decl_cmp, resort_data,
	resort_field_decl_cmp, resort_sorted_fields): Moved back to ...
	* c-lang.h (struct sorted_fields_type): ...
	gcc/c-family
	* c-common.c (field_decl_cmp, resort_data,
	resort_field_decl_cmp, resort_sorted_fields): ... here ...
	* c-common.h (field_decl_cmp, resort_sorted_fields): ... here ...
	(struct sorted_fields_type): ... here.
	gcc/cp/
	* cp-tree.h (struct lang_type): Restore sorted_fields.
	(CLASSTYPE_SORTED_FIELDS): Restore.
	(CLASSTYPE_BINDINGS): Delete.
	* decl.c (finish_enum_value_list): Adjust
	insert_late_enum_def_bindings call.
	* name-lookup.c (legacy_nonfn_member_lookup): Restore binary
	search.
	(get_class_value_direct): Remove binding table code.
	(sorted_fields_type_new, count_fields, 
	add_fields_to_record_type, add_enum_fields_to_record_type): Restore.
	(add_class_member, add_class_members): Delete.
	(set_class_bindings, insert_late_enum_def_bindings): Adjust.

	Merge trunk r251560.

2017-08-29  Nathan Sidwell  <nathan@acm.org>

	Anonymous namespace has NULL name
	gcc/cp/
	* cp-tree.h (default_hash_traits <lang_identifier *>): Permit
	NULL.
	* name-lookup.c (do_pushdecl): Push NULL-named namespace.
	(do_push_nested_namespace): Adjust.
	(push_namespace): Push anonymous namespace as NULL name.

2017-08-28  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r251385.

	gcc/cp/
	* name-lookup.c (do_class_using_decl): Simplify.

2017-08-25  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.h (lookup_class_member): Delete.
	* name-lookup.c (lookup_class_member): Merge into ...
	(get_class_value): ... here.
	(legacy_nonfn_member_lookup): Don't call it.

	Merge trunk r251351.

2017-08-24  Nathan Sidwell  <nathan@acm.org>

	Rename get_class_binding -> get_class_value
	* name-lookup.c (get_class_binding, get_class_binding_direct): Rename
	to ...
	(get_class_value, get_class_value_direct): ... here.
	* name-lookup.h (get_class_binding, get_class_binding_direct): Rename
	to ...
	(get_class_value, get_class_value_direct): ... here.
	* call.c (builduser_type_conersion_1): Rename calls.
	(has_trivial_copy_assign_p, has_trvial_copy_p): Likewise.
	* class.c (vbase_has_user_provided_move_assign,
	classtype_has_move_assign_or_move_ctor_p, type_build_ctor_call,
	type_build_dtor_call): Likewise.
	* cp-tree.h (CLASSTYPE_CONSTRUCTORS, CLASSTYPE_DESTRUCTOR): Likewise.
	* decl.c (reshape_init_class, register_dtor_fn): Likewise.
	* decl2.c (check_classfn): Likewise.
	* pt.c (retrieve_specialization,
	check_explicit_specialization): Likewise.
	* searh.c (lookup_field_r, look_for_overrides_here,
	lookup_conversions_r): Likewise.
	* semantics.c (classtype_has_nothrow_assign_or_copy_p): Likewise.

2017-08-23  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.c (extract_conversion_operator,
	legacy_fn_member_lookup, legacy_nonfn_member_lookup,
	get_class_binding_direct, get_class_binding, lookup_class_member,
	add_class_member, add_class_members, set_class_bindings,
	insert_late_enum_def_bindings): Move earlier to match trunk.

	Merge trunk r251313.

	gcc/cp/
	* name-lookup.h (get_class_binding_direct, get_class_binding): Add
	temporary restricted parm.
	* name-lookup.c (get_class_binding_direct): Replace fn_only with
	restricted.
	(get_class_binding): Adjust.
	* decl.c (reshape_init_class): get_class_binding is differently
	restricted.
	* search.c (lookup_field_r): get_class_binding is not restricted.
	gcc/testsuite/
	* g++.dg/cpp0x/decltype9.C: Revert, not ready yet.

	gcc/cp/
	* semantics.c (finish_member_declaration): Move USING_DECL check.
	Always set lang_cplusplus.  Commonize decl linking.

2017-08-22  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* name-lookup.c (legacy_fn_member_lookup): Move conv_op processing
	to get_class_binding_direct.
	(legacy_nonfn_member_lookup): Move asserts to
	get_class_binding_direct.
	(get_class_binding_direct): Abosorb asserts and conv_op processing.

	gcc/cp/
	* cp-tree.h (print_search_statistics,
	reinit_search_statistics): Delete.
	* tree.c (cxx_print_statistics): Don't print search stats.
	* search.c (n_fields_searched, n_calls_lookup_field,
	n_calls_lookup_field_1, n_calls_lookup_fnfields,
	n_calls_lookup_fnfields_1, n_calls_get_base_type,
	n_outer_fields_searched, n_contexts_saved): Delete.
	(lookup_member): Delete stats.
	(print_search_statistics, reinit_search_statistics): Delete.	

	Merge trunk r251283.

	gcc/cp/
	* cp-tree.h (lookup_field_1, lookup_fnfields_slot_nolazy): Delete.
	* name-lookup.h (lookup_all_conversions): Delete.
	* decl2.c (check_classfn): Lookup conversions directly.
	* pt.c (check_explicit_specialization): Likewise.
	* search.c (lookup_conversion_operator,
	lookup_fnfields_slot_nolazy, lookup_field_1): Move to ...
	* name-lookup.c (extract_conversion_operator,
	legacy_fn_member_lookup, legacy_nonfn_member_lookup): ... here.
	Make static.
	(get_class_binding_direct): Adjust.
	(lookup_all_conversions): Delete.

	gcc/cp/
	* cp-tree.h (lookup_fnfields_slot): Delete.
	* search.c (lookup_fnfields_slot): Delete.
	(look_for_overrides_here): Use get_class_binding.
	* call.c (build_user_type_conversion_1): Likewise.
	(has_trivial_copy_assign_p, has_trivial_copy_p): Likewise.
	* class.c (get_basefndecls, type_build_ctor_call,
	type_build_dtor_call): Likewise.
	* decl.c (register_dtor_fn): Likewise.
	* decl2.c (check_classfn): Likewise.
	* pt.c (retrieve_specialization,
	check_explicit_specialization): Likewise.
	* semantics.c (classtype_has_nothrow_assign_or_copy_p): Likewise.

	gcc/cp/
	* name-lookup.h (get_class_binding_direct): Declare.
	(get_class_binding): Adjust.
	* name-lookup.c (get_class_binding_direct): New.
	(get_class_binding): Adjust.
	* cp-tree.h (CLASSTYPE_CONSTRUCTORS, CLASSTYPE_DESTRUCTOR): Use
	get_class_binding_direct.
	* class.c (vbase_has_user_provided_move_assign): Likewise.
	(classtype_has_move_assign_or_move_ctor_p): Likewise.
	* decl2.c (check_classfn): Skip non-functions.
	* search.c (lookup_fnfields_slot): Forward to get_class_binding.
	(lookup_conversions_r): Use get_class_binding_direct.
	gcc/testsuite/
	* g++.dg/cpp0x/decltype9.C: Adjust messages.

2017-08-21  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* decl.c (reshape_init_class): Use get_class_binding.
	* name-lookup.c (get_class_binding): New.
	* name-lookup.h (get_class_binding): Declare.
	* search.c (lookup_field_r): Use get_class_binding.

	gcc/cp/
	* search.c (lookup_field_r): Remove obsolete code for type-named
	field in PoD.

	Merge trunk r251241.

	gcc/cp/
	* search.c (lookup_field_1) : Assert TYPE is a class.  Assert
	vfield is not special.
	(lookup_field_fuzzy_info::fuzzy_lookup_fnfields): Delete.
	(lookup_field_fuzzy_r): Adjust.

2017-08-17  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r251159.

2017-07-27  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* cp-tree.h (maybe_version_functions): Declare.
	* decl.c (maybe_version_functions): New.  Broken out of ...
	(decls_match): ... here.  Call it.
	* class.c (add_method): Add asserts, use maybe_version_functions.

	Add conversion marker fn.
	gcc/cp/
	* cp-tree.h (CPTI_CONV_OP_MARKER, conv_op_marker): New.
	* decl.c (initialize_predefined_identifiers): conv_op is conv_op.
	(cxx_init_decl_processing): Create conv_op_marker.
	* class.c (add_method): Compare identifiers.  Insert
	conv_op_marker for conv op overloads.
	(method_name_cmp, resort_method_name): Compare identifiers.
	* lex.c (make_conv_op_name): No need to set identifier kind.
	* search.c (lookup_fnfields_slot_nolazy): Compare identifiers,
	deal with conv_op_marker.

2017-07-21  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r250440.

	Merge trunk r250437.

	gcc/
	* dbxout.c: Restore from trunk.

	Merge trunk r250426.

	Conv ops are regular METHODVEC fns.
	gcc/cp/
	* cp-tree.h (CLASSTYPE_FIRST_CONVERSION_SLOT): Delete.
	* class (add-method): Treat conv ops as regular fns.
	(resort_type_method_vec, finish_struct_methods, warn_hidden) No
	need to skip conversion ops.
	* decl.c (initialize_predefined_identifiers): Naked
	conv_op_identifier is not a conv op.
	* lex.c (make_conv_op_name): Set identifier kind.
	* name-lookup.c (lookup_all_conversions): Use
	lookup_fnfields_slot_nolazy.
	* search.c (lookup_conversion_operator): Process passed in
	overload set.
	(lookup_fnfields_slot_nolazy): Don't skip conversion ops.  Process
	conversions after lookup.
	(lookup_conversions_r): Use lookup_fnfields_slot_nolazy.

2017-07-20  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r250413.

	Method vec sorted by identifier pointer (not conv ops)
	gcc/cp/
	* class.c (add_method): Use IDENTIFIER_POINTER.
	(method_name_cmp, resort_method_name_cmp): Likewise. DECL_NAME can
	never be NULL.
	* search.c (lookup_fnfields_slot_nolazy): Use IDENTIFIER_POINTER.

	Conv op names all same.
	gcc/cp/
	* cp-tree.h (CPTI_CONV_OP_IDENTIFIER): New.
	(conv_op_identifier): New.
	* decl.c (initialize_predefined_identifiers): Add it.
	* lex.c (make_conv_op_name): Names are not in the symbol table.

	All conv ops on one slot.
	gcc/cp/
	* class.c (add_method): Put conversion ops on a single slot.
	* name-lookup.c (lookup_all_conversions): Only examine single
	slot.
	* search.c (lookup_conversion_operator): Examine single slot in
	detail to pull out requested conversions.
	(lookup_conversions_r): Lose tmp/non-tmpl distinction. All ops on
	one slot.
	(lookup_conversions): Likewise.

	gcc/cp/
	* call.c (add_candidates): Move decls to initialization.  Don't
	use !!.

	Merge trunk r250380.

2017-07-19  Nathan Sidwell  <nathan@acm.org>

	Merge trunk r250344.

2017-07-18  Nathan Sidwell  <nathan@acm.org>

	gcc/cp/
	* search.c (lookup_conversion_operator): Return overloads not
	index.
	(lookup_fnfields_idx_nolazy): Absorb into ...
	(lookup_fnfields_slot_nolazy): ... this.
	(lookup_fnfields_1): Absorb into ...
	(lookup_fnfields_slot): ... this.

	Merge trunk r250313.

	Rename TYPE_{MIN,MAX}VAL to TYPE_{MIN,MAX}VAL_RAW.
	gcc/c/
	* c-parser.c (c_parser_array_notation): Use TYPE_{MIN,MAX}_VALUE.
	gcc/c-family/
	* c-warn.c (warn_for_memset): Use TYPE_{MIN,MAX}_VALUE.
	gcc/cp/
	* cp-array-notation.c (build_array_notation_ref): Use
	TYPE_{MIN,MAX}_VALUE.
	* cp-tree.h (PACK_EXPANSION_PARAMETER_PACKS,
	PACK_EXPANSION_EXTRA_ARGS): Use TYPE_{MIN,MAX}VAL_RAW.
	fortran/
	* trans.c (gfc_build_array_ref): Use TYPE_{MIN,MAX}_VALUE.
	lto/
	* lto.c (mentions_vars_p_type): Use TYPE_{MIN,MAX}VAL_RAW.
	(compare_tree_sccs_1): Likewise.  Don't check BINFO directly.
	(lto_fixup_prevailing_decls): Use TYPE_{MIN,MAX}VAL_RAW.
	gcc/
	* tree.h (TYPE_MINVAL, TYPE_MAXVAL): Rename to ...
	(TYPE_MINVAL_RAW, TYPE_MAXVAL_RAW): ... these.
	* lto-streamer-out.c (DFS::DFS_write_tree_body): Use
	TYPE_{MIN,MAX}VAL_RAW.  Don't process BINFO directly.
	(hash_tree): Likewise.
	* tree-parloops.c (try_transform_to_exit_first_loop_alt): Use
	TYPE_MAX_VALUE.
	* tree-streamer-in.c (lto_input_ts_type_non_common_tree_pointers):
	Use TYPE_{MIN,MAX}VAL_RAW.  Don't process BINFO directly.
	* tree-streamer-out.c (write_ts_type_non_common_tree_pointers):
	Likewise.
	* tree.c (free_lang_data_in_type): Use switch, cleanup.
	(find_decls_types_r): Use TYPE_{MIN,MAX}VAL_RAW.  Don't process
	BINFO directly.
	(verify_type): Use TYPE_{MIN,MAX}VAL_RAW.  Move BINFO checking
	into RECORD check.
	objc/
	* objc-act.h (CLASS_NST_METHODS, CLASS_CLS_METHODS): Use
	TYPE_{MIN,MAX}VAL_RAW.

2017-07-17  Nathan Sidwell  <nathan@acm.org>

	Remove special ctor/dtor slots
	gcc/cp/
	* cp-tree.h (CLASSTYPE_CONSTRUCTOR_SLOT,
	CLASSTYPE_DESTRUCTOR_SLOT): Delete.
	(CLASSTYPE_FIRST_CONVERSION_SLOT): Set to zero.
	* class.c (add_method): cdtors do not have specia slots.
	* search.c (lookup_fnfields_idx_nolazy): Likewise.
	(look_for_overrides_here): Use lookup_fnfields_slot.

	Replace lang_type::sorted_fields with lang_type::bindings.
	(from c++modules branch)
	gcc/cp/
	* cp-tree.h (struct lang_type): Replace sorted_fields with
	bindings map.
	(CLASSTYPE_CONSTRUCTORS, CLASSTYPE_DESTRUCTOR): Use
	lookup_fnfields_slot_nolazy.
	(CLASSTYPE_SORTED_FIELDS): Replace with ...
	(CLASSTYPE_BINDINGS): ... this.
	(type_has_user_declared_move_constructor,
	type_has_user_declared_move_assign): Delete, replace with:
	(classtype_has_user_move_assign_or_ctor_p): ... this.
	(insert_late_enum_def_into_classtype_sorted_fields): Delete.
	(lookup_all_conversions): Delete.
	* decl.c (finish_enum_value_list): Use
	insert_late_enum_def_bindings.
	* method.c (maybe_explain_implicit_delete): Use
	classtype_has_user_move_assign_or_ctor_p.
	(lazily_declare_fn): Likewise.
	* class.c (maybe_warn_about_overly_private_class): Ignore
	copy/move ctors.
	(type_has_user_declared_move_constructor,
	type_has_user_declared_move_assign): Delete, replace with:
	(classtype_has_user_move_assign_or_ctor_p): ... this.
	(count_fields, add_fields_to_record_type,
	add_enum_fields_to_record_type, sorted_fields_type_new,
	create_classtype_sorted_fields,
	insert_late_enum_def_into_classtype_sorted_fields): Move to ...
	* name-lookup.c: ... here.
	(add_class_member, add_class_members, set_class_bindings): New.
	(lookup_class_member): New.  Broken out of ...
	* search.c (lookup_field_1): ... here.  Call it.
	(lookup_fnfields_idx_nolazy): Look directly at method_vec.
	(lookup_fnfields_slot_nolazy): Don't complete the type.
	(lookup_all_conversions): Move to name-lookup.c
	* semantics.c (classtype_has_nothrow_assign_or_copy_p): Use
	lookup_fnfields_slot always.
	* tree.c (type_has_nontrivial_copy_init): Use
	classtype_has_user_move_assign_or_ctor_p.
	* name-lookup.h (lookup_class_member,
	set_class_bindings, insert_late_enum_def_binsings,
	lookup_all_conversions): Declare.
	* pt.c (check_explicit_specialization): Use lookup_fnfields_slot.
	* ptree.c (cxx_print_type): Delete sorted-fields.
	gcc/c-family/
	* c-common.h (field_decl_cmp, resort_sorted_fields): Delete.
	(struct sorted_fields_type): Move to c-lang.h.
	* c-common.c (field_decl_cmp, resort_data,
	resort_field_decl_cmp): Move to c-decl.c.
	* c-ada-spec.c (decl_sloc): Ignore builtin fields.
	gcc/c/
	* c-decl.c (field_decl_cmp, resort_data,
	resort_field_decl_cmp): Moved from c-common.c
	* c-lang.h (struct sorted_fields_type): Moved from c-common.h.

2017-07-12  Nathan Sidwell  <nathan@acm.org>

	gcc/
	* tree-core.h (struct tree_type_non_common): Rename binfo to
	lang_1.
	* tree.h (TYPE_BINFO): Move to maxval field.
	(TYPE_LANG_SLOT_1): Allow any type.
	gcc/lto/
	* lto.c (mentions_vars_p_type, lto_fixup_prevailing_decls): Use
	TYPE_LANG_SLOT_1, not binfo.

2017-07-11  Nathan Sidwell  <nathan@acm.org>

	gcc/
	* tree.h (TYPE_METHODS): Delete.
	* tree.c (free_lang_data_in_type): Stitch out member functions and
	templates from TYPE_FIELDS.
	(build_distinct_type_copy, verify_type_variant,
	verify_type): Member fns are on TYPE_FIELDS.
	* tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* dbxout.c (dbxout_type_fields): Member fns are on TYPE_FIELDS.
	(dbxout_type_method_1, dbxout_type_methods): Delete.
	(dbxout_type_fn_member): New, constructed from previous.
	(dbxout_type): No TYPE_METHODS scan.
	* dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
	* function.c (use_register_for_decl): Always ignore register for
	class types when not optimizing.
	* ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
	gcc/c-family/
	* c-ada-spec.c (is_tagged_type, has_nontrivial_methods,
	dump_ada_template, print_ada_methods,
	print_ada_declaration): Member fns are on TYPE_FIELDS.
	gcc/cp/
	* class.c (maybe_warn_about_overly_private_class,
	finish_struct_methods, one_inheriting_sig, count_fields,
	add_fields_to_record_type, check_field_decls, check_methods,
	clone_function_decl, set_method_tm_attributes,
	finalize_literal_type_property, check_bases_and_members,
	create_vtable_ptr, determine_key_method,
	unreverse_member_declarations, finish_struct,
	add_vcall_offset_vtbl_entries_1): Member fns are on TYPE_FIELDS.
	* decl.c (fixup_anonymous_aggr): Likewise.
	* decl2.c (reset_type_linkage_2): Likewise.
	* method.c (after_nsdmi_defaulted_late_checks,
	lazily_declare_fn): Likewise.
	* optimize.c (maybe_thunk_body, maybe_clone_body): Likewise.
	* pt.c (instantiate_class_template_1, tsubst_expr,
	do_type_instantiation, instantiate_pending_templates): Likewise.
	* search.c (lookup_field_1): Likewise.
	* semantics.c (finish_member_declaration,
	finish_omp_declare_simd_methods): Likewise.
	gcc/objc/
	* objc-runtime-shared-support.c (build_ivar_list_initializer):
	Don't presume first item is a FIELD_DECL.
	libcc1/
	* libcp1plugin.cc (plugin_build_decl): Member fns are on TYPE_FIELDS.
	gcc/testsuite/
	* g++.dg/ext/anon-struct6.C: Adjust diag.
	* g++.old-deja/g++.other/anon4.C: Adjust diag.

	gcc/cp/
	* decl2.c (mark_used): Reformat.
	* pt.c (instantiate_class_member): Delete.

2017-07-05  Nathan Sidwell  <nathan@acm.org>

	gcc/
	* tree.h (TYPE_METHODS): Delete.
	* tree.c (free_lang_data_in_type): Stitch out member functions and
	templates from TYPE_FIELDS.
	(build_distinct_type_copy, verify_type_variant,
	verify_type): Member fns are on TYPE_FIELDS.
	* tree-dump.c (dequeue_and_dump): No TYPE_METHODS.
	* tree-pretty-print.c (dump_generic_node): Likewise.
	* dbxout.c (dbxout_type_fields): Member fns are on TYPE_FIELDS.
	(dbxout_type_method_1, dbxout_type_methods): Delete.
	(dbxout_type_fn_member): New, constructed from previous.
	(dbxout_type): No TYPE_METHODS scan.
	* dwarf2out.c (gen_member_die): Member fns are on TYPE_FIELDS.
	* function.c (use_register_for_decl): Always ignore register for
	class types when not optimizing.
	* ipa-devirt.c (odr_types_equivalent_p): Delete TYPE_METHODS scan.
	gcc/c-family/
	* c-ada-spec.c (is_tagged_type, has_nontrivial_methods,
	dump_ada_template, print_ada_methods,
	print_ada_declaration): Member fns are on TYPE_FIELDS.
	gcc/cp/
	* class.c (maybe_warn_about_overly_private_class,
	finish_struct_methods, one_inheriting_sig, count_fields,
	add_fields_to_record_type, check_field_decls, check_methods,
	clone_function_decl, set_method_tm_attributes,
	finalize_literal_type_property, check_bases_and_members,
	create_vtable_ptr, determine_key_method,
	unreverse_member_declarations, finish_struct,
	add_vcall_offset_vtbl_entries_1): Member fns are on TYPE_FIELDS.
	* decl.c (fixup_anonymous_aggr): Likewise.
	* decl2.c (reset_type_linkage_2): Likewise.
	* method.c (after_nsdmi_defaulted_late_checks,
	lazily_declare_fn): Likewise.
	* optimize.c (maybe_thunk_body, maybe_clone_body): Likewise.
	* pt.c (instantiate_class_template_1, tsubst_expr,
	do_type_instantiation, instantiate_pending_templates): Likewise.
	* search.c (lookup_field_1): Likewise.
	* semantics.c (finish_member_declaration,
	finish_omp_declare_simd_methods): Likewise.
	libcc1/
	* libcp1plugin.cc (plugin_build_decl): Member fns are on TYPE_FIELDS.
	gcc/testsuite/
	* g++.dg/ext/anon-struct6.C: Adjust diag.
	* g++.old-deja/g++.other/anon4.C: Adjust diag.

	gcc/cp/
	* decl2.c (mark_used): Reformat.
	* pt.c (instantiate_class_member): Delete.

	Branch creation from trunk:250000
	Use this Changelog for all branch changes, including merges.

Local Variables:
mode: change-log
change-log-default-name: "ChangeLog.name-lookup"
End: