[HACKERS] GCC memory barriers are missing cc clobbers
Hi, barrier.h defines memory barriers for x86 as: 32bit: #define pg_memory_barrier() \ __asm__ __volatile__ (lock; addl $0,0(%%esp) : : : memory) 64bit: #define pg_memory_barrier() \ __asm__ __volatile__ (lock; addl $0,0(%%rsp) : : : memory) But addl sets condition flags. So this really also needs a cc clobber? Or am I missing something? Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] GCC memory barriers are missing cc clobbers
Hi, On 2014-09-19 12:00:16 +0200, Andres Freund wrote: barrier.h defines memory barriers for x86 as: 32bit: #define pg_memory_barrier() \ __asm__ __volatile__ (lock; addl $0,0(%%esp) : : : memory) 64bit: #define pg_memory_barrier() \ __asm__ __volatile__ (lock; addl $0,0(%%rsp) : : : memory) But addl sets condition flags. So this really also needs a cc clobber? Or am I missing something? What I missed is that x86 has an implied cc clobber for every inline assembly statement. So forget that. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] GCC memory barriers are missing cc clobbers
Andres Freund and...@2ndquadrant.com writes: On 2014-09-19 12:00:16 +0200, Andres Freund wrote: But addl sets condition flags. So this really also needs a cc clobber? Or am I missing something? What I missed is that x86 has an implied cc clobber for every inline assembly statement. So forget that. While it might not be buggy as it stands, I think we should add the cc rather than rely on it being implicit. One reason is that people will look at the x86 cases when developing code for other architectures, and they could easily forget to add cc on machines where it does matter. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] GCC memory barriers are missing cc clobbers
On 2014-09-19 09:58:01 -0400, Tom Lane wrote: Andres Freund and...@2ndquadrant.com writes: On 2014-09-19 12:00:16 +0200, Andres Freund wrote: But addl sets condition flags. So this really also needs a cc clobber? Or am I missing something? What I missed is that x86 has an implied cc clobber for every inline assembly statement. So forget that. While it might not be buggy as it stands, I think we should add the cc rather than rely on it being implicit. One reason is that people will look at the x86 cases when developing code for other architectures, and they could easily forget to add cc on machines where it does matter. Fair point. It's also extremly poorly documented - my answer is from a gcc dev, I haven't found an official document stating it. I don't really see any need to backpatch though, do you? Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] GCC memory barriers are missing cc clobbers
Andres Freund and...@2ndquadrant.com writes: On 2014-09-19 09:58:01 -0400, Tom Lane wrote: While it might not be buggy as it stands, I think we should add the cc rather than rely on it being implicit. One reason is that people will look at the x86 cases when developing code for other architectures, and they could easily forget to add cc on machines where it does matter. Fair point. It's also extremly poorly documented - my answer is from a gcc dev, I haven't found an official document stating it. I don't really see any need to backpatch though, do you? Well, I'd make it the same in all branches which have that code, which is not very far back is it? regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers
Re: [HACKERS] GCC memory barriers are missing cc clobbers
On 2014-09-19 10:58:56 -0400, Tom Lane wrote: Andres Freund and...@2ndquadrant.com writes: I don't really see any need to backpatch though, do you? Well, I'd make it the same in all branches which have that code, which is not very far back is it? It was already introduced in 9.2 - no idea whether that's far back or not ;). Done. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers