[Bug d/93038] Missing dependencies in depfile for imported files at compilation time
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93038 ibuclaw at gcc dot gnu.org changed: What|Removed |Added Ever confirmed|0 |1 Last reconfirmed||2020-03-13 Status|UNCONFIRMED |ASSIGNED CC||ibuclaw at gcc dot gnu.org --- Comment #1 from ibuclaw at gcc dot gnu.org --- Yes, I have too noticed this and have a fix in the gdc development branch, will backport it to gcc trunk as soon as I cherry-pick out parts not related to supporting the self-hosted front-end.
[Bug d/91561] [Regression] Internal Compiler Error: type ‘ubyte[]’ can not be mapped to C++
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91561 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org --- Comment #2 from ibuclaw at gcc dot gnu.org --- The old behaviour silently accepting was a deviation of the mainline dmd front-end. D arrays are not compatible with C++, so there is no point in pretending they can be. As of writing, upstream dmd still reports the error as an ICE, despite having been a couple years now that I've tried to downgrade the severity from ICE to general error. The consensus when I last checked was that it should be caught earlier in semantic, not in the mangling stage. However no one has written a patch to do this yet.
[Bug d/92216] GDC generate duplicate symbols when mixins and interfaces are used to gather
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92216 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org Ever confirmed|0 |1 Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2020-03-16 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Hi Daniel, Thanks for the patch, however instead I've gone with just marking the thunks as non-public. This is because the body generated for such thunks is different from the case where the thunk and target function are in the same compilation unit.
[Bug d/92216] GDC generate duplicate symbols when mixins and interfaces are used to gather
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92216 ibuclaw at gcc dot gnu.org changed: What|Removed |Added Resolution|--- |FIXED Status|ASSIGNED|RESOLVED --- Comment #4 from ibuclaw at gcc dot gnu.org --- Fix committed.
[Bug d/92792] [10 Regression] symbols dropped from libphobos
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92792 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org Resolution|--- |FIXED Status|ASSIGNED|RESOLVED --- Comment #3 from ibuclaw at gcc dot gnu.org --- After speaking with Matthias, the soversion was bumped.
[Bug d/92309] Assignment to anonymous union member corrupts sibling members in struct
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92309 ibuclaw at gcc dot gnu.org changed: What|Removed |Added Resolution|--- |FIXED CC||ibuclaw at gcc dot gnu.org Status|ASSIGNED|RESOLVED --- Comment #2 from ibuclaw at gcc dot gnu.org --- Fix committed to mainline.
[Bug lto/91027] [10 regression] SEGV in hash_table::find_slot_with_hash
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91027 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #13 from ibuclaw at gcc dot gnu.org --- I just went with setting TYPE_CXX_ODR_P.
[Bug d/94623] ice for ./gdc.test/compilable/interpret3.d
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94623 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org --- Comment #17 from ibuclaw at gcc dot gnu.org --- (In reply to David Binderman from comment #16) > > I am struggling to understand what this output means: > > binary > /home/dcb/gcc/results.20200420.d5/libexec/gcc/x86_64-pc-linux-gnu/10.0.1/d21 > version v2.076.1 > predefs GNU D_Version2 LittleEndian GNU_DWARF2_Exceptions > GNU_StackGrowsDown GNU_InlineAsm D_LP64 assert D_ModuleInfo D_Exceptions > D_TypeInfo all X86_64 D_HardFloat Posix linux CRuntime_Glibc CppRuntime_Gcc > parse interpret3 > importall interpret3 > importobject (/usr/include/d/object.d) > importcore.internal.hash (/usr/include/d/core/internal/hash.d) > importcore.internal.traits(/usr/include/d/core/internal/traits.d) > importcore.internal.convert (/usr/include/d/core/internal/convert.d) > semantic interpret3 > importcore.stdc.string(/usr/include/d/core/stdc/string.d) It's picking up the modules from a system location. These most certainly don't belong to the gdc compiler. Which bad package maintainer is installing compiler-specific modules in a common location? LDC?
[Bug d/90719] libphobos.phobos_shared/std/file.d FAILs on 32-bit Solaris
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90719 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org --- Comment #9 from ibuclaw at gcc dot gnu.org --- (In reply to Rainer Orth from comment #8) > Unfortunately, something went wrong here: while my original patch removed > st_pad3 > from the non-D_LP64 struct stat64_t, yours changed stat32_t instead, which > leaves > the affected test broken: > > FAIL: libphobos.phobos_shared/std/file.d execution test Oops, I must have both misunderstood your original bug report (you mentioned stat32_t) *and* the patch applied against the wrong struct. Fix sent here: https://github.com/dlang/druntime/pull/3078 I'll downstream it (again) as soon as it's in. For GCC-11, I should really finish off some automated C header -> D conversion tool, as you know all too well the pains of maintaining the current stdc and sys packages in D runtime.
[Bug lto/91027] [10 regression] SEGV in hash_table::find_slot_with_hash
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91027 --- Comment #6 from ibuclaw at gcc dot gnu.org --- (In reply to Jan Hubicka from comment #2) > > I am not really fluent with d. Does d have something like ODR? > If it doesn't then we need to arrange free_lang data to not consider d > types to be C++ ODR types. > > The type seems to not be seen by free lang data which by itself is > confusing. > In principle, yes, D does have ODR. Each source file corresponds to one module that provides a namespace for all symbols defined within, and each module should be unique in the entire compilation unit (module collision checking at runtime asserts that this is the case).
[Bug lto/91027] [10 regression] SEGV in hash_table::find_slot_with_hash
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91027 --- Comment #7 from ibuclaw at gcc dot gnu.org --- (In reply to Jan Hubicka from comment #3) > Hi, > this patch triggers another confusion in ipa-devirt. > It tries to build type inheritnace graph but since D frotnend produces > only functions with DECL_VIRTUAL but no BINFOs and other things it > segfaults eventually. > > Working around it makes it to work. So this adds new question why D > frontend needs to set DECL_VIRTUAL? >
[Bug lto/91027] [10 regression] SEGV in hash_table::find_slot_with_hash
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91027 --- Comment #8 from ibuclaw at gcc dot gnu.org --- (In reply to Jan Hubicka from comment #3) > Hi, > this patch triggers another confusion in ipa-devirt. > It tries to build type inheritnace graph but since D frotnend produces > only functions with DECL_VIRTUAL but no BINFOs and other things it > segfaults eventually. > > Working around it makes it to work. So this adds new question why D > frontend needs to set DECL_VIRTUAL? > BINFO to represent the class inheritance chain is generated by the D frontend, but nothing else is included. DECL_VIRTUAL_P is set on vtblZ global symbols, the __vptr field of class objects, and all virtual functions, as is documented in tree.h. There's the ability to bind to extern(C++) in the language (i.e: extern(C++) class CPPclass { }), so I think in general, the D front-end should be generating trees that have equivalence to the C++ front-end. If there's information missing, I think that should be included to not trip up LTO.
[Bug demangler/92797] cplus_demangle() produces huge amount of output (on trunk)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92797 --- Comment #4 from ibuclaw at gcc dot gnu.org --- At what point does the D demangler kick in? It should only attempt to parse symbols that begin with '_D'.
[Bug d/91666] _builtin function no work with GDC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91666 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org --- Comment #1 from ibuclaw at gcc dot gnu.org --- Either the function signature on MinGW-W64 is untranslatable into valid D, or the gcc.builtins module is not imported in any of the code paths that are enabled by MinGW. It's most likely to be the latter.
[Bug demangler/92797] cplus_demangle() produces huge amount of output (on trunk)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92797 --- Comment #7 from ibuclaw at gcc dot gnu.org --- (In reply to Andrew Pinski from comment #6) > (In reply to ibuclaw from comment #4) > > At what point does the D demangler kick in? It should only attempt to parse > > symbols that begin with '_D'. > > Huh? D mangles symbols also starting with _Z. Why do you think D uses _D? https://dlang.org/spec/abi.html#name_mangling Maybe we're talking about two different things, and I got cc'd in incorrectly.
[Bug d/91916] Maybe a dead code in socket.d
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91916 --- Comment #3 from ibuclaw at gcc dot gnu.org --- (In reply to Martin Liška from comment #2) > @Iain: ping^2 Hi, sorry for the late pick-up, I guess the dead code must come from this line. https://github.com/dlang/phobos/blob/25f38e4b7f2eb4814198ef38dbc44b6ac7b92f78/std/socket.d#L3248-L3251 And whoever wrote the std.socket interface decided to mix multiple different C enums into one type, so of course there'll be a clash between values. It does serve to confuse if someone passes a non-time related socket option to that particular get/setOption override, as the exception message will point to another value than the one they have actually passed. There is otherwise no risk of there actually being any problem in production code.
[Bug d/88039] gdc.test/compilable/ddoc12.d FAILs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88039 --- Comment #8 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Dec 9 19:55:54 2018 New Revision: 266933 URL: https://gcc.gnu.org/viewcvs?rev=266933&root=gcc&view=rev Log: Generate and scan documentation output in Ddoc tests. The tests in gdc.test/compilable/ddoc*.d don't require the module to be compiled all the way down to object code. Instead, only compile the test sources with -fdoc, and scan the generated html content. gcc/testsuite/ChangeLog: PR d/88039 * gdc.test/gdc-test.exp (gdc-convert-args): Handle -D. (dmd2dg): Check generated html in ddoc tests. (gdc-do-test): Set dg-do-what-default to compile for ddoc tests. Modified: trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gdc.test/gdc-test.exp
[Bug d/87824] x86_64-linux multilib issues
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87824 --- Comment #18 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Jan 16 20:40:21 2019 New Revision: 267985 URL: https://gcc.gnu.org/viewcvs?rev=267985&root=gcc&view=rev Log: [D] Fix failing EH execution test on i386. Turn off partitioning unless it was explicitly requested, as it doesn't work with D exception chaining, where personality routines use LSDA to determine whether two thrown exceptions are in the same context. The following distills what was failing in the D testsuite. ``` try { try { fn(); // throws "1" } finally { throw new Exception("2"); } } catch (Exception e) { assert(e.msg == "1"); assert(e.next.msg == "2"); } ``` gcc/d/ChangeLog: PR d/87824 * d-lang.cc (d_post_options): Disable implicit -forder-blocks-and-partition. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-lang.cc
[Bug d/89042] ICE in visit, at d/decl.cc:597
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89042 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sat Jan 26 21:07:15 2019 New Revision: 268304 URL: https://gcc.gnu.org/viewcvs?rev=268304&root=gcc&view=rev Log: Fix ICE when handling void initialized manifest constants. gcc/d/ChangeLog: 2019-01-26 Iain Buclaw PR d/89042 * decl.cc (DeclVisitor::visit(VarDeclaration)): Don't assert if handling a void initialized manifest constant. gcc/testsuite/ChangeLog: 2019-01-26 Iain Buclaw PR d/89042 * gdc.dg/pr89042a.d: New test. * gdc.dg/pr89042b.d: New test. Added: trunk/gcc/testsuite/gdc.dg/pr89042a.d trunk/gcc/testsuite/gdc.dg/pr89042b.d Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/decl.cc trunk/gcc/testsuite/ChangeLog
[Bug d/90893] ODR violation
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90893 --- Comment #3 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sat Aug 10 05:25:44 2019 New Revision: 274249 URL: https://gcc.gnu.org/viewcvs?rev=274249&root=gcc&view=rev Log: Fix ODR violation in d/runtime.cc gcc/d/ChangeLog: PR d/90893 * runtime.cc (enum libcall_type): Rename to... (enum d_libcall_type): ...this. (get_libcall_type): Use d_libcall_type. (build_libcall_decl): Likewise. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/runtime.cc
[Bug d/91238] internal compiler error: in add_expr, at tree.c:7794
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91238 --- Comment #5 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sat Aug 10 14:11:49 2019 New Revision: 274253 URL: https://gcc.gnu.org/viewcvs?rev=274253&root=gcc&view=rev Log: d: Fix internal compiler error: in add_expr, at tree.c:7794 gcc/d/ChangeLog: PR d/91238 * d-codegen.cc (build_address): If taking the address of a CALL_EXPR, wrap it in a TARGET_EXPR. gcc/testsuite/ChangeLog: PR d/91238 * gdc.dg/pr91238.d: New test. Added: trunk/gcc/testsuite/gdc.dg/pr91238.d Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-codegen.cc trunk/gcc/testsuite/ChangeLog
[Bug d/90601] ICE: gimplification failed (gimplify.c at 13436)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90601 --- Comment #3 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Aug 11 06:53:14 2019 New Revision: 274263 URL: https://gcc.gnu.org/viewcvs?rev=274263&root=gcc&view=rev Log: d: Fix ICE: gimplification failed (gimplify.c at 13436) The expression that caused the ICE ++(a += 1.0); The D front-end rewrites and applies implicit type conversions so the expression gets simplified as (int)((double) a += 1.0) += 1 The codegen pass would subsequently generate the following invalid code (int)(double) a = (int)((double) a + 1.0) + 1 The LHS expression `(int)(double) a', represented as a FIX_TRUNC_EXPR being what trips as it is not a valid lvalue for assignment. While LHS casts are stripped away, convert_expr adds a double cast because it converts the expression to its original type before converting it to its target type. There is no valid reason why this is done, so it has been removed. gcc/d/ChangeLog: PR d/90601 * d-convert.cc (convert_expr): Don't convert an expression to its original front-end type before converting to its target type. gcc/testsuite/ChangeLog: PR d/90601 * gdc.dg/pr90601.d: New test. Added: trunk/gcc/testsuite/gdc.dg/pr90601.d Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-convert.cc trunk/gcc/testsuite/ChangeLog
[Bug d/90444] internal compiler error: in d_init_builtins, at d/d-builtins.cc:1121
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90444 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Aug 21 07:53:05 2019 New Revision: 274765 URL: https://gcc.gnu.org/viewcvs?rev=274765&root=gcc&view=rev Log: d: Fix internal compiler error: in d_init_builtins, at d/d-builtins.cc:1121 gcc/d/ChangeLog: PR d/90444 * d-builtins.cc (build_frontend_type): Build anonymous RECORD_TYPE nodes as well, push all fields to the struct members. (d_build_builtins_module): Push anonymous va_list structs to the builtins module, naming them __builtin_va_list. (d_init_builtins): Use sorry instead of gcc_unreachable if va_list did not succeed in being represented as a D type. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-builtins.cc
[Bug d/90445] internal compiler error: in d_build_c_type_nodes, at d/d-builtins.cc:783
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90445 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Aug 21 07:53:15 2019 New Revision: 274766 URL: https://gcc.gnu.org/viewcvs?rev=274766&root=gcc&view=rev Log: d: Fix internal compiler error: in d_build_c_type_nodes, at d/d-builtins.cc:783 gcc/d/ChangeLog: PR d/90445 * d-builtins.cc (d_build_c_type_nodes): Test UINTMAX_TYPE for setting uintmax_type_node. Set signed_size_type_node as the signed_type_for size_type_node. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-builtins.cc
[Bug d/90446] ICE: Segmentation fault in build_function_type at gcc/tree.c:8539
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90446 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Aug 21 07:53:25 2019 New Revision: 274767 URL: https://gcc.gnu.org/viewcvs?rev=274767&root=gcc&view=rev Log: d: Fix ICE: Segmentation fault in build_function_type at gcc/tree.c:8539 gcc/d/ChangeLog: PR d/90446 * d-lang.cc (d_type_for_mode): Check for all internal __intN types. (d_type_for_size): Likewise. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-lang.cc
[Bug d/88722] :1: internal compiler error: in register_moduleinfo, at d/modules.cc:40 2
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88722 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Aug 21 07:53:44 2019 New Revision: 274769 URL: https://gcc.gnu.org/viewcvs?rev=274769&root=gcc&view=rev Log: d: Partially fix ICE: in register_moduleinfo, at d/modules.cc:40 gcc/d/ChangeLog: PR d/88722 * modules.cc: Include diagnostic.h. (register_moduleinfo): Use sorry instead of gcc_assert for targets without named sections. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/modules.cc
[Bug d/91339] libphobos: ftbfs when the path contains '~'
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91339 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Aug 21 07:54:06 2019 New Revision: 274771 URL: https://gcc.gnu.org/viewcvs?rev=274771&root=gcc&view=rev Log: PR d/91339 d/dmd: Merge upstream dmd b37a537d3 Fixes the error: cannot find source code for runtime library file 'object.d' when the path contains '~'. Reviewed-on: https://github.com/dlang/dmd/pull/10309 Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/root/filename.c
[Bug d/88127] Many gdc.dg testsuite failures due to undefined reference to qsort_r
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88127 --- Comment #3 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Mon Feb 18 23:29:39 2019 New Revision: 268999 URL: https://gcc.gnu.org/viewcvs?rev=268999&root=gcc&view=rev Log: libphobos: Detect if qsort_r is available Merges upstream druntime bbfb58e8. libphobos/ChangeLog: 2019-02-19 Johannes Pfau PR d/88127 * m4/druntime/libraries.m4 (DRUNTIME_LIBRARIES_CLIB): Add new macro. * configure.ac: Use DRUNTIME_LIBRARIES_CLIB. * configure: Regenerate * Makefile.in: Regenerate * libdruntime/gcc/config.d.in: Add Have_Qsort_R. * libdruntime/Makefile.in: Regenerate. * src/Makefile.in: Regenerate. * testsuite/Makefile.in: Regenerate. Modified: trunk/libphobos/ChangeLog trunk/libphobos/Makefile.in trunk/libphobos/configure trunk/libphobos/configure.ac trunk/libphobos/libdruntime/MERGE trunk/libphobos/libdruntime/Makefile.in trunk/libphobos/libdruntime/gcc/config.d.in trunk/libphobos/libdruntime/rt/qsort.d trunk/libphobos/m4/druntime/libraries.m4 trunk/libphobos/src/Makefile.in trunk/libphobos/testsuite/Makefile.in
[Bug d/89041] ICE in get_frame_for_symbol, at d/d-codegen.cc:2175
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89041 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sat Mar 9 19:29:29 2019 New Revision: 269533 URL: https://gcc.gnu.org/viewcvs?rev=269533&root=gcc&view=rev Log: d: Fix ICE in get_frame_for_symbol When generating code for a non-nested delegate literal, there is no context pointer required to pass to the function. 2019-03-09 Iain Buclaw gcc/d/ PR d/89041 * d-codegen.cc (get_frame_for_symbol): Delegate literals defined in global scope don't have a frame pointer. gcc/testsuite/ PR d/89041 * gdc.dg/pr89041.d: New test. Added: trunk/gcc/testsuite/gdc.dg/pr89041.d Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-codegen.cc trunk/gcc/testsuite/ChangeLog
[Bug d/88958] ICE in walk_aliased_vdefs_1, at tree-ssa-alias.c:2887
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88958 --- Comment #5 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Mar 10 16:29:48 2019 New Revision: 269557 URL: https://gcc.gnu.org/viewcvs?rev=269557&root=gcc&view=rev Log: PR d/88958 d/dmd: Merge upstream dmd 0fc786f49 Backport fix to disallow passing functions as parameters. Fixes https://gcc.gnu.org/PR88958 Reviewed-on: https://github.com/dlang/dmd/pull/9437 Added: trunk/gcc/testsuite/gdc.test/fail_compilation/test19608.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/expressionsem.c
[Bug d/89016] ICE in ArrayLiteralExp::toStringExp, at d/dmd/expression.c:3873
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89016 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Mar 10 17:25:18 2019 New Revision: 269560 URL: https://gcc.gnu.org/viewcvs?rev=269560&root=gcc&view=rev Log: PR d/89016 d/dmd: Merge upstream dmd da26db819 Backports supplementary fix for ICE on importing deprecated modules. Updates https://gcc.gnu.org/PR89016 Reviewed-on: https://github.com/dlang/dmd/pull/9436 Added: trunk/gcc/testsuite/gdc.test/fail_compilation/imports/fail19609d.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/dimport.c trunk/gcc/testsuite/gdc.test/fail_compilation/fail19609.d
[Bug d/87824] x86_64-linux multilib issues
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87824 --- Comment #24 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Mar 10 21:55:30 2019 New Revision: 269561 URL: https://gcc.gnu.org/viewcvs?rev=269561&root=gcc&view=rev Log: PR d/87824 d/dmd: Merge upstream dmd fcc235e8e Associative arrays are value types, which are not covariant with the pointer type typeof(null). Updates https://gcc.gnu.org/PR87824 Reviewed-on: https://github.com/dlang/dmd/pull/9435 Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/mtype.c trunk/gcc/testsuite/gdc.test/runnable/nulltype.d
[Bug d/87866] gdc fails to compile minimal test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87866 --- Comment #7 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Tue Mar 12 16:31:48 2019 New Revision: 269619 URL: https://gcc.gnu.org/viewcvs?rev=269619&root=gcc&view=rev Log: Use libiberty's lrealpath to avoid portability problems. The dmd front-end function FileName::canonicalName could be called during the semantic pass of import("file") expressions, so still requires that realpath() be redefined. Initial patch by Rainer Orth. gcc/d/ChangeLog: 2019-03-12 Iain Buclaw PR d/87866 * d-system.h (realpath): Redefine as lrealpath. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-system.h
[Bug d/88957] ICE: Segmentation fault in tree_could_trap_p, at tree-eh.c:2672
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88957 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Tue Mar 12 23:10:49 2019 New Revision: 269627 URL: https://gcc.gnu.org/viewcvs?rev=269627&root=gcc&view=rev Log: d/dmd: Merge upstream dmd 19b1454b5 Backports fixes for many ICEs that occurred when using the vector .array property in both CTFE and code generation passes. Fixes https://gcc.gnu.org/PR88957 Reviewed-on: https://github.com/dlang/dmd/pull/9438 gcc/d/ChangeLog: 2019-03-13 Iain Buclaw PR d/88957 * expr.cc (ExprVisitor::visit(VectorArrayExp)): New override. gcc/testsuite/ChangeLog: 2019-03-13 Iain Buclaw PR d/88957 * gdc.dg/pr88957.d: New test. * gdc.dg/simd.d: Add new vector tests. Added: trunk/gcc/testsuite/gdc.dg/pr88957.d Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/ctfeexpr.c trunk/gcc/d/dmd/dinterpret.c trunk/gcc/d/dmd/expression.c trunk/gcc/d/dmd/expression.h trunk/gcc/d/dmd/expressionsem.c trunk/gcc/d/dmd/hdrgen.c trunk/gcc/d/dmd/mtype.c trunk/gcc/d/dmd/parse.c trunk/gcc/d/dmd/tokens.c trunk/gcc/d/dmd/tokens.h trunk/gcc/d/dmd/visitor.h trunk/gcc/d/expr.cc trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gdc.dg/simd.d
[Bug d/88990] ICE in get_symbol_decl, at d/decl.cc:1097
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88990 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Fri Mar 15 13:37:07 2019 New Revision: 269708 URL: https://gcc.gnu.org/viewcvs?rev=269708&root=gcc&view=rev Log: PR d/88990 d/dmd: Merge upstream dmd 8d4c876c6 The extern storage class flag was wrongly propagated to function scope when starting the semantic pass on the body. Fixes https://gcc.gnu.org/PR88990 Reviewed-on: https://github.com/dlang/dmd/pull/9452 Added: trunk/gcc/testsuite/gdc.test/runnable/test19734.d trunk/gcc/testsuite/gdc.test/runnable/test19735.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/declaration.c trunk/gcc/d/dmd/func.c
[Bug d/89017] ICE in force_type_die, at dwarf2out.c:26061
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89017 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Mar 20 23:52:48 2019 New Revision: 269828 URL: https://gcc.gnu.org/viewcvs?rev=269828&root=gcc&view=rev Log: d: Fix ICE force_type_die, at dwarf2out.c using nested types In functions whose return type is instantiated from a nested template, make sure that all members of the instance are emitted before finishing the outer function, otherwise they will be removed during the prune_unused_types pass. gcc/d/ChangeLog: 2019-03-21 Iain Buclaw PR d/89017 * d-codegen.cc (d_decl_context): Skip over template instances when finding the context. * decl.cc (DeclVisitor::visit(TemplateDeclaration)): New override. (build_type_decl): Include parameters in name of template types. gcc/testsuite/ChangeLog: 2019-03-21 Iain Buclaw PR d/89017 * gdc.dg/pr89017.d: New test. Added: trunk/gcc/testsuite/gdc.dg/pr89017.d Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-codegen.cc trunk/gcc/d/decl.cc trunk/gcc/testsuite/ChangeLog
[Bug d/88462] All D execution tests FAIL on Solaris/SPARC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88462 --- Comment #13 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Mar 31 14:34:41 2019 New Revision: 270043 URL: https://gcc.gnu.org/viewcvs?rev=270043&root=gcc&view=rev Log: d: Fix run-time SIGSEGV reading ModuleInfo.flags() The current forced alignment is not necessary, and is problematic on targets that have strict alignment rules. gcc/d/ChangeLog: 2019-03-31 Iain Buclaw PR d/88462 * modules.cc (layout_moduleinfo_fields): Properly align ModuleInfo, instead of forcing alignment to be 1. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/modules.cc
[Bug d/88462] All D execution tests FAIL on Solaris/SPARC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88462 --- Comment #14 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Mon Apr 1 14:44:04 2019 New Revision: 270057 URL: https://gcc.gnu.org/viewcvs?rev=270057&root=gcc&view=rev Log: PR d/88462 libphobos: Fix abort in pthread_mutex_init on Solaris. Merges upstream druntime d57fa1ff. Reviewed-on: https://github.com/dlang/druntime/pull/2534 Modified: trunk/libphobos/libdruntime/MERGE trunk/libphobos/libdruntime/core/internal/traits.d trunk/libphobos/libdruntime/core/thread.d
[Bug d/89823] Composed message only partially translatable
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89823 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Tue Apr 2 05:23:20 2019 New Revision: 270074 URL: https://gcc.gnu.org/viewcvs?rev=270074&root=gcc&view=rev Log: gcc/po/ChangeLog: 2019-04-02 Iain Buclaw PR d/89823 * EXCLUDES: Update list of d/dmd sources. * gcc.pot: Regenerated. Modified: trunk/gcc/po/ChangeLog trunk/gcc/po/EXCLUDES trunk/gcc/po/gcc.pot
[Bug d/89255] libphobos.unittests multilib handling broken
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89255 --- Comment #16 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Fri Apr 12 06:25:04 2019 New Revision: 270301 URL: https://gcc.gnu.org/viewcvs?rev=270301&root=gcc&view=rev Log: d: Add -fbuilding-libphobos-tests option Currently, the druntime and phobos unittests are compiled as a separate check program, then ran by the libphobos.unittest/unittest.exp script. As PR d/89255 notes, this process lacks proper multilib handling. As a first step, a new internal option that instructs the compiler to put the reference to all unittest functions in another symbol has been added. This will allow each module to be compiled separately as a standalone program using dg-runtest without running into collisions in the D runtime module registry. gcc/d/ChangeLog: 2019-04-12 Iain Buclaw * d-tree.h (DECL_IN_UNITTEST_CONDITION_P): Define. * decl.cc (DeclVisitor): Add in_version_unittest_ field. (DeclVisitor::visit(ConditionalDeclaration)): New override. (DeclVisitor::visit(FuncDeclaration)): Set DECL_IN_UNITTEST_CONDITION_P. * lang.opt (-fbuilding-libphobos-tests): Add option. * modules.cc (current_testing_module): New static variable. (build_module_tree): Generate second moduleinfo symbol to hold reference to unittests if flag_building_libphobos_tests. (register_module_decl): Check DECL_IN_UNITTEST_CONDITION_P to decide which moduleinfo the decl should be registered against. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-tree.h trunk/gcc/d/decl.cc trunk/gcc/d/lang.opt trunk/gcc/d/modules.cc
[Bug d/89255] libphobos.unittests multilib handling broken
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89255 --- Comment #17 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Fri Apr 12 06:25:17 2019 New Revision: 270302 URL: https://gcc.gnu.org/viewcvs?rev=270302&root=gcc&view=rev Log: libphobos: Replace library check programs with dg-runtest Fixes multilib handling when running the libphobos testsuite. libphobos/ChangeLog: 2019-04-12 Iain Buclaw PR d/89255 * configure.ac (ENABLE_SHARED, ENABLE_STATIC): Remove conditionals. * configure: Regenerate. * d_rules.am (%.t.lo, %.t.o): Remove rules. (unittest_static_LINK, unittest_LINK, libgdruntime_t_la_LINK, libgphobos_t_la_LINK): Remove variables. * libdruntime/Makefile.am (DRUNTIME_TEST_LOBJECTS, DRUNTIME_TEST_OBJECTS, check_PROGRAMS, check_LTLIBRARIES, unittest_static_SOURCES, unittest_static_LIBTOOLFLAGS, unittest_static_LDFLAGS, unittest_static_LDADD, EXTRA_unittest_static_DEPENDENCIES, libgdruntime_t_la_SOURCES, libgdruntime_t_la_LIBTOOLFLAGS, libgdruntime_t_la_LDFLAGS, libgdruntime_t_la_LIBADD, EXTRA_libgdruntime_t_la_DEPENDENCIES, unittest_SOURCES, unittest_LIBTOOLFLAGS, unittest_LDFLAGS, unittest_LDADD): Remove variables. (clean-local): Remove rule. * libdruntime/Makefile.in: Regenerate. * src/Makefile.am (PHOBOS_TEST_LOBJECTS, PHOBOS_TEST_OBJECTS, check_PROGRAMS, check_LTLIBRARIES, unittest_static_SOURCES, unittest_static_LIBTOOLFLAGS, unittest_static_LDFLAGS, unittest_static_LDADD, EXTRA_unittest_static_DEPENDENCIES, libgdruntime_t_la_SOURCES, libgdruntime_t_la_LIBTOOLFLAGS, libgdruntime_t_la_LDFLAGS, libgdruntime_t_la_LIBADD, EXTRA_libgdruntime_t_la_DEPENDENCIES, unittest_SOURCES, unittest_LIBTOOLFLAGS, unittest_LDFLAGS, unittest_LDADD): Remove variables. (clean-local): Remove rule. * src/Makefile.in: Regenerate. * testsuite/lib/libphobos.exp (libphobos_test_name): New global. (libphobos_init): Set libphobos_test_name. (libphobos-dg-test): Override name if libphobos_test_name is set. (filter_libphobos_unittests): New proc. * testsuite/libphobos.aa/aa.exp: Don't load libphobos-dg.exp. * testsuite/libphobos.cycles/cycles.exp: Set libphobos_test_name. * testsuite/libphobos.druntime/druntime.exp: New file. * testsuite/libphobos.druntime_shared/druntime_shared.exp: New file. * testsuite/libphobos.phobos/phobos.exp: New file. * testsuite/libphobos.phobos_shared/phobos_shared.exp: New file. * testsuite/libphobos.shared/shared.exp: Use dg-runtest to run tests. * testsuite/libphobos.hash/hash.exp: Don't load libphobos-dg.exp * testsuite/libphobos.init_fini/init_fini.exp: Likewise. * testsuite/libphobos.thread/thread.exp: Likewise. * testsuite/libphobos.typeinfo/typeinfo.exp: Likewise. * testsuite/libphobos.unittests/unittests.exp: Remove. * testsuite/test_runner.d: Remove. * testsuite/testsuite_flags.in: Add phobos to --gdcpaths. Added: trunk/libphobos/testsuite/libphobos.druntime/ trunk/libphobos/testsuite/libphobos.druntime/druntime.exp - copied, changed from r270301, trunk/libphobos/testsuite/libphobos.aa/aa.exp trunk/libphobos/testsuite/libphobos.druntime_shared/ trunk/libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp - copied, changed from r270301, trunk/libphobos/testsuite/libphobos.aa/aa.exp trunk/libphobos/testsuite/libphobos.phobos/ trunk/libphobos/testsuite/libphobos.phobos/phobos.exp - copied, changed from r270301, trunk/libphobos/testsuite/libphobos.aa/aa.exp trunk/libphobos/testsuite/libphobos.phobos_shared/ trunk/libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp - copied, changed from r270301, trunk/libphobos/testsuite/libphobos.aa/aa.exp Removed: trunk/libphobos/testsuite/libphobos.unittests/ trunk/libphobos/testsuite/test_runner.d Modified: trunk/libphobos/ChangeLog trunk/libphobos/configure trunk/libphobos/configure.ac trunk/libphobos/d_rules.am trunk/libphobos/libdruntime/Makefile.am trunk/libphobos/libdruntime/Makefile.in trunk/libphobos/src/Makefile.am trunk/libphobos/src/Makefile.in trunk/libphobos/testsuite/lib/libphobos.exp trunk/libphobos/testsuite/libphobos.aa/aa.exp trunk/libphobos/testsuite/libphobos.cycles/cycles.exp trunk/libphobos/testsuite/libphobos.hash/hash.exp trunk/libphobos/testsuite/libphobos.init_fini/init_fini.exp trunk/libphobos/testsuite/libphobos.shared/shared.exp trunk/libphobos/testsuite/libphobos.thread/thread.exp trunk/libphobos/testsuite/libphobos.typeinfo/typeinfo.exp trunk/libphobos/testsuite/testsuite_flags.in
[Bug d/88039] gdc.test/compilable/ddoc12.d FAILs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88039 ibuclaw at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED CC||ibuclaw at gcc dot gnu.org Resolution|--- |FIXED --- Comment #10 from ibuclaw at gcc dot gnu.org --- Fixed in r266933.
[Bug d/90060] libphobos.druntime_shared/core/thread.d FAILs on Solaris/SPARC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90060 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Comment on attachment 46150 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=46150 Use __makecontext_v2 on Solaris/SPARC >+version (makecontextv2) >+pragma(mangle, "__makecontext_v2") void makecontext(ucontext_t*, void >function(), int, ...); >+else >+void makecontext(ucontext_t*, void function(), int, ...); I would use alias here instead of pragma(mangle). void __makecontext_v2(ucontext_t*, void function(), int, ...); alias makecontext = __makecontext_v2; Both do the same thing however...
[Bug d/90063] druntime DSO first assertion fails on Solaris/SPARC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90063 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org --- Comment #1 from ibuclaw at gcc dot gnu.org --- After others have been committed, can you post a new stacktrace for this?
[Bug d/90065] Unaligned accesses on strict-alignment targets
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90065 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org --- Comment #1 from ibuclaw at gcc dot gnu.org --- What about using a union instead of type-punning here?
[Bug d/87799] failure during bootstrap, fails to build d/filename.o
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87799 ibuclaw at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||ibuclaw at gcc dot gnu.org Resolution|--- |FIXED --- Comment #3 from ibuclaw at gcc dot gnu.org --- Fixed in r270349.
[Bug d/88150] Use sections_elf_shared.d on Solaris
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88150 ibuclaw at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |RESOLVED CC||ibuclaw at gcc dot gnu.org Resolution|--- |FIXED --- Comment #15 from ibuclaw at gcc dot gnu.org --- See r270345 and r270347.
[Bug d/90062] SPARC stack alignment is wrong
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90062 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Mon Apr 15 20:32:50 2019 New Revision: 270372 URL: https://gcc.gnu.org/viewcvs?rev=270372&root=gcc&view=rev Log: PR d/90059 PR d/90060 PR d/90062 libphobos: Merge upstream druntime 70b9fea6 Backports fixes in the extern(C) bindings for the Solaris/SPARC port. Initial patch by Rainer Orth. Reviewed-on: https://github.com/dlang/druntime/pull/2555 Modified: trunk/libphobos/libdruntime/MERGE trunk/libphobos/libdruntime/core/sys/posix/ucontext.d trunk/libphobos/libdruntime/core/sys/solaris/link.d trunk/libphobos/libdruntime/core/thread.d
[Bug d/90059] Solaris mcontext_t, ucontext_t declarations are wrong
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90059 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Mon Apr 15 20:32:50 2019 New Revision: 270372 URL: https://gcc.gnu.org/viewcvs?rev=270372&root=gcc&view=rev Log: PR d/90059 PR d/90060 PR d/90062 libphobos: Merge upstream druntime 70b9fea6 Backports fixes in the extern(C) bindings for the Solaris/SPARC port. Initial patch by Rainer Orth. Reviewed-on: https://github.com/dlang/druntime/pull/2555 Modified: trunk/libphobos/libdruntime/MERGE trunk/libphobos/libdruntime/core/sys/posix/ucontext.d trunk/libphobos/libdruntime/core/sys/solaris/link.d trunk/libphobos/libdruntime/core/thread.d
[Bug d/90060] libphobos.druntime_shared/core/thread.d FAILs on Solaris/SPARC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90060 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Mon Apr 15 20:32:50 2019 New Revision: 270372 URL: https://gcc.gnu.org/viewcvs?rev=270372&root=gcc&view=rev Log: PR d/90059 PR d/90060 PR d/90062 libphobos: Merge upstream druntime 70b9fea6 Backports fixes in the extern(C) bindings for the Solaris/SPARC port. Initial patch by Rainer Orth. Reviewed-on: https://github.com/dlang/druntime/pull/2555 Modified: trunk/libphobos/libdruntime/MERGE trunk/libphobos/libdruntime/core/sys/posix/ucontext.d trunk/libphobos/libdruntime/core/sys/solaris/link.d trunk/libphobos/libdruntime/core/thread.d
[Bug d/89293] libphobos: core.atomic should have fallback for no atomic library
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89293 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sat Apr 20 17:14:50 2019 New Revision: 270470 URL: https://gcc.gnu.org/viewcvs?rev=270470&root=gcc&view=rev Log: libphobos: core.atomic should have fallback when there's no libatomic. libphobos/ChangeLog: 2019-04-20 Iain Buclaw PR d/89293 * libdruntime/core/atomic.d (casImpl): Remove static assert for GNU_Have_Atomics, add static path to handle missing atomic support. (atomicLoad): Likewise. (atomicStore): Likewise. (atomicFence): Likewise. (atomicMutexHandle, AtomicMutex): Declare types. (_getAtomicMutex): New function. (getAtomicMutex): Declare. Modified: trunk/libphobos/ChangeLog trunk/libphobos/libdruntime/core/atomic.d
[Bug d/89017] ICE in force_type_die, at dwarf2out.c:26061
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89017 --- Comment #4 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Apr 21 07:03:32 2019 New Revision: 270478 URL: https://gcc.gnu.org/viewcvs?rev=270478&root=gcc&view=rev Log: d: Use semanticRun to prevent declaration pass from running multiple times. This shouldn't happen during normal traversal of the AST provided from the front-end, however as there are some cases where declarations need to be visited out of order, such as what is being done in PR d/89017, it then becomes necessary to guard against this. gcc/d/ChangeLog: 2019-04-21 Iain Buclaw * decl.cc (DeclVisitor::visit(Import)): Set semanticRun after completion, guard against being called more than once. (DeclVisitor::visit(StructDeclaration)): Likewise. (DeclVisitor::visit(ClassDeclaration)): Likewise. (DeclVisitor::visit(InterfaceDeclaration)): Likewise. (DeclVisitor::visit(VarDeclaration)): Likewise. (DeclVisitor::visit(TypeInfoDeclaration)): Likewise. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/decl.cc
[Bug d/90064] InSituRegion lacks SPARC64 support
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90064 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Apr 21 10:21:07 2019 New Revision: 270483 URL: https://gcc.gnu.org/viewcvs?rev=270483&root=gcc&view=rev Log: PR d/90064 libphobos: Merge upstream phobos 428460ddd Defines growDownwards on SPARC64, initial patch by Rainer Orth. Backports another fix to std.process, allowing permissions tests to be skipped when running as root. Reviewed-on: https://github.com/dlang/phobos/pull/6962 Modified: trunk/libphobos/src/MERGE trunk/libphobos/src/std/experimental/allocator/building_blocks/region.d trunk/libphobos/src/std/process.d
[Bug d/90130] gdc.test/runnable/test12.d FAILs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90130 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Apr 21 20:26:12 2019 New Revision: 270485 URL: https://gcc.gnu.org/viewcvs?rev=270485&root=gcc&view=rev Log: PR d/90130 d/dmd: Merge upstream dmd 065fbd452 Fixes endian bug in CTFE, and corrects tests in the D2 testsuite that failed on big endian targets. Initial patch by Robin Dapp. Reviewed-on: https://github.com/dlang/dmd/pull/9665 Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/constfold.c trunk/gcc/testsuite/gdc.test/runnable/mars1.d trunk/gcc/testsuite/gdc.test/runnable/test12.d trunk/gcc/testsuite/gdc.test/runnable/test23.d
[Bug d/90079] SEGV in _aaKeys, _aaValues on 32-bit SPARC
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90079 --- Comment #5 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Tue Apr 23 15:19:55 2019 New Revision: 270514 URL: https://gcc.gnu.org/viewcvs?rev=270514&root=gcc&view=rev Log: PR d/90079 libphobos: Fix SEGV in _aaKeys, _aaValues on 32-bit SPARC Merges upstream druntime b43203a1 Reviewed-on: https://github.com/dlang/druntime/pull/2572 Modified: trunk/libphobos/libdruntime/MERGE trunk/libphobos/libdruntime/object.d
[Bug d/88431] link errors on build
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88431 --- Comment #4 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Apr 24 02:04:04 2019 New Revision: 270531 URL: https://gcc.gnu.org/viewcvs?rev=270531&root=gcc&view=rev Log: libphobos: Fix link build errors when compiling with unsupported options The first compilation test to get baseline warnings was getting more messages due to a missing object.d file, compared to later configure tests where libphobos is in the include paths. Because there must always be an object module during compilation, let the tests themselves be an empty object module instead. libphobos/ChangeLog: 2019-04-24 Iain Buclaw PR d/88431 * configure: Regenerate. * m4/libtool.m4 (lt_simple_compile_test_code): Update to not have dependencies on libphobos. (lt_simple_link_test_code): Likewise. (GDCFLAGS): Don't override for D compiler tests. Modified: trunk/libphobos/ChangeLog trunk/libphobos/configure trunk/libphobos/m4/libtool.m4
[Bug d/88654] Hangs in libphobos testsuite
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88654 --- Comment #8 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Apr 24 14:17:34 2019 New Revision: 270545 URL: https://gcc.gnu.org/viewcvs?rev=270545&root=gcc&view=rev Log: libphobos: Skip curl tests if libcurl is not installed on the target. libphobos/ChangeLog: 2019-04-24 Iain Buclaw PR d/88654 * testsuite/lib/libphobos.exp (libphobos-dg-test): Check libphobos_skipped_test_p before running test. (libphobos-dg-prune): New proc. (libphobos_init): Set libphobos_skip_tests. (libphobos_skipped_test_p): New proc. (check_effective_target_libcurl_available): New proc. * testsuite/libphobos.phobos/phobos.exp: Skip curl tests if library not found. * testsuite/libphobos.phobos_shared/phobos_shared.exp: Likewise. Modified: trunk/libphobos/ChangeLog trunk/libphobos/testsuite/lib/libphobos.exp trunk/libphobos/testsuite/libphobos.phobos/phobos.exp trunk/libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp
[Bug d/89432] FAIL: libphobos.unittests/druntime/{static,shared}/core.time on CentOS 5.11, Linux 2.6.18
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89432 --- Comment #6 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Apr 24 18:57:36 2019 New Revision: 270554 URL: https://gcc.gnu.org/viewcvs?rev=270554&root=gcc&view=rev Log: libphobos: Fix FAIL phobos.exp/core.time on CentOS 5.11, Linux 2.6.18 Merges upstream druntime e03164b5. Reviewed-on: https://github.com/dlang/druntime/pull/2581 libphobos/ChangeLog: 2019-04-24 Iain Buclaw PR d/89432 * testsuite/lib/libphobos.exp (check_effective_target_linux_pre_2639): New proc. * testsuite/libphobos.druntime/druntime.exp: Add compiler flag -fversion=Linux_Pre_2639 if target is linux_pre_2639. * testsuite/libphobos.druntime_shared/druntime_shared.exp: Likewise. Modified: trunk/libphobos/ChangeLog trunk/libphobos/libdruntime/MERGE trunk/libphobos/libdruntime/core/time.d trunk/libphobos/testsuite/lib/libphobos.exp trunk/libphobos/testsuite/libphobos.druntime/druntime.exp trunk/libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp
[Bug d/90086] libphobos: warning: type and size of dynamic symbol `fiber_switchContext' are not defined
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90086 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Apr 24 22:46:59 2019 New Revision: 270560 URL: https://gcc.gnu.org/viewcvs?rev=270560&root=gcc&view=rev Log: libphobos: Fix linker warning and SEGV in core.thread tests. The monolithic core/threadasm.S source has been removed, and split into multiple parts, one for each intended target CPU/OS. Added .type and .size directives for all asm implementations of fiber_switchContent and callWithStackShell where they were missing. libphobos/ChangeLog: 2019-04-25 Iain Buclaw PR d/90086 * m4/druntime/cpu.m4 (DRUNTIME_CPU_SOURCES): New macro. * configure.ac: Use it. * configure: Regenerate. * libdruntime/Makefile.am: Add new config sources to DRUNTIME_SOURCES_CONFIGURED. * libdruntime/Makefile.in: Regenerate. * libdruntime/config/aarch64/switchcontext.S: New file. * libdruntime/config/arm/switchcontext.S: New file. * libdruntime/config/common/threadasm.S: New file. * libdruntime/config/mingw/switchcontext.S: New file. * libdruntime/config/mips/switchcontext.S: New file. * libdruntime/config/powerpc/switchcontext.S: New file. * libdruntime/config/powerpc64/callwithstack.S: New file. * libdruntime/config/x86/switchcontext.S: New file. * libdruntime/core/threadasm.S: Remove. Added: trunk/libphobos/libdruntime/config/ trunk/libphobos/libdruntime/config/aarch64/ trunk/libphobos/libdruntime/config/aarch64/switchcontext.S trunk/libphobos/libdruntime/config/arm/ trunk/libphobos/libdruntime/config/arm/switchcontext.S trunk/libphobos/libdruntime/config/common/ trunk/libphobos/libdruntime/config/common/threadasm.S trunk/libphobos/libdruntime/config/mingw/ trunk/libphobos/libdruntime/config/mingw/switchcontext.S trunk/libphobos/libdruntime/config/mips/ trunk/libphobos/libdruntime/config/mips/switchcontext.S trunk/libphobos/libdruntime/config/powerpc/ trunk/libphobos/libdruntime/config/powerpc/switchcontext.S trunk/libphobos/libdruntime/config/powerpc64/ trunk/libphobos/libdruntime/config/powerpc64/callwithstack.S trunk/libphobos/libdruntime/config/x86/ trunk/libphobos/libdruntime/config/x86/switchcontext.S Removed: trunk/libphobos/libdruntime/core/threadasm.S Modified: trunk/libphobos/ChangeLog trunk/libphobos/configure trunk/libphobos/configure.ac trunk/libphobos/libdruntime/Makefile.am trunk/libphobos/libdruntime/Makefile.in trunk/libphobos/m4/druntime/cpu.m4
[Bug d/90250] libphobos: segfault in runtime caused by unexpected GC of TLS data.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90250 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Thu Apr 25 15:31:35 2019 New Revision: 270576 URL: https://gcc.gnu.org/viewcvs?rev=270576&root=gcc&view=rev Log: libphobos: Fix segfault in runtime caused by unexpected GC of TLS data. libphobos/ChangeLog: 2019-04-25 Iain Buclaw PR d/90250 * libdruntime/gcc/sections/elf_shared.d (initTLSRanges): Populate _tlsRanges in every startup thread. * testsuite/libphobos.thread/thread.exp: Load libphobos-dg.exp. * testsuite/libphobos.thread/tlsgc_sections.d: New test. Added: trunk/libphobos/testsuite/libphobos.thread/tlsgc_sections.d Modified: trunk/libphobos/ChangeLog trunk/libphobos/libdruntime/gcc/sections/elf_shared.d trunk/libphobos/testsuite/libphobos.thread/thread.exp
[Bug d/90651] ICE in FuncDeclaration::semantic3, at d/dmd/func.c:1524
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90651 --- Comment #3 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:47:46 2019 New Revision: 272340 URL: https://gcc.gnu.org/viewcvs?rev=272340&root=gcc&view=rev Log: PR d/90651 d/dmd: Merge upstream dmd 78dc31152 Fixes bug where the object module was not always implicitly imported. Reviewed-on: https://github.com/dlang/dmd/pull/ Added: trunk/gcc/testsuite/gdc.test/compilable/test19912.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19912a.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19912b.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19912c.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19912d.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19912e.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/dmodule.c
[Bug d/90660] ICE in TypeQualified::resolveHelper, at d/dmd/mtype.c:6738
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90660 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:47:34 2019 New Revision: 272339 URL: https://gcc.gnu.org/viewcvs?rev=272339&root=gcc&view=rev Log: PR d/90660 d/dmd: Merge upstream dmd bbc5ea66a Fixes segmentation fault in TypeQualified::resolveHelper. Reviewed-on: https://github.com/dlang/dmd/pull/1 Added: trunk/gcc/testsuite/gdc.test/fail_compilation/fail19913.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/mtype.c
[Bug d/90661] ICE in AlignDeclaration::syntaxCopy, at d/dmd/attrib.c:670
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90661 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:47:57 2019 New Revision: 272341 URL: https://gcc.gnu.org/viewcvs?rev=272341&root=gcc&view=rev Log: PR d/90661 d/dmd: Merge upstream dmd c74e624c9 Fixes segmentation fault in AlignDeclaration::syntaxCopy. Reviewed-on: https://github.com/dlang/dmd/pull/10001 Added: trunk/gcc/testsuite/gdc.test/fail_compilation/fail19914.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19915.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/attrib.c trunk/gcc/testsuite/gdc.test/compilable/aggr_alignment.d
[Bug d/90602] ICE: null field
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90602 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:48:23 2019 New Revision: 272342 URL: https://gcc.gnu.org/viewcvs?rev=272342&root=gcc&view=rev Log: PR d/90602 d/dmd: Merge upstream dmd 420cce2a6 Fixes internal compiler error during CTFE. Reviewed-on: https://github.com/dlang/dmd/pull/9997 Added: trunk/gcc/testsuite/gdc.test/fail_compilation/fail19897.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/dinterpret.c
[Bug d/90651] ICE in FuncDeclaration::semantic3, at d/dmd/func.c:1524
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90651 --- Comment #4 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:49:06 2019 New Revision: 272345 URL: https://gcc.gnu.org/viewcvs?rev=272345&root=gcc&view=rev Log: PR d/90651 d/dmd: Merge upstream dmd 0f6cbbcad Fixes segmentation fault in FuncDeclaration::semantic3. Reviewed-on: https://github.com/dlang/dmd/pull/10003 gcc/d/ChangeLog: 2019-06-16 Iain Buclaw * typeinfo.cc (object_module): New variable. (make_frontend_typeinfo): Update signature. Set temporary on generated TypeInfo classes. (create_tinfo_types): Set object_module. Move generation of front-end typeinfo into ... (create_frontend_tinfo_types): ... New function. (layout_typeinfo): Call create_frontend_tinfo_types. (layout_classinfo): Likewise. (layout_cpp_typeinfo): Likewise. (create_typeinfo): Likewise. Added: trunk/gcc/testsuite/gdc.test/fail_compilation/extra-files/minimal/ trunk/gcc/testsuite/gdc.test/fail_compilation/extra-files/minimal/object.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19911a.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19911b.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19911c.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19922.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19923.d Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/expressionsem.c trunk/gcc/d/dmd/func.c trunk/gcc/d/dmd/mtype.c trunk/gcc/d/typeinfo.cc
[Bug d/90604] ICE in sizemask, at d/dmd/mtype.c:2542
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90604 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:48:42 2019 New Revision: 272343 URL: https://gcc.gnu.org/viewcvs?rev=272343&root=gcc&view=rev Log: PR d/90604 d/dmd: Merge upstream dmd f30c5dc79 Fixes internal compiler error in Type::sizemask. Reviewed-on: https://github.com/dlang/dmd/pull/9998 Added: trunk/gcc/testsuite/gdc.test/fail_compilation/fail19898a.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19898b.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/intrange.c
[Bug d/90650] ICE in fold_convert_loc, at fold-const.c:2552
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90650 --- Comment #3 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:48:53 2019 New Revision: 272344 URL: https://gcc.gnu.org/viewcvs?rev=272344&root=gcc&view=rev Log: PR d/90650 d/dmd: Merge upstream dmd ab03e2918 Fixes internal compiler error in fold_convert_loc. Reviewed-on: https://github.com/dlang/dmd/pull/9996 gcc/testsuite/ChangeLog: 2019-06-16 Iain Buclaw PR d/90650 * gdc.dg/pr90650a.d: New test. * gdc.dg/pr90650b.d: New test. Added: trunk/gcc/testsuite/gdc.dg/pr90650a.d trunk/gcc/testsuite/gdc.dg/pr90650b.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/expressionsem.c trunk/gcc/d/dmd/mtype.c trunk/gcc/d/dmd/statementsem.c trunk/gcc/testsuite/ChangeLog
[Bug d/90761] ICE in visit, at d/dmd/dcast.c:883
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90761 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:49:18 2019 New Revision: 272346 URL: https://gcc.gnu.org/viewcvs?rev=272346&root=gcc&view=rev Log: PR d/90761 d/dmd: Merge upstream dmd d912f4e49 Fixes segmentation fault in implicitConvTo::ImplicitConvTo::visit. Reviewed-on: https://github.com/dlang/dmd/pull/10005 Added: trunk/gcc/testsuite/gdc.test/compilable/test19941.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19941.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/expressionsem.c
[Bug d/90762] ICE in resolvePropertiesX, at d/dmd/expression.c:251
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90762 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:49:30 2019 New Revision: 272347 URL: https://gcc.gnu.org/viewcvs?rev=272347&root=gcc&view=rev Log: PR d/90762 d/dmd: Merge upstream dmd b0cd59177 Fixes segmentation fault in resolvePropertiesX. Reviewed-on: https://github.com/dlang/dmd/pull/10006 Added: trunk/gcc/testsuite/gdc.test/compilable/traits.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/statementsem.c
[Bug d/90560] ICE in visit, at d/dmd/dcast.c:1872
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90560 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:49:43 2019 New Revision: 272348 URL: https://gcc.gnu.org/viewcvs?rev=272348&root=gcc&view=rev Log: PR d/90560 d/dmd: Merge upstream dmd c6887d9bb Fixes segmentation fault in castTo::CastTo::visit. Reviewed-on: https://github.com/dlang/dmd/pull/10007 Added: trunk/gcc/testsuite/gdc.test/fail_compilation/fail19890a.d trunk/gcc/testsuite/gdc.test/fail_compilation/fail19890b.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/mtype.c
[Bug d/90559] Out of memory because of negative length
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90559 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:50:20 2019 New Revision: 272351 URL: https://gcc.gnu.org/viewcvs?rev=272351&root=gcc&view=rev Log: PR d/90559 d/dmd: Merge upstream dmd 7afcc60c3 Partially fixes out of memory because of negative length. Reviewed-on: https://github.com/dlang/dmd/pull/10025 gcc/d/ChangeLog: 2019-06-16 Iain Buclaw PR d/90559 * d-target.cc (Target::_init): Reduce max static data size to INT_MAX. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-target.cc trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/clone.c trunk/gcc/d/dmd/expressionsem.c trunk/gcc/d/dmd/mtype.c trunk/gcc/d/dmd/mtype.h trunk/gcc/testsuite/gdc.test/fail_compilation/staticarrayoverflow.d
[Bug d/90863] ICE in StatementSemanticVisitor::visit, at d/dmd/statementsem.c:1992
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90863 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 07:50:31 2019 New Revision: 272352 URL: https://gcc.gnu.org/viewcvs?rev=272352&root=gcc&view=rev Log: PR d/90863 d/dmd: Merge upstream dmd 6e44734cc Fixes segmentation fault in StatementSemanticVisitor::visit. Reviewed-on: https://github.com/dlang/dmd/pull/10033 Added: trunk/gcc/testsuite/gdc.test/fail_compilation/fail19955.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/blockexit.c trunk/gcc/d/dmd/statementsem.c
[Bug d/90559] Out of memory because of negative length
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90559 ibuclaw at gcc dot gnu.org changed: What|Removed |Added Status|RESOLVED|ASSIGNED Last reconfirmed||2019-06-16 CC||ibuclaw at gcc dot gnu.org Resolution|FIXED |--- Ever confirmed|0 |1 --- Comment #4 from ibuclaw at gcc dot gnu.org --- Well, actually, partially fixed. There's still some pretty bad handling of very large arrays within the dmd frontend itself. One of the problems being that it represents the initializer as one big contiguous array in memory in the frontend AST, and this initializer could be copied multiple times if used during CTFE. I think ultimately to cloes this, array initializers should be represented sparsely, but that would be a bigger internal change to dmd itself.
[Bug d/90603] ICE in functionParameters, at d/dmd/expression.c:1553
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90603 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Jun 16 22:50:16 2019 New Revision: 272366 URL: https://gcc.gnu.org/viewcvs?rev=272366&root=gcc&view=rev Log: PR d/90603 d/dmd: Merge upstream dmd 792f0fdf2 Fixes segmentation fault in functionParameters, and other related semantic bugs in forward or recursively referenced declarations. Reviewed-on: https://github.com/dlang/dmd/pull/10046 Added: trunk/gcc/testsuite/gdc.test/compilable/imports/test16214b.d trunk/gcc/testsuite/gdc.test/compilable/test16214a.d trunk/gcc/testsuite/gdc.test/fail_compilation/b15875.d trunk/gcc/testsuite/gdc.test/fail_compilation/b17285.d trunk/gcc/testsuite/gdc.test/fail_compilation/b19691.d trunk/gcc/testsuite/gdc.test/fail_compilation/b19691e.d trunk/gcc/testsuite/gdc.test/fail_compilation/b19717.d trunk/gcc/testsuite/gdc.test/fail_compilation/b19717a.d Modified: trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/dclass.c trunk/gcc/d/dmd/declaration.c trunk/gcc/d/dmd/denum.c trunk/gcc/d/dmd/dimport.c trunk/gcc/d/dmd/dinterpret.c trunk/gcc/d/dmd/dstruct.c trunk/gcc/d/dmd/dtemplate.c trunk/gcc/d/dmd/expression.c trunk/gcc/d/dmd/expressionsem.c trunk/gcc/d/dmd/func.c trunk/gcc/d/dmd/mtype.c trunk/gcc/d/dmd/optimize.c trunk/gcc/d/dmd/statement.c trunk/gcc/d/dmd/statementsem.c trunk/gcc/d/dmd/traits.c
[Bug d/87799] failure during bootstrap, fails to build d/filename.o
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87799 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Oct 31 09:44:31 2018 New Revision: 265658 URL: https://gcc.gnu.org/viewcvs?rev=265658&root=gcc&view=rev Log: ChangeLog: 2018-10-31 Iain Buclaw PR bootstrap/87788 PR d/87799 * configure: Rebuild. * configure.ac: Disable D on systems where it is known not to work. libphobos/ChangeLog: 2018-10-31 Iain Buclaw PR bootstrap/87789 PR d/87818 PR d/87819 * configure.tgt: New file. Added: trunk/libphobos/configure.tgt Modified: trunk/ChangeLog trunk/configure trunk/configure.ac trunk/libphobos/ChangeLog
[Bug bootstrap/87788] [9 Regression] Bootstrap fails for x86_64-apple-darwin* with default languages selection after D addition.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87788 --- Comment #12 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Oct 31 09:44:31 2018 New Revision: 265658 URL: https://gcc.gnu.org/viewcvs?rev=265658&root=gcc&view=rev Log: ChangeLog: 2018-10-31 Iain Buclaw PR bootstrap/87788 PR d/87799 * configure: Rebuild. * configure.ac: Disable D on systems where it is known not to work. libphobos/ChangeLog: 2018-10-31 Iain Buclaw PR bootstrap/87789 PR d/87818 PR d/87819 * configure.tgt: New file. Added: trunk/libphobos/configure.tgt Modified: trunk/ChangeLog trunk/configure trunk/configure.ac trunk/libphobos/ChangeLog
[Bug d/87789] D does not build on powerpc64-linux
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87789 --- Comment #3 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Oct 31 09:44:31 2018 New Revision: 265658 URL: https://gcc.gnu.org/viewcvs?rev=265658&root=gcc&view=rev Log: ChangeLog: 2018-10-31 Iain Buclaw PR bootstrap/87788 PR d/87799 * configure: Rebuild. * configure.ac: Disable D on systems where it is known not to work. libphobos/ChangeLog: 2018-10-31 Iain Buclaw PR bootstrap/87789 PR d/87818 PR d/87819 * configure.tgt: New file. Added: trunk/libphobos/configure.tgt Modified: trunk/ChangeLog trunk/configure trunk/configure.ac trunk/libphobos/ChangeLog
[Bug d/87819] failure during bootstrap, fails to build libdruntime
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87819 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Oct 31 09:44:31 2018 New Revision: 265658 URL: https://gcc.gnu.org/viewcvs?rev=265658&root=gcc&view=rev Log: ChangeLog: 2018-10-31 Iain Buclaw PR bootstrap/87788 PR d/87799 * configure: Rebuild. * configure.ac: Disable D on systems where it is known not to work. libphobos/ChangeLog: 2018-10-31 Iain Buclaw PR bootstrap/87789 PR d/87818 PR d/87819 * configure.tgt: New file. Added: trunk/libphobos/configure.tgt Modified: trunk/ChangeLog trunk/configure trunk/configure.ac trunk/libphobos/ChangeLog
[Bug d/87818] D runtime does not build on FreeBSD.
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87818 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Oct 31 09:44:31 2018 New Revision: 265658 URL: https://gcc.gnu.org/viewcvs?rev=265658&root=gcc&view=rev Log: ChangeLog: 2018-10-31 Iain Buclaw PR bootstrap/87788 PR d/87799 * configure: Rebuild. * configure.ac: Disable D on systems where it is known not to work. libphobos/ChangeLog: 2018-10-31 Iain Buclaw PR bootstrap/87789 PR d/87818 PR d/87819 * configure.tgt: New file. Added: trunk/libphobos/configure.tgt Modified: trunk/ChangeLog trunk/configure trunk/configure.ac trunk/libphobos/ChangeLog
[Bug d/87825] profiledbootstrap is broken when D is enabled
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87825 --- Comment #1 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Wed Oct 31 21:48:52 2018 New Revision: 265702 URL: https://gcc.gnu.org/viewcvs?rev=265702&root=gcc&view=rev Log: Fix profiledbootstrap when D is enabled gcc/d/ChangeLog: 2018-10-31 Iain Buclaw PR d/87825 * Make-lang.in (d/idgen) Link with BUILD_LINKERFLAGS. (d/impcvgen): Likewise. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/Make-lang.in
[Bug d/87827] libgphobos.spec in the wrong place with --enable-version-specific-runtime-libs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87827 --- Comment #2 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Fri Nov 2 08:29:50 2018 New Revision: 265742 URL: https://gcc.gnu.org/viewcvs?rev=265742&root=gcc&view=rev Log: Fix libgphobos.spec in the wrong place with --enable-version-specific-runtime-libs libphobos/ChangeLog: 2018-11-01 Iain Buclaw PR d/87827 * Makefile.in: Rebuild. * configure: Rebuild. * configure.ac: Properly set MULTISUBDIR. * d_rules.am: Set toolexecdir and toolexeclibdir. * libdruntime/Makefile.in: Rebuild. * m4/druntime.m4 (DRUNTIME_INSTALL_DIRECTORIES): Add --enable-version-specific-runtime-libs. * src/Makefile.in: Rebuild. * testsuite/Makefile.in: Rebuild. Modified: trunk/libphobos/ChangeLog trunk/libphobos/Makefile.in trunk/libphobos/configure trunk/libphobos/configure.ac trunk/libphobos/d_rules.am trunk/libphobos/libdruntime/Makefile.in trunk/libphobos/m4/druntime.m4 trunk/libphobos/src/Makefile.in trunk/libphobos/testsuite/Makefile.in
[Bug d/87865] gdc doesn't build unless assert is marked noreturn
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87865 --- Comment #6 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sun Nov 4 23:34:44 2018 New Revision: 265780 URL: https://gcc.gnu.org/viewcvs?rev=265780&root=gcc&view=rev Log: Merge dmd upstream 6243fa6d2 This introduces a new header that pulls in system includes for use only in the DMD front-end part of the compiler, fixing up uses of problematic functions that are prevalent throughout the code. Commits merged from dmd. Fix build of the D frontend on the Hurd and KFreeBSD. Initial patch from Matthias Klose. https://github.com/dlang/dmd/pull/8893 Don't care about D/C++ compatibility in C++ port. Fixes build error in https://gcc.gnu.org/PR87788 https://github.com/dlang/dmd/pull/8895 Allow compiling front-end headers with strict warnings. https://github.com/dlang/dmd/pull/8909 Add root/system.h header for wrapping system includes. Fixes https://gcc.gnu.org/PR87865 https://github.com/dlang/dmd/pull/8910 Move checkedint to dmd/root. https://github.com/dlang/dmd/pull/8912 Use rmem instead of libc for malloc() and strdup(). https://github.com/dlang/dmd/pull/8913 Use align(8) for alignment of UnionExp, fixing several BUS errors due to alignment issues on SPARC. https://github.com/dlang/dmd/pull/8914 Don't pass NULL pointer as format parameter to errorSupplemental. https://github.com/dlang/dmd/pull/8916 gcc/d/ChangeLog: 2018-11-05 Iain Buclaw PR d/87865 * d-system.h: New file. Added: trunk/gcc/d/d-system.h trunk/gcc/d/dmd/MERGE trunk/gcc/d/dmd/root/checkedint.c - copied, changed from r265778, trunk/gcc/d/dmd/checkedint.c trunk/gcc/d/dmd/root/checkedint.h - copied, changed from r265778, trunk/gcc/d/dmd/checkedint.h trunk/gcc/d/dmd/root/dsystem.h Removed: trunk/gcc/d/dmd/checkedint.c trunk/gcc/d/dmd/checkedint.h trunk/gcc/d/dmd/unittests.c Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/dmd/access.c trunk/gcc/d/dmd/aggregate.h trunk/gcc/d/dmd/aliasthis.c trunk/gcc/d/dmd/aliasthis.h trunk/gcc/d/dmd/apply.c trunk/gcc/d/dmd/argtypes.c trunk/gcc/d/dmd/arrayop.c trunk/gcc/d/dmd/attrib.c trunk/gcc/d/dmd/attrib.h trunk/gcc/d/dmd/canthrow.c trunk/gcc/d/dmd/clone.c trunk/gcc/d/dmd/compiler.h trunk/gcc/d/dmd/cond.c trunk/gcc/d/dmd/constfold.c trunk/gcc/d/dmd/cppmangle.c trunk/gcc/d/dmd/ctfeexpr.c trunk/gcc/d/dmd/dcast.c trunk/gcc/d/dmd/dclass.c trunk/gcc/d/dmd/declaration.c trunk/gcc/d/dmd/declaration.h trunk/gcc/d/dmd/delegatize.c trunk/gcc/d/dmd/denum.c trunk/gcc/d/dmd/dimport.c trunk/gcc/d/dmd/dinterpret.c trunk/gcc/d/dmd/dmacro.c trunk/gcc/d/dmd/dmangle.c trunk/gcc/d/dmd/dmodule.c trunk/gcc/d/dmd/doc.c trunk/gcc/d/dmd/doc.h trunk/gcc/d/dmd/dscope.c trunk/gcc/d/dmd/dstruct.c trunk/gcc/d/dmd/dsymbol.c trunk/gcc/d/dmd/dsymbol.h trunk/gcc/d/dmd/dtemplate.c trunk/gcc/d/dmd/dversion.c trunk/gcc/d/dmd/entity.c trunk/gcc/d/dmd/enum.h trunk/gcc/d/dmd/errors.h trunk/gcc/d/dmd/expression.c trunk/gcc/d/dmd/expression.h trunk/gcc/d/dmd/expressionsem.c trunk/gcc/d/dmd/func.c trunk/gcc/d/dmd/globals.h trunk/gcc/d/dmd/hdrgen.c trunk/gcc/d/dmd/hdrgen.h trunk/gcc/d/dmd/identifier.c trunk/gcc/d/dmd/idgen.c trunk/gcc/d/dmd/impcnvgen.c trunk/gcc/d/dmd/imphint.c trunk/gcc/d/dmd/import.h trunk/gcc/d/dmd/init.c trunk/gcc/d/dmd/initsem.c trunk/gcc/d/dmd/intrange.c trunk/gcc/d/dmd/json.c trunk/gcc/d/dmd/lexer.c trunk/gcc/d/dmd/macro.h trunk/gcc/d/dmd/mars.h trunk/gcc/d/dmd/module.h trunk/gcc/d/dmd/mtype.c trunk/gcc/d/dmd/nspace.c trunk/gcc/d/dmd/nspace.h trunk/gcc/d/dmd/opover.c trunk/gcc/d/dmd/optimize.c trunk/gcc/d/dmd/parse.c trunk/gcc/d/dmd/parse.h trunk/gcc/d/dmd/root/aav.c trunk/gcc/d/dmd/root/aav.h trunk/gcc/d/dmd/root/array.h trunk/gcc/d/dmd/root/dcompat.h trunk/gcc/d/dmd/root/file.c trunk/gcc/d/dmd/root/file.h trunk/gcc/d/dmd/root/filename.c trunk/gcc/d/dmd/root/hash.h trunk/gcc/d/dmd/root/object.h trunk/gcc/d/dmd/root/outbuffer.c trunk/gcc/d/dmd/root/outbuffer.h trunk/gcc/d/dmd/root/port.h trunk/gcc/d/dmd/root/rmem.c trunk/gcc/d/dmd/root/rmem.h trunk/gcc/d/dmd/root/rootobject.c trunk/gcc/d/dmd/root/speller.c trunk/gcc/d/dmd/root/stringtable.c trunk/gcc/d/dmd/sapply.c trunk/gcc/d/dmd/sideeffect.c trunk/gcc/d/dmd/statement.c trunk/gcc/d/dmd/statementsem.c trunk/gcc/d/dmd/staticassert.c trunk/gcc/d/dmd/staticassert.h trunk/gcc/d/dmd/target.h trunk/gcc/d/dmd/template.h trunk/gcc/d/dmd/tokens.c trunk/gcc/d/dmd/traits.c trunk/gcc/d/dmd/utf.c trunk/gcc/d/dmd/utf.h trunk/gcc/d/dmd/utils.c trunk/gcc/d/dmd/version.h trunk/gcc/d/dmd/visitor.h
[Bug d/87824] x86_64-linux multilib issues
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87824 --- Comment #11 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sat Nov 17 11:01:00 2018 New Revision: 266234 URL: https://gcc.gnu.org/viewcvs?rev=266234&root=gcc&view=rev Log: Fix wrong alignment returned by .alignof property. The D language expects the value to be the minimum alignment required for the type, not the preferred alignment. gcc/d/ChangeLog: 2018-11-17 Iain Buclaw PR d/87824 * d-target.cc (Target::alignsize): Return min_align_of_type. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-target.cc
[Bug d/87824] x86_64-linux multilib issues
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87824 --- Comment #14 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Thu Nov 22 06:14:47 2018 New Revision: 266366 URL: https://gcc.gnu.org/viewcvs?rev=266366&root=gcc&view=rev Log: libphobos/ChangeLog: 2018-11-22 Johannes Pfau PR d/87824 * testsuite/libphobos.shared/shared.exp: Set proper path to phobos library for multilib builds. Modified: trunk/libphobos/ChangeLog trunk/libphobos/testsuite/libphobos.shared/shared.exp
[Bug d/87866] gdc fails to compile minimal test
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87866 --- Comment #4 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Sat Nov 24 09:51:03 2018 New Revision: 266429 URL: https://gcc.gnu.org/viewcvs?rev=266429&root=gcc&view=rev Log: gcc/d/ChangeLog: 2018-11-24 Iain Buclaw PR d/87866 * d-incpath.cc (add_globalpaths): Use lrealpath to get canonical name. (add_filepaths): Likewise. Modified: trunk/gcc/d/ChangeLog trunk/gcc/d/d-incpath.cc
[Bug rtl-optimization/69217] [6 Regression] ICE at var-tracking.c:5038 Segmentation fault
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69217 --- Comment #6 from ibuclaw at gcc dot gnu.org --- Author: ibuclaw Date: Tue Jan 26 20:57:37 2016 New Revision: 232845 URL: https://gcc.gnu.org/viewcvs?rev=232845&root=gcc&view=rev Log: PR rtl-optimization/69217 * var-tracking.c (tracked_record_parameter_p): Don't segfault if there are no TYPE_FIELDS set for the record type. Modified: trunk/gcc/ChangeLog trunk/gcc/var-tracking.c
[Bug d/108408] libphobos: Support building on *-*-cygwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108408 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org --- Comment #2 from ibuclaw at gcc dot gnu.org --- (In reply to nightstrike from comment #0) > +struct _Bigint { > +_Bigint* _next; > +int _k; > +int _maxwds; > +int _sign; > +int _wds; > +ulong[1] _x; > +} --snip-- > +_Bigint* _p5s; > +int _result_k; > +_Bigint* _result; > +_Bigint** _freelist; If some of these definitions are just going to be pointer fields in other structs, can definitely loose the definition, and just declare an opaque struct instead (struct _Bigint;)
[Bug d/108408] libphobos: Support building on *-*-cygwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108408 --- Comment #3 from ibuclaw at gcc dot gnu.org --- So a big part of what's missing in druntime bindings is *any* declarations for version(CRuntime_Newlib) targets. Though as I understand it, Cygwin is a bit of a hybrid in that matter.
[Bug d/108408] libphobos: Support building on *-*-cygwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108408 --- Comment #5 from ibuclaw at gcc dot gnu.org --- (In reply to Corinna from comment #4) > I'm not sure what you mean with "hybrid". Probably the wrong word to use, based on what I was told via gcc irc. """ the relationship of cygwin1.dll and newlib seems a lil strange afaict cygwin1.dll is a superset of newlib functionality """ > Having said that, there's no "one size fits all" for all supported > targets in newlib, so to support newlib targets in general, a preprocessor > based solution would be extremly helpful. In D, there's `static if` for that. Features can either be hard tuned in a config.d module (core/sys/cygwin/config.d?) or detected at configure-time and put into gcc/config.d.in.
[Bug d/108763] va_arg usage in D doesn't compile
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108763 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org --- Comment #5 from ibuclaw at gcc dot gnu.org --- I abandoned the idea of supporting RTTI-based variadics years ago. Even the current reference implementation only supports a subset of the x86_64 ABI in its current incarnation as far as I recall. I had considered maybe libffi might allow us to do this, but I didn't see anything that would allow me to say "retrieve the next variadic argument of size SIZE and mode MODE". But I could not see anything that looked exactly as that, even though as I understand there is limited support for constructing a variadic call to a C function.
[Bug d/108763] va_arg usage in D doesn't compile
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108763 --- Comment #6 from ibuclaw at gcc dot gnu.org --- I'll add it as a note to the deviations page. https://gcc.gnu.org/onlinedocs/gdc/Missing-Features.html#Missing-Features I'd actually forgotten about this.
[Bug d/106977] [13 regression] d21 dies with SIGBUS on 32-bit Darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977 ibuclaw at gcc dot gnu.org changed: What|Removed |Added CC||ibuclaw at gcc dot gnu.org --- Comment #6 from ibuclaw at gcc dot gnu.org --- There's r13-1113 with introduced the use of visible(). Can't see anything odd about the virtual function declaration that would suggest there's a mismatch between C++/D. It does return a struct though. Is there maybe something special done in the way structs are returned on 32-bit OSX that doesn't occur on 32-bit Linux? I could also just revert to accessing the underlying `->visibility` field directly, if it really is just that function call that's problematic.
[Bug d/106977] [13 regression] d21 dies with SIGBUS on 32-bit Darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977 --- Comment #9 from ibuclaw at gcc dot gnu.org --- (In reply to Iain Sandoe from comment #8) > + > +/* NODE is a FUNCTION_DECL, VAR_DECL or RECORD_TYPE for the declaration SYM. > + Set flags to reflect visibility that NODE will get in the object file. > */ > + > +void > +set_visibility_for_decl (tree node, Dsymbol *sym) > > hmmm.. should the call be "set_visibility_for_decl (decl, decl->csym); ? > > or should the signature of set_visibility_for_decl() be > set_visibility_for_decl (Dsymbol *sym, tree node)? > > or maybe I misread the comment I might be unclear, first parameter (NODE) is a tree *_DECL representation for the second parameters (SYM) that is the associated front-end symbol.
[Bug d/106977] [13 regression] d21 dies with SIGBUS on 32-bit Darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977 --- Comment #10 from ibuclaw at gcc dot gnu.org --- Without using `->visible()` would be something like: --- a/gcc/d/decl.cc +++ b/gcc/d/decl.cc @@ -2559,10 +2561,17 @@ set_linkage_for_decl (tree decl) void set_visibility_for_decl (tree node, Dsymbol *sym) { - Visibility visibility = sym->visible (); - if (visibility.kind == Visibility::private_) + Visibility::Kind kind; + if (AggregateDeclaration *ad = sym->isAggregateDeclaration ()) +kind = ad->visibility.kind; + else if (Declaration *d = sym->isDeclaration ()) +kind = d->visibility.kind; + else +gcc_unreachable (); + + if (kind == Visibility::private_) TREE_PRIVATE (node) = 1; - else if (visibility.kind == Visibility::protected_) + else if (kind == Visibility::protected_) TREE_PROTECTED (node) = 1; /* If the declaration was declared `export', append either the dllimport
[Bug d/106977] [13 regression] d21 dies with SIGBUS on 32-bit Darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977 --- Comment #12 from ibuclaw at gcc dot gnu.org --- Looks like a bad mismatch between C++ and D. When C++ calls the method, it pushes one register. When D calls it, pushes two. Looks like the method itself returns the result in 2 registers as well - or maybe uses return slot optimization. --- // C++ Caller code #include "tree.h" #include "dmd/dsymbol.h" #include "dmd/aggregate.h" void set_visibility_for_decl (tree node, Dsymbol *sym) { Visibility visibility = sym->visible (); // C++ Caller asm pushl %ebx subl$20, %esp .loc 1 2561 1 movl32(%esp), %eax movl28(%esp), %ebx .loc 1 2562 40 movl(%eax), %edx pushl %eax call*104(%edx) // D Caller code import dmd.dsymbol; import dmd.aggregate; import dmd.gluelayer; extern(C++) void set_visibility_for_decl (tree_node* node, Dsymbol sym) { Visibility visibility = sym.visible(); } // D Caller asm subl$28, %esp .loc 1 5 1 movl36(%esp), %eax .loc 1 8 27 leal8(%esp), %ecx subl$8, %esp movl(%eax), %edx pushl %eax pushl %ecx call*104(%edx) // D Callee code override final Visibility visible() pure nothrow @nogc @safe { return visibility; } // D Callee asm movl8(%esp), %edx movl4(%esp), %eax .loc 1 789 9 movl208(%edx), %ecx movl212(%edx), %edx movl%ecx, (%eax) movl%edx, 4(%eax) .loc 1 790 5 ret $4
[Bug d/106977] [13 regression] d21 dies with SIGBUS on 32-bit Darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977 --- Comment #13 from ibuclaw at gcc dot gnu.org --- Confirmed, D is doing NRVO return whereas C++ isn't. gdc-11 codegen of the `visible` method: --- struct Visibility visible (struct AggregateDeclaration * const this) { return = this->visibility; } --- vs. gdc-mainline --- struct Visibility visible (struct AggregateDeclaration * const this) { = this->visibility; return ; } ---
[Bug d/106977] [13 regression] d21 dies with SIGBUS on 32-bit Darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977 --- Comment #20 from ibuclaw at gcc dot gnu.org --- (In reply to Andrew Pinski from comment #19) > (In reply to Andrew Pinski from comment #18) > > > I think the visibility type is POD (assuming D has that concept) > > At least the front-end does. > See dmd/dstruct.d:443 > > if isPOD return false, TREE_ADDRESSABLE is set on the struct. > I have not gone through the code otherwise. See d/decl.cc:950 It's not TREE_ADDRESSABLE, but on 32-bit the struct is considered to be 'aggregate_value_p', which in turn sets up return by hidden reference. This effects how the return is handled later (around toir.cc:1044), which splits up the init and return expression. Returning this way I guess is fine for extern(D) functions, however we should not be so eager to do rvo/sret for other extern language functions. Having a quick look at C++ front-end, they require both `aggregate_value_p` and for a named variable to be in the return expression. ``` if (current_function_return_value) { tree r = current_function_return_value; tree outer; if (r != error_mark_node /* This is only worth doing for fns that return in memory--and simpler, since we don't have to worry about promoted modes. */ && aggregate_value_p (TREE_TYPE (TREE_TYPE (fndecl)), fndecl) ``` So for the current gate in D: ``` if (TREE_ADDRESSABLE (TREE_TYPE (resdecl)) || aggregate_value_p (TREE_TYPE (resdecl), fndecl)) ``` I think tightening that to (its late, and my parentheses may be wrong). ``` if (TREE_ADDRESSABLE (TREE_TYPE (resdecl)) || ((d->resolvedLinkage () == LINK::d || (d->resolvedLinkage () == LINK::cpp && d->nrvo_var)) && aggregate_value_p (TREE_TYPE (resdecl), fndecl))) ``` Which is: 1. TREE_ADDRESSABLE 2. extern(D) and aggregate_value_p 3. extern(C++) and have NVRO variable and aggregate_value_p I guess for extern(C) functions we should just forget even attempting to do any (N)RVO/SRET returns and let tree-nrv.cc decide whether to optimize or not.
[Bug d/106977] [13 regression] d21 dies with SIGBUS on 32-bit Darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977 --- Comment #21 from ibuclaw at gcc dot gnu.org --- There is something about the Darwin ABI I'm just not getting from looking at the front-end alone though: C++ Darwin 32-bit calling a method that returns an 8 byte struct: ``` __Z4testP3Bar: subl$24, %esp movl28(%esp), %eax movl(%eax), %edx pushl %eax// <-- call*(%edx) ``` C++ Linux 32-bit calling a method that returns an 8 byte struct: ``` _Z4testP3Bar: subl$44, %esp movl%gs:20, %edx movl%edx, 28(%esp) xorl%edx, %edx movl48(%esp), %eax leal8(%esp), %ecx subl$8, %esp movl(%eax), %edx pushl %eax// <-- pushl %ecx// <-- call*(%edx) ```
[Bug d/106977] [13 regression] d21 dies with SIGBUS on 32-bit Darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977 --- Comment #22 from ibuclaw at gcc dot gnu.org --- (In reply to ibuclaw from comment #21) > There is something about the Darwin ABI I'm just not getting from looking at > the front-end alone though: Taken from a test Iain had sent me, and I've subsequently modified. ``` struct Visibility { enum Kind { undefined, none, private_, package_, protected_, public_, export_ }; Kind kind; void *pkg; }; class Bar { public: int x; virtual Visibility vis (); }; Visibility Bar::vis () { return Visibility (); } class Foo : public Bar { public: Visibility v; int y; Visibility vis () override final; }; Visibility Foo::vis () { return v; } int test (Bar *foo) { Visibility vis; vis = foo->vis (); return vis.kind; } ```
[Bug d/106977] [13 regression] d21 dies with SIGBUS on 32-bit Darwin
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106977 --- Comment #24 from ibuclaw at gcc dot gnu.org --- (In reply to Iain Sandoe from comment #23) > So the ABIs differ in this (as noted on IRC, the Darwin 32b ABIs are not the > same as Linux). I'm still yet to work out why D on 32-bit Darwin behaves the same as 32-bit Linux though. I would have assumed the decision to generate an sret would occur long after the front-end has freed itself from the compilation process. Regardless, the ABI issue can be raised in a separate PR. Because of it though, that means for this bootstrap PR we just have to avoid calling any extern(C++) method implemented in D that returns a struct by value.