toir.cc (pop_label): Only queue labels in a vector.
[gcc.git] / gcc / d / ChangeLog-2016
1 2016-12-28 Iain Buclaw <ibuclaw@gdcproject.org>
2
3 * expr.cc (ExprVisitor::visit(VarExp)): Remove type forced conversion.
4
5 2016-12-28 Iain Buclaw <ibuclaw@gdcproject.org>
6
7 * d-lang.cc (d_handle_option): Handle -ftransition=safe.
8 * lang.opt (ftransition=safe): Add compiler option.
9
10 2016-12-28 Iain Buclaw <ibuclaw@gdcproject.org>
11
12 * d-lang.cc (d_init_options): Initialize hdrStripPlainFunctions.
13 (d_post_options): Add post option handling of flag.
14
15 2016-12-27 Iain Buclaw <ibuclaw@gdcproject.org>
16
17 * d-codegen.cc (layout_aggregate_type): Adjust layout of D interfaces.
18 Only add a __vptr field if no base interfaces, don't add __monitor.
19
20 2016-12-27 Iain Buclaw <ibuclaw@gdcproject.org>
21
22 * d-lang.cc (d_parse_file): Run runDeferredSemantic2 after semantic2.
23
24 2016-12-26 Iain Buclaw <ibuclaw@gdcproject.org>
25
26 * expr.cc (ExprVisitor::visit(ArrayLiteralExp)): Use getElement to
27 index elements array.
28 (ExprVisitor::visit(VectorExp)): Likewise.
29
30 2016-12-25 Iain Buclaw <ibuclaw@gdcproject.org>
31
32 * Make-lang.in (D_DMD_OBJS): Add d/objc.o
33 * types.cc (TypeVisitor::visit(TypeFunction)): Handle ObjC linkage.
34
35 2016-12-25 Iain Buclaw <ibuclaw@gdcproject.org>
36
37 * d-decls.cc (mangle_decl): New function.
38 (make_internal_name): Update.
39 (get_symbol_decl): Update.
40
41 2016-12-24 Iain Buclaw <ibuclaw@gdcproject.org>
42
43 * expr.cc (ExprVisitor::needs_dtor): New function.
44 (ExprVisitor::lvalue_p): New function.
45 (ExprVisitor::visit(AssignExp)): Check both for postblit and dtors
46 when generating array assignments.
47
48 2016-12-24 Iain Buclaw <ibuclaw@gdcproject.org>
49
50 * d-codegen.cc (convert_expr): Allow upcasting C++ classes.
51 (build_class_instance): Generate initial values of vtable interfaces
52 before class fields.
53 (layout_aggregate_type): Layout vtable interfaces before class fields.
54 * d-decls.cc (get_symbol_decl): Build DECL_ARGUMENTS for functions
55 that have no body.
56
57 2016-12-22 Iain Buclaw <ibuclaw@gdcproject.org>
58
59 * d-target.cc (Target::cppExceptions): New variable.
60 (Target::init): Initialize it.
61 (Target::prefixName): New function.
62
63 2016-12-19 Iain Buclaw <ibuclaw@gdcproject.org>
64
65 * d-objfile.cc (ClassDeclaration::toObjFile): Use layout_classinfo to
66 generate TypeInfo for classes.
67 (InterfaceDeclaration::toObjFile): Likewise.
68 * d-todt.cc (build_vptr_monitor): Remove function.
69 * typeinfo.cc (TypeInfoVisitor::set_field): New function.
70 (TypeInfoVisitor::layout_interfaces): New function.
71 (TypeInfoVisitor::layout_interface_vtables): New function.
72 (TypeInfoVisitor::visit(TypeInfoClassDeclaration)): Implement.
73 (layout_classinfo): New function.
74
75 2016-12-18 Iain Buclaw <ibuclaw@gdcproject.org>
76
77 * typeinfo.cc (TypeInfoVisitor): Use build_typeinfo instead of
78 get_typeinfo_decl.
79 * d-objfile.cc (ClassDeclaration::toObjFile): Use build_constructor to
80 build the vtable, instead of using dt_cons.
81
82 2016-12-18 Iain Buclaw <ibuclaw@gdcproject.org>
83
84 * d-decls.cc (layout_moduleinfo_fields): Use finish_aggregate_type
85 instead of layout_type.
86 (layout_classinfo_interfaces): Likewise.
87
88 2016-12-17 Iain Buclaw <ibuclaw@gdcproject.org>
89
90 * d-builtins.cc (build_dtype): Use static create method for allocating
91 frontend types.
92 * d-codegen.cc (declaration_type): Likewise.
93 (type_passed_as): Likewise.
94 (get_libcall): Likewise.
95 * d-lang.cc (d_parse_file): Likewise.
96 * d-objfile.cc (build_simple_function_decl): Likewise.
97 (build_emutls_function): Likewise.
98 * d-todt.cc (StructDeclaration::toDt): Likewise.
99 * typeinfo.cc (TypeInfoVisitor::visit(TypeInfoInterfaceDeclaration)):
100 Likewise.
101
102 2016-12-17 Johannes Pfau <johannespfau@gmail.com>
103
104 * d-decls.cc (copy_struct): Also copy and update TYPE_METHODS.
105 * d-spec.c (lang_specific_driver): Do not link in math, thread and
106 time libraries. Use a spec file instead to do this.
107 (lang_specific_pre_link): Load libgphobos.spec to set up the link
108 dependencies for libgphobos.
109
110 2016-12-13 Iain Buclaw <ibuclaw@gdcproject.org>
111
112 * d-builtins.cc (build_dtype): Cache all allocated frontend types.
113 (builtin_sym): Update constructor.
114 (builtin_converted_decls): Rename to builtin_converted_syms.
115 (d_build_builtins_module): Check if decl set before assigning parent.
116
117 2016-12-13 Iain Buclaw <ibuclaw@gdcproject.org>
118
119 * d-builtins.cc (build_dtype): Set type modifiers on frontend type.
120
121 2016-12-12 Iain Buclaw <ibuclaw@gdcproject.org>
122
123 * d-builtins.cc (build_dtype): Don't set default parameter storage
124 class as const.
125
126 2016-12-12 Iain Buclaw <ibuclaw@gdcproject.org>
127
128 * d-decls.cc (add_moduleinfo_field): New function.
129 (layout_moduleinfo_fields): New function.
130 (get_moduleinfo_decl): Use record type for moduleinfo decl.
131 * d-objfile.cc (build_moduleinfo_symbol): Delay calling
132 get_moduleinfo_decl until after ModuleInfo type is validated.
133 (d_finish_symbol): Remove check for unknown_type_node.
134
135 2016-12-11 Iain Buclaw <ibuclaw@gdcproject.org>
136
137 * d-decls.cc (copy_struct): New function.
138 (layout_classinfo_interfaces): New function.
139 (get_classinfo_decl): Use record type for classinfo decl.
140 * d-codegen.cc (create_field_decl): New function.
141 Use it instead of build_decl when creating a new FIELD_DECL.
142
143 2016-12-11 Iain Buclaw <ibuclaw@gdcproject.org>
144
145 * d-builtins.cc (build_dtype): Don't build generic function types.
146 (d_build_builtins_module): Remove check.
147
148 2016-12-10 Iain Buclaw <ibuclaw@gdcproject.org>
149
150 * d-codegen.cc (build_vindex_ref): Move saving of object to callers.
151 * expr.cc (ExprVisitor::visit(CallExp)): Save object reference before
152 passing to build_vindex_ref.
153 (ExprVisitor::visit(DelegateExp)): Likewise.
154
155 2016-12-07 Iain Buclaw <ibuclaw@gdcproject.org>
156
157 * d-spec.c (lang_specific_driver): Remove error handling.
158 * d-lang.cc (d_parse_file): Don't error twice.
159
160 2016-12-06 Iain Buclaw <ibuclaw@gdcproject.org>
161
162 * d-spec.c (lang_specific_driver): Remove 'added' variable.
163
164 2016-12-04 Iain Buclaw <ibuclaw@gdcproject.org>
165
166 * d-decls.cc (get_symbol_decl): Use needsCodegen to determine whether
167 template instance is extern or not.
168
169 2016-12-02 Iain Buclaw <ibuclaw@gdcproject.org>
170
171 * d-glue.cc (escapePath): Move to dfrontend.
172 (readFile): Likewise.
173 (writeFile): Likewise.
174 (ensurePathToNameExists): Likewise.
175
176 2016-12-01 Iain Buclaw <ibuclaw@gdcproject.org>
177
178 * d-target.cc: Include memmodel.h.
179 * d-attrib.c (d_handle_section_attribute): No longer set
180 user_defined_section_attribute.
181
182 2016-11-25 Iain Buclaw <ibuclaw@gdcproject.org>
183
184 * types.cc (TypeVisitor::visit(Type)): Update.
185
186 2016-11-24 Iain Buclaw <ibuclaw@gdcproject.org>
187
188 * d-codegen.cc (build_struct_literal): Stop after first field
189 assignment in union constructor.
190 (build_class_instance): Skip void initialized fields.
191 * expr.cc (ExprVisitor::visit(StructLiteralExp)): Likewise.
192
193 2016-11-22 Iain Buclaw <ibuclaw@gdcproject.org>
194
195 * d-decls.cc (get_symbol_decl): Don't set alignment if
196 STRUCTALIGN_DEFAULT.
197
198 2016-11-21 Iain Buclaw <ibuclaw@gdcproject.org>
199
200 * d-todt.cc (ClassDeclaration::toDt): Update.
201 (ClassDeclaration::toDt2): Remove function.
202 (TypeSArray::toDtElem): Remove function.
203 (dt_chainon): Remove function.
204 (dt_zeropad): Remove function.
205 (dt_container): Remove function.
206 (dt_container2): Rename to dt_container. All callers updated.
207 * d-objfile.cc (VarDeclaration::toObjFile): Update.
208
209 2016-11-20 Iain Buclaw <ibuclaw@gdcproject.org>
210
211 * d-lang.cc (copy_lang_decl): Rename to d_dup_lang_specific_decl.
212 (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine.
213 * d-decls.cc (make_alias_for_thunk): Call dup_lang_specific_decl.
214 (make_thunk): Likewise.
215
216 2016-11-19 Iain Buclaw <ibuclaw@gdcproject.org>
217
218 * d-codegen.h (FuncFrameInfo): Remove type. All users updated to
219 interface with new frame macro accessors.
220 (build_frame_type): Mark as static.
221 (get_frameinfo): Update to return a tree type.
222 * d-lang.cc (LANG_HOOKS_TREE_SIZE): Redefine.
223 (LANG_HOOKS_PRINT_XNODE): Redefine.
224 (d_tree_size): New function.
225 (d_print_xnode): New function.
226 (d_tree_node_structure): New function.
227 * d-tree.def (FUNCFRAME_INFO): New tree_code.
228 * d-tree.h (tree_frame_info): New type.
229 (FRAMEINFO_CREATES_FRAME): New macro accessor.
230 (FRAMEINFO_STATIC_CHAIN): New macro accessor.
231 (FRAMEINFO_IS_CLOSURE): New macro accessor.
232 (FRAMEINFO_TYPE): New macro accessor.
233 (lang_decl): Replace frame_info field with a tree type.
234 (d_tree_node_structure_enum): New type.
235 (lang_tree_node): Update GTY tags.
236
237 2016-11-19 Iain Buclaw <ibuclaw@gdcproject.org>
238
239 * d-decls.cc (setup_symbol_storage): Remove function.
240 (Dsymbol::toSymbol): Remove function and all overrides. All callers
241 updated to call ...
242 (get_symbol_decl): ... New function.
243
244 2016-11-06 Iain Buclaw <ibuclaw@gdcproject.org>
245
246 * d-lang.cc (output_modules): Remove variable.
247 (output_module): Remove variable.
248 (d_gcc_get_output_module): Remove function. All callers updated to
249 use Module::rootModule.
250 * d-objfile.cc (FuncDeclaration::toObjFile): Mark all functions being
251 constructed here as TREE_STATIC.
252 (output_module_p): Remove function. All callers updated to call
253 Module::isRoot.
254
255 2016-11-05 Iain Buclaw <ibuclaw@gdcproject.org>
256
257 * d-decls.cc (get_template_storage_info): Remove function.
258 (setup_symbol_storage): Use Dsymbol::isInstantiated instead.
259
260 2016-11-05 Iain Buclaw <ibuclaw@gdcproject.org>
261
262 * d-codegen.cc (build_struct_literal): Handle anonymous fields.
263 (build_class_instance): New functions.
264 (find_aggregate_field): Update signature. All callers updated.
265 * d-todt.cc (dt_chainon): Mark as static.
266 (dt_zeropad): Likewise.
267 (dt_container): Likewise.
268 (ClassReferenceExp::toInstanceDt): Remove function.
269 (ClassReferenceExp::toDt2): Remove function.
270
271 2016-11-01 Iain Buclaw <ibuclaw@gdcproject.org>
272
273 * d-tree.h (lang_decl): Remove readonly field.
274 (DECL_LANG_READONLY): Remove macro. All callers updated.
275
276 2016-10-29 Iain Buclaw <ibuclaw@gdcproject.org>
277
278 * d-decls.cc (ClassReferenceExp::toSymbol): Use class record type for
279 static symbol.
280 * d-lang.cc (global_context): New static variable.
281 (global_declarations): New static variable.
282 (d_nametype): Pass built-in types to debug_hooks::type_decl.
283 (d_add_global_declaration): Remove function, update all callers.
284 (get_global_context): New function.
285 (d_pushdecl): Push decls to global, or bindings list here.
286 (StructDeclaration::toObjFile): Send type decl to d_pushdecl.
287 (ClassDeclaration::toObjFile): Likewise.
288 (InterfaceDeclaration::toObjFile): Likewise.
289 (EnumDeclaration::toObjFile): Likewise.
290 (FuncDeclaration::toObjFile): Send finished decl to d_pushdecl.
291 (d_finish_symbol): Likewise.
292 (emit_modref_hooks): Likewise.
293 (d_comdat_linkage): Don't set DECL_COMDAT on non-public decls.
294 (setup_symbol_storage): Don't set DECL_ABSTRACT_P on templates.
295 (d_finish_compilation): Remove check for type decls.
296 (build_type_decl): Don't add to global decl list, just call
297 rest_of_decl_compilation.
298 * expr.cc (ExprVisitor::visit(ArrayLiteralExp)): Send finished decl to
299 d_pushdecl.
300 * toir.cc (IRVisitor::visit(SwitchStatement)): Likewise.
301 (IRVisitor::end_scope): Mark bind expr as having side effects.
302 * typeinfo.cc (TypeInfoVisitor::visit(TypeInfoTupleDeclaration)): Send
303 finished decl to d_pushdecl.
304
305 2016-10-29 Iain Buclaw <ibuclaw@gdcproject.org>
306
307 * d-codegen.cc (layout_aggregate_type): Continue searching based on
308 aggregate members, not just fields.
309 * types.cc (TypeVisitor::visit(TypeEnum)): Use void for opaque enums.
310 (TypeVisitor::visit(TypeStruct)): Don't give opaque structs a size.
311
312 2016-10-27 Iain Buclaw <ibuclaw@gdcproject.org>
313
314 * expr.cc (ExprVisitor::visit(AssignExp)): Don't set TREE_ADDRESSABLE.
315 * d-codegen.cc (build_assign): Handle setting up INIT_EXPR from a
316 value returning via NRVO here instead.
317
318 2016-10-26 Iain Buclaw <ibuclaw@gdcproject.org>
319
320 * d-codegen.cc (d_build_call): Only convert CALL_EXPRs into a
321 TARGET_EXPR if return type is TREE_ADDRESSABLE.
322 (build_assign): Use TARGET_EXPR accessors.
323 (compound_expr): Likewise.
324
325 2016-10-15 Iain Buclaw <ibuclaw@gdcproject.org>
326
327 * d-codegen.h (d_types_same): Return early if types are identical.
328
329 2016-10-09 Iain Buclaw <ibuclaw@gdcproject.org>
330
331 * d-decls.cc (FuncDeclaration::toThunkSymbol): Rename to make_thunk.
332 All callers updated.
333 (finish_thunk): Update signature.
334
335 2016-10-09 Iain Buclaw <ibuclaw@gdcproject.org>
336
337 * d-objfile.h (Thunk): Remove type, move offset field to ...
338 * d-tree.h (lang_decl): ... here. Replace Thunk field with a tree.
339 (THUNK_LANG_OFFSET): New macro accessor.
340 * d-lang.cc (copy_lang_decl): New function.
341 * d-decls.cc (FuncDeclaration::toThunkSymbol): Use new thunk macros.
342
343 2016-10-09 Iain Buclaw <ibuclaw@gdcproject.org>
344
345 * d-decls.cc (finish_thunk): Add assert that current_function_decl is
346 never set when function is called.
347 (DeferredThunk): Remove type.
348 (deferred_thunks): Remove variable.
349 (write_deferred_thunks): Remove function. All callers updated.
350 (use_thunk): Remove function.
351 (FuncDeclaration::toThunkSymbol): Call finish_thunk when done.
352
353 2016-10-08 Iain Buclaw <ibuclaw@gdcproject.org>
354
355 * d-objfile.cc (deferred_thunks): Move to d-decls.cc.
356 (write_deferred_thunks): Likewise.
357 (use_thunk): Likewise. Mark as static.
358 (thunk_labelno): Likewise.
359 (make_alias_for_thunk): Likewise.
360 (finish_thunk): Likewise.
361
362 2016-10-08 Iain Buclaw <ibuclaw@gdcproject.org>
363
364 * d-decls.cc (setup_symbol_storage): Remove unused parameters.
365
366 2016-10-07 Iain Buclaw <ibuclaw@gdcproject.org>
367
368 * d-decls.cc (ClassReferenceExp::toSymbol): Rename to
369 build_new_class_expr. All callers updated.
370 (StructLiteralExp::toSymbol): Remove function. Inline into caller ...
371 * expr.cc (ExprVisitor::visit(AddrExpr)): ... here.
372
373 2016-10-07 Iain Buclaw <ibuclaw@gdcproject.org>
374
375 * d-decls.cc (TypeInfoDeclaration::toSymbol): Rename to
376 get_typeinfo_decl. All callers updated.
377 (TypeInfoDeclVisitor): New visitor helper for get_typeinfo_decl.
378 * d-codegen.cc (get_decl_tree): Add check for building typeinfo decls.
379
380 2016-10-05 Iain Buclaw <ibuclaw@gdcproject.org>
381
382 * d-decls.cc (AggregateDeclaration::toInitializer): Rename to
383 aggregate_initializer. All callers updated.
384 (EnumDeclaration::toInitializer): Rename to enum_initializer.
385 (Module::toSymbol): Rename to get_moduleinfo_decl.
386 (ClassDeclaration::toSymbol): Rename to get_classinfo_decl.
387 (InterfaceDeclaration::toSymbol): Merge into get_classinfo_decl.
388
389 2016-10-03 Iain Buclaw <ibuclaw@gdcproject.org>
390
391 * d-decls.cc (FuncDeclaration::toSymbol): Remove saving of current
392 module decl before calling semantic.
393 (StructLiteralExp::toSymbol): Don't handle sinit.
394 (ClassReferenceExp::toSymbol): Likewise.
395 (AggregateDeclaration::toInitializer): Likewise.
396 (EnumDeclaration::toInitializer): Likewise.
397 * d-glue.cc (toInitializer): Remove function.
398 * d-objfile.cc (FuncDeclaration::toObjFile): Remove saving of current
399 module decl before calling semantic.
400 * expr.cc (ExprVisitor::visit(CallExpr)): Replace accesses of sinit
401 field with useStaticInit.
402 (ExprVisitor::visit(StructLiteralExp)): Likewise.
403
404 2016-10-03 Iain Buclaw <ibuclaw@gdcproject.org>
405
406 * d-decls.cc (ClassDeclaration::toVtblSymbol): Rename to
407 get_vtable_decl. All callers updated.
408
409 2016-10-03 Iain Buclaw <ibuclaw@gdcproject.org>
410
411 * d-objfile.cc (setup_symbol_storage): Move function to ...
412 * d-decls.cc (setup_symbol_storage): ... here. Mark as static.
413 (get_template_storage_info): Likewise.
414
415 2016-10-03 Iain Buclaw <ibuclaw@gdcproject.org>
416
417 * d-codegen.cc (call_by_alias_p): Check whether caller and callee are
418 nested in the same parent function.
419 * expr.cc (ExprVisitor::visit(CallExp)): Set TREE_PUBLIC directly
420 instead of calling setup_symbol_storage.
421
422 2016-10-03 Iain Buclaw <ibuclaw@gdcproject.org>
423
424 * d-objfile.cc (VarDeclaration::toObjFile): Always generate
425 DECL_INITIAL for all kinds of var decls.
426 * d-codegen.cc (build_address): Use the DECL_INITIAL directly if
427 taking the address of a CONST_DECL.
428
429 2016-10-02 Iain Buclaw <ibuclaw@gdcproject.org>
430
431 * d-tree.h (DECL_LANG_TREE): Remove macro. All callers updated.
432
433 2016-10-02 Iain Buclaw <ibuclaw@gdcproject.org>
434
435 * d-objfile.h (Symbol): Remove struct. Update all functions to return
436 a tree instead. Remove all new allocations of Symbol.
437 * d-tree.h (DECL_LANG_READONLY): Update accessor.
438 (DECL_LANG_INITIAL): Likewise.
439 (DECL_LANG_TREE): Likewise.
440 (SET_DECL_LANG_FRAME_FIELD): Likewise.
441 (DECL_LANG_FRAME_FIELD): Likewise.
442 (SET_DECL_LANG_NRVO): Likewise.
443 (DECL_LANG_NRVO): Likewise.
444 (DECL_LANG_THUNKS): Likewise.
445 (DECL_LANG_FRAMEINFO): Likewise.
446
447 2016-10-01 Iain Buclaw <ibuclaw@gdcproject.org>
448
449 * d-objfile.h (Symbol): Remove symbol identifier field.
450 * d-tree.h (DECL_LANG_IDENTIFIER): Remove macro. Update callers to
451 instead use DECL_ASSEMBLER_NAME.
452 (DECL_LANG_PRETTY_NAME): Remove macro.
453
454 2016-09-26 Johannes Pfau <johannespfau@gmail.com>
455
456 * d-objfile.cc (d_finish_function): Handle template mixins (issue 231).
457
458 2016-09-25 Iain Buclaw <ibuclaw@gdcproject.org>
459
460 * d-decls.cc (Dsymbol::toSymbolX): Remove function, update all callers
461 to use ...
462 (make_internal_name): ... New function.
463 * d-objfile.h (Symbol): Replace char* fields with tree.
464 * d-tree.h (lang_identifier): Add pretty_ident field.
465 (IDENTIFIER_PRETTY_NAME): New macro accessor.
466 (DECL_LANG_PRETTY_NAME): Update to use IDENTIFIER_PRETTY_NAME.
467
468 2016-09-19 Iain Buclaw <ibuclaw@gdcproject.org>
469
470 * d-objfile.h (Symbol): Move declaration-specific fields to ...
471 * d-tree.h (lang_decl): ... here.
472 (DECL_LANG_READONLY): Update to reference lang_decl field.
473 (DECL_LANG_INITIAL): Likewise.
474 (DECL_LANG_FRAME_FIELD): Likewise.
475 (DECL_LANG_NRVO): Likewise.
476 (DECL_LANG_THUNKS): Likewise.
477 (DECL_LANG_FRAMEINFO): Likewise.
478 (SET_DECL_LANG_FRAME_FIELD): New setter macro, update all callers.
479 (SET_DECL_LANG_NRVO): Likewise.
480
481 2016-09-19 Iain Buclaw <ibuclaw@gdcproject.org>
482
483 * d-builtins.cc (d_build_builtins_module): Set DECL_LANG_SPECIFIC
484 before using any DECL_LANG accessor macros.
485 (maybe_set_builtin_1): Likewise.
486 * d-codegen.cc (maybe_set_intrinsic): Likewise.
487 (layout_aggregate_members): Likewise.
488 d-decls.cc (VarDeclaration::toSymbol): Likewise.
489 (FuncDeclaration::toThunkSymbol): Likewise.
490 (ClassDeclaration::toSymbol): Likewise.
491 (InterfaceDeclaration::toSymbol): Likewise.
492 (Module::toSymbol): Likewise.
493 (StructLiteralExp::toSymbol): Likewise.
494 (ClassReferenceExp::toSymbol): Likewise.
495 (ClassDeclaration::toVtblSymbol): Likewise.
496 (AggregateDeclaration::toInitializer): Likewise.
497 (EnumDeclaration::toInitializer): Likewise.
498
499 2016-09-19 Iain Buclaw <ibuclaw@gdcproject.org>
500
501 * d-tree.h (DECL_LANG_IDENTIFIER): New macro accessor, use instead of
502 direct field accesses.
503 (DECL_LANG_PRETTY_NAME): Likewise.
504 (DECL_LANG_READONLY): Likewise.
505 (DECL_LANG_INITIAL): Likewise.
506 (DECL_LANG_TREE): Likewise.
507 (DECL_LANG_FRAME_FIELD): Likewise.
508 (DECL_LANG_NRVO): Likewise.
509 (DECL_LANG_THUNKS): Likewise.
510 (DECL_LANG_FRAMEINFO): Likewise.
511
512 2016-09-18 Iain Buclaw <ibuclaw@gdcproject.org>
513
514 * imports.cc (ImportVisitor::visit(ScopeDsymbol)): New visit method.
515
516 2016-09-17 Iain Buclaw <ibuclaw@gdcproject.org>
517
518 * d-todt.cc (ArrayInitializer::toDt): Update to use build_expr.
519 * d-codegen.cc (d_array_value): Don't override default const and
520 static bits for array constructors.
521
522 2016-09-16 Iain Buclaw <ibuclaw@gdcproject.org>
523
524 * d-codegen.cc (lower_struct_comparison): Don't compare vectors in the
525 same way as integers.
526
527 2016-09-11 Iain Buclaw <ibuclaw@gdcproject.org>
528
529 * d-todt.cc (Type::toDt): Remove function, inline into callers.
530 (TypeVector::toDt): Likewise.
531 (TypeSArray::toDt): Likewise.
532 (TypeStruct::toDt): Likewise.
533
534 2016-09-11 Iain Buclaw <ibuclaw@gdcproject.org>
535
536 * d-decls.cc (FuncDeclaration::toSymbol): Save current module decl
537 before calling function semantic.
538 * d-objfile.cc (FuncDeclaration::toObjFile): Likewise.
539
540 2016-09-11 Iain Buclaw <ibuclaw@gdcproject.org>
541
542 * types.cc: Document and reformat file.
543
544 2016-09-10 Johannes Pfau <johannespfau@gmail.com>
545
546 * d-objfile.cc (setup_symbol_storage): Setup TREE_PUBLIC before
547 calling decl_default_tls_model.
548 * d-typeinfo.cc (TypeInfoVisitor::find_field): Move method...
549 * d-codegen.cc (find_aggregate_field): here.
550 * d-objfile.cc (build_simple_function): Extract some code into new
551 function.
552 (build_simple_function_decl): Extracted from build_simple_function.
553 * d-objfile.cc (build_moduleinfo): Split into emit_moduleinfo_hooks
554 and emit_modref_hooks.
555 (build_dso_registry_var): New function.
556 (emit_dso_registry_cdtor): Likewise.
557 (emit_dso_registry_helpers): Likewise.
558 (emit_dso_registry_hooks): Likewise.
559 (emit_moduleinfo_hooks): Only emit hooks if required druntime functions
560 are available.
561 * d-objfile.cc (Module::genmoduleinfo): Rename to
562 build_moduleinfo_symbol.
563 (emit_moduleinfo_hooks): rename to Module::genmoduleinfo.
564 (Module::genmoduleinfo): only call build_moduleinfo_symbol when
565 emitting module info registry code.
566 * d-spec.c (lang_specific_driver): Add -shared-libphobos option,
567 default to static libphobos.
568 * d-lang.opt: Likewise.
569 * d-spec.c: Rename libgphobos2 to libgphobos.
570
571 2016-07-11 Iain Buclaw <ibuclaw@gdcproject.org>
572
573 * d-codegen.cc (get_frameinfo): Use hasNestedFrameRefs to determine
574 whether a frame should be created.
575
576 2016-07-02 Iain Buclaw <ibuclaw@gdcproject.org>
577
578 * d-objfile.cc (FuncDeclaration::toObjFile): Always convert the
579 DECL_RESULT of NRVO-capable functions into reference decls.
580
581 2016-06-21 Iain Buclaw <ibuclaw@gdcproject.org>
582
583 * d-attribs.c (handle_nonnull_attribute): Accept the nonnull
584 attribute in type-generic builtins.
585 * d-codegen.cc (d_build_call): Check AGGREGATE_TYPE_P before testing
586 for aggregate_value_p.
587
588 2016-06-20 Johannes Pfau <johannespfau@gmail.com>
589
590 * d-lang.cc (d_handle_option): Add new -ftransition=dip25 and
591 -fmax-error-messages switches.
592 * lang.opt: Likewise.
593
594 2016-06-19 Iain Buclaw <ibuclaw@gdcproject.org>
595
596 * d-codegen.cc (get_decl_tree): Remove assert for RESULT_DECL.
597 (convert_for_argument): Handle lazy arguments early.
598 (argument_reference_p): Handle types marked TREE_ADDRESSABLE.
599 (lvalue_p): Add case for TARGET_EXPR.
600 (d_mark_addressable): Likewise.
601 (build_assign): Likewise.
602 (compound_expr): Likewise.
603 (build_target_expr): New function.
604 (d_build_call): Always set CALL_EXPR_RETURN_SLOT_OPT for all calls
605 that return an aggregate in memory.
606 * d-decls.cc (VarDeclaration::toSymbol): Handle reference parameters.
607 * d-lang.cc (d_gimplify_expr): Handle taking address of constructor.
608 * d-objfile.cc (FuncDeclaration::toObjFile): Handle reference return.
609 * expr.cc (ExprVisitor::visit(AssignExp)): Mark LHS as addressable if
610 RHS assignment is a returned aggregate.
611 * types.cc (TypeVisitor::visit(TypeStruct)): Mark the RECORD_TYPE of
612 non-trivial structs as TREE_ADDRESSABLE.
613 (TypeVisitor::visit(TypeClass)): Mark all classes as TREE_ADDRESSABLE.
614 (TypeVisitor::visit(TypeFunction)): Don't set TREE_ADDRESSABLE.
615 (TypeVisitor::visit(TypeDelegate)): Likewise.
616
617 2016-06-19 Iain Buclaw <ibuclaw@gdcproject.org>
618
619 * d-codegen.cc (lvalue_p): Add more cases to look for.
620 (build_address): Mark expression as addressable after stabilizing.
621 (d_mark_addressable): Remove special cases.
622 (d_mark_used): Add cases for other kinds of DECLs.
623 (build_struct_comparison): Stabilize before saving.
624 (modify_expr): Remove overload. Updated all callers.
625 (build_vinit): Remove function. Updated all callers to use ...
626 (build_assign): ... New function.
627 (lvalue_p): Remove tests in default case.
628 * expr.cc (build_expr_dtor): Rewrite assignments to elide a temporary.
629
630 2016-06-16 Iain Buclaw <ibuclaw@gdcproject.org>
631
632 * d-codegen.cc (make_temp): Rename to d_save_expr.
633 (maybe_make_temp): Remove function.
634 Updated all callers to use d_save_expr().
635 (vcompound_expr): Remove function.
636 Updated all callers to use compound_expr().
637 (maybe_compound_expr): Likewise.
638 (maybe_vcompound_expr): Likewise.
639 (vmodify_expr): Remove function.
640 Updated all callers to use modify_expr().
641 (lvalue_p): New function.
642
643 2016-06-15 Iain Buclaw <ibuclaw@gdcproject.org>
644
645 * d-codegen.cc (add_stmt): Don't add statements without side effects.
646 Push each COMPOUND_EXPR as a separate statement.
647 (build_local_temp): Use input_location.
648 (create_temporary_var): Likewise.
649 (d_has_side_effects): Remove function.
650 Updated all callers to use TREE_SIDE_EFFECTS.
651 (stabilize_expr): New function.
652 Updated all routines that check for COMPOUND_EXPR to use it.
653 * expr.cc (ExprVisitor::visit(EqualExp)): Use maybe_make_temp to save
654 expressions. Use build_boolop for constructed conditions.
655 (ExprVisitor::visit(CatAssignExp)): Stabilize RHS before assignment.
656 (ExprVisitor::visit(NewExp)): Don't always create SAVE_EXPR.
657 (ExprVisitor::visit(AssocArrayLiteralExp)): Likewise.
658 (ExprVisitor::visit(ArrayLiteralExp)): Evaluate elements before
659 appending to constructor fields.
660 (ExprVisitor::visit(StructLiteralExp)): Likewise.
661
662 2016-06-12 Iain Buclaw <ibuclaw@gdcproject.org>
663
664 * d-convert.cc (d_build_truthvalue_op): Fold truthvalue operation.
665 (d_truthvalue_conversion): Use zero constant of expression type.
666
667 2016-06-09 Iain Buclaw <ibuclaw@gdcproject.org>
668
669 * d-codegen.cc (build_address): Handle ERROR_MARK and COMPOUND_EXPR.
670 (build_nop): Likewise.
671 (indirect_ref): Likewise.
672 (build_deref): Likewise.
673 (d_build_call): Only create temporaries if more than one argument has
674 side effects.
675 * expr.cc (get_compound_value): Remove function.
676 (build_expr_dtor): Wrap cleanups in a TRY_FINALLY_EXPR only if the
677 expression has side effects.
678
679 2016-06-08 Iain Buclaw <ibuclaw@gdcproject.org>
680
681 * Make-lang.in (D_GLUE_OBJS): Remove d-typinf.o, add typeinfo.o.
682 * d-codegen.cc (build_typeinfo): Move to ...
683 * typeinfo.cc: ... here. New file.
684 * d-objfile.cc (TypeInfoDeclaration::toObjFile): Use layout_typeinfo.
685 * d-todt.cc (verify_structsize): Remove function.
686 (TypeInfoDeclaration::toDt): Remove function and overrides.
687 * d-typinf.cc: Remove file. Contents moved to typeinfo.cc.
688 * expr.cc (ExprVisitor::visit(DeleteExp)): Use build_typeinfo.
689 (ExprVisitor::visit(NewExp)): Likewise.
690
691 2016-06-08 Iain Buclaw <ibuclaw@gdcproject.org>
692
693 * dfrontend: Update to D front-end version 2.068.
694 * d-codegen.cc (insert_type_modifiers): Don't build TYPE_QUAL_VOLATILE
695 types. Set TYPE_SHARED instead.
696 (insert_aggregate_field): Propagate TYPE_SHARED to TREE_ADDRESSABLE.
697 (array_bounds_check): Use BOUNDSCHECK interface.
698 * d-lang.cc (d_init_options): Likewise.
699 (d_init): Likewise.
700 (d_handle_option): Likewise.
701 (d_post_options): Likewise.
702 * d-decls.cc (VarDeclaration::toSymbol): Propagate TYPE_SHARED_to
703 TREE_ADDRESSABLE.
704 * d-objfile.cc (ClassDeclaration::toObjFile): Make overload shadowing
705 an error. Remove call to _d_hidden_func.
706 (TypeInfoDeclaration::toObjFile): Updated template emission rules.
707 (FuncDeclaration::toObjFile): Likewise.
708 * d-port.cc (Port::readwordLE): New function.
709 (Port::readwordBE): New function.
710 (Port::readlongLE): New function.
711 (Port::readlongBE): New function.
712 * d-todt.cc (dt_container2): Handle error_mark_node.
713 (dt_container): Likewise.
714 (TypeInfoStructDeclaration::toDt): Updated template emission rules.
715 * d-typinf.cc (genTypeInfo): Likewise.
716 (getTypeInfo): Remove function.
717 (getTypeInfoType): New function.
718 (isSpeculativeType): New function.
719 * d-tree.h (TYPE_SHARED): New macro.
720 * expr.cc (ExprVisitor::visit(CondExp)): Don't generate dtors in
721 condition expression.
722 (ExprVisitor::visit(AssignExp)): Update for frontend changes.
723 (ExprVisitor::visit(DeleteExp)): Likewise.
724 (ExprVisitor::visit(CallExp)): Likewise.
725 (ExprVisitor::visit(DelegateExp)): Likewise.
726 (ExprVisitor::visit(TypeidExp)): New function.
727 * lang.opt (bounds_check_set_manually): Remove variable.
728 (ftransition=complex): New option.
729 * runtime.def (HIDDEN_FUNC): Remove runtime function.
730
731 2016-06-07 Iain Buclaw <ibuclaw@gdcproject.org>
732
733 * d-codegen.cc (build_alignment_field): New function.
734 (build_struct_literal): Update signature, updated all callers.
735 Add anonymous fields to fill alignment holes in constructor.
736 (fill_alignment_field): Remove function.
737 (fill_alignment_holes): Remove function.
738 (finish_aggregate_type): Don't add anonymous fields.
739
740 2016-06-05 Iain Buclaw <ibuclaw@gdcproject.org>
741
742 * d-codegen.cc (d_build_call): Separate parameter to pass from it's
743 construction expression.
744 * expr.cc (build_dtor_list): New function.
745 (get_compound_value): New function.
746 (build_expr_dtor): Update to use helper functions.
747 (build_return_dtor): New function.
748 * toir.cc (IRVisitor::visit(ReturnStatement)): Use it.
749
750 2016-06-04 Iain Buclaw <ibuclaw@gdcproject.org>
751
752 * d-codegen.cc (build_deref): Handle ERROR_MARK nodes early.
753 (build_array_index): Likewise.
754
755 2016-05-29 Johannes Pfau <johannespfau@gmail.com>
756
757 * toir.cc (IRVisitor::visit(SwitchStatement)): Set correct type for the
758 string table for switch(string) statements.
759
760 2016-05-24 Iain Buclaw <ibuclaw@gdcproject.org>
761
762 * d-codegen.cc (convert_expr): Return empty constructor for null to
763 associative array conversions.
764 * expr.cc (ExprVisitor::visit(NullExp)): Likewise.
765
766 2016-05-21 Iain Buclaw <ibuclaw@gdcproject.org>
767
768 * d-codegen.cc (build_struct_literal): Don't set TREE_STATIC.
769 (build_boolop): Remove side effects from aggregate types only.
770 * expr.cc (ExprVisitor::visit(ArrayLiteralExp)): Don't check
771 initializer_constant_valid_p until after constructor is built.
772 (ExprVisitor::visit(StructLiteralExp)): Likewise.
773
774 2016-05-16 Iain Buclaw <ibuclaw@gdcproject.org>
775
776 * expr.cc (ExprVisitor::visit(AssignExp)): Build the rhs constructor
777 before the lhs declaration.
778 (ExprVisitor::visit(DeclarationExp)): Compile the declaration and
779 initializer before pushing it to vars_in_scope.
780 (build_expr_dtor): Compound all dtors in reverse.
781
782 2016-05-16 Johannes Pfau <johannespfau@gmail.com>
783
784 * expr.cc (ExprVisitor::visit(IdentityExp*)): Remove side-effects
785 before comparing two floating point types.
786 * d-codegen.cc (build_struct_comparison): Remove side-effects
787 before comparing two values.
788 (build_boolop): Likewise.
789
790 2016-05-15 Iain Buclaw <ibuclaw@gdcproject.org>
791
792 * d-todt.cc (Expression::toDt): Remove function and all overrides.
793 Update all callers to use build_expr.
794 * expr.cc (ExprVisitor::visit(SymOffExp)): Move check for non-constant
795 expressions in static initializer data to ...
796 (build_expr): ... here.
797 * toir.cc (IRVisitor::visit(SwitchStatement)): Build array of indexes
798 directly using build_artificial_decl.
799
800 2016-05-15 Iain Buclaw <ibuclaw@gdcproject.org>
801
802 * expr.cc (ExprVisitor::visit(IdentityExp*)): Remove side-effects
803 before comparing two dynamic arrays.
804
805 2016-05-14 Iain Buclaw <ibuclaw@gdcproject.org>
806
807 * d-codegen.cc (get_decl_tree): First check if cfun is set.
808 * d-todt.cc (StructLiteralExp::toDt): Update call to build_expr.
809 (SymOffExp::toDt): Likewise.
810 (VarExp::toDt): Likewise.
811 (FuncExp::toDt): Likewise.
812 (VectorExp::toDt): Likewise.
813 * expr.cc (ExprVisitor::visit(SymbolExp)): Remove function.
814 (ExprVisitor::visit(SymOffExp)): New function.
815 (ExprVisitor::visit(VarExp)): New function.
816 (ExprVisitor::visit(StructLiteralExp)): Don't return static
817 initializer symbol if constant literal requested.
818
819 2016-05-13 Iain Buclaw <ibuclaw@gdcproject.org>
820
821 * d-codegen.cc (build_struct_literal): Maybe set TREE_CONSTANT or
822 TREE_STATIC on the returned constructor.
823 Allow building struct literals with initializer list out of order.
824 Add check and error when initializer overlaps previous field.
825 Don't explicitly set empty initializers for anonymous aggregates or
826 artificial fields.
827
828 2016-05-12 Iain Buclaw <ibuclaw@gdcproject.org>
829
830 * d-codegen.cc (build_array_from_val): New function.
831 * expr.cc (ExprVisitor::visit(StructLiteralExp)): Use it.
832
833 2016-05-11 Iain Buclaw <ibuclaw@gdcproject.org>
834
835 * d-codegen.cc (convert_expr): Use build_nop to cast between two
836 static arrays of the same size.
837 * d-todt.cc (IntegerExp::toDt): Update call to build_expr.
838 (RealExp::toDt): Likewise.
839 (ComplexExp::toDt): Likewise.
840 (StringExp::toDt): Likewise.
841 (NullExp::toDt): Use build_expr to generate initializer.
842 (ArrayLiteralExp::toDt): Likewise.
843 (CastExp::toDt): Likewise.
844 (ClassReferenceExp::toDt): Likewise.
845 (ClassReferenceExp::toDtI): Remove function.
846 * expr.cc (ExprVisitor::visit(CastExp)): Forward constp to the next
847 leaf expression in the tree.
848 (ExprVisitor::visit(AddrExp)): Likewise.
849 (ExprVisitor::visit(FuncExp)): Likewise.
850 (ExprVisitor::visit(ArrayLiteralExp)): Likewise.
851 (ExprVisitor::visit(StructLiteralExp)): Likewise.
852 (ExprVisitor::visit(VectorExp)): Likewise.
853 (ExprVisitor::visit(ClassReferenceExp)): Adjust reference for constp.
854
855 2016-05-09 Iain Buclaw <ibuclaw@gdcproject.org>
856
857 * d-objfile.cc (get_unique_name): Remove function.
858 (build_artificial_decl): New function.
859 (d_finish_symbol): Use build_artificial_decl.
860 (build_moduleinfo): Likewise.
861 * d-decls.cc (StructLiteralExp::toSymbol): Likewise.
862 (ClassReferenceExp::toSymbol): Likewise.
863
864 2016-05-07 Iain Buclaw <ibuclaw@gdcproject.org>
865
866 * expr.cc (ExprVisitor::visit(BinExp)): New function.
867 (ExprVisitor::visit(XorExp)): Remove function.
868 (ExprVisitor::visit(OrExp)): Likewise.
869 (ExprVisitor::visit(AndExp)): Likewise.
870 (ExprVisitor::visit(UshrExp)): Likewise.
871 (ExprVisitor::visit(ShrExp)): Likewise.
872 (ExprVisitor::visit(ShlExp)): Likewise.
873 (ExprVisitor::visit(ModExp)): Likewise.
874 (ExprVisitor::visit(DivExp)): Likewise.
875 (ExprVisitor::visit(MulExp)): Likewise.
876 (ExprVisitor::visit(MinExp)): Likewise.
877 (ExprVisitor::visit(AddExp)): Likewise.
878 (ExprVisitor::visit(BinAssignExp)): New function.
879 (ExprVisitor::visit(XorAssignExp)): Remove function.
880 (ExprVisitor::visit(OrAssignExp)): Likewise.
881 (ExprVisitor::visit(AndAssignExp)): Likewise.
882 (ExprVisitor::visit(ShrAssignExp)): Likewise.
883 (ExprVisitor::visit(ShlAssignExp)): Likewise.
884 (ExprVisitor::visit(ModAssignExp)): Likewise.
885 (ExprVisitor::visit(DivAssignExp)): Likewise.
886 (ExprVisitor::visit(MulAssignExp)): Likewise.
887 (ExprVisitor::visit(PowAssignExp)): Likewise.
888 (ExprVisitor::visit(MinAssignExp)): Likewise.
889 (ExprVisitor::visit(AddAssignExp)): Likewise.
890
891 2016-05-06 Iain Buclaw <ibuclaw@gdcproject.org>
892
893 * expr.cc (ExprVisitor::ExprVisitor): Update signature.
894 (ExprVisitor::visit(AddrExp)): Handle constant expressions.
895 (ExprVisitor::visit(FuncExp)): Likewise.
896 (ExprVisitor::visit(ComplexExp)): Likewise.
897 (ExprVisitor::visit(StringExp)): Likewise.
898 (ExprVisitor::visit(ArrayLiteralExp)): Likewise.
899 (ExprVisitor::visit(StructLiteralExp)): Likewise.
900 (ExprVisitor::visit(NullExp)): Likewise.
901 (ExprVisitor::visit(ClassReferenceExp)): Likewise.
902 (build_expr): Update signature.
903
904 2016-05-05 Iain Buclaw <ibuclaw@gdcproject.org>
905
906 * Make-lang.in (D_GLUE_OBJS): Add d/expr.o.
907 Remove d/d-elem.o
908 * d-codegen.cc (size_mult_expr): New function.
909 * d-tree.h (build_expr): New function, update all callers to toElem.
910 (build_expr_dtor): New function, update all callers to toElemDtor.
911 * expr.cc: New file.
912 * d-elem.cc: Remove file.
913
914 2016-05-03 Iain Buclaw <ibuclaw@gdcproject.org>
915
916 * d-target.cc (Target::init): Target::realpad value should be size
917 minus precision.
918
919 2016-04-29 Iain Buclaw <ibuclaw@gdcproject.org>
920
921 * d-codegen.cc (finish_aggregate_type): Use SET_TYPE_ALIGN.
922 * types.cc (TypeVisitor::visit(TypeStruct)): Likewise.
923 * d-decls.cc (ClassDeclaration::toVtblSymbol): Use SET_DECL_ALIGN.
924 * d-objfile.cc (d_finish_symbol): Likewise.
925 * d-target.cc (Target::fieldalign): Likewise.
926
927 2016-04-29 Iain Buclaw <ibuclaw@gdcproject.org>
928
929 * d-todt.cc (TypeSArray::toDtElem): Remove special handling for
930 arrays of vectors.
931
932 2016-04-23 Iain Buclaw <ibuclaw@gdcproject.org>
933
934 * d-builtins.cc (build_dtype): Make function static.
935 * d-lang.cc (d_init_exceptions): Remove function.
936 * d-codegen.h: Move visitor declarations to ...
937 * d-tree.h: ... here.
938 (lang_decl): Remove `d_` prefix from fields.
939 (lang_type): Likewise.
940 * d-lang.cc (build_d_type_lang_specific): Rename to build_lang_type.
941 (build_d_decl_lang_specific): Rename to build_lang_decl.
942 * imports.cc: Update includes.
943
944 2016-03-29 Johannes Pfau <johannespfau@gmail.com>
945
946 * d-objfile.cc (d_comdat_linkage): Rewrite template duplicate
947 handling to generate only one backend tree for all duplicates.
948 (FuncDeclaration::toObjFile): Likewise.
949 (VarDeclaration::toObjFile): Likewise.
950 * d-decls.cc (FuncDeclaration::toSymbol): Likewise.
951 (VarDeclaration::toSymbol): Likewise.
952 * d-objfile.cc (get_template_storage_info): Extract function from
953 setup_symbol_storage.
954 (setup_symbol_storage): Likewise.
955 * d-tree.h (lang_identifier): Add field for Dsymbol.
956 (IDENTIFIER_LANG_SPECIFIC): New macro.
957 (IDENTIFIER_DSYMBOL): Likewise.
958
959 2016-03-29 Iain Buclaw <ibuclaw@gdcproject.org>
960
961 * d-codegen.cc (fill_alignment_field): Call layout_decl on field.
962 (finish_aggregate_type): Add assertion that TYPE_MODE is equal.
963
964 2016-03-29 Iain Buclaw <ibuclaw@gdcproject.org>
965
966 * d-codegen.cc (convert_expr): Replace call build_integer_cst with
967 size_int.
968 (convert_for_assignment): Likewise.
969 (build_struct_comparison): Likewise.
970 (d_assert_call): Likewise.
971 * d-elem.cc (IdentityExp::toElem): Likewise.
972 (AssignExp::toElem): Likewise.
973 (IndexExp::toElem): Likewise.
974 (SymbolExp::toElem): Likewise.
975 (NewExp::toElem): Likewise.
976 (ArrayLiteralExp::toElem): Likewise.
977 (AssocArrayLiteralExp::toElem): Likewise.
978
979 2016-03-28 Iain Buclaw <ibuclaw@gdcproject.org>
980
981 * d-tree.h (CLASS_TYPE_P): New macro.
982 * d-codegen.cc (build_struct_literal): Check RECORD_OR_UNION_TYPE_P
983 before testing ANON_AGGR_TYPE_P.
984 (fill_alignment_field): New function.
985 (fill_alignment_holes): New function.
986 (finish_aggregate_type): Call fill_alignment_holes before computing
987 backend type mode.
988
989 2016-03-28 Iain Buclaw <ibuclaw@gdcproject.org>
990
991 * d-tree.h (D_METHOD_CALL_EXPR): Removed `D_' prefix from macro,
992 updated all callers.
993 (D_TYPE_IMAGINARY_FLOAT): Likewise.
994 (D_LABEL_VARIABLE_CASE): Likewise.
995 * d-codegen.cc (build_delegate_cst): Always return valid constructor.
996 (get_object_method): Remove function.
997 (build_vindex_ref): New function.
998 * d-elem.cc (FuncExp::toElem): Use the real function pointer type when
999 converting to delegate.
1000 (CallExp::toElem): Handle setting up virtual functions directly.
1001 (DelegateExp::toElem): Likewise.
1002 (DotVarExp::toElem): Remove handling of virtual functions.
1003
1004 2016-03-28 Iain Buclaw <ibuclaw@gdcproject.org>
1005
1006 * d-codegen.h (lang_dtype): Remove function.
1007 (lang_ddecl): Remove function.
1008 * d-tree.h (TYPE_LANG_FRONTEND): New macro, replace all uses of
1009 lang_dtype function.
1010 (DECL_LANG_FRONTEND): New macro.
1011 * d-attribs.c: Update includes.
1012 * d-builtins.cc: Likewise.
1013 * d-codegen.cc: Likewise.
1014 * d-incpath.cc: Likewise.
1015 * d-lang.cc: Likewise.
1016 * d-objfile.cc: Likewise.
1017
1018 2016-03-27 Iain Buclaw <ibuclaw@gdcproject.org>
1019
1020 * d-codegen.h (function_type_p): Remove function.
1021 * d-codegen.cc (d_build_call): Use FUNC_OR_METHOD_P macro.
1022 (build_bounds_condition): Update signature.
1023 (d_assert_call): Likewise.
1024 (insert_aggregate_field): Likewise.
1025 * d-objfile.cc (get_linemap): Likewise.
1026 * d-lang.h: Remove file, updated all includes. Moved forward
1027 declarations of types and functions to ...
1028 * d-tree.h: ... here.
1029
1030 2016-03-20 Iain Buclaw <ibuclaw@gdcproject.org>
1031
1032 * d-codegen.cc (d_checked_index): Remove function.
1033 (d_bounds_condition): Remove function.
1034 (build_bounds_condition): New function.
1035 * d-elem.cc (IndexExp::toElem): Use build_bounds_condition.
1036 (SliceExp::toElem): Likewise.
1037 (EqualExp::toElem): Convert expressions to dynamic arrays when
1038 inlining comparison. Don't pass zero length arrays to memcmp.
1039
1040 2016-03-19 Iain Buclaw <ibuclaw@gdcproject.org>
1041
1042 * d-codegen.cc (d_array_convert): New function overload.
1043 * d-elem.cc (CatExp::toElem): Call new runtime function _d_arraycatnTX
1044 when flattening multiple concatenations.
1045 (NewExp::toElem): Update call construction for new signatures of
1046 runtime functions _d_newarraymTX and _d_newarraymiTX.
1047 * runtime.def (NEWARRAYMTX): Update signature.
1048 (NEWARRAYMITX): Likewise,
1049 (ARRAYCATNT): Remove runtime function.
1050 (ARRAYCATNTX): New runtime function.
1051
1052 2016-03-07 Iain Buclaw <ibuclaw@gdcproject.org>
1053
1054 * imports.cc (ImportVisitor::visit(Declaration)): Don't assume toSymbol
1055 method will cache it's result.
1056
1057 2016-03-06 Iain Buclaw <ibuclaw@gdcproject.org>
1058
1059 * dfrontend: Update root library to 2.068.
1060 * Make-lang.in (D_DMD_OBJS): Add newdelete.o
1061 * d-target.cc (Target::classinfosize): New variable, replaces all uses
1062 of global CLASSINFO_SIZE.
1063 (Target::init): Initialize it.
1064 * d-decls.cc (ClassInfoDeclaration::toSymbol): Remove function.
1065
1066 2016-03-05 Iain Buclaw <ibuclaw@gdcproject.org>
1067
1068 * dfrontend: Update to D front-end version 2.067.
1069 * Make-lang.in (D_DMD_OBJS): Add new frontend sources.
1070 * d-builtins.cc (d_build_builtins_module): Update signature.
1071 (maybe_set_builtin): Rename to d_maybe_set_builtin, update signature.
1072 (d_gcc_magic_module): Remove function.
1073 * d-codegen.cc (expand_volatile_load): New function.
1074 (expand_volatile_store): New function.
1075 (expand_intrinsic): Handle volatileLoad and volatileStore intrinsics.
1076 * d-decls.cc (Module::toModuleAssert): Remove function.
1077 (Module::toModuleUnittest): Remove function.
1078 (Module::toModuleArray): Remove function.
1079 (TypeAArray::aaGetSymbol): Remove function.
1080 * d-elem.cc (AssignExp::toElem): Call _d_arrayassign_{l,r} when
1081 generating dynamic array assignment.
1082 (IndexExp::toElem): Call _aaGetY when indexing an associative array.
1083 (SliceExp::toElem): Use known CTFE result to check whether bounds
1084 checks are necessary.
1085 (DeleteExp::toElem): Call _d_delstruct when deleting a struct pointer.
1086 (Expression::toElemDtor): Don't run cleanup of temporary if it's
1087 constructor thrown an exception.
1088 (NewExp::toElem): Handle special construction of new() arguments.
1089 * d-glue.cc (Loc::Loc): Update signature.
1090 (error): Likewise.
1091 (toInitializer): New function.
1092 * d-lang.cc (d_handle_option): Replace deprecated handlers.
1093 (d_post_options): Set flag_max_errors.
1094 (d_parse_file): Process any modules marked as builtin.
1095 * d-objfile.cc (ClassDeclaration::toObjFile): Don't write out ctors
1096 in the vtable marked @disable.
1097 * d-target.cc (Target::loadModule): New function.
1098 (Target::checkVectorType): New function.
1099 * d-specs.c (lang_specific_driver): Handle -v option.
1100 * lang-specs.h: Pass -v option to to frontend.
1101
1102 2016-03-04 Iain Buclaw <ibuclaw@gdcproject.org>
1103
1104 * imports.cc: New file.
1105 * d-decls.cc (Dsymbol::toImport): Remove function, update all callers
1106 to use build_import_decl.
1107
1108 2016-03-03 Iain Buclaw <ibuclaw@gdcproject.org>
1109
1110 * d-objfile.cc (gcc_attribute_p): New function.
1111 (output_declaration_p): Inline into FuncDeclaration::ObjFile.
1112 (unnest_function): Likewise.
1113 (FuncDeclaration::toObjFile): Remove named parameter, update all
1114 callers to ignore it.
1115 (d_comdat_group): Use DECL_ASSEMBLER_NAME for the comdat group.
1116 (d_comdat_linkage): Catch duplicate instantiations of templates, put
1117 them in the same comdat group.
1118 (setup_symbol_storage): Mark templates not to be written as abstract.
1119 (d_finish_function): Don't send DECL_ABSTRACT_P functions to backend.
1120 (d_finish_compilation): Mark all symbols as needed.
1121
1122 * d-objfile.cc: Remove redundant bool parameter from all lowering
1123 routines for symbols, update all callers.
1124
1125 2016-02-22 Eugene Wissner <belka@caraus.de>
1126
1127 * d-lang.cc (d_init): Remove short_double parameter from
1128 build_common_tree_nodes.
1129
1130 2016-02-20 Iain Buclaw <ibuclaw@gdcproject.org>
1131
1132 * intrinsics.def: Split signature macros into three groups.
1133 Attributes, types, and helper generators.
1134 * d-elem.cc (needsPostblit): Change signature to return boolean,
1135 updated all callers.
1136 (AssignExp::toElem): Don't assign destination to a temporary in
1137 arraycopy call.
1138 * toir.cc (IRVisior::visit(ThrowStatement)): Use NOP_EXPR cast to
1139 convert thrown exception to Object.
1140 (IRVisitor::visit(TryCatchStatement)): Use NOP_EXPR cast to convert
1141 caught Object to thrown exception.
1142 * d-codegen.cc (void_okay_p): Lazily build the convert to type.
1143 * d-lang.cc (parse_int): Remove function.
1144 (d_handle_option): Use integral_argument to parse numbers.
1145
1146 * d-codegen.cc (lower_struct_comparison): Built custom type if
1147 lang_hooks.types.type_for_mode returns nothing.
1148 * d-lang.cc (d_type_for_mode): Always support cent/ucent modes.
1149 (d_type_for_size): Add support for cent/ucent precision types.
1150 (d_signed_or_unsigned_type): Always support cent/ucent precisions.
1151
1152 * d-codegen.cc (d_build_call): Remove type promotion handling for
1153 variadic arguments.
1154 (expand_intrinsic_vaarg): Likewise.
1155 * d-lang.cc (d_type_promotes_to): Likewise.
1156
1157 * d-elem.cc (AddrExp::toElem): Take address of the static const symbol
1158 for the struct literal, not the const constructor.
1159 (CallExp::toElem): Don't pass generated static struct literal symbol
1160 as the object parameter for DotVar call expressions.
1161
1162 * d-codegen.cc (type_va_array): New function.
1163 (declaration_type_kind): Remove function.
1164 (declaration_reference_p): New function, update all callers of
1165 declaration_type_kind.
1166 (argument_type_kind): Remove function.
1167 (argument_reference_p): New function, update all callers of
1168 argument_type_kind.
1169 (build_address): Remove special handling of static array va_list.
1170 * d-codegen.h (type_kind): Remove enum.
1171
1172 2016-02-18 Iain Buclaw <ibuclaw@gdcproject.org>
1173
1174 * d-codegen.cc (build_condition): New function. Update all callers
1175 that generate a COND_EXPR that returns a value to use it.
1176 (build_vcondition): New function. Update all callers that generate a
1177 void COND_EXPR to use it.
1178 * toir.cc (IRVisitor::visit(DoStatement)): Build a COND_EXPR instead
1179 of an EXIT_EXPR to break from the loop.
1180 (IRVisitor::visit(ForStatement)): Likewise.
1181
1182 2016-02-14 Iain Buclaw <ibuclaw@gdcproject.org>
1183
1184 * d-elem.cc: Remove redundant IRState parameter from all lowering
1185 routines for expressions, update all callers.
1186
1187 2016-02-07 Iain Buclaw <ibuclaw@gdcproject.org>
1188
1189 * d-codegen.cc (build_array_set): Use POSTINCREMENT_EXPR to adjust
1190 array pointer.
1191 (identity_compare_p): New function.
1192 (build_struct_memcmp): Refactor into ...
1193 (lower_struct_comparison): ... New function.
1194 (build_struct_comparison): New function.
1195 (build_array_struct_comparison): New function.
1196 * d-elem.cc (IdentityExp::toElem): Use build_struct_comparison for
1197 RECORD_TYPE values.
1198 (EqualExp::toElem): Likewise.
1199 Use memcmp for array of structs that pass test for identity_compare_p,
1200 or fallback to build_array_struct_comparison.
1201 (NewExp::toElem): Remove setting of StructLiteralExp::fillHoles.
1202 (StructLiteralExp::toElem): Ignore StructLiteralExp::fillHoles, unless
1203 building a union literal.
1204
1205 2016-02-03 Iain Buclaw <ibuclaw@gdcproject.org>
1206
1207 * d-elem.cc (AssignExp::toElem): Pass parameters for arraycopy and
1208 arrayassign in the correct order.
1209
1210 2016-01-31 Iain Buclaw <ibuclaw@gdcproject.org>
1211
1212 * longdouble.h (longdouble): Use one contiguous array for the
1213 real_value data payload.
1214
1215 2016-01-23 Iain Buclaw <ibuclaw@gdcproject.org>
1216
1217 * toir.cc (IRVisitor::visit (ExtAsmStatement): Do validation of input
1218 and output constraints, marking operands as addressable if requested.
1219
1220 2016-01-10 Iain Buclaw <ibuclaw@gdcproject.org>
1221
1222 * d-codegen.cc (empty_aggregate_p): New function.
1223 (d_build_call): Don't pass empty aggregates by value.
1224 (build_struct_memcmp): Don't compare empty aggregates by value.
1225 * d-elem.cc (IdentityExp::toElem): Likewise.
1226 (EqualExp::toElem): Likewise.
1227 * (StructLiteralExp::toElem): Don't create temporaries or initialize
1228 holes for empty aggregates.
1229 * d-lang.cc (empty_modify_p): New function.
1230 (d_gimplify_expr): Remove assignments that involve empty aggregates.
1231
1232 2016-01-09 Iain Buclaw <ibuclaw@gdcproject.org>
1233
1234 * d-builtins.cc (d_builtin_type): Define DEF_FUNCTION_TYPE_9,
1235 DEF_FUNCTION_TYPE_10, and DEF_FUNCTION_TYPE_11.
1236 (d_init_builtins): Likewise.
1237 * d-longdouble.cc (machineMode): Remove function.
1238 (longdouble::init): Don't use initialize real format by reference.
1239 (longdouble::operator+): Use real_arithmetic instead of
1240 REAL_ARITHMETIC.
1241 (longdouble::operator-): Likewise.
1242 (longdouble::operator*): Likewise.
1243 (longdouble::operator/): Likewise.
1244 (longdouble::operator%): Likewise.
1245 * d-port.cc (Port::isSignallingNan): Use REAL_VALUE_ISSIGNALING_NAN.
1246 (Port::fequal): Use real_identical instead of REAL_VALUES_IDENTICAL.
1247 * d-target.cc: Include stor-layout.h header.
1248 * lang.opt: Remove documentation for switches defined elsewhere.
1249
1250 2016-01-09 Iain Buclaw <ibuclaw@gdcproject.org>
1251
1252 * d-codegen.cc (get_libcall): Use set_call_expr_flags to apply runtime
1253 function attributes.
1254 * d-codegen.h (LibCallFlag): Remove type.
1255 * runtime.def: Replace LibCallFlag with ECF everywhere.
1256
1257 \f
1258 Copyright (C) 2016 Free Software Foundation, Inc.
1259
1260 Copying and distribution of this file, with or without modification,
1261 are permitted in any medium without royalty provided the copyright
1262 notice and this notice are preserved.