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;
|
||||
};
|
||||
|
||||
const auto& leftVariables = flattenMap[left->getAsSymbolNode()->getId()];
|
||||
const auto& rightVariables = flattenMap[right->getAsSymbolNode()->getId()];
|
||||
TVector<TVariable*>* leftVariables = nullptr;
|
||||
TVector<TVariable*>* rightVariables = nullptr;
|
||||
if (flattenLeft)
|
||||
leftVariables = &flattenMap[left->getAsSymbolNode()->getId()];
|
||||
if (flattenRight)
|
||||
rightVariables = &flattenMap[right->getAsSymbolNode()->getId()];
|
||||
TIntermAggregate* assignList = nullptr;
|
||||
for (int member = 0; member < (int)members.size(); ++member) {
|
||||
TIntermTyped* subRight = getMember(flattenRight, right, rightVariables, member);
|
||||
TIntermTyped* subLeft = getMember(flattenLeft, left, leftVariables, member);
|
||||
TIntermTyped* subRight = getMember(flattenRight, right, *rightVariables, member);
|
||||
TIntermTyped* subLeft = getMember(flattenLeft, left, *leftVariables, member);
|
||||
assignList = intermediate.growAggregate(assignList, intermediate.addAssign(op, subLeft, subRight, loc));
|
||||
}
|
||||
assignList->setOperator(EOpSequence);
|
||||
|
Loading…
x
Reference in New Issue
Block a user