mirror of
https://forge.sourceware.org/marek/gcc.git
synced 2026-02-22 12:00:11 -05:00
Rotate ChangeLog files for ChangeLogs with yearly cadence. Also remove empty lines before Form Feed line.
1262 lines
48 KiB
Plaintext
1262 lines
48 KiB
Plaintext
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.
|