gcc/ChangeLog:
[official-gcc.git] / gcc / d / ChangeLog-2013
blobeeb12c9665d0e6dd9fc2a62234cb5f3a0e47e2a1
1 2013-12-27  Iain Buclaw  <ibuclaw@gdcproject.org>
3         * d-codegen.cc (build_two_field_type): Declare builtin types as
4         toplevel declarations.
5         * d-ctype.cc (EnumDeclaration::toDebug): Build type decl in debug code.
6         * d-lang.cc (nametype): Rename to d_nametype.
8 2013-12-23  Iain Buclaw  <ibuclaw@gdcproject.org>
10         * d-decls.cc (EnumDeclaration::toDebug): Don't send array types to
11         rest_of_type_compilation.
13 2013-12-16  Iain Buclaw  <ibuclaw@gdcproject.org>
15         * d-spec.cc (lang_specific_driver): Require linking in library for all
16         files except D interface files.
17         * d-lang.cc (d_write_global_declarations): Call d_finish_compilation.
18         * d-objfile.cc (mark_needed): Mark static.
19         (d_finish_symbol): Don't call mark_needed.
20         (d_finish_function): Likewise.
21         (d_finish_compilation): New function to wrapup all global
22         declarations, mark templates/comdats as needed if required, and start
23         the final compilation.
25 2013-12-10  Iain Buclaw  <ibuclaw@gdcproject.org>
27         * d-ctype.cc (TypeVector::toCtype): Treat void vectors as ubyte.
28         * d-objfile.cc (VarDeclaration::toObjFile): Gag all errors compiling
29         manifest constants.
30         * d-todt.cc (TypeVector::toDt): New function to generate correct static
31         data for vector initialisers.
33 2013-12-05  Iain Buclaw  <ibuclaw@gdcproject.org>
35         * d-lang.cc (d_init_options_struct): Don't define strict aliasing.
36         (d_get_alias_set): New function to return language-specific alias set.
37         * d-convert.cc (d_convert_basic): Always zero extend pointer to integer
38         conversions.
40 2013-12-04  Iain Buclaw  <ibuclaw@gdcproject.org>
42         * d-codegen.cc (maybe_set_builtin_frontend): Assert that all runtime
43         library functions have been set-up correctly.
44         (libcall_ids): Remove unhandled library functions.
45         (get_libcall): Likewise.
46         * d-codegen.h (LibCall): Likewise.
47         * d-objfile.cc (output_symbol_p): Remove.
49 2013-12-03  Iain Buclaw  <ibuclaw@gdcproject.org>
51         * d-lang.cc (d_init_options): Update for frontend changes.
52         (d_handle_option): Set frontend allInst option if -femit-templates.
53         * d-objfile.cc (output_template_p): Want to emit all instantiated
54         templates if -femit-templates or -fdebug was passed to the compiler.
55         * d-objfile.h (TemplateEmission): Define TEallinst.
56         * d-todt.cc (StructDeclaration::toDt): Update for frontend changes.
57         * d-spec.cc (THREAD_LIBRARY): Define default thread library to link if
58         one is not already specified in the configuration process.
59         (TIME_LIBRARY): Define default real time library to link if one is not
60         already specified in the configuration process.
61         (LIBSTDCXX): Define C++ library to link if compiling C++ and D sources.
62         (lang_specific_driver): Update implementation to use new macros.
64 2013-12-02  Iain Buclaw  <ibuclaw@gdcproject.org>
66         * d-elem.cc (CatAssignExp::toElem): Don't call postblit after element
67         append to array.
68         (NewExp::toElem): Handle calling 'new' on opaque types.
69         (ArrayLiteralExp::toElem): Ensure array literal elements have no side
70         effects by making temporaries as necessary.
71         * d-todt.cc (StructLiteralExp::toDt): Update for frontend changes.
72         * d-codegen.cc (build_frame_type): Check for scoped variables if
73         building a closure.
74         * d-objfile.cc (d_finish_symbol): Relax toDt checking rule.
76 2013-12-01  Iain Buclaw  <ibuclaw@gdcproject.org>
78         * d-asmstmt.cc (ExtAsmStatement::ExtAsmStatement): Remove labels
79         member from class.
80         * d-codegen.cc (d_gcc_force_templates): Remove.
81         (convert_expr): Update for frontend changes.
82         (convert_for_assignment): Likewise.
83         (maybe_set_builtin_frontend): Update for changes to libdruntime
84         core.bitops signatures.
85         * d-ctype.cc (TypeFunction::toCtype): Update for frontend changes.
86         * d-decls.cc (Dsymbol::toSymbolX): Likewise.
87         (VarDeclaration::toSymbol): Likewise.
88         (FuncDeclaration::toSymbol): Don't defer nested functions here.
89         * d-elem.cc (PowAssignExp::toElem): Update for frontend changes.
90         (DeleteExp::toElem): Likewise.
91         (AssertExp::toElem): Don't call invariant on an extern C++ class.
92         * d-glue.cc (Global::init): Initialise new stdmsg member.
93         * d-lang.cc (d_handle_option): Handle -fdeps switch.  Remove TEprivate
94         for -femit-templates switch.
95         (genCmain): Update for frontend changes.
96         (d_parse_file): Likewise.
97         * d-longdouble.cc (longdouble::dump): Likewise.
98         * d-objfile.cc (ClassDeclaration::toObjFile): Update for frontend
99         changes.
100         (InterfaceDeclaration::toObjFile): Likewise.
101         (EnumDeclaration::toObjFile): Likewise.
102         (Symbol::Symbol): Remove outputSymbol member.
103         (output_symbol_p): Mark static.
104         (output_declaration_p): Determine symbol codegen status from
105         semanticRun.
106         (output_template_p): New function to determine whether an instantiated
107         template is to be written to object file.
108         (FuncDeclaration::toObjFile): Use semanticRun to update codegen status
109         of function.
110         (FuncDeclaration::buildClosure): Error if putting a scoped variable in
111         a closure.
112         (Module::genobjfile): Update for frontend changes.
113         (d_comdat_linkage): Don't determine linkage from TE setting.  Mark all
114         comdat symbols as DECL_COMDAT.
115         (setup_symbol_storage): Use output_template_p to determine whether the
116         symbol is being written to object file.
117         (mark_needed): New function to mark decls that must be emitted.
118         (d_finish_symbol): Mark finished symbols as needed.
119         (d_finish_function): Mark finished functions as needed.
120         (build_simple_function): Set semanticRun for glue changes.
121         * d-objfile.h (OutputStage): Remove enum.
122         * d-todt.cc (build_vptr_monitor): Update for frontend changes.
123         (StructInitializer::toDt): Likewise.
124         (StructDeclaration::toDt): Likewise.
125         (TypeInfoEnumDeclaration::toDt): Likewise.
126         (TypeInfoStructDeclaration::toDt): Likewise.
127         (Type::getTypeInfo): Likewise.
129 2013-11-30  Iain Buclaw  <ibuclaw@gdcproject.org>
131         * d-lang.cc (genCmain): Implement code generation of __entrypoint
132         module to provide the target C main function.
133         (deps_write): Ignore the module __entrypoint when writing make deps.
134         (d_parse_file): Handle writing __entrypoint module to object file.
135         * d-objfile.cc (d_finish_symbol): Remove special handling of _tlsstart
136         symbol, but ensure _tlsend gets written to the thread common section.
137         (d_finish_function): Remove call to build_tlssections.
138         (build_tlssections): Remove.
140 2013-11-29  Iain Buclaw  <ibuclaw@gdcproject.org>
142         * d-decls.cc (ClassDeclaration::toVtblSymbol): Use TypeSArray::makeType
143         to generate frontend static array type.
144         * d-glue.cc (Dsymbol::ungagSpeculative): Define.
145         * d-lang.cc (genCmain): Define as empty.
146         (d_parse_file): Update for frontend changes.
147         * d-objfile.cc (StructDeclaration::toObjFile): Likewise.
148         * d-typinf.cc (TypeBasic::builtinTypeInfo): Likewise.
149         * d-longdouble.cc (longdouble::isIdenticalTo): Remove.
150         * d-port.cc (Port::fequal): Define.
152 2013-11-28  Iain Buclaw  <ibuclaw@gdcproject.org>
154         * d-builtins.cc (gcc_type_to_d_type): Use TypeSArray::makeType to
155         generate frontend static array types.
156         * d-codegen.cc (build_attributes): Use optimize as don't want the
157         ctfeInterpret of TypeExp expressions.
158         (get_object_method): Update for frontend changes.
159         (get_libcall): Update to use Type::dtypeinfo.
160         * d-elem.cc (IndexExp::toElem): Don't generate bounds checking codegen
161         if frontend explictly requests it.
162         (ArrayLiteralExp::toElem): Use TypeSArray::makeType to generate
163         frontend static array type.
164         (StructLiteralExp::toElem): Update for frontend changes.
165         * d-glue.cc (Global::increaseErrorCount): Define.
166         * d-objfile.cc (Module::genmoduleinfo): Remove moduleinfo 'New'
167         implementation for libdruntime changes.
168         * d-todt.cc (StructLiteralExp::toDt): Literal initialisers override
169         default initialisers.
170         (TypeInfoDeclaration::toDt): Update to use Type::dtypeinfo.
171         (TypeInfoStructDeclaration::toDt): Update for frontend changes.
172         * d-typinf.c (Type::getInternalTypeInfo): Update to use
173         Type::dtypeinfo.
175 2013-11-25  Iain Buclaw  <ibuclaw@gdcproject.org>
177         * d-asmstmt.cc (ExtAsmStatement::comeFromImpl): Define for frontend
178         implementation changes.
179         * d-codegen.cc (get_libcall): Update to use Type::typeinfoclass.
180         * d-codegen.cc (WrappedExp): Define as class.
181         * d-convert.cc (d_convert_basic): Fix format warnings.
182         * d-decls.cc (ModuleInfoDeclaration::toSymbol): Remove.
183         (FuncDeclaration::toSymbol): Use mangleExact to get decl mangle.
184         * d-elem.cc (ClassReferenceExp::toElem): Return reference to class.
185         * d-glue.cc (verror): Fix format warnings.
186         (verrorSupplemental): Likewise.
187         (vwarning): Likewise.
188         (vdeprecation): Likewise.
189         (escapePath): Define for frontend implementation changes.
190         * d-irstate.cc (IRState::getLoopForLabel): Implement breaking on named
191         scope labels in for/while loops.
192         * d-lang.cc (d_handle_option): Add handler for new -fdeps and
193         -fmake-deps options.
194         (d_parse_file): Handle new -fdeps and fmake-deps options.
195         * d-objfile.cc (Dsymbol::toObjFile): Update to use RootObject.
196         (Type::typeinfoclass): Update to use Type::typeinfoclass.
197         (InterfaceDeclaration::toObjFile): Likewise.
198         * d-objfile.h (Symbol): Remove inheritance from Object.
199         * d-todt.cc (TypeInfoStructDeclaration::toDt): Update to use
200         Type::immutableOf.
202 2013-11-24  Iain Buclaw  <ibuclaw@gdcproject.org>
204         * d-builtins.c (gcc_type_to_d_type): Use TREE_INT_CST_LOW macro instead
205         of tree_low_cst.
206         (eval_builtin): Likewise.
207         (gcc_cst_to_d_expr): Use tree_cst_hwi.
208         * d-codegen.cc (tree_to_hwi): Remove call to deleted host_integerp.
209         (maybe_expand_builtin): Use TREE_INT_CST_LOW macro.
210         * d-lang.cc (d_parse_file): Update debug_hooks call for middle-end
211         changes.
212         * d-system.h: Update includes for middle-end changes.
214 2013-11-17  Iain Buclaw  <ibuclaw@gdcproject.org>
216         * d-objfile.cc (finish_thunk): Update for conversion of symtab types to
217         a true class hierarchy.
219         * d-ctype.cc (TypeClass::toCtype): Fix ABI to emit correct vtable and
220         monitor field names.
222         * d-ctype.cc (TypeClass:toCtype): Set TYPE_LANG_SPECIFIC on record as
223         well as reference type.
224         * d-lang.cc (d_classify_record): New langhook to return appropriate
225         class/interface/struct type to the debugger.
227 2013-10-27  Iain Buclaw  <ibuclaw@gdcproject.org>
229         * d-elem.cc (ArrayLiteralExp::toElem): Build empty constructor for zero
230         sized arrays.
232 2013-10-23  Iain Buclaw  <ibuclaw@gdcproject.org>
234         * d-elem.cc (AssignExp::toElem): Optimise assigning array literal to a
235         static array.
236         (ArrayLiteralExp::toElem): Do not allocate static or const array
237         literals on the heap using the GC.
239 2013-10-16  Iain Buclaw  <ibuclaw@gdcproject.org>
241         * d-builtins.c (DEF_FUNCTION_TYPE_8): Define.
243 2013-10-10  Iain Buclaw  <ibuclaw@gdcproject.org>
245         * d-builtins.c (gcc_cst_to_d_expr): Add support for VECTOR_CST to
246         Expression conversion.
247         (d_gcc_paint_type): Add support for painting to/from array literals.
249 2013-10-01  Iain Buclaw  <ibuclaw@gdcproject.org>
251         * d-objfile.cc (cvtLocToloc_t): Rename to get_linemap.
252         * d-glue.cc: New source to provide interface for defined globals and
253         error handling called from the front-end.
255 2013-09-16  Iain Buclaw  <ibuclaw@gdcproject.org>
257         * d-codegen.cc (IRState::call): Rename to d_build_call.
258         (IRState::emitLocalVar): Rename to build_local_var.
259         (IRState::buildAssignOp): Move to BinExp::toElemBin.
260         (IRState::IRState): Remove IRState class.
261         * d-irstate.cc (IRBase::IRBase): Rename to IRState, remove inheritance
262         from Object class.
263         * d-decls.cc (VarDeclaration::toSymbol): Remove redundant CONST_DECL
264         code as VarDeclaration::toObjFile does not emit manifest constants.
265         * d-ctype.cc (TypeEnum::toCtype): Generate CONST_DECLs for enumeration
266         members for correct debugging.
267         * d-objfile.cc (build_type_decl): Use fully qualified type name in
268         debugging code.
269         (VarDeclaration::toObjFile): Emit manifest constant values in debug
270         code generation.
272 2013-09-10  Iain Buclaw  <ibuclaw@gdcproject.org>
274         * d-elem.cc (SliceExp::toElem): Don't build D array for slices that
275         return a static array.
277 2013-09-03  Iain Buclaw  <ibuclaw@gdcproject.org>
279         * d-codegen.cc (IRState::buildOp): Rename to build_binary_op.
281 2013-09-01  Iain Buclaw  <ibuclaw@gdcproject.org>
283         * d-decls.cc (binfo_for): Rename to build_class_binfo.
284         (intfc_binfo_for): Rename to build_interface_binfo.
285         (ClassDeclaration::toDebug): Move binfo generation into toCtype.
286         * d-lang.cc (pushlevel): Rename to push_binding_level.
287         (poplevel): Rename to pop_binding_level.
288         (global_bindings_p): Rename to d_global_bindings_p, add langhook.
289         (pushdecl): Rename to d_pushdecl, add langhook.
290         (getdecls): Rename to d_getdecls, add langhook.
291         (set_block): Remove function.
292         (insert_block): Remove function.
293         * d-irstate.cc (IRBase::startBindings): Inline set_block here.
294         (IRBase::endBindings): Inline insert_block here.
296 2013-08-29  Iain Buclaw  <ibuclaw@gdcproject.org>
298         * d-spec.c (lang_specific_spec_functions): Remove.
300 2013-08-28  Iain Buclaw  <ibuclaw@gdcproject.org>
302         * d-codegen.cc (IRState::doArraySet): Rename to IRBase::doArraySet.
303         (IRState::arraySetExpr): Remove function.
304         (IRState::expandDecl): Rename to expand_decl.
305         (IRState::typeinfoReference): Rename to build_typeinfo.
306         (IRState::buildChain): Merge into FuncDeclaration::buildClosure.
307         (IRState::getVThis): Rename to build_vthis.
308         (IRState::maybeExpandSpecialCall): Rename to maybe_expand_builtin.
309         (IRState::toDArray): Rename to d_array_convert.
311 2013-08-26  Iain Buclaw  <ibuclaw@gdcproject.org>
313         * d-codegen.cc (convert_expr): Check that the class type the codegen is
314         casting from is a base class of the class type the codegen is casting
315         to, not the other way round.
317 2013-08-14  Iain Buclaw  <ibuclaw@gdcproject.org>
319         * d-elem.cc (ArrayLiteralExp::toElem): Return null for zero length
320         array literals.
322 2013-08-07  Iain Buclaw  <ibuclaw@gdcproject.org>
324         * d-objfile.cc (finish_thunk): Don't emit thunks to external symbols as
325         weakref declarations.
326         * d-codegen.cc (IRState::maybeExpandSpecialCall): Remove intrinsic yl2x
327         and yl2xp1 builtins.
328         (maybe_set_builtin_frontend): Likewise.
330 2013-07-09  Iain Buclaw  <ibuclaw@gdcproject.org>
332         * d-builtins.c (d_gcc_magic_builtins_module): Set builtins solely
333         provided by the compiler as @safe, pure and nothrow.
334         * d-codegen.cc (IRState::getVThis): Don't set outer 'this' of structs
335         to be parent function chain if no frame has been created.
337 2013-07-08  Iain Buclaw  <ibuclaw@gdcproject.org>
339         * d-elem.cc (Expression::toElemDtor): Wrap temp variables destructor
340         calls in a try/finally expression.
342 2013-07-05  Johannes Pfau  <johannespfau@gmail.com>
344         * patch-versym-os-4.8.x: Set versions on powerpc and alpha.
345         Remove SysV4 support and therefore fix macro redefinition warnings.
346         * patch-versym-os-4.9.x: Likewise.
348 2013-07-03  Iain Buclaw  <ibuclaw@gdcproject.org>
350         * d-longdouble.cc (longdouble::set): Intepret set values at higher
351         precision for min/max properties.
352         * d-codegen.cc (maybe_set_builtin_frontend): Add yl2x and yl2xp1
353         math intrinsics.
354         (IRState::maybeExpandSpecialCall): Likewise.
356 2013-07-02  Iain Buclaw  <ibuclaw@gdcproject.org>
358         * d-objfile.cc (Module::genobjfile): Don't free current_module_info.
359         * d-codegen.cc (IRState::buildAssignOp): Don't create a SAVE_EXPR
360         around comma expressions used as lvalues.
361         * d-todt.cc (TypeSArray::toDtElem): Get underlying vector basetype when
362         layouting out data in a static array.
364 2013-06-29  Iain Buclaw  <ibuclaw@gdcproject.org>
366         * complex_t.h: Move into dfrontend.
367         * d-builtins.c (gcc_cst_to_d_expr): Explicitly create longdouble.
368         * d-longdouble.cc (longdouble::parse): Remove function.
369         (longdouble::longdouble): Remove constructors from longdouble.
370         Replaced with operator= template and longdouble::set.
371         (longdouble::rv): Update for new class layout.
372         (longdouble::from_shwi): New function to create a longdouble value
373         from a HOST_WIDE_INT.
374         (longdouble::from_uhwi): Likewise, but from an unsigned HOST_WIDE_INT.
375         (longdouble::to_shwi): New function to return a HOST_WIDE_INT value
376         from a longdouble.
377         (longdouble::to_uhwi): Likewise, but from an unsigedn HOST_WIDE_INT.
378         (longdouble::set): New function to explicitly set longdouble value.
379         (longdouble::toInt): Remove function.
380         (longdouble::isZero): Remove function.
381         (longdouble::isNegative): Remove function.
382         * d-port.cc (Port::nan): Rename to Port::ldbl_nan.
383         (Port::infinity): Rename to Port::ldbl_infinity.
384         (Port::ldbl_max): New static field.
385         (Port::init): Set ldbl_max to be maximimum value for long double type.
386         (Port::strtof): New function to convert string to longdouble.
387         (Port::strtod): Likewise.
388         (Port::strtold): Likewise.
390 2013-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
392         * d-objfile.cc (make_alias_for_thunk): Do not set
393         TREE_SYMBOL_REFERENCED.
395 2013-06-17  Iain Buclaw  <ibuclaw@gdcproject.org>
397         * d-codegen.cc (build_struct_memcmp): New function.
398         * d-elem.cc (IdentityExp::toElem): Use build_struct_memcmp for field
399         comparisons of small structs.
401 2013-06-13  Iain Buclaw  <ibuclaw@gdcproject.org>
403         * d-codegen.cc (make_temp): New function.
404         * d-decls.cc (StructLiteralExp::toSymbol): Implement correctly to
405         generate an anonymous symbol to reference to in the codegen.
406         (ClassReferenceExp::toSymbol): Likewise, but also use an anonymous
407         type as size is not determined until the data has been layed out.
408         * d-elem.cc (EqualExp::toElem): Optimise comparisons of arrays of basic
409         types, also ensure left-to-right evaluation.
410         (SliceExp::toElem): Handle returing slice as a static array type.
411         (AddrExp::toElem): Handle taking the address of StructLiteralExp and
412         ClassReferenceExp symbols.
413         (FuncExp::toElem): Relax type checking to allow returning function
414         addresses as generic pointer types.
415         (ArrayLiteralExp::toElem): Implicitly convert static arrays of void to
416         static arrays of ubyte.
417         (StructLiteralExp::toElem): Remove code generation of postblit calls,
418         now taken care of in the front end.
419         * d-objfile.cc (Module::genmoduleinfo): Emit module name as a null
420         terminated static array.
421         * d-ctype.cc (TypeAArray::toCtype): Pass AA types around like pointers.
423 2013-06-11  Iain Buclaw  <ibuclaw@gdcproject.org>
425         * dfrontend: Update to D front-end version 2.063.
427         * d-builtins.c (gcc_type_to_d_type): Use Loc for unknown locations.
428         (d_gcc_magic_builtins_module): Likewise.
429         (gcc_cst_to_d_expr): Likewise.
430         * d-codegen.cc (get_libcall): Use FuncDeclaration::genCfunc to build
431         D runtime library functions.
432         * d-decl.cc (SymbolDeclaration::SymbolDeclaration): Remove function.
433         (StructLiteralExp::toSymbol): New function.
434         (ClassReferenceExp::toSymbol): New function.
435         * d-elem.cc (AssertExp::toElem): Call struct/class invariants only if
436         compiler is generating invariant code.
437         (TupleExp::toElem): Update for new front-end.
438         (ClassReferenceExp::toElem): New function.
439         * d-lang.cc (d_init_options): Set compiler.vendor front-end parameter.
440         (d_init): Call Expression::init.
441         * d-objfile.cc (InterfaceDeclaration::toObjFile): Correctly set the
442         xgetRTInfo field in the record layout.
443         * d-todt.cc (CastExp::toDt): New function.
444         (AddrExp::toDt): New function.
445         (ClassReferenceExp::toDt): New function.
446         (ClassReferenceExp::toDtI): New function.
447         (ClassReferenceExp::toInstanceDt): New function.
448         (ClassReferenceExp::toDt2): New function.
450 2013-06-10  Iain Buclaw  <ibuclaw@gdcproject.org>
452         * d-objfile.cc (FuncDeclaration::toObjFile): Set 'this' parameter as
453         implicitly read-only.
454         * d-codegen.cc (declaration_type): Set 'this' declaration type as
455         implicitly const.
456         (build_frame_type): Set frame or closure type as implicitly const.
458 2013-06-09  Iain Buclaw  <ibuclaw@gdcproject.org>
460         * d-builtins.c (d_init_builtins): Make d_unknown_type_node a
461         RECORD_TYPE.
462         * d-lang.cc (d_build_eh_type_type): Cast the returned typeinfo decl to
463         void pointer type.
465 2013-06-07  Iain Buclaw  <ibuclaw@gdcproject.org>
467         * d-codegen.cc (IRState::var): Rename to get_decl_tree.
468         (IRState::convertForArgument): Rename to convert_for_argument.
469         (IRState::floatMod): Rename to build_float_modulus.
470         (IRState::findThis): Rename to find_this_tree.
471         (IRState::emitLocalVar): Update signature.
472         (IRState::arrayElemRef): Remove function.
473         * d-elem.cc (IndexExp::toElem): Move implementation of
474         IRState::arrayElemRef here.
476 2013-06-04  Iain Buclaw  <ibuclaw@gdcproject.org>
478         * d-codegen.cc (cmodule): Rename to current_module_decl.
479         (object_file): Remove variable.
480         * d-objfile.cc (ObjectFile::moduleInfo): Rename to current_module_info.
481         (ObjectFile::modules): Rename to output_modules.
482         (ObjectFile::staticCtorList): Rename to static_ctor_list.
483         (ObjectFile::staticDtorList): Rename to static_dtor_list.
484         (ObjectFile::emitTemplates): Rename to flag_emit_templates.
485         (ObjectFile::beginModule): Remove function.
486         (ObjectFile::endModule): Remove function.
487         (ObjectFile::finish): Rename to d_finish_module.
488         (ObjectFile::doLineNote): Remove function.
489         (ObjectFile::setLoc): Rename to set_input_location.
490         (ObjectFile::setDeclLoc): Rename to set_decl_location.
491         (ObjectFile::setCfunEndLoc): Rename to set_function_end_locus.
492         (ObjectFile::giveDeclUniqueName): Rename to get_unique_name.
493         (ObjectFile::setupSymbolStorage): Rename to setup_symbol_storage.
494         (ObjectFile::setupStaticStorage): Remove function.
495         (ObjectFile::makeDeclOneOnly): Rename to d_comdat_linkage.
496         (ObjectFile::outputStaticSymbol): Rename to d_finish_symbol.
497         (ObjectFile::outputFunction): Rename to d_finish_function.
498         (ObjectFile::addAggMethod): Remove function.
499         (ObjectFile::initTypeDecl): Rename to build_type_decl.
500         (ObjectFile::declareType): Remove function.
501         (ObjectFile::shouldEmit): Rename to output_declaration_p.
502         (ObjectFile::shouldEmit): Rename variant to output_symbol_p.
503         (ObjectFile::doThunk): Rename to use_thunk.
504         (ObjectFile::stripVarDecl): Remove function.
505         (ObjectFile::doSimpleFunction): Rename to build_simple_function.
506         (ObjectFile::doFunctionToCallFunctions): Rename to
507         build_call_function.
508         (ObjectFile::doCtorFunction): Rename to build_ctor_function.
509         (ObjectFile::doDtorFunction): Rename to build_dtor_function.
510         (ObjectFile::doUnittestFunction): Rename to build_unittest_function.
511         (ObjectFile::hasModule): Rename to output_module_p.
512         (ObjectFile::outputThunk): Rename to finish_thunk.
513         (write_deferred_thunks): New function to emit deferred thunks.
515 2013-06-03  Iain Buclaw  <ibuclaw@gdcproject.org>
517         * d-decls.cc (VarDeclaration::toSymbol): Don't set default tls model.
518         * d-objfile.cc (ObjectFile::setupSymbolStorage): Set default tls
519         model for var decls before determining whether symbol is public.
520         (build_tlssections): Likewise for TLS symbols.
522 2013-06-01  Johannes Pfau  <johannespfau@gmail.com>
524         * d-codegen.cc (maybe_set_builtin_frontend): Check parameter and
525         return types of intrinsics.
527 2013-06-01  Iain Buclaw  <ibuclaw@gdcproject.org>
529         * d-codegen.cc (IRState::var): Handle variables used for NRVO.
530         * d-ir.cc (ReturnStatement::toIR): Return result decl directly if NRVO.
531         * d-objfile.cc (Symbol::SnamedResult): New member to hold the named
532         RESULT_DECL of the function.
533         (FuncDeclaration::toObjFile): Set-up function for NRVO.
534         (build_tlssections): Align _tlsstart and _tlsend symbols to target
535         address size.
536         * d-ctype.cc (TypeFunction::toSymbol): Mark functions returning non-POD
537         structs as TREE_ADDRESSABLE to force return in memory.
538         * d-decls.cc (FuncDeclaration::toSymbol): Propagate TREE_ADDRESSABLE
539         from the original function type.
541 2013-05-29  Iain Buclaw  <ibuclaw@gdcproject.org>
543         * d-target.cc: New source file to handle Target structure.
545         * d-builtins.c (d_bi_init): Remove function.
546         (d_gcc_type_align): Move to Target::alignsize.
547         (d_gcc_field_align): Move to Target::fieldalign.
548         (d_init_builtins): Build va_list type for D frontend.
549         * d-lang.cc (d_init): Use isLP64 to determine LP64 targets.
550         (d_add_builtin_version): Set is64bit if target is X86_64.
551         * d-codegen.cc (convert_for_assignment): Use memset to implement front
552         end code (struct = 0) here, rather than build an empty constructor.
553         * d-elem.cc (AssignExp::toElem): Remove handling of (struct = 0) and
554         call convert_for_assignment.
556 2013-05-28  Iain Buclaw  <ibuclaw@gdcproject.org>
558         * d-gcc-complex_t.h: Rename to complex_t.h.
559         * d-gcc-real.cc: Rename to d-longdouble.cc.
560         * d-gcc-real.h: Rename to longdouble.h
561         * d-port.cc: New source file to handle Port structure.
562         * gdc_alloca.h: Remove source.
564         * d-longdouble.cc (real_t): Rename to longdouble.
565         (longdouble::getnan): Move to Port::nan.
566         (longdouble::getsnan): Move to Port::snan.
567         (longdouble::getinfinity): Move to Port::infinity.
568         (longdouble::isInf): Move to Port::isInfinite.
569         (longdouble::isNan): Move to Port::isNan.
570         (longdouble::isSignallingNan): Move to Port::isSignallingNan.
571         * d-builtins.c (gcc_d_backend_init): Rename to d_backend_init.
572         (gcc_d_backend_term): Rename to d_backend_term.
573         (gcc_type_to_d_type): Don't map 128bit integers to D front end.
575         * d-elem.cc (AssignExp::toElem): Remove handling of fillHoles, use
576         memset to implement (struct = 0).
577         (StructLiteralExp::toElem): Handle fillHoles here, creating a
578         temporary var that is zero init'd with memset and returned.
580 2013-05-27  Iain Buclaw  <ibuclaw@gdcproject.org>
582         * d-codegen.cc (IRState::localVar): Rename to build_local_var.
583         (IRState::exprVar): Rename to create_temporary_var.
584         (IRState::maybeExprvar): Rename to maybe_temporary_var.
585         (IRState::pointerIntSum): Rename to build_array_index.
586         * d-lang.cc (d_handle_target_attribute): New function to handle D
587         target attributes.
589 2013-05-26  Iain Buclaw  <ibuclaw@gdcproject.org>
591         * d-incpath.cc (prefixed_path): Add cpp_GCC_INCLUDE_DIR back in as
592         second method for relocation.
593         * d-elem.cc (IndexExp::toElem): Fix call to _aaGetX as from
594         IRState::toElemLvalue.
595         * d-codegen.cc (IRState::toElemLvalue): Remove function.
596         (IRState::convertForAssignment): Rename to convert_for_assignment.
597         (IRState::convertForCondition): Rename to convert_for_condition.
598         (IRState::checkedIndex): Rename to d_checked_index.
599         (IRState::boundsCond): Rename to d_bounds_condition.
600         (IRState::arrayBoundsCheck): Rename to array_bounds_check.
601         (IRState::assertCall): Rename to d_assert_call.
602         (IRState::doLineNote): Move to irstate.h.
603         * d-irstate.cc (IRBase::getLocalContext): Remove function.
604         * d-decls.cc (VarDeclaration::toSymbol): Build decl lang specific for
605         decl to point back to D front end type.
606         (FuncDeclaration::toSymbol): Likewise.
608 2013-05-23  Iain Buclaw  <ibuclaw@gdcproject.org>
610         * d-codegen.cc (AggLayout::finish): Unset TYPE_SIZE before
611         re-calculating.
612         * d-ctype.cc (TypeStruct::toCtype): Don't call decl_attribute on the
613         type twice.
615 2013-05-21  Iain Buclaw  <ibuclaw@gdcproject.org>
617         * d-lang.cc (d_gcc_dump_source): Remove function.
618         (d_post_options): Set flag_excess_precision_cmd as standard.
619         * d-gcc-real.cc (real_t::convert): Remove function.
620         (real_t::floatCompare): Remove function.
621         (real_t::operator): Always perform floating point compilation at the
622         precision of the target real mode.
623         * d-todt.cc (dt_last): Remove function.
624         (dtlist_to_tree): Rename to dtvector_to_tree.
625         (dt_cons): Replace TREE_CHAIN implementation for use of CONSTRUCTOR.
626         (dt_chainon): Likewise.
627         (dt_container): Likewise.
628         (dt_container2): Likewise.
629         (StructInitializer::toDt): Likewise.
630         (StructLiteralExp::toDt): Likewise.
632 2013-05-17  Iain Buclaw  <ibuclaw@gdcproject.org>
634         * d-codegen.cc (IRState::convertTo): Replace with d_convert and
635         convert_expr.
636         (IRState::declContext): Replace with d_decl_context.
637         (IRState::functionNeedsChain): Replace with needs_static_chain.
638         (IRState::label): Replace with d_build_label.
639         (IRState::emitTemplates): Move to ObjectFile.
640         (functionDegenerateClosure): Replace with is_degenerate_closure.
641         (get_object_method): Assert that function is a method.
642         (IRState::startCond): Move to IRBase.
643         (IRState::startElse): Likewise.
644         (IRState::endCond): Likewise.
645         (IRState::startLoop): Likewise.
646         (IRState::continueHere): Likewise.
647         (IRState::setContinueLabel): Likewise.
648         (IRState::exitIfFalse): Likewise.
649         (IRState::endLoop): Likewise.
650         (IRState::startCase): Likewise.
651         (IRState::doCase): Likewise.
652         (IRState::endCase): Likewise.
653         (IRState::continueLoop): Likewise.
654         (IRState::exitLoop): Likewise.
655         (IRState::startTry): Likewise.
656         (IRState::startCatches): Likewise.
657         (IRState::startCatch): Likewise.
658         (IRState::endCatch): Likewise.
659         (IRState::endCatches): Likewise.
660         (IRState::startFinally): Likewise.
661         (IRState::endFinally): Likewise.
662         (IRState::doReturn): Likewise.
663         (IRState::doJump): Likewise.
664         (IRState::pushLabel): Likewise.
665         (IRState::checkSwitchCase): Likewise.
666         (IRState::checkGoto): Likewise.
667         (IRState::checkPreviousGoto): Likewise.
669         * d-elem.cc (CatAssignExp::toElem): Call postblit on appending array of
670         structs if required.
672 2013-05-16  Johannes Pfau  <johannespfau@gmail.com>
674         * d-incpath.cc (prefixed_path): use cpp_PREFIX instead of
675         cpp_GCC_INCLUDE_DIR for relocation.
677 2013-05-16  Iain Buclaw  <ibuclaw@gdcproject.org>
679         * d-codegen.cc (IRState::convertForAssignment): Remove use of
680         CtorEltMaker wrapper for vec<constructor_elt, va_gc>.
681         (d_array_value): Likewise.
682         (build_delegate_cst): Likewise.
683         (extract_from_method_call): Likewise.
684         * d-elem.cc (NewExp::toElem): Likewise.
685         (ArrayLiteralExp::toElem): Likewise.
686         (AssocArrayLiteralExp::toElem): Likewise.
687         (StructLiteralExp::toElem): Likewise.
688         (NullExp::toElem): Likewise.
689         (VectorExp::toElem): Likewise.
690         * d-objfile.cc (build_moduleinfo): Likewise.
691         * d-todt.cc (dt_container): Likewise.
692         (dt_container2): Likewise.
694         * d-asmstmt.cc (ExtAsmStatement::toIR): Remove use of ListMaker
695         wrapper for tree chaining.
696         * d-builtins.c (d_bi_builtin_func): Likewise.
697         (d_bi_builtin_type): Likewise.
698         (d_gcc_magic_builtins_module): Likewise.
699         (d_gcc_magic_libbuiltins_module): Likewise.
700         * d-codegen.cc (build_attributes): Likewise.
701         (IRState::call): Likewise.
702         (IRState::buildFrameForFunction): Likewise.
703         (AggLayout::doFields): Likewise.
704         (AggLayout::addField): Likewise.
705         * d-ctype.cc (TypeEnum::toCtype): Likewise.
706         (TypeFunction::toCtype): Likewise.
707         * d-todt.cc (dt_container2): Likewise.
709         * d-codegen.cc (IRState::getFrameInfo): Replace with get_frameinfo.
710         (IRState::buildFrameForFunction): Replace with build_frame_type.
711         (IRState::isClassNestedInFunction): Replace with d_nested_class.
712         (IRState::isStructNestedInFunction): Replace with d_nested_struct.
713         (IRState::getFrameForFunction): Fold into IRState::getFrameForSymbol.
714         (IRState::getFrameForNestedClass): Likewise.
715         (IRState::getFrameForNestedStruct): Likewise.
717 2013-05-15  Iain Buclaw  <ibuclaw@gdcproject.org>
719         * d-codegen.cc (IRState::buildFrameForFunction): Also copy the
720         parameters of functions with 'in' contracts to a local frame decl.
721         * d-lang.cc (d_handle_flatten_attribute): New function to handle D
722         flatten attributes.
724 2013-05-14  Iain Buclaw  <ibuclaw@gdcproject.org>
726         * d-codegen.cc (IRState::chainLink): Remove function.
727         (IRState::chainFunc): Remove function.
728         (IRState::sthis): New member which holds the chain of function.
729         (IRState::buildChain): Update to use new static chain decl.
730         (IRState::getFrameInfo): Likewise.
731         * d-objfile.cc (FuncDeclaration::buildClosure): Likewise.
732         (FuncDeclaration::toObjFile): Default the function static chain decl
733         to null unless vthis is given for the function.
735 2013-05-13  Iain Buclaw  <ibuclaw@gdcproject.org>
737         * d-lang.cc (d_handle_noinline_attribute): New function to handle D
738         noinline attributes.
739         (d_handle_forceinline_attribute): New function to handle D forceinline
740         attributes.
741         * d-elem.cc (StructLiteralExp::toElem): Return the struct initialiser
742         symbol directly if the tree has already been built.
743         * d-decls.cc (Dsymbol::toSymbolX): Constify the mangling name to use.
745 2013-05-10  Iain Buclaw  <ibuclaw@gdcproject.org>
747         * d-typinf.cc: New file containing type info routines originally in
748         the D Front End.
750         * d-todt.cc (dt_last): New helper function to retrieve last node in a
751         dt_t tree list.
752         (dt_cons): New helper function to append nodes to the end of a list.
753         (dt_chainon): New helper function to concatenate two lists together.
754         (dt_container): New helper function to build a ctor from a list.
755         (build_vptr_monitor): New helper function to generate the class
756         vtable, and put out __vptr and __monitor.
757         symbol default values in a class declaration.
758         (dtlist_to_tree): New helper function to convert a dt_t list into a
759         constructor tree.
760         (Type::toDt): Implement routines for new dt_t format.
761         (TypeInfoDeclaration::toDt): Likewise.
762         (Initializer::toDt): Likewise.
763         (Expression::toDt): Likewise.
764         (Declaration::toDt): Likewise.
766         * d-objfile.cc (Dsymbol::toObjFile): Update for new dt_t format.
767         (Module::genmoduleinfo): Likewise.
768         (Symbol::Symbol): Moved from symbol.cc
769         (Obj::objmod): Remove abstraction layer.
770         (Obj::moduleinfo): Renamed to build_moduleinfo.
771         (obj_tlssections): Renamed to build_tlssections.
772         (outdata): Renamed to d_finish_symbol.
773         (check_static_sym): Moved into d_finish_symbol.
775         * d-codegen.cc (d_gcc_emit_local_variable): Remove.
777         * d-decls.cc (Dsymbol::toSymbolX): Update to not call symbol_calloc.
778         (FuncDeclaration::toThunkSymbol): Likewise.
779         (ClassDeclaration::toSymbol): Build type as d_unknown_type_node.
780         (InterfaceDeclaration::toSymbol): Likewise.
781         (Module::toSymbol): Likewise.
782         (ClassDeclaration::toVtblSymbol): Update call to toSymbolX.
783         (AggregateDeclaration::toInitializer): Likewise.
784         (TypedefDeclaration::toInitializer): Likewise.
785         (EnumDeclaration::toInitializer): Likewise.
787         * d-ir.cc (CaseStatement::toIR): Don't call static_sym.
789         * d-lang.cc (rtlsym): Remove symbol.
790         (D_DECL_READONLY_STATIC): Remove macro.
791         (d_unknown_type_node): New LANG_TYPE node for marking TypeInfo_Class,
792         Interface, and ModuleInfo types that are of a variable size determined
793         at compile time.
795         * d-elem.cc (StringExp::toElem): Clean up for new dt_t format.
797         * symbol.cc: Remove file.
799 2013-05-08  Iain Buclaw  <ibuclaw@gdcproject.org>
801         * d-codegen.cc (IRState::getFrameInfo): Don't create a frame/closure
802         for member functions, only required for nested.
803         * d-elem.cc (Expression::toElemDtor): Call dtors in the correct order.
804         (DeclarationExp::toElem): Don't call dtor on static, manifest, or
805         extern symbols upon declaration.
806         (AssignExp::toElem): Only call postblit on lvalues in assignment.
807         (ArrayLiteralExp::toElem): Always generate literals on heap.
809 2013-05-06  Iain Buclaw  <ibuclaw@gdcproject.org>
811         * d-elem.cc (StructLiteralExp::toElem): Return the default initialiser
812         symbol if one exists.
813         * d-builtins.c (d_gcc_magic_libbuiltins_check): Override the function
814         type with the correct built-in function type as defined in backend.
816 2013-04-15  Iain Buclaw  <ibuclaw@gdcproject.org>
818         * d-elem.cc (IdentityExp::toElem): Remove special handling of class,
819         reference and array types.
821 2013-04-12  Iain Buclaw  <ibuclaw@gdcproject.org>
823         * d-codegen.cc (maybe_make_temp): Save call expressions so aren't
824         evaluated more than once.
825         (d_has_side_effects): Remove check for exceptional class types.
827 2013-04-10  Iain Buclaw  <ibuclaw@gdcproject.org>
829         * d-decls.cc (FuncDeclaration::toSymbol): Harden logic for marking
830         functions pure as in 'has no side effects'.
832 2013-04-07  Iain Buclaw  <ibuclaw@gdcproject.org>
834         * d-decls.cc (FuncDeclaration::toSymbol): Push deferred functions to
835         FuncDeclaration::deferred.
836         * d-elem.cc (DelegateExp::toElem): Likewise.
837         (FuncExp::toElem): Likewise.
838         * d-objfile.cc (ObjectFile::shouldEmit): Likewise.
839         (FuncDeclaration::toObjFile): Process all deferred functions in
840         FuncDeclaration::deferred.
841         * symbol.cc (Symbol::deferredNestedFuncs): Remove.
843 2013-04-05  Iain Buclaw  <ibuclaw@gdcproject.org>
845         * d-elem.cc (FuncExp::toElem): Defer function literals and lambdas
846         until parent function has finished processing.
848 2013-04-04  Iain Buclaw  <ibuclaw@gdcproject.org>
850         * d-codegen.cc (IRState::buildChain): Use __frame decl directly when
851         setting up the function frame.
852         (maybe_set_builtin_frontend): Exit early if symbol has no parent.
853         * d-decls.cc (FuncDeclaration::toSymbol): Defer all nested functions,
854         not just templated instances.
855         * d-objfile.cc (FuncDeclaration::toObjFile): Delay processed deferred
856         nested functions until function has finished being generated.
857         (ObjectFile::shouldEmit): Don't emit nested functions if the parent
858         function hasn't finished processing.
860 2013-04-03  Iain Buclaw  <ibuclaw@gdcproject.org>
862         * d-codegen.cc (maybe_set_builtin_frontend): Merged from
863         maybe_set_builtin and maybe_set_libcall.
864         * d-decls.cc (FuncDeclaration::toSymbol): Use
865         maybe_set_builtin_frontend.
867 2013-03-31  Iain Buclaw  <ibuclaw@gdcproject.org>
869         * d-lang.cc (d_init_options): Default module info emission to on.
870         (d_handle_option): New femit-moduleinfo switch.
871         * d-objfile.cc (Module::genobjfile): Don't emit module if disabled
872         explicitly.
873         * d-builtins.cc (is_intrinsic_module_p): New function to test whether
874         module is core.bitops.
875         (is_math_module_p): New function to test whether module is std.math or
876         core.stdc.math.
877         (is_builtin_va_arg_p): New function to test whether symbol is
878         specially handled va_arg template.
879         (is_builtin_va_start_p): New function to test whether symbol is
880         specially handled va_start template.
881         * d-codegen.cc (IRState::binding): Replace with bind_expr.
882         (IRState::mathModule): Replace with std_math_module.
883         (IRState::mathCoreModule): Replace with core_math_module.
884         (IRState::intrinsicModule): Replace with std_intrinsic_module.
885         (IRState::cstdargTemplateDecl): Replace with va_arg_template.
886         (IRState::stdargTemplateDecl): Replace with va_arg2_template.
887         (IRState::cstdargStartTemplateDecl): Replace with va_start_template.
888         (IRState::getLibCallDecl): Replace with get_libcall.
889         (IRState::maybeSetLibCallDecl): Replace with maybe_set_libcall.
890         (IRState::libCall): Replace with build_libcall.
891         (IRState::maybeSetUpBuiltin): Replace with maybe_set_builtin.
892         (IRState::Intrinsic): Move enum out of IRState.
894 2013-03-30  Iain Buclaw  <ibuclaw@gdcproject.org>
896         * d-codegen.cc (IRState::darrayPtrRef): Replace with d_array_ptr.
897         (IRState::darrayLenRef): Replace with d_array_length.
898         (IRState::darrayVal): Replace with d_array_value.
899         (IRState::darrayString): Replace with d_array_string.
900         (IRState::arrayLength): Replace with get_array_length.
901         (get_object_method): Remove dependancy on irs parameter.
902         * d-lang.cc (d_init): Use static bool std_inc to determine whether to
903         include standard module paths.
904         (d_post_options): Canonicalize the input filename.
905         (d_parse_file): Correctly catch cases where input file is stdin.
907 2013-03-27  Iain Buclaw  <ibuclaw@gdcproject.org>
909         * d-codegen.cc (IRState::getFrameInfo) Create a custom static chain for
910         all nested functions.
911         * d-gcc-includes.h: Rename to d-system.h
913 2013-03-23  Iain Buclaw  <ibuclaw@gdcproject.org>
915         * d-builtins.c (d_bi_init): Set REALPAD to be TYPE_PRECISION of
916         long_double_type_node.
917         * d-codegen.cc (IRState::twoFieldType): Replace with
918         build_two_field_type.
919         (IRState::arrayOpNotImplemented): Replace with unhandled_arrayop_p.
920         (IRState::delegateMethodRef): Replace with delegate_method.
921         (IRState::delegateObjectRef): Replace with delegate_object.
922         (IRState::delegateVal): Replace with build_delegate_cst.
923         (IRState::methodCallExpr): Replace with build_method_call.
924         (IRState::extractMethodCallExpr): Replace with
925         extract_from_method_call.
926         (IRState::objectInstanceMethod): Replace with get_object_method.
927         (IRState::twoFieldCtor): Remove.
928         (IRState::call): Assert that if calling a normal FUNCTION_TYPE,
929         'object' is not set.
930         * d-ctype.cc (TypeDelegate::toCtype): Build a METHOD_TYPE for the .func
931         field type in delegates.
932         * d-lang.h (D_IS_METHOD_CALL_EXPR): Rename to D_METHOD_CALL_EXPR.
933         * d-objfile.cc (FuncDeclaration::toObjFile): Remove assert for chain
934         function.
936 2013-03-20  Johannes Pfau  <johannespfau@gmail.com>
938         * d-codegen.cc (IRState::objectInstanceMethod): Recursively check
939         for TOKsuper / TOKdottype. Do not ignore CastExp.
940         * d-elem.cc (IdentityExp::toElem): Ignore padding in bitwise floating
941         point comparisons.
942         * testsuite: Cleanup. Remove invalid tests, adjust tests, etc. 
944 2013-03-20  Iain Buclaw  <ibuclaw@gdcproject.org>
946         * d-codegen.cc (IRState::objectInstanceMethod): Get function pointer
947         off function TREE_TYPE.
948         (build_deref): Handle cases where expression to dereference is an
949         address expression.
950         (modify_expr): New function overload to set return type directly.
951         * d-elem.cc (CatAssignExp::toElem): Use new modify_expr.
952         (AssignExp::toElem): Likewise.
953         * d-decls.cc (FuncDeclaration::toSymbol): Don't build a method type for
954         nested functions / delegates.  Just add on the hidden 'this' pointer
955         containing the custom static chain/closure object.
957         * d-codegen.cc (GlobalValues): Replace with current_module,
958         current_irs, object_file.
959         (IRState::getFuncType): Replace with get_function_type.
960         (IRState::isCallByAlias): Replace with call_by_alias_p.
961         (IRState::isFuncType): Replace with function_type_p.
962         (IRState::doExp): Remove.
964         * d-asmstmt.cc (ExtAsmStatement::syntaxCopy): Use arraySyntaxCopy to
965         copy front end expressions.
967         * d-codegen.cc (AssignExp::toElem): Call _d_arrayassign / _d_arrayctor
968         when assigning arrays of structs.
970 2013-03-18  Iain Buclaw  <ibuclaw@gdcproject.org>
972         * d-codegen.cc (IRState::realPart): Replace with real_part.
973         (IRState::imagPart): Replace with imaginary_part.
974         (IRState::integerConstant): Replace with build_integer_cst.
975         (IRState::floatConstant): Replace with build_float_cst.
976         (IRState::hwi2toli): Replace with cst_to_hwi.
977         (IRState::addressOf): Replace with build_address.
978         (IRState::markAddressable): Replace with d_mark_addressable.
979         (IRState::markUsed): Replace with d_mark_used.
980         (IRState::markRead): Replace with d_mark_read.
981         (IRState::indirect): Replace with indirect_ref.
982         (IRState::pvoidOkay): Replace with void_okay_p.
983         (IRState::maybeCompound): Replace with maybe_compound_expr.
984         (IRState::maybeVoidCompound): Replace with maybe_vcompound_expr.
985         (IRState::isErrorMark): Replace with error_mark_p.
986         (IRState::getTargetSizeConst): Replace with tree_to_hwi.
987         (IRState::modify): Replace with modify_expr.
988         (IRState::vmodify): Replace with vmodify_expr.
989         (IRState::vinit): Replace with build_vinit.
990         (IRState::nop): Replace with build_nop.
991         (IRState::vconvert): Replace with build_vconvert.
992         (IRState::boolOp): Replace with build_boolop.
993         (IRState::compound): Replace with compound_expr.
994         (IRState::voidCompound): Replace with vcompound_expr.
995         (IRState::component): Replace with component_ref.
996         (IRState::errorMark): Replace with error_mark.
997         (IRState::typesSame): Replace with d_types_same.
998         (IRState::typesCompatible): Replace with d_types_compatible.
999         (IRState::getDType): Replace with build_dtype.
1000         (IRState::getObjectType): Replace with build_object_type.
1001         (IRState::isDeclarationReferenceType): Replace with decl_reference_p.
1002         (IRState::trueDeclarationType): Replace with declaration_type.
1003         (IRState::isArgumentReferenceType): Replace with arg_reference_p.
1004         (IRState::trueArgumentType): Replace with type_passed_as.
1005         (IRState::arrayType): Replace with d_array_type.
1006         (IRState::addTypeAttribute): Replace with insert_type_attributes.
1007         (IRState::addDeclAttribute): Replace with insert_decl_attributes.
1008         (IRState::attributes): Replace with build_attributes.
1009         (IRState::addTypeModifiers): Replace with insert_type_modifiers.
1010         (IRState::maybeMakeTemp): Replace with maybe_make_temp.
1011         (IRState::isFreeOfSideEffects): Replace with d_has_side_effects.
1012         (IRState::pointerOffsetOp): Replace with build_offset_op.
1013         (IRState::pointerOffset): Replace with build_offset.
1014         (IRState::buildCall): Replace with d_build_call.
1015         (IRState::exceptionObject): Replace with build_exception_object.
1017 2013-03-17  Iain Buclaw  <ibuclaw@gdcproject.org>
1019         * d-asmstmt.cc (d_build_asm_stmt): Remove.
1020         (ExtAsmStatement::ExtAsmStatement): Update to match renamed members.
1021         (ExtAsmStatement::syntaxCopy): Likewise.
1022         (ExtAsmStatement::semantic): Likewise.
1023         (ExtAsmStatement::toCBuffer): Likewise.
1024         (ExtAsmStatement::comeFrom): New.
1025         (ExtAsmStatement::blockExit): Don't error if must not throw.
1026         (naturalString): Remove.
1027         (ExtAsmStatement::toIR): Inline IRState::doAsm implementation.
1028         * d-codegen.cc (IRState::doAsm): Remove.
1029         * d-decls.cc (FuncDeclaration::toSymbol): Don't generate 'naked'
1030         attribute.
1031         (binfo_for): Move into d-decls.cc.
1032         (intfc_binfo_for): Likewise.
1033         (ClassDeclaration::toDebug): Likewise.
1034         (EnumDeclaration::toDebug): Likewise.
1035         (TypedefDeclaration::toDebug): Likewise.
1036         (StructDeclaration::toDebug): Likewise.
1037         * d-objfile.cc (FuncDeclaration::toObjFile): Move into d-objfile.cc.
1038         (FuncDeclaration::buildClosure): Likewise.
1039         (Module::genobjfile): Likewise.
1040         * d-glue.cc: Remove file.
1042 2013-03-16  Iain Buclaw  <ibuclaw@gdcproject.org>
1044         * d-ir.cc (SynchronizedStatement::toIR): Remove implementation as is
1045         now handled by the frontend.
1047 2013-03-15  Iain Buclaw  <ibuclaw@gdcproject.org>
1049         * d-codegen.cc (IRState::maybeExpandSpecialCall): Handle ref argptr
1050         arguments.
1052 2013-03-13  Iain Buclaw  <ibuclaw@gdcproject.org>
1054         * d-builtins.c (handle_alias_attribute): New function to handle
1055         internal 'alias' attribute.
1056         (handle_weakref_attribute): New function to handle internal 'weakref'
1057         attribute.
1058         * d-objfile.cc (ObjectFile::outputThunk): Define thunks to external
1059         symbols as weakref, alias
1061 2013-03-12  Johannes Pfau  <johannespfau@gmail.com>
1063         * patch-versym-os-4.8.x (mingw32.h): Fix typo
1064         * patch-versym-cpu-4.8.x (mips.h): Fix typo
1065         Update version symbols to latest dlang specification.
1067 2013-03-10  Iain Buclaw  <ibuclaw@gdcproject.org>
1069         * d-decls.cc (FuncDeclaration::toSymbol): Delay setting TREE_TYPE as
1070         function type could be hidden in a nested function not yet built.
1071         * d-codegen.cc (IRState::findThis): Don't get 'this' from outer
1072         function if it's a closure type.  This has already been handled by
1073         IRState::getFrameForSymbol.
1074         (IRState::buildChain): Give frame decl debug name '__frame'.
1075         Always set '__chain' link field.
1076         (IRState::getFrameInfo): Don't build a frame for all nested functions.
1077         Search through nested aggregates for static chain in outer functions.
1078         * d-codegen.h (IRState::useParentChain): Remove.
1079         * d-glue.cc (FuncDeclaration::toObjFile): Don't call useParentChain.
1080         Don't create a local var for the chain link for a function.
1081         (FuncDeclaration::buildClosure): Always set '__chain' link field.
1083 2013-03-08  Iain Buclaw  <ibuclaw@gdcproject.org>
1085         * d-codegen.cc (d_gcc_force_templates): Only check for emitting
1086         templates as private.
1087         * d-lang.cc (d_handle_option): Remove -femit-templates= option.
1088         * d-objfile.cc (ObjectFile::makeDeclOneOnly): Fix code logic so
1089         fallback method could be reached.
1090         * d-objfile.h (TEall, TEauto): Remove.
1092 2013-03-07  Iain Buclaw  <ibuclaw@gdcproject.org>
1094         * d-ir.cc (ReturnStatement::toIR): Don't call postblit on return.
1095         * d-codegen.cc (IRState::trueDeclarationType): Don't set
1096         D_TYPE_ADDRESSABLE.
1097         (IRState::makeTemp): Remove.
1098         (IRState::maybeMakeTemp): Copy makeTemp into function.
1099         * d-glue.cc (d_genericize): Remove D_TYPE_ADDRESSABLE handling.
1100         * d-lang.h (D_TYPE_ADDRESSABLE): Remove macro.
1102 2013-03-04  Johannes Pfau  <johannespfau@gmail.com>
1104         * d-ctype.cc (Type::toCtype): Always call gen.addTypeModifiers to
1105         make sure TYPE_MAIN_VARIANT is set. Reuse tree from unqualified
1106         variant for that. Also cache the resulting qualified tree.
1107         (TypeTypedef::toCtype): Likewise.
1108         (TypeEnum::toCtype): Likewise.
1109         (TypeStruct::toCtype): Likewise.
1110         (TypeFunction::toCtype): Likewise.
1111         (TypeVector::toCtype): Likewise.
1112         (TypeSArray::toCtype): Likewise.
1113         (TypeDArray::toCtype): Likewise.
1114         (TypeAArray::toCtype): Likewise.
1115         (TypeDelegate::toCtype): Likewise.
1116         (TypeClass::toCtype): Likewise.
1117         * d-objfile.cc (ObjectFile::giveDeclUniqueName): Make sure DECL_NAME is set
1119 2013-03-01  Iain Buclaw  <ibuclaw@gdcproject.org>
1121         * d-decls.cc (VarDeclaration::toSymbol): Remove use of c_ident.
1122         (FuncDeclaration::toSymbol): Likewise.
1123         * d-builtins.c (handle_noreturn_attribute): Assert that this is only
1124         used for internal purposes.
1125         (handle_const_attribute): Likewise.
1126         (handle_malloc_attribute): Likewise.
1127         (handle_pure_attribute): Likewise.
1128         (handle_nonnull_attribute): Likewise.
1129         (handle_nothrow_attribute): Likewise.
1130         (handle_sentinel_attribute): Likewise.
1131         (handle_transaction_pure_attribute): Likewise.
1132         (handle_returns_twice_attribute): Likewise.
1133         * d-glue.cc (FuncDeclaration::toObjFile): Result variables have no
1134         default initialiser.
1135         * d-codegen.cc (IRState::emitLocalVar): Add in assert that the local
1136         variable has no initialiser if called with no_init = true.
1137         (IRState::getLibCallDecl): Mark exceptional library functions as
1138         noreturn.
1139         (IRState::attributes): Gracefully handle @attribute, and
1140         @attribute(null).
1142 2013-02-28  Jernej Krempus  <jkrempus@gmail.com>
1144         * d-builtins.c (d_attribute_table): Renamed it to
1145         d_builtins_attribute_table.
1146         * d-lang.cc (d_attribute_table): Added an empty table
1147         * d-lang.cc (LANG_HOOKS_COMMON_ATTRIBUTE_TABLE): Defined it as
1148         d_builtins_attribute_table.
1149         * d-lang.h (d_builtins_attribute_table): Added a declaration.
1150         * d-codegen.cc (IRState::attributes): Changed it so it goes through
1151         in_attrs and looks for any @gcc.attribute.attribute("attr_name").
1152         * d-objfile.cc (ObjectFile::setupSymbolStorage): Pass userAttributes
1153         instead of attributes in all calls to IRState::attributes.
1154         * d-ctype.cc (TypeTypedef::toCtype): Likewise.
1155         (TypeEnum::toCtype): Likewise.
1156         (TypeStruct::toCtype): Likewise.
1157         (TypeClass::toCtype): Likewise.
1158         * libphobos/libdruntime/gcc/attribute.d: New file.
1160 2013-02-28  Iain Buclaw  <ibuclaw@gdcproject.org>
1162         * d-lang.cc (d_handle_option): Remove OPT_fdeprecated and
1163         OPT_Wsign_compare, add handling for OPT_Wdeprecated.
1164         (d_post_options): Handle Wdeprecated and Werror switch combination.
1166 2013-02-27  Iain Buclaw  <ibuclaw@gdcproject.org>
1168         * d-codegen.cc (ArrayScope::ArrayScope): Don't setup length var if its
1169         value is known at compile time.
1170         (ArrayScope::setArrayExp): Likewise.
1171         * d-decls.cc (uniqueName): Remove function.
1172         (VarDeclaration::toSymbol): Set decl assembler name directly.
1173         (FuncDeclaration::toSymbol): Likewise.
1175 2013-02-15  Iain Buclaw  <ibuclaw@gdcproject.org>
1177         * Make-lang.in (GDC_EXTENDED_ASM_SYNTAX): Remove macro.
1179 2013-02-14  Iain Buclaw  <ibuclaw@gdcproject.org>
1181         * d-lang.h (D_DECL_IS_CONTRACT): Remove macro.
1182         * d-decls.cc (FuncDeclaration::toSymbol): Likewise.
1184 2013-02-13  Iain Buclaw  <ibuclaw@gdcproject.org>
1186         * d-lang.cc (d_gcc_is_target_win32): Remove.
1187         (d_add_builtin_version): New function to handle define_builtin
1188         callback from backend.
1189         * d-codegen.cc (IRState::maybeExpandSpecialCall): Remove intrinsic bt.
1191         * d-builtins.c: Merge with d-builtins2.cc.
1192         * d-builtins2.cc: Remove.
1194 2013-02-07  Johannes Pfau  <johannespfau@gmail.com>
1196         * d-lang.cc (d_init): Use gcc's config system for predefined OS versions.
1197         * setup-gcc.sh: Likewise.
1198         * target-ver-syms.sh: Likewise.
1200 2013-02-05  Iain Buclaw  <ibuclaw@ubuntu.com>
1202         * d-builtins2.cc (gcc_type_to_d_type): Remove STRUCTTHISREF condition.
1203         * d-decls.cc (FuncDeclaration::toSymbol): Likewise.
1204         * d-elem.cc (ThisExp::toElem): Likewise.
1205         * d-ctype.cc (TypeSArray::toCtype): Remove SARRAYVALUE condition.
1206         * d-codegen.cc (IRState::isDeclarationReferenceType): Likewise.
1207         (IRState::isArgumentReferenceType): Likewise.
1209 2013-02-01  Johannes Pfau  <johannespfau@gmail.com>
1211         * d-lang.cc (d_init): Use gcc's config system for predefined CPU versions.
1212         (d_init): Fix definition of D_LP64 version.
1213         * setup-gcc.sh: Likewise.
1214         * target-ver-syms.sh: Likewise.
1217 Copyright (C) 2013 Free Software Foundation, Inc.
1219 Copying and distribution of this file, with or without modification,
1220 are permitted in any medium without royalty provided the copyright
1221 notice and this notice are preserved.