------- Comment #25 from jakub at gcc dot gnu dot org 2009-02-10 10:29 ------- Created an attachment (id=17275) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17275&action=view) gcc44-pr39139.patch
Quick patch to avoid sinking of block copies or clearings if current function has local explicit register vars. If there are other passes that move around calls or potential calls to places where they haven't been originally, they could do similar thing. If needed, we could track which basic blocks have such vars live etc., but I don't think it is worth it. The alternative would be to make DECL_HARD_REGISTER initializations (and uses?) act like loads/stores of pointers that can point to any memory, but that seems to me even bigger overkill, there is nothing wrong with moving a normal memory load or store, it is just the potential libcalls and inline stringops that are a problem. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39139