HLSL: Fix bug in previous checkin when non-flattened objects are not simple l-values.
This commit is contained in:
parent
d2ce838a58
commit
fcea302dbc
@ -1064,12 +1064,16 @@ TIntermTyped* HlslParseContext::handleAssign(const TSourceLoc& loc, TOperator op
|
|||||||
return subTree;
|
return subTree;
|
||||||
};
|
};
|
||||||
|
|
||||||
const auto& leftVariables = flattenMap[left->getAsSymbolNode()->getId()];
|
TVector<TVariable*>* leftVariables = nullptr;
|
||||||
const auto& rightVariables = flattenMap[right->getAsSymbolNode()->getId()];
|
TVector<TVariable*>* rightVariables = nullptr;
|
||||||
|
if (flattenLeft)
|
||||||
|
leftVariables = &flattenMap[left->getAsSymbolNode()->getId()];
|
||||||
|
if (flattenRight)
|
||||||
|
rightVariables = &flattenMap[right->getAsSymbolNode()->getId()];
|
||||||
TIntermAggregate* assignList = nullptr;
|
TIntermAggregate* assignList = nullptr;
|
||||||
for (int member = 0; member < (int)members.size(); ++member) {
|
for (int member = 0; member < (int)members.size(); ++member) {
|
||||||
TIntermTyped* subRight = getMember(flattenRight, right, rightVariables, member);
|
TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, member);
|
||||||
TIntermTyped* subLeft = getMember(flattenLeft, left, leftVariables, member);
|
TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member);
|
||||||
assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc));
|
assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc));
|
||||||
}
|
}
|
||||||
assignList->setOperator(EOpSequence);
|
assignList->setOperator(EOpSequence);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user