Hi Jeff: I have already fixed the bug. this occurs due to register allocation failed in function global_alloc. After calling the find_reg(), the reg_renumber still keep the value -1 in it. So the reload() in reload1.c delete the insns. I didn't set any call saved registers which means every register is call used. So allocating register failed when allocno[num].calls_crossed is larger than 0. This is weird in gcc without sending any warning message.
Anyway, I have to thanks for your guys advice. Best Wishes. daniel.tian