http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53948
Jeffrey A. Law <law at redhat dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |law at redhat dot com AssignedTo|steven at gcc dot gnu.org |law at gcc dot gnu.org --- Comment #5 from Jeffrey A. Law <law at redhat dot com> 2013-02-07 20:04:00 UTC --- 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. 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 ;(