Index: src/compiler/operation-typer.cc |
diff --git a/src/compiler/operation-typer.cc b/src/compiler/operation-typer.cc |
index e74e164bf9286669c662adb25bdc4c4b6c90aa1f..c189d5c854eb69beeb7088c67dc6bdad43736d91 100644 |
--- a/src/compiler/operation-typer.cc |
+++ b/src/compiler/operation-typer.cc |
@@ -299,7 +299,13 @@ Type* OperationTyper::NumberAdd(Type* lhs, Type* rhs) { |
return Type::Number(); |
} |
Type* int_lhs = Type::Intersect(lhs, cache_.kInteger, zone()); |
+ if (lhs->Maybe(Type::MinusZero())) { |
+ int_lhs = Type::Union(int_lhs, cache_.kSingletonZero, zone()); |
+ } |
Type* int_rhs = Type::Intersect(rhs, cache_.kInteger, zone()); |
+ if (rhs->Maybe(Type::MinusZero())) { |
+ int_rhs = Type::Union(int_rhs, cache_.kSingletonZero, zone()); |
+ } |
Type* result = |
AddRanger(int_lhs->Min(), int_lhs->Max(), int_rhs->Min(), int_rhs->Max()); |
if (lhs->Maybe(Type::NaN()) || rhs->Maybe(Type::NaN())) { |