From unknown Sat Aug 16 21:21:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#9769: Misplaced tail call optimization Resent-From: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-guile@gnu.org Resent-Date: Sun, 16 Oct 2011 20:30:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 9769 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 9769@debbugs.gnu.org X-Debbugs-Original-To: bug-guile@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.131879700125320 (code B ref -1); Sun, 16 Oct 2011 20:30:02 +0000 Received: (at submit) by debbugs.gnu.org; 16 Oct 2011 20:30:01 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RFXLM-0006aL-MN for submit@debbugs.gnu.org; Sun, 16 Oct 2011 16:30:01 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RFXLK-0006a8-Iz for submit@debbugs.gnu.org; Sun, 16 Oct 2011 16:29:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RFXKT-0007j9-44 for submit@debbugs.gnu.org; Sun, 16 Oct 2011 16:29:06 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=5.0 tests=BAYES_00,HS_INDEX_PARAM, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:41423) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFXKT-0007j5-2d for submit@debbugs.gnu.org; Sun, 16 Oct 2011 16:29:05 -0400 Received: from eggs.gnu.org ([140.186.70.92]:51639) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFXKS-0006Bw-1u for bug-guile@gnu.org; Sun, 16 Oct 2011 16:29:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RFXKR-0007io-3M for bug-guile@gnu.org; Sun, 16 Oct 2011 16:29:04 -0400 Received: from mail4-relais-sop.national.inria.fr ([192.134.164.105]:53444) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFXKQ-0007ii-Uo for bug-guile@gnu.org; Sun, 16 Oct 2011 16:29:03 -0400 X-IronPort-AV: E=Sophos;i="4.69,354,1315173600"; d="scan'208";a="113104914" Received: from reverse-83.fdn.fr (HELO pluto) ([80.67.176.83]) by mail4-relais-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES128-SHA; 16 Oct 2011 22:29:01 +0200 From: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 25 =?UTF-8?Q?Vend=C3=A9miaire?= an 220 de la =?UTF-8?Q?R=C3=A9volution?= X-PGP-Key-ID: 0xEA52ECF4 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 83C4 F8E5 10A3 3B4C 5BEA D15D 77DD 95E2 EA52 ECF4 X-OS: x86_64-unknown-linux-gnu Date: Sun, 16 Oct 2011 22:29:00 +0200 Message-ID: <87sjmsistv.fsf@gnu.org> User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -6.6 (------) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) (This is a copy of , so it doesn't get lost. :-)) Consider this example: (define bar (lambda () (let ((fail (lambda () 'fail))) (let loop ((a (iota 3))) (if (pair? a) (loop (cdr a)) (fail))) (pk 'done)))) This function should return 'done but it instead returns 'fail, because both the call to `loop' and the call to `fail' are compiled as if they were tail calls. To reproduce the test, turn partial evaluation off---otherwise the call to `fail' is inlined and the problem doesn't show up. Ludo'. From unknown Sat Aug 16 21:21:23 2025 X-Loop: help-debbugs@gnu.org Subject: bug#9769: Misplaced tail call optimization Resent-From: Andy Wingo Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-guile@gnu.org Resent-Date: Mon, 17 Oct 2011 08:35:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 9769 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) Cc: 9769@debbugs.gnu.org Received: via spool by 9769-submit@debbugs.gnu.org id=B9769.131884045027999 (code B ref 9769); Mon, 17 Oct 2011 08:35:02 +0000 Received: (at 9769) by debbugs.gnu.org; 17 Oct 2011 08:34:10 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RFie9-0007HY-Ue for submit@debbugs.gnu.org; Mon, 17 Oct 2011 04:34:10 -0400 Received: from a-pb-sasl-sd.pobox.com ([74.115.168.62] helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RFie7-0007HR-Pn for 9769@debbugs.gnu.org; Mon, 17 Oct 2011 04:34:09 -0400 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTP id 282B371EB; Mon, 17 Oct 2011 04:33:17 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=zmuTFIZ1Fbbxe1SKAYdSOEe9ImQ=; b=HngMjy vFi+CXtjXiwUBPp68N4/f9bpGIwPEKBgjJI6+in1Syou5O42pQwYwNbK0336RgM5 cLp4Y+nHkAexX8PT5YGve75UQQK9w+B//vW1edxxZ64NQDz2E69Eo6+Q/guj3hrX 228S9Nk0ARoLFb0scNZN5D+6NGhb7WzEte8XE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=sasl; b=tFGf+2fpxb2DHLIQU7bg8aE2ddW8oHbj 5L7dO79kE2C2BN3geol307w8jOeHA6/1FTjcUTcXzD/QEfVfgcE6sMck9FH54trG L9N1i1Kjwp8XB2DvoUmlXXS2w4rLMRsaTZozEWxqxhWq6mE62vZb8ajnggR6BKHG YZQT3cNiO0k= Received: from a-pb-sasl-sd.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTP id 2093871EA; Mon, 17 Oct 2011 04:33:17 -0400 (EDT) Received: from badger (unknown [90.164.198.39]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTPSA id 9542D71E6; Mon, 17 Oct 2011 04:33:16 -0400 (EDT) From: Andy Wingo References: <87sjmsistv.fsf@gnu.org> Date: Mon, 17 Oct 2011 10:33:12 +0200 In-Reply-To: <87sjmsistv.fsf@gnu.org> ("Ludovic =?UTF-8?Q?Court=C3=A8s?="'s message of "Sun, 16 Oct 2011 22:29:00 +0200") Message-ID: <87pqhw9fw7.fsf@pobox.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Pobox-Relay-ID: A9253EE6-F89A-11E0-BFED-65B1DE995924-02397024!a-pb-sasl-sd.pobox.com X-Spam-Score: -2.9 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.9 (--) The title of this bug isn't quite right. It's not that Guile is intentionally treating the call to fail as a tail call; it's some bug in the way that "labels allocated" procedures in compile-glil.scm are called. Andy -- http://wingolog.org/ From unknown Sat Aug 16 21:21:23 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.427 (Entity 5.427) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: ludo@gnu.org (Ludovic =?UTF-8?Q?Court=C3=A8s?=) Subject: bug#9769: closed (Re: bug#9769: Misplaced tail call optimization) Message-ID: References: <87aa8v72nb.fsf@pobox.com> <87sjmsistv.fsf@gnu.org> X-Gnu-PR-Message: they-closed 9769 X-Gnu-PR-Package: guile Reply-To: 9769@debbugs.gnu.org Date: Thu, 20 Oct 2011 21:53:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1319147582-30180-1" This is a multi-part message in MIME format... ------------=_1319147582-30180-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #9769: Misplaced tail call optimization which was filed against the guile package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 9769@debbugs.gnu.org. --=20 9769: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D9769 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1319147582-30180-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 9769-done) by debbugs.gnu.org; 20 Oct 2011 21:52:38 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RH0XV-0007qB-I1 for submit@debbugs.gnu.org; Thu, 20 Oct 2011 17:52:38 -0400 Received: from a-pb-sasl-sd.pobox.com ([74.115.168.62] helo=sasl.smtp.pobox.com) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RH0XU-0007q5-4l for 9769-done@debbugs.gnu.org; Thu, 20 Oct 2011 17:52:37 -0400 Received: from sasl.smtp.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTP id 2182E7947; Thu, 20 Oct 2011 17:51:25 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; s=sasl; bh=10SlDB82i1mPLu5if8nUf2VmCWs=; b=cTP62U qIoUBrI64hTDFj0pUjuKTqp32KhgntMO2Zkpu5Bo0eI4AanzMJkqHZEmmDLM1iEN EwMciLDwN1Wb9TB3L0iZnl5IR1qms1umGMLIyrveZpPOxnAhfIHAxU5FO3Myim6k 6D8S5sWJw7sMr6Fn7PnYwzd9IT97HL8QDjLOc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=pobox.com; h=from:to:cc :subject:references:date:in-reply-to:message-id:mime-version :content-type; q=dns; s=sasl; b=Jfo6lf7+uRl2ou1kqh9L6unNfyknteHW k+nqONu2t/JsNqDc3VlH8IOUICa0RK+SZ5Zgqw4Gsh3/cxJaOWirmTNrXFj9+K3/ FNtEbxR2KiiZpzze+23/xRdANA8qZqQBaX4fMeGZHg/qC8y1Q9cCALAavWQs9FDF EFqkkgnswcg= Received: from a-pb-sasl-sd.pobox.com (unknown [127.0.0.1]) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTP id 19BFF7945; Thu, 20 Oct 2011 17:51:25 -0400 (EDT) Received: from badger (unknown [90.164.198.39]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by a-pb-sasl-sd.pobox.com (Postfix) with ESMTPSA id 831B17941; Thu, 20 Oct 2011 17:51:24 -0400 (EDT) From: Andy Wingo To: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: bug#9769: Misplaced tail call optimization References: <87sjmsistv.fsf@gnu.org> Date: Thu, 20 Oct 2011 23:51:20 +0200 In-Reply-To: <87sjmsistv.fsf@gnu.org> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?= =?utf-8?Q?s?= message of "Sun, 16 Oct 2011 22:29:00 +0200") Message-ID: <87aa8v72nb.fsf@pobox.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/23.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Pobox-Relay-ID: A7CFDFA6-FB65-11E0-A0FD-65B1DE995924-02397024!a-pb-sasl-sd.pobox.com X-Spam-Score: -2.8 (--) X-Debbugs-Envelope-To: 9769-done Cc: 9769-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.8 (--) Fixed in git. Thanks for the report! commit aa9c19858872a135ea959066fff26f86527a1bd0 Author: Andy Wingo Date: Thu Oct 20 23:50:05 2011 +0200 fix misallocation of some procedures * module/language/tree-il/analyze.scm (analyze-lexicals): When stepping into a non-tail form, we know that labels allocation will be invalid, so use an empty labels set. Fixes http://debbugs.gnu.org/9769. * test-suite/tests/tree-il.test ("labels allocation"): Add a test. -- http://wingolog.org/ ------------=_1319147582-30180-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 16 Oct 2011 20:30:01 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RFXLM-0006aL-MN for submit@debbugs.gnu.org; Sun, 16 Oct 2011 16:30:01 -0400 Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1RFXLK-0006a8-Iz for submit@debbugs.gnu.org; Sun, 16 Oct 2011 16:29:59 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RFXKT-0007j9-44 for submit@debbugs.gnu.org; Sun, 16 Oct 2011 16:29:06 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-6.3 required=5.0 tests=BAYES_00,HS_INDEX_PARAM, RCVD_IN_DNSWL_HI autolearn=unavailable version=3.3.1 Received: from lists.gnu.org ([140.186.70.17]:41423) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFXKT-0007j5-2d for submit@debbugs.gnu.org; Sun, 16 Oct 2011 16:29:05 -0400 Received: from eggs.gnu.org ([140.186.70.92]:51639) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFXKS-0006Bw-1u for bug-guile@gnu.org; Sun, 16 Oct 2011 16:29:04 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RFXKR-0007io-3M for bug-guile@gnu.org; Sun, 16 Oct 2011 16:29:04 -0400 Received: from mail4-relais-sop.national.inria.fr ([192.134.164.105]:53444) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RFXKQ-0007ii-Uo for bug-guile@gnu.org; Sun, 16 Oct 2011 16:29:03 -0400 X-IronPort-AV: E=Sophos;i="4.69,354,1315173600"; d="scan'208";a="113104914" Received: from reverse-83.fdn.fr (HELO pluto) ([80.67.176.83]) by mail4-relais-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES128-SHA; 16 Oct 2011 22:29:01 +0200 From: ludo@gnu.org (Ludovic =?iso-8859-1?Q?Court=E8s?=) To: bug-guile@gnu.org Subject: Misplaced tail call optimization X-URL: http://www.fdn.fr/~lcourtes/ X-Revolutionary-Date: 25 =?iso-8859-1?Q?Vend=E9miaire?= an 220 de la =?iso-8859-1?Q?R=E9volution?= X-PGP-Key-ID: 0xEA52ECF4 X-PGP-Key: http://www.fdn.fr/~lcourtes/ludovic.asc X-PGP-Fingerprint: 83C4 F8E5 10A3 3B4C 5BEA D15D 77DD 95E2 EA52 ECF4 X-OS: x86_64-unknown-linux-gnu Date: Sun, 16 Oct 2011 22:29:00 +0200 Message-ID: <87sjmsistv.fsf@gnu.org> User-Agent: Gnus/5.110018 (No Gnus v0.18) Emacs/24.0.90 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.17 X-Spam-Score: -6.6 (------) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -6.6 (------) (This is a copy of , so it doesn't get lost. :-)) Consider this example: (define bar (lambda () (let ((fail (lambda () 'fail))) (let loop ((a (iota 3))) (if (pair? a) (loop (cdr a)) (fail))) (pk 'done)))) This function should return 'done but it instead returns 'fail, because both the call to `loop' and the call to `fail' are compiled as if they were tail calls. To reproduce the test, turn partial evaluation off---otherwise the call to `fail' is inlined and the problem doesn't show up. Ludo'. ------------=_1319147582-30180-1--