public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r12-8336] d: Merge upstream dmd 88de5e369.
@ 2022-05-05 19:11 Iain Buclaw
0 siblings, 0 replies; only message in thread
From: Iain Buclaw @ 2022-05-05 19:11 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:b4acfef1342097ceaf10fa935831f8edd7069431
commit r12-8336-gb4acfef1342097ceaf10fa935831f8edd7069431
Author: Iain Buclaw <ibuclaw@gdcproject.org>
Date: Thu May 5 21:00:36 2022 +0200
d: Merge upstream dmd 88de5e369.
D front-end changes:
- Merge regression fixes in v2.100.0 branch.
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 88de5e369.
Diff:
---
gcc/d/dmd/MERGE | 2 +-
gcc/d/dmd/traits.d | 2 +-
gcc/d/dmd/typesem.d | 8 ++++++--
gcc/testsuite/gdc.test/compilable/test23087.d | 9 +++++++++
gcc/testsuite/gdc.test/compilable/test23089.d | 7 +++++++
gcc/testsuite/gdc.test/runnable/test23083.d | 16 ++++++++++++++++
6 files changed, 40 insertions(+), 4 deletions(-)
diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE
index 984e375479b..73697fba8e6 100644
--- a/gcc/d/dmd/MERGE
+++ b/gcc/d/dmd/MERGE
@@ -1,4 +1,4 @@
-081d61e157f0064dc93c757d61cd998d3cb5288f
+88de5e369b2c322e55174ae4f3bef5ad0c0c0930
The first line of this file holds the git revision number of the last
merge done from the dlang/dmd repository.
diff --git a/gcc/d/dmd/traits.d b/gcc/d/dmd/traits.d
index 04e1c47d16e..db77107e4ae 100644
--- a/gcc/d/dmd/traits.d
+++ b/gcc/d/dmd/traits.d
@@ -1515,7 +1515,7 @@ Expression semanticTraits(TraitsExp e, Scope* sc)
if (tf)
{
- link = fd ? fd.linkage : tf.linkage;
+ link = fd ? fd.toAliasFunc().linkage : tf.linkage;
}
else
{
diff --git a/gcc/d/dmd/typesem.d b/gcc/d/dmd/typesem.d
index f63b17752ed..5db7d43371e 100644
--- a/gcc/d/dmd/typesem.d
+++ b/gcc/d/dmd/typesem.d
@@ -3637,12 +3637,16 @@ Expression dotExp(Type mt, Scope* sc, Expression e, Identifier ident, int flag)
}
else
{
+ Expression e0;
+ Expression ev = e;
+ ev = extractSideEffect(sc, "__tup", e0, ev);
+
const length = cast(size_t)mt.dim.toUInteger();
auto exps = new Expressions();
exps.reserve(length);
foreach (i; 0 .. length)
- exps.push(new IndexExp(e.loc, e, new IntegerExp(e.loc, i, Type.tsize_t)));
- e = new TupleExp(e.loc, exps);
+ exps.push(new IndexExp(e.loc, ev, new IntegerExp(e.loc, i, Type.tsize_t)));
+ e = new TupleExp(e.loc, e0, exps);
}
}
else
diff --git a/gcc/testsuite/gdc.test/compilable/test23087.d b/gcc/testsuite/gdc.test/compilable/test23087.d
new file mode 100644
index 00000000000..6927ddf04df
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/test23087.d
@@ -0,0 +1,9 @@
+// https://issues.dlang.org/show_bug.cgi?id=23087
+struct S
+{
+ this(bool) {}
+ this(bool, int) {}
+}
+
+static foreach (ctor; __traits(getOverloads, S, "__ctor"))
+ static assert(__traits(getLinkage, ctor) == "D");
diff --git a/gcc/testsuite/gdc.test/compilable/test23089.d b/gcc/testsuite/gdc.test/compilable/test23089.d
new file mode 100644
index 00000000000..1bc29138573
--- /dev/null
+++ b/gcc/testsuite/gdc.test/compilable/test23089.d
@@ -0,0 +1,7 @@
+// https://issues.dlang.org/show_bug.cgi?id=23089
+extern(System) int i23089;
+
+extern(System):
+
+alias F23089 = void function(int);
+F23089 f23089;
diff --git a/gcc/testsuite/gdc.test/runnable/test23083.d b/gcc/testsuite/gdc.test/runnable/test23083.d
new file mode 100644
index 00000000000..41c881f30a5
--- /dev/null
+++ b/gcc/testsuite/gdc.test/runnable/test23083.d
@@ -0,0 +1,16 @@
+// https://issues.dlang.org/show_bug.cgi?id=23083
+int calls = 0;
+
+int[2] f()
+{
+ calls++;
+ return [123, 456];
+}
+
+void g(int a, int b) {}
+
+void main()
+{
+ g(f().tupleof);
+ assert(calls == 1);
+}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-05-05 19:11 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-05 19:11 [gcc r12-8336] d: Merge upstream dmd 88de5e369 Iain Buclaw
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).