| Index: src/compiler/simplified-lowering.cc
|
| diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc
|
| index d216009e4e563d68b2c1b84aee3776c832c36a53..b4080a916e63f83a3842472214082bc939da66c7 100644
|
| --- a/src/compiler/simplified-lowering.cc
|
| +++ b/src/compiler/simplified-lowering.cc
|
| @@ -319,15 +319,18 @@ class RepresentationSelector {
|
| MachineType GetRepresentationForPhi(Node* node, MachineTypeUnion use) {
|
| // Phis adapt to the output representation their uses demand.
|
| Type* upper = NodeProperties::GetBounds(node).upper;
|
| - if ((use & kRepMask) == kRepTagged) {
|
| + if ((use & kRepMask) == kRepFloat32) {
|
| + // only float32 uses.
|
| + return kRepFloat32;
|
| + } else if ((use & kRepMask) == kRepFloat64) {
|
| + // only float64 uses.
|
| + return kRepFloat64;
|
| + } else if ((use & kRepMask) == kRepTagged) {
|
| // only tagged uses.
|
| return kRepTagged;
|
| } else if (upper->Is(Type::Integral32())) {
|
| // Integer within [-2^31, 2^32[ range.
|
| - if ((use & kRepMask) == kRepFloat64) {
|
| - // only float64 uses.
|
| - return kRepFloat64;
|
| - } else if (upper->Is(Type::Signed32()) || upper->Is(Type::Unsigned32())) {
|
| + if (upper->Is(Type::Signed32()) || upper->Is(Type::Unsigned32())) {
|
| // multiple uses, but we are within 32 bits range => pick kRepWord32.
|
| return kRepWord32;
|
| } else if (((use & kRepMask) == kRepWord32 &&
|
| @@ -507,6 +510,8 @@ class RepresentationSelector {
|
| return VisitLeaf(node, kRepWord32);
|
| case IrOpcode::kInt64Constant:
|
| return VisitLeaf(node, kRepWord64);
|
| + case IrOpcode::kFloat32Constant:
|
| + return VisitLeaf(node, kRepFloat32);
|
| case IrOpcode::kFloat64Constant:
|
| return VisitLeaf(node, kRepFloat64);
|
| case IrOpcode::kExternalConstant:
|
|
|