[Bug debug/95343] IPA-SRA can result in wrong debug info about removed function arguments

2021-02-17 Thread jamborm at gcc dot gnu.org via Gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95343

Martin Jambor  changed:

   What|Removed |Added

 Resolution|--- |FIXED
 Status|ASSIGNED|RESOLVED

--- Comment #6 from Martin Jambor  ---
This bug is fixed, the debug info is no longer wrong, just also missing in
cases where we could actually provide it.  But that is a different thing, so
let me close this one.

[Bug debug/95343] IPA-SRA can result in wrong debug info about removed function arguments

2020-07-03 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95343

--- Comment #5 from CVS Commits  ---
The releases/gcc-10 branch has been updated by Martin Jambor
:

https://gcc.gnu.org/g:61e4ee3f2c0e3d77602c87866cd5c0cfb81d5da2

commit r10-8421-g61e4ee3f2c0e3d77602c87866cd5c0cfb81d5da2
Author: Martin Jambor 
Date:   Fri Jul 3 14:51:02 2020 +0200

ipa-sra: Prevent constructing debug info from wrong argument

The mechanism generating debug info for removed parameters did not
adjust index of the argument in the call statement to take into
account extra arguments IPA-SRA might have produced when splitting a
strucutre.  This patch addresses that omission and stops gdb from
showing incorrect value for the removed parameter and says "value
optimized out" instead.  The guality testcase will end up as
UNSUPPORTED in the results which is how Richi told me on IRC we deal
with this.

It is possible to generate debug info to actually show the value of
the removed parameter but so far my approaches to do just that seem
toocontroversial
(https://gcc.gnu.org/pipermail/gcc-patches/2020-May/546705.html), so
before I come up with something better I'd like to push this to master
and the gcc-10 branch in time for the GCC 10.2 release.

gcc/ChangeLog:

2020-07-01  Martin Jambor  

PR debug/95343
* ipa-param-manipulation.c (ipa_param_adjustments::modify_call):
Adjust
argument index if necessary.

gcc/testsuite/ChangeLog:

2020-07-01  Martin Jambor  

PR debug/95343
* gcc.dg/guality/pr95343.c: New test.

(cherry picked from commit 053c88093a45f175f446eda009f3312e4e508514)

[Bug debug/95343] IPA-SRA can result in wrong debug info about removed function arguments

2020-07-02 Thread cvs-commit at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95343

--- Comment #4 from CVS Commits  ---
The master branch has been updated by Martin Jambor :

https://gcc.gnu.org/g:053c88093a45f175f446eda009f3312e4e508514

commit r11-1787-g053c88093a45f175f446eda009f3312e4e508514
Author: Martin Jambor 
Date:   Thu Jul 2 14:30:50 2020 +0200

ipa-sra: Prevent constructing debug info from wrong argument

The mechanism generating debug info for removed parameters did not
adjust index of the argument in the call statement to take into
account extra arguments IPA-SRA might have produced when splitting a
strucutre.  This patch addresses that omission and stops gdb from
showing incorrect value for the removed parameter and says "value
optimized out" instead.  The guality testcase will end up as
UNSUPPORTED in the results which is how Richi told me on IRC we deal
with this.

It is possible to generate debug info to actually show the value of
the removed parameter but so far my approaches to do just that seem
toocontroversial
(https://gcc.gnu.org/pipermail/gcc-patches/2020-May/546705.html), so
before I come up with something better I'd like to push this to master
and the gcc-10 branch in time for the GCC 10.2 release.

gcc/ChangeLog:

2020-07-01  Martin Jambor  

PR debug/95343
* ipa-param-manipulation.c (ipa_param_adjustments::modify_call):
Adjust
argument index if necessary.

gcc/testsuite/ChangeLog:

2020-07-01  Martin Jambor  

PR debug/95343
* gcc.dg/guality/pr95343.c: New test.

[Bug debug/95343] IPA-SRA can result in wrong debug info about removed function arguments

2020-05-28 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95343

--- Comment #3 from Martin Jambor  ---
I have proposed a patch series on the mailing list to address PR 93385 and the
last patch in it also addresses this issue and allows gdb to print the correct
value of the removed parameter:

https://gcc.gnu.org/pipermail/gcc-patches/2020-May/546705.html

[Bug debug/95343] IPA-SRA can result in wrong debug info about removed function arguments

2020-05-26 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95343

--- Comment #2 from Martin Jambor  ---
(In reply to Martin Jambor from comment #1)
> ...I am testing a patch which can make gdb actually show
> the correct 4. 

I meant the correct value 2, of course.

[Bug debug/95343] IPA-SRA can result in wrong debug info about removed function arguments

2020-05-26 Thread jamborm at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95343

Martin Jambor  changed:

   What|Removed |Added

   Assignee|unassigned at gcc dot gnu.org  |jamborm at gcc dot 
gnu.org
Summary|IPA-SRA can result in bad   |IPA-SRA can result in wrong
   |debug info about removed|debug info about removed
   |function arguments  |function arguments
 Status|UNCONFIRMED |ASSIGNED
   Last reconfirmed||2020-05-26
 Ever confirmed|0   |1

--- Comment #1 from Martin Jambor  ---
The simplest fix which will make i reported as "optimized out" is the
following.  But I am testing a patch which can make gdb actually show
the correct 4.  Still, the following is usable for gcc 10 if the full
patch is deemed too risky:

diff --git a/gcc/ipa-param-manipulation.c b/gcc/ipa-param-manipulation.c
index 978916057f0..2a04f7b3ce5 100644
--- a/gcc/ipa-param-manipulation.c
+++ b/gcc/ipa-param-manipulation.c
@@ -787,7 +787,12 @@ ipa_param_adjustments::modify_call (gcall *stmt,
  if (!is_gimple_reg (old_parm) || kept[i])
continue;
  tree origin = DECL_ORIGIN (old_parm);
- tree arg = gimple_call_arg (stmt, i);
+ int index;
+ if (transitive_remapping)
+   index = index_map[i];
+ else
+   index = i;
+ tree arg = gimple_call_arg (stmt, index);

  if (!useless_type_conversion_p (TREE_TYPE (origin), TREE_TYPE (arg)))
{