~ chicken-core (chicken-5) 281ff322593fae365a67ece55d819c60a478f423
commit 281ff322593fae365a67ece55d819c60a478f423
Author: felix <bunny351@gmail.com>
AuthorDate: Mon May 3 09:46:14 2010 +0200
Commit: felix <bunny351@gmail.com>
CommitDate: Mon May 3 09:46:14 2010 +0200
added -O0
diff --git a/chicken.scm b/chicken.scm
index 217256d3..2daa54f2 100644
--- a/chicken.scm
+++ b/chicken.scm
@@ -53,12 +53,12 @@
; - convert options into symbols (without the initial hyphens)
(define (process-command-line args)
- (let loop ([args args] [options '()] [filename #f])
+ (let loop ((args args) (options '()) (filename #f))
(if (null? args)
(values filename (reverse options))
- (let* ([arg (car args)]
- [len (string-length arg)]
- [char0 (string-ref arg 0)] )
+ (let* ((arg (car args))
+ (len (string-length arg))
+ (char0 (string-ref arg 0)) )
(if (and (char=? #\- char0) (> len 1))
(if (and (> len 1) (char=? #\: (string-ref arg 1)))
(loop (cdr args) options filename)
@@ -71,51 +71,53 @@
;;; Run compiler with command-line options:
(receive (filename options) ((or (user-options-pass) process-command-line) compiler-arguments)
- (let loop ([os options])
+ (let loop ((os options))
(unless (null? os)
- (let ([o (car os)]
- [rest (cdr os)] )
- (cond [(eq? 'optimize-level o)
- (let ([level (string->number (car rest))])
+ (let ((o (car os))
+ (rest (cdr os)) )
+ (cond ((eq? 'optimize-level o)
+ (let ((level (string->number (car rest))))
(case level
- [(0) #f]
- [(1)
- (set! options (cons 'optimize-leaf-routines options)) ]
- [(2)
+ ((0)
+ (set! options
+ (cons* 'no-compiler-syntax 'no-usual-integrations options)) )
+ ((1)
+ (set! options (cons 'optimize-leaf-routines options)) )
+ ((2)
(set! options
- (cons* 'optimize-leaf-routines 'inline options)) ]
- [(3)
+ (cons* 'optimize-leaf-routines 'inline options)) )
+ ((3)
(set! options
- (cons* 'optimize-leaf-routines 'inline 'local options) ) ]
- [(4)
+ (cons* 'optimize-leaf-routines 'inline 'local options) ) )
+ ((4)
(set! options
(cons* 'optimize-leaf-routines 'inline 'local 'unboxing 'unsafe
- options) ) ]
- [else
+ options) ) )
+ (else
(when (>= level 5)
(set! options
(cons* 'disable-interrupts 'no-trace 'unsafe 'block
'optimize-leaf-routines 'lambda-lift 'no-lambda-info
'inline 'unboxing
- options) ) ) ] )
- (loop (cdr rest)) ) ]
- [(eq? 'debug-level o)
- (let ([level (string->number (car rest))])
+ options) ) ) ) )
+ (loop (cdr rest)) ) )
+ ((eq? 'debug-level o)
+ (let ((level (string->number (car rest))))
(case level
- [(0) (set! options (cons* 'no-lambda-info 'no-trace options))]
- [(1) (set! options (cons 'no-trace options))]
- [(2) #f]
- [else (compiler-warning 'usage "invalid debug level ~S - ignored" (car rest))] )
- (loop (cdr rest)) ) ]
- [(memq o valid-compiler-options) (loop rest)]
- [(memq o valid-compiler-options-with-argument)
+ ((0) (set! options (cons* 'no-lambda-info 'no-trace options)))
+ ((1) (set! options (cons 'no-trace options)))
+ ((2) #f)
+ (else (compiler-warning 'usage "invalid debug level ~S - ignored" (car rest))) )
+ (loop (cdr rest)) ) )
+ ((memq o valid-compiler-options) (loop rest))
+ ((memq o valid-compiler-options-with-argument)
(if (pair? rest)
(loop (cdr rest))
- (quit "missing argument to `-~s' option" o) ) ]
- [else
+ (quit "missing argument to `-~s' option" o) ) )
+ (else
(compiler-warning
'usage "invalid compiler option `~a' - ignored"
(if (string? o) o (conc "-" o)) )
- (loop rest) ] ) ) ) )
+ (loop rest) ) ) ) ) )
(apply compile-source-file filename options)
(exit) )
diff --git a/csc.scm b/csc.scm
index f5808bdc..631fd475 100644
--- a/csc.scm
+++ b/csc.scm
@@ -350,7 +350,7 @@ Usage: #{csc} FILENAME | OPTION ...
Optimization options:
- -O -O1 -O2 -O3 -O4 -O5 -optimize-level NUMBER
+ -O -O0 -O1 -O2 -O3 -O4 -O5 -optimize-level NUMBER
enable certain sets of optimization options
-optimize-leaf-routines enable leaf routine optimization
-N -no-usual-integrations standard procedures may be redefined
@@ -657,6 +657,7 @@ EOF
(set! rest (cdr rest))
(set! target-filename fn) ) ]
[(|-O| |-O1|) (set! rest (cons* "-optimize-level" "1" rest))]
+ [(|-O0|) (set! rest (cons* "-optimize-level" "0" rest))]
[(|-O2|) (set! rest (cons* "-optimize-level" "2" rest))]
[(|-O3|) (set! rest (cons* "-optimize-level" "3" rest))]
[(|-O4|) (set! rest (cons* "-optimize-level" "4" rest))]
diff --git a/manual/Using the compiler b/manual/Using the compiler
index 7fac33a5..f7a4655a 100644
--- a/manual/Using the compiler
+++ b/manual/Using the compiler
@@ -163,7 +163,7 @@ Possible options are:
; -optimize-level LEVEL : Enables certain sets of optimization options. {{LEVEL}} should be an integer.
- -optimize-level 0 does nothing.
+ -optimize-level 0 is equivalent to -no-usual-integrations -no-compiler-syntax
-optimize-level 1 is equivalent to -optimize-leaf-routines
-optimize-level 2 is equivalent to -optimize-leaf-routines -inline
-optimize-level 3 is equivalent to -optimize-leaf-routines -local -inline
Trap