summaryrefslogtreecommitdiff
path: root/gcc/d/ChangeLog-2012
blob: 741747b06e54384c8a61d4823afc445a010d9bee (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
2013-02-15  Iain Buclaw  <ibuclaw@gdcproject.org>

	* Make-lang.in (GDC_EXTENDED_ASM_SYNTAX): Remove macro.

2013-02-14  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.h (D_DECL_IS_CONTRACT): Remove macro.
	* d-decls.cc (FuncDeclaration::toSymbol): Likewise.

2013-02-13  Iain Buclaw  <ibuclaw@gdcproject.org>

	* d-lang.cc (d_gcc_is_target_win32): Remove.
	(d_add_builtin_version): New function to handle define_builtin
	callback from backend.
	* d-codegen.cc (IRState::maybeExpandSpecialCall): Remove intrinsic bt.

	* d-builtins.c: Merge with d-builtins2.cc.
	* d-builtins2.cc: Remove.

2013-02-07  Johannes Pfau  <johannespfau@gmail.com>

	* d-lang.cc (d_init): Use gcc's config system for predefined OS versions.
	* setup-gcc.sh: Likewise.
	* target-ver-syms.sh: Likewise.

2013-02-05  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-builtins2.cc (gcc_type_to_d_type): Remove STRUCTTHISREF condition.
	* d-decls.cc (FuncDeclaration::toSymbol): Likewise.
	* d-elem.cc (ThisExp::toElem): Likewise.
	* d-ctype.cc (TypeSArray::toCtype): Remove SARRAYVALUE condition.
	* d-codegen.cc (IRState::isDeclarationReferenceType): Likewise.
	(IRState::isArgumentReferenceType): Likewise.

2013-02-01  Johannes Pfau  <johannespfau@gmail.com>

	* d-lang.cc (d_init): Use gcc's config system for predefined CPU versions.
	(d_init): Fix definition of D_LP64 version.
	* setup-gcc.sh: Likewise.
	* target-ver-syms.sh: Likewise.

2012-12-16  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-decls.cc (FuncDeclaration::toSymbol): Don't optimise PUREconst
	calls.

2012-10-27  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.cc (IRState::buildAssignOp): Handle case where LHS type is
	not compatible with expression type.

2012-10-26  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-decls.cc (ClassDeclaration::toSymbol): Use empty RECORD_TYPE to
	build internal symbol.
	(Module::toSymbol): Likewise.
	* d-objfile.cc (outdata): Set type size from constructor if not
	COMPLETE_TYPE_P.  Assert that DECL_INITIAL is never bigger than
	TYPE_SIZE.

2012-10-25  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.cc (IRState::getFrameInfo): Use vthis to determine whether
	function is nested.

2012-10-21  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-builtins2.cc (gcc_type_to_d_type): Remove special case for
	double/long double types.
	(d_gcc_magic_builtins_module): Cleanup generation of builtin types.
	Add __builtin_unwind_int and __builtin_unwind_uint.

2012-10-16  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-objfile.cc (ObjectFile::outputThunk): Mark thunk as DECL_WEAK
	rather than using weakref attribute.

2012-10-14  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-bi-attrs.h: Remove file.
	* d-builtins.c (d_attribute_table): Define table of machine independant
	attributes for gcc builtins.
	(d_format_attribute_table): Define table of format attributes for gcc
	builtins.
	(handle_noreturn_attribute, handle_leaf_attribute,
	handle_const_attribute, handle_malloc_attribute,
	handle_returns_twice_attribute, handle_pure_attribute,
	handle_novops_attribute, get_nonnull_operand,
	handle_nonnull_attribute, handle_nothrow_attribute,
	handle_sentinel_attribute, handle_type_generic_attribute,
	handle_fnspec_attribute, handle_transaction_pure_attribute,
	ignore_attribute): Moved common attribute handlers from d-bi-attrs.h.
	* d-lang.cc (LANG_HOOKS_ATTRIBUTE_TABLE): Use instead of
	LANG_HOOKS_COMMON_ATTRIBUTE_TABLE.
	(d_attribute_table): Renamed from d_common_attribute_table.
	(d_format_attribute_table): Renamed from
	d_common_format_attribute_table.
	(d_init_ts): Renamed from d_common_init_ts.

	* d-builtins2.cc (d_bi_init): Determine D frontend type for size_t.
	* d-objfile.cc (ObjectFile::hasModule): Remove old compatibility
	macros.

2012-10-08  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-glue.cc (VectorExp::toElem): Handle non-constant array literals as
	vector expressions.

2012-10-04  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-glue.cc (VectorExp::toElem): Handle both array literal as well as
	single element constructors for vector expressions.

2012-09-27  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-convert.cc (convert): Remove assert.

2012-09-22  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.cc (IRState::maybeCompound): Use IRState::compound.
	(IRState::maybeVoidCompound): Use IRState::voidCompound.
	(IRState::call): Check TREE_SIDE_EFFECTS to determine order of
	evaluation in function calls.  Evaluate callee before arguments if has
	side effects.
	* d-decls.cc (FuncDeclaration::toSymbol): Don't set any pure/nothrow
	attributes if asserts are generated in code.
	* d-incpath (add_fileimp_path): Fix ICE using -J option.
	* d-objfile.cc (Obj::moduleinfo): Clean-up.

2012-09-18  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-lang.cc (d_initialize_diagnostics): New function, disable unneeded
	diagnostic options.
	(d_handle_option): Remove OPT_fdebug_c.
	* d-spec.c (lang_specific_driver): Remove OPT_fod_, OPT_fop.
	* lang.opt: Remove -fdebug-c, -fod, and -fop compiler options.

2012-09-17  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.h (CtorEltMaker::cons): Adjust call to VEC_safe_push.
	* d-objfile.cc (ObjectFile::stripVarDecl): Clean-up.

2012-09-16  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.cc (IRState::isCallByAlias): New function.
	(IRState::call): Use IRState::isCallByAlias.
	* d-objfile.cc (ObjectFile::setupSymbolStorage): Mark
	force_static_public symbols as public.

	* d-spec.c (lang_specific_driver): Update for GCC-4.8.
	* lang.opt: Fix spelling of option -static-libphobos

	* d-codegen.cc (IRState::maybeExpandSpecialCall): Do not handle inp*
	and outp* port intrinsic functions.
	(IRState::maybeSetUpBuiltin): Likewise.
	(IRState::expandPortIntrinsic): Remove.

2012-09-10  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.cc (AggLayout::doFields): Propagate volatile out of type.
	(AggLayout::addField): Likewise.
	* d-decls.cc (VarDeclaration::toSymbol): Likewise.

2012-09-06  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.h (IRState::vconvert): Don't use VIEW_CONVERT_EXPR.
	* d-glue.cc (TypeEnum::toCtype): Mark TYPE_PACKED if flag_short_enums.
	(TypeClass::toCtype): Mark TREE_ADDRESSABLE to ensure class is always
	passed in memory.

	* d-tree.def (UNSIGNED_RSHIFT_EXPR): Define new tree expression.
	(FLOAT_MOD_EXPR): Define new tree expression.
	* d-lang.cc (d_common_init_ts): New function.
	(d_write_global_declarations): Call check_global_declarations after
	finalize_compilation_unit.
	(d_gimplify_expr): Handle UNSIGNED_RSHIFT_EXPR, IASM_EXPR.
	* d-codegen.cc (IRState::arrayOpNotImplemented): New function.
	(IRState::buildOp): New function.
	(IRState::buildAssignOp): New function.
	* d-glue.cc (build_bool_binop): Remove function, mostly move to
	CmpExp::toElem.
	(build_math_op): Remove function, mostly move to IRState::buildOp.
	(build_assign_math_op): Remove function, mostly move to
	IRState::buildAssignOp.
	(BinExp::toElemBin): Remove function.
	(IdentityExp::toElem, EqualExp::toElem, CmpExp::toElem)
	(AndAndExp::toElem, OrOrExp::toElem): Clean-up, use IRState::boolOp.
	(XorExp::toElem, OrExp::toElem, AndExp::toElem, UshrExp::toElem)
	(ShrExp::toElem, ShlExp::toElem, ModExp::toElem, DivExp::toElem)
	(MulExp::toElem, MinExp::toElem, AddExp::toElem):Use
	IRState::arrayOpNotImplemented,	IRState::buildOp.
	(XorAssignExp::toElem, OrAssignExp::toElem, AndAssignExp::toElem)
	(UshrAssignExp::toElem, ShrAssignExp::toElem, ShlAssignExp::toElem)
	(ModAssignExp::toElem, DivAssignExp::toElem, MulAssignExp::toElem)
	(MinAssignExp::toElem, AddAssignExp::toElem): Use
	IRState::arrayOpNotImplemented, IRState::buildAssignOp.

	* d-codegen.cc (libcall_ids): Remove _adCmpChar.
	(IRState::getLibCallDecl): Remove LIBCALL_ADCMPCHAR.
	* d-glue.cc (CmpExp::toElem): Don't call LIBCALL_ADCMPCHAR.

	* lang.opt: Define Wcast-result.
	* d-codegen.cc (IRState::convertTo): Warn about null result, but only
	if -Wcast-result.
	(IRState::hwi2toli): Move to header.
	(IRState::realPart): Likewise.
	(IRState::imagPart): Likewise.
	(IRState::toElemLvalue): Clean-up tree args array.
	(IRState::doArraySet): New function.
	(IRState::arraySetExpr): New function.
	* d-glue.cc (EqualExp::toElem): Clean-up tree args array.
	(CatAssignExp::toElem): Likewise.
	(AssignExp::toElem): Likewise.
	(DeleteExp::toElem): Likewise.
	(NewExp::toElem): Use IRState::modify.
	(ArrayLiteralExp::toElem): Don't call ARRAYLITERALTX library function
	if assigning to static array.
	(StructLiteralExp::toElem): Use IRState::arraySetExpr.
	(do_array_set): Move to IRState::doArraySet.
	(array_set_expr): Move to IRState::arraySetExpr.

	* d-lang.h (D_TYPE_IMAGINARY_FLOAT): Define.
	(d_convert_basic): Remove.
	* d-builtins.c (d_init_builtins): Mark imaginary types as
	D_TYPE_IMAGINARY_FLOAT.
	* d-builtins2.cc (gcc_type_to_d_type): Use convert.
	* d-codegen.cc (IRState::emitLocalVar): Call pushdecl earlier so
	catches CONST_DECLs.
	(IRState::convertTo): Remove handling of conversions between
	imaginary/real, imaginary/complex, complex/imaginary types, use
	convert.
	(IRState::convertForArgument): Use convert.
	(IRState::arrayElemRef): Likewise.
	(IRState::call): Likewise.
	(IRState::libCall): Likewise.
	(IRState::maybeExpandSpecialCall): Likewise.
	* d-convert.cc (d_convert_basic): Mark static.
	(convert): Handle correct conversions between imaginary/real,
	imaginary/complex, complex/imaginary types.
	* d-glue.cc (InExp::toElem): Use convert.
	(BoolExp::toElem): Likewise.
	(FuncDeclaration::buildClosure): Likewise.

	* d-builtins.c (def_fn_type): Use build_varargs_function_type_array and
	build_function_type_array to create built-in functions.
	(d_init_builtins): Use lang_hooks.types.type_for_size.
	* d-builtins2.cc (d_gcc_magic_builtins_module): Use
	lang_hooks.types.type_for_mode.
	* d-codegen.cc (IRState::pointerIntSum): Use
	lang_hooks.types.type_for_size.
	(IRState::call): Use lang_hooks.types.type_promotes_to.
	(IRState::maybeExpandSpecialCall): Likewise.
	* d-glue.cc (build_math_op): Use lang_hooks.types.type_for_mode.
	* d-lang.cc (d_type_for_mode): Mark static.
	(d_type_for_size): Likewise.
	(d_type_promotes_to): Likewise.

2012-08-31  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-glue.cc (FuncDeclaration::toObjFile): Flatten nested levels and
	loops in function, delay printing function name in verbose mode until
	we know the function is being compiled.

	* d-codegen.cc (IRState::buildFrameForFunction): New function.
	(IRState::buildChain): Use IRState::buildFrameForFunction to get the
	frame record type.
	(IRState::getFrameInfo): Likewise.
	* d-glue.cc (FuncDeclaration::buildClosure): Likewise.

2012-08-30  Iain Buclaw  <ibuclaw@ubuntu.com>

	* asmstmt.cc (ExtAsmStatement::toCBuffer): Mark unused parameter as
	ATTRIBUTE_UNUSED.
	* d-codegen.cc (WrappedExp::toCBuffer): Likewise.
	* d-objfile.cc (ObjectFile::setupSymbolStorage): Revert to previous
	behaviour of setting symbol storage.

	* d-codegen.cc (IRState::expandDecl): Use IRState::vinit.
	(IRState::binding): Likewise.
	(IRState::var): Handle all declarations, not just vars.
	* d-glue.cc (PtrExp::toElem): Simplify use of IRState::var.
	(SymbolExp::toElem ): Likewise.
	(ThisExp::toElem): Likewise.

	* d-lang.cc (d_init): Remove 'Thumb' identifier for ARM as 16bit
	platforms aren't supported.
	(GNU_LongDouble128): Remove identifier as long double size is
	determined from type information.

	* d-decls.cc (TypeInfoDeclaration::toSymbol): Mark all typeinfo decls
	as 'used'.
	* d-glue.cc (one_elem_array): Remove.
	(CatExp::toElem): Inline use of one_elem_array, clean-up.
	* d-objfile.cc (ObjectFile::setupSymbolStorage): Update to better
	handle use of declarations marked with comdat, extern or static.
	(ObjectFile::doSimpleFunction): Mark function as 'used'.
	* dt.cc (dt2node): Clean-up indentation.

	* Make-lang.in: Fix issue with cross-compiler configuration.

2012-08-29  Iain Buclaw  <ibuclaw@ubuntu.com>

	* lang-specs.h: Remove special case for handled D source files.
	* Make-lang.in: Remove special case for building gcc.o, use
	GCC_EXTRA_LIBS to link against, rather than specific gcc object files.
	(D_DRIVER_NAME): Remove use of variable.
	(D_DRIVER_OBJS): Likewise.
	(D_COMPILER_NAME): Likewise.

2012-08-23  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-builtins2.cc (eval_builtin): Use builtin_decl_explicit.
	* d-codegen.cc (IRState::emitLocalVar): Use warning.
	(IRState::convertTo): Likewise.
	(IRState::addressOf): Use IRState::markAddressable.
	(IRState::markAddressable): New function.
	(IRState::markUsed): New function.
	(IRState::markRead): New function.
	(IRState::maybeExpandSpecialCall): Use builtin_decl_explicit.
	(IRState::floatMod): Likewise.
	(IRState::exceptionObject): Likewise.
	* d-glue.cc (IdentityExp::toElem): Likewise.
	(EqualExp::toElem): Likewise.
	(PowExp::toElem): Likewise.
	(AssignExp::toElem): Likewise.
	(HaltExp::toElem): Likewise.
	(ArrayLiteralExp::toElem): Likewise.
	(FuncDeclaration::toObjFile): Likewise.
	* d-lang.cc (d_mark_addressable): Remove function.
	(d_mark_exp_read): Remove function.
	* d-lang.h (d_warning): Remove macro.
	(d_built_in_decls): Remove macro.
	* d-objfile.cc (Obj::includelib): Use warning.
	(Obj::startaddress): Likewise.

2012-08-22  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-lang.cc (binary): Moved function from frontend.
	* d-codegen.cc (IRState::extractMethodCallExpr): Update for new C++ VEC
	template in GCC.
	* d-bi-attrs.h (parse_optimize_options): Likewise.
	* d-dmd-gcc.h: Remove ifdef __cplusplus, use GCC_SAFE_DMD.
	* d-gcc-includes.h: Remove ifdef __cplusplus.
	* d-lang.h: Likewise.
	* Make-lang.in: Remove CC and CFLAGS from Makefile, add build rule for
	new texi man pages.
	* gdc.texi: New documentation for GDC.

2012-08-18  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.cc (IRState::convertTo): Fix to allow conversion between
	void* and associative arrays.
	(IRState::convertForArgument): Use d_convert_basic.
	(IRState::call): Don't use d_convert_basic, now handled by
	convertForArgument.
	* d-gcc-real.cc (real_t::real_t): Increase real type mode to be greater
	than integer type size to prevent overflow in conversions.
	* d-glue.cc (CastExp::toElem): Don't get implicit AA type.

2012-08-17  Iain Buclaw  <ibuclaw@ubuntu.com>

	* dfrontend: Update to D frontend version 2.060

	* d-codegen.cc (libcall_ids): New library functions.
	(IRState::getLibCallDecl): Implement new library function signatures.
	* d-codegen.h (LibCall::LIBCALL_NEWITEMT): New enum value.
	(LibCall::LIBCALL_NEWITEMIT): Likewise.
	* d-decls.cc (FuncDeclaration::toSymbol): Small readability cleanup.
	* d-glue.cc (NewExp::toElem): Use new library functions.
	(StructLiteralExp::toElem): Update for new frontend.
	(ReturnStatement::toIR): Likewise.
	* d-incpath.cc (add_import_path): New signature.
	(add_fileimp_path): Likewise.
	(add_import_paths): Pass split Strings to helper functions.
	* d-lang.cc (d_parse_file): Use Obj::init and Obj::term.
	* d-objfile.cc (objmod): New variable.
	(Obj::init): New function.
	(Obj::term): Likewise.
	(Obj::includelib): Likewise.
	(Obj::startaddress): Likewise.
	(Obj::allowZeroSize): Likewise.
	(Obj::moduleinfo): Likewise.
	(Obj::export_symbol): Likewise.
	* symbol.h (Obj): New struct to allow object oriented interface to glue
	code from frontend.

	* d-builtins2.cc (d_gcc_magic_stdarg_check): Add new va_arg magic
	function that stores the next value through a passed parameter.
	Remove workaround for inout signature as va_list is always passed by
	reference to intrinsic templates.
	(d_gcc_magic_module): Assign module directly to global IRState.
	* d-codegen.cc (IRState::builtinsModule): Remove static declaration.
	(IRState::intrinsicModule): Likewise.
	(IRState::intrinsicCoreModule): Likewise.
	(IRState::mathModule): Likewise.
	(IRState::mathCoreModule): Likewise.
	(IRState::cstdargTemplateDecl): Likewise.
	(IRState::cstdargStartTemplateDecl): Likewise.
	(IRState::varsInScope): Likewise.
	(IRState::call): Use flag_split_darrays.
	(IRState::maybeExpandSpecialCall): Clean-up va_start and va_arg
	implementations.
	(IRState::maybeSetUpBuiltin): Handle new va_arg function.
	* d-codegen.h (Intrinsic::INTRINSIC_VA_ARG): New enum definition.
	(IRState::setBuiltinsModule): Remove.
	(IRState::setIntrinsicModule): Likewise.
	(IRState::setMathModule): Likewise.
	(IRState::setCStdArg): Likewise.
	* d-glue.cc (CatExp::toElem): Use flag_split_darrays.
	* d-irstate.cc (IRBase::startFunction): Set varsInScope.
	* d-lang.cc (d_init_options): Set modules that require special
	handling.
	(d_handle_option): Don't handle OPT_fsplit_dynamic_arrays.
	* lang.opt: fsplit-dynamic-arrays mapped to variable
	flag_split_darrays.

2012-08-16  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-glue.cc (IdentityExp::toElem): Re-order precendence of type
	checking. Treat static arrays as D arrays in identity comparisons.
	(EqualExp::toElem): Use adEq2 over built-in memcmp for equality
	comparisons for static and dynamic arrays.
	(TypeStruct::toCtype): Remove old platform specific workaround.

	* d-builtins2.cc (bi_lib_list): New decl to hold list of GCC library
	built-ins.
	(d_bi_init): Add decls to bi_list_list if recognising built-ins.
	(d_gcc_magic_builtins_module): Rename built-in type C long to
	__builtin_clong, built-in type C ulong to __builtin_culong.
	(d_gcc_magic_libbuiltins_check): New function to assign internal
	symbol for built-in library functions.
	(d_gcc_magic_libbuiltins_module): New function to scan modules that
	contain GCC library built-ins.
	(d_gcc_magic_module): Search all core.stdc modules for possible GCC
	library built-ins.
	* d-codegen.h (IRState::useBuiltins): Remove.
	* d-lang.cc (d_init_options): Don't set IRState::useBuiltins.
	(d_handle_option): Likewise.
	* lang.opt: Re-order D frontend compiler options.

	* d-codegen.cc (IRState::buildChain): Override chainLink and chainFunc
	for function if static chain is passed via hidden 'this' and no frame
	is created.
	(IRState::getFrameInfo): Pass static chain around nested functions in
	the same way as closures for better performance.

	* d-codegen.cc (libcall_ids): Re-order list in ascii collating order,
	add new library routines to lookup, rename all non-vararg functions to
	match DMD ABI implementation.
	(LibCall): Re-order enum and rename values to match libcall_ids.
	(IRState::toElemLvalue): Use new LibCall name.
	(IRState::getLibCallDecl): Update to match current library signatures,
	add implementation of new library routines.
	(IRState::maybeSetLibCallDecl): New function to set internal symbol
	for special D RT library functions.
	* d-decls.cc (FuncDeclaration::toSymbol): Use
	IRState::maybeSetLibCallDecl.
	* d-glue.cc (InExp::toElem): Use new LibCall name.
	(CatAssignExp::toElem): Likewise.
	(IndexExp::toElem): Likewise.
	(DeleteExp::toElem): Likewise.
	(RemoveExp::toElem): Likewise.
	(NewExp::toElem): Likewise.
	(ArrayLiteralExp::toElem): Likewise.
	(AssocArrayLiteralExp::toElem): Likewise.
	(NullExp::toElem): Use IRState::convertTo.

	* d-codegen.cc (needs_temp): Remove.
	(IRState::makeTemp): New function.
	(IRState::maybeMakeTemp): Re-implement to use isFreeOfSideEffects.
	(IRState::isFreeOfSideEffects): Re-implement to allow better CSE.
	(IRState::call): Use IRState::makeTemp.

	* d-builtins2.cc (gcc_type_to_d_type): Use d_convert_basic.
	* d-codegen.cc (IRState::emitLocalVar): Use IRState::vinit.
	(IRState::convertTo): New function for tree conversions.
	(IRState::convertTo): Use IRState::convertTo.
	(IRState::convertForCondition): Likewise.
	(IRState::darrayVal): Likewise.
	(IRState::pointerIntSum): Likewise.
	(IRState::pointerOffsetOp): Likewise.
	(IRState::pvoidOkay): Likewise.
	(IRState::boundsCond): Likewise.
	* d-convert.cc (convert): New function to be called from C.
	(d_build_truthvalue_op): Use d_convert_basic.
	* d-glue.cc (convert): Remove.
	(build_bool_binop): Use IRState::convertTo.
	(build_math_op): Likewise.
	(CmpExp::toElem): Likewise.
	(PowExp::toElem): Likewise.
	(do_array_set): Likewise.
	(AssignExp::toElem): Likewise.
	(VectorExp::toElem): Likewise.
	(NotExp::toElem): Likewise.
	(CallExp::toElem): Likewise.
	(SymbolExp::toElem): Likewise.
	* dt.cc (dt2tree_list_of_elems): Use d_convert_basic.

2012-07-26  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-gcc-real.cc (real_t::real_t): Use d_float64 for constructor.
	(real_t::isConst0): Remove.
	(real_t::isConst1): Likewise.
	(real_t::isConst2): Likewise.
	(real_t::isConstMinus1): Likewise.
	(real_t::isConstHalf): Likewise.
	* d-gcc-real.h (longdouble): New typedef for real_t.
	(ldouble): New template for ldouble conversions.
	(ld_sprint): New function for ldouble to string formatting.
	* d-codegen.cc (IRState::hwi2toli): Handle maximum 64bit value case.

2012-07-18  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.cc (IRState::delegateVal): Remove ENABLE_CHECKING code.
	(IRState::objectInstanceMethod): Remove special case to avoid calling
	DotTypeExp::toElem.
	* d-glue.cc (CommaExp::toElem): Likewise.
	(DotTypeExp::toElem): Implement function.
	(StructLiteralExp::toElem): Assert instead that basetype is a struct.
	* d-gcc-reah.cc (real_t::real_t): New overload for 'double' type.
	(real_t::format): Change function type to int, return size of buffer
	from function.
	(real_t::formatHex): Likewise.
	* d-builtins2.cc (d_gcc_magic_stdarg_check): Update signature, remove
	check for is_c_std_arg.
	(d_gcc_magic_stdarg_module): Likewise.
	(d_gcc_magic_module): Remove check for core.vararg.
	* d-codegen.cc (INTRINSIC_STD_VA_ARG): Remove.
	(IRState::maybeSetUpBuiltin): Don't handle INTRINSIC_STD_VA_ARG.

2012-07-13  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-decls.cc (Dsymbol::toSymbolX): Remove use of PRIuSIZE format macro.
	(FuncDeclaration::toThunkSymbol): Likewise.

2012-07-12  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-lang.h (D_DECL_IS_CONTRACT): New macro.
	* d-decls.cc (FuncDeclaration::toSymbol): Mark in and out contracts as
	D_DECL_IS_CONTRACT.
	(FuncDeclaration::toThunkSymbol): D thunks no longer private by
	design. Alter mangling of thunk symbols to be unique across the entire
	compilation unit.
	* d-objfile.cc (ObjectFile::makeDeclOneOnly): Catch public contracts to
	mark them as one-only.
	(ObjectFile::outputThunk): Mark weakref thunks as private.

2012-07-10  Iain Buclaw  <ibuclaw@ubuntu.com>

	* Make-lang.in: Remove unused borrowed objects.
	* d-builtins2.cc (d_bi_builtin_func): Don't add builtin if
	-fno-builtin was given.
	* d-codegen.cc (IRState::emitTemplates): Remove static declaration.
	(IRState::splitDynArrayVarArgs): Likewise.
	(IRState::useInlineAsm): Likewise.
	(IRState::useBuiltins): Likewise.
	(d_gcc_force_templates): Update to use global gen.
	* d-codegen.h (emitTemplates): Remove static attribute.
	(splitDynArrayVarArgs): Likewise.
	(useBuiltins): Likewise.
	(useInlineAsm): Remove member.
	(stdInc): Define new member.
	* d-incpath.cc (std_inc): Remove global.
	(add_import_paths): Update function signature.
	* d-lang.cc (d_init_options): Default splitDynArrayVarArgs to false.
	(d_init): Update call to add_import_paths.
	(d_handle_option): Remove OPT_fd_inline_asm, add
	OPT_fsplit_dynamic_arrays.
	* lang.opt: Likewise.

2012-07-08  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-builtins2.cc (d_gcc_type_align): Update function signature. Use
	type align size to determine the known align size of a decl.
	* d-dmd-gcc.h (d_gcc_type_align): Update function signature.
	* symbol.h (Symbol): New member, Salignment.
	* symbol.cc (Symbol::Symbol): Initialise Salignment.
	* d-decls.cc (VarDeclaration::toSymbol): Set Salignment if there is an
	alignment in effect on the decl.
	(AggregateDeclaration::toInitializer): Likewise.
	* d-objfile.cc (ObjectFile::outputStaticSymbol): Set DECL_ALIGN if
	Salignment was given for static decl.

2012-07-07  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-builtins2.cc (d_gcc_magic_builtins_module): Add check for
	DECL_ASSEMBLER_NAME_SET_P when testing for builtins that can be
	markable as pure in the D frontend.

	* d-codegen.cc (IRState::integerConstant): Hide use of
	HOST_BITS_PER_WIDE_INT macros.
	(IRState::hwi2toli): Likewise.
	(IRState::getTargetSizeConst): Likewise.

	* d-builtins.c (d_global_trees): Move declaration here.
	(lookup_C_type_name): Rename to lookup_ctype_name.
	(d_init_builtins): Move set-up of d_global_trees here.
	(gcc_d_backend_init): Move function from d-glue.cc and refactored.
	(gcc_d_backend_term): Likewise.
	* d-builtins2.cc (d_bi_init): Set-up D frontend sizes here.
	* d-glue.cc (gcc_d_backend_init): Removed.
	(gcc_d_backend_term): Likewise.

	* d-incpath.cc (add_phobos_versyms): New function to scan
	phobos-vers-syms file.
	(register_import_chains): Renamed to add_import_paths.
	* d-lang.cc (d_init): Call add_phobos_versyms and add_import_paths.
	(d_parse_int): Don't use strtol to get number from argument string.

	* d-incpath.cc (maybe_fixup_phobos_target): Remove.
	(register_import_chains): Remove use of maybe_fixup_phobos_target.
	* d-lang.cc (maybe_fixup_os_versym): Remove
	(d_init): Remove use of maybe_fixup_os_versym.

	* d-lang.cc (saved_reg_names): Remove.
	(d_init): Remove use of saved_reg_names.
	(d_post_options): Likewise.

2012-07-05  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-glue.cc (StructLiteralExp::toElem): Stop after first assignment for
	constructors built for union types.

2012-07-01  Iain Buclaw  <ibuclaw@ubuntu.com>

	* symbol.h (deferredNestedFuncs): Renamed from otherNestedFuncs, use as
	value type rather than pointer.
	(thunks): Use as value type rather than pointer.
	* d-decls.cc (FuncDeclaration::toSymbol): Remove check for
	deferredNestedFuncs being NULL.
	(FuncDeclaration::toThunkSymbol): Remove check for thunks being NULL.
	* d-glue.cc (DelegateExp::toElem): Remove check for deferredNestedFuncs
	being NULL.
	(FuncDeclaration::toObjFile): Likewise.
	* d-objfile.cc (ObjectFile::shouldEmit): Add nested functions to
	deferredNestedFuncs of their parent function incase parent is actually
	emitted later in during compilation.
	* d-builtins2.cc (d_gcc_type_align): Explicit alignment of variables
	takes precedence over default alignment.
	* d-gcc-includes.h: Re-order list of includes.

2012-06-26  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.cc (IRState::twoFieldType): Use rest_of_decl_compilation.
	* d-gcc-includes.h: Remove last of poisoned backend headers.
	* d-glue.cc (FuncDeclaration::toObjFile): Use fprintf for diagnostic
	message.  Use rest_of_decl_compilation directly.
	(SynchronizedStatement::toIR): Likewise.
	(TypeFunction::toCtype): Remove old version1 macro.
	* d-lang.cc (d_parse_file): Remove dependency on backend header. Use
	fprintf for diagnostic messages.
	(nametype): Use rest_of_decl_compilation directly.
	(d_handle_option): Remove version 1 option.
	* dmd-script: Likewise.
	* lang.opt: Likewise.
	* d-objfile.cc (ObjectFile::outputStaticSymbol): Use
	rest_of_decl_compilation directly.
	(ObjectFile::declareType): Likewise.
	(obj_moduleinfo): Likewise.
	(obj_tlssections): Likewise.
	(ObjectFile::outputThunk): Implement new method of thunk generation
	for external symbols using weakref.
	* d-objfile.h (rodc): Remove.

2012-06-25  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-builtins.c (d_init_builtins): Use build_tree_list to initialise
	void_list_node.
	* d-glue.cc (ArrayLiteralExp::toElem): Always generate code for
	arrayliteralTp.
	(TypeFunction::toCtype): Chain on void_list_node to the end of the
	function type parameters.  Fixes function signatures in debugging.

2012-06-23  Iain Buclaw  <ibuclaw@ubuntu.com>

	* Make-lang.in (d_OBJS): Add so IN_GCC_FRONTEND is defined when
	building gdc sources.
	* d-builtins.c: Remove poisoned headers.
	* d-codegen.cc: Likewise.
	* d-gcc-includes.h: GCC system headers included first, removed
	internally defined macros and poisoned headers.
	* d-gcc-tree.h: Use GCC system headers instead of defining tree_node.
	* d-lang.cc: GCC system headers included first.
	(pushdecl_top_level): Removed.
	* d-objfile.cc: Remove poisoned headers.
	* gdc_alloca.h: Use liberty.h instead of handling include of alloca.

	* d-decls.cc (Dsymbol::toSymbolX): Use snprintf rather than sprintf.
	(FuncDeclaration::toSymbol): Likewise.
	* d-gcc-real.cc (real_t::init): Likewise.
	* symbol.cc (Symbol::Symbol): Use NULL_TREE to initialise tree.
	(symbol_calloc): Use xstrdup to copy string.

	* Make-lang.in: Remove D language version 1 from build
	(_GNU_SOURCE): Removed macro from build.
	(ELFOBJ): Likewise.
	(D_VA_LIST_TYPE_VOIDPTR): Likewise.
	* asmstmt.cc (ExtAsmStatement::semantic): Removed use of V2 macro.
	* d-builtins2.cc (d_gcc_builtin_va_list_d_type): Removed use of
	D_VA_LIST_TYPE_VOIDPTR macro.
	(gcc_type_to_d_type): Likewise.
	(d_gcc_magic_stdarg_check): Likewise.
	(d_gcc_magic_builtins_module): Removed use of V2 macro, and V1
	encapsulated code.
	* d-codegen.cc (IRState::convertTo): Likewise.
	(IRState::toDArray): Likewise.
	(IRState::typesCompatible): Likewise.
	(IRState::arrayBoundsCheck): Likewise.
	(IRState::assertCall): Likewise.
	(libcall_ids): Likewise.
	(IRState::getLibCallDecl): Likewise.
	(IRState::getFrameForSymbol): Likewise.
	(IRState::isFuncNestedIn): Likewise.
	(IRState::buildChain): Likewise.
	(IRState::getFrameInfo): Likewise.
	(IRState::getFrameRef): Likewise.
	(IRState::functionNeedsChain): Likewise.
	(IRState::startCond): Likewise.
	(IRState::exitIfFalse): Likewise.
	(IRState::startCase): Likewise.
	(IRState::doCase): Likewise.
	(IRState::endCase): Likewise.
	* d-decls.cc (VarDeclaration::toSymbol): Likewise
	(FuncDeclaration::toSymbol): Likewise.
	* d-glue.cc (CondExp::toElem): Likewise.
	(build_bool_binop): Likewise.
	(EqualExp::toElem): Likewise.
	(CmpExp::toElem): Likewise.
	(AndAndExp::toElem): Likewise.
	(OrOrExp::toElem): Likewise.
	(AssignExp::toElem): Likewise.
	(CastExp::toElem): Likewise.
	(CallExp::toElem): Likewise.
	(AssertExp::toElem): Likewise.
	(AssocArrayLiteralExp::toElem): Likewise.
	(StructLiteralExp::toElem): Likewise.
	(FuncDeclaration::toObjFile): Likewise.
	(Module::genobjfile): Likewise.
	(TypeFunction::toCtype): Likewise.
	(ThrowStatement::toIR): Likewise.
	(TryCatchStatement::toIR): Likewise.
	(ReturnStatement::toIR): Likewise.
	(SwitchStatement::toIR): Likewise.
	(IfStatement::toIR): Likewise.
	(ForStatement::toIR): Likewise.
	(ExpStatement::toIR): Likewise.
	* d-irstate.cc (IRBase::startFunction): Likewise.
	* d-lang.cc (d_init_options_struct): Likewise.
	(d_handle_option): Likewise.
	(d_parse_file): Likewise.

2012-06-21  Iain Buclaw  <ibuclaw@ubuntu.com>

	* Make-lang.in: Remove d-asm-i386.h
	* asmstmt.cc (d_build_asm_stmt): Update signature, use build5.
	(getFrameRelativeValue): Remove.
	(d_format_priv_asm_label): Likewise.
	(d_have_inline_asm): Likewise.
	(AsmProcessor): Likewise.
	(AsmStatement::toIR): Update sorry message.
	* d-codegen.cc (IRState::expandPortIntrinsic): Update call to
	d_build_asm_stmt.
	(IRState::doAsm): Likewise.
	* d-decls.cc (FuncDeclaration::toSymbol): Remove check for inline asm.
	* d-glue.cc (FuncDeclaration::toObjFile): Likewise.
	(LabelStatement::toIR): Likewise.
	* d-lang.cc (VersionCondition::addPredefinedGlobalIdent): Remove D
	Inline Asm version identifiers.
	* d-lang.h (d_build_asm_stmt): Update signature.

2012-06-19  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-decls.cc (FuncDeclaration::toSymbol): Mark in/out contracts as
	TREE_PUBLIC to allow calling cross-module.
	* d-lang.cc (d_parse_file): Update for 2.059.

2012-06-16  Iain Buclaw  <ibuclaw@ubuntu.com>

	* dfrontend: Merged with DMD 2.059.
	* d-builtins2.cc (gcc_type_to_d_type): Use new frontend value.
	* d-codegen.cc (IRState::getLibCallDecl): Fix return type of _aaDelp.
	(IRState::getVThis): Use frontend provided member to determine if
	function has nested references.
	* d-decl.cc (FuncDeclaration::toSymbol): Weakly pure functions don't
	guarantee no vops.
	* d-gcc-real.cc (max_float_mode): Remove.
	(real_t::convert): Catch imaginary types in conversion.
	* d-glue.cc (EqualExp::toElem): Use memcmp for struct comparisons.
	(CatAssignExp::toElem): Rework order of logic to allow appending
	delegates to an array.
	(DelegateExp::toElem): Implement handling of lambda functions.
	(FuncExp::toElem): Ditto.
	(AssocArrayLiteralExp::toElem): Implement handling of AssociativeArray
	types sent to backend.
	* d-objfile.cc (lmtab): Remove.
	(cvtLocToloc_t): Update implementation.
	(outdata): Now assert that we don't receive error nodes.

2012-06-05  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-decls.cc (FuncDeclaration::toSymbol): Make better use of 'pure' and
	'pure const' functions in GCC codegen.
	* d-bi-attrs.h: Added TM_ATTR* masks.
	(handle_tm_wrap_attribute, handle_tm_attribute, tm_attr_to_mask,
	find_tm_attribute): New.
	(struct d_common_attribute_table): Added transaction* attributes.

2012-06-04  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-objfile.cc (ObjectFile::outputThunk): Output thunks moved back to
	the frontend, as backend does not emit them for DECL_EXTERNAL functions.

2012-05-29  Daniel Green  <venix1@gmail.com>

	* setup-gcc.sh: Add GCC 4.8 to list of supported GCC versions. Patch
	courtesy of Calrama
	https://bitbucket.org/goshawk/gdc/issue/345

2012-05-29  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-codegen.cc (IRState::endCase): Remove parameter from function. Use
	condition type as the SWITCH_EXPR type, rather than use of void.
	* d-codegen.h (IRState::endCase): Update signature.
	* d-glue.cc (SwitchStatement::toIR): Update call to endCase.

2012-05-28  Daniel Green  <venix1@gmail.com>

	* d-builtins.c (DEF_ATTR_STRING): Define and undefine along with other
	macros.
	* d-lang.cc (d_write_global_declartions): Use
	finalize_compilation_unit. GCC 2012-04-30
	* d-objfile.cc (ObjectFile::outputThunk): Use
	symtab_add_to_same_comdat_group. GCC 2012-04-30
	* lang.opt: Match help strings for duplicated options.

2012-02-01  Iain Buclaw  <ibuclaw@ubuntu.com>

	* setup-gcc.sh: Remove -hg option.
	* dfrontend/func.c (FuncDeclaration::semantic): Remove code adding
	method to flat list.
	(FuncDeclaration::semantic3): Re-add here.

2012-01-01  Iain Buclaw  <ibuclaw@ubuntu.com>

	* d-builtins2.cc (IRState::buildChain): Don't do nrvo if the
	variable is put in a closure.
	* d-glue.cc (FuncDeclaration::buildClosure): Ditto.
	(ReturnStatement::toIR): Don't call postblit on nrvo returns.
	(DtorExpStatement::toIR): Don't call destructor if var is returned as
	the nrvo variable.

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