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

Reply via email to