http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53948
--- Comment #9 from Richard Biener <rguenth at gcc dot gnu.org> 2013-02-08 08:28:13 UTC --- (In reply to comment #5) > So, the real problem here is that replacing > > VAR_OR_FUNCTION_DECL_P && ! DECL_ARTIFICAL > > with REG_USERVAR_P > > is not the same. In particular the former is _false_ for parameters and the > latter is true. c#3 is totally wrong, parameters are marked with > REG_USERVAR_P. > > The real way to get the prior behaviour without reverting the patch is to > either explicitly mark parameters so we can check for them in this one hunk of > code. Or to create a helper function in a suitable location that can map from > a reg to its decl, then check if it's a parameter. I thought this is what REG_EXPR provides ... Given that flags in the > main rtl structures are generally scarce, I think the latter is a better > solution given how rarely we need to make this distinction. > > It's unfortunate that this P1 regression was left languishing, half analyzed > in > our tree for 6+ months ;(