mirror of
https://github.com/autc04/Retro68.git
synced 2024-06-27 04:29:39 +00:00
772 lines
30 KiB
Plaintext
772 lines
30 KiB
Plaintext
2015-10-07 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-decls.cc (StructLiteralExp::toSymbol): Use letter prefix for
|
||
anonymous name. Don't set TREE_READONLY.
|
||
(ClassReferenceExp::toSymbol): Likewise.
|
||
|
||
2015-10-06 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (build_struct_literal): New function.
|
||
(layout_aggregate_members): Handle variables that are really tuples.
|
||
* d-elem.cc (StructLiteralExp::toElem): Handle slicing void arrays.
|
||
Use build_struct_literal to handle anonymous records.
|
||
* d-lang.h (d_unknown_type_node): Rename to unknown_type_node, update
|
||
in all files.
|
||
|
||
2015-10-03 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (build_two_field_type): Use DECL_FIELD_CONTEXT to access
|
||
field context decl.
|
||
(build_frame_type): Likewise.
|
||
(lookup_anon_field): New function.
|
||
(component_ref): Use it.
|
||
(fixup_anonymous_offset): New function.
|
||
(layout_aggregate_members): New function.
|
||
(layout_aggregate_type): Move generation of fields into
|
||
layout_aggregate_members.
|
||
(insert_aggregate_field): Update signature, update all callers.
|
||
(finish_aggregate_type): Likewise.
|
||
* d-todt.cc (dt_container2): Use DECL_FIELD_CONTEXT to access field
|
||
context decl.
|
||
* types.cc (TypeVisitor::visit (TypeStruct)): Likewise.
|
||
(TypeVisitor::visit (TypeClass)): Likewise.
|
||
* d-tree.h (ANON_AGGR_TYPE_P): New type macro.
|
||
|
||
2015-08-25 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-builtins.cc (maybe_set_builtin_1): Remove va_list handling.
|
||
(d_init_builtins): Don't represent static array va_list as reference.
|
||
* d-codegen.cc (convert_for_argument): Handle va_list as a static array.
|
||
(declaration_type): Likewise.
|
||
(type_passed_as): Likewise.
|
||
(decl_reference_p): Renamed to declaration_type_kind, update to return
|
||
how type is represented internally, updated all callers.
|
||
(arg_reference_p): Renamed to argument_type_kind, update to return how
|
||
type is represented internally, updated all callers.
|
||
* d-codegen.h (type_kind): Declare.
|
||
|
||
2015-08-22 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* toir.cc (IRVisitor::visit (TryCatchStatement)): Always emit call to
|
||
LIBCALL_BEGIN_CATCH at the start of the catch.
|
||
* d-elem.cc (AssertExp::toElem): Stabilize reference to class object
|
||
before passing it to _d_invariant.
|
||
|
||
2015-08-20 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* toir.cc (IRVisitor::visit): Set input location in all visitors that
|
||
either throw an ICE or sorry message.
|
||
|
||
2015-08-19 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* Make-lang.in: Replace uses of $(target_alias) with
|
||
$(target_noncanonical).
|
||
|
||
2015-08-17 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* types.cc (TypeVisitor::visit (TypeEnum)): Set ENUM_IS_SCOPED on all
|
||
enumeral types.
|
||
* d-lang.cc (d_init_options_struct): Remove setting
|
||
flag_evaluation_order.
|
||
|
||
2015-08-10 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-elem.cc (HaltExp::toElem): Use __builtin_trap to halt execution,
|
||
rather than the library abort() call.
|
||
|
||
2015-08-07 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (build_closure): Update signature, update all callers.
|
||
(build_vthis): Likewise.
|
||
(get_frame_for_symbol): Likewise.
|
||
(build_local_var): Likewise.
|
||
(get_decl_tree): Likewise.
|
||
(start_function): Likewise.
|
||
* d-irstate.h (IRState): Move func, mod, sthis, deferred,
|
||
statementList, and varsInScope fields to...
|
||
* d-tree.h (language_function): Here, updated all uses.
|
||
* d-irstate.h: Remove file.
|
||
(IRState): Remove all uses everywhere.
|
||
|
||
2015-08-07 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* Make-lang.in (D_GLUE_OBJS): Remove d-irstate.o.
|
||
* d-tree.h (d_label_use_entry): New structure.
|
||
(d_label_entry): New structure.
|
||
(binding_level): Add level_kind field.
|
||
(language_function): Add hash table field for labels.
|
||
(D_LABEL_VARIABLE_CASE): New macro.
|
||
* d-codegen.cc (pop_binding_label): New function.
|
||
(pop_label): New function.
|
||
(push_binding_level): Update signature.
|
||
(pop_binding_level): Update signature. Handle declared or used labels.
|
||
(build_array_set): Update for push/pop binding changes.
|
||
(check_goto): New function.
|
||
(check_previous_goto): New function.
|
||
(d_lookup_label): Remove function.
|
||
(lookup_label): New function.
|
||
(lookup_bc_label): New function.
|
||
(define_label): New function.
|
||
* d-objfile.cc (FuncDeclaration::toObjFile): Update for push/pop binding
|
||
changes.
|
||
* toir.cc (IRVisitor): Add break and continue label fields.
|
||
(IRVisitor::IRVisitor): Initialize here.
|
||
(IRVisitor::start_scope): Update signature.
|
||
(IRVisitor::end_scope): Return the finished scope, updated all callers.
|
||
(IRVisitor::push_break_label): New function.
|
||
(IRVisitor::pop_break_label): New function.
|
||
(IRVisitor::push_continue_label): New function.
|
||
(IRVisitor::pop_continue_label): New function.
|
||
(IRVisitor::start_condition): Remove function.
|
||
(IRVisitor::start_else): Remove function.
|
||
(IRVisitor::end_condition): Remove function.
|
||
(IRVisitor::start_catches): Remove function.
|
||
(IRVisitor::start_catch): Remove function.
|
||
(IRVisitor::end_catch): Remove function.
|
||
(IRVisitor::end_catches): Remove function.
|
||
(IRVisitor::start_finally): Remove function.
|
||
(IRVisitor::end_finally): Remove function.
|
||
(IRVisitor::start_case): Remove function.
|
||
(IRVisitor::end_case): Remove function.
|
||
* d-irstate.cc: Remove.
|
||
|
||
2015-08-06 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* config-lang.in (gtfiles): Replace d-lang.h for d-tree.h
|
||
* d-lang.h: Move all GTY structures to d-tree.h, updated all source
|
||
header dependencies.
|
||
* d-tree.h: New file.
|
||
|
||
2015-08-04 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* toir.cc (IRVisitor::start_condition): Don't cache condition.
|
||
(IRVisitor::start_else): Return the then body, updated all callers.
|
||
(IRVisitor::end_condition): Update signature.
|
||
(IRVisitor::start_catches): Return the try body, updated all callers.
|
||
(IRVisitor::start_catch): Don't cache catch type.
|
||
(IRVisitor::end_catch): Update signature.
|
||
(IRVisitor::end_catches): Update signature.
|
||
(IRVisitor::start_finally): Return the try body, updated all callers.
|
||
(IRVisitor::end_finally): Update signature.
|
||
(IRVisitor::start_case): Don't cache the condition.
|
||
(IRVisitor::end_case): Update signature.
|
||
* d-codegen.cc (convert_for_assignment): Use size_type_node for index.
|
||
* d-irstate.cc (IRState::beginFlow): Remove call to push_stmt_list.
|
||
|
||
2015-08-04 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (push_stmt_list): New function.
|
||
(pop_stmt_list): New function.
|
||
(add_stmt): New function.
|
||
(start_function): New function.
|
||
(end_function): New function.
|
||
(expand_decl): Update to use new interface.
|
||
(build_closure): Likewise.
|
||
(push_binding_level): Moved from d-lang.cc.
|
||
(pop_binding_level): Likewise.
|
||
* d-lang.cc (d_init): Inline call to init_global_binding_level.
|
||
(alloc_binding_level): Remove function.
|
||
(push_binding_level): Remove function.
|
||
(pop_binding_level): Remove function.
|
||
(init_global_binding_level): Remove function.
|
||
(set_decl_binding_chain): Remove function.
|
||
* d-elem.cc (DeclarationExp::toElem): Likewise.
|
||
* d-objfile.cc (VarDeclaration::toObjFile): Likewise.
|
||
(FuncDeclaration::toObjFile): Likewise.
|
||
* toir.cc (IRVisitor::start_scope): Moved from d-irstate.cc, updated
|
||
all callers in IRVisitor.
|
||
(IRVisitor::end_scope): Likewise.
|
||
(IRVisitor::is_return_label): Likewise.
|
||
(IRVisitor::do_label): Likewise.
|
||
(IRVisitor::do_jump): Likewise.
|
||
(IRVisitor::start_condition): Likewise.
|
||
(IRVisitor::start_else): Likewise.
|
||
(IRVisitor::end_condition): Likewise.
|
||
(IRVisitor::start_catches): Likewise.
|
||
(IRVisitor::start_catch): Likewise.
|
||
(IRVisitor::end_catch): Likewise.
|
||
(IRVisitor::end_catches): Likewise.
|
||
(IRVisitor::start_finally): Likewise.
|
||
(IRVisitor::end_finally): Likewise.
|
||
(IRVisitor::end_loop): Likewise.
|
||
(IRVisitor::start_case): Likewise.
|
||
(IRVisitor::end_case): Likewise.
|
||
(build_ir): Update signature.
|
||
|
||
2015-08-01 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* Make-lang.in (DMD_COMPILE): Declare as COMPILE with WARN_CXXFLAGS
|
||
replaced with DMD_WARN_CXXFLAGS.
|
||
(DMDGEN_COMPILE): Declare as DMD_COMPILE but with COMPILER replaced
|
||
with COMPILER_FOR_BUILD.
|
||
(d/idgen): Use LINKER_FOR_BUILD.
|
||
(d/impcvgen): Likewise.
|
||
(d/%.o): Use DMD_COMPILE and POSTCOMPILE.
|
||
(d/%.dmdgen.o): Use DMDGEN_COMPILE and POSTCOMPILE.
|
||
|
||
2015-07-27 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (current_irstate): Remove.
|
||
(d_build_call): Check cfun before dereferencing.
|
||
* d-codegen.h (current_irstate): Redefine as macro.
|
||
* d-irstate.cc (IRState::IRState): Remove.
|
||
(IRState::startFunction): Initialize language-specific cfun field.
|
||
(IRState::endFunction): Free language-specific cfun field.
|
||
* d-lang.cc (d_parse_file): Don't initialize current_irstate.
|
||
* d-lang.h (language_function): Add irs field.
|
||
* d-objfile.cc (Dsymbol::toObjFile): Check cfun.
|
||
(FuncDeclaration::toObjFile): Adjust start and end calls.
|
||
|
||
2015-07-26 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-irstate.cc (IRState::doArraySet): Remove function.
|
||
* d-codegen.cc (build_array_set): New function.
|
||
* d-elem.cc (AssignExp::toElem): Use build_array_set.
|
||
(StructLiteralExp::toElem): Likewise.
|
||
|
||
* d-codegen.cc (build_array_set): Don't set this_block, update call to
|
||
pop_binding_level.
|
||
* d-irstate.cc (IRState::endFunction): Update assert.
|
||
(IRState::startScope): Move IRState::startBindings here, clean-up.
|
||
(IRState::endScope): Move IRState::endBindings here, clean-up.
|
||
(IRState::startBindings): Remove function.
|
||
(IRState::endBindings): Likewise.
|
||
(IRState::currentScope): Likewise.
|
||
(IRState::scopes_): Remove.
|
||
* d-lang.cc (pop_binding_level): Update signature, clean-up.
|
||
(d_pushdecl): Don't set names_end.
|
||
(binding_level::names_end): Remove.
|
||
(binding_level::this_block): Remove.
|
||
(FuncDeclaration::toObjFile): Clean-up.
|
||
|
||
2015-07-24 Sebastien Alaiwan <sebastien.alaiwan@gmail.com>
|
||
|
||
* d-lang.cc (deps_write): Use StringTable instead of hash_set of string
|
||
pointers.
|
||
|
||
2015-07-23 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-attribs.h: Adjust includes.
|
||
* d-builtins.cc: Likewise.
|
||
* d-codegen.cc: Likewise.
|
||
* d-convert.cc: Likewise.
|
||
* d-decls.cc: Likewise.
|
||
* d-elem.cc: Likewise.
|
||
* d-glue.cc: Likewise.
|
||
* d-incpath.cc: Likewise.
|
||
* d-irstate.cc: Likewise.
|
||
* d-lang.cc: Likewise.
|
||
* d-longdouble.cc: Likewise.
|
||
* d-objfile.cc: Likewise.
|
||
* d-port.cc: Likewise.
|
||
* d-target.cc: Likewise.
|
||
* d-todt.cc: Likewise.
|
||
* toir.cc: Likewise.
|
||
* types.cc: Likewise.
|
||
|
||
2015-07-22 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (convert_expr): Warn about casts between imaginary
|
||
and non-imaginary types.
|
||
* d-convert (d_convert_basic): Rename to convert, handle conversions
|
||
between complex and imaginary types.
|
||
(convert): Remove.
|
||
(d_build_truthvalue_op): Update to call convert.
|
||
(d_truthvalue_conversion): Likewise.
|
||
|
||
* d-builtins.cc (d_init_builtins): Build imaginary types as distinct
|
||
floating point type nodes.
|
||
* d-codegen.cc (build_float_modulus): Update to handle imaginary types.
|
||
(d_array_type): Use the front-end equivalent of sizetype to represent
|
||
the index type of arrays.
|
||
(build_array_index): Likewise.
|
||
(build_offset_op): Likewise.
|
||
(expand_intrinsic): Only get the inner callee if it's an address.
|
||
|
||
* d-codegen.h (component_ref, modify_expr, vmodify_expr, build_vinit)
|
||
(build_nop, build_vconvert, build_boolop, compound_expr)
|
||
(vcompound_expr, real_part, imaginary_part): Move to d-codegen.cc,
|
||
use fold build functions for codegen.
|
||
* d-codeden.cc (build_address): Use build_fold_addr_expr_with_type,
|
||
remove special handling of taking an address of an indirect ref.
|
||
(return_expr): New function.
|
||
(complex_expr): New function.
|
||
(indirect_ref): Use fold build functions for codegen.
|
||
(build_deref): Likewise.
|
||
(build_array_index): Likewise.
|
||
(build_offset_op): Likewise.
|
||
(void_okay_p): Likewise.
|
||
(build_binary_op): Likewise.
|
||
(build_float_modulus): Likewise.
|
||
* d-objfile.cc (FuncDeclaration::toObjFile): Likewise.
|
||
* d-elem.cc (MinExp::toElem): Likewise.
|
||
(AddExp::toElem): Likewise.
|
||
(NotExp::toElem): Likewise.
|
||
(ComExp::toElem): Likwise.
|
||
(NegExp::toElem): Likewise.
|
||
* d-irstate.cc (IRState::doLabel): Likewise.
|
||
(IRState::doReturn): Likewise.
|
||
(IRState::doJump): Likewise.
|
||
|
||
* d-attribs.c: Adjust includes for flags.h changes.
|
||
* d-builtins.cc: Likewise.
|
||
* d-codegen.cc: Likewise.
|
||
* d-convert.cc: Likewise.
|
||
* d-elem.cc: Likewise.
|
||
* d-decls.cc: Likewise.
|
||
* d-glue.cc: Likewise.
|
||
* d-incpath.cc: Likewise.
|
||
* d-irstate.cc: Likewise.
|
||
* d-lang.cc: Likewise.
|
||
* d-longdouble.cc: Likewise.
|
||
* d-objfile.cc: Likewise.
|
||
* d-port.cc: Likewise.
|
||
* d-target.cc: Likewise.
|
||
* d-todt.cc: Likewise.
|
||
* toir.cc: Likewise.
|
||
* types.cc: Likewise.
|
||
|
||
2015-07-20 Sebastien Alaiwan <sebastien.alaiwan@gmail.com>
|
||
|
||
* d-lang.cc (is_system_module): Extract function.
|
||
(write_one_dep): Extract function.
|
||
(deps_write): Eliminate duplicated dependencies, include
|
||
indirect and private dependencies.
|
||
|
||
2015-07-19 Sebastien Alaiwan <sebastien.alaiwan@gmail.com>
|
||
|
||
* d-lang.cc (d_parse_file): Set ref flag on the module and make deps
|
||
file handle.
|
||
|
||
2015-07-11 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (convert_for_assignment): Remove handling of zero
|
||
initialising a structure using memset.
|
||
(d_build_call): Removing handling of setting of return slot
|
||
optimisation on in call expression.
|
||
* d-elem.cc (AssignExp::toElem): Emit a memset to zero initialise
|
||
structures here. Set return slot optimisation on construction of
|
||
static arrays and structs only.
|
||
|
||
2015-07-07 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (expand_intrinsic_arith): Use build_deref to handle
|
||
ref parameters being used for the 'overflow' parameter.
|
||
|
||
2015-07-03 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-elem.cc (StringExp::toElem): Zero-terminate all string literals
|
||
types, except for static arrays.
|
||
* d-objfile.cc (build_type_decl): Add TYPE_DECLs to global declarations,
|
||
don't call rest_of_decl_declaration.
|
||
(d_finish_compilation): Call rest_of_decl_declaration on TYPE_DECLs.
|
||
(Dsymbol::toObjFile): Don't try to handle tuples when emitting import
|
||
declarations to debug.
|
||
* d-builtins.cc (builtin_sym): Use StructDeclaration for decl field.
|
||
(build_dtype): Don't handle anonymous structs. Create a stub parent
|
||
module for the declaration symbol.
|
||
(d_build_builtins_module): Always override the parent module of
|
||
converted struct declarations.
|
||
(maybe_set_builtin_1): Convert all static array parameters to ref
|
||
parameters, not just va_list.
|
||
|
||
2015-07-01 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-attribs.c (d_handle_section_attribute): Use VAR_P throughout.
|
||
(d_handle_weak_attribute): Use VAR_OR_FUNCTION_DECL_P.
|
||
* d-codegen.cc (convert_for_assignment): Use VAR_P.
|
||
* d-lang.cc (pop_binding_level): Likewise.
|
||
(d_types_compatible_p): Likewise.
|
||
* d-objfile.cc (setup_symbol_storage): Likewise.
|
||
(mark_needed): Likewise.
|
||
(d_finish_compilation): Likewise.
|
||
|
||
2015-06-30 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* intrinsics.def: Added ADDS, ADDSL, ADDU, ADDUL, SUBS, SUBSL, NEGS,
|
||
NEGSL, MULS, MULSL, MULU, and MULUL intrinsic definitions.
|
||
* d-codegen.cc (expand_intrinsic_arith): New function.
|
||
(expand_intrinsic): Add cases for core.checkedint functions adds, addu,
|
||
subs, subu, negs, muls, and mulu intrinsics.
|
||
|
||
2015-06-27 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* Make-lang.in (D_DMD_H): Remove.
|
||
(D_TREE_H): Likewise.
|
||
(CFLAGS-d/d-spec.o): Declare extra CFLAGS for building driver.
|
||
(d-warn): Declare default warning flags for compiler.
|
||
(D_DMD_OBJS): Remove 'dmd' from the object file suffix.
|
||
(D_GLUE_OBJS): Remove 'cglue' and 'glue' from object file suffix.
|
||
(D_GENERATED_OBJS): Remove 'gen' from the object file suffix.
|
||
(D_BORROWED_C_OBJS): Remove.
|
||
(CFLAGS-d/id.o): Declare extra CFLAGS for building generated sources.
|
||
(CFLAGS-d/impcnvtab.o): Likewise.
|
||
* types.cc (TypeVisitor::visit (TypeClass)): Build a pointer type for
|
||
classes, not a reference type.
|
||
* types.cc (TypeVisitor::visit (TypeDelegate)): Don't build a
|
||
METHOD_TYPE for delegates, as that requires knowing the underlying
|
||
record type for the 'this' object parameter.
|
||
(TypeVisitor::visit (TypeEnum): Don't call rest_of_type_compilation.
|
||
(TypeVisitor::visit (TypeClass): Likewise.
|
||
(TypeVisitor::visit (TypeStruct): Likewise.
|
||
* d-decls.cc (TypeInfoDeclaration::toSymbol): Assert class is a pointer
|
||
type, not a reference type.
|
||
(FuncDeclaration::toSymbol): Don't convert nested functions into a
|
||
METHOD_TYPE to be strictly compatible with delegates.
|
||
* d-codegen.cc (convert_for_argument): Use correct accessors for array
|
||
.ptr and .length properties.
|
||
(expand_intrinsic_vaarg): Don't remove the va_list pointer reference,
|
||
as the backend now assumes this is what the front-end sets up.
|
||
(d_build_call): Remove assert as delegates and nested functions are no
|
||
longer represented as METHOD_TYPE.
|
||
(build_vthis_type): New function.
|
||
(d_decl_context): Don't set static/__gshared declaration context as
|
||
anything other than the enclosing module of the declaration.
|
||
* toir.cc (IRVisitor::visit (ExtAsmStatement)): Support named labels by
|
||
calling resolve_asm_operand_names.
|
||
* d-builtins.cc (d_backend_init): Remove.
|
||
(d_backend_term): Remove.
|
||
* d-lang.cc (d_write_global_declarations): Remove langhook.
|
||
(d_init): Move d_backend_init implementation here.
|
||
(d_parse_file): Move d_write_global_declarations implementation here.
|
||
(d_finish_compilation): Remove calls to finalize_compilation_unit,
|
||
check_global_declarations, and emit_debug_global_declarations.
|
||
(d-system.h): Remove file. Move all includes into local sources.
|
||
|
||
2015-06-22 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (d_build_call): Only apply CALL_EXPR_RETURN_SLOT_OPT to
|
||
calls returning an aggregate.
|
||
(expand_intrinsic): Use CALL_EXPR_FN and CALL_EXPR_ARG directly.
|
||
(layout_aggregate_type): Update signature.
|
||
(insert_aggregate_field): Likewise.
|
||
(finish_aggregate_type): Likewise.
|
||
* d-codegen.h (AggLayout): Remove helper class.
|
||
(AddrOfExpr): Remove helper class.
|
||
(CallExpr): Remove helper class.
|
||
* d-elem.cc (InExp::toElem): Use build_address directly.
|
||
(CatAssignExp::toElem): Likewise.
|
||
(IndexExp::toElem): Likewise.
|
||
(RemoveExp::toElem): Likewise.
|
||
* types.cc (TypeVisitor::visit (TypeFunction)): Only apply
|
||
TREE_ADDRESSABLE to function types returning an aggregate.
|
||
(TypeVisitor::visit (TypeStruct)): Update for layout_aggregate_type and
|
||
finish_aggregate_type changes.
|
||
(TypeVisitor::visit (TypeClass)): Likewise.
|
||
|
||
2015-06-21 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-objfile.cc (setup_symbol_storage): Mark declarations as private or
|
||
protected for the benefit of debug code.
|
||
* d-elem.cc (ArrayLiteralExp::toElem): Only set a value at the given
|
||
index in the array constructor if it is non-zero.
|
||
(AssignExp::toElem): Use memset it assigning/initialising an array with
|
||
all zeroes.
|
||
(IndexExp::toElem): Simplify codegen to use a placeholder variable for
|
||
the dollar length.
|
||
(SliceExp::toElem): Likewise.
|
||
* d-codegen.cc (ArrayScope): Remove helper class.
|
||
* Make-lang.in (cc1d$(exeext)): Use link mutex.
|
||
|
||
2015-05-03 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* Make-lang.in (D_GLUE_OBJS): Rename d-ctype.cc to types.cc.
|
||
(d-spec.o): Rename d-spec.cc to d-spec.c
|
||
* types.cc (build_ctype): New function.
|
||
(Type::toCtype): Convert toCtype methods to use Visitor interface.
|
||
|
||
2015-04-29 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* Make-lang.in (D_GLUE_OBJS): Add d-attribs.o. Remove d-gt.o.
|
||
* d-attribs.c: New file.
|
||
* d-builtins.cc: Move attribute handler functions to d-attribs.c
|
||
* d-lang.cc: Likewise. Added include for gtype-d.h from d-gt.cc.
|
||
* d-gt.cc: Remove file.
|
||
|
||
2015-04-27 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-builtins.cc, d-convert.cc, d-ctype.cc, d-decls.cc, d-elem.cc,
|
||
d-glue.cc, d-incpath.cc, d-irstate.cc, d-longdouble.cc, d-port.cc,
|
||
d-target.cc, d-typinf.cc, toir.cc: Re-order included headers.
|
||
* d-codegen.h, d-dmd-gcc.h, d-irstate.h, d-lang.h, d-objfile.cc,
|
||
d-system.h: Remove all includes from headers.
|
||
* d-codegen.cc: Re-order included headers.
|
||
(build_attributes): Use ctfeInterpret instead of optimize.
|
||
* d-lang.cc: Re-order included headers.
|
||
(d_init_options): Don't use tristate enum for flag_emit_templates.
|
||
(d_handle_option): Likewise.
|
||
* d-objfile.cc: Re-order included headers.
|
||
(output_declaration_p): Update check for flag_emit_templates.
|
||
(setup_symbol_storage): Likewise.
|
||
* d-todt.cc: Re-order included headers.
|
||
(ExpInitializer::toDt): Use ctfeInterpret instead of optimize.
|
||
(TypeInfoTupleDeclaration::toDt): Likewise.
|
||
|
||
2015-04-20 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (build_exception_object): Remove.
|
||
* runtime.def (BEGIN_CATCH): Declare runtime function __gdc_begin_catch.
|
||
* toir.cc (IRVisitor::visit::TryCatchStatement): Use LIBCALL_BEGIN_CATCH
|
||
to get the correct exception object for handler.
|
||
|
||
2015-04-18 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (d_build_call): Set CALL_EXPR_RETURN_SLOT_OPT on calls to
|
||
functions that return an aggregate or array that returns in memory.
|
||
(build_memref): New function.
|
||
(get_object_method): Use build_memref instead of building a
|
||
POINTER_PLUS_EXPR for vtable dereferences.
|
||
* d-objfile.cc (FuncDeclaration::toObjFile): Support NRVO on
|
||
ARRAY_TYPE's that may not return in registers.
|
||
* d-ctype.cc (TypeFunction::toCtype): Don't mark TREE_ADDRESSABLE when
|
||
returning non-POD types by reference.
|
||
|
||
2015-04-15 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-decls.cc (EnumDeclaration::toDebug): Remove.
|
||
(ClassDeclaration::toDebug): Remove.
|
||
(StructDeclaration::toDebug): Remove.
|
||
* d-ctype.cc (TypeEnum::toCtype): Call rest_of_type_compilation here.
|
||
(TypeClass::toCtype): Likewise.
|
||
(TypeStruct::toCtype): Likewise.
|
||
|
||
2015-04-12 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-objfile.cc (get_decl_tree): Check and generate correct code for when
|
||
a non-local 'this' is accessed through a closure pointer.
|
||
(FuncDeclaration::toObjFile): Remove check for _arguments.
|
||
* d-codegen.cc (build_local_var): Likewise.
|
||
|
||
2015-04-11 Johannes Pfau <johannespfau@gmail.com>
|
||
|
||
* d-objfile.cc (setup_symbol_storage): Mark functions without
|
||
body as DECL_EXTERNAL.
|
||
|
||
2015-04-08 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.cc (get_decl_tree): Get correct non-local 'this' decl by
|
||
constructing component reference through parent link of nested classes.
|
||
* d-builtins.cc (DEF_FUNCTION_TYPE_VAR_8): Remove.
|
||
(DEF_FUNCTION_TYPE_VAR_12): Likewise.
|
||
(DEF_FUNCTION_TYPE_VAR_7, DEF_FUNCTION_TYPE_VAR_11): New macros.
|
||
|
||
2015-04-07 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-objfile.cc (output_declaration_p): Remove check for semanticRun.
|
||
(FuncDeclaration::toObjFile): Name bool parameter force_p, allow it to
|
||
override the initial output_declaration_p check. Force run all
|
||
semantic passes for symbols that it routine is generating code for.
|
||
(d_finish_function): Don't mark TREE_STATIC on functions that are
|
||
really DECL_EXTERN.
|
||
(finish_thunk): Force thunks referencing external methods to be
|
||
expanded to gimple.
|
||
* d-decls.cc (FuncDeclaration::toThunkSymbol): Call toObjFile on all
|
||
thunk target functions.
|
||
|
||
2015-04-05 Johannes Pfau <johannespfau@gmail.com>
|
||
|
||
* d-lang.cc (d_handle_section_attribute): New function.
|
||
* d-builtins.cc (handle_alias_attribute): Move to d-lang.cc to
|
||
support attribute(alias) in user code.
|
||
* d-lang.cc (d_handle_alias_attribute): Ditto.
|
||
* d-lang.cc (d_handle_weak_attribute): New function.
|
||
* d-decls.cc (FuncDeclaration::toSymbol): Do not set
|
||
DECL_DECLARED_INLINE_P prematurely.
|
||
|
||
2015-03-21 Johannes Pfau <johannespfau@gmail.com>
|
||
|
||
* d-lang.cc (d_init): Add GNU_EMUTLS version.
|
||
* d-objfile.cc (build_emutls_function): New function.
|
||
* d-objfile.cc (VarDeclaration::toObjFile): Collect all TLS variables
|
||
in a module into tlsVars array.
|
||
* d-objfile.cc (genmoduleinfo): Add reference to __modtlsscan
|
||
function generated by build_emutls_function to moduleinfo.
|
||
|
||
2015-02-02 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* config-lang.in: Remove lang_requires_boot_languages.
|
||
* d-incpath.cc (iprefix): Remove global variable.
|
||
(multilib_dir): Ditto.
|
||
(prefixed_path): Add iprefix parameter.
|
||
(add_import_paths): Add iprefix and imultilib parameter.
|
||
Use cpp_include_defaults to get list of import paths.
|
||
* d-lang.cc (iprefix_dir): New static variable to cache -iprefix switch.
|
||
(imultilib_dir): New static variable to cache -imultilib switch.
|
||
(d_init): Pass iprefix_dir and imultilib_dir to add_import_paths.
|
||
(d_handle_option): Use new static variables.
|
||
|
||
2015-02-01 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-lang.cc: Remove d-confdef.h header.
|
||
* d-incpath.cc: Ditto.
|
||
* d-spec.cc: Ditto.
|
||
|
||
2015-01-31 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-incpath.cc (add_phobos_versyms): Remove function.
|
||
* d-lang.cc (d_init): Remove call to add_phobos_versyms.
|
||
|
||
2015-01-28 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-builtins.cc (DEF_FUNCTION_TYPE_VAR_8)
|
||
(DEF_FUNCTION_TYPE_VAR_12): New macros.
|
||
|
||
2015-01-24 Johannes Pfau <johannespfau@gmail.com>
|
||
|
||
* d-builtins.cc (d_build_builtins_module): Mark builtin functions
|
||
as @nogc.
|
||
|
||
2015-01-18 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* Make-lang.in: Update for D frontend changes.
|
||
* d-asmstmt.cc: Remove file.
|
||
* d-builtins.cc (build_dtype): No longer set struct handle.
|
||
(d_gcc_paint_type): Move to Target::paintAsType.
|
||
* d-codegen.cc (convert_expr): No longer call getImpl on associative
|
||
array conversions. Add case for converting void pointers to delegates.
|
||
(unhandled_arrayop_p): Remove.
|
||
(build_two_field_type): Use layout_type instead of building
|
||
TYPE_STUB_DECL and calling rest_of_decl_compilation.
|
||
(build_binop_assignment): New function.
|
||
(libcall_ids): Remove static variable.
|
||
(get_libcall): New function.
|
||
(maybe_set_intrinsic): Remove druntime library call handling.
|
||
(expand_intrinsic_vaarg): Dereference ref va_list parameters.
|
||
(build_closure): New function.
|
||
(WrappedExp::WrappedExp): Move to frontend sources.
|
||
(WrappedExp::toCBuffer): Ditto.
|
||
* d-codegen.h (LibCallFlag): New enum.
|
||
(LibCall): Use runtime.def macro to define members.
|
||
* d-ctype.cc (Type::toCParamtype): Remove function.
|
||
(TypeTypedef::toCParamtype): Ditto.
|
||
(TypeClass::toSymbol): Ditto.
|
||
(TypeFunction::retStyle): Move to retStyle.
|
||
(TypeSArray::toCParamtype): Ditto.
|
||
(Type::toSymbol): Ditto.
|
||
(Type::totym): Ditto.
|
||
(TypeFunction::totym): Ditto.
|
||
* d-decls.cc (Dsymbol::toSymbolX): Update for frontend changes.
|
||
(Dsymbol::toImport): Ditto.
|
||
(VarDeclaration::toSymbol): Ditto.
|
||
(FuncDeclaration::toSymbol): Ditto.
|
||
(InterfaceDeclaration::toSymbol): Use TREE_READONLY instead of
|
||
(EnumDeclaration::toDebug): Only call rest_of_type_compilation on
|
||
ENUMERAL_TYPE types.
|
||
TREE_CONSTANT to declare that the symbol cannot be modified.
|
||
(ClassDeclaration::toVtblSymbol): Ditto.
|
||
(AggregateDeclaration::toInitializer): Ditto.
|
||
(EnumDeclaration::toInitializer): Ditto.
|
||
(TypedefDeclaration::toInitializer): Remove function.
|
||
(TypedefDeclaration::toDebug): Ditto.
|
||
(Dsymbol::cvMember): Remove stub function.
|
||
(EnumDeclaration::cvMember): Ditto.
|
||
(FuncDeclaration::cvMember): Ditto.
|
||
(VarDeclaration::cvMember): Ditto.
|
||
(TypedefDeclaration::cvMember): Ditto.
|
||
* d-elem.cc (XorExp::toElem): Remove call to unhandled_arrayop_p.
|
||
(OrExp::toElem): Ditto.
|
||
(AndExp::toElem): Ditto.
|
||
(UshrExp::toElem): Ditto.
|
||
(ShrExp::toElem): Ditto.
|
||
(ShlExp::toElem): Ditto.
|
||
(ModExp::toElem): Ditto.
|
||
(DivExp::toElem): Ditto.
|
||
(MulExp::toElem): Ditto.
|
||
(MinExp::toElem): Ditto.
|
||
(AddExp::toElem): Ditto.
|
||
(XorAssignExp::toElem): Ditto.
|
||
(OrAssignExp::toElem): Ditto.
|
||
(AndAssignExp::toElem): Ditto.
|
||
(UshrAssignExp::toElem): Ditto.
|
||
(ShrAssignExp::toElem): Ditto.
|
||
(ShlAssignExp::toElem): Ditto.
|
||
(ModAssignExp::toElem): Ditto.
|
||
(DivAssignExp::toElem): Ditto.
|
||
(MulAssignExp::toElem): Ditto.
|
||
(PowAssignExp::toElem): Ditto.
|
||
(MinAssignExp::toElem): Ditto.
|
||
(AddAssignExp::toElem): Ditto.
|
||
(BinExp::toElemBin): Move to build_binop_assignment.
|
||
(AssignExp::toElem): Update for frontend changes.
|
||
(DelegatePtrExp::toElem): New function.
|
||
(DelegateFuncptrExp::toElem): New function.
|
||
(DelegateExp::toElem): Update for frontend changes.
|
||
(FuncExp::toElem): Ditto.
|
||
(NewExp::toElem): Ditto.
|
||
(StringExp::toElem): Don't set TREE_READONLY on string literals.
|
||
(AssocArrayLiteralExp::toElem): Remove codegen rewrite for new
|
||
associative array implementation.
|
||
* d-glue.cc (Global::isSpeculativeGagging): Remove function.
|
||
(Dsymbol::ungagSpeculative): Ditto.
|
||
(Ungag::~Ungag): Ditto.
|
||
(Loc::toChars): Update for new column diagnostic support.
|
||
(Loc::Loc): Ditto.
|
||
(Loc::equals): Ditto.
|
||
(error): Ditto.
|
||
(binary): Remove function.
|
||
(asmSemantic): New function.
|
||
(retStyle): New function.
|
||
(FuncDeclaration::isBuiltin): Rename to isBuiltin.
|
||
* d-intrinsics.def: Rename to intrinsics.def.
|
||
* d-irstate.cc (IRState::addExp): Remove old warning to catch statements
|
||
with no side effects. Now handled in frontend.
|
||
* d-lang.cc (d_init_options): Update for frontend changes.
|
||
(d_initialize_diagnostics): Remove function.
|
||
(d_add_builtin_version): Update for frontend changes.
|
||
(d_init): Ditto.
|
||
(d_handle_option): Ditto.
|
||
(d_post_options): Ditto.
|
||
(d_parse_file): Ditto.
|
||
* d-objfile.cc (Nspace::toObjFile): New function.
|
||
(StructDeclaration::toObjFile): Update for frontend changes.
|
||
(TypedefDeclaration::toObjFile): Remove function.
|
||
(TemplateInstance::toObjFile): Update for frontend changes.
|
||
(TemplateMixin::toObjFile): Ditto.
|
||
(unnest_function): New function.
|
||
(output_declaration_p): Update for frontend changes.
|
||
(FuncDeclaration::toObjFile): Ditto.
|
||
(FuncDeclaration::buildClosure): Move to buildClosure.
|
||
(get_linemap): Update for frontend changes.
|
||
(build_simple_function): Ditto.
|
||
(build_call_function): Ditto.
|
||
* d-target.cc (Target::va_listType): New function.
|
||
(Target::paintAsType): Ditto.
|
||
* d-todt.cc (dt_container2): Do not set TREE_READONLY on initialisers.
|
||
(dt_container): Ditto.
|
||
(ClassReferenceExp::toDt2): Update for C++ class support.
|
||
(ClassReferenceExp::toInstanceDt): Ditto.
|
||
(TypeTypedef::toDt): Remove function.
|
||
(TypeInfoTypedefDeclaration::toDt): Ditto.
|
||
(TypeInfoAssociativeArrayDeclaration::toDt): Update typeinfo size.
|
||
(TypeInfoAssociativeArrayDeclaration::toDt): Remove reference to impl
|
||
field in TypeInfo struct.
|
||
(TypeInfoStructDeclaration::toDt): Update for frontend changes.
|
||
* d-typinf.cc (Type::getTypeInfo): Update for frontend changes.
|
||
(TypeTypedef::getTypeInfoDeclaration): Remove function.
|
||
(createTypeInfoArray): Remove function.
|
||
* runtime.def: New file.
|
||
* toir.cc (IRVisitor::visit::DtorExpStatement): Remove function.
|
||
(IRVisitor::visit::ExtAsmStatement): Update for frontend changes.
|
||
|
||
2015-01-17 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-elem.cc (UshrAssignExp::toElem): Remove integer promotion on left
|
||
hand side of unsigned right shift expression.
|
||
|
||
2015-01-13 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-system.h: Include hash-set.h, machmode.h, vec.h, double-int.h,
|
||
input.h, alias.h, symtab.h and inchash.h due to flattening of tree.h.
|
||
* d-gt.cc: Ditto.
|
||
|
||
2015-01-02 Iain Buclaw <ibuclaw@gdcproject.org>
|
||
|
||
* d-codegen.h (build_boolop): Don't eagerly fold comparison expressions.
|
||
|
||
|
||
Copyright (C) 2015 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.
|