To solve the above issue, can I use the "define_peephole2" insn pattern?
No. At most you could abuse it to hide the issue some of the time. You probably have one or more of your target macros / hooks wrong, e.g. HARD_REGNO_NREGS.
Any comments or suggestions most welcome.
read and understand all the documentation on porting gcc in the doc directory. Or work with someone who has.