Pseudo register replaced by a symbol_ref

Anders Ådland aaadland@atmel.no
Fri Jul 25 16:15:00 GMT 2003


In my port I can't load from a symbol_ref. Because of this the pattern
(set (reg:DF 25)
     (mem:DF (symbol_ref:SI ("*LLC0"))))
is replaced by a
(set (reg:DF 25)
     (mem:DF (reg:SI 38)))
in movdf using force_reg. The problem is that if GCC can't find a hard 
register for this pseudo it is replacing it with a symbol_ref again. This 
is done in find_reloads() in reload.c:2687 (version 3.2.3). How can I tell 
GCC that it can't do that?

In the documentation, I have read that the strict version of 
GO_IF_LEGATIMATE_ADDRESS has to handle a pseudo register as a memory 
reference. reload.c is using the strict version. Do I have to handle it as 
a potensial symbol_ref too?

Thanks,

Anders



More information about the Gcc mailing list