Raymond Toy pushed to branch issue-306-lisp.c at cmucl / cmucl
Commits:
- 
0319c582
by Carl Shapiro at 2024-04-28T12:05:17-07:00
 - 
f4e19102
by Carl Shapiro at 2024-07-22T17:59:28-07:00
 - 
1b169581
by Carl Shapiro at 2024-07-23T06:42:31+00:00
 - 
1b3171cd
by Carl Shapiro at 2024-07-25T07:12:17+00:00
 - 
8e31e57e
by Raymond Toy at 2024-07-25T13:15:44+00:00
 - 
4e53aac5
by Raymond Toy at 2024-07-25T13:15:50+00:00
 - 
b6a449dd
by Raymond Toy at 2024-07-25T13:16:27+00:00
 - 
5ad8c86e
by Raymond Toy at 2024-07-25T13:16:29+00:00
 - 
aabe67a0
by Raymond Toy at 2024-07-25T13:16:53+00:00
 - 
8a2dbcb3
by Raymond Toy at 2024-07-25T13:16:57+00:00
 - 
a5e42f73
by Raymond Toy at 2024-07-25T14:58:09+00:00
 - 
76b67529
by Raymond Toy at 2024-07-25T14:58:12+00:00
 - 
c4488c0c
by Raymond Toy at 2024-07-25T15:30:06-07:00
 
11 changed files:
- + .dir-locals.el
 - .gitlab-ci.yml
 - src/compiler/srctran.lisp
 - src/compiler/x86/call.lisp
 - src/lisp/vars.c
 - src/tools/cross-scripts/cross-x86-netbsd.lisp
 - src/tools/cross-scripts/cross-x86-osx-freebsd.lisp
 - src/tools/cross-scripts/cross-x86-osx-solaris.lisp
 - src/tools/cross-scripts/cross-x86-ppc-darwin.lisp
 - src/tools/cross-scripts/cross-x86-sparc.lisp
 - src/tools/cross-scripts/cross-x86-x86.lisp
 
Changes:
| 1 | +((nil
 | 
|
| 2 | +  (indent-tabs-mode . t)
 | 
|
| 3 | +  (require-final-newline . t)
 | 
|
| 4 | +  (tab-width . 8))
 | 
|
| 5 | + (c-mode
 | 
|
| 6 | +  (c-basic-offset . 4))) | 
| ... | ... | @@ -10,6 +10,7 @@ stages: | 
| 10 | 10 |    - test
 | 
| 11 | 11 |    - ansi-test
 | 
| 12 | 12 |    - benchmark
 | 
| 13 | +  - analyze
 | 
|
| 13 | 14 | |
| 14 | 15 |  cache:
 | 
| 15 | 16 | |
| ... | ... | @@ -36,7 +37,7 @@ linux:build: | 
| 36 | 37 |        - dist/
 | 
| 37 | 38 |        - linux-2/*.log
 | 
| 38 | 39 |        - linux-3/*.log
 | 
| 39 | -      - linux-4/*.log
 | 
|
| 40 | +      - linux-4/
 | 
|
| 40 | 41 |    needs:
 | 
| 41 | 42 |      - job: linux:install
 | 
| 42 | 43 |        artifacts: true
 | 
| ... | ... | @@ -45,8 +46,10 @@ linux:build: | 
| 45 | 46 |      #- bin/create-target.sh xtarget x86_linux_clang
 | 
| 46 | 47 |      #- bin/create-target.sh xcross x86_linux_clang
 | 
| 47 | 48 |      #- bin/cross-build-world.sh -crl -B boot-2020-04-1 xtarget xcross src/tools/cross-scripts/cross-x86-x86.lisp snapshot/bin/lisp
 | 
| 48 | -    # Regular build using the cross-compiled result or snapshot
 | 
|
| 49 | -    - bin/build.sh $bootstrap -R -C "x86_linux_clang" -o snapshot/bin/lisp
 | 
|
| 49 | +    # Regular build using the cross-compiled result or snapshot.  The
 | 
|
| 50 | +    # analyzer job requires gcc, so make sure we build with gcc here
 | 
|
| 51 | +    # instead of clang. 
 | 
|
| 52 | +    - bin/build.sh $bootstrap -R -C "x86_linux" -o snapshot/bin/lisp
 | 
|
| 50 | 53 |      # - bin/build.sh $bootstrap -R -C "x86_linux" -o snapshot/bin/lisp
 | 
| 51 | 54 |      # Use -V to specify the version in case some tag makes git
 | 
| 52 | 55 |      # describe return something that make-dist.sh doesn't like.
 | 
| ... | ... | @@ -62,6 +65,8 @@ linux:cross-build: | 
| 62 | 65 |        - linux-2/*.log
 | 
| 63 | 66 |        - linux-3/*.log
 | 
| 64 | 67 |        - linux-4/*.log
 | 
| 68 | +      # The lisp directory is needed for the static analyzer job.
 | 
|
| 69 | +      - linux-4/lisp
 | 
|
| 65 | 70 |    needs:
 | 
| 66 | 71 | |
| 67 | 72 |      # Normally need the linux:install stage to get the compiler to
 | 
| ... | ... | @@ -232,3 +237,24 @@ osx:benchmark: | 
| 232 | 237 |      - CMUCL=../../snapshot/bin/lisp ./run-cmucl.sh
 | 
| 233 | 238 |      - CMUCL=../../dist/bin/lisp ./run-cmucl.sh
 | 
| 234 | 239 |      - ../../snapshot/bin/lisp -load report
 | 
| 240 | +  | 
|
| 241 | +# Optional job that runs the static analyzer.  It needs the files from
 | 
|
| 242 | +# the linux-4 directory built in the linux:build job.
 | 
|
| 243 | +linux:static-analyzer:
 | 
|
| 244 | +  stage: analyze
 | 
|
| 245 | +  when: manual
 | 
|
| 246 | +  tags:
 | 
|
| 247 | +    - linux
 | 
|
| 248 | +  artifacts:
 | 
|
| 249 | +    paths:
 | 
|
| 250 | +      - analyzer.log
 | 
|
| 251 | +  needs:
 | 
|
| 252 | +    - job: linux:build
 | 
|
| 253 | +      artifacts: true
 | 
|
| 254 | +  script:
 | 
|
| 255 | +    # Analysis can generate huge amounts of output.  For now just save
 | 
|
| 256 | +    # the results to the log file instead of also having it go to the
 | 
|
| 257 | +    # console.  If someday there's less or no output, we can consider
 | 
|
| 258 | +    # having the logs go to the console too.
 | 
|
| 259 | +    - make -C linux-4/lisp clean
 | 
|
| 260 | +    - make -C linux-4/lisp CFLAGS=-fanalyzer > analyzer.log 2>&1  | 
| ... | ... | @@ -3313,8 +3313,8 @@ | 
| 3313 | 3313 |    #+(and unicode (not unicode-bootstrap))
 | 
| 3314 | 3314 |    '(let* ((ac (char-code a))
 | 
| 3315 | 3315 |  	  (bc (char-code b)))
 | 
| 3316 | -     (if (and (<= ac #x7f)
 | 
|
| 3317 | -	      (<= bc #x7f))
 | 
|
| 3316 | +     (if (and (<= ac +ascii-limit+)
 | 
|
| 3317 | +	      (<= bc +ascii-limit+))
 | 
|
| 3318 | 3318 |  	 ;; ASCII
 | 
| 3319 | 3319 |  	 (let ((sum (logxor ac bc)))
 | 
| 3320 | 3320 |  	   (or (zerop sum)
 | 
| ... | ... | @@ -49,7 +49,9 @@ | 
| 49 | 49 |  ;;; No problems.
 | 
| 50 | 50 |  ;#+nil
 | 
| 51 | 51 |  (def-vm-support-routine make-return-pc-passing-location (standard)
 | 
| 52 | -  (declare (ignore standard))
 | 
|
| 52 | +  ;; Should be IGNORE, not IGNORABLE; We're just silencing a compiler
 | 
|
| 53 | +  ;; note.
 | 
|
| 54 | +  (declare (ignorable standard))
 | 
|
| 53 | 55 |    (make-wired-tn (primitive-type-or-lose 'system-area-pointer *backend*)
 | 
| 54 | 56 |  		 sap-stack-sc-number return-pc-save-offset))
 | 
| 55 | 57 |  ;;;
 | 
| ... | ... | @@ -77,7 +79,9 @@ | 
| 77 | 79 |  ;;; No problems
 | 
| 78 | 80 |  ;#+nil
 | 
| 79 | 81 |  (def-vm-support-routine make-old-fp-passing-location (standard)
 | 
| 80 | -  (declare (ignore standard))
 | 
|
| 82 | +  ;; Should be IGNORE, not IGNORABLE; We're just silencing a compiler
 | 
|
| 83 | +  ;; note.
 | 
|
| 84 | +  (declare (ignorable standard))
 | 
|
| 81 | 85 |    (make-wired-tn *fixnum-primitive-type* control-stack-sc-number
 | 
| 82 | 86 |  		 ocfp-save-offset))
 | 
| 83 | 87 |  ;;;
 | 
| ... | ... | @@ -128,6 +128,10 @@ make_var(char *name, boolean perm) | 
| 128 | 128 |  	name = buffer;
 | 
| 129 | 129 |      }
 | 
| 130 | 130 |      var->name = (char *) malloc(strlen(name) + 1);
 | 
| 131 | +    if (var->name == NULL) {
 | 
|
| 132 | +	perror("malloc");
 | 
|
| 133 | +	exit(1);
 | 
|
| 134 | +    }
 | 
|
| 131 | 135 |      strcpy(var->name, name);
 | 
| 132 | 136 |      var->clock = 0;
 | 
| 133 | 137 |      var->permanent = perm;
 | 
| ... | ... | @@ -22,7 +22,7 @@ | 
| 22 | 22 |       :conservative-float-type
 | 
| 23 | 23 |       :hash-new
 | 
| 24 | 24 |       :random-mt19937
 | 
| 25 | -     :cmu :cmu20 :cmu20a		; Version features
 | 
|
| 25 | +     :cmu :cmu21 :cmu21e		; Version features
 | 
|
| 26 | 26 |       :double-double			; double-double float support
 | 
| 27 | 27 |       )
 | 
| 28 | 28 |     ;; Features to remove from current *features* here.  Normally don't
 | 
| ... | ... | @@ -26,7 +26,7 @@ | 
| 26 | 26 |       :complex-fp-vops
 | 
| 27 | 27 |       :hash-new
 | 
| 28 | 28 |       :random-mt19937
 | 
| 29 | -     :cmu :cmu20 :cmu20b		; Version features
 | 
|
| 29 | +     :cmu :cmu21 :cmu21e		; Version features
 | 
|
| 30 | 30 |       :double-double			; double-double float support
 | 
| 31 | 31 |       :linkage-table
 | 
| 32 | 32 | 
| ... | ... | @@ -26,7 +26,7 @@ | 
| 26 | 26 |       :complex-fp-vops
 | 
| 27 | 27 |       :hash-new
 | 
| 28 | 28 |       :random-mt19937
 | 
| 29 | -     :cmu :cmu20 :cmu20b		; Version features
 | 
|
| 29 | +     :cmu :cmu21 :cmu21e		; Version features
 | 
|
| 30 | 30 |       :double-double			; double-double float support
 | 
| 31 | 31 |       :linkage-table
 | 
| 32 | 32 | 
| ... | ... | @@ -17,7 +17,7 @@ | 
| 17 | 17 |       :darwin				; Darwin OS (Mac OS X)
 | 
| 18 | 18 |       :bsd				; We're a BSD-type OS
 | 
| 19 | 19 |       :cmu				; Announce this is CMUCL
 | 
| 20 | -     :cmu20 :cmu20a			; (Mostly) current version identifier
 | 
|
| 20 | +     :cmu21 :cmu21e			; (Mostly) current version identifier
 | 
|
| 21 | 21 |       :gencgc				; Generational GC is supported on ppc.
 | 
| 22 | 22 |       :relative-package-names
 | 
| 23 | 23 |       :modular-arith			; Modular arithmetic
 | 
| ... | ... | @@ -23,7 +23,7 @@ | 
| 23 | 23 |       :hash-new
 | 
| 24 | 24 |       :random-mt19937			; MT-19937 generator
 | 
| 25 | 25 |       :cmu				; Announce this is CMUCL
 | 
| 26 | -     :cmu20 :cmu20b			; Current version identifier
 | 
|
| 26 | +     :cmu21 :cmu21e			; Current version identifier
 | 
|
| 27 | 27 |       :modular-arith			; Modular arithmetic
 | 
| 28 | 28 |       :double-double			; Double-double float support
 | 
| 29 | 29 |       :executable
 | 
| ... | ... | @@ -21,7 +21,7 @@ | 
| 21 | 21 |       :conservative-float-type
 | 
| 22 | 22 |       :hash-new
 | 
| 23 | 23 |       :random-xoroshiro			; RNG
 | 
| 24 | -     :cmu :cmu20 :cmu20a		; Version features
 | 
|
| 24 | +     :cmu :cmu21 :cmu21e		; Version features
 | 
|
| 25 | 25 |       :double-double			; double-double float support
 | 
| 26 | 26 |       )
 | 
| 27 | 27 |     ;; Features to remove from current *features* here.  Normally don't
 |