projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.20.27: fixed bug 415
[sbcl.git]
/
src
/
compiler
/
x86-64
/
arith.lisp
diff --git
a/src/compiler/x86-64/arith.lisp
b/src/compiler/x86-64/arith.lisp
index
c02e9d7
..
d0436d5
100644
(file)
--- a/
src/compiler/x86-64/arith.lisp
+++ b/
src/compiler/x86-64/arith.lisp
@@
-432,7
+432,7
@@
(:vop-var vop)
(:save-p :compute-only)
(:generator 31
(:vop-var vop)
(:save-p :compute-only)
(:generator 31
- (let ((zero (generate-error-code vop division-by-zero-error x y)))
+ (let ((zero (generate-error-code vop 'division-by-zero-error x y)))
(if (sc-is y any-reg)
(inst test y y) ; smaller instruction
(inst cmp y 0))
(if (sc-is y any-reg)
(inst test y y) ; smaller instruction
(inst cmp y 0))
@@
-487,7
+487,7
@@
(:vop-var vop)
(:save-p :compute-only)
(:generator 33
(:vop-var vop)
(:save-p :compute-only)
(:generator 33
- (let ((zero (generate-error-code vop division-by-zero-error x y)))
+ (let ((zero (generate-error-code vop 'division-by-zero-error x y)))
(if (sc-is y unsigned-reg)
(inst test y y) ; smaller instruction
(inst cmp y 0))
(if (sc-is y unsigned-reg)
(inst test y y) ; smaller instruction
(inst cmp y 0))
@@
-538,7
+538,7
@@
(:vop-var vop)
(:save-p :compute-only)
(:generator 33
(:vop-var vop)
(:save-p :compute-only)
(:generator 33
- (let ((zero (generate-error-code vop division-by-zero-error x y)))
+ (let ((zero (generate-error-code vop 'division-by-zero-error x y)))
(if (sc-is y signed-reg)
(inst test y y) ; smaller instruction
(inst cmp y 0))
(if (sc-is y signed-reg)
(inst test y y) ; smaller instruction
(inst cmp y 0))
@@
-919,7
+919,9
@@
(:result-types unsigned-num)
(:generator 28
(move res arg)
(:result-types unsigned-num)
(:generator 28
(move res arg)
- (inst cmp res 0)
+ (if (sc-is res unsigned-reg)
+ (inst test res res)
+ (inst cmp res 0))
(inst jmp :ge POS)
(inst not res)
POS
(inst jmp :ge POS)
(inst not res)
POS