Yeah. My target do have instructions support load/store HImode. And the problem is fix. I just don't understand why. Here is the information I gotta: http://gcc.gnu.org/ml/gcc/2005-01/msg00788.html. I defined a predicate function rice_memory_operand which calls the function memory operand directly, and nothing else it do. I wrote it because it's convenient to debug. This is the what make the RTL unrecognizable.
This is weird. I have to hack it later. Anyway, after fixed it, gcc is build success which means a great forward step for me. Thanks for your guys'help. Best Wishes. daniel