Commit 939ec878a0

LemonBoy <thatlemon@gmail.com>
2019-05-06 21:41:08
Fix edge case in addXf3
The operands may be zero, use the wrapping operators and avoid a spurious integer-overflow error.
1 parent 60242e9
Changed files (1)
std
special
compiler_rt
std/special/compiler_rt/addXf3.zig
@@ -78,8 +78,8 @@ fn addXf3(comptime T: type, a: T, b: T) T {
     const infRep = @bitCast(Z, std.math.inf(T));
 
     // Detect if a or b is zero, infinity, or NaN.
-    if (aAbs - Z(1) >= infRep - Z(1) or
-        bAbs - Z(1) >= infRep - Z(1))
+    if (aAbs -% Z(1) >= infRep - Z(1) or
+        bAbs -% Z(1) >= infRep - Z(1))
     {
         // NaN + anything = qNaN
         if (aAbs > infRep) return @bitCast(T, @bitCast(Z, a) | quietBit);