This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/53948] [4.8 Regression] Assignment line missing for -O0 -g
- From: "law at redhat dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Thu, 07 Feb 2013 20:04:00 +0000
- Subject: [Bug debug/53948] [4.8 Regression] Assignment line missing for -O0 -g
- Auto-submitted: auto-generated
- References: <bug-53948-4@http.gcc.gnu.org/bugzilla/>
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 ;(