[Top][All Lists]
[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