------- Comment #5 from aoliva at gcc dot gnu dot org 2010-06-23 04:35 ------- Created an attachment (id=20984) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20984&action=view) Patch that fixes the problem
The MEMs for each HImode in the DImode args all have NULL MEM_OFFSET (we indeed don have a constant offset within the loop, for it varies), but when we delegitimize those addresses during var-tracking, we assume no MEM_OFFSET means zero MEM_OFFSET, which maps all MEMs to the same VALUE. The assumption turns out to be wrong. We can't delegitimize a MEM to the base address when it may be offset by an unknown amount. Testing the patch now. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44610