Re: BUG #13788: compile error in generic_msvc.h

Поиск
Список
Период
Сортировка
От Paul Moore
Тема Re: BUG #13788: compile error in generic_msvc.h
Дата
Msg-id BN4PR07MB2131DF8027DFBFD628475070F10E0@BN4PR07MB2131.namprd07.prod.outlook.com
обсуждение исходный текст
Ответ на Re: BUG #13788: compile error in generic_msvc.h  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
The 32 bit functions are defined on unsigned types

From winbase.h

FORCEINLINE
unsigned
InterlockedCompareExchange(
    _Inout_ _Interlocked_operand_ unsigned volatile *Destination,
    _In_ unsigned Exchange,
    _In_ unsigned Comperand
    )
{
    return (unsigned) _InterlockedCompareExchange((volatile long*) Destinat=
ion, (long) Exchange, (long) Comperand);
}

The cast fixes the 64 bit case.

Full disclosure, I am compiling as c++. I think that might be the cause. I =
tried in a c project and did not get the same error

-----Original Message-----
From: Tom Lane [mailto:tgl@sss.pgh.pa.us]=20
Sent: Tuesday, December 1, 2015 1:35 PM
To: Paul Moore <paul.moore@centrify.com>
Cc: pgsql-bugs@postgresql.org; Andres Freund <andres@anarazel.de>
Subject: Re: [BUGS] BUG #13788: compile error in generic_msvc.h

paul.moore@centrify.com writes:
> Bug reference:      13788
> Logged by:          paul moore
> Email address:      paul.moore@centrify.com
> PostgreSQL version: 9.5beta1
> Operating system:   win server 2012
> Description:       =20

> vs 2015, compiling spi execq sample

> vc complains about this

> 1>c:\Program
> Files\PostgreSQL\9.5\include\server\port/atomics/generic-msvc.h(91):=20
> error
> C2664: 'LONG64 _InterlockedCompareExchange64(volatile LONG64
> *,LONG64,LONG64)': cannot convert argument 1 from 'volatile uint64 *'=20
> to 'volatile LONG64 *'

> same for the add64 function a few lines later

That's a bit weird.  A perhaps plausible explanation would be that the comp=
iler is unhappy about passing an unsigned argument to a signed parameter; b=
ut if they've tightened it up like that, why no similar complaint for the 3=
2-bit versions just above these?

Can you try inserting a cast to (volatile int64 *), just to see?

            regards, tom lane

В списке pgsql-bugs по дате отправления:

Предыдущее
От: Alex Maslennikov
Дата:
Сообщение: Re: BUG #13789: pg_admin produces table definitiona instead of a view
Следующее
От: Michael Paquier
Дата:
Сообщение: Re: Incorrect UPDATE trigger invocation in the UPDATE clause of an UPSERT statement.