On Nov 18, 2008, at 10:12 AM, Tim Fenn wrote:

On Tue, 18 Nov 2008 10:21:29 +0000 Kevin Cowtan
<[EMAIL PROTECTED]> wrote:

And I would give exactly the opposite advice, unless you are or have
a guru who can devote time to fixing all the little things which
still don't work under 64 bit OSs.

(Does anyone else have any clues on why 64-bit compiled coot can't
calculate a map? I need to look into it, but have a huge backlog of
work at the moment.)


Try -fno-strict-aliasing, or dropping the optimization to -O0 or -O1.
Fixed the exact same problem for me. I also noticed several of the m4
macros coot uses (mmdb/ssm/guile-gtk) are broken such that 32 and 64
bit libraries can get mixed up, so you may not be using a 64 bit binary.

Should you decide to actually go fix the code, one of the flags that I use religiously for 64-bit code is -Wshorten-64-to-32. It flags implicit conversions from 64- to 32-bit types. This catches two types of problems:

        Inadvertent truncation of 64-bit types (pointers, size_t, etc.)
                cause various correctness/crashing issues

        random intermixing of single and double precision operations:
e.g. float x, y = x + 1.0; // 1.0 is double precision, and will force x to be up converted to double, a double precision add is then done, then downconverted to float these are a performance problem if you use XMM to do single and double precision arithmetic (as MacOS X does).

Also, at least on my system, -fstrict-aliasing will cause a warning to be emitted when you have an aliasing violation. Hopefully that should help you find these things and clean up the code.

Is the author of coot still working on the project?

Ian

Reply via email to