| Index: src/compiler/instruction-selector.cc
|
| diff --git a/src/compiler/instruction-selector.cc b/src/compiler/instruction-selector.cc
|
| index b6e011835640672058a5454c11551253b800aeba..7fd67e6d1c4610ed66e32063428b1a881af3f8b2 100644
|
| --- a/src/compiler/instruction-selector.cc
|
| +++ b/src/compiler/instruction-selector.cc
|
| @@ -933,6 +933,16 @@ void InstructionSelector::VisitControl(BasicBlock* block) {
|
| }
|
| }
|
|
|
| +void InstructionSelector::MarkPairProjectionsAsWord32(Node* node) {
|
| + Node* projection0 = NodeProperties::FindProjection(node, 0);
|
| + if (projection0) {
|
| + MarkAsWord32(projection0);
|
| + }
|
| + Node* projection1 = NodeProperties::FindProjection(node, 1);
|
| + if (projection1) {
|
| + MarkAsWord32(projection1);
|
| + }
|
| +}
|
|
|
| void InstructionSelector::VisitNode(Node* node) {
|
| DCHECK_NOT_NULL(schedule()->block(node)); // should only use scheduled nodes.
|
| @@ -1340,28 +1350,28 @@ void InstructionSelector::VisitNode(Node* node) {
|
| case IrOpcode::kCheckedStore:
|
| return VisitCheckedStore(node);
|
| case IrOpcode::kInt32PairAdd:
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 0));
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 1));
|
| + MarkAsWord32(node);
|
| + MarkPairProjectionsAsWord32(node);
|
| return VisitInt32PairAdd(node);
|
| case IrOpcode::kInt32PairSub:
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 0));
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 1));
|
| + MarkAsWord32(node);
|
| + MarkPairProjectionsAsWord32(node);
|
| return VisitInt32PairSub(node);
|
| case IrOpcode::kInt32PairMul:
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 0));
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 1));
|
| + MarkAsWord32(node);
|
| + MarkPairProjectionsAsWord32(node);
|
| return VisitInt32PairMul(node);
|
| case IrOpcode::kWord32PairShl:
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 0));
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 1));
|
| + MarkAsWord32(node);
|
| + MarkPairProjectionsAsWord32(node);
|
| return VisitWord32PairShl(node);
|
| case IrOpcode::kWord32PairShr:
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 0));
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 1));
|
| + MarkAsWord32(node);
|
| + MarkPairProjectionsAsWord32(node);
|
| return VisitWord32PairShr(node);
|
| case IrOpcode::kWord32PairSar:
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 0));
|
| - MarkAsWord32(NodeProperties::FindProjection(node, 1));
|
| + MarkAsWord32(node);
|
| + MarkPairProjectionsAsWord32(node);
|
| return VisitWord32PairSar(node);
|
| case IrOpcode::kAtomicLoad: {
|
| LoadRepresentation type = LoadRepresentationOf(node->op());
|
|
|