------- Comment #4 from jakub at gcc dot gnu dot org 2009-02-09 18:12 ------- ... must do what exactly? Using DECL_HARD_REGISTER vars in macros or inline functions is very common, starting from kernel, glibc, many programs that invoke syscalls directly, etc., and it worked well until now. I think sinking = {} across DECL_HARD_REGISTER initialization is wrong even if we teach i386 backend about DECL_HARD_REGISTER vars and don't use the stringop insns in that case. something = {} might expand into memset call, and for all call-clobbered vals having a call when those are live is definitely a bug. All macros/inlines that use DECL_HARD_REGISTER vars I remember first prepare all arguments in normal vars and then only copy everything to the hard registers, so it can be only the compiler reordering stuff that introduces breakage. Optimizations that increase the live range of such variables need to be avoided.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39139