Raymond Toy pushed to branch issue-168-no-negated-forms-for-jmp at cmucl / cmucl
Commits:
-
cb945c68
by Raymond Toy at 2023-02-27T15:33:25+00:00
-
bb43504b
by Raymond Toy at 2023-02-27T15:33:25+00:00
-
af8179e5
by Raymond Toy at 2023-02-27T07:45:42-08:00
6 changed files:
- .gitlab-ci.yml
- + src/bootfiles/21d/boot-2021-07-1.lisp
- src/code/exports.lisp
- src/compiler/fndb.lisp
- src/compiler/generic/vm-type.lisp
- tests/issues.lisp
Changes:
| 1 | 1 | variables:
|
| 2 | 2 | download_url: "https://common-lisp.net/project/cmucl/downloads/snapshots/2021/07"
|
| 3 | 3 | version: "2021-07-x86"
|
| 4 | - bootstrap: "-B boot-2021-07-2"
|
|
| 4 | + bootstrap: "-B boot-2021-07-1 -B boot-2021-07-2"
|
|
| 5 | 5 | |
| 6 | 6 | stages:
|
| 7 | 7 | - install
|
| 1 | +;; Bootstrap file
|
|
| 2 | +;;
|
|
| 3 | +;; Use "bin/build.sh -B boot-2021-07-1" to build this.
|
|
| 4 | +;;
|
|
| 5 | +;; We want to export the symbols from the KERNEL package which also
|
|
| 6 | +;; exists in the C package, so we unintern the conflicting symbols from
|
|
| 7 | +;; the C package.
|
|
| 8 | + |
|
| 9 | +(in-package "KERNEL")
|
|
| 10 | +(ext:without-package-locks
|
|
| 11 | + (handler-bind
|
|
| 12 | + ((error (lambda (c)
|
|
| 13 | + (declare (ignore c))
|
|
| 14 | + (invoke-restart 'lisp::unintern-conflicting-symbols))))
|
|
| 15 | + (export '(DOUBLE-FLOAT-INT-EXPONENT
|
|
| 16 | + SINGLE-FLOAT-INT-EXPONENT))))
|
|
| 17 | + |
| ... | ... | @@ -2329,10 +2329,11 @@ |
| 2329 | 2329 | "DOUBLE-FLOAT-EXPONENT"
|
| 2330 | 2330 | "DOUBLE-FLOAT-BITS"
|
| 2331 | 2331 | "DOUBLE-FLOAT-HIGH-BITS"
|
| 2332 | + "DOUBLE-FLOAT-INT-EXPONENT"
|
|
| 2332 | 2333 | "DOUBLE-FLOAT-LOW-BITS" "DOUBLE-FLOAT-P" "FLOAT-WAIT"
|
| 2333 | 2334 | "DYNAMIC-SPACE-FREE-POINTER" "ERROR-NUMBER-OR-LOSE" "FILENAME"
|
| 2334 | 2335 | "FLOAT-DIGITS" "FLOAT-EXPONENT" "FLOAT-FORMAT-DIGITS"
|
| 2335 | - "FLOAT-FORMAT-MAX" "FLOAT-RADIX" "FORM" "FUNCALLABLE-INSTANCE-P"
|
|
| 2336 | + "FLOAT-FORMAT-MAX" "FLOAT-INT-EXPONENT" "FLOAT-RADIX" "FORM" "FUNCALLABLE-INSTANCE-P"
|
|
| 2336 | 2337 | "FUNCTION-CODE-HEADER" "FUNCTION-TYPE" "FUNCTION-TYPE-ALLOWP"
|
| 2337 | 2338 | "FUNCTION-TYPE-KEYP" "FUNCTION-TYPE-KEYWORDS"
|
| 2338 | 2339 | "FUNCTION-TYPE-NARGS" "FUNCTION-TYPE-OPTIONAL" "FUNCTION-TYPE-P"
|
| ... | ... | @@ -2426,6 +2427,7 @@ |
| 2426 | 2427 | "SIMPLE-ARRAY-SIGNED-BYTE-16-P" "SIMPLE-ARRAY-SIGNED-BYTE-30-P"
|
| 2427 | 2428 | "SIMPLE-ARRAY-SIGNED-BYTE-32-P" "SIMPLE-ARRAY-SIGNED-BYTE-8-P"
|
| 2428 | 2429 | "SIMPLE-UNBOXED-ARRAY" "SINGLE-FLOAT-BITS" "SINGLE-FLOAT-EXPONENT"
|
| 2430 | + "SINGLE-FLOAT-INT-EXPONENT"
|
|
| 2429 | 2431 | "SINGLE-FLOAT-P" "SINGLE-VALUE-TYPE" "SPECIFIER-TYPE" "STACK-REF"
|
| 2430 | 2432 | "STD-COMPUTE-CLASS-PRECEDENCE-LIST"
|
| 2431 | 2433 | "STREAMLIKE" "SIMPLE-STREAM-BUFFER" "STRINGABLE" "STRINGLIKE"
|
| ... | ... | @@ -319,7 +319,7 @@ |
| 319 | 319 | (defknown (float-digits float-precision) (float) float-digits
|
| 320 | 320 | (movable foldable flushable explicit-check))
|
| 321 | 321 | (defknown integer-decode-float (float)
|
| 322 | - (values integer float-exponent (member -1 1))
|
|
| 322 | + (values integer float-int-exponent (member -1 1))
|
|
| 323 | 323 | (movable foldable flushable explicit-check))
|
| 324 | 324 | |
| 325 | 325 | (defknown complex (real &optional real) number
|
| ... | ... | @@ -50,6 +50,8 @@ |
| 50 | 50 | (deftype float-exponent ()
|
| 51 | 51 | #-long-float 'double-float-exponent
|
| 52 | 52 | #+long-float 'long-float-exponent)
|
| 53 | +(deftype float-int-exponent ()
|
|
| 54 | + 'double-float-int-exponent)
|
|
| 53 | 55 | (deftype float-digits ()
|
| 54 | 56 | #-long-float `(integer 0 ,vm:double-float-digits)
|
| 55 | 57 | #+long-float `(integer 0 ,vm:long-float-digits))
|
| ... | ... | @@ -829,3 +829,14 @@ |
| 829 | 829 | (*compile-print* nil))
|
| 830 | 830 | (assert-true (stream::find-external-format :euckr))
|
| 831 | 831 | (assert-true (stream::find-external-format :cp949))))
|
| 832 | + |
|
| 833 | + |
|
| 834 | + |
|
| 835 | +(define-test issue.166
|
|
| 836 | + (:tag :issues)
|
|
| 837 | + ;; While this tests for the correct return value, the problem was
|
|
| 838 | + ;; that the compiler was miscompiling the function below and causing
|
|
| 839 | + ;; an error when the function run.
|
|
| 840 | + (let ((f (compile nil #'(lambda ()
|
|
| 841 | + (nth-value 1 (integer-decode-float least-positive-double-float))))))
|
|
| 842 | + (assert-equal -1126 (funcall f)))) |