http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50281
--- Comment #3 from NickParker at Eaton dot com 2011-09-03 01:28:57 UTC --- The final printed calculation result of MulU3U3S3() is wrong, because two of the four result registers are incorrect and have been overwritten. "mulu3u3s3 : [ +0016777215 ] x [+0000000100 ] = [+0010502615 ]" I am wondering if the CPU is running out of registers? Because I have found stepping through that the calcualtion is actually working correctly