| Index: src/compiler/simplified-lowering.cc
 | 
| diff --git a/src/compiler/simplified-lowering.cc b/src/compiler/simplified-lowering.cc
 | 
| index 6c14884e29fc584a16ddfa15792c131de96c81d6..fcf9d4d6a04a1ad952403b4024fc5099fa53c5b2 100644
 | 
| --- a/src/compiler/simplified-lowering.cc
 | 
| +++ b/src/compiler/simplified-lowering.cc
 | 
| @@ -1056,7 +1056,7 @@ class RepresentationSelector {
 | 
|      }
 | 
|  
 | 
|      // Use truncation if available.
 | 
| -    if (BothInputsAre(node, type_cache_.kAdditiveSafeInteger) &&
 | 
| +    if (BothInputsAre(node, type_cache_.kAdditiveSafeIntegerOrMinusZero) &&
 | 
|          truncation.TruncatesToWord32()) {
 | 
|        // safe-int + safe-int = x (truncated to int32)
 | 
|        // => signed Int32Add/Sub (truncated)
 | 
| @@ -1282,7 +1282,8 @@ class RepresentationSelector {
 | 
|            // => signed Int32Add/Sub
 | 
|            VisitInt32Binop(node);
 | 
|            if (lower()) NodeProperties::ChangeOp(node, Int32Op(node));
 | 
| -        } else if (BothInputsAre(node, type_cache_.kAdditiveSafeInteger) &&
 | 
| +        } else if (BothInputsAre(node,
 | 
| +                                 type_cache_.kAdditiveSafeIntegerOrMinusZero) &&
 | 
|                     truncation.TruncatesToWord32()) {
 | 
|            // safe-int + safe-int = x (truncated to int32)
 | 
|            // => signed Int32Add/Sub (truncated)
 | 
| @@ -1305,7 +1306,8 @@ class RepresentationSelector {
 | 
|              return;
 | 
|            }
 | 
|            if (truncation.TruncatesToWord32() &&
 | 
| -              NodeProperties::GetType(node)->Is(type_cache_.kSafeInteger)) {
 | 
| +              NodeProperties::GetType(node)->Is(
 | 
| +                  type_cache_.kSafeIntegerOrMinusZero)) {
 | 
|              // Multiply reduces to Int32Mul if the inputs are integers,
 | 
|              // the uses are truncating and the result is in the safe
 | 
|              // integer range.
 | 
| 
 |