1 2013-12-27 Iain Buclaw <ibuclaw@gdcproject.org>
3 * d-codegen.cc (build_two_field_type): Declare builtin types as
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
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
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
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
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
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
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
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
110 (FuncDeclaration::buildClosure): Error if putting a scoped variable in
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
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
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
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
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
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
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
232 2013-10-23 Iain Buclaw <ibuclaw@gdcproject.org>
234 * d-elem.cc (AssignExp::toElem): Optimise assigning array literal to a
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
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
269 (VarDeclaration::toObjFile): Emit manifest constant values in debug
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
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
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
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
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
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
462 * d-lang.cc (d_build_eh_type_type): Cast the returned typeinfo decl to
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
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
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
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
612 * d-ctype.cc (TypeStruct::toCtype): Don't call decl_attribute on the
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
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
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
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
739 (d_handle_forceinline_attribute): New function to handle D forceinline
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
750 * d-todt.cc (dt_last): New helper function to retrieve last node in a
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
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
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
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
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,
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
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
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
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'
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
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'
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
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
1139 (IRState::attributes): Gracefully handle @attribute, and
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.