From: Iain Buclaw Date: Sun, 16 Jun 2019 07:49:43 +0000 (+0000) Subject: re PR d/90560 (ICE in visit, at d/dmd/dcast.c:1872) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=af1b88ee7b46234bd68593cfdf7ef3546024c635;p=gcc.git re PR d/90560 (ICE in visit, at d/dmd/dcast.c:1872) PR d/90560 d/dmd: Merge upstream dmd c6887d9bb Fixes segmentation fault in castTo::CastTo::visit. Reviewed-on: https://github.com/dlang/dmd/pull/10007 From-SVN: r272348 --- diff --git a/gcc/d/dmd/MERGE b/gcc/d/dmd/MERGE index 36f9aa9c241..3e3e718c11b 100644 --- a/gcc/d/dmd/MERGE +++ b/gcc/d/dmd/MERGE @@ -1,4 +1,4 @@ -b0cd591770fefb4db6eaba89b7a548ef1e980f5c +c6887d9bbbe7b68e03ba3bccbf61432c1b369386 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/mtype.c b/gcc/d/dmd/mtype.c index 1757b498deb..2b1c5a197e2 100644 --- a/gcc/d/dmd/mtype.c +++ b/gcc/d/dmd/mtype.c @@ -4134,8 +4134,7 @@ Type *TypeSArray::semantic(Loc loc, Scope *sc) * when the bottom of element type is opaque. */ } - else if (tbn->isintegral() || - tbn->isfloating() || + else if (tbn->isTypeBasic() || tbn->ty == Tpointer || tbn->ty == Tarray || tbn->ty == Tsarray || diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail19890a.d b/gcc/testsuite/gdc.test/fail_compilation/fail19890a.d new file mode 100644 index 00000000000..57c4caf34ab --- /dev/null +++ b/gcc/testsuite/gdc.test/fail_compilation/fail19890a.d @@ -0,0 +1,7 @@ +// PERMUTE_ARGS: +/* +--- +fail_compilation/fail19890a.d(8): Error: `void[/^[0-9]+(LU)?$/]` size 1 * /^[0-9]+$/ exceeds 0x7fffffff size limit for static array +--- +*/ +void[] f = cast(void[-1]) "a"; diff --git a/gcc/testsuite/gdc.test/fail_compilation/fail19890b.d b/gcc/testsuite/gdc.test/fail_compilation/fail19890b.d new file mode 100644 index 00000000000..a9b18741833 --- /dev/null +++ b/gcc/testsuite/gdc.test/fail_compilation/fail19890b.d @@ -0,0 +1,7 @@ +// PERMUTE_ARGS: +/* +--- +fail_compilation/fail19890b.d(8): Error: `void[/^[0-9]+(LU)?$/]` size 1 * /^[0-9]+$/ exceeds 0x7fffffff size limit for static array +--- +*/ +void[] f = cast(void[-2]) "a";