That's great, thanks a lot Manuel.
Sent: Monday, August 29, 2016 at 6:55 AM
From: [email protected]
To: "bob eob" <[email protected]>
Cc: [email protected]
Subject: Re: [bigloo] -O3 and type inference
From: [email protected]
To: "bob eob" <[email protected]>
Cc: [email protected]
Subject: Re: [bigloo] -O3 and type inference
Hi Bob,
> Hello,
>
> I wrote this program
>
> (module test)
>
> (define (new-vector s)
> (if (number? s) (make-vector s) (print "new-vector expects an integer size, but got keyword " s)))
>
> (new-vector 5)
> (new-vector :BAD)
>
> It compiles and works fine with -O2, but with -O3 I get this error when compiling (bigloo 4.2b):
>
>
>
> File "test.scm", line 7, character 171:
> #(new-vector :BAD)
> # ^
> *** ERROR:toplevel-init
> Type error -- "int" expected, "keyword" provided
>
>
>
> It seems to be enforcing the parameter type of make-vector on new-vector, as though (number? s) was always true.
>
>
>
> I'd like to use -Obench. Is there a way to avoid this error and/or a different way of writing this code that still allows the particular optimization -O3 is performing here?
Using the 4.3a, you get the following:
File "foo.scm", line 6, character 166:
#(new-vector :BAD)
# ^
*** WARNING:bigloo:toplevel-init
Type error -- "int" expected, "keyword" provided
and when running the program:
new-vector expects an integer size, but got keyword :BAD
This looks like the expected behavior.
--
Manuel
> Hello,
>
> I wrote this program
>
> (module test)
>
> (define (new-vector s)
> (if (number? s) (make-vector s) (print "new-vector expects an integer size, but got keyword " s)))
>
> (new-vector 5)
> (new-vector :BAD)
>
> It compiles and works fine with -O2, but with -O3 I get this error when compiling (bigloo 4.2b):
>
>
>
> File "test.scm", line 7, character 171:
> #(new-vector :BAD)
> # ^
> *** ERROR:toplevel-init
> Type error -- "int" expected, "keyword" provided
>
>
>
> It seems to be enforcing the parameter type of make-vector on new-vector, as though (number? s) was always true.
>
>
>
> I'd like to use -Obench. Is there a way to avoid this error and/or a different way of writing this code that still allows the particular optimization -O3 is performing here?
Using the 4.3a, you get the following:
File "foo.scm", line 6, character 166:
#(new-vector :BAD)
# ^
*** WARNING:bigloo:toplevel-init
Type error -- "int" expected, "keyword" provided
and when running the program:
new-vector expects an integer size, but got keyword :BAD
This looks like the expected behavior.
--
Manuel
