gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gcl-devel] Re: GCL 2.7.0 compiler bug


From: Camm Maguire
Subject: [Gcl-devel] Re: GCL 2.7.0 compiler bug
Date: 14 Apr 2006 12:56:28 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings, and thanks!

OK, should be done now, (hopefully).

Just for the sake of storing information on the gcl-devel mailing
list, the current algorithm for type propagation in the presence of
setq basically detects a conflict when a tag is active and a setq is
attempted with the resulting type not completely contained in the
initial variable type.  In principle, this conflict should only occur
if a 'go or 'throw is found to the relevant tag further on along the
form -- this is for the future (perhaps), now we take the conservative
approach assuming such a form will always exist.

tagbody and catch need to be centralized.

Take care,

Matt Kaufmann <address@hidden> writes:

> Howdy --
> 
> Thanks; that's fixed.  Unfortunately, if we remove the throw then we still 
> have
> a compiler problem, as shown below.  (This is distilled from investigation of
> an ACL2 build failure encountered yesterday by Bob Boyer.)
> 
> >(defun test ()
>    (let ((flg t))
>      (catch 'my-tag
>        (setq flg nil))
>      (if flg t nil)))
> 
> TEST
> 
> >(test)
> 
> NIL
> 
> >(compile 'test)
> 
> ;; Compiling /tmp/gazonk_15243_0.lsp.
> ;; End of Pass 1.  
> ;; End of Pass 2.  
> ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, 
> (Debug quality ignored)
> ;; Finished compiling /tmp/gazonk_15243_0.o.
> Loading /tmp/gazonk_15243_0.o
> start address -T 0xab45418 Finished loading /tmp/gazonk_15243_0.o
> #<compiled-function TEST>
> NIL
> NIL
> 
> >(test)
> 
> T
> 
> >
> 
> -- Matt
>    Cc: address@hidden, address@hidden
>    From: Camm Maguire <address@hidden>
>    Date: 13 Apr 2006 19:39:26 -0400
>    X-SpamAssassin-Status: No, hits=-2.5 required=5.0
>    X-UTCS-Spam-Status: No, hits=-230 required=200
> 
>    Greetings, and thanks!  Should be fixed now.
> 
>    Take care,
> 
>    Matt Kaufmann <address@hidden> writes:
> 
>    > Hi, Camm --
>    > 
>    > Below is an example that shows a compiler bug in GCL 2.7.0.  (I 
> confirmed this
>    > using both /p/bin/xgn and /p/bin/xg here at UT CS, which I believe you 
> can
>    > access.)  If you replace the expression (if flg t nil) by just flg, the 
> bug
>    > goes away.
>    > 
>    > (defun test ()
>    >   (let ((flg t))
>    >     (catch 'my-tag
>    >       (progn (throw 'my-tag nil)
>    >              (setq flg nil)))
>    >     (if flg t nil)))
>    > 
>    > (test) ; returns t, as expected
>    > 
>    > (compile 'test)
>    > 
>    > (test) ; returns nil, NOT as expected
>    > 
>    > Thanks --
>    > -- Matt
>    > 
>    > 
>    > 
> 
>    -- 
>    Camm Maguire                                               address@hidden
>    ==========================================================================
>    "The earth is but one country, and mankind its citizens."  --  Baha'u'llah
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]