Raymond Toy pushed to branch issue-306-lisp.c at cmucl / cmucl

Commits:

11 changed files:

Changes:

  • .dir-locals.el
    1
    +((nil
    
    2
    +  (indent-tabs-mode . t)
    
    3
    +  (require-final-newline . t)
    
    4
    +  (tab-width . 8))
    
    5
    + (c-mode
    
    6
    +  (c-basic-offset . 4)))

  • .gitlab-ci.yml
    ... ... @@ -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 

  • src/compiler/srctran.lisp
    ... ... @@ -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)
    

  • src/compiler/x86/call.lisp
    ... ... @@ -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
     ;;;
    

  • src/lisp/vars.c
    ... ... @@ -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;
    

  • src/tools/cross-scripts/cross-x86-netbsd.lisp
    ... ... @@ -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
    

  • src/tools/cross-scripts/cross-x86-osx-freebsd.lisp
    ... ... @@ -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
     
    

  • src/tools/cross-scripts/cross-x86-osx-solaris.lisp
    ... ... @@ -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
     
    

  • src/tools/cross-scripts/cross-x86-ppc-darwin.lisp
    ... ... @@ -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
    

  • src/tools/cross-scripts/cross-x86-sparc.lisp
    ... ... @@ -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
    

  • src/tools/cross-scripts/cross-x86-x86.lisp
    ... ... @@ -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