https://gcc.gnu.org/bugzilla/show_bug.cgi?id=55212
--- Comment #385 from Oleg Endo <olegendo at gcc dot gnu.org> --- (In reply to Kazumoto Kojima from comment #383) > (In reply to Oleg Endo from comment #382) > > Instead of ... > > > > && REG_P (operands[1]) && REGNO (operands[1]) == R0_REG" > > > > ... could we also write it as... > > > > (define_predicate "hard_reg_r0" > > (and (match_code "reg") > > (match_test "REGNO (op) == R0_REG"))) > > > > (match_operand:SI 1 "hard_reg_r0" "z"))) > > > > ... if you have a chance, can you please try? > > Test cases for c#214 and c#331, which were the targets of these patterns, > compiled successfully with the above changes. Thanks. I've updated the commits in the branch https://github.com/olegendo/gcc/commits/devel/sh-lra/ I've also added test cases from comment #298 / comment #311 / attachment 59185 comment #331 / comment #333 / attachment 59215 comment #367 / comment #373 / attachment 59285 comment #378 / comment #384 / attachment 59289