diff options
author | Iain Buclaw <ibuclaw@gcc.gnu.org> | 2019-06-16 07:48:23 +0000 |
---|---|---|
committer | Iain Buclaw <ibuclaw@gcc.gnu.org> | 2019-06-16 07:48:23 +0000 |
commit | e7c6715ec82458cf0b9a362bf9b068d0574607f9 (patch) | |
tree | d8473be2cfc157fafdab06c9ebb73c750502a282 /gcc/d | |
parent | 22682e5b5f7cc596b165534ad9b8f201354126ce (diff) | |
download | gcc-e7c6715ec82458cf0b9a362bf9b068d0574607f9.zip gcc-e7c6715ec82458cf0b9a362bf9b068d0574607f9.tar.gz gcc-e7c6715ec82458cf0b9a362bf9b068d0574607f9.tar.bz2 |
re PR d/90602 (ICE: null field)
PR d/90602
d/dmd: Merge upstream dmd 420cce2a6
Fixes internal compiler error during CTFE.
Reviewed-on: https://github.com/dlang/dmd/pull/9997
From-SVN: r272342
Diffstat (limited to 'gcc/d')
-rw-r--r-- | gcc/d/dmd/MERGE | 2 | ||||
-rw-r--r-- | gcc/d/dmd/dinterpret.c | 13 |
2 files changed, 11 insertions, 4 deletions
diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE index 6edc63a..7456d60 100644 --- a/gcc/d/dmd/MERGE +++ b/gcc/d/dmd/MERGE @@ -1,4 +1,4 @@ -c74e624c9a0a9e7e39f96b2f005f86e123df56c9 +420cce2a654f14b8de4a75cbb5d4203fce8d4e0f 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/dinterpret.c b/gcc/d/dmd/dinterpret.c index acca4e8..0749c7f 100644 --- a/gcc/d/dmd/dinterpret.c +++ b/gcc/d/dmd/dinterpret.c @@ -6053,9 +6053,16 @@ public: result = (*se->elements)[i]; if (!result) { - e->error("Internal Compiler Error: null field %s", v->toChars()); - result = CTFEExp::cantexp; - return; + // https://issues.dlang.org/show_bug.cgi?id=19897 + // Zero-length fields don't have an initializer. + if (v->type->size() == 0) + result = voidInitLiteral(e->type, v).copy(); + else + { + e->error("Internal Compiler Error: null field %s", v->toChars()); + result = CTFEExp::cantexp; + return; + } } if (result->op == TOKvoid) { |