I have spent 1.5 days trying to understand why kvasd[.exe], the Koetter-Vardy algebraic soft-decision decoder, compiled correctly with versions 4.6.1 and 4.6.3 of gcc and gfortran, but fails with versions 4.8.1 and 4.8.2.
With the code as it has been for some years, the build appears successful but the program fails to execute correctly. After scratching my head with long gcc/gdb debugging sessions, I discovered that the combination clang (v3.5) + gfortran 4.8.2 worked perfectly. More importantly, clang identified the problem. Ralf Koetter's code used a number of constructions like the following: for (y = m2-1-x; y; ) d[y--] = p[y]; The clang compiler flagged these with warnings like this: warning: unsequenced modification and access to 'y' From context it's clear that the intended ordering is to decrement y after the copy operation. An unambiguous way to write the statement is thus for (y = m2-1-x; y; y--) d[y] = p[y]; Somewhere between gcc 4.6.3 and gcc 4.8.1, the GNU folks did something that changed the ordering of copy and decrement in the original statement. Anyway, the good news is that I fixed all the ambiguous "unsequenced modifications", and the code now executes correctly with all the compilers I've been testing. Three cheers for clang!!! -- Joe, K1JT ------------------------------------------------------------------------------ Comprehensive Server Monitoring with Site24x7. Monitor 10 servers for $9/Month. Get alerted through email, SMS, voice calls or mobile push notifications. Take corrective actions from your mobile device. http://p.sf.net/sfu/Zoho _______________________________________________ wsjt-devel mailing list wsjt-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wsjt-devel