~ 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