> When a pseudo which has an equivalent form (via the REG_EQUIV note) fails to > get a hard register, reload deletes the insn which sets the pseudo and > instead will reload the equivalent form into a suitable hard register prior > to use points. > > What you want to do is look at the reloads generated for insn #9. I'd > hazard a guess one of them loaded the value (symbol_ref ("fun")) into R0. > Then for some reason (you'll have to figure that out), the reload insn > which sets R0 was deleted (or possibly doesn't get emitted because reload > thought it was unncessary). > Yeah. The Move Symbol to R0 register is deleted, which is weird. And I still can not figure out why. Which means I still need to dig it. But I found when I used the gcc-4.0.2 version, the Call insn call the function direction call the function symbol which is OK. I mean how gcc determine to call the function directly with the function symbol or move the function symbol ref into a register then call the register. Obviously, now the gcc-4.3.0 in my porting is working in the latter one.
Do your guys have any advice? Thanks very much. best regards. daniel.tian