Raymond Toy pushed to branch master at cmucl / cmucl
Commits:
-
e9a598e5
by Raymond Toy at 2018-02-19T08:41:07-08:00
-
ac4b9fc8
by Raymond Toy at 2018-02-19T16:50:47+00:00
3 changed files:
Changes:
| ... | ... | @@ -252,29 +252,32 @@ |
| 252 | 252 |
:ref-known (flushable foldable)
|
| 253 | 253 |
:set-trans (setf %array-fill-pointer)
|
| 254 | 254 |
:set-known (unsafe))
|
| 255 |
+ ;; Don't let these ref-trans to be constant-folded because these
|
|
| 256 |
+ ;; might get called on arrays that don't have these slots. (Because
|
|
| 257 |
+ ;; the lisp functions might be inlined.)
|
|
| 255 | 258 |
(fill-pointer-p :type (member t nil)
|
| 256 | 259 |
:ref-trans %array-fill-pointer-p
|
| 257 |
- :ref-known (flushable foldable)
|
|
| 260 |
+ :ref-known (flushable)
|
|
| 258 | 261 |
:set-trans (setf %array-fill-pointer-p)
|
| 259 | 262 |
:set-known (unsafe))
|
| 260 | 263 |
(elements :type index
|
| 261 | 264 |
:ref-trans %array-available-elements
|
| 262 |
- :ref-known (flushable foldable)
|
|
| 265 |
+ :ref-known (flushable)
|
|
| 263 | 266 |
:set-trans (setf %array-available-elements)
|
| 264 | 267 |
:set-known (unsafe))
|
| 265 | 268 |
(data :type array
|
| 266 | 269 |
:ref-trans %array-data-vector
|
| 267 |
- :ref-known (flushable foldable)
|
|
| 270 |
+ :ref-known (flushable)
|
|
| 268 | 271 |
:set-trans (setf %array-data-vector)
|
| 269 | 272 |
:set-known (unsafe))
|
| 270 | 273 |
(displacement :type (or index null)
|
| 271 | 274 |
:ref-trans %array-displacement
|
| 272 |
- :ref-known (flushable foldable)
|
|
| 275 |
+ :ref-known (flushable)
|
|
| 273 | 276 |
:set-trans (setf %array-displacement)
|
| 274 | 277 |
:set-known (unsafe))
|
| 275 | 278 |
(displaced-p :type (member t nil)
|
| 276 | 279 |
:ref-trans %array-displaced-p
|
| 277 |
- :ref-known (flushable foldable)
|
|
| 280 |
+ :ref-known (flushable)
|
|
| 278 | 281 |
:set-trans (setf %array-displaced-p)
|
| 279 | 282 |
:set-known (unsafe))
|
| 280 | 283 |
(dimensions :rest-p t))
|
| ... | ... | @@ -35,6 +35,8 @@ public domain. |
| 35 | 35 |
* ~~#59~~ Incorrect type-derivation for `decode-float`
|
| 36 | 36 |
* ~~#60~~ The function `C::%UNARY-FROUND` is undefined
|
| 37 | 37 |
* ~~#58~~ Bogus type error in comparison of complex number with `THE` form
|
| 38 |
+ * ~~#61~~ Segfault when compiling call to `ARRAY-HAS-FILL-POINTER-P` on bit vector constant
|
|
| 39 |
+ * ~~#62~~ Segfault when compiling `ARRAY-DISPLACEMENT` on a string constant
|
|
| 38 | 40 |
* Other changes:
|
| 39 | 41 |
* Improvements to the PCL implementation of CLOS:
|
| 40 | 42 |
* Changes to building procedure:
|
| ... | ... | @@ -521,3 +521,17 @@ |
| 521 | 521 |
(let ((c9 (compile nil #'(lambda (x)
|
| 522 | 522 |
(= (the (eql 1.0d0) x) #c(1/2 1/2))))))
|
| 523 | 523 |
(assert-false (funcall c9 1.d0))))
|
| 524 |
+ |
|
| 525 |
+(define-test issue.61
|
|
| 526 |
+ (:tag :issues)
|
|
| 527 |
+ ;; Verifies that the compiler doesn't segfault and that we return
|
|
| 528 |
+ ;; the correct value.
|
|
| 529 |
+ (assert-false
|
|
| 530 |
+ (funcall (compile nil '(lambda () (array-has-fill-pointer-p #*10))))))
|
|
| 531 |
+ |
|
| 532 |
+(define-test issue.62
|
|
| 533 |
+ (:tag :issues)
|
|
| 534 |
+ ;; Verifies that the compiler doesn't segfault and that we return
|
|
| 535 |
+ ;; the correct value.
|
|
| 536 |
+ (assert-false
|
|
| 537 |
+ (funcall (compile nil '(lambda () (array-displacement "aaaaaaaa"))))))
|