This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/6] Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN
- From: Joseph Myers <joseph at codesourcery dot com>
- To: Andreas Schwab <schwab at linux-m68k dot org>
- Cc: "H.J. Lu" <hjl dot tools at gmail dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Date: Fri, 21 Aug 2015 17:17:29 +0000
- Subject: Re: [PATCH 1/6] Add INLINE_SYSCALL_RETURN/INLINE_SYSCALL_ERROR_RETURN
- Authentication-results: sourceware.org; auth=none
- References: <20150814120014 dot GA28610 at gmail dot com> <87oaiavy2c dot fsf at igel dot home> <CAMe9rOoP9GPP+i6xbAXwHffwr+KOKNhV=FsJ5sx=G2bM_1SE+g at mail dot gmail dot com> <87oai9vkg7 dot fsf at igel dot home> <CAMe9rOqPmsPPR7RPbdhMKh-cRxK_J2dphmECdvq0QHtfnLgz0w at mail dot gmail dot com> <87k2sxvjh8 dot fsf at igel dot home> <CAMe9rOrbhzbxg2ed3w0i7zE7=KM1q37DtR1vAY_Lk=rxsJ_8mA at mail dot gmail dot com> <87d1ypvixm dot fsf at igel dot home> <CAMe9rOqEpVE3X-drZp6W6UESV0CCAtY3Qew+SPOt1b7Y9BNwfA at mail dot gmail dot com> <878u9dvh61 dot fsf at igel dot home> <CAMe9rOqNhBrGkJCkp5xT8DebN68qzoZciWtSZzGhYo1Msyv3TQ at mail dot gmail dot com> <CAMe9rOqZ=4B698SouQm=fTLaZvsqStQRYyMMhjPNCKMbjK1Xmw at mail dot gmail dot com> <CAMe9rOqNodDbB2mi4SU6agR=-qK0yfRHyFq7BiwBeWre-gJ1tw at mail dot gmail dot com> <alpine dot DEB dot 2 dot 10 dot 1508211502380 dot 2039 at digraph dot polyomino dot org dot uk> <878u94ws4b dot fsf at igel dot home>
On Fri, 21 Aug 2015, Andreas Schwab wrote:
> Joseph Myers <joseph@codesourcery.com> writes:
>
> > I suspect the patch would also better be split up into the most mechanical
> > changes that don't change generated code at all, and the less obvious
> > pieces needing more careful review.
>
> Especially nothing should be committed until the whole series is aggreed
> upon.
I don't think that's a good general principle for patch series - a patch
may well be good on its own merits independent of subsequent patches based
on it. But in the case of patch 1/6 here, I agree it only makes sense if
subsequent patches are agreed.
Specifically, I don't see any need for either of the new macros. So I
think the whole basis of this first patch is flawed, since its
justification is for use in the subsequent patches.
Instead of having two new macros, I think the i386 INLINE_SYSCALL could be
made to use __syscall_error by making its contents look like
(appropriately formatted):
({
unsigned int resultvar = INTERNAL_SYSCALL (name, , nr, args);
__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (resultvar, )) ?
__syscall_error (resultvar) : resultvar;
})
That's it. Now, maybe
return ({ a ? tailcallable () : b; });
doesn't produce a tail call. But if it doesn't, that should be addressed
in GCC, not through complicated macros in glibc. A transformation from
"return a ? tailcallable () : b;" to "if (a) return tailcallable (); else
return b;" would seem reasonable if it improves the code.
--
Joseph S. Myers
joseph@codesourcery.com