Am I misinterpreting the logic? Am I missing something
fundamental? I appreciate any feedback / pointers / clues / etc...
Nothing like hitting the send button to make the lightbulb go on.
I think I understand what was being attempted now. IIUC, the logic
should have been (again, for the QI/SI instance):
If at least _26_ bits are set, and if c1 is < 64, ok to make the
transformation.
In this case, I don't see an instance where "compare (subreg (a -
c1), c2)" is not equivalent to "compare (a - c1, c2)". It appears to
be a simple typo in the last line of the conditional:
(GET_MODE_BITSIZE (inner_mode) - mode_width - 1)
Should be:
(GET_MODE_BITSIZE (inner_mode) - (mode_width - 1))
or:
(GET_MODE_BITSIZE (inner_mode) - mode_width + 1)
I'll run this through a number of tests and submit an actual patch,
unless I'm still missing something...
- Josh