Wednesday, December 17, 2014

At last, I can see some progress. I put in some code in August to handle a problem where word-to-byte conversions were getting dropped. I handled this by inserting a swpb instruction to do the conversion first before doing the operation.

The problem here seems to be that this sequence was being performed on an instruction where the source and destination are the same register. This caused the instruction to be repeated. This might help explain things:

Original:
r27 = subreg_low_part(r27)

After reload:
r27 = subreg_low_part(r27)
r27 = subreg_low_part(r27)

The code in reload pulls the subreg expression out and does that first before doing any other operations. The problem is that in this case, r27 is virtual

There was an earlier modification to prevent instructions like this from being reloaded. So maybe that's the cause of this problem.

No comments:

Post a Comment