Skip to content

Commit

Permalink
Merge pull request #4623 from kinke/merge_stable
Browse files Browse the repository at this point in the history
Merge upstream stable
  • Loading branch information
kinke committed Apr 19, 2024
2 parents faac493 + 6a8096b commit b75fc4c
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 2 deletions.
2 changes: 1 addition & 1 deletion CHANGELOG.md
@@ -1,7 +1,7 @@
# LDC master

#### Big news
- Frontend, druntime and Phobos are at version [2.108.0+](https://dlang.org/changelog/2.108.0.html). (#4591, #4615, #4619, #4622)
- Frontend, druntime and Phobos are at version [2.108.0+](https://dlang.org/changelog/2.108.0.html). (#4591, #4615, #4619, #4622, #4623)
- Support for [LLVM 18](https://releases.llvm.org/18.1.0/docs/ReleaseNotes.html). The prebuilt packages use v18.1.3 (except for macOS arm64). (#4599, #4605, #4607, #4604)
- Android: Switch to native ELF TLS, supported since API level 29 (Android v10), dropping our former custom TLS emulation (requiring a modified LLVM and a legacy ld.bfd linker). The prebuilt packages themselves require Android v10+ (armv7a) / v11+ (aarch64) too, and are built with NDK r26d. Shared druntime and Phobos libraries are now available (`-link-defaultlib-shared`), as on regular Linux. (#4618)

Expand Down
3 changes: 2 additions & 1 deletion dmd/expressionsem.d
Expand Up @@ -5341,7 +5341,8 @@ private extern (C++) final class ExpressionSemanticVisitor : Visitor
lowering = new DotIdExp(exp.loc, lowering, Id.object);

auto tbn = exp.type.nextOf();
while (tbn.ty == Tarray)
size_t i = nargs;
while (tbn.ty == Tarray && --i)
tbn = tbn.nextOf();
auto unqualTbn = tbn.unqualify(MODFlags.wild | MODFlags.const_ |
MODFlags.immutable_ | MODFlags.shared_);
Expand Down
21 changes: 21 additions & 0 deletions tests/dmd/runnable/test24498.d
@@ -0,0 +1,21 @@
import core.memory;

void main()
{
{
int[][] a = new int[][](2, 2);
assert(!(GC.getAttr(a.ptr) & GC.BlkAttr.NO_SCAN));
assert(GC.getAttr(a[0].ptr) & GC.BlkAttr.NO_SCAN);
}
{
void*[][] a = new void*[][](2, 2);
assert(!(GC.getAttr(a.ptr) & GC.BlkAttr.NO_SCAN));
assert(!(GC.getAttr(a[0].ptr) & GC.BlkAttr.NO_SCAN));
}
{
int[][][] a = new int[][][](2, 2);
assert(!(GC.getAttr(a.ptr) & GC.BlkAttr.NO_SCAN));
assert(!(GC.getAttr(a[0].ptr) & GC.BlkAttr.NO_SCAN));
assert(a[0][0].ptr is null);
}
}

0 comments on commit b75fc4c

Please sign in to comment.