From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20401 invoked by alias); 29 Oct 2014 18:10:35 -0000 Mailing-List: contact libffi-discuss-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: libffi-discuss-owner@sourceware.org Received: (qmail 20387 invoked by uid 89); 29 Oct 2014 18:10:34 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.3.2 X-HELO: shards.monkeyblade.net Received: from shards.monkeyblade.net (HELO shards.monkeyblade.net) (149.20.54.216) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 29 Oct 2014 18:10:33 +0000 Received: from localhost (nat-pool-rdu-t.redhat.com [66.187.233.202]) (Authenticated sender: davem-davemloft) by shards.monkeyblade.net (Postfix) with ESMTPSA id 0C1F8581CCC; Wed, 29 Oct 2014 11:10:30 -0700 (PDT) Date: Wed, 29 Oct 2014 18:10:00 -0000 Message-Id: <20141029.141027.901195445453157818.davem@davemloft.net> To: rth@twiddle.net Cc: libffi-discuss@sourceware.org Subject: Re: [PATCH 3/8] sparc: Rewrite everything From: David Miller In-Reply-To: <1414525555-21256-4-git-send-email-rth@twiddle.net> References: <1414525555-21256-1-git-send-email-rth@twiddle.net> <1414525555-21256-4-git-send-email-rth@twiddle.net> Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2014/txt/msg00158.txt.bz2 From: Richard Henderson Date: Tue, 28 Oct 2014 12:45:50 -0700 > + case FFI_TYPE_STRUCT: > + if (rtype->size > 32) > + { > + flags = SPARC_RET_VOID | SPARC_FLAG_RET_IN_MEM; > + bytes = 8; > + } > + else > + flags = SPARC_RET_STRUCT; > + break; Here you use a cutoff of 32 bytes. > + case FFI_TYPE_LONGDOUBLE: > + case FFI_TYPE_STRUCT: > + z = ty->size; > + if (z > 16) > + { > + /* For structures larger than 16 bytes we pass reference. */ > + *argp++ = (unsigned long)a; > + break; > + } > + if (((unsigned long)argp & 15) && ty->alignment > 8) > + argp++; > + memcpy(argp, a, z); > + argp += ALIGN(z, 8) / 8; > + break; Yet here in args prep, the cutoff is 16. Maybe I'm missing something?