Trial fix for ticket:258 / integer overflow undefined / phase
authoreb <eb@221aa14e-8319-0410-a670-987f0aec2ac5>
Fri, 15 Aug 2008 01:12:02 +0000 (01:12 +0000)
committereb <eb@221aa14e-8319-0410-a670-987f0aec2ac5>
Fri, 15 Aug 2008 01:12:02 +0000 (01:12 +0000)
commitf806d765aab07876d073b60ad3cc5d3df321b87f
treef52e32099c58c95d8eaa52dd2ea34ba611d25b65
parentc5241ccab38d16a529c9ccc9ca10e2fc8e6e5a59
Trial fix for ticket:258 / integer overflow undefined / phase
accumulator.  Thanks to Stefan Bruens and Philip Ballister for working
on this.

According to the fine print in the C and C++ standards, if a signed
integer type overflows, the result is undefined.  As of gcc 4.3, gcc
was proving that our code was overflowing, and took advantage of the
"undefined" result to short circuit the evaluation.

Moral of the story:  if you're using a fixed point phase accumulator,
or anything else where you're counting on overflow happening, be sure
that your variable is unsigned.

See also http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37067 and
http://www.airs.com/blog/archives/120

git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@9296 221aa14e-8319-0410-a670-987f0aec2ac5
gnuradio-core/src/lib/general/gr_fxpt_nco.h