aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/ChangeLog-2017
blob: 4f64c317a9efe1d5a25a153ff39d6854a1a307f3 (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
2017-12-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* intrinsics.def (INTRINSIC_MULUI): Declare.

2017-12-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_target_expr): Update signature.
	(force_target_expr): New function.
	(build_address): Use force_target_expr to store temporary.
	(d_build_call): Likewise.
	* d-lang.cc (d_gimplify_expr): Likewise.
	* d-tree.h (language_function): Update type for vars_in_scope from
	vec<VarDeclaration*> to vec<tree>.
	(force_target_expr): Declare.
	* decl.cc (DeclVisitor::visit(VarDeclaration)): Put vars with scope
	destructors into a TARGET_EXPR, setting its cleanup.
	(declare_local_var): Don't push vars with scope destructors into the
	function binding level.
	* expr.cc (ExprVisitor::visit(DeclarationExp)): Don't handle scope
	destructors.
	(ExprVisitor::visit(CallExp)): Handle calling constructors using
	temporary objects.
	(build_dtor_list): Remove function.
	(build_expr_dtor): Put result into a CLEANUP_POINT_EXPR if any new
	temporaries needing destruction were added to scope.
	(build_return_dtor): Likewise.
	* toir.cc (add_stmt): Set CLEANUP_POINT_EXPR type as void.

2017-12-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c (attr_noreturn_exclusions): New array.
	(attr_returns_twice_exclusions, attr_const_pure_exclusions): Likewise.
	(attr_inline_exclusions, attr_noinline_exclusions): Likewise.
	(d_langhook_common_attribute_table): Swap affects_identity and handler
	fields.  Initialize new member of struct attribute_spec.
	(d_langhook_attribute_table): Likewise.
	(handle_weakref_attribute): Remove function.

2017-12-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (stabilize_expr): Handle assignment expressions.
	(get_frame_for_symbol): Adjust the 'this' field of frames of
	overridden interface functions.
	* d-diagnostic.cc (expand_format): Rewrite '%X' format as '%x'.
	* decl.cc (DeclVisitor::visit(ClassDeclaration)): Handle future
	attribute.
	* expr.cc (ExprVisitor::binop_assignment): Ensure RHS is evaluated
	before LHS.
	(ExprVisitor::visit(SliceExp)): Always save lower bounds if upper has
	any side effects.
	* typeinfo.cc (TypeInfoVisitor::TypeInfoClassDeclaration): Use
	ClassDeclaration::isAbstract.
	(TypeInfoVisitor::visit(TypeInfoTupleDeclaration)): Mark internal
	reference as public and hidden.

2017-12-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_alignment_field): Set DECL_PADDING_P and
	DECL_FIELD_CONTEXT on generated fields.
	(build_struct_literal): Use build_zero_cst to generate padding.
	* decl.cc (build_type_decl): Set public and decl assembler name.

2017-12-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* types.cc (TypeVisitor::visit(TypeClass)): Check for duplicate
	declarations before adding method.

2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(AddrExp)): Build internal struct literal
	symbol before generating its initializer.

2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_parse_file): Set first_global_object_name.

2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang.opt (fmodule-filepath=): Rename to fmodule-file.
	* d-lang.cc (d_handle_option): Update case for OPT_fmodule_file_.

2017-12-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-tree.h (CALL_EXPR_ARGS_ORDERED): Define.
	* d-codegen.cc (d_build_call): Set CALL_EXPR_ARGS_ORDERED for
	functions with D linkage.
	* d-lang.cc (d_gimplify_expr): Handle CALL_EXPR_ARGS_ORDERED.

2017-12-09  Eugene Wissner  <belka@caraus.de>

	* toir.cc (IRVisitor::visit(SwitchStatement)): Set SWITCH_ALL_CASES_P on
	switch statements. Set SWITCH_BREAK_LABEL_P on the artificial label
	created for break statements from a switch.

2017-12-04  Eugene Wissner  <belka@caraus.de>

	* toir.cc (IRVisitor::visit(SwitchStatement)): Build SWITCH_EXPR using build2 instead
	of build3.

2017-11-14  Eugene Wissner  <belka@caraus.de>

	* decl.cc (finish_thunk): Drop frequency argument from
	symbol_table::create_edge.
	* d-lang.cc (d_post_options): Set default value of
	-Wreturn-type to false.

2017-11-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_float_cst): Remove float rounding check.
	* d-longdouble.cc (longdouble::to_int): Don't round floats before int
	conversion.
	* expr.cc (ExprVisitor::binary_op): Handle excess precision.
	(ExprVisitor::visit(NegExp)): Likwise.

2017-10-31  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_address): Store CST nodes into a TARGET_EXPR
	before taking its address.

2017-10-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_FRONTEND_OBJS): Remove newdelete.o.
	* d-incpath.cc (add_globalpaths): Handle NULL target path.

2017-10-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* typeinfo.cc (TypeInfoVisitor::visit(TypeInfoClassDeclaration)):
	Properly check base classes for pointers.

2017-09-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(StringExp)): Add extra null terminator
	onto string type, not the literal.

2017-09-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* types.cc (make_array_type): Move checking of void static arrays
	here.

2017-09-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c: Add include for attribs.h.
	* d-codegen.cc (copy_aggregate_type): Remove TYPE_METHODS.
	(lower_struct_comparison): Use opt_scalar_int_mode.
	* d-target.cc (Target::_init): Use TYPE_MAX_VALUE instead of
	TYPE_MAXVAL.
	(Target::isVectorTypeSupported):  Update call to
	scalar_mode_supported_p.
	* decl.cc (DeclVisitor::visit(Import)): Pass false as new argument to
	the imported_module_or_decl hook.
	* types.cc (TypeVisitor::visit(TypeClass)): Remove TYPE_METHODS.

2017-09-14  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_FRONTEND_OBJS): Add blockexit.o, initsem.o,
	inlinecost.o, safe.o, staticcond.o, and typesem.o.
	* d-attribs.c (uda_attribute_p): Use get_identifier to compare
	strings.
	(build_attributes): Handle empty string expressions.
	* d-builtins.cc (build_frontend_type): Use static create methods to
	'new' front-end types, expressions, and declarations.
	(d_eval_constant_expression): Likewise.
	(build_alias_declaration): Likewise.
	(d_build_builtins_module): Likewise.
	* d-codegen.cc (declaration_type): Likewise.
	(type_passed_as): Likewise.
	(get_frame_for_symbol): Remove dependency on id.h.
	(get_frameinfo): Don't overwrite FRAMEINFO_CREATES_FRAME if function
	has nested frame references.
	* d-convert.cc (convert_for_assignment): Allow static arrays to be
	initialized with a zero integer value.
	* d-frontend.cc (genCmain): Remove dependency on id.h.
	* d-frontend.h (initializerToExpression): Add declaration.
	(gendocfile): Add declaration.
	(initTraitsStringTable): Remove.
	* d-lang.cc (deps_write): Remove dependency on id.h.
	(deps_add_target): Don't call StringTables's destructor.
	(d_init): Remove calls to deleted front-end initialize functions.
	* decl.cc (DeclVisitor::visit(PragmaDeclaration)): Remove dependency
	on id.h.
	(DeclVisitor::visit(VarDeclaration)): Call initializerToExpression to
	get the initializer of decl.
	(build_decl_tree): Remove dependency on id.h.
	(layout_class_initializer): Use static create method to 'new'
	front-end expression.
	* expr.cc (ExprVisitor::visit(AssignExp)): Handle static array
	assignment where RHS is integer zero.
	(ExprVisitor::visit(VarExp)): Remove dependency on id.h.
	(ExprVisitor::visit(StringExp)): Handle empty string expressions.
	* modules.cc (get_internal_fn): Use FuncDeclaration::genCfunc to
	create function decl.
	(build_module_tree): Remove dependency on id.h.
	* toir.cc (IRVisitor::visit(ExtAsmStatement)): Handle empty string
	expressions.
	* typeinfo.cc (make_frontend_typeinfo): Use static create methods to
	'new' front-end declarations.
	(create_tinfo_types): Remove dependency on id.h.
	(get_cpp_typeinfo_decl): Likewise.
	(create_typeinfo): Likewise.

2017-08-23  Johannes Pfau  <johannespfau@gmail.com>

	* typeinfo.cc (TypeInfoVisitor::visit(TypeInfoStructDeclaration)): Do
	not send member functions to backend here.

2017-08-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-convert.cc (convert_expr): Use build_zero_cst for casts from
	typeof(null).

2017-08-13  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-target.cc (Target::isVectorOpSupported): Disallow vectors in
	conditional and logical operators.

2017-08-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* intrinsics.cc (maybe_expand_intrinsic): Handle isNaN(), isInfinity()
	and isFinite() intrinsics.
	* intrinsics.def: Add INTRINSIC_ISNAN, INTRINSIC_ISINFINITY, and
	INTRINSIC_ISFINITE.

2017-08-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* intrinsics.cc (expand_intrinsic_popcnt): New function.
	(maybe_expand_intrinsic): Handle INTRINSIC_POPCNT.
	* intrinsics.def (INTRINSIC_POPCNT): Declare.

2017-08-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-frontend.cc (isBuiltin): Remove restriction on builtins.
	(eval_builtin): Check DECL_INTRINSIC_CODE.
	* d-tree.h (intrinsic_code): Add enum declaration.
	(lang_decl): Add intrinsic field.
	(DECL_INTRINSIC_CODE): New macro.
	(DECL_BUILT_IN_CTFE): New macro.
	* decls.cc (get_symbol_decl): Initialize DECL_INTRINSIC_CODE.
	* intrinsics.cc (intrinsic_decl): Add ctfeonly field.
	(maybe_set_intrinsic): Set frontend builtin flag only if the function
	is CTFE-able.  Set BUILT_IN_FRONTEND if function has no body.
	(clear_intrinsic_flag): Clear DECL_INTRINSIC_CODE instead of frontend
	builtin flag.
	(maybe_expand_intrinsic): Handle INTRINSIC_TAN intrinsics.
	Call clear_intrinsic_flag on CTFE built-ins if semantic has finished.
	* intrinsics.def: Add INTRINSIC_TAN.
	(DEF_D_BUILTIN): New macro.
	(DEF_CTFE_BUILTIN): New macro.

2017-08-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* decl.cc (DeclVisitor::visit): Don't set input_location.
	(build_decl_tree): Handle set and restore of input_location.
	(declare_local_var): Don't set input_location.
	* expr.cc (build_expr): Handle set and restore of input_location.
	* imports.cc (build_import_decl): Likewise.
	* modules.cc (get_dso_registry_fn): Use UNKNOWN_LOCATION for
	declaration of _d_dso_registry.
	* runtime.cc (build_libcall_decl): Use UNKNOWN_LOCATION for
	declaration of library functions.
	* toir.cc (IRVisitor::visit): Don't set input_location.
	(IRVisitor::build_stmt): New function.
	(IRVisitor::do_jump): Update signature.
	(build_function_body): Use IRVisitor::build_stmt.
	* typeinfo.cc (layout_classinfo_interfaces): Don't set input_location.
	* types.cc (layout_aggregate_members): Likewise.
	(layout_aggregate_type): Likewise.

2017-08-05  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_boolop): Handle VECTOR_TYPE comparisons.
	* d-target.cc (Target::checkVectorType): Rename to
	Target::isVectorTypeSupported.
	(Target::isVectorOpSupported): New function.
	* expr.cc (ExprVisitor::visit(IdentityExp)): Don't memcmp floating
	point vectors.
	(ExprVisitor::visit(CmpExp)): Handle always true or always false
	vector comparisons.

2017-08-02  Iain Buclaw  <ibuclaw@gdcproject.org>

	* typeinfo.cc (SpeculativeTypeVisitor::visit(TypeClass)): Don't emit
	typeinfo for speculative class types.

2017-07-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (build_lang_decl): Handle compiler generated typeinfo that
	also appear in code.
	* d-tree.h (lang_identifier): Add decl_tree.
	(IDENTIFIER_DECL_TREE): New macro.
	* decl.cc (declare_extern_var): Re-use already generated decl if
	called with the same identifier twice.

2017-07-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* decl.cc (d_finish_decl): Replace ENABLE_TREE_CHECKING macro with
	flag_checking.

2017-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-tree.h (D_DECL_ONE_ONLY): Remove macro accessor.
	* decl.cc (DeclVisitor::visit(StructDeclaration)): Move call to
	d_comdat_linkage here.
	(DeclVisitor::visit(ClassDeclaration)): Likewise.
	(DeclVisitor::visit(InterfaceDeclaration)): Likewise.
	(DeclVisitor::visit(EnumDeclaration)): Likewise.
	(get_symbol_decl): Move call to mark_needed here.
	(declare_extern_var): Mark compiler generated symbols as needed.
	(make_thunk): Remove copy of D_DECL_ONE_ONLY.
	(get_vtable_decl): Don't call d_comdat_linkage.
	(aggregate_initializer_decl): Likewise.
	(enum_initializer_decl): Likewise.
	* modules.cc (d_finish_compilation): Don't call mark_needed.
	* typeinfo.cc (get_classinfo_decl): Don't call d_comdat_linkage.

2017-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-spec.c (lang_specific_driver): Always add `-o' option when
	compiling D sources.

2017-07-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-frontend.cc (genCmain): Don't error if entrypoint not found.

2017-07-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_types_compatible_p): Check that both types are
	RECORD_TYPE before using record-specific flag comparison.

2017-07-15  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.cc (d_build_d_type_nodes): Set TYPE_DYNAMIC_ARRAY on
	array_type_node.
	* d-codegen.cc (build_delegate_cst): Set TYPE_DELEGATE on internal
	delegate constant types.
	* d-frontend.h (cppTypeInfoMangle): Remove declaration.
	(toCppMangleItanium): Add declaration.
	(cppTypeInfoMangleItanium): Add declaration.
	* d-lang.cc (d_types_compatible_p): Use type flags to determine
	compatibility.  Return false instead of doing size comparison.
	* d-target.cc (Target::toCppMangle): New function.
	(Target::cppTypeInfoMangle): New function.
	(Target::cppTypeMangle): New function.
	(Target::systemLinkage): New function.
	* d-tree.h (TYPE_DYNAMIC_ARRAY): New macro.
	(TYPE_DELEGATE): New macro.
	(TYPE_ASSOCIATIVE_ARRAY): New macro.
	* typeinfo.cc (layout_cpp_typeinfo): Use Target::cppTypeInfoMangle.
	* types.cc (TypeVisitor::visit(TypeDArray)): Set TYPE_DYNAMIC_ARRAY.
	(TypeVisitor::visit(TypeAArray)): Set TYPE_ASSOCIATIVE_ARRAY.
	(TypeVisitor::visit(TypeDelegate)): Set TYPE_DELEGATE.

2017-07-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-target.cc (Target::loadModule): Check module identifier if a
	declaration doesn't exist.
	* typeinfo.cc (make_frontend_typeinfo): Use module location instead if
	a declaration doesn't exist.

2017-06-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-frontend.cc (CTFloat::hash): New function.

2017-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (d_array_string): Remove function.
	(d_assert_call): Inline implementation of d_array_string here.
	* d-tree.h (d_array_string): Remove declaration.
	* typeinfo.cc (TypeInfoVisitor::layout_string): New function.
	(TypeInfoVisitor::visit): Update calls to d_array_string to use
	layout_string instead.

2017-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>

	* toir.cc (IRVisitor::visit(ExtAsmStatement)): Set ASM_VOLATILE_P only
	if statement is not marked with pure attribute.

2017-06-25  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_parse_file): Print all predefined version identifiers
	if verbose.

2017-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-frontend.cc (Global::_init): Remove memset for global.params.

2017-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_ALL_OBJS): Add D_TARGET_OBJS.
	* d-builtins.cc (d_add_builtin_version): Move here from d-lang.cc.
	(d_init_versions): New function.
	* d-lang.cc (d_init): Call d_init_versions.
	* d-target-def.h: New file.
	* d-target.cc (Target::critsecsize): Replace with call to
	targetdm.critsec_size.
	* d-target.def: New file.
	* d-target.h: New file.
	* d-tree.h (d_init_versions): Add declaration.

2017-06-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(BinAssignExp)): Strip promotions from
	both signed and unsigned rshift assignments.

2017-06-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-diagnostic.cc (expand_format): New function.
	(d_diagnostic_report_diagnostic): New function.
	(error, verror): Update format attributes.  Use function
	d_diagnostic_report_diagnostic instead of xvasprintf.
	(errorSupplemental, verrorSupplemental): Likewise.
	(warning, vwarning): Likewise.
	(warningSupplemental, vwarningSupplemental): Likewise.
	(deprecation, vdeprecation): Likewise.
	(deprecationSupplemental, vdeprecationSupplemental): Likewise.

2017-06-15  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(AssertExp)): Don't call invariant on
	interface objects.

2017-06-12  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(DelegateExp)): Convert object to right
	type before using it.

2017-06-12  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (get_decl_tree): Find the first parent member function
	before constructing non-local `this' decl.

2017-06-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.cc (build_frontend_type): Allow all vector types to be
	included in builtins module.

2017-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* types.cc (TypeVisitor::visit(TypeStruct)): Let struct alignment
	override the alignsize.

2017-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (d_decl_context): Use origin template declaration as
	context for instantiated type symbols.

2017-06-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c (d_handle_weak_attribute): Use quoted string format.
	* decls.cc (finish_thunk): Update call to create_edge for new API.

2017-06-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(StringExp)): Create string type that is
	same length as string value literal.

2017-05-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_FRONTEND_OBJS): Rename object.o to rootobject.o.

2017-05-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* decl.cc: Remove include for dumpfile.h.
	(finish_function): Use dump_function to for dumping original ASTs.

2017-05-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* config-lang.in (gtfiles): Add typeinfo.cc.
	* d-codegen.cc (d_build_call_list): Remove function.
	(d_build_call_nary): Remove function.
	(build_binary_op): Remove function.
	(build_binop_assignment): Remove function.
	(build_vthis_type): Rename to build_vthis_function.
	(create_field_decl): Move to decl.cc.
	* d-lang.cc (genCmain): Moved to d-frontend.cc.
	(builtin_modules): Declare static.
	(d_add_builtin_module): New function.
	(d_add_entrypoint_module): New function.
	* expr.cc (ExprVisitor::binary_op): New function.
	(ExprVisitor::binop_assignment): New function.
	* intrinsic.cc (expand_intrinsic): Rename to maybe_expand_intrinsic.
	* runtime.cc (build_libcall): Updated signature.
	* types.cc (make_two_field_type): Remove function.
	(make_struct_type): New function.

2017-05-22  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_OBJS): Add intrinsics.o and runtime.o.
	* d-codegen.h: Remove file.
	* intrinsics.cc: New file.
	* runtime.cc: New file.

2017-05-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc: Remove include for d-dmd-gcc.h.
	* d-dmd-gcc.h: Rename to d-frontend.h.  Update all includes.
	* d-frontend.cc (Global::_init): Remove unnecessary initialization.
	* expr.cc: Remove include for d-dmd-gcc.h.

2017-05-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c (handle_sentinel_attribute): Remove function.
	(ignore_attribute): Remove function.
	(d_langhook_common_attribute_table): Remove sentinel and tm regparm
	from common attribute table.
	(d_langhook_format_attribute_table): Remove variable.
	* d-lang.cc (LANG_HOOKS_BUILTIN_FUNCTION_EXT_SCOPE): Remove macro.
	(LANG_HOOKS_FORMAT_ATTRIBUTE_TABLE): Remove macro.
	(d_post_options): Don't set flag_unit_at_a_time.
	(d_nametype): Remove function.
	* types.cc (TypeVisitor::visit(TypeBasic)): Set TYPE_NAME.
	(TypeVisitor::visit(TypeVector)): Likewise.

2017-05-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_OBJS): Remove d-objfile.o.  Add modules.o.
	* d-codegen.cc (get_linemap): Move function here.
	* d-objfile.cc: Remove file.
	* d-objfile.h: Remove header.
	* d-tree.h (GDC_PREFIX): New macro.
	* decl.cc (make_internal_name): Rename to mangle_internal_decl.
	(DeclVisitor): Move class here.
	(gcc_attribute_p): Move function here.
	(build_decl_tree): Likewise.
	(d_finish_decl): Likewise.
	(start_function): Likewise.
	(finish_function): Likewise.
	(mark_needed): Likewise.
	(base_vtable_offset): Likewise.
	(build_artificial_decl): Likewise.
	(build_type_decl): Likewise.
	(d_comdat_group): Likewise.
	(d_comdat_linkage): Likewise.
	(add_moduleinfo_field): Move to modules.cc
	(layout_moduleinfo_fields): Likewise.
	(get_moduleinfo_decl): Likewise.
	* modules.cc: New file.

2017-05-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* imports.cc (ImportVisitor::visit(Import)): New function.

2017-05-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor::visit(Module)): Set input_location before
	walking module members.
	(get_linemap): Return input_location if no filename set.
	(set_input_location): Remove function.  Update all callers to set
	input_location directly.
	(set_decl_location): Remove function.  Update all callers to pass
	get_linemap to build_decl, or use input_location.
	* types.cc (insert_aggregate_field): Update signature.

2017-04-30  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (start_function): Update signature.
	(finish_function): Update signature.
	(DeclVisitor::visit(FuncDeclaration)): Move function construction to
	start_function.  Move function finalization to finish_function.
	(set_function_end_locus): Remove function.
	(d_finish_function): Remove function.
	(build_simple_function_decl): Don't set frontend body.
	(build_simple_function): Update signature.  Use start/finish function
	to compile the body.
	(emit_dso_registry_cdtor): Likewise.
	* expr.cc (ExprVisitor::visit(WrappedExp)): Remove function.

2017-04-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-diagnostic.cc (verror): Use xvasprintf.
	(verrorSupplemental): Likewise.
	(vwarning): Likewise.
	(vwarningSupplemental): Likewise.
	(vdeprecation): Likewise.
	(vdeprecationSupplemental): Likewise.

2017-04-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-tree.h (d_tree_index): Add DTI_VTABLE_ENTRY_TYPE,
	DTI_VTBL_INTERFACE_TYPE, DTI_ARRAY_TYPE, and DTI_NULL_ARRAY.
	(vtable_entry_type): New macro.
	(vtbl_interface_type_node): New macro.
	(array_type_node): New macro.
	(null_array_node): New macro.
	* d-builtins.cc (d_build_d_type_nodes): Initialize new trees.
	* d-codegen.cc (build_struct_literal): Allow NULL index when
	looking for next field to initialize.
	(copy_aggregate_type): New function.
	* d-target.cc (Target::loadModule): Look for object module,
	call create_tinfo_types.
	* decl.cc (TypeInfoDeclVisitor): Move to typeinfo.cc.
	(get_typeinfo_decl): Likewise.
	(copy_struct): Remove function.  Updated callers to use
	copy_aggregate_type.
	(layout_classinfo_interfaces): Move to typeinfo.cc.
	(get_classinfo_decl): Likewise.
	(get_cpp_typeinfo_decl): Likewise.
	* typeinfo.cc (tinfo_kind): New enum.
	(tinfo_types): New static variable.
	(get_typeinfo_kind): New function.
	(make_internal_typeinfo): New function.
	(make_frontend_typeinfo): New function.
	(create_tinfo_types): New function.
	(TypeInfoVisitor::set_field): Remove function.
	Update all callers to use layout_field.
	(TypeInfoVisitor::layout_vtable): Remove function.
	Update all callers to use layout_base.
	(TypeInfoVisitor::layout_field): New function.
	(TypeInfoVisitor::layout_base): New function.
	(builtin_typeinfo_p): New function.
	(genTypeInfo): Rename to create_typeinfo.
	(isSpeculativeType): Rename to speculative_type_p.

2017-04-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-tree.h (d_function_chain): Declare macro.  Update all uses of
	`cfun->language' to use it.

2017-04-22  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc: Rename to decl.cc.
	(get_symbol_decl): Handle typeinfo declarations.
	(declare_extern_var): New function.
	(declare_local_var): New function.
	(get_moduleinfo_decl): Call declare_extern_var.
	(get_classinfo_decl): Likewise.
	(get_vtable_decl): Likewise.
	(get_cpp_typeinfo_decl): Likewise.
	(aggregate_initializer_decl): Likewise.
	(enum_initializer_decl): Likewise.
	* Make-lang.in (D_OBJS): Update.
	* d-codegen.cc (build_local_var): Remove function.
	Updated all callers to use declare_local_var.
	(build_local_temp): Move to decl.cc.
	(get_decl_tree): Likewise.
	(expand_decl): Remove function.
	(build_closure): Inline expand_decl here.

2017-04-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (pop_binding_label): Move to toir.cc.
	(pop_label): Likewise.
	(push_binding_level): Likewise
	(pop_binding_level): Likewise.
	(push_stmt_list): Likewise.
	(add_stmt): Likewise.
	(check_goto): Move to toir.cc, make it a member of IRVisitor.
	(check_previous_goto): Likewise.
	(lookup_label): Likewise.
	(lookup_bc_label): Likewise.
	(define_label): Likewise.
	* toir.cc (build_ir): Rename to build_function_body.

2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-target.cc: Update includes.

2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang-specs.h: Remove capitalized D source suffixes.

2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang-specs.h: Add rule for forwarding -iprefix and -imultilib to the
	compiler proper.

2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang-specs.h: Remove cc1d spec.

2017-04-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang-specs.h: Remove +e handling.

2017-04-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-diagnostic.cc: New file.
	* d-frontend.cc: New file.
	* d-glue.cc: Remove file.
	* d-port.cc: Remove file.
	* d-longdouble.h (template<typename T> operator): Remove operators.

2017-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-incpath.cc (add_env_var_paths): Rename to add_environment_paths.
	(make_absolute): Remove function.
	(add_import_path): Rename to add_globalpaths.
	(add_fileimp_path): Rename to add_filepaths.

2017-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.h (d_types_same): Renamed to same_type_p.
	Moved to types.cc.
	(build_object_type): Renamed to get_object_type.  Moved to types.cc.
	* d-codegen.cc (type_va_array): Renamed to valist_array_p.
	Moved to types.cc.
	(d_array_type): Renamed to make_array_type.  Moved to types.cc.
	(insert_type_modifiers): Moved to types.cc.
	(build_two_field_type): Likewise.
	(empty_aggregate_p): Likewise.
	(fixup_anonymous_offset): Likewise.
	(layout_aggregate_members): Likewise.
	(layout_aggregate_type): Likewise.
	(insert_aggregate_field): Likewise.
	(finish_aggregate_type): Likewise.

2017-04-17  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_FRONTEND_OBJS): Update to match new source names.

2017-04-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* gdc.texi: Rewrite documentation for manpages.

2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor::visit(FuncDeclaration)): Remove logic
	that parent needs to be compiled before nested.

2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_post_options): Don't overwrite in_fnames.
	(d_parse_file): Don't error about not being able to use stdin.
	Implement support for reading source code from stdin.

2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_parse_file): Remove invalid file name checks.

2017-04-08  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-glue.cc (Global::_init): Set global.stdmsg to stderr.

2017-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codgen.h (current_module_decl): Moved to d-objfile.cc.
	* d-objfile.h (current_module_info): Likewise.
	(ModuleInfoFlags): Likewise.
	(ModuleInfo): Likewise.
	* d-objfile.cc (start_function): Move updating ModuleInfo structure to
	...
	(DeclVisitor::visit(FuncDeclaration)): ... here.  Set it after
	finishing off the function.

2017-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor::visit(FuncDeclaration)): Use
	push_function_decl for storing current state when switching to nested
	functions.  Remove handling of deferred functions.
	* d-tree.h (language_function): Remove deferred_fns.
	* expr.cc (ExprVisitor::visit(DelegateExp)): Don't defer compiling
	the delegate lambda.
	(ExprVisitor::visit(FuncExp)): Likewise for function literals.
	(ExprVisitor::visit(VarExp)): Likewise.

2017-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (start_function): Move to d-objfile.cc, make it static.
	(end_function): Likewise.  Renamed to finish_function.

2017-04-05  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (d_convert): Move to d-convert.cc.
	(convert_expr): Likewise.
	(convert_for_assignment): Likewise.
	(convert_for_argument): Likewise.
	(convert_for_condition): Likewise.
	(d_array_convert): Likewise.

2017-04-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.c (d_global_trees): Move to d-lang.cc.
	(build_dtype): Rename to build_frontend_type.
	Updated all callers.
	(build_expression): Rename to d_eval_constant_expression.
	Updated all callers.
	(build_alias_declaration): New function.
	(d_build_c_type_nodes): New function.
	(d_build_d_type_nodes): New function.
	(d_define_builtins): New function.

2017-04-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-attribs.c (insert_type_attribute): Use
	build_type_attribute_variant.
	(insert_decl_attribute): Use build_decl_attribute_variant.
	(uda_attribute_p): Remove string table, use Identifier comparison for
	looking up table attributes.
	(build_attributes): Make unknown attribute a warning, use quoted
	strings in diagnostic messages.

2017-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -fdump-d-original.
	(d_parse_file): Likewise.
	* d-target.cc (Target::maxStaticDataSize): New variable.
	(Target::_init): Initialize maxStaticDataSize.
	* lang.opt (fdump-d-original): Declare.

2017-04-01  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (D_GLUE_OBJS): Remove d-todt.cc.
	* d-objfile.cc (build_moduleinfo_symbol): Build initializer for
	ModuleInfo directly from inferred type fields.
	(d_finish_symbol): Remove handling of DECL_LANG_INITIAL.
	* d-todt.cc: Remove file.
	* d-tree.h (lang_decl): Remove initial field.
	(DECL_LANG_INITIAL): Remove macro.

2017-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor::visit(VarDeclaration)): Use build_expr to
	generate the static initializer.
	* d-todt.cc (Initializer::toDt): Remove function and all overrides.
	* expr.cc (ExprVisitor::visit(VarExp)): Use build_expr to get the
	constant initializer of a constant variable.

2017-03-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (aggregate_initializer): Renamed to
	aggregate_initializer_decl.  Updated all callers.
	(enum_initializer): Renamed to enum_initializer_decl.
	Updated all callers.
	(layout_class_initializer): New function.
	(layout_struct_initializer): New function.
	* d-todt.cc (ClassDeclaration::toDt): Remove function.
	(StructDeclaration::toDt): Remove function.

2017-03-27  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor::visit(Module)): New function.
	(Module::genobjfile): Remove function.
	Updated all callers to use build_decl_tree.
	(layout_moduleinfo): New function.
	(Module::genmoduleinfo): Remove function.
	Update all callers to use layout_moduleinfo.

2017-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (base_vtable_offset): New function.
	(ClassDeclaration::baseVtblOffset): Remove function.
	Updated all callers to use base_vtable_offset.

2017-03-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (DeclVisitor): New visitor interface to supercede the
	toObjFile methods.
	(build_decl_tree): New function.
	(Dsymbol::toObjFile): Remove function and overrides.
	Updated all callers to use build_decl_tree.

2017-03-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (get_cpp_typeinfo_decl): New function.
	* d-lang.cc (d_build_eh_type_type): Return classinfo for
	__cpp_type_info_ptr when generating catch for C++ classes.
	* runtime.def (CXA_BEGIN_CATCH): Define.
	(CXA_END_CATCH): Define.
	* toir.cc (IRVisitor::visit(TryCatchStatement)): Support catching
	classes thrown from C++.
	* typeinfo.cc (layout_cpp_typeinfo): New function.

2017-03-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-builtins.cc (d_build_builtins_module): Always mark gcc builtins as
	nothrow functions.

2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-longdouble.cc (CTFloat::zero): New variable.
	(CTFloat::one): New variable.
	(CTFloat::minusone): New variable.
	(CTFloat::half): New variable.
	(longdouble::set): Remove float and double overloads.
	(longdouble::operator float): Remove function.
	(longdouble::operator double): Remove function.
	* d-target.cc (Target::_init): Initialize floating point constants.

2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_init): Replace calls to init with _init.
	* d-glue.cc (Global::init): Renamed to Global::_init.
	* d-target.cc (Target::init): Renamed to Target::_init.

2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-longdouble.cc (longdouble::format): Remove function.
	(longdouble::formatHex): Remove function.
	(longdouble::dump): Remove function.
	(CTFloat::sprint): Inline implementation of format and formatHex here.

2017-03-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_init): Remove calls to Port::init and longdouble::init.
	* d-longdouble.cc (real_limits): Remove variable.
	(longdouble::init): Remove function.
	(CTFloat::parse): Update to use Target::RealProperties.
	* d-port.cc (Port::ldbl_nan): Remove variable.
	(Port::snan): Remove variable.
	(Port::ldbl_infinity): Remove variable.
	(Port::ldbl_max): Remove variable.
	(Port::init): Remove function.
	(Port::isFloat32LiteralOutOfRange): Update to use
	Target::RealProperties.
	(Port::isFloat64LiteralOutOfRange): Likewise.
	* d-target.cc (Target::FPTypeProperties<T>::max): Define.
	(Target::FPTypeProperties<T>::min_normal): Define.
	(Target::FPTypeProperties<T>::nan): Define.
	(Target::FPTypeProperties<T>::snan): Define.
	(Target::FPTypeProperties<T>::infinity): Define.
	(Target::FPTypeProperties<T>::epsilon): Define.
	(Target::FPTypeProperties<T>::dig): Define.
	(Target::FPTypeProperties<T>::mant_dig): Define.
	(Target::FPTypeProperties<T>::max_exp): Define.
	(Target::FPTypeProperties<T>::min_exp): Define.
	(Target::FPTypeProperties<T>::max_10_exp): Define.
	(Target::FPTypeProperties<T>::min_10_exp): Define.
	(define_float_constants): New function.
	(Target::init): Initialize compile-time floating point properties.
	* longdouble.h (Mode): Remove type declaration.
	(real_properties): Remove type declaration.

2017-03-10  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-longdouble.cc (CTFloat::fabs): New function.
	(CTFloat::isIdentical): New function.
	(CTFloat::isNaN): New function.
	(CTFloat::isSNaN): New function.
	(CTFloat::isInfinity): New function.
	(CTFloat::parse): New function.
	(CTFloat::sprint): New function.
	* d-port.cc (Port::isNan): Remove function.
	(Port::isSignallingNan): Remove function.
	(Port::isInfinity): Remove function.
	(Port::fequal): Remove function.
	(Port::strtof): Remove function.
	(Port::strtod): Remove function.
	(Port::strtold): Remove function.
	(Port::isFloat32LiteralOutOfRange): New function.
	(Port::isFloat64LiteralOutOfRange): New function.
	* longdouble.h (ld_sprint): Remove function.

2017-03-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-glue.cc (verror): Update to handle -Wspeculative.
	(verrorSupplemental): Likewise.
	* d-lang.cc (d_init_options): Initialize module alias array.
	(d_init_options): Handle -fmodule-filepath= and -Wspeculative.
	* d-port.cc (Port::stricmp): Remove function.
	(Port::writelongLE): New function.
	(Port::writelongBE): New function.
	* lang.opt (Wspeculative): Declare.
	(fmodule-filepath=): Declare.

2017-03-06  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -ftransition=dip1000
	* lang.opt (ftransition=dip1000): Declare.
	(ftransition=safe): Make alias for -ftransition=dip1000

2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (get_decl_tree): Handle chaining over many levels of
	nesting functions to get to the right parent for the 'this' field.

2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (get_symbol_decl): Move generation of DECL_ARGUMENTS for
	empty body declarations to ...
	(make_thunk): ... here.  Also set-up DECL_RESULT.
	(finish_thunk): Mark DECL_UNINLINEABLE on external functions.

2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (make_thunk): Don't build thunks for functions that
	failed to compile.

2017-03-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (emit_dso_registry_hooks): Set DECL_PRESERVE_P.

2017-02-26  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_frame_type): Update condition for scope
	destruction error.
	* d-port.cc (Port::valcpy): New function.
	* expr.cc (ExprVisitor::visit(CallExp)): Generate cast of 'this'
	object to the right handle type before indexing.

2017-02-24  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-glue.cc (warningSupplemental): New function.
	(vwarningSupplemental): New function.
	(deprecationSupplemental): New function.
	(vdeprecationSupplemental): New function.

2017-02-23  Iain Buclaw  <ibuclaw@gdcproject.org>

	* imports.cc (ImportVisitor::visit(OverDeclaration)): New function.
	(ImportVisitor::visit(FuncAliasDeclaration)): New function.

2017-02-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -X and -Xf options.
	(d_parse_file): Update.
	* lang-specs.h: Add rules for -X style options.
	* lang.opt (X): Declare.
	(Xf): Declare.
	(fXf=): Make alias for -Xf.

2017-02-21  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang.opt (fd-vgc): Comment out help test.
	(fd-verbose): Likewise.
	(fd-vtls): Likewise.
	(femit-modules): Likewise.

2017-02-20  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-target.cc (Target::fieldalign): Adjust.

2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_option_data): Add fields to support other -M options.
	(d_init_options): Initialize them.
	(deps_add_target): New function.
	(deps_write): Support multiple targets and phony rules.
	(d_handle_option): Handle gcc -M style options.
	(d_parse_file): Likewise.
	* lang-specs.h: Add rules for -M style options.
	* lang.opt: Declare -M style options.

2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (is_system_module): Remove.
	(deps_write): Always ignore entrypoint module.

2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (write_one_dep): Remove.
	(deps_write): Update signature.

2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (iprefix_dir): Remove.
	(imultilib_dir): Remove.
	(std_inc): Remove.
	(d_option_data): New struct.
	(d_option): Declare.
	(d_init_options): Initialize d_option.
	(d_init): Update to use d_option.
	(d_handle_option): Likewise.
	(d_parse_file): Likewise.
	(deps_write): Update signature.

2017-02-19  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Call D_handle_option_auto.
	* lang.opt (Wunknown-pragmas): Turn on warning with -Wall.

2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Replace -fin with -fpreconditions;
	-fout with -fpostconditions.  Handle -fswitch-errors.
	(d_post_options): Move setting of release code flags here.
	* lang.opt (fassert): Declare flag_assert.
	(fin): Make alias for -fpreconditions.
	(finvariants): Declare flag_invariants.
	(fout): Make alias for -fpostconditions.
	(fpostconditions): Declare.
	(fpreconditions): Declare.
	(fswitch-errors): Declare.

2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (PragmaDeclaration::toObjFile): Warn about unknown
	pragmas only if -Wunknown-pragmas.

2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-glue.cc (Global::init): Initialize errorLimit to flag_max_errors.
	(verror): Don't halt program after invocation limit.
	* d-lang.cc (d_handle_option): Remove handling -fmax-error-messages.
	* lang.opt (fmax-error-messages): Remove option.

2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-decls.cc (get_symbol_decl): Handle -Wtemplates.
	* d-lang.cc (d_init_options): Remove setting flag_emit_templates.
	(d_handle_option): Replace handling -femit-templates with
	-fall-instantiations.
	(d_pushdecl): Remove checking for flag_emit_templates.
	* d-tree.h (D_DECL_IS_TEMPLATE): Remove macro.
	* lang.opt (flag_emit_templates): Remove variable.
	(fall-instantiations): Declare.
	(femit-templates): Make alias for -fall-instantiations.
	(Wtemplates): Declare.

2017-02-18  Iain Buclaw  <ibuclaw@gdcproject.org>

	* lang.opt (fassert): Update help text.
	(fin): Likewise.
	(finvariants): Likewise.
	(fout): Likewise.

2017-02-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (VarDeclaration::toObjFile): Error if a variable covers
	more than half the address space.

2017-02-04  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-objfile.cc (Module::genmoduleinfo): Ignore symbol visibility when
	looking up module DSO symbols.

2017-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -ftransition=all.
	* lang.opt (ftransition=all): Add compiler option.

2017-01-29  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -ftransition=checkimports.
	* lang.opt (ftransition=checkimports): Add compiler option.

2017-01-28  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_handle_option): Handle -ftransition=import.
	* lang.opt (ftransition=import): Add compiler option.

2017-01-25  Iain Buclaw  <ibuclaw@gdcproject.org>

	* imports.cc (ImportVisitor::visit(EnumDeclaration)): New function.
	(ImportVisitor::visit(AggregateDeclaration)): New function.
	(ImportVisitor::visit(ClassDeclaration)): New function.
	(ImportVisitor::make_import): New function.
	(ImportVisitor::visit(AliasDeclaration)): Get decl for type alias.

2017-01-22  Iain Buclaw  <ibuclaw@gdcproject.org>

	* expr.cc (ExprVisitor::visit(EqualExp)): Don't use memcmp on arrays
	of structs that define xopEquals.

2017-01-15  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-spec.cc (lang_specific_driver): Add missing break.

2017-01-13  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen.cc (build_class_instance): Don't check for void
	initialized fields.
	* expr.cc (ExprVisitor::visit(StructLiteralExp)): Likewise.

2017-01-11  Iain Buclaw  <ibuclaw@gdcproject.org>

	* typeinfo.cc (layout_classinfo): Use placement new to initialize
	typeinfo class declaration.

2017-01-02  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-codegen,cc (get_frame_for_symbol): Use fully qualified name in
	error message.
	(build_frame_type): Always add parameters to closure vars if the
	function has a contract function.
	(get_frameinfo): Likewise, always create a frame.
	* expr.cc (ExprVisitor::needs_dtor): New function.
	(ExprVisitor::lvalue_p): New function.
	(ExprVisitor::visit(AssignExp)): Check for dtor in array assignments.
	(ExprVisitor::visit(TypeidExp)): Cast result to expression type.


Copyright (C) 2017 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.