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

Reply via email to