This is a bit more interesting than the last H8 fix. The H8 has peepholes to optimize masking a value down to a byte. They rely on using gen_lowpart to extract the low byte value of the source operand which works well on the H8 because accessing the low byte of a reg is particularly cheap. THey also work on memory operands. These peepholes don't really work on symbolic operands. And if one makes it into the peephole we'll abort in gen_lowpart. Anyway, the peepholes currently accept "general_operand", which of course allows those problematical symbolic operands. Changing the operand to "nonimmediate_operand" resolves the issue. Note that compile-time constants aren't really a concern here as the expression would have already been simplified. This fixes a half-dozen failures in the H8 testsuite. More importantly it makes it less likely that a test will suddenly fail because of improvements to constant propagation or forward propagation. Installing on the trunk. Jeff