Re: float4/float8/int64 passed by value with tsearchfixup
От
Tom Lane
Тема
Re: float4/float8/int64 passed by value with tsearchfixup
Дата
Msg-id
14681.1208644280@sss.pgh.pa.us
Ответ на
Re: float4/float8/int64 passed by value with tsearchfixup (Gregory Stark)
Список
Дерево обсуждения
Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Zoltan Boszormenyi <zb@cybertec.at>
Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Alvaro Herrera <alvherre@commandprompt.com>
int8/float8/time/timestamp[tz]/float4 passed by value, was Re:
Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Zoltan Boszormenyi <zb@cybertec.at>
Re: int8/float8/time/timestamp[tz]/float4 passed by value, was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Gregory Stark <stark@enterprisedb.com>
Re: int8/float8/time/timestamp[tz]/float4 passed by value, was Re:
Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Zoltan Boszormenyi <zb@cybertec.at>
Re: Re: int8/float8/time/timestamp[tz]/float4 passed by
value, was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Zoltan Boszormenyi <zb@cybertec.at>
Re: Re: int8/float8/time/timestamp[tz]/float4 passed by
value, was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Zoltan Boszormenyi <zb@cybertec.at>
Re: Re: int8/float8/time/timestamp[tz]/float4 passed by
value, was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Alvaro Herrera <alvherre@commandprompt.com>
Re: Re: int8/float8/time/timestamp[tz]/float4 passed by
value, was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Zoltan Boszormenyi <zb@cybertec.at>
float4/float8/int64 passed by value with tsearch fixup Zoltan Boszormenyi <zb@cybertec.at>
Re: float4/float8/int64 passed by value with tsearch
fixup Alvaro Herrera <alvherre@commandprompt.com>
Re: float4/float8/int64 passed by value with tsearch fixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearch
fixup Alvaro Herrera <alvherre@commandprompt.com>
Re: float4/float8/int64 passed by value with tsearch fixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearch
fixup Alvaro Herrera <alvherre@commandprompt.com>
Re: float4/float8/int64 passed by value with tsearch fixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearch fixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearch
fixup Alvaro Herrera <alvherre@commandprompt.com>
Re: float4/float8/int64 passed by value with tsearch fixup Zoltan Boszormenyi <zb@cybertec.at>
Re: float4/float8/int64 passed by value with tsearch
fixup Alvaro Herrera <alvherre@commandprompt.com>
Re: float4/float8/int64 passed by value with tsearch fixup Zoltan Boszormenyi <zb@cybertec.at>
Re: float4/float8/int64 passed by value with tsearch fixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearch fixup Zoltan Boszormenyi <zb@cybertec.at>
Re: float4/float8/int64 passed by value with tsearch fixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearch fixup Zoltan Boszormenyi <zb@cybertec.at>
Re: float4/float8/int64 passed by value with tsearchfixup Gregory Stark <stark@enterprisedb.com>
Re: float4/float8/int64 passed by value with tsearchfixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearchfixup Gregory Stark <stark@enterprisedb.com>
Re: float4/float8/int64 passed by value with tsearchfixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearchfixup Alvaro Herrera <alvherre@commandprompt.com>
Re: float4/float8/int64 passed by value with tsearchfixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearchfixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearchfixup Gregory Stark <stark@enterprisedb.com>
Re: float4/float8/int64 passed by value with tsearchfixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with
tsearchfixup Bruce Momjian <bruce@momjian.us>
Re: float4/float8/int64 passed by value with tsearchfixup Zoltan Boszormenyi <zb@cybertec.at>
Re: float4/float8/int64 passed by value with tsearchfixup Alvaro Herrera <alvherre@commandprompt.com>
Re: float4/float8/int64 passed by value with tsearchfixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearch fixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearch fixup "Guillaume Smet" <guillaume.smet@gmail.com>
Re: float4/float8/int64 passed by value with tsearch fixup Tom Lane <tgl@sss.pgh.pa.us>
Re: float4/float8/int64 passed by value with tsearch fixup "Guillaume Smet" <guillaume.smet@gmail.com>
Re: Re: int8/float8/time/timestamp[tz]/float4 passed by
value, was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Zoltan Boszormenyi <zb@cybertec.at>
Re: Re: int8/float8/time/timestamp[tz]/float4 passed by value, was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Gregory Stark <stark@enterprisedb.com>
Re: Re: int8/float8/time/timestamp[tz]/float4 passed by
value, was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Zoltan Boszormenyi <zb@cybertec.at>
Re: int8/float8/time/timestamp[tz]/float4 passed by value,
was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Magnus Hagander <magnus@hagander.net>
Re: int8/float8/time/timestamp[tz]/float4 passed by value, was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Tom Lane <tgl@sss.pgh.pa.us>
Re: int8/float8/time/timestamp[tz]/float4 passed by value, was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Gregory Stark <stark@enterprisedb.com>
Re: int8/float8/time/timestamp[tz]/float4 passed by value,
was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Zoltan Boszormenyi <zb@cybertec.at>
Re: int8/float8/time/timestamp[tz]/float4 passed by value,
was Re: Fix HAVE_LONG[_LONG]_INT_64 to really define to 1 Zoltan Boszormenyi <zb@cybertec.at>
Gregory Stark writes:
>> Tom Lane wrote:
>>> Specifically, I think what you missed is that on some platforms C
>>> functions pass or return float values differently from similar-sized
>>> integer or pointer values (typically, the float values get passed in
>>> floating-point registers).
> But I'm skeptical that it would hit such a wide swathe of the build farm. In
> particular AFAIK the standard ABI for i386 does no such thing.
I did some digging, and it seems you're mistaken. The standard gcc ABI
for both i386 and x86_64 returns floats in float registers (387
registers in the first case, and SSE registers in the second case).
This appears to have been the case for a very long time. I quote from
the manual for gcc 2.95:
`-mno-fp-ret-in-387'
Do not use the FPU registers for return values of functions.
The usual calling convention has functions return values of types
`float' and `double' in an FPU register, even if there is no FPU.
The idea is that the operating system should emulate an FPU.
The option `-mno-fp-ret-in-387' causes such values to be returned
in ordinary CPU registers instead.
It seems very odd that Alvaro's testing on an AMD64 platform didn't
show the problem.
regards, tom lane
В списке pgsql-patches по дате отправления
От: Zoltan Boszormenyi
Дата: