From 1c1da4ccb85e14f4751a151e8c8f5620418e5546 Mon Sep 17 00:00:00 2001 From: Iain Buclaw Date: Sun, 15 May 2016 16:43:44 +0200 Subject: [PATCH] Bug 223: [ARM] Fix ICE in operand_equal_p, at fold-const.c:2934 --- gcc/d/ChangeLog | 5 +++++ gcc/d/expr.cc | 2 ++ 2 files changed, 7 insertions(+) diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index f4e2b4c1a..8e001bb38 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog @@ -1,3 +1,8 @@ +2016-05-15 Iain Buclaw + + * expr.cc (ExprVisitor::visit(IdentityExp*)): Remove side-effects + before comparing two dynamic arrays. + 2016-05-14 Iain Buclaw * d-codegen.cc (get_decl_tree): First check if cfun is set. diff --git a/gcc/d/expr.cc b/gcc/d/expr.cc index 9cc9c5c3a..292f6813d 100644 --- a/gcc/d/expr.cc +++ b/gcc/d/expr.cc @@ -117,7 +117,9 @@ class ExprVisitor : public Visitor { // Convert arrays to D array types. tree t1 = d_array_convert(e->e1); + t1 = maybe_make_temp(t1); tree t2 = d_array_convert(e->e2); + t2 = maybe_make_temp(t2); this->result_ = build2(code, build_ctype(e->type), t1, t2); } else if (tb1->isfloating())