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.