This bug is introduced by my commit r236181 where the inner rtx of SUBREG haven't been checked while it should as "in_class_p" only works with REG, and SUBREG_REG is actually not always REG. If REG_P check failed, then we should fall back to normal code patch. The following simple testcase for x86 can reproduce this bug. long foo (long a) { return (unsigned) foo; } OK for trunk? x86-64 bootstrap OK and no regression on check-gcc/g++. 2016-05-17 Jiong Wang gcc/ PR rtl-optimization/71150 * lra-constraint (process_addr_reg): Guard "in_class_p" with REG_P check.