Before complaining somewhere about a compiler error, I would strongly recommend to take a look at the assembly listing. Not one look, but better: have another person take a second look. It once happened to me that by looking at the assembly listing I believed to see the evidence of a compiler error, when another person - maybe on this list - showed me that the IMO missing instruction appeared some thirty instructions later which made the code correct. And the error finally turned out to be a very simple error on my part.
Kind regards Bernd Am 22.07.2013 16:54, schrieb Charles Mills:
Update: - parentheses did not fix the problem: testWord = (valueToTest >>= 32); - splitting it into two instructions did not fix the problem: valueToTest >>= 32; testWord = valueToTest; - recompiling just the single module with Opt(0) rather than Opt(2) did fix the problem. Everything else 100% the same. It may well be the surrounding code that causes the problem but I don't have the time at this point to try a hundred different test cases. I think we definitely have a compiler bug here. I may try the union approach, or the "pure C" (no call to ffs()) code that David suggested. I might try un-inlining the function, although that is basically a part of the "try a hundred different things" approach. Also, thanks David, not sure why I pulled that GONUMBER out of there. I will give that some thought. Charles
---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN