https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87984
--- Comment #23 from rguenther at suse dot de <rguenther at suse dot de> --- On February 8, 2019 6:25:09 PM GMT+01:00, "jakub at gcc dot gnu.org" <gcc-bugzi...@gcc.gnu.org> wrote: >https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87984 > >--- Comment #22 from Jakub Jelinek <jakub at gcc dot gnu.org> --- >(In reply to Alexander Monakov from comment #21) >> (In reply to Jakub Jelinek from comment #18) >> > We could cache a bool in struct function whether the function has >any local >> > hard register vars and just propagate that info during inlining >etc. and >> > just add virtual operand if there are any clobbers and any local >register >> > vars (or with that condition check them). >> >> This seems to dismiss comment #17. The clobber may be invisible on >GIMPLE >> due to function calls or just plain arithmetic that is turned to >libcalls. > >A function call must be assumed to clobber any call used registers of >course. >But calls already do have vops (well, const/pure don't, and I don't >think we >want to change that). >Another possibility is to just punt on trying to optimize hard register >vars in >gimple optimizers, leave that to RTL only. So, punt on them in SCCVN, >PRE, >FRE, etc. But we do that already...