12013-02-15  Iain Buclaw  <ibuclaw@gdcproject.org>
2
3	* Make-lang.in (GDC_EXTENDED_ASM_SYNTAX): Remove macro.
4
52013-02-14  Iain Buclaw  <ibuclaw@gdcproject.org>
6
7	* d-lang.h (D_DECL_IS_CONTRACT): Remove macro.
8	* d-decls.cc (FuncDeclaration::toSymbol): Likewise.
9
102013-02-13  Iain Buclaw  <ibuclaw@gdcproject.org>
11
12	* d-lang.cc (d_gcc_is_target_win32): Remove.
13	(d_add_builtin_version): New function to handle define_builtin
14	callback from backend.
15	* d-codegen.cc (IRState::maybeExpandSpecialCall): Remove intrinsic bt.
16
17	* d-builtins.c: Merge with d-builtins2.cc.
18	* d-builtins2.cc: Remove.
19
202013-02-07  Johannes Pfau  <johannespfau@gmail.com>
21
22	* d-lang.cc (d_init): Use gcc's config system for predefined OS versions.
23	* setup-gcc.sh: Likewise.
24	* target-ver-syms.sh: Likewise.
25
262013-02-05  Iain Buclaw  <ibuclaw@ubuntu.com>
27
28	* d-builtins2.cc (gcc_type_to_d_type): Remove STRUCTTHISREF condition.
29	* d-decls.cc (FuncDeclaration::toSymbol): Likewise.
30	* d-elem.cc (ThisExp::toElem): Likewise.
31	* d-ctype.cc (TypeSArray::toCtype): Remove SARRAYVALUE condition.
32	* d-codegen.cc (IRState::isDeclarationReferenceType): Likewise.
33	(IRState::isArgumentReferenceType): Likewise.
34
352013-02-01  Johannes Pfau  <johannespfau@gmail.com>
36
37	* d-lang.cc (d_init): Use gcc's config system for predefined CPU versions.
38	(d_init): Fix definition of D_LP64 version.
39	* setup-gcc.sh: Likewise.
40	* target-ver-syms.sh: Likewise.
41
422012-12-16  Iain Buclaw  <ibuclaw@ubuntu.com>
43
44	* d-decls.cc (FuncDeclaration::toSymbol): Don't optimise PUREconst
45	calls.
46
472012-10-27  Iain Buclaw  <ibuclaw@ubuntu.com>
48
49	* d-codegen.cc (IRState::buildAssignOp): Handle case where LHS type is
50	not compatible with expression type.
51
522012-10-26  Iain Buclaw  <ibuclaw@ubuntu.com>
53
54	* d-decls.cc (ClassDeclaration::toSymbol): Use empty RECORD_TYPE to
55	build internal symbol.
56	(Module::toSymbol): Likewise.
57	* d-objfile.cc (outdata): Set type size from constructor if not
58	COMPLETE_TYPE_P.  Assert that DECL_INITIAL is never bigger than
59	TYPE_SIZE.
60
612012-10-25  Iain Buclaw  <ibuclaw@ubuntu.com>
62
63	* d-codegen.cc (IRState::getFrameInfo): Use vthis to determine whether
64	function is nested.
65
662012-10-21  Iain Buclaw  <ibuclaw@ubuntu.com>
67
68	* d-builtins2.cc (gcc_type_to_d_type): Remove special case for
69	double/long double types.
70	(d_gcc_magic_builtins_module): Cleanup generation of builtin types.
71	Add __builtin_unwind_int and __builtin_unwind_uint.
72
732012-10-16  Iain Buclaw  <ibuclaw@ubuntu.com>
74
75	* d-objfile.cc (ObjectFile::outputThunk): Mark thunk as DECL_WEAK
76	rather than using weakref attribute.
77
782012-10-14  Iain Buclaw  <ibuclaw@ubuntu.com>
79
80	* d-bi-attrs.h: Remove file.
81	* d-builtins.c (d_attribute_table): Define table of machine independant
82	attributes for gcc builtins.
83	(d_format_attribute_table): Define table of format attributes for gcc
84	builtins.
85	(handle_noreturn_attribute, handle_leaf_attribute,
86	handle_const_attribute, handle_malloc_attribute,
87	handle_returns_twice_attribute, handle_pure_attribute,
88	handle_novops_attribute, get_nonnull_operand,
89	handle_nonnull_attribute, handle_nothrow_attribute,
90	handle_sentinel_attribute, handle_type_generic_attribute,
91	handle_fnspec_attribute, handle_transaction_pure_attribute,
92	ignore_attribute): Moved common attribute handlers from d-bi-attrs.h.
93	* d-lang.cc (LANG_HOOKS_ATTRIBUTE_TABLE): Use instead of
94	LANG_HOOKS_COMMON_ATTRIBUTE_TABLE.
95	(d_attribute_table): Renamed from d_common_attribute_table.
96	(d_format_attribute_table): Renamed from
97	d_common_format_attribute_table.
98	(d_init_ts): Renamed from d_common_init_ts.
99
100	* d-builtins2.cc (d_bi_init): Determine D frontend type for size_t.
101	* d-objfile.cc (ObjectFile::hasModule): Remove old compatibility
102	macros.
103
1042012-10-08  Iain Buclaw  <ibuclaw@ubuntu.com>
105
106	* d-glue.cc (VectorExp::toElem): Handle non-constant array literals as
107	vector expressions.
108
1092012-10-04  Iain Buclaw  <ibuclaw@ubuntu.com>
110
111	* d-glue.cc (VectorExp::toElem): Handle both array literal as well as
112	single element constructors for vector expressions.
113
1142012-09-27  Iain Buclaw  <ibuclaw@ubuntu.com>
115
116	* d-convert.cc (convert): Remove assert.
117
1182012-09-22  Iain Buclaw  <ibuclaw@ubuntu.com>
119
120	* d-codegen.cc (IRState::maybeCompound): Use IRState::compound.
121	(IRState::maybeVoidCompound): Use IRState::voidCompound.
122	(IRState::call): Check TREE_SIDE_EFFECTS to determine order of
123	evaluation in function calls.  Evaluate callee before arguments if has
124	side effects.
125	* d-decls.cc (FuncDeclaration::toSymbol): Don't set any pure/nothrow
126	attributes if asserts are generated in code.
127	* d-incpath (add_fileimp_path): Fix ICE using -J option.
128	* d-objfile.cc (Obj::moduleinfo): Clean-up.
129
1302012-09-18  Iain Buclaw  <ibuclaw@ubuntu.com>
131
132	* d-lang.cc (d_initialize_diagnostics): New function, disable unneeded
133	diagnostic options.
134	(d_handle_option): Remove OPT_fdebug_c.
135	* d-spec.c (lang_specific_driver): Remove OPT_fod_, OPT_fop.
136	* lang.opt: Remove -fdebug-c, -fod, and -fop compiler options.
137
1382012-09-17  Iain Buclaw  <ibuclaw@ubuntu.com>
139
140	* d-codegen.h (CtorEltMaker::cons): Adjust call to VEC_safe_push.
141	* d-objfile.cc (ObjectFile::stripVarDecl): Clean-up.
142
1432012-09-16  Iain Buclaw  <ibuclaw@ubuntu.com>
144
145	* d-codegen.cc (IRState::isCallByAlias): New function.
146	(IRState::call): Use IRState::isCallByAlias.
147	* d-objfile.cc (ObjectFile::setupSymbolStorage): Mark
148	force_static_public symbols as public.
149
150	* d-spec.c (lang_specific_driver): Update for GCC-4.8.
151	* lang.opt: Fix spelling of option -static-libphobos
152
153	* d-codegen.cc (IRState::maybeExpandSpecialCall): Do not handle inp*
154	and outp* port intrinsic functions.
155	(IRState::maybeSetUpBuiltin): Likewise.
156	(IRState::expandPortIntrinsic): Remove.
157
1582012-09-10  Iain Buclaw  <ibuclaw@ubuntu.com>
159
160	* d-codegen.cc (AggLayout::doFields): Propagate volatile out of type.
161	(AggLayout::addField): Likewise.
162	* d-decls.cc (VarDeclaration::toSymbol): Likewise.
163
1642012-09-06  Iain Buclaw  <ibuclaw@ubuntu.com>
165
166	* d-codegen.h (IRState::vconvert): Don't use VIEW_CONVERT_EXPR.
167	* d-glue.cc (TypeEnum::toCtype): Mark TYPE_PACKED if flag_short_enums.
168	(TypeClass::toCtype): Mark TREE_ADDRESSABLE to ensure class is always
169	passed in memory.
170
171	* d-tree.def (UNSIGNED_RSHIFT_EXPR): Define new tree expression.
172	(FLOAT_MOD_EXPR): Define new tree expression.
173	* d-lang.cc (d_common_init_ts): New function.
174	(d_write_global_declarations): Call check_global_declarations after
175	finalize_compilation_unit.
176	(d_gimplify_expr): Handle UNSIGNED_RSHIFT_EXPR, IASM_EXPR.
177	* d-codegen.cc (IRState::arrayOpNotImplemented): New function.
178	(IRState::buildOp): New function.
179	(IRState::buildAssignOp): New function.
180	* d-glue.cc (build_bool_binop): Remove function, mostly move to
181	CmpExp::toElem.
182	(build_math_op): Remove function, mostly move to IRState::buildOp.
183	(build_assign_math_op): Remove function, mostly move to
184	IRState::buildAssignOp.
185	(BinExp::toElemBin): Remove function.
186	(IdentityExp::toElem, EqualExp::toElem, CmpExp::toElem)
187	(AndAndExp::toElem, OrOrExp::toElem): Clean-up, use IRState::boolOp.
188	(XorExp::toElem, OrExp::toElem, AndExp::toElem, UshrExp::toElem)
189	(ShrExp::toElem, ShlExp::toElem, ModExp::toElem, DivExp::toElem)
190	(MulExp::toElem, MinExp::toElem, AddExp::toElem):Use
191	IRState::arrayOpNotImplemented,	IRState::buildOp.
192	(XorAssignExp::toElem, OrAssignExp::toElem, AndAssignExp::toElem)
193	(UshrAssignExp::toElem, ShrAssignExp::toElem, ShlAssignExp::toElem)
194	(ModAssignExp::toElem, DivAssignExp::toElem, MulAssignExp::toElem)
195	(MinAssignExp::toElem, AddAssignExp::toElem): Use
196	IRState::arrayOpNotImplemented, IRState::buildAssignOp.
197
198	* d-codegen.cc (libcall_ids): Remove _adCmpChar.
199	(IRState::getLibCallDecl): Remove LIBCALL_ADCMPCHAR.
200	* d-glue.cc (CmpExp::toElem): Don't call LIBCALL_ADCMPCHAR.
201
202	* lang.opt: Define Wcast-result.
203	* d-codegen.cc (IRState::convertTo): Warn about null result, but only
204	if -Wcast-result.
205	(IRState::hwi2toli): Move to header.
206	(IRState::realPart): Likewise.
207	(IRState::imagPart): Likewise.
208	(IRState::toElemLvalue): Clean-up tree args array.
209	(IRState::doArraySet): New function.
210	(IRState::arraySetExpr): New function.
211	* d-glue.cc (EqualExp::toElem): Clean-up tree args array.
212	(CatAssignExp::toElem): Likewise.
213	(AssignExp::toElem): Likewise.
214	(DeleteExp::toElem): Likewise.
215	(NewExp::toElem): Use IRState::modify.
216	(ArrayLiteralExp::toElem): Don't call ARRAYLITERALTX library function
217	if assigning to static array.
218	(StructLiteralExp::toElem): Use IRState::arraySetExpr.
219	(do_array_set): Move to IRState::doArraySet.
220	(array_set_expr): Move to IRState::arraySetExpr.
221
222	* d-lang.h (D_TYPE_IMAGINARY_FLOAT): Define.
223	(d_convert_basic): Remove.
224	* d-builtins.c (d_init_builtins): Mark imaginary types as
225	D_TYPE_IMAGINARY_FLOAT.
226	* d-builtins2.cc (gcc_type_to_d_type): Use convert.
227	* d-codegen.cc (IRState::emitLocalVar): Call pushdecl earlier so
228	catches CONST_DECLs.
229	(IRState::convertTo): Remove handling of conversions between
230	imaginary/real, imaginary/complex, complex/imaginary types, use
231	convert.
232	(IRState::convertForArgument): Use convert.
233	(IRState::arrayElemRef): Likewise.
234	(IRState::call): Likewise.
235	(IRState::libCall): Likewise.
236	(IRState::maybeExpandSpecialCall): Likewise.
237	* d-convert.cc (d_convert_basic): Mark static.
238	(convert): Handle correct conversions between imaginary/real,
239	imaginary/complex, complex/imaginary types.
240	* d-glue.cc (InExp::toElem): Use convert.
241	(BoolExp::toElem): Likewise.
242	(FuncDeclaration::buildClosure): Likewise.
243
244	* d-builtins.c (def_fn_type): Use build_varargs_function_type_array and
245	build_function_type_array to create built-in functions.
246	(d_init_builtins): Use lang_hooks.types.type_for_size.
247	* d-builtins2.cc (d_gcc_magic_builtins_module): Use
248	lang_hooks.types.type_for_mode.
249	* d-codegen.cc (IRState::pointerIntSum): Use
250	lang_hooks.types.type_for_size.
251	(IRState::call): Use lang_hooks.types.type_promotes_to.
252	(IRState::maybeExpandSpecialCall): Likewise.
253	* d-glue.cc (build_math_op): Use lang_hooks.types.type_for_mode.
254	* d-lang.cc (d_type_for_mode): Mark static.
255	(d_type_for_size): Likewise.
256	(d_type_promotes_to): Likewise.
257
2582012-08-31  Iain Buclaw  <ibuclaw@ubuntu.com>
259
260	* d-glue.cc (FuncDeclaration::toObjFile): Flatten nested levels and
261	loops in function, delay printing function name in verbose mode until
262	we know the function is being compiled.
263
264	* d-codegen.cc (IRState::buildFrameForFunction): New function.
265	(IRState::buildChain): Use IRState::buildFrameForFunction to get the
266	frame record type.
267	(IRState::getFrameInfo): Likewise.
268	* d-glue.cc (FuncDeclaration::buildClosure): Likewise.
269
2702012-08-30  Iain Buclaw  <ibuclaw@ubuntu.com>
271
272	* asmstmt.cc (ExtAsmStatement::toCBuffer): Mark unused parameter as
273	ATTRIBUTE_UNUSED.
274	* d-codegen.cc (WrappedExp::toCBuffer): Likewise.
275	* d-objfile.cc (ObjectFile::setupSymbolStorage): Revert to previous
276	behaviour of setting symbol storage.
277
278	* d-codegen.cc (IRState::expandDecl): Use IRState::vinit.
279	(IRState::binding): Likewise.
280	(IRState::var): Handle all declarations, not just vars.
281	* d-glue.cc (PtrExp::toElem): Simplify use of IRState::var.
282	(SymbolExp::toElem ): Likewise.
283	(ThisExp::toElem): Likewise.
284
285	* d-lang.cc (d_init): Remove 'Thumb' identifier for ARM as 16bit
286	platforms aren't supported.
287	(GNU_LongDouble128): Remove identifier as long double size is
288	determined from type information.
289
290	* d-decls.cc (TypeInfoDeclaration::toSymbol): Mark all typeinfo decls
291	as 'used'.
292	* d-glue.cc (one_elem_array): Remove.
293	(CatExp::toElem): Inline use of one_elem_array, clean-up.
294	* d-objfile.cc (ObjectFile::setupSymbolStorage): Update to better
295	handle use of declarations marked with comdat, extern or static.
296	(ObjectFile::doSimpleFunction): Mark function as 'used'.
297	* dt.cc (dt2node): Clean-up indentation.
298
299	* Make-lang.in: Fix issue with cross-compiler configuration.
300
3012012-08-29  Iain Buclaw  <ibuclaw@ubuntu.com>
302
303	* lang-specs.h: Remove special case for handled D source files.
304	* Make-lang.in: Remove special case for building gcc.o, use
305	GCC_EXTRA_LIBS to link against, rather than specific gcc object files.
306	(D_DRIVER_NAME): Remove use of variable.
307	(D_DRIVER_OBJS): Likewise.
308	(D_COMPILER_NAME): Likewise.
309
3102012-08-23  Iain Buclaw  <ibuclaw@ubuntu.com>
311
312	* d-builtins2.cc (eval_builtin): Use builtin_decl_explicit.
313	* d-codegen.cc (IRState::emitLocalVar): Use warning.
314	(IRState::convertTo): Likewise.
315	(IRState::addressOf): Use IRState::markAddressable.
316	(IRState::markAddressable): New function.
317	(IRState::markUsed): New function.
318	(IRState::markRead): New function.
319	(IRState::maybeExpandSpecialCall): Use builtin_decl_explicit.
320	(IRState::floatMod): Likewise.
321	(IRState::exceptionObject): Likewise.
322	* d-glue.cc (IdentityExp::toElem): Likewise.
323	(EqualExp::toElem): Likewise.
324	(PowExp::toElem): Likewise.
325	(AssignExp::toElem): Likewise.
326	(HaltExp::toElem): Likewise.
327	(ArrayLiteralExp::toElem): Likewise.
328	(FuncDeclaration::toObjFile): Likewise.
329	* d-lang.cc (d_mark_addressable): Remove function.
330	(d_mark_exp_read): Remove function.
331	* d-lang.h (d_warning): Remove macro.
332	(d_built_in_decls): Remove macro.
333	* d-objfile.cc (Obj::includelib): Use warning.
334	(Obj::startaddress): Likewise.
335
3362012-08-22  Iain Buclaw  <ibuclaw@ubuntu.com>
337
338	* d-lang.cc (binary): Moved function from frontend.
339	* d-codegen.cc (IRState::extractMethodCallExpr): Update for new C++ VEC
340	template in GCC.
341	* d-bi-attrs.h (parse_optimize_options): Likewise.
342	* d-dmd-gcc.h: Remove ifdef __cplusplus, use GCC_SAFE_DMD.
343	* d-gcc-includes.h: Remove ifdef __cplusplus.
344	* d-lang.h: Likewise.
345	* Make-lang.in: Remove CC and CFLAGS from Makefile, add build rule for
346	new texi man pages.
347	* gdc.texi: New documentation for GDC.
348
3492012-08-18  Iain Buclaw  <ibuclaw@ubuntu.com>
350
351	* d-codegen.cc (IRState::convertTo): Fix to allow conversion between
352	void* and associative arrays.
353	(IRState::convertForArgument): Use d_convert_basic.
354	(IRState::call): Don't use d_convert_basic, now handled by
355	convertForArgument.
356	* d-gcc-real.cc (real_t::real_t): Increase real type mode to be greater
357	than integer type size to prevent overflow in conversions.
358	* d-glue.cc (CastExp::toElem): Don't get implicit AA type.
359
3602012-08-17  Iain Buclaw  <ibuclaw@ubuntu.com>
361
362	* dfrontend: Update to D frontend version 2.060
363
364	* d-codegen.cc (libcall_ids): New library functions.
365	(IRState::getLibCallDecl): Implement new library function signatures.
366	* d-codegen.h (LibCall::LIBCALL_NEWITEMT): New enum value.
367	(LibCall::LIBCALL_NEWITEMIT): Likewise.
368	* d-decls.cc (FuncDeclaration::toSymbol): Small readability cleanup.
369	* d-glue.cc (NewExp::toElem): Use new library functions.
370	(StructLiteralExp::toElem): Update for new frontend.
371	(ReturnStatement::toIR): Likewise.
372	* d-incpath.cc (add_import_path): New signature.
373	(add_fileimp_path): Likewise.
374	(add_import_paths): Pass split Strings to helper functions.
375	* d-lang.cc (d_parse_file): Use Obj::init and Obj::term.
376	* d-objfile.cc (objmod): New variable.
377	(Obj::init): New function.
378	(Obj::term): Likewise.
379	(Obj::includelib): Likewise.
380	(Obj::startaddress): Likewise.
381	(Obj::allowZeroSize): Likewise.
382	(Obj::moduleinfo): Likewise.
383	(Obj::export_symbol): Likewise.
384	* symbol.h (Obj): New struct to allow object oriented interface to glue
385	code from frontend.
386
387	* d-builtins2.cc (d_gcc_magic_stdarg_check): Add new va_arg magic
388	function that stores the next value through a passed parameter.
389	Remove workaround for inout signature as va_list is always passed by
390	reference to intrinsic templates.
391	(d_gcc_magic_module): Assign module directly to global IRState.
392	* d-codegen.cc (IRState::builtinsModule): Remove static declaration.
393	(IRState::intrinsicModule): Likewise.
394	(IRState::intrinsicCoreModule): Likewise.
395	(IRState::mathModule): Likewise.
396	(IRState::mathCoreModule): Likewise.
397	(IRState::cstdargTemplateDecl): Likewise.
398	(IRState::cstdargStartTemplateDecl): Likewise.
399	(IRState::varsInScope): Likewise.
400	(IRState::call): Use flag_split_darrays.
401	(IRState::maybeExpandSpecialCall): Clean-up va_start and va_arg
402	implementations.
403	(IRState::maybeSetUpBuiltin): Handle new va_arg function.
404	* d-codegen.h (Intrinsic::INTRINSIC_VA_ARG): New enum definition.
405	(IRState::setBuiltinsModule): Remove.
406	(IRState::setIntrinsicModule): Likewise.
407	(IRState::setMathModule): Likewise.
408	(IRState::setCStdArg): Likewise.
409	* d-glue.cc (CatExp::toElem): Use flag_split_darrays.
410	* d-irstate.cc (IRBase::startFunction): Set varsInScope.
411	* d-lang.cc (d_init_options): Set modules that require special
412	handling.
413	(d_handle_option): Don't handle OPT_fsplit_dynamic_arrays.
414	* lang.opt: fsplit-dynamic-arrays mapped to variable
415	flag_split_darrays.
416
4172012-08-16  Iain Buclaw  <ibuclaw@ubuntu.com>
418
419	* d-glue.cc (IdentityExp::toElem): Re-order precendence of type
420	checking. Treat static arrays as D arrays in identity comparisons.
421	(EqualExp::toElem): Use adEq2 over built-in memcmp for equality
422	comparisons for static and dynamic arrays.
423	(TypeStruct::toCtype): Remove old platform specific workaround.
424
425	* d-builtins2.cc (bi_lib_list): New decl to hold list of GCC library
426	built-ins.
427	(d_bi_init): Add decls to bi_list_list if recognising built-ins.
428	(d_gcc_magic_builtins_module): Rename built-in type C long to
429	__builtin_clong, built-in type C ulong to __builtin_culong.
430	(d_gcc_magic_libbuiltins_check): New function to assign internal
431	symbol for built-in library functions.
432	(d_gcc_magic_libbuiltins_module): New function to scan modules that
433	contain GCC library built-ins.
434	(d_gcc_magic_module): Search all core.stdc modules for possible GCC
435	library built-ins.
436	* d-codegen.h (IRState::useBuiltins): Remove.
437	* d-lang.cc (d_init_options): Don't set IRState::useBuiltins.
438	(d_handle_option): Likewise.
439	* lang.opt: Re-order D frontend compiler options.
440
441	* d-codegen.cc (IRState::buildChain): Override chainLink and chainFunc
442	for function if static chain is passed via hidden 'this' and no frame
443	is created.
444	(IRState::getFrameInfo): Pass static chain around nested functions in
445	the same way as closures for better performance.
446
447	* d-codegen.cc (libcall_ids): Re-order list in ascii collating order,
448	add new library routines to lookup, rename all non-vararg functions to
449	match DMD ABI implementation.
450	(LibCall): Re-order enum and rename values to match libcall_ids.
451	(IRState::toElemLvalue): Use new LibCall name.
452	(IRState::getLibCallDecl): Update to match current library signatures,
453	add implementation of new library routines.
454	(IRState::maybeSetLibCallDecl): New function to set internal symbol
455	for special D RT library functions.
456	* d-decls.cc (FuncDeclaration::toSymbol): Use
457	IRState::maybeSetLibCallDecl.
458	* d-glue.cc (InExp::toElem): Use new LibCall name.
459	(CatAssignExp::toElem): Likewise.
460	(IndexExp::toElem): Likewise.
461	(DeleteExp::toElem): Likewise.
462	(RemoveExp::toElem): Likewise.
463	(NewExp::toElem): Likewise.
464	(ArrayLiteralExp::toElem): Likewise.
465	(AssocArrayLiteralExp::toElem): Likewise.
466	(NullExp::toElem): Use IRState::convertTo.
467
468	* d-codegen.cc (needs_temp): Remove.
469	(IRState::makeTemp): New function.
470	(IRState::maybeMakeTemp): Re-implement to use isFreeOfSideEffects.
471	(IRState::isFreeOfSideEffects): Re-implement to allow better CSE.
472	(IRState::call): Use IRState::makeTemp.
473
474	* d-builtins2.cc (gcc_type_to_d_type): Use d_convert_basic.
475	* d-codegen.cc (IRState::emitLocalVar): Use IRState::vinit.
476	(IRState::convertTo): New function for tree conversions.
477	(IRState::convertTo): Use IRState::convertTo.
478	(IRState::convertForCondition): Likewise.
479	(IRState::darrayVal): Likewise.
480	(IRState::pointerIntSum): Likewise.
481	(IRState::pointerOffsetOp): Likewise.
482	(IRState::pvoidOkay): Likewise.
483	(IRState::boundsCond): Likewise.
484	* d-convert.cc (convert): New function to be called from C.
485	(d_build_truthvalue_op): Use d_convert_basic.
486	* d-glue.cc (convert): Remove.
487	(build_bool_binop): Use IRState::convertTo.
488	(build_math_op): Likewise.
489	(CmpExp::toElem): Likewise.
490	(PowExp::toElem): Likewise.
491	(do_array_set): Likewise.
492	(AssignExp::toElem): Likewise.
493	(VectorExp::toElem): Likewise.
494	(NotExp::toElem): Likewise.
495	(CallExp::toElem): Likewise.
496	(SymbolExp::toElem): Likewise.
497	* dt.cc (dt2tree_list_of_elems): Use d_convert_basic.
498
4992012-07-26  Iain Buclaw  <ibuclaw@ubuntu.com>
500
501	* d-gcc-real.cc (real_t::real_t): Use d_float64 for constructor.
502	(real_t::isConst0): Remove.
503	(real_t::isConst1): Likewise.
504	(real_t::isConst2): Likewise.
505	(real_t::isConstMinus1): Likewise.
506	(real_t::isConstHalf): Likewise.
507	* d-gcc-real.h (longdouble): New typedef for real_t.
508	(ldouble): New template for ldouble conversions.
509	(ld_sprint): New function for ldouble to string formatting.
510	* d-codegen.cc (IRState::hwi2toli): Handle maximum 64bit value case.
511
5122012-07-18  Iain Buclaw  <ibuclaw@ubuntu.com>
513
514	* d-codegen.cc (IRState::delegateVal): Remove ENABLE_CHECKING code.
515	(IRState::objectInstanceMethod): Remove special case to avoid calling
516	DotTypeExp::toElem.
517	* d-glue.cc (CommaExp::toElem): Likewise.
518	(DotTypeExp::toElem): Implement function.
519	(StructLiteralExp::toElem): Assert instead that basetype is a struct.
520	* d-gcc-reah.cc (real_t::real_t): New overload for 'double' type.
521	(real_t::format): Change function type to int, return size of buffer
522	from function.
523	(real_t::formatHex): Likewise.
524	* d-builtins2.cc (d_gcc_magic_stdarg_check): Update signature, remove
525	check for is_c_std_arg.
526	(d_gcc_magic_stdarg_module): Likewise.
527	(d_gcc_magic_module): Remove check for core.vararg.
528	* d-codegen.cc (INTRINSIC_STD_VA_ARG): Remove.
529	(IRState::maybeSetUpBuiltin): Don't handle INTRINSIC_STD_VA_ARG.
530
5312012-07-13  Iain Buclaw  <ibuclaw@ubuntu.com>
532
533	* d-decls.cc (Dsymbol::toSymbolX): Remove use of PRIuSIZE format macro.
534	(FuncDeclaration::toThunkSymbol): Likewise.
535
5362012-07-12  Iain Buclaw  <ibuclaw@ubuntu.com>
537
538	* d-lang.h (D_DECL_IS_CONTRACT): New macro.
539	* d-decls.cc (FuncDeclaration::toSymbol): Mark in and out contracts as
540	D_DECL_IS_CONTRACT.
541	(FuncDeclaration::toThunkSymbol): D thunks no longer private by
542	design. Alter mangling of thunk symbols to be unique across the entire
543	compilation unit.
544	* d-objfile.cc (ObjectFile::makeDeclOneOnly): Catch public contracts to
545	mark them as one-only.
546	(ObjectFile::outputThunk): Mark weakref thunks as private.
547
5482012-07-10  Iain Buclaw  <ibuclaw@ubuntu.com>
549
550	* Make-lang.in: Remove unused borrowed objects.
551	* d-builtins2.cc (d_bi_builtin_func): Don't add builtin if
552	-fno-builtin was given.
553	* d-codegen.cc (IRState::emitTemplates): Remove static declaration.
554	(IRState::splitDynArrayVarArgs): Likewise.
555	(IRState::useInlineAsm): Likewise.
556	(IRState::useBuiltins): Likewise.
557	(d_gcc_force_templates): Update to use global gen.
558	* d-codegen.h (emitTemplates): Remove static attribute.
559	(splitDynArrayVarArgs): Likewise.
560	(useBuiltins): Likewise.
561	(useInlineAsm): Remove member.
562	(stdInc): Define new member.
563	* d-incpath.cc (std_inc): Remove global.
564	(add_import_paths): Update function signature.
565	* d-lang.cc (d_init_options): Default splitDynArrayVarArgs to false.
566	(d_init): Update call to add_import_paths.
567	(d_handle_option): Remove OPT_fd_inline_asm, add
568	OPT_fsplit_dynamic_arrays.
569	* lang.opt: Likewise.
570
5712012-07-08  Iain Buclaw  <ibuclaw@ubuntu.com>
572
573	* d-builtins2.cc (d_gcc_type_align): Update function signature. Use
574	type align size to determine the known align size of a decl.
575	* d-dmd-gcc.h (d_gcc_type_align): Update function signature.
576	* symbol.h (Symbol): New member, Salignment.
577	* symbol.cc (Symbol::Symbol): Initialise Salignment.
578	* d-decls.cc (VarDeclaration::toSymbol): Set Salignment if there is an
579	alignment in effect on the decl.
580	(AggregateDeclaration::toInitializer): Likewise.
581	* d-objfile.cc (ObjectFile::outputStaticSymbol): Set DECL_ALIGN if
582	Salignment was given for static decl.
583
5842012-07-07  Iain Buclaw  <ibuclaw@ubuntu.com>
585
586	* d-builtins2.cc (d_gcc_magic_builtins_module): Add check for
587	DECL_ASSEMBLER_NAME_SET_P when testing for builtins that can be
588	markable as pure in the D frontend.
589
590	* d-codegen.cc (IRState::integerConstant): Hide use of
591	HOST_BITS_PER_WIDE_INT macros.
592	(IRState::hwi2toli): Likewise.
593	(IRState::getTargetSizeConst): Likewise.
594
595	* d-builtins.c (d_global_trees): Move declaration here.
596	(lookup_C_type_name): Rename to lookup_ctype_name.
597	(d_init_builtins): Move set-up of d_global_trees here.
598	(gcc_d_backend_init): Move function from d-glue.cc and refactored.
599	(gcc_d_backend_term): Likewise.
600	* d-builtins2.cc (d_bi_init): Set-up D frontend sizes here.
601	* d-glue.cc (gcc_d_backend_init): Removed.
602	(gcc_d_backend_term): Likewise.
603
604	* d-incpath.cc (add_phobos_versyms): New function to scan
605	phobos-vers-syms file.
606	(register_import_chains): Renamed to add_import_paths.
607	* d-lang.cc (d_init): Call add_phobos_versyms and add_import_paths.
608	(d_parse_int): Don't use strtol to get number from argument string.
609
610	* d-incpath.cc (maybe_fixup_phobos_target): Remove.
611	(register_import_chains): Remove use of maybe_fixup_phobos_target.
612	* d-lang.cc (maybe_fixup_os_versym): Remove
613	(d_init): Remove use of maybe_fixup_os_versym.
614
615	* d-lang.cc (saved_reg_names): Remove.
616	(d_init): Remove use of saved_reg_names.
617	(d_post_options): Likewise.
618
6192012-07-05  Iain Buclaw  <ibuclaw@ubuntu.com>
620
621	* d-glue.cc (StructLiteralExp::toElem): Stop after first assignment for
622	constructors built for union types.
623
6242012-07-01  Iain Buclaw  <ibuclaw@ubuntu.com>
625
626	* symbol.h (deferredNestedFuncs): Renamed from otherNestedFuncs, use as
627	value type rather than pointer.
628	(thunks): Use as value type rather than pointer.
629	* d-decls.cc (FuncDeclaration::toSymbol): Remove check for
630	deferredNestedFuncs being NULL.
631	(FuncDeclaration::toThunkSymbol): Remove check for thunks being NULL.
632	* d-glue.cc (DelegateExp::toElem): Remove check for deferredNestedFuncs
633	being NULL.
634	(FuncDeclaration::toObjFile): Likewise.
635	* d-objfile.cc (ObjectFile::shouldEmit): Add nested functions to
636	deferredNestedFuncs of their parent function incase parent is actually
637	emitted later in during compilation.
638	* d-builtins2.cc (d_gcc_type_align): Explicit alignment of variables
639	takes precedence over default alignment.
640	* d-gcc-includes.h: Re-order list of includes.
641
6422012-06-26  Iain Buclaw  <ibuclaw@ubuntu.com>
643
644	* d-codegen.cc (IRState::twoFieldType): Use rest_of_decl_compilation.
645	* d-gcc-includes.h: Remove last of poisoned backend headers.
646	* d-glue.cc (FuncDeclaration::toObjFile): Use fprintf for diagnostic
647	message.  Use rest_of_decl_compilation directly.
648	(SynchronizedStatement::toIR): Likewise.
649	(TypeFunction::toCtype): Remove old version1 macro.
650	* d-lang.cc (d_parse_file): Remove dependency on backend header. Use
651	fprintf for diagnostic messages.
652	(nametype): Use rest_of_decl_compilation directly.
653	(d_handle_option): Remove version 1 option.
654	* dmd-script: Likewise.
655	* lang.opt: Likewise.
656	* d-objfile.cc (ObjectFile::outputStaticSymbol): Use
657	rest_of_decl_compilation directly.
658	(ObjectFile::declareType): Likewise.
659	(obj_moduleinfo): Likewise.
660	(obj_tlssections): Likewise.
661	(ObjectFile::outputThunk): Implement new method of thunk generation
662	for external symbols using weakref.
663	* d-objfile.h (rodc): Remove.
664
6652012-06-25  Iain Buclaw  <ibuclaw@ubuntu.com>
666
667	* d-builtins.c (d_init_builtins): Use build_tree_list to initialise
668	void_list_node.
669	* d-glue.cc (ArrayLiteralExp::toElem): Always generate code for
670	arrayliteralTp.
671	(TypeFunction::toCtype): Chain on void_list_node to the end of the
672	function type parameters.  Fixes function signatures in debugging.
673
6742012-06-23  Iain Buclaw  <ibuclaw@ubuntu.com>
675
676	* Make-lang.in (d_OBJS): Add so IN_GCC_FRONTEND is defined when
677	building gdc sources.
678	* d-builtins.c: Remove poisoned headers.
679	* d-codegen.cc: Likewise.
680	* d-gcc-includes.h: GCC system headers included first, removed
681	internally defined macros and poisoned headers.
682	* d-gcc-tree.h: Use GCC system headers instead of defining tree_node.
683	* d-lang.cc: GCC system headers included first.
684	(pushdecl_top_level): Removed.
685	* d-objfile.cc: Remove poisoned headers.
686	* gdc_alloca.h: Use liberty.h instead of handling include of alloca.
687
688	* d-decls.cc (Dsymbol::toSymbolX): Use snprintf rather than sprintf.
689	(FuncDeclaration::toSymbol): Likewise.
690	* d-gcc-real.cc (real_t::init): Likewise.
691	* symbol.cc (Symbol::Symbol): Use NULL_TREE to initialise tree.
692	(symbol_calloc): Use xstrdup to copy string.
693
694	* Make-lang.in: Remove D language version 1 from build
695	(_GNU_SOURCE): Removed macro from build.
696	(ELFOBJ): Likewise.
697	(D_VA_LIST_TYPE_VOIDPTR): Likewise.
698	* asmstmt.cc (ExtAsmStatement::semantic): Removed use of V2 macro.
699	* d-builtins2.cc (d_gcc_builtin_va_list_d_type): Removed use of
700	D_VA_LIST_TYPE_VOIDPTR macro.
701	(gcc_type_to_d_type): Likewise.
702	(d_gcc_magic_stdarg_check): Likewise.
703	(d_gcc_magic_builtins_module): Removed use of V2 macro, and V1
704	encapsulated code.
705	* d-codegen.cc (IRState::convertTo): Likewise.
706	(IRState::toDArray): Likewise.
707	(IRState::typesCompatible): Likewise.
708	(IRState::arrayBoundsCheck): Likewise.
709	(IRState::assertCall): Likewise.
710	(libcall_ids): Likewise.
711	(IRState::getLibCallDecl): Likewise.
712	(IRState::getFrameForSymbol): Likewise.
713	(IRState::isFuncNestedIn): Likewise.
714	(IRState::buildChain): Likewise.
715	(IRState::getFrameInfo): Likewise.
716	(IRState::getFrameRef): Likewise.
717	(IRState::functionNeedsChain): Likewise.
718	(IRState::startCond): Likewise.
719	(IRState::exitIfFalse): Likewise.
720	(IRState::startCase): Likewise.
721	(IRState::doCase): Likewise.
722	(IRState::endCase): Likewise.
723	* d-decls.cc (VarDeclaration::toSymbol): Likewise
724	(FuncDeclaration::toSymbol): Likewise.
725	* d-glue.cc (CondExp::toElem): Likewise.
726	(build_bool_binop): Likewise.
727	(EqualExp::toElem): Likewise.
728	(CmpExp::toElem): Likewise.
729	(AndAndExp::toElem): Likewise.
730	(OrOrExp::toElem): Likewise.
731	(AssignExp::toElem): Likewise.
732	(CastExp::toElem): Likewise.
733	(CallExp::toElem): Likewise.
734	(AssertExp::toElem): Likewise.
735	(AssocArrayLiteralExp::toElem): Likewise.
736	(StructLiteralExp::toElem): Likewise.
737	(FuncDeclaration::toObjFile): Likewise.
738	(Module::genobjfile): Likewise.
739	(TypeFunction::toCtype): Likewise.
740	(ThrowStatement::toIR): Likewise.
741	(TryCatchStatement::toIR): Likewise.
742	(ReturnStatement::toIR): Likewise.
743	(SwitchStatement::toIR): Likewise.
744	(IfStatement::toIR): Likewise.
745	(ForStatement::toIR): Likewise.
746	(ExpStatement::toIR): Likewise.
747	* d-irstate.cc (IRBase::startFunction): Likewise.
748	* d-lang.cc (d_init_options_struct): Likewise.
749	(d_handle_option): Likewise.
750	(d_parse_file): Likewise.
751
7522012-06-21  Iain Buclaw  <ibuclaw@ubuntu.com>
753
754	* Make-lang.in: Remove d-asm-i386.h
755	* asmstmt.cc (d_build_asm_stmt): Update signature, use build5.
756	(getFrameRelativeValue): Remove.
757	(d_format_priv_asm_label): Likewise.
758	(d_have_inline_asm): Likewise.
759	(AsmProcessor): Likewise.
760	(AsmStatement::toIR): Update sorry message.
761	* d-codegen.cc (IRState::expandPortIntrinsic): Update call to
762	d_build_asm_stmt.
763	(IRState::doAsm): Likewise.
764	* d-decls.cc (FuncDeclaration::toSymbol): Remove check for inline asm.
765	* d-glue.cc (FuncDeclaration::toObjFile): Likewise.
766	(LabelStatement::toIR): Likewise.
767	* d-lang.cc (VersionCondition::addPredefinedGlobalIdent): Remove D
768	Inline Asm version identifiers.
769	* d-lang.h (d_build_asm_stmt): Update signature.
770
7712012-06-19  Iain Buclaw  <ibuclaw@ubuntu.com>
772
773	* d-decls.cc (FuncDeclaration::toSymbol): Mark in/out contracts as
774	TREE_PUBLIC to allow calling cross-module.
775	* d-lang.cc (d_parse_file): Update for 2.059.
776
7772012-06-16  Iain Buclaw  <ibuclaw@ubuntu.com>
778
779	* dfrontend: Merged with DMD 2.059.
780	* d-builtins2.cc (gcc_type_to_d_type): Use new frontend value.
781	* d-codegen.cc (IRState::getLibCallDecl): Fix return type of _aaDelp.
782	(IRState::getVThis): Use frontend provided member to determine if
783	function has nested references.
784	* d-decl.cc (FuncDeclaration::toSymbol): Weakly pure functions don't
785	guarantee no vops.
786	* d-gcc-real.cc (max_float_mode): Remove.
787	(real_t::convert): Catch imaginary types in conversion.
788	* d-glue.cc (EqualExp::toElem): Use memcmp for struct comparisons.
789	(CatAssignExp::toElem): Rework order of logic to allow appending
790	delegates to an array.
791	(DelegateExp::toElem): Implement handling of lambda functions.
792	(FuncExp::toElem): Ditto.
793	(AssocArrayLiteralExp::toElem): Implement handling of AssociativeArray
794	types sent to backend.
795	* d-objfile.cc (lmtab): Remove.
796	(cvtLocToloc_t): Update implementation.
797	(outdata): Now assert that we don't receive error nodes.
798
7992012-06-05  Iain Buclaw  <ibuclaw@ubuntu.com>
800
801	* d-decls.cc (FuncDeclaration::toSymbol): Make better use of 'pure' and
802	'pure const' functions in GCC codegen.
803	* d-bi-attrs.h: Added TM_ATTR* masks.
804	(handle_tm_wrap_attribute, handle_tm_attribute, tm_attr_to_mask,
805	find_tm_attribute): New.
806	(struct d_common_attribute_table): Added transaction* attributes.
807
8082012-06-04  Iain Buclaw  <ibuclaw@ubuntu.com>
809
810	* d-objfile.cc (ObjectFile::outputThunk): Output thunks moved back to
811	the frontend, as backend does not emit them for DECL_EXTERNAL functions.
812
8132012-05-29  Daniel Green  <venix1@gmail.com>
814
815	* setup-gcc.sh: Add GCC 4.8 to list of supported GCC versions. Patch
816	courtesy of Calrama
817	https://bitbucket.org/goshawk/gdc/issue/345
818
8192012-05-29  Iain Buclaw  <ibuclaw@ubuntu.com>
820
821	* d-codegen.cc (IRState::endCase): Remove parameter from function. Use
822	condition type as the SWITCH_EXPR type, rather than use of void.
823	* d-codegen.h (IRState::endCase): Update signature.
824	* d-glue.cc (SwitchStatement::toIR): Update call to endCase.
825
8262012-05-28  Daniel Green  <venix1@gmail.com>
827
828	* d-builtins.c (DEF_ATTR_STRING): Define and undefine along with other
829	macros.
830	* d-lang.cc (d_write_global_declartions): Use
831	finalize_compilation_unit. GCC 2012-04-30
832	* d-objfile.cc (ObjectFile::outputThunk): Use
833	symtab_add_to_same_comdat_group. GCC 2012-04-30
834	* lang.opt: Match help strings for duplicated options.
835
8362012-02-01  Iain Buclaw  <ibuclaw@ubuntu.com>
837
838	* setup-gcc.sh: Remove -hg option.
839	* dfrontend/func.c (FuncDeclaration::semantic): Remove code adding
840	method to flat list.
841	(FuncDeclaration::semantic3): Re-add here.
842
8432012-01-01  Iain Buclaw  <ibuclaw@ubuntu.com>
844
845	* d-builtins2.cc (IRState::buildChain): Don't do nrvo if the
846	variable is put in a closure.
847	* d-glue.cc (FuncDeclaration::buildClosure): Ditto.
848	(ReturnStatement::toIR): Don't call postblit on nrvo returns.
849	(DtorExpStatement::toIR): Don't call destructor if var is returned as
850	the nrvo variable.
851
852
853Copyright (C) 2012 Free Software Foundation, Inc.
854
855Copying and distribution of this file, with or without modification,
856are permitted in any medium without royalty provided the copyright
857notice and this notice are preserved.
858