From a1543fb19ba17a455b0e9df5e373a1643082f5d2 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 16 Jun 2019 07:48:53 +0000 Subject: 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 PR d/90650 * gdc.dg/pr90650a.d: New test. * gdc.dg/pr90650b.d: New test. From-SVN: r272344 --- gcc/d/dmd/expressionsem.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gcc/d/dmd/expressionsem.c') 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())) { -- cgit v1.1