fixes #6753
This commit is contained in:
parent
6abdd7cbf6
commit
fe18769fe1
2 changed files with 20 additions and 7 deletions
|
|
@ -531,13 +531,13 @@ proc mulInt(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
|||
proc divInt(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
when defined(nimphp):
|
||||
asm """
|
||||
return floor(`a` / `b`);
|
||||
return trunc(`a` / `b`);
|
||||
"""
|
||||
else:
|
||||
asm """
|
||||
if (`b` == 0) `raiseDivByZero`();
|
||||
if (`b` == -1 && `a` == 2147483647) `raiseOverflow`();
|
||||
return Math.floor(`a` / `b`);
|
||||
return Math.trunc(`a` / `b`);
|
||||
"""
|
||||
|
||||
proc modInt(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
|
|
@ -549,7 +549,7 @@ proc modInt(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
|||
asm """
|
||||
if (`b` == 0) `raiseDivByZero`();
|
||||
if (`b` == -1 && `a` == 2147483647) `raiseOverflow`();
|
||||
return Math.floor(`a` % `b`);
|
||||
return Math.trunc(`a` % `b`);
|
||||
"""
|
||||
|
||||
proc addInt64(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
|
|
@ -594,13 +594,13 @@ proc mulInt64(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
|||
proc divInt64(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
when defined(nimphp):
|
||||
asm """
|
||||
return floor(`a` / `b`);
|
||||
return trunc(`a` / `b`);
|
||||
"""
|
||||
else:
|
||||
asm """
|
||||
if (`b` == 0) `raiseDivByZero`();
|
||||
if (`b` == -1 && `a` == 9223372036854775807) `raiseOverflow`();
|
||||
return Math.floor(`a` / `b`);
|
||||
return Math.trunc(`a` / `b`);
|
||||
"""
|
||||
|
||||
proc modInt64(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
||||
|
|
@ -612,7 +612,7 @@ proc modInt64(a, b: int): int {.asmNoStackFrame, compilerproc.} =
|
|||
asm """
|
||||
if (`b` == 0) `raiseDivByZero`();
|
||||
if (`b` == -1 && `a` == 9223372036854775807) `raiseOverflow`();
|
||||
return Math.floor(`a` % `b`);
|
||||
return Math.trunc(`a` % `b`);
|
||||
"""
|
||||
|
||||
proc negInt(a: int): int {.compilerproc.} =
|
||||
|
|
|
|||
|
|
@ -2,7 +2,9 @@ discard """
|
|||
output: '''foo
|
||||
js 3.14
|
||||
7
|
||||
1'''
|
||||
1
|
||||
-21550
|
||||
-21550'''
|
||||
"""
|
||||
|
||||
# This file tests the JavaScript generator
|
||||
|
|
@ -40,3 +42,14 @@ procThatRefersToConst() # Call bar before it is defined
|
|||
proc procThatRefersToConst() =
|
||||
var i = 0 # Use a var index, otherwise nim will constfold foo[0]
|
||||
echo someConst[i] # JS exception here: foo is still not initialized (undefined)
|
||||
|
||||
# bug #6753
|
||||
let x = -1861876800
|
||||
const y = 86400
|
||||
echo (x - (y - 1)) div y # Now gives `-21550`
|
||||
|
||||
proc foo09() =
|
||||
let x = -1861876800
|
||||
const y = 86400
|
||||
echo (x - (y - 1)) div y # Still gives `-21551`
|
||||
foo09()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue