This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/63572] [5 Regression] ICF breaks user debugging experience
- From: "jakub at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Fri, 17 Oct 2014 09:29:20 +0000
- Subject: [Bug debug/63572] [5 Regression] ICF breaks user debugging experience
- Auto-submitted: auto-generated
- References: <bug-63572-4 at http dot gcc dot gnu dot org/bugzilla/>
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63572
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2014-10-17
CC| |ccoutant at gcc dot gnu.org,
| |jan.kratochvil at redhat dot com,
| |jason at gcc dot gnu.org,
| |mark at gcc dot gnu.org
Target Milestone|--- |5.0
Ever confirmed|0 |1
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
For the different locations and blocks, I meant something like:
struct S { int a; int b; int c; };
struct T { int d; int e; int f; };
static int
f1 (struct S *x)
{
int g = x->a * 7;
{
int h = x->b * 11;
{
int i = x->c;
return g + h + i;
}
}
}
static int
f2 (struct T *x)
{
int j = x->d * 7; int k = x->e * 11;
int l = x->f;
return j + k + l;
}
int f3 (struct S *x) { return f1 (x); }
int f4 (struct T *x) { return f2 (x); }
int f5 (struct S *x) { return f1 (x) + 1; }
int f6 (struct T *x) { return f2 (x) + 1; }
(but for some reason ICF doesn't merge this, so we need better testcase).
The point was that with identical .text there doesn't have to be 1:1 mapping
between location_t's (and those now include both file:line:column and BLOCK),
in the above example supposedly there is many:1 mapping from f2 to f1
location_t, but generally there could be overlaps etc.