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 <[EMAIL PROTECTED]> 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: [EMAIL PROTECTED], [email protected] > From: Camm Maguire <[EMAIL PROTECTED]> > 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 <[EMAIL PROTECTED]> 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 [EMAIL > PROTECTED] > ========================================================================== > "The earth is but one country, and mankind its citizens." -- Baha'u'llah > > > -- Camm Maguire [EMAIL PROTECTED] ========================================================================== "The earth is but one country, and mankind its citizens." -- Baha'u'llah _______________________________________________ Gcl-devel mailing list [email protected] http://lists.gnu.org/mailman/listinfo/gcl-devel
