aboutsummaryrefslogtreecommitdiff
path: root/gcc/d
AgeCommit message (Collapse)AuthorFilesLines
2020-06-17Daily bump.GCC Administrator1-0/+138
2020-06-16d: Remove names of unused function parameters.Iain Buclaw1-65/+31
gcc/d/ChangeLog: * d-attribs.cc (handle_noreturn_attribute): Remove names of unused function parameters. (handle_leaf_attribute): Likewise. (handle_const_attribute): Likewise. (handle_malloc_attribute): Likewise. (handle_pure_attribute): Likewise. (handle_novops_attribute): Likewise. (handle_nonnull_attribute): Likewise. (handle_nothrow_attribute): Likewise. (handle_type_generic_attribute): Likewise. (handle_transaction_pure_attribute): Likewise. (handle_returns_twice_attribute): Likewise. (handle_fnspec_attribute): Likewise. (handle_always_inline_attribute): Likewise. (d_handle_noinline_attribute): Likewise. (d_handle_forceinline_attribute): Likewise. (d_handle_flatten_attribute): Likewise. (d_handle_noclone_attribute): Likewise. (d_handle_section_attribute): Likewise. (d_handle_alias_attribute): Likewise. (d_handle_weak_attribute): Likewise.
2020-06-16d: Update code formatting in a consistent style.Iain Buclaw18-135/+136
gcc/d/ChangeLog: * d-attribs.cc: Update code formatting in a consistant style. * d-builtins.cc: Likewise. * d-codegen.cc: Likewise. * d-compiler.cc: Likewise. * d-convert.cc: Likewise. * d-diagnostic.cc: Likewise. * d-frontend.cc: Likewise. * d-lang.cc: Likewise. * d-longdouble.cc: Likewise. * d-port.cc: Likewise. * d-spec.cc: Likewise. * d-tree.h: Likewise. * decl.cc: Likewise. * expr.cc: Likewise. * longdouble.h: Likewise. * modules.cc: Likewise. * toir.cc: Likewise. * typeinfo.cc: Likewise.
2020-06-16d: Consistently format quotations in comments.Iain Buclaw10-48/+48
gcc/d/ChangeLog: * d-builtins.cc: Update quotation formatting of comments. * d-codegen.cc: Likewise. * d-lang.cc: Likewise. * decl.cc: Likewise. * expr.cc: Likewise. * imports.cc: Likewise. * runtime.cc: Likewise. * toir.cc: Likewise. * typeinfo.cc: Likewise. * types.cc: Likewise.
2020-06-16d: Remove dependency on front-end OutBuffer for diagnostic and deps file ↵Iain Buclaw2-60/+68
generation. gcc/d/ChangeLog: * d-diagnostic.cc (expand_d_format): Replace OutBuffer with obstack. (d_diagnostic_report_diagnostic): Don't free xformat. * d-lang.cc (struct d_option_data): Change deps_target type from OutBuffer to vec <const char *>. (deps_add_target): Update to push each target to deps_target. (deps_write_string): New function. (deps_write): Change buffer type to obstack* and remove colmax. (d_init_options): Update initialization of deps_target. (d_parse_file): Replace OutBuffer with obstack.
2020-06-16d: Remove dependency on front-end File type for json and deps file generation.Iain Buclaw1-10/+32
gcc/d/ChangeLog: * d-lang.cc (d_parse_file): Replace uses of File with FILE.
2020-06-16d: Move generation of array bounds error to own function.Iain Buclaw4-7/+25
gcc/d/ChangeLog: * d-codegen.cc (build_array_bounds_call): New function. (build_bounds_condition): Use build_array_bounds_call. * d-lang.cc (d_init_options): Explicitly set default check action to CHECKACTION_D. (d_post_options): Set check action to CHECKACTION_C if the flag -fno-druntime was seen. * d-tree.h (build_array_bounds_call): Declare. * expr.cc (ExprVisitor::visit (AssertExp *)): Use build_array_bounds_call.
2020-06-16d: Use toStringExp instead of explicit castIain Buclaw2-4/+4
gcc/d/ChangeLog: * d-attribs.cc (build_attributes): Use toStringExp instead of cast. * toir.cc (IRVisitor::visit): Likewise.
2020-06-16d: Use new isXxxxExp helpers where possibleIain Buclaw6-41/+46
gcc/d/ChangeLog: * d-attribs.cc (build_attributes): Use isXxxxExp helpers instead of explicit casts. * d-codegen.cc (d_build_call): Likewise. * d-compiler.cc (Compiler::paintAsType): Likewise. * decl.cc (ExprVisitor::visit): Likewise. (layout_class_initializer): Likewise. * expr.cc (ExprVisitor::lvalue_p): Likewise (ExprVisitor::visit): Likewise. * types.cc (layout_aggregate_members): Likewise.
2020-06-16d: Use toTypeFunction instead of explicit castIain Buclaw4-24/+11
gcc/d/ChangeLog: * d-frontend.cc (eval_builtin): Use toTypeFunction instead of cast. * decl.cc (DeclVisitor::visit): Likewise. * toir.cc (IRVisitor::visit): Likewise. * typeinfo.cc (TypeInfoVisitor::visit): Likewise.
2020-06-16d: Use new isTypeXxxx helpers where possible.Iain Buclaw10-120/+82
gcc/d/ChangeLog: * d-builtins.cc (d_eval_constant_expression): Use isTypeXxxx helpers instead of explicit casts. (d_build_builtins_module): Likewise. * d-codegen.cc (get_array_length): Likewise. (identity_compare_p): Likewise. (lower_struct_comparison): Likewise. (build_array_from_val): Likewise. (array_bounds_check): Likewise. (get_function_type): Likewise. (d_build_call): Likewise. * d-compiler.cc (Compiler::paintAsType): Likewise. * d-convert.cc (convert_expr): Likewise. (convert_for_assignment): Likewise. * d-lang.cc (d_classify_record): Likewise. (d_build_eh_runtime_type): Likewise. * decl.cc (DeclVisitor::visit): Likewise. * expr.cc (ExprVisitor::needs_postblit): Likewise. (ExprVisitor::needs_dtor): Likewise. (ExprVisitor::visit): Likewise. * imports.cc (ImportVisitor::visit): Likewise. * typeinfo.cc (get_typeinfo_kind): Likewise. (TypeInfoVisitor::visit): Likewise. (TypeDeclInfoVisitor::visit): Likewise. * types.cc (merge_aggregate_types): Likewise. (TypeVisitor::visit): Likewise.
2020-06-15Daily bump.GCC Administrator1-0/+7
2020-06-14d: Fix line lengths after mechanical field renames.Iain Buclaw2-4/+8
gcc/d/ChangeLog: * expr.cc (ExprVisitor::visit (AssocArrayLiteralExp *)): Fix line lengths, no functional change. * typeinfo.cc (TypeInfoVisitor::layout_interfaces): Likewise. (layout_classinfo_interfaces): Likewise.
2020-06-10Daily bump.GCC Administrator1-0/+15
2020-06-09d: Merge upstream dmd 13d67c575.Iain Buclaw25-57/+843
Reviewed-on: https://github.com/dlang/dmd/pull/11224 gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 13d67c575. * d-builtins.cc (build_frontend_type): Update call to TypeVector::create. * d-frontend.cc (Global::_init): Move setting of errorLimit to ... * d-lang.cc (d_init_options): ... here. Update for new field location of errorLimit. (d_post_options): Likewise. * d-port.cc (Port::readwordLE): Update signature. (Port::readwordBE): Likewise. (Port::readlongLE): Likewise. (Port::readlongBE): Likewise. * decl.cc (get_symbol_decl): Update for new field types.
2020-06-09Daily bump.GCC Administrator1-0/+13
2020-06-08d: Fix regression caused by recent refactoringIain Buclaw2-2/+2
gcc/d/ChangeLog: PR d/95573 * dmd/MERGE: Merge upstream dmd 5041e56f1.
2020-06-08d: Merge upstream dmd 955b8b36f.Iain Buclaw12-280/+60
Merges AndAndExp and OrOrExp into a LogicalExp AST node. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 955b8b36f. * expr.cc (ExprVisitor::visit (AndAndExp *)): Rename type to ... (ExprVisitor::visit (LogicalExp *)): ... this. Handle both 'and if' and 'or if' expression nodes. (ExprVisitor::visit (OrOrExp *)): Remove.
2020-06-08Daily bump.GCC Administrator1-0/+40
2020-06-08d: Merge upstream dmd 73d8e2fec.Iain Buclaw24-139/+138
Renames the enum PROTKIND to Prot::Kind, updates all uses of the original enum accordingly. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 73d8e2fec. * decl.cc (get_symbol_decl): Use new Prot::Kind enum. * modules.cc (get_internal_fn): Likewise.
2020-06-07d: Merge upstream dmd 108ca1bcd.Iain Buclaw29-75/+75
Renames OutBuffer::peekString to OutBuffer::peekChars, and OutBuffer::extractString to OutBuffer::extractChars. All callers have been updated as appropriate. Reviewed-on: https://github.com/dlang/dmd/pull/11247 gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 108ca1bcd. * d-diagnostic.cc (expand_d_format): Adjust to use extractChars(). * d-frontend.cc (Loc::toChars): Likewise. * d-lang.cc (deps_write): Likewise. (d_parse_file): Likewise. * decl.cc (d_mangle_decl): Likewise. * intrinsics.cc (maybe_set_intrinsic): Likewise.
2020-06-07d: Merge upstream dmd b0df0e982Iain Buclaw34-323/+369
Adds a struct ParameterList to encapulate parameter and vararg information in the front-end. Reviewed-on: https://github.com/dlang/dmd/pull/11226 gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd b0df0e982. * d-builtins.cc (build_frontend_type): Use VarArg for varargs_p. * d-codegen.cc (declaration_type): Call TypeFunction::create with argument VARARGnone. (parameter_type): Likewise. (d_build_call): Use new field names and member functions. * d-target.cc (Target::cppParameterType): Call TypeFunction::create with argument VARARGnone. * types.cc (TypeVisitor::visit (TypeFunction *): Use new field names and member functions.
2020-06-07d: Merge upstream dmd 1831b24ff.Iain Buclaw5-19/+13
Converts some global and param fields from pointers to value types. Reviewed-on: https://github.com/dlang/dmd/pull/11245 gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 1831b24ff. * d-lang.cc (d_init_options): Remove initialization of updated fields. (d_handle_option): Adjust for new field types.
2020-06-07d: Merge upstream dmd cef1e7991.Iain Buclaw10-52/+70
Adds a DString type, a struct that has a compatible layout with D strings. Many parameters in the Global struct have been switched over to this type, and users of these params have been adjust to use the length or ptr field as appropriate. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd cef1e7991. * d-lang.cc (d_parse_file): Adjust for new field types.
2020-06-06Daily bump.GCC Administrator1-0/+65
2020-06-05d: Merge upstream dmd 740f3d1ea.Iain Buclaw7-41/+55
Backports the conversion of the parameter fields debugids and versionids to Identifiers. The idea is that Identifiers should be used instead of C strings where ever possible. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 740f3d1ea. * d-lang.cc (d_handle_option): Use new fields to save debug and version levels passed over command-line. (d_post_options): Add them to front-end here.
2020-06-05d: Merge upstream dmd f5638c7b8.Iain Buclaw9-71/+87
Adds a CHECKENABLE enum, uses it for all contract parameters for consistency in state checking. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd f5638c7b8. * d-builtins.cc (d_init_versions): Use new CHECKENABLE enum. * d-codegen.cc (array_bounds_check): Likewise. (build_frame_type): Likewise. (get_frameinfo): Likewise. * d-lang.cc (d_init_options): Likewise. (d_init_options_struct): Don't initialize x_flag_bounds_check. (d_handle_option): Use new CHECKENABLE enum. (d_post_options): Likewise. Set flag_bounds_check here. * expr.cc (ExprVisitor::visit(AssertExp *)): Use new CHECKENABLE enum.
2020-06-05d: Merge upstream dmd 56f0a65c4.Iain Buclaw27-270/+269
Updates the Target interface, removing static from all members, so all field accesses and member function calls go through a single global 'target'. Information relating to extern ABI are now in TargetC, TargetCPP, and TargetObjC for each supported language respectively. Reviewed-on: https://github.com/dlang/dmd/pull/11228 gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 56f0a65c4. * d-builtins.cc (build_frontend_type): Remove static. (d_build_builtins_module): Use target.va_listType() to get front-end type for va_list. (d_init_builtins): Move creation of va_list to Target::va_listType. * d-codegen.cc (build_interface_binfo): Use new target global. (build_vindex_ref): Likewise. (identity_compare_p): Likewise. * d-ctfloat.cc (CTFloat::parse): Likewise. * d-lang.cc (d_init): Likewise. * d-port.cc (Port::isFloat32LiteralOutOfRange): Likewise. (Port::isFloat64LiteralOutOfRange): Likewise. * d-target.cc (define_float_constants): Initialize constants through a reference, instead of setting globals. (Target::_init): Initialize new fields instead of setting globals. (Target::va_listType): Build front-end type from va_list_type_node. (Target::toCppMangle): Renamed to ... (TargetCPP::toMangle): ... this. (Target::cppTypeInfoMangle): Renamed to ... (TargetCPP::typeInfoMangle): ... this. (Target::cppTypeMangle): Renamed to ... (TargetCPP::typeMangle): this. (Target::cppParameterType): Renamed to ... (TargetCPP::parameterType): ... this. Use target.va_listType() to get front-end type for va_list. (Target::cppFundamentalType): Renamed to ... (TargetCPP::fundamentalType): ... this. * d-tree.h (build_frontend_type): Declare. * decl.cc (base_vtable_offset): Use new target global. * typeinfo.cc (layout_classinfo_interfaces): Likewise. (layout_cpp_typeinfo): Likewise. * types.cc (valist_array_p): Use target.va_listType() to get front-end type for va_list. (layout_aggregate_type): Use new target global.
2020-06-05d: Merge upstream dmd 6d5bffa54Iain Buclaw18-61/+52
Removes an unused parameter from Condition::include(), all callers have been updated in the front-end. Reviewed-on: https://github.com/dlang/dmd/pull/11229 gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 6d5bffa54. * d-builtins.cc (maybe_set_builtin_1): Update call to Condition::include(). * decl.cc (DeclVisitor::visit(AttribDeclaration *)): Likewise. * types.cc (layout_aggregate_members): Likewise.
2020-06-05Daily bump.GCC Administrator1-0/+67
2020-06-04d: Merge upstream dmd 48d704f08Iain Buclaw66-1476/+1503
Updates the Array interface in dmd/root/array.h to use a DArray<TYPE> internally. Splits out BitArray into a separate header. Reviewed-on: https://github.com/dlang/dmd/pull/11219 gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 48d704f08. * d-attribs.cc (build_attributes): Use new field name. * d-builtins.cc (build_frontend_type): Likewise. (maybe_set_builtin_1): Likewise. (d_maybe_set_builtin): Likewise. * d-codegen.cc (build_interface_binfo): Likewise. (identity_compare_p): Likewise. (lower_struct_comparison): Likewise. (build_struct_comparison): Likewise. (d_build_call): Likewise. (build_frame_type): Likewise. (build_closure): Likewise. * d-compiler.cc (Compiler::paintAsType): Likewise. (Compiler::loadModule): Likewise. * d-incpath.cc (add_globalpaths): Likewise. (add_filepaths): Likewise. (add_import_paths): Likewise. * d-lang.cc (deps_write): Likewise. (d_parse_file): Likewise. * decl.cc (gcc_attribute_p): Likewise. (base_vtable_offset): Likewise. (get_vtable_decl): Likewise. (build_class_instance): Likewise. * expr.cc (class ExprVisitor): Likewise. * modules.cc (layout_moduleinfo_fields): Likewise. (layout_moduleinfo): Likewise. (build_module_tree): Likewise. * toir.cc (class IRVisitor): Likewise. * typeinfo.cc (class TypeInfoVisitor): Likewise. (layout_classinfo_interfaces): Likewise. * types.cc (layout_aggregate_members): Likewise. (layout_aggregate_type): Likewise.
2020-06-04d: Merge upstream dmd 47ed0330fIain Buclaw128-128/+129
Updates the copyright years of the front-end sources. Reviewed-on: https://github.com/dlang/dmd/pull/11221 gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 47ed0330f.
2020-06-04d: Split up d-frontend.cc into multiple parts.Iain Buclaw5-420/+516
gcc/d/ChangeLog: * Make-lang.in (D_OBJS): Add d-compiler.o, d-ctfloat.o, d-port.o. * d-frontend.cc (Port::memicmp): Move to d-port.cc. (Port::strupr): Likewise. (Port::isFloat32LiteralOutOfRange): Likewise. (Port::isFloat64LiteralOutOfRange): Likewise. (Port::readwordLE): Likewise. (Port::readwordBE): Likewise. (Port::readlongLE): Likewise. (Port::readlongBE): Likewise. (Port::valcpy): Likewise. (CTFloat::fabs): Move to d-ctfloat.cc. (CTFloat::ldexp): Likewise. (CTFloat::isIdentical): Likewise. (CTFloat::isNaN): Likewise. (CTFloat::isSNaN): Likewise. (CTFloat::isInfinity): Likewise. (CTFloat::parse): Likewise. (CTFloat::sprint): Likewise. (CTFloat::hash): Likewise. (Compiler::genCmain): Move to d-compiler.cc. (Compiler::paintAsType): Likewise. (Compiler::loadModule): Likewise. * d-compiler.cc: New file. * d-ctfloat.cc: New file. * d-port.cc: New file.
2020-06-03Daily bump.GCC Administrator1-0/+21
2020-06-02d: Set up input_location before lowering Dsymbol ASTIain Buclaw1-39/+28
Like a similarly named function in the visitor class for statements, this ensures that the current input_location is set to the correct source file location of the decl. It is likely that there are a number of cases where declarations have ended up with no location without this. gcc/d/ChangeLog: * decl.cc (DeclVisitor::build_dsymbol): New function. (DeclVisitor::visit (TupleDeclaration *)): Use build_dsymbol to traverse AST instead of accept. (DeclVisitor::visit (AttribDeclaration *)): Likewise. (DeclVisitor::visit (Nspace *)): Likewise. (DeclVisitor::visit (TemplateDeclaration *)): Likewise. (DeclVisitor::visit (TemplateInstance *)): Likewise. (DeclVisitor::visit (TemplateMixin *)): Likewise. (DeclVisitor::visit (StructDeclaration *)): Likewise. (DeclVisitor::visit (ClassDeclaration *)): Likewise. (DeclVisitor::visit (InterfaceDeclaration *)): Likewise. (DeclVisitor::visit (VarDeclaration *)): Likewise. (build_decl_tree): Likewise.
2020-06-02d: Fix segfault in build_frontend_type on alpha-*-*Iain Buclaw1-3/+13
The va_list type for Alpha includes a nameless dummy field for alignment purposes. To transpose this into D, a field named "__pad%d" is inserted into the struct definition. It was also noticed that in the D front-end AST copy of the backend type, all offsets for fields generated by build_frontend_type were set to zero due to a wrong assumption that DECL_FIELD_OFFSET would have a non-zero value. This has been fixed to use byte_position instead. gcc/d/ChangeLog: * d-builtins.cc (build_frontend_type): Handle struct fields with NULL DECL_NAME. Use byte_position to get the real field offset.
2020-05-06d: Fix ICE in verify_gimple_stmt, at tree-cfg.c:4959Iain Buclaw5-89/+46
Both array concat and array new expressions wrapped any temporaries created into a BIND_EXPR. This does not work if an expression used to construct the result requires scope destruction, which is represented by a TARGET_EXPR with a clean-up, and a CLEANUP_POINT_EXPR at the location where the temporaries logically go out of scope. The reason for this not working is because the lowering of cleanup point expressions does not traverse inside BIND_EXPRs to expand any gimple cleanup expressions within. The use of creating BIND_EXPR has been removed at both locations, and replaced with a normal temporary variable that has initialization delayed until its address is taken. gcc/d/ChangeLog: PR d/94970 * d-codegen.cc (force_target_expr): Move create_temporary_var implementation inline here. (create_temporary_var): Remove. (maybe_temporary_var): Remove. (bind_expr): Remove. * d-convert.cc (d_array_convert): Use build_local_temp to generate temporaries, and generate its assignment. * d-tree.h (create_temporary_var): Remove. (maybe_temporary_var): Remove. (d_array_convert): Remove vars argument. * expr.cc (ExprVisitor::visit (CatExp *)): Use build_local_temp to generate temporaries, don't wrap them in a BIND_EXPR. (ExprVisitor::visit (NewExp *)): Likewise. gcc/testsuite/ChangeLog: PR d/94970 * gdc.dg/pr94970.d: New test.
2020-04-30d: Fix documentation of -defaultlib= and -debuglib=Iain Buclaw2-4/+9
From the generated manpages, it was not clear that its usage is '-debuglib=<libname>'. gcc/d/ChangeLog: * gdc.texi (Options for Linking): Clarify usage of -defaultlib= and -debuglib= options.
2020-04-30d: Merge upstream dmd 934df6f8c, druntime 7bdd83d7Iain Buclaw1-1/+1
Corrects a previous change made to the SPARC stdc bindings, and backports PPC-related fixes. The library and language testsuite now passes fully on powerpc64le-linux-gnu. Fixes: PR d/90719 Fixes: PR d/94825 Reviewed-on: https://github.com/dlang/dmd/pull/11079 https://github.com/dlang/druntime/pull/3078 https://github.com/dlang/druntime/pull/3083 libphobos/ChangeLog: PR d/94825 * libdruntime/Makefile.am (DRUNTIME_SOURCES_CONFIGURED): Remove config/powerpc/switchcontext.S * libdruntime/Makefile.in: Regenerate. * libdruntime/config/powerpc/callwithstack.S: Remove. * libdruntime/config/powerpc/switchcontext.S: Fix symbol name of fiber_switchContext. * libdruntime/core/thread.d: Disable fiber migration tests on PPC. * testsuite/libphobos.thread/fiber_guard_page.d: Set guardPageSize same as stackSize.
2020-04-29d: Merge bug fix from upstream dmd 06160ccaeIain Buclaw10-27/+69
Adds classKind information to the front-end AST, which in turn allows us to fix code generation of type names for extern(C) and extern(C++) structs and classes. Inspecting such types inside a debugger now just works without the need to 'cast(module_name.cxx_type)'. gcc/d/ChangeLog: * d-codegen.cc (d_decl_context): Don't include module in the name of class and struct types that aren't extern(D).
2020-04-27d: Merge upstream dmd f8a1a5153, druntime 2b5c0b27Iain Buclaw1-1/+1
Adds a new test directive COMPILABLE_MATH_TEST, and support has been added for it in gdc-convert-test so that they are skipped if phobos is not present on the target. Only change in D runtime is a small documentation fix. Reviewed-on: https://github.com/dlang/druntime/pull/3067 https://github.com/dlang/dmd/pull/11060 gcc/testsuite/ChangeLog: PR d/89418 * lib/gdc-utils.exp (gdc-convert-test): Add dg-skip-if for compilable tests that depend on the phobos standard library.
2020-04-27d: Fix ICE in assign_temp, at function.c:984 (PR94777)Iain Buclaw6-23/+52
Named arguments were being passed around by invisible reference, just not variadic arguments. There is a need to de-duplicate the routines that handle declaration/parameter promotion and reference checking. However for now, the parameter helper functions have just been renamed to parameter_reference_p and parameter_type, to make it more clear that it is the Parameter equivalent to declaration_reference_p and declaration_type. On writing the tests, a forward-reference bug was discovered on x86_64 during va_list type semantic. This was due to fields not having their parent set-up correctly. gcc/d/ChangeLog: PR d/94777 * d-builtins.cc (build_frontend_type): Set parent for generated fields of built-in types. * d-codegen.cc (argument_reference_p): Rename to ... (parameter_reference_p): ... this. (type_passed_as): Rename to ... (parameter_type): ... this. Make TREE_ADDRESSABLE types restrict. (d_build_call): Move handling of non-POD types here from ... * d-convert.cc (convert_for_argument): ... here. * d-tree.h (argument_reference_p): Rename declaration to ... (parameter_reference_p): ... this. (type_passed_as): Rename declaration to ... (parameter_type): ... this. * types.cc (TypeVisitor::visit (TypeFunction *)): Update caller. gcc/testsuite/ChangeLog: PR d/94777 * gdc.dg/pr94777a.d: New test. * gdc.dg/pr94777b.d: New test.
2020-04-26Add changelog entry for previous commitIain Buclaw1-0/+7
2020-04-26d: Recognize pragma(inline) in the code generator.Iain Buclaw2-1/+14
Pragma inline affects whether functions are inlined or not. If at the declaration level, it affects the functions declared in the block it controls. If inside a function, it affects the function it is enclosed by. Support has been in the front-end for some time, but the information was not leveraged by the code generation pass. gcc/d/ChangeLog: * decl.cc (get_symbol_decl): Set DECL_DECLARED_INLINE_P or DECL_UNINLINABLE for declarations with pragma(inline). * toir.cc (IRVisitor::visit (GccAsmStatement *)): Set ASM_INLINE_P if in function decorated with pragma(inline).
2020-04-25d: Merge upstream dmd 09db0c41e, druntime e68a5ae3.Iain Buclaw4-1/+32
* New core.math.toPrec templates have been added as an intrinsic. Some floating point algorithms, such as Kahan-Babuska-Neumaier Summation, require rounding to specific precisions. Rounding to precision after every operation, however, loses overall precision in the general case and is a runtime performance problem. Adding these functions guarantee the rounding at required points in the code, and document where in the algorithm the requirement exists. * Support IBM long double types in core.internal.convert. * Add missing aliases for 64-bit vectors in core.simd. * RUNNABLE_PHOBOS_TEST directive has been properly integrated into the D2 language testsuite. Reviewed-on: https://github.com/dlang/druntime/pull/3063 https://github.com/dlang/dmd/pull/11054 gcc/d/ChangeLog: * intrinsics.cc (expand_intrinsic_toprec): New function. (maybe_expand_intrinsic): Handle toPrec intrinsics. * intrinsics.def (TOPRECF, TOPREC, TOPRECL): Add toPrec intrinsics.
2020-04-24d: Fix order of precedence for -defaultlib and -debuglibIain Buclaw2-48/+43
The order of precedence used by the upstream reference compiler for determining what library to link against is: - No library if -nophoboslib or -fno-druntime was seen. - The library passed to -debuglib if -g was also seen. - The library passed to -defaultlib - The in-tree libgphobos library. This aligns the D language driver to follow the same rules. gcc/d/ChangeLog: * d-spec.cc (need_phobos): Remove. (lang_specific_driver): Replace need_phobos with phobos_library. Reorder -debuglib and -defaultlib to have precedence over libphobos. (lang_specific_pre_link): Remove test for need_phobos.
2020-04-21d/dmd: Merge upstream dmd 62ce36f37Iain Buclaw2-7/+14
Adjusts the hardcoded index of Error.bypassException. Fixes: PR d/94623 Reviewed-on: https://github.com/dlang/dmd/pull/11052
2020-04-19d/dmd: Merge upstream dmd ba99ee345Iain Buclaw2-2/+2
Initializes the VectorArrayExp::size field with the correct value. Fixes: PR d/94652 Reviewed-on: https://github.com/dlang/dmd/pull/11046
2020-04-19d/dmd: Merge upstream dmd 09be6ee14Iain Buclaw2-3/+3
Initializes ncost before use, which was caught by valgrind. Fixes: PR d/94653 Reviewed-on: https://github.com/dlang/dmd/pull/11045
2020-04-19d: Fix FAIL in gdc.dg/runnable.d on X32 targets (PR94609)Iain Buclaw4-6/+27
Patch fixes test failure seen on X32 where a nested struct was passed in registers, rather than via invisible reference. Now, all non-POD structs are passed by invisible reference, not just those with a user-defined copy constructor/destructor. gcc/d/ChangeLog: PR d/94609 * d-codegen.cc (argument_reference_p): Don't check TREE_ADDRESSABLE. (type_passed_as): Build reference type if TREE_ADDRESSABLE. * d-convert.cc (convert_for_argument): Build explicit TARGET_EXPR if needed for arguments passed by invisible reference. * types.cc (TypeVisitor::visit (TypeStruct *)): Mark all structs that are not POD as TREE_ADDRESSABLE.