diff options
author | Iain Buclaw <ibuclaw@gdcproject.org> | 2020-08-20 18:18:40 +0200 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gdcproject.org> | 2020-08-21 01:08:08 +0200 |
commit | 15717b4784053e59121a1e239d0081ca4d2c738a (patch) | |
tree | b9f2a3d562acef103b6463a4d17495cc7f8bc538 /gcc/d/dmd | |
parent | 00cb0f5840795698557731c6e549a5ce99573223 (diff) | |
download | gcc-15717b4784053e59121a1e239d0081ca4d2c738a.zip gcc-15717b4784053e59121a1e239d0081ca4d2c738a.tar.gz gcc-15717b4784053e59121a1e239d0081ca4d2c738a.tar.bz2 |
d: Merge upstream dmd 1b5a53d01.
Fixes an ICE in setValue at dmd/dinterpret.c:7046
This was originally seen when running the testsuite for a 16-bit target,
however, it could be reproduced on 32-bit using long[] as well.
Reviewed-on: https://github.com/dlang/dmd/pull/11547
gcc/d/ChangeLog:
* dmd/MERGE: Merge upstream dmd 1b5a53d01.
Diffstat (limited to 'gcc/d/dmd')
-rw-r--r-- | gcc/d/dmd/MERGE | 2 | ||||
-rw-r--r-- | gcc/d/dmd/ctfeexpr.c | 2 | ||||
-rw-r--r-- | gcc/d/dmd/dinterpret.c | 9 |
3 files changed, 2 insertions, 11 deletions
diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE index daa3e56..d0e5f44 100644 --- a/gcc/d/dmd/MERGE +++ b/gcc/d/dmd/MERGE @@ -1,4 +1,4 @@ -c2274e56a3220ea636c6199fd06cd54fcdf6bad9 +1b5a53d01c465109ce47edf49ace6143b69b118b 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/ctfeexpr.c b/gcc/d/dmd/ctfeexpr.c index 5230647..ee38033 100644 --- a/gcc/d/dmd/ctfeexpr.c +++ b/gcc/d/dmd/ctfeexpr.c @@ -1913,7 +1913,7 @@ bool isCtfeValueValid(Expression *newval) // e1 should be a CTFE reference Expression *e1 = ((AddrExp *)newval)->e1; return tb->ty == Tpointer && - ((e1->op == TOKstructliteral && isCtfeValueValid(e1)) || + (((e1->op == TOKstructliteral || e1->op == TOKarrayliteral) && isCtfeValueValid(e1)) || (e1->op == TOKvar) || (e1->op == TOKdotvar && isCtfeReferenceValid(e1)) || (e1->op == TOKindex && isCtfeReferenceValid(e1)) || diff --git a/gcc/d/dmd/dinterpret.c b/gcc/d/dmd/dinterpret.c index dd1105c..74c5b40 100644 --- a/gcc/d/dmd/dinterpret.c +++ b/gcc/d/dmd/dinterpret.c @@ -1947,15 +1947,6 @@ public: Type *elemtype = ((TypeArray *)(val->type))->next; d_uns64 elemsize = elemtype->size(); - // It's OK to cast from fixed length to dynamic array, eg &int[3] to int[]* - if (val->type->ty == Tsarray && pointee->ty == Tarray && - elemsize == pointee->nextOf()->size()) - { - new(pue) AddrExp(e->loc, val, e->type); - result = pue->exp(); - return; - } - // It's OK to cast from fixed length to fixed length array, eg &int[n] to int[d]*. if (val->type->ty == Tsarray && pointee->ty == Tsarray && elemsize == pointee->nextOf()->size()) |