mirror of
https://gcc.gnu.org/git/gcc.git
synced 2026-02-22 12:00:03 -05:00
D front-end changes: - Import dmd v2.103.0-beta.1. - Using `alias this' for classes has been deprecated. - The feature `-fpreview=dip25` is now enabled by default. - The compile-time traits `isVirtualFunction' and `getVirtualFunctions' have been deprecated. D runtime changes: - Import druntime v2.103.0-beta.1. Phobos changes: - Import phobos v2.103.0-beta.1. - Updated unicode grapheme walking updated to conform to Unicode version 15. - Improved friendliness of error messages when instantiating `std.algorithm.iteration.joiner' and `std.algorithm.sorting.sort' with wrong inputs. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 4ca4140e58. * dmd/VERSION: Bump version to v2.103.0-beta.1. * Make-lang.in (D_FRONTEND_OBJS): Add d/errorsink.o. * d-ctfloat.cc (CTFloat::sprint): Update signature for new front-end interface. * d-frontend.cc (getTypeInfoType): Likewise. * d-lang.cc (d_handle_option): Remove handling of -fpreview=dip25 and -frevert=dip25. (d_post_options): Remove enabling of sealed references language feature when scoped pointers is enabled. * d-tree.h (create_typeinfo): Update signature. * decl.cc (DeclVisitor::finish_vtable): Update for new front-end interface. (DeclVisitor::visit (VarDeclaration *)): Likewise. (DeclVisitor::visit (FuncDeclaration *)): Check skipCodegen to see if front-end explicitly requested not to generate code. * expr.cc (ExprVisitor::visit (NewExp *)): Update for new front-end interface. * lang.opt (fpreview=dip25): Remove. (frevert=dip25): Remove. * modules.cc (layout_moduleinfo_fields): Update for new front-end interface. (layout_moduleinfo): Likewise. * runtime.def (NEWCLASS): Remove. * toir.cc (IRVisitor::visit (IfStatement *)): Don't generate IR for if statement list when condition is `__ctfe'. * typeinfo.cc (create_typeinfo): Add generate parameter. * types.cc (layout_aggregate_members): Update for new front-end interface. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime 4ca4140e58. * libdruntime/Makefile.am (DRUNTIME_DSOURCES): Add core/factory.d. * libdruntime/Makefile.in: Regenerate. * src/MERGE: Merge upstream phobos 454dff14d. * testsuite/libphobos.hash/test_hash.d: Update test. * testsuite/libphobos.shared/finalize.d: Update test. * libdruntime/core/factory.d: New file. gcc/testsuite/ChangeLog: * gdc.dg/torture/simd23084.d: New test. * gdc.dg/torture/simd23085.d: New test. * gdc.dg/torture/simd23218.d: New test.
64 lines
1.3 KiB
D
64 lines
1.3 KiB
D
import core.runtime;
|
|
import core.stdc.stdio;
|
|
import core.stdc.string;
|
|
import core.thread;
|
|
import core.sys.posix.dlfcn;
|
|
|
|
void runTest()
|
|
{
|
|
Object obj;
|
|
obj = Object.factory("lib.MyFinalizer");
|
|
assert(obj.toString() == "lib.MyFinalizer");
|
|
obj = Object.factory("lib.MyFinalizerBig");
|
|
assert(obj.toString() == "lib.MyFinalizerBig");
|
|
}
|
|
|
|
class NoFinalize
|
|
{
|
|
size_t _finalizeCounter;
|
|
|
|
~this()
|
|
{
|
|
++_finalizeCounter;
|
|
}
|
|
}
|
|
|
|
class NoFinalizeBig : NoFinalize
|
|
{
|
|
ubyte[4096] _big = void;
|
|
}
|
|
|
|
extern (C) alias SetFinalizeCounter = void function(shared(size_t*));
|
|
|
|
void main(string[] args)
|
|
{
|
|
auto name = args[0] ~ '\0';
|
|
const pathlen = strrchr(name.ptr, '/') - name.ptr + 1;
|
|
name = name[0 .. pathlen] ~ "lib.so";
|
|
|
|
auto h = Runtime.loadLibrary(name);
|
|
assert(h !is null);
|
|
|
|
auto nf1 = new NoFinalize;
|
|
auto nf2 = new NoFinalizeBig;
|
|
|
|
shared size_t finalizeCounter;
|
|
auto setFinalizeCounter = cast(SetFinalizeCounter)dlsym(h, "setFinalizeCounter");
|
|
setFinalizeCounter(&finalizeCounter);
|
|
|
|
runTest();
|
|
auto thr = new Thread(&runTest);
|
|
thr.start();
|
|
thr.join();
|
|
|
|
auto r = Runtime.unloadLibrary(h);
|
|
if (!r)
|
|
assert(0);
|
|
if (finalizeCounter != 4)
|
|
assert(0);
|
|
if (nf1._finalizeCounter)
|
|
assert(0);
|
|
if (nf2._finalizeCounter)
|
|
assert(0);
|
|
}
|