diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-04-25 13:59:25 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-04-25 13:59:25 -0700 |
commit | 5db12d067ed104e26f77e31a02febb0e0b2d1667 (patch) | |
tree | fab6a1665e1b315f6dc69724afb4755e2df1b1c3 /src/library.js | |
parent | bf882bc76af2d005371f03e3f0911fff61cbf627 (diff) |
fix llvm_uadd_with_overflow_i64 in the case of 0 higher bits
Diffstat (limited to 'src/library.js')
-rw-r--r-- | src/library.js | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/library.js b/src/library.js index 957f69bd..9b63084f 100644 --- a/src/library.js +++ b/src/library.js @@ -7522,8 +7522,10 @@ LibraryManager.library = { l = (a + c)>>>0; h = (b + d)>>>0; overflow = ((h>>>0) < (b>>>0))|0; // Return whether addition overflowed even the high word. - h = (h + (((l>>>0) < (a>>>0))|0))>>>0; // Add carry from low word to high word on overflow. - overflow = overflow | (!h); // Check again for overflow. + if ((l>>>0) < (a>>>0)) { + h = (h + 1)>>>0; // Add carry from low word to high word on overflow. + overflow = overflow | (!h); // Check again for overflow. + } {{{ makeStructuralReturn(['l|0', 'h', 'overflow'], true) }}}; }, |