Tom Lane wrote:

Manfred Spraul <[EMAIL PROTECTED]> writes:


After some massaging, I've succeeded in generating bad code using a slightly modified MemSetAligned macro (parameters -O2 -fstrict-aliasing): gcc pipelined the x*x around the memset.



As I already explained, we do not care about the MemSetAligned case. Is gcc 3.3 smart enough to optimize away the pointer alignment test in the full macro?

3.2 optimizes away the pointer alignment test, but then doesn't pipeline the "x*x" calculation. It might be due to a known (and now fixed) bug in gcc where is lost track of constants, and thus didn't succeed in optimizing long calculations.

I don't have gcc 3.3 installed, but IMHO it would be insane to leave strict alias analysis enabled - writing to *(int32*)addr violates the alias rules, the bad code generated with MemSetAligned proved that.
Is someone around with 3.3 who could test MemSet?


--
   Manfred



---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to