aboutsummaryrefslogtreecommitdiff
path: root/gcc/d/dmd/expressionsem.c
diff options
context:
space:
mode:
authorIain Buclaw <ibuclaw@gdcproject.org>2019-06-16 07:48:53 +0000
committerIain Buclaw <ibuclaw@gcc.gnu.org>2019-06-16 07:48:53 +0000
commita1543fb19ba17a455b0e9df5e373a1643082f5d2 (patch)
treec8157e15adef387be9ecc8d925829a547fbcb813 /gcc/d/dmd/expressionsem.c
parent70106db92654b83cd0ea62a078805e84ef2d8ee8 (diff)
downloadgcc-a1543fb19ba17a455b0e9df5e373a1643082f5d2.zip
gcc-a1543fb19ba17a455b0e9df5e373a1643082f5d2.tar.gz
gcc-a1543fb19ba17a455b0e9df5e373a1643082f5d2.tar.bz2
re PR d/90650 (ICE in fold_convert_loc, at fold-const.c:2552)
PR d/90650 d/dmd: Merge upstream dmd ab03e2918 Fixes internal compiler error in fold_convert_loc. Reviewed-on: https://github.com/dlang/dmd/pull/9996 gcc/testsuite/ChangeLog: 2019-06-16 Iain Buclaw <ibuclaw@gdcproject.org> PR d/90650 * gdc.dg/pr90650a.d: New test. * gdc.dg/pr90650b.d: New test. From-SVN: r272344
Diffstat (limited to 'gcc/d/dmd/expressionsem.c')
-rw-r--r--gcc/d/dmd/expressionsem.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gcc/d/dmd/expressionsem.c b/gcc/d/dmd/expressionsem.c
index 19b7ccb..ebdfae5 100644
--- a/gcc/d/dmd/expressionsem.c
+++ b/gcc/d/dmd/expressionsem.c
@@ -2185,6 +2185,9 @@ public:
}
if (exp->e1->op == TOKslice || exp->e1->type->ty == Tarray || exp->e1->type->ty == Tsarray)
{
+ if (checkNonAssignmentArrayOp(exp->e1))
+ return setError();
+
if (exp->e1->op == TOKslice)
((SliceExp *)exp->e1)->arrayop = true;
@@ -6232,6 +6235,9 @@ public:
assert(exp->e1->type && exp->e2->type);
if (exp->e1->op == TOKslice || exp->e1->type->ty == Tarray || exp->e1->type->ty == Tsarray)
{
+ if (checkNonAssignmentArrayOp(exp->e1))
+ return setError();
+
// T[] ^^= ...
if (exp->e2->implicitConvTo(exp->e1->type->nextOf()))
{