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

Reply via email to