Re: Fix misaligned access of ItemPointerData on ARM
От | Tom Lane |
---|---|
Тема | Re: Fix misaligned access of ItemPointerData on ARM |
Дата | |
Msg-id | 1957.1432238903@sss.pgh.pa.us обсуждение исходный текст |
Ответ на | Re: Fix misaligned access of ItemPointerData on ARM (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: Fix misaligned access of ItemPointerData on ARM
Re: Fix misaligned access of ItemPointerData on ARM |
Список | pgsql-hackers |
I wrote: > But BlockIdData is laid out and accessed as two 16-bit fields, so there > should be no problem. On what platform exactly do you see a failure? Ah, after reading the gcc manual a bit more closely, I get the point. For some reason I think we assumed that "packed" would not result in misaligning the struct overall, but it clearly could do so, with possible efficiency consequences on hardware that doesn't like misaligned accesses. If the compiler accepts __attribute__((aligned)) then what you've done is clearly better. It's not clear to me whether all compilers that accept "packed" also accept "aligned", but there are enough ARM machines in the buildfarm that we could hope that we'll find out if this isn't portable. I wonder whether we should drop the ARM assumption and instead write #if defined(pg_attribute_packed) && defined(pg_attribute_aligned) pg_attribute_packed() pg_attribute_aligned(2) #endif so that the annotations are applied on every compiler that accepts them. regards, tom lane
В списке pgsql-hackers по дате отправления: