// // Copyright (c) 2002-2015 The ANGLE Project Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // #include "compiler/translator/SimplifyArrayAssignment.h" bool SimplifyArrayAssignment::visitBinary(Visit visit, TIntermBinary *node) { switch (node->getOp()) { case EOpAssign: { TIntermNode *parent = getParentNode(); if (node->getLeft()->isArray() && parent != nullptr) { TIntermAggregate *parentAgg = parent->getAsAggregate(); if (parentAgg != nullptr && parentAgg->getOp() == EOpSequence) { // This case is fine, the result of the assignment is not used. break; } // The result of the assignment needs to be stored into a temporary variable, // the assignment needs to be replaced with a reference to the temporary variable, // and the temporary variable needs to finally be assigned to the target variable. // This also needs to interact correctly with unfolding short circuiting operators. UNIMPLEMENTED(); } } break; default: break; } return true; }