From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: ** X-Spam-Status: No, score=2.8 required=5.0 tests=AWL,DNS_FROM_RFC_POST, SPF_NEUTRAL autolearn=disabled version=3.1.3 X-Original-To: caml-list@yquem.inria.fr Delivered-To: caml-list@yquem.inria.fr Received: from mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by yquem.inria.fr (Postfix) with ESMTP id F3F4BBBC4 for ; Sat, 21 Mar 2009 21:49:37 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvABACPvxEnRVdq0kGdsb2JhbACVLz8BAQEBCQkMBxEDriuBB45BAQMBA4N7BoNN X-IronPort-AV: E=Sophos;i="4.38,400,1233529200"; d="scan'208";a="22996856" Received: from mail-bw0-f180.google.com ([209.85.218.180]) by mail2-smtp-roc.national.inria.fr with ESMTP; 21 Mar 2009 21:49:37 +0100 Received: by bwz28 with SMTP id 28so1493597bwz.27 for ; Sat, 21 Mar 2009 13:49:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:cc:message-id:from:to :in-reply-to:content-type:content-transfer-encoding:mime-version :subject:date:references:x-mailer; bh=C09AnTkSHxqzqjz7pipBaL0ZeF/WsF+uDT3rVkWe6a8=; b=RWuHLJQvl5GjVpQO2iJ4jCJeNXnd9bhUn1XZlfN8rIx4jK0HJ8YZH85oU6ZKk3x9oZ SPWrzRSOLRRK2kBLT64qeyhIdBtPcmvXXnxPHHtepQ3RWMd06xeqigWe9tmkTghpNWaS Ak4ll/HumKG2FEZzSRXSG4o+BL0Yv/YAOxhqo= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=cc:message-id:from:to:in-reply-to:content-type :content-transfer-encoding:mime-version:subject:date:references :x-mailer; b=sGCqS+AeGkEEnHUaO5szS21G7U0qFccL1P47qJPMEnZwdwL7P5UgDWGdHPP/8CCBVb ZUo27abPq+1z39r7/E/dwVzwZ6Q3fhvdcRI1rvXPfMFexm0pgznAyBNXtuENDyRK413i eU6sG1274Ci+NOQU3B+zsB0UjG5ZAH0DSLmuI= Received: by 10.223.107.135 with SMTP id b7mr4574890fap.30.1237668576453; Sat, 21 Mar 2009 13:49:36 -0700 (PDT) Received: from ?10.10.30.16? (61.Red-88-0-188.dynamicIP.rima-tde.net [88.0.188.61]) by mx.google.com with ESMTPS id p17sm6447066fka.10.2009.03.21.13.49.33 (version=TLSv1/SSLv3 cipher=RC4-MD5); Sat, 21 Mar 2009 13:49:36 -0700 (PDT) Cc: caml-list@yquem.inria.fr Message-Id: From: Joel Reymont To: Jon Harrop In-Reply-To: <200903211451.50723.jon@ffconsultancy.com> Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Mime-Version: 1.0 (Apple Message framework v930.3) Subject: Re: [Caml-list] Google summer of Code proposal Date: Sat, 21 Mar 2009 20:49:28 +0000 References: <200903211439.47107.cdome@bk.ru> <5b0248170903210601pf3845d8h21bdd6a5ab1147af@mail.gmail.com> <200903211547.41996.cdome@bk.ru> <200903211451.50723.jon@ffconsultancy.com> X-Mailer: Apple Mail (2.930.3) X-Spam: no; 0.00; struct:01 struct:01 pointer:01 wrote:01 caml-list:01 tail:01 tail:01 argument:02 breaks:02 workaround:03 passing:05 space:07 structure:07 returning:11 though:13 On Mar 21, 2009, at 2:51 PM, Jon Harrop wrote: > . I found that LLVM's x86 backend breaks tail calls when the return > type is a > first class struct. The workaround is to use sret form, having the > caller > preallocate the return struct and passing a pointer to the struct as > an extra > first argument. Returning a structure by having the caller preallocate space, etc. is part of the Intel ABI or something like that. This is how it's done, period. Not sure how it relates to breaking tail calls, though. --- http://linkedin.com/in/joelreymont