------- 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

Reply via email to