| 2016-12-28 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * expr.cc (ExprVisitor::visit(VarExp)): Remove type forced conversion. |
| |
| 2016-12-28 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-lang.cc (d_handle_option): Handle -ftransition=safe. |
| * lang.opt (ftransition=safe): Add compiler option. |
| |
| 2016-12-28 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-lang.cc (d_init_options): Initialize hdrStripPlainFunctions. |
| (d_post_options): Add post option handling of flag. |
| |
| 2016-12-27 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (layout_aggregate_type): Adjust layout of D interfaces. |
| Only add a __vptr field if no base interfaces, don't add __monitor. |
| |
| 2016-12-27 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-lang.cc (d_parse_file): Run runDeferredSemantic2 after semantic2. |
| |
| 2016-12-26 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * expr.cc (ExprVisitor::visit(ArrayLiteralExp)): Use getElement to |
| index elements array. |
| (ExprVisitor::visit(VectorExp)): Likewise. |
| |
| 2016-12-25 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * Make-lang.in (D_DMD_OBJS): Add d/objc.o |
| * types.cc (TypeVisitor::visit(TypeFunction)): Handle ObjC linkage. |
| |
| 2016-12-25 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (mangle_decl): New function. |
| (make_internal_name): Update. |
| (get_symbol_decl): Update. |
| |
| 2016-12-24 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * expr.cc (ExprVisitor::needs_dtor): New function. |
| (ExprVisitor::lvalue_p): New function. |
| (ExprVisitor::visit(AssignExp)): Check both for postblit and dtors |
| when generating array assignments. |
| |
| 2016-12-24 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (convert_expr): Allow upcasting C++ classes. |
| (build_class_instance): Generate initial values of vtable interfaces |
| before class fields. |
| (layout_aggregate_type): Layout vtable interfaces before class fields. |
| * d-decls.cc (get_symbol_decl): Build DECL_ARGUMENTS for functions |
| that have no body. |
| |
| 2016-12-22 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-target.cc (Target::cppExceptions): New variable. |
| (Target::init): Initialize it. |
| (Target::prefixName): New function. |
| |
| 2016-12-19 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.cc (ClassDeclaration::toObjFile): Use layout_classinfo to |
| generate TypeInfo for classes. |
| (InterfaceDeclaration::toObjFile): Likewise. |
| * d-todt.cc (build_vptr_monitor): Remove function. |
| * typeinfo.cc (TypeInfoVisitor::set_field): New function. |
| (TypeInfoVisitor::layout_interfaces): New function. |
| (TypeInfoVisitor::layout_interface_vtables): New function. |
| (TypeInfoVisitor::visit(TypeInfoClassDeclaration)): Implement. |
| (layout_classinfo): New function. |
| |
| 2016-12-18 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * typeinfo.cc (TypeInfoVisitor): Use build_typeinfo instead of |
| get_typeinfo_decl. |
| * d-objfile.cc (ClassDeclaration::toObjFile): Use build_constructor to |
| build the vtable, instead of using dt_cons. |
| |
| 2016-12-18 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (layout_moduleinfo_fields): Use finish_aggregate_type |
| instead of layout_type. |
| (layout_classinfo_interfaces): Likewise. |
| |
| 2016-12-17 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-builtins.cc (build_dtype): Use static create method for allocating |
| frontend types. |
| * d-codegen.cc (declaration_type): Likewise. |
| (type_passed_as): Likewise. |
| (get_libcall): Likewise. |
| * d-lang.cc (d_parse_file): Likewise. |
| * d-objfile.cc (build_simple_function_decl): Likewise. |
| (build_emutls_function): Likewise. |
| * d-todt.cc (StructDeclaration::toDt): Likewise. |
| * typeinfo.cc (TypeInfoVisitor::visit(TypeInfoInterfaceDeclaration)): |
| Likewise. |
| |
| 2016-12-17 Johannes Pfau <johannespfau@gmail.com> |
| |
| * d-decls.cc (copy_struct): Also copy and update TYPE_METHODS. |
| * d-spec.c (lang_specific_driver): Do not link in math, thread and |
| time libraries. Use a spec file instead to do this. |
| (lang_specific_pre_link): Load libgphobos.spec to set up the link |
| dependencies for libgphobos. |
| |
| 2016-12-13 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-builtins.cc (build_dtype): Cache all allocated frontend types. |
| (builtin_sym): Update constructor. |
| (builtin_converted_decls): Rename to builtin_converted_syms. |
| (d_build_builtins_module): Check if decl set before assigning parent. |
| |
| 2016-12-13 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-builtins.cc (build_dtype): Set type modifiers on frontend type. |
| |
| 2016-12-12 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-builtins.cc (build_dtype): Don't set default parameter storage |
| class as const. |
| |
| 2016-12-12 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (add_moduleinfo_field): New function. |
| (layout_moduleinfo_fields): New function. |
| (get_moduleinfo_decl): Use record type for moduleinfo decl. |
| * d-objfile.cc (build_moduleinfo_symbol): Delay calling |
| get_moduleinfo_decl until after ModuleInfo type is validated. |
| (d_finish_symbol): Remove check for unknown_type_node. |
| |
| 2016-12-11 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (copy_struct): New function. |
| (layout_classinfo_interfaces): New function. |
| (get_classinfo_decl): Use record type for classinfo decl. |
| * d-codegen.cc (create_field_decl): New function. |
| Use it instead of build_decl when creating a new FIELD_DECL. |
| |
| 2016-12-11 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-builtins.cc (build_dtype): Don't build generic function types. |
| (d_build_builtins_module): Remove check. |
| |
| 2016-12-10 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_vindex_ref): Move saving of object to callers. |
| * expr.cc (ExprVisitor::visit(CallExp)): Save object reference before |
| passing to build_vindex_ref. |
| (ExprVisitor::visit(DelegateExp)): Likewise. |
| |
| 2016-12-07 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-spec.c (lang_specific_driver): Remove error handling. |
| * d-lang.cc (d_parse_file): Don't error twice. |
| |
| 2016-12-06 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-spec.c (lang_specific_driver): Remove 'added' variable. |
| |
| 2016-12-04 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (get_symbol_decl): Use needsCodegen to determine whether |
| template instance is extern or not. |
| |
| 2016-12-02 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-glue.cc (escapePath): Move to dfrontend. |
| (readFile): Likewise. |
| (writeFile): Likewise. |
| (ensurePathToNameExists): Likewise. |
| |
| 2016-12-01 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-target.cc: Include memmodel.h. |
| * d-attrib.c (d_handle_section_attribute): No longer set |
| user_defined_section_attribute. |
| |
| 2016-11-25 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * types.cc (TypeVisitor::visit(Type)): Update. |
| |
| 2016-11-24 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_struct_literal): Stop after first field |
| assignment in union constructor. |
| (build_class_instance): Skip void initialized fields. |
| * expr.cc (ExprVisitor::visit(StructLiteralExp)): Likewise. |
| |
| 2016-11-22 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (get_symbol_decl): Don't set alignment if |
| STRUCTALIGN_DEFAULT. |
| |
| 2016-11-21 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-todt.cc (ClassDeclaration::toDt): Update. |
| (ClassDeclaration::toDt2): Remove function. |
| (TypeSArray::toDtElem): Remove function. |
| (dt_chainon): Remove function. |
| (dt_zeropad): Remove function. |
| (dt_container): Remove function. |
| (dt_container2): Rename to dt_container. All callers updated. |
| * d-objfile.cc (VarDeclaration::toObjFile): Update. |
| |
| 2016-11-20 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-lang.cc (copy_lang_decl): Rename to d_dup_lang_specific_decl. |
| (LANG_HOOKS_DUP_LANG_SPECIFIC_DECL): Redefine. |
| * d-decls.cc (make_alias_for_thunk): Call dup_lang_specific_decl. |
| (make_thunk): Likewise. |
| |
| 2016-11-19 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.h (FuncFrameInfo): Remove type. All users updated to |
| interface with new frame macro accessors. |
| (build_frame_type): Mark as static. |
| (get_frameinfo): Update to return a tree type. |
| * d-lang.cc (LANG_HOOKS_TREE_SIZE): Redefine. |
| (LANG_HOOKS_PRINT_XNODE): Redefine. |
| (d_tree_size): New function. |
| (d_print_xnode): New function. |
| (d_tree_node_structure): New function. |
| * d-tree.def (FUNCFRAME_INFO): New tree_code. |
| * d-tree.h (tree_frame_info): New type. |
| (FRAMEINFO_CREATES_FRAME): New macro accessor. |
| (FRAMEINFO_STATIC_CHAIN): New macro accessor. |
| (FRAMEINFO_IS_CLOSURE): New macro accessor. |
| (FRAMEINFO_TYPE): New macro accessor. |
| (lang_decl): Replace frame_info field with a tree type. |
| (d_tree_node_structure_enum): New type. |
| (lang_tree_node): Update GTY tags. |
| |
| 2016-11-19 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (setup_symbol_storage): Remove function. |
| (Dsymbol::toSymbol): Remove function and all overrides. All callers |
| updated to call ... |
| (get_symbol_decl): ... New function. |
| |
| 2016-11-06 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-lang.cc (output_modules): Remove variable. |
| (output_module): Remove variable. |
| (d_gcc_get_output_module): Remove function. All callers updated to |
| use Module::rootModule. |
| * d-objfile.cc (FuncDeclaration::toObjFile): Mark all functions being |
| constructed here as TREE_STATIC. |
| (output_module_p): Remove function. All callers updated to call |
| Module::isRoot. |
| |
| 2016-11-05 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (get_template_storage_info): Remove function. |
| (setup_symbol_storage): Use Dsymbol::isInstantiated instead. |
| |
| 2016-11-05 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_struct_literal): Handle anonymous fields. |
| (build_class_instance): New functions. |
| (find_aggregate_field): Update signature. All callers updated. |
| * d-todt.cc (dt_chainon): Mark as static. |
| (dt_zeropad): Likewise. |
| (dt_container): Likewise. |
| (ClassReferenceExp::toInstanceDt): Remove function. |
| (ClassReferenceExp::toDt2): Remove function. |
| |
| 2016-11-01 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-tree.h (lang_decl): Remove readonly field. |
| (DECL_LANG_READONLY): Remove macro. All callers updated. |
| |
| 2016-10-29 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (ClassReferenceExp::toSymbol): Use class record type for |
| static symbol. |
| * d-lang.cc (global_context): New static variable. |
| (global_declarations): New static variable. |
| (d_nametype): Pass built-in types to debug_hooks::type_decl. |
| (d_add_global_declaration): Remove function, update all callers. |
| (get_global_context): New function. |
| (d_pushdecl): Push decls to global, or bindings list here. |
| (StructDeclaration::toObjFile): Send type decl to d_pushdecl. |
| (ClassDeclaration::toObjFile): Likewise. |
| (InterfaceDeclaration::toObjFile): Likewise. |
| (EnumDeclaration::toObjFile): Likewise. |
| (FuncDeclaration::toObjFile): Send finished decl to d_pushdecl. |
| (d_finish_symbol): Likewise. |
| (emit_modref_hooks): Likewise. |
| (d_comdat_linkage): Don't set DECL_COMDAT on non-public decls. |
| (setup_symbol_storage): Don't set DECL_ABSTRACT_P on templates. |
| (d_finish_compilation): Remove check for type decls. |
| (build_type_decl): Don't add to global decl list, just call |
| rest_of_decl_compilation. |
| * expr.cc (ExprVisitor::visit(ArrayLiteralExp)): Send finished decl to |
| d_pushdecl. |
| * toir.cc (IRVisitor::visit(SwitchStatement)): Likewise. |
| (IRVisitor::end_scope): Mark bind expr as having side effects. |
| * typeinfo.cc (TypeInfoVisitor::visit(TypeInfoTupleDeclaration)): Send |
| finished decl to d_pushdecl. |
| |
| 2016-10-29 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (layout_aggregate_type): Continue searching based on |
| aggregate members, not just fields. |
| * types.cc (TypeVisitor::visit(TypeEnum)): Use void for opaque enums. |
| (TypeVisitor::visit(TypeStruct)): Don't give opaque structs a size. |
| |
| 2016-10-27 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * expr.cc (ExprVisitor::visit(AssignExp)): Don't set TREE_ADDRESSABLE. |
| * d-codegen.cc (build_assign): Handle setting up INIT_EXPR from a |
| value returning via NRVO here instead. |
| |
| 2016-10-26 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (d_build_call): Only convert CALL_EXPRs into a |
| TARGET_EXPR if return type is TREE_ADDRESSABLE. |
| (build_assign): Use TARGET_EXPR accessors. |
| (compound_expr): Likewise. |
| |
| 2016-10-15 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.h (d_types_same): Return early if types are identical. |
| |
| 2016-10-09 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (FuncDeclaration::toThunkSymbol): Rename to make_thunk. |
| All callers updated. |
| (finish_thunk): Update signature. |
| |
| 2016-10-09 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.h (Thunk): Remove type, move offset field to ... |
| * d-tree.h (lang_decl): ... here. Replace Thunk field with a tree. |
| (THUNK_LANG_OFFSET): New macro accessor. |
| * d-lang.cc (copy_lang_decl): New function. |
| * d-decls.cc (FuncDeclaration::toThunkSymbol): Use new thunk macros. |
| |
| 2016-10-09 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (finish_thunk): Add assert that current_function_decl is |
| never set when function is called. |
| (DeferredThunk): Remove type. |
| (deferred_thunks): Remove variable. |
| (write_deferred_thunks): Remove function. All callers updated. |
| (use_thunk): Remove function. |
| (FuncDeclaration::toThunkSymbol): Call finish_thunk when done. |
| |
| 2016-10-08 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.cc (deferred_thunks): Move to d-decls.cc. |
| (write_deferred_thunks): Likewise. |
| (use_thunk): Likewise. Mark as static. |
| (thunk_labelno): Likewise. |
| (make_alias_for_thunk): Likewise. |
| (finish_thunk): Likewise. |
| |
| 2016-10-08 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (setup_symbol_storage): Remove unused parameters. |
| |
| 2016-10-07 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (ClassReferenceExp::toSymbol): Rename to |
| build_new_class_expr. All callers updated. |
| (StructLiteralExp::toSymbol): Remove function. Inline into caller ... |
| * expr.cc (ExprVisitor::visit(AddrExpr)): ... here. |
| |
| 2016-10-07 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (TypeInfoDeclaration::toSymbol): Rename to |
| get_typeinfo_decl. All callers updated. |
| (TypeInfoDeclVisitor): New visitor helper for get_typeinfo_decl. |
| * d-codegen.cc (get_decl_tree): Add check for building typeinfo decls. |
| |
| 2016-10-05 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (AggregateDeclaration::toInitializer): Rename to |
| aggregate_initializer. All callers updated. |
| (EnumDeclaration::toInitializer): Rename to enum_initializer. |
| (Module::toSymbol): Rename to get_moduleinfo_decl. |
| (ClassDeclaration::toSymbol): Rename to get_classinfo_decl. |
| (InterfaceDeclaration::toSymbol): Merge into get_classinfo_decl. |
| |
| 2016-10-03 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (FuncDeclaration::toSymbol): Remove saving of current |
| module decl before calling semantic. |
| (StructLiteralExp::toSymbol): Don't handle sinit. |
| (ClassReferenceExp::toSymbol): Likewise. |
| (AggregateDeclaration::toInitializer): Likewise. |
| (EnumDeclaration::toInitializer): Likewise. |
| * d-glue.cc (toInitializer): Remove function. |
| * d-objfile.cc (FuncDeclaration::toObjFile): Remove saving of current |
| module decl before calling semantic. |
| * expr.cc (ExprVisitor::visit(CallExpr)): Replace accesses of sinit |
| field with useStaticInit. |
| (ExprVisitor::visit(StructLiteralExp)): Likewise. |
| |
| 2016-10-03 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (ClassDeclaration::toVtblSymbol): Rename to |
| get_vtable_decl. All callers updated. |
| |
| 2016-10-03 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.cc (setup_symbol_storage): Move function to ... |
| * d-decls.cc (setup_symbol_storage): ... here. Mark as static. |
| (get_template_storage_info): Likewise. |
| |
| 2016-10-03 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (call_by_alias_p): Check whether caller and callee are |
| nested in the same parent function. |
| * expr.cc (ExprVisitor::visit(CallExp)): Set TREE_PUBLIC directly |
| instead of calling setup_symbol_storage. |
| |
| 2016-10-03 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.cc (VarDeclaration::toObjFile): Always generate |
| DECL_INITIAL for all kinds of var decls. |
| * d-codegen.cc (build_address): Use the DECL_INITIAL directly if |
| taking the address of a CONST_DECL. |
| |
| 2016-10-02 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-tree.h (DECL_LANG_TREE): Remove macro. All callers updated. |
| |
| 2016-10-02 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.h (Symbol): Remove struct. Update all functions to return |
| a tree instead. Remove all new allocations of Symbol. |
| * d-tree.h (DECL_LANG_READONLY): Update accessor. |
| (DECL_LANG_INITIAL): Likewise. |
| (DECL_LANG_TREE): Likewise. |
| (SET_DECL_LANG_FRAME_FIELD): Likewise. |
| (DECL_LANG_FRAME_FIELD): Likewise. |
| (SET_DECL_LANG_NRVO): Likewise. |
| (DECL_LANG_NRVO): Likewise. |
| (DECL_LANG_THUNKS): Likewise. |
| (DECL_LANG_FRAMEINFO): Likewise. |
| |
| 2016-10-01 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.h (Symbol): Remove symbol identifier field. |
| * d-tree.h (DECL_LANG_IDENTIFIER): Remove macro. Update callers to |
| instead use DECL_ASSEMBLER_NAME. |
| (DECL_LANG_PRETTY_NAME): Remove macro. |
| |
| 2016-09-26 Johannes Pfau <johannespfau@gmail.com> |
| |
| * d-objfile.cc (d_finish_function): Handle template mixins (issue 231). |
| |
| 2016-09-25 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (Dsymbol::toSymbolX): Remove function, update all callers |
| to use ... |
| (make_internal_name): ... New function. |
| * d-objfile.h (Symbol): Replace char* fields with tree. |
| * d-tree.h (lang_identifier): Add pretty_ident field. |
| (IDENTIFIER_PRETTY_NAME): New macro accessor. |
| (DECL_LANG_PRETTY_NAME): Update to use IDENTIFIER_PRETTY_NAME. |
| |
| 2016-09-19 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.h (Symbol): Move declaration-specific fields to ... |
| * d-tree.h (lang_decl): ... here. |
| (DECL_LANG_READONLY): Update to reference lang_decl field. |
| (DECL_LANG_INITIAL): Likewise. |
| (DECL_LANG_FRAME_FIELD): Likewise. |
| (DECL_LANG_NRVO): Likewise. |
| (DECL_LANG_THUNKS): Likewise. |
| (DECL_LANG_FRAMEINFO): Likewise. |
| (SET_DECL_LANG_FRAME_FIELD): New setter macro, update all callers. |
| (SET_DECL_LANG_NRVO): Likewise. |
| |
| 2016-09-19 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-builtins.cc (d_build_builtins_module): Set DECL_LANG_SPECIFIC |
| before using any DECL_LANG accessor macros. |
| (maybe_set_builtin_1): Likewise. |
| * d-codegen.cc (maybe_set_intrinsic): Likewise. |
| (layout_aggregate_members): Likewise. |
| d-decls.cc (VarDeclaration::toSymbol): Likewise. |
| (FuncDeclaration::toThunkSymbol): Likewise. |
| (ClassDeclaration::toSymbol): Likewise. |
| (InterfaceDeclaration::toSymbol): Likewise. |
| (Module::toSymbol): Likewise. |
| (StructLiteralExp::toSymbol): Likewise. |
| (ClassReferenceExp::toSymbol): Likewise. |
| (ClassDeclaration::toVtblSymbol): Likewise. |
| (AggregateDeclaration::toInitializer): Likewise. |
| (EnumDeclaration::toInitializer): Likewise. |
| |
| 2016-09-19 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-tree.h (DECL_LANG_IDENTIFIER): New macro accessor, use instead of |
| direct field accesses. |
| (DECL_LANG_PRETTY_NAME): Likewise. |
| (DECL_LANG_READONLY): Likewise. |
| (DECL_LANG_INITIAL): Likewise. |
| (DECL_LANG_TREE): Likewise. |
| (DECL_LANG_FRAME_FIELD): Likewise. |
| (DECL_LANG_NRVO): Likewise. |
| (DECL_LANG_THUNKS): Likewise. |
| (DECL_LANG_FRAMEINFO): Likewise. |
| |
| 2016-09-18 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * imports.cc (ImportVisitor::visit(ScopeDsymbol)): New visit method. |
| |
| 2016-09-17 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-todt.cc (ArrayInitializer::toDt): Update to use build_expr. |
| * d-codegen.cc (d_array_value): Don't override default const and |
| static bits for array constructors. |
| |
| 2016-09-16 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (lower_struct_comparison): Don't compare vectors in the |
| same way as integers. |
| |
| 2016-09-11 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-todt.cc (Type::toDt): Remove function, inline into callers. |
| (TypeVector::toDt): Likewise. |
| (TypeSArray::toDt): Likewise. |
| (TypeStruct::toDt): Likewise. |
| |
| 2016-09-11 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-decls.cc (FuncDeclaration::toSymbol): Save current module decl |
| before calling function semantic. |
| * d-objfile.cc (FuncDeclaration::toObjFile): Likewise. |
| |
| 2016-09-11 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * types.cc: Document and reformat file. |
| |
| 2016-09-10 Johannes Pfau <johannespfau@gmail.com> |
| |
| * d-objfile.cc (setup_symbol_storage): Setup TREE_PUBLIC before |
| calling decl_default_tls_model. |
| * d-typeinfo.cc (TypeInfoVisitor::find_field): Move method... |
| * d-codegen.cc (find_aggregate_field): here. |
| * d-objfile.cc (build_simple_function): Extract some code into new |
| function. |
| (build_simple_function_decl): Extracted from build_simple_function. |
| * d-objfile.cc (build_moduleinfo): Split into emit_moduleinfo_hooks |
| and emit_modref_hooks. |
| (build_dso_registry_var): New function. |
| (emit_dso_registry_cdtor): Likewise. |
| (emit_dso_registry_helpers): Likewise. |
| (emit_dso_registry_hooks): Likewise. |
| (emit_moduleinfo_hooks): Only emit hooks if required druntime functions |
| are available. |
| * d-objfile.cc (Module::genmoduleinfo): Rename to |
| build_moduleinfo_symbol. |
| (emit_moduleinfo_hooks): rename to Module::genmoduleinfo. |
| (Module::genmoduleinfo): only call build_moduleinfo_symbol when |
| emitting module info registry code. |
| * d-spec.c (lang_specific_driver): Add -shared-libphobos option, |
| default to static libphobos. |
| * d-lang.opt: Likewise. |
| * d-spec.c: Rename libgphobos2 to libgphobos. |
| |
| 2016-07-11 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (get_frameinfo): Use hasNestedFrameRefs to determine |
| whether a frame should be created. |
| |
| 2016-07-02 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.cc (FuncDeclaration::toObjFile): Always convert the |
| DECL_RESULT of NRVO-capable functions into reference decls. |
| |
| 2016-06-21 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-attribs.c (handle_nonnull_attribute): Accept the nonnull |
| attribute in type-generic builtins. |
| * d-codegen.cc (d_build_call): Check AGGREGATE_TYPE_P before testing |
| for aggregate_value_p. |
| |
| 2016-06-20 Johannes Pfau <johannespfau@gmail.com> |
| |
| * d-lang.cc (d_handle_option): Add new -ftransition=dip25 and |
| -fmax-error-messages switches. |
| * lang.opt: Likewise. |
| |
| 2016-06-19 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (get_decl_tree): Remove assert for RESULT_DECL. |
| (convert_for_argument): Handle lazy arguments early. |
| (argument_reference_p): Handle types marked TREE_ADDRESSABLE. |
| (lvalue_p): Add case for TARGET_EXPR. |
| (d_mark_addressable): Likewise. |
| (build_assign): Likewise. |
| (compound_expr): Likewise. |
| (build_target_expr): New function. |
| (d_build_call): Always set CALL_EXPR_RETURN_SLOT_OPT for all calls |
| that return an aggregate in memory. |
| * d-decls.cc (VarDeclaration::toSymbol): Handle reference parameters. |
| * d-lang.cc (d_gimplify_expr): Handle taking address of constructor. |
| * d-objfile.cc (FuncDeclaration::toObjFile): Handle reference return. |
| * expr.cc (ExprVisitor::visit(AssignExp)): Mark LHS as addressable if |
| RHS assignment is a returned aggregate. |
| * types.cc (TypeVisitor::visit(TypeStruct)): Mark the RECORD_TYPE of |
| non-trivial structs as TREE_ADDRESSABLE. |
| (TypeVisitor::visit(TypeClass)): Mark all classes as TREE_ADDRESSABLE. |
| (TypeVisitor::visit(TypeFunction)): Don't set TREE_ADDRESSABLE. |
| (TypeVisitor::visit(TypeDelegate)): Likewise. |
| |
| 2016-06-19 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (lvalue_p): Add more cases to look for. |
| (build_address): Mark expression as addressable after stabilizing. |
| (d_mark_addressable): Remove special cases. |
| (d_mark_used): Add cases for other kinds of DECLs. |
| (build_struct_comparison): Stabilize before saving. |
| (modify_expr): Remove overload. Updated all callers. |
| (build_vinit): Remove function. Updated all callers to use ... |
| (build_assign): ... New function. |
| (lvalue_p): Remove tests in default case. |
| * expr.cc (build_expr_dtor): Rewrite assignments to elide a temporary. |
| |
| 2016-06-16 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (make_temp): Rename to d_save_expr. |
| (maybe_make_temp): Remove function. |
| Updated all callers to use d_save_expr(). |
| (vcompound_expr): Remove function. |
| Updated all callers to use compound_expr(). |
| (maybe_compound_expr): Likewise. |
| (maybe_vcompound_expr): Likewise. |
| (vmodify_expr): Remove function. |
| Updated all callers to use modify_expr(). |
| (lvalue_p): New function. |
| |
| 2016-06-15 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (add_stmt): Don't add statements without side effects. |
| Push each COMPOUND_EXPR as a separate statement. |
| (build_local_temp): Use input_location. |
| (create_temporary_var): Likewise. |
| (d_has_side_effects): Remove function. |
| Updated all callers to use TREE_SIDE_EFFECTS. |
| (stabilize_expr): New function. |
| Updated all routines that check for COMPOUND_EXPR to use it. |
| * expr.cc (ExprVisitor::visit(EqualExp)): Use maybe_make_temp to save |
| expressions. Use build_boolop for constructed conditions. |
| (ExprVisitor::visit(CatAssignExp)): Stabilize RHS before assignment. |
| (ExprVisitor::visit(NewExp)): Don't always create SAVE_EXPR. |
| (ExprVisitor::visit(AssocArrayLiteralExp)): Likewise. |
| (ExprVisitor::visit(ArrayLiteralExp)): Evaluate elements before |
| appending to constructor fields. |
| (ExprVisitor::visit(StructLiteralExp)): Likewise. |
| |
| 2016-06-12 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-convert.cc (d_build_truthvalue_op): Fold truthvalue operation. |
| (d_truthvalue_conversion): Use zero constant of expression type. |
| |
| 2016-06-09 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_address): Handle ERROR_MARK and COMPOUND_EXPR. |
| (build_nop): Likewise. |
| (indirect_ref): Likewise. |
| (build_deref): Likewise. |
| (d_build_call): Only create temporaries if more than one argument has |
| side effects. |
| * expr.cc (get_compound_value): Remove function. |
| (build_expr_dtor): Wrap cleanups in a TRY_FINALLY_EXPR only if the |
| expression has side effects. |
| |
| 2016-06-08 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * Make-lang.in (D_GLUE_OBJS): Remove d-typinf.o, add typeinfo.o. |
| * d-codegen.cc (build_typeinfo): Move to ... |
| * typeinfo.cc: ... here. New file. |
| * d-objfile.cc (TypeInfoDeclaration::toObjFile): Use layout_typeinfo. |
| * d-todt.cc (verify_structsize): Remove function. |
| (TypeInfoDeclaration::toDt): Remove function and overrides. |
| * d-typinf.cc: Remove file. Contents moved to typeinfo.cc. |
| * expr.cc (ExprVisitor::visit(DeleteExp)): Use build_typeinfo. |
| (ExprVisitor::visit(NewExp)): Likewise. |
| |
| 2016-06-08 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * dfrontend: Update to D front-end version 2.068. |
| * d-codegen.cc (insert_type_modifiers): Don't build TYPE_QUAL_VOLATILE |
| types. Set TYPE_SHARED instead. |
| (insert_aggregate_field): Propagate TYPE_SHARED to TREE_ADDRESSABLE. |
| (array_bounds_check): Use BOUNDSCHECK interface. |
| * d-lang.cc (d_init_options): Likewise. |
| (d_init): Likewise. |
| (d_handle_option): Likewise. |
| (d_post_options): Likewise. |
| * d-decls.cc (VarDeclaration::toSymbol): Propagate TYPE_SHARED_to |
| TREE_ADDRESSABLE. |
| * d-objfile.cc (ClassDeclaration::toObjFile): Make overload shadowing |
| an error. Remove call to _d_hidden_func. |
| (TypeInfoDeclaration::toObjFile): Updated template emission rules. |
| (FuncDeclaration::toObjFile): Likewise. |
| * d-port.cc (Port::readwordLE): New function. |
| (Port::readwordBE): New function. |
| (Port::readlongLE): New function. |
| (Port::readlongBE): New function. |
| * d-todt.cc (dt_container2): Handle error_mark_node. |
| (dt_container): Likewise. |
| (TypeInfoStructDeclaration::toDt): Updated template emission rules. |
| * d-typinf.cc (genTypeInfo): Likewise. |
| (getTypeInfo): Remove function. |
| (getTypeInfoType): New function. |
| (isSpeculativeType): New function. |
| * d-tree.h (TYPE_SHARED): New macro. |
| * expr.cc (ExprVisitor::visit(CondExp)): Don't generate dtors in |
| condition expression. |
| (ExprVisitor::visit(AssignExp)): Update for frontend changes. |
| (ExprVisitor::visit(DeleteExp)): Likewise. |
| (ExprVisitor::visit(CallExp)): Likewise. |
| (ExprVisitor::visit(DelegateExp)): Likewise. |
| (ExprVisitor::visit(TypeidExp)): New function. |
| * lang.opt (bounds_check_set_manually): Remove variable. |
| (ftransition=complex): New option. |
| * runtime.def (HIDDEN_FUNC): Remove runtime function. |
| |
| 2016-06-07 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_alignment_field): New function. |
| (build_struct_literal): Update signature, updated all callers. |
| Add anonymous fields to fill alignment holes in constructor. |
| (fill_alignment_field): Remove function. |
| (fill_alignment_holes): Remove function. |
| (finish_aggregate_type): Don't add anonymous fields. |
| |
| 2016-06-05 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (d_build_call): Separate parameter to pass from it's |
| construction expression. |
| * expr.cc (build_dtor_list): New function. |
| (get_compound_value): New function. |
| (build_expr_dtor): Update to use helper functions. |
| (build_return_dtor): New function. |
| * toir.cc (IRVisitor::visit(ReturnStatement)): Use it. |
| |
| 2016-06-04 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_deref): Handle ERROR_MARK nodes early. |
| (build_array_index): Likewise. |
| |
| 2016-05-29 Johannes Pfau <johannespfau@gmail.com> |
| |
| * toir.cc (IRVisitor::visit(SwitchStatement)): Set correct type for the |
| string table for switch(string) statements. |
| |
| 2016-05-24 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (convert_expr): Return empty constructor for null to |
| associative array conversions. |
| * expr.cc (ExprVisitor::visit(NullExp)): Likewise. |
| |
| 2016-05-21 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_struct_literal): Don't set TREE_STATIC. |
| (build_boolop): Remove side effects from aggregate types only. |
| * expr.cc (ExprVisitor::visit(ArrayLiteralExp)): Don't check |
| initializer_constant_valid_p until after constructor is built. |
| (ExprVisitor::visit(StructLiteralExp)): Likewise. |
| |
| 2016-05-16 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * expr.cc (ExprVisitor::visit(AssignExp)): Build the rhs constructor |
| before the lhs declaration. |
| (ExprVisitor::visit(DeclarationExp)): Compile the declaration and |
| initializer before pushing it to vars_in_scope. |
| (build_expr_dtor): Compound all dtors in reverse. |
| |
| 2016-05-16 Johannes Pfau <johannespfau@gmail.com> |
| |
| * expr.cc (ExprVisitor::visit(IdentityExp*)): Remove side-effects |
| before comparing two floating point types. |
| * d-codegen.cc (build_struct_comparison): Remove side-effects |
| before comparing two values. |
| (build_boolop): Likewise. |
| |
| 2016-05-15 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-todt.cc (Expression::toDt): Remove function and all overrides. |
| Update all callers to use build_expr. |
| * expr.cc (ExprVisitor::visit(SymOffExp)): Move check for non-constant |
| expressions in static initializer data to ... |
| (build_expr): ... here. |
| * toir.cc (IRVisitor::visit(SwitchStatement)): Build array of indexes |
| directly using build_artificial_decl. |
| |
| 2016-05-15 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * expr.cc (ExprVisitor::visit(IdentityExp*)): Remove side-effects |
| before comparing two dynamic arrays. |
| |
| 2016-05-14 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (get_decl_tree): First check if cfun is set. |
| * d-todt.cc (StructLiteralExp::toDt): Update call to build_expr. |
| (SymOffExp::toDt): Likewise. |
| (VarExp::toDt): Likewise. |
| (FuncExp::toDt): Likewise. |
| (VectorExp::toDt): Likewise. |
| * expr.cc (ExprVisitor::visit(SymbolExp)): Remove function. |
| (ExprVisitor::visit(SymOffExp)): New function. |
| (ExprVisitor::visit(VarExp)): New function. |
| (ExprVisitor::visit(StructLiteralExp)): Don't return static |
| initializer symbol if constant literal requested. |
| |
| 2016-05-13 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_struct_literal): Maybe set TREE_CONSTANT or |
| TREE_STATIC on the returned constructor. |
| Allow building struct literals with initializer list out of order. |
| Add check and error when initializer overlaps previous field. |
| Don't explicitly set empty initializers for anonymous aggregates or |
| artificial fields. |
| |
| 2016-05-12 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_array_from_val): New function. |
| * expr.cc (ExprVisitor::visit(StructLiteralExp)): Use it. |
| |
| 2016-05-11 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (convert_expr): Use build_nop to cast between two |
| static arrays of the same size. |
| * d-todt.cc (IntegerExp::toDt): Update call to build_expr. |
| (RealExp::toDt): Likewise. |
| (ComplexExp::toDt): Likewise. |
| (StringExp::toDt): Likewise. |
| (NullExp::toDt): Use build_expr to generate initializer. |
| (ArrayLiteralExp::toDt): Likewise. |
| (CastExp::toDt): Likewise. |
| (ClassReferenceExp::toDt): Likewise. |
| (ClassReferenceExp::toDtI): Remove function. |
| * expr.cc (ExprVisitor::visit(CastExp)): Forward constp to the next |
| leaf expression in the tree. |
| (ExprVisitor::visit(AddrExp)): Likewise. |
| (ExprVisitor::visit(FuncExp)): Likewise. |
| (ExprVisitor::visit(ArrayLiteralExp)): Likewise. |
| (ExprVisitor::visit(StructLiteralExp)): Likewise. |
| (ExprVisitor::visit(VectorExp)): Likewise. |
| (ExprVisitor::visit(ClassReferenceExp)): Adjust reference for constp. |
| |
| 2016-05-09 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.cc (get_unique_name): Remove function. |
| (build_artificial_decl): New function. |
| (d_finish_symbol): Use build_artificial_decl. |
| (build_moduleinfo): Likewise. |
| * d-decls.cc (StructLiteralExp::toSymbol): Likewise. |
| (ClassReferenceExp::toSymbol): Likewise. |
| |
| 2016-05-07 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * expr.cc (ExprVisitor::visit(BinExp)): New function. |
| (ExprVisitor::visit(XorExp)): Remove function. |
| (ExprVisitor::visit(OrExp)): Likewise. |
| (ExprVisitor::visit(AndExp)): Likewise. |
| (ExprVisitor::visit(UshrExp)): Likewise. |
| (ExprVisitor::visit(ShrExp)): Likewise. |
| (ExprVisitor::visit(ShlExp)): Likewise. |
| (ExprVisitor::visit(ModExp)): Likewise. |
| (ExprVisitor::visit(DivExp)): Likewise. |
| (ExprVisitor::visit(MulExp)): Likewise. |
| (ExprVisitor::visit(MinExp)): Likewise. |
| (ExprVisitor::visit(AddExp)): Likewise. |
| (ExprVisitor::visit(BinAssignExp)): New function. |
| (ExprVisitor::visit(XorAssignExp)): Remove function. |
| (ExprVisitor::visit(OrAssignExp)): Likewise. |
| (ExprVisitor::visit(AndAssignExp)): Likewise. |
| (ExprVisitor::visit(ShrAssignExp)): Likewise. |
| (ExprVisitor::visit(ShlAssignExp)): Likewise. |
| (ExprVisitor::visit(ModAssignExp)): Likewise. |
| (ExprVisitor::visit(DivAssignExp)): Likewise. |
| (ExprVisitor::visit(MulAssignExp)): Likewise. |
| (ExprVisitor::visit(PowAssignExp)): Likewise. |
| (ExprVisitor::visit(MinAssignExp)): Likewise. |
| (ExprVisitor::visit(AddAssignExp)): Likewise. |
| |
| 2016-05-06 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * expr.cc (ExprVisitor::ExprVisitor): Update signature. |
| (ExprVisitor::visit(AddrExp)): Handle constant expressions. |
| (ExprVisitor::visit(FuncExp)): Likewise. |
| (ExprVisitor::visit(ComplexExp)): Likewise. |
| (ExprVisitor::visit(StringExp)): Likewise. |
| (ExprVisitor::visit(ArrayLiteralExp)): Likewise. |
| (ExprVisitor::visit(StructLiteralExp)): Likewise. |
| (ExprVisitor::visit(NullExp)): Likewise. |
| (ExprVisitor::visit(ClassReferenceExp)): Likewise. |
| (build_expr): Update signature. |
| |
| 2016-05-05 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * Make-lang.in (D_GLUE_OBJS): Add d/expr.o. |
| Remove d/d-elem.o |
| * d-codegen.cc (size_mult_expr): New function. |
| * d-tree.h (build_expr): New function, update all callers to toElem. |
| (build_expr_dtor): New function, update all callers to toElemDtor. |
| * expr.cc: New file. |
| * d-elem.cc: Remove file. |
| |
| 2016-05-03 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-target.cc (Target::init): Target::realpad value should be size |
| minus precision. |
| |
| 2016-04-29 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (finish_aggregate_type): Use SET_TYPE_ALIGN. |
| * types.cc (TypeVisitor::visit(TypeStruct)): Likewise. |
| * d-decls.cc (ClassDeclaration::toVtblSymbol): Use SET_DECL_ALIGN. |
| * d-objfile.cc (d_finish_symbol): Likewise. |
| * d-target.cc (Target::fieldalign): Likewise. |
| |
| 2016-04-29 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-todt.cc (TypeSArray::toDtElem): Remove special handling for |
| arrays of vectors. |
| |
| 2016-04-23 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-builtins.cc (build_dtype): Make function static. |
| * d-lang.cc (d_init_exceptions): Remove function. |
| * d-codegen.h: Move visitor declarations to ... |
| * d-tree.h: ... here. |
| (lang_decl): Remove `d_` prefix from fields. |
| (lang_type): Likewise. |
| * d-lang.cc (build_d_type_lang_specific): Rename to build_lang_type. |
| (build_d_decl_lang_specific): Rename to build_lang_decl. |
| * imports.cc: Update includes. |
| |
| 2016-03-29 Johannes Pfau <johannespfau@gmail.com> |
| |
| * d-objfile.cc (d_comdat_linkage): Rewrite template duplicate |
| handling to generate only one backend tree for all duplicates. |
| (FuncDeclaration::toObjFile): Likewise. |
| (VarDeclaration::toObjFile): Likewise. |
| * d-decls.cc (FuncDeclaration::toSymbol): Likewise. |
| (VarDeclaration::toSymbol): Likewise. |
| * d-objfile.cc (get_template_storage_info): Extract function from |
| setup_symbol_storage. |
| (setup_symbol_storage): Likewise. |
| * d-tree.h (lang_identifier): Add field for Dsymbol. |
| (IDENTIFIER_LANG_SPECIFIC): New macro. |
| (IDENTIFIER_DSYMBOL): Likewise. |
| |
| 2016-03-29 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (fill_alignment_field): Call layout_decl on field. |
| (finish_aggregate_type): Add assertion that TYPE_MODE is equal. |
| |
| 2016-03-29 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (convert_expr): Replace call build_integer_cst with |
| size_int. |
| (convert_for_assignment): Likewise. |
| (build_struct_comparison): Likewise. |
| (d_assert_call): Likewise. |
| * d-elem.cc (IdentityExp::toElem): Likewise. |
| (AssignExp::toElem): Likewise. |
| (IndexExp::toElem): Likewise. |
| (SymbolExp::toElem): Likewise. |
| (NewExp::toElem): Likewise. |
| (ArrayLiteralExp::toElem): Likewise. |
| (AssocArrayLiteralExp::toElem): Likewise. |
| |
| 2016-03-28 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-tree.h (CLASS_TYPE_P): New macro. |
| * d-codegen.cc (build_struct_literal): Check RECORD_OR_UNION_TYPE_P |
| before testing ANON_AGGR_TYPE_P. |
| (fill_alignment_field): New function. |
| (fill_alignment_holes): New function. |
| (finish_aggregate_type): Call fill_alignment_holes before computing |
| backend type mode. |
| |
| 2016-03-28 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-tree.h (D_METHOD_CALL_EXPR): Removed `D_' prefix from macro, |
| updated all callers. |
| (D_TYPE_IMAGINARY_FLOAT): Likewise. |
| (D_LABEL_VARIABLE_CASE): Likewise. |
| * d-codegen.cc (build_delegate_cst): Always return valid constructor. |
| (get_object_method): Remove function. |
| (build_vindex_ref): New function. |
| * d-elem.cc (FuncExp::toElem): Use the real function pointer type when |
| converting to delegate. |
| (CallExp::toElem): Handle setting up virtual functions directly. |
| (DelegateExp::toElem): Likewise. |
| (DotVarExp::toElem): Remove handling of virtual functions. |
| |
| 2016-03-28 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.h (lang_dtype): Remove function. |
| (lang_ddecl): Remove function. |
| * d-tree.h (TYPE_LANG_FRONTEND): New macro, replace all uses of |
| lang_dtype function. |
| (DECL_LANG_FRONTEND): New macro. |
| * d-attribs.c: Update includes. |
| * d-builtins.cc: Likewise. |
| * d-codegen.cc: Likewise. |
| * d-incpath.cc: Likewise. |
| * d-lang.cc: Likewise. |
| * d-objfile.cc: Likewise. |
| |
| 2016-03-27 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.h (function_type_p): Remove function. |
| * d-codegen.cc (d_build_call): Use FUNC_OR_METHOD_P macro. |
| (build_bounds_condition): Update signature. |
| (d_assert_call): Likewise. |
| (insert_aggregate_field): Likewise. |
| * d-objfile.cc (get_linemap): Likewise. |
| * d-lang.h: Remove file, updated all includes. Moved forward |
| declarations of types and functions to ... |
| * d-tree.h: ... here. |
| |
| 2016-03-20 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (d_checked_index): Remove function. |
| (d_bounds_condition): Remove function. |
| (build_bounds_condition): New function. |
| * d-elem.cc (IndexExp::toElem): Use build_bounds_condition. |
| (SliceExp::toElem): Likewise. |
| (EqualExp::toElem): Convert expressions to dynamic arrays when |
| inlining comparison. Don't pass zero length arrays to memcmp. |
| |
| 2016-03-19 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (d_array_convert): New function overload. |
| * d-elem.cc (CatExp::toElem): Call new runtime function _d_arraycatnTX |
| when flattening multiple concatenations. |
| (NewExp::toElem): Update call construction for new signatures of |
| runtime functions _d_newarraymTX and _d_newarraymiTX. |
| * runtime.def (NEWARRAYMTX): Update signature. |
| (NEWARRAYMITX): Likewise, |
| (ARRAYCATNT): Remove runtime function. |
| (ARRAYCATNTX): New runtime function. |
| |
| 2016-03-07 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * imports.cc (ImportVisitor::visit(Declaration)): Don't assume toSymbol |
| method will cache it's result. |
| |
| 2016-03-06 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * dfrontend: Update root library to 2.068. |
| * Make-lang.in (D_DMD_OBJS): Add newdelete.o |
| * d-target.cc (Target::classinfosize): New variable, replaces all uses |
| of global CLASSINFO_SIZE. |
| (Target::init): Initialize it. |
| * d-decls.cc (ClassInfoDeclaration::toSymbol): Remove function. |
| |
| 2016-03-05 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * dfrontend: Update to D front-end version 2.067. |
| * Make-lang.in (D_DMD_OBJS): Add new frontend sources. |
| * d-builtins.cc (d_build_builtins_module): Update signature. |
| (maybe_set_builtin): Rename to d_maybe_set_builtin, update signature. |
| (d_gcc_magic_module): Remove function. |
| * d-codegen.cc (expand_volatile_load): New function. |
| (expand_volatile_store): New function. |
| (expand_intrinsic): Handle volatileLoad and volatileStore intrinsics. |
| * d-decls.cc (Module::toModuleAssert): Remove function. |
| (Module::toModuleUnittest): Remove function. |
| (Module::toModuleArray): Remove function. |
| (TypeAArray::aaGetSymbol): Remove function. |
| * d-elem.cc (AssignExp::toElem): Call _d_arrayassign_{l,r} when |
| generating dynamic array assignment. |
| (IndexExp::toElem): Call _aaGetY when indexing an associative array. |
| (SliceExp::toElem): Use known CTFE result to check whether bounds |
| checks are necessary. |
| (DeleteExp::toElem): Call _d_delstruct when deleting a struct pointer. |
| (Expression::toElemDtor): Don't run cleanup of temporary if it's |
| constructor thrown an exception. |
| (NewExp::toElem): Handle special construction of new() arguments. |
| * d-glue.cc (Loc::Loc): Update signature. |
| (error): Likewise. |
| (toInitializer): New function. |
| * d-lang.cc (d_handle_option): Replace deprecated handlers. |
| (d_post_options): Set flag_max_errors. |
| (d_parse_file): Process any modules marked as builtin. |
| * d-objfile.cc (ClassDeclaration::toObjFile): Don't write out ctors |
| in the vtable marked @disable. |
| * d-target.cc (Target::loadModule): New function. |
| (Target::checkVectorType): New function. |
| * d-specs.c (lang_specific_driver): Handle -v option. |
| * lang-specs.h: Pass -v option to to frontend. |
| |
| 2016-03-04 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * imports.cc: New file. |
| * d-decls.cc (Dsymbol::toImport): Remove function, update all callers |
| to use build_import_decl. |
| |
| 2016-03-03 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-objfile.cc (gcc_attribute_p): New function. |
| (output_declaration_p): Inline into FuncDeclaration::ObjFile. |
| (unnest_function): Likewise. |
| (FuncDeclaration::toObjFile): Remove named parameter, update all |
| callers to ignore it. |
| (d_comdat_group): Use DECL_ASSEMBLER_NAME for the comdat group. |
| (d_comdat_linkage): Catch duplicate instantiations of templates, put |
| them in the same comdat group. |
| (setup_symbol_storage): Mark templates not to be written as abstract. |
| (d_finish_function): Don't send DECL_ABSTRACT_P functions to backend. |
| (d_finish_compilation): Mark all symbols as needed. |
| |
| * d-objfile.cc: Remove redundant bool parameter from all lowering |
| routines for symbols, update all callers. |
| |
| 2016-02-22 Eugene Wissner <belka@caraus.de> |
| |
| * d-lang.cc (d_init): Remove short_double parameter from |
| build_common_tree_nodes. |
| |
| 2016-02-20 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * intrinsics.def: Split signature macros into three groups. |
| Attributes, types, and helper generators. |
| * d-elem.cc (needsPostblit): Change signature to return boolean, |
| updated all callers. |
| (AssignExp::toElem): Don't assign destination to a temporary in |
| arraycopy call. |
| * toir.cc (IRVisior::visit(ThrowStatement)): Use NOP_EXPR cast to |
| convert thrown exception to Object. |
| (IRVisitor::visit(TryCatchStatement)): Use NOP_EXPR cast to convert |
| caught Object to thrown exception. |
| * d-codegen.cc (void_okay_p): Lazily build the convert to type. |
| * d-lang.cc (parse_int): Remove function. |
| (d_handle_option): Use integral_argument to parse numbers. |
| |
| * d-codegen.cc (lower_struct_comparison): Built custom type if |
| lang_hooks.types.type_for_mode returns nothing. |
| * d-lang.cc (d_type_for_mode): Always support cent/ucent modes. |
| (d_type_for_size): Add support for cent/ucent precision types. |
| (d_signed_or_unsigned_type): Always support cent/ucent precisions. |
| |
| * d-codegen.cc (d_build_call): Remove type promotion handling for |
| variadic arguments. |
| (expand_intrinsic_vaarg): Likewise. |
| * d-lang.cc (d_type_promotes_to): Likewise. |
| |
| * d-elem.cc (AddrExp::toElem): Take address of the static const symbol |
| for the struct literal, not the const constructor. |
| (CallExp::toElem): Don't pass generated static struct literal symbol |
| as the object parameter for DotVar call expressions. |
| |
| * d-codegen.cc (type_va_array): New function. |
| (declaration_type_kind): Remove function. |
| (declaration_reference_p): New function, update all callers of |
| declaration_type_kind. |
| (argument_type_kind): Remove function. |
| (argument_reference_p): New function, update all callers of |
| argument_type_kind. |
| (build_address): Remove special handling of static array va_list. |
| * d-codegen.h (type_kind): Remove enum. |
| |
| 2016-02-18 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_condition): New function. Update all callers |
| that generate a COND_EXPR that returns a value to use it. |
| (build_vcondition): New function. Update all callers that generate a |
| void COND_EXPR to use it. |
| * toir.cc (IRVisitor::visit(DoStatement)): Build a COND_EXPR instead |
| of an EXIT_EXPR to break from the loop. |
| (IRVisitor::visit(ForStatement)): Likewise. |
| |
| 2016-02-14 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-elem.cc: Remove redundant IRState parameter from all lowering |
| routines for expressions, update all callers. |
| |
| 2016-02-07 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (build_array_set): Use POSTINCREMENT_EXPR to adjust |
| array pointer. |
| (identity_compare_p): New function. |
| (build_struct_memcmp): Refactor into ... |
| (lower_struct_comparison): ... New function. |
| (build_struct_comparison): New function. |
| (build_array_struct_comparison): New function. |
| * d-elem.cc (IdentityExp::toElem): Use build_struct_comparison for |
| RECORD_TYPE values. |
| (EqualExp::toElem): Likewise. |
| Use memcmp for array of structs that pass test for identity_compare_p, |
| or fallback to build_array_struct_comparison. |
| (NewExp::toElem): Remove setting of StructLiteralExp::fillHoles. |
| (StructLiteralExp::toElem): Ignore StructLiteralExp::fillHoles, unless |
| building a union literal. |
| |
| 2016-02-03 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-elem.cc (AssignExp::toElem): Pass parameters for arraycopy and |
| arrayassign in the correct order. |
| |
| 2016-01-31 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * longdouble.h (longdouble): Use one contiguous array for the |
| real_value data payload. |
| |
| 2016-01-23 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * toir.cc (IRVisitor::visit (ExtAsmStatement): Do validation of input |
| and output constraints, marking operands as addressable if requested. |
| |
| 2016-01-10 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (empty_aggregate_p): New function. |
| (d_build_call): Don't pass empty aggregates by value. |
| (build_struct_memcmp): Don't compare empty aggregates by value. |
| * d-elem.cc (IdentityExp::toElem): Likewise. |
| (EqualExp::toElem): Likewise. |
| * (StructLiteralExp::toElem): Don't create temporaries or initialize |
| holes for empty aggregates. |
| * d-lang.cc (empty_modify_p): New function. |
| (d_gimplify_expr): Remove assignments that involve empty aggregates. |
| |
| 2016-01-09 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-builtins.cc (d_builtin_type): Define DEF_FUNCTION_TYPE_9, |
| DEF_FUNCTION_TYPE_10, and DEF_FUNCTION_TYPE_11. |
| (d_init_builtins): Likewise. |
| * d-longdouble.cc (machineMode): Remove function. |
| (longdouble::init): Don't use initialize real format by reference. |
| (longdouble::operator+): Use real_arithmetic instead of |
| REAL_ARITHMETIC. |
| (longdouble::operator-): Likewise. |
| (longdouble::operator*): Likewise. |
| (longdouble::operator/): Likewise. |
| (longdouble::operator%): Likewise. |
| * d-port.cc (Port::isSignallingNan): Use REAL_VALUE_ISSIGNALING_NAN. |
| (Port::fequal): Use real_identical instead of REAL_VALUES_IDENTICAL. |
| * d-target.cc: Include stor-layout.h header. |
| * lang.opt: Remove documentation for switches defined elsewhere. |
| |
| 2016-01-09 Iain Buclaw <ibuclaw@gdcproject.org> |
| |
| * d-codegen.cc (get_libcall): Use set_call_expr_flags to apply runtime |
| function attributes. |
| * d-codegen.h (LibCallFlag): Remove type. |
| * runtime.def: Replace LibCallFlag with ECF everywhere. |
| |
| |
| Copyright (C) 2016 Free Software Foundation, Inc. |
| |
| Copying and distribution of this file, with or without modification, |
| are permitted in any medium without royalty provided the copyright |
| notice and this notice are preserved. |