public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug debug/63623] New: Lots of functions get -fvar-tracking silently turned off unnecessarily
@ 2014-10-23  7:01 jakub at gcc dot gnu.org
  2014-10-23  7:12 ` [Bug debug/63623] " jakub at gcc dot gnu.org
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-23  7:01 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63623

            Bug ID: 63623
           Summary: Lots of functions get -fvar-tracking silently turned
                    off unnecessarily
           Product: gcc
           Version: 4.8.4
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: debug
          Assignee: unassigned at gcc dot gnu.org
          Reporter: jakub at gcc dot gnu.org

I have got a report that when glibc is compiled with gcc 4.8.x, the debug info
for the bytes parameter to __libc_malloc is wrong in the prologue (and
epilogue).

Here is a reduced testcase for x86_64-linux:
-std=gnu99 -fgnu89-inline -O2 -fmerge-all-constants -frounding-math -g -dA
-fPIC:

void *a;
extern void *(*d) (__SIZE_TYPE__, const void *);
void *foo (void *, __SIZE_TYPE__);
void *bar (void *, __SIZE_TYPE__);

void *
__libc_malloc (__SIZE_TYPE__ bytes)
{
  void *b, *c;
  if (__builtin_expect (d != 0, 0))
    return d (bytes, 0);
  b = a;
  if (!b)
    return 0;
  c = foo (b, bytes);
  if (!c)
    b = bar (b, bytes);
  return b;
}

r203167 on the trunk "fixed" this by slightly changing the CFG (because of the
__builtin_expect), so the bug went latent on this testcase.

I've investigated this and found that this is because the function doesn't have
frame pointer and vt_stack_adjustments failed on the function, which precludes
not just -fvar-tracking-assignments, but also -fvar-tracking altogether.
And the reason for that is that it doesn't handle i?86/x86_64 pop instructions,
like:
(insn/f:TI 76 81 77 8 (set (reg:DI 3 bx)
        (mem:DI (post_inc:DI (reg/f:DI 7 sp)) [0 S8 A8])) rh1151226.i:19 75
{*popdi1}
     (expr_list:REG_CFA_ADJUST_CFA (set (reg/f:DI 7 sp)
            (plus:DI (reg/f:DI 7 sp)
                (const_int 8 [0x8])))
        (nil)))
where it doesn't account for any stack adjustment in such functions.  Thus,
stack_adjust values may be either wrong in the VTA info, leading to wrong
debug, or, if because of that there is some disagreement on the edges between
what the stack_adjust value should be, it gives up on -fvar-tracking
altogether.


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug debug/63623] Lots of functions get -fvar-tracking silently turned off unnecessarily
  2014-10-23  7:01 [Bug debug/63623] New: Lots of functions get -fvar-tracking silently turned off unnecessarily jakub at gcc dot gnu.org
@ 2014-10-23  7:12 ` jakub at gcc dot gnu.org
  2014-10-23  8:24 ` jakub at gcc dot gnu.org
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-23  7:12 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63623

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |ASSIGNED
   Last reconfirmed|                            |2014-10-23
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org
     Ever confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 33789
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=33789&action=edit
gcc5-pr63623.patch

Patch (successfully tested).


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug debug/63623] Lots of functions get -fvar-tracking silently turned off unnecessarily
  2014-10-23  7:01 [Bug debug/63623] New: Lots of functions get -fvar-tracking silently turned off unnecessarily jakub at gcc dot gnu.org
  2014-10-23  7:12 ` [Bug debug/63623] " jakub at gcc dot gnu.org
@ 2014-10-23  8:24 ` jakub at gcc dot gnu.org
  2014-10-23 23:08 ` jakub at gcc dot gnu.org
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-23  8:24 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63623

--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
dwlocstat --tabulate=0.0:10,99
results on cc1plus bootstrapped --enable-checking=yes,rtl binaries before/after
the patch (in the tree without the patch I've applied the patch afterwards and
did make cc1plus in the gcc directory, so var-tracking.o in stage3 got rebuilt
again and thus the compared binaries contain exactly the same code, just
different debug info):

x86_64-linux cc1plus built without the patch:
cov%    samples    cumul
0.0    506230/38%    506230/38%
0..10    10327/0%    516557/39%
11..20    12390/0%    528947/39%
21..30    31265/2%    560212/42%
31..40    18775/1%    578987/43%
41..50    20631/1%    599618/45%
51..60    24921/1%    624539/47%
61..70    40959/3%    665498/50%
71..80    23771/1%    689269/52%
81..90    41771/3%    731040/55%
91..99    81667/6%    812707/61%
100    510564/38%    1323271/100%

x86_64-linux cc1plus built with the patch:
cov%    samples    cumul
0.0    382214/28%    382214/28%
0..10    13100/0%    395314/29%
11..20    14568/1%    409882/30%
21..30    33708/2%    443590/33%
31..40    21927/1%    465517/35%
41..50    23924/1%    489441/36%
51..60    28736/2%    518177/39%
61..70    45847/3%    564024/42%
71..80    29284/2%    593308/44%
81..90    52085/3%    645393/48%
91..99    99971/7%    745364/56%
100    577907/43%    1323271/100%

i686-linux cc1plus built without the patch:
cov%    samples    cumul
0.0    631348/48%    631348/48%
0..10    7764/0%    639112/48%
11..20    9690/0%    648802/49%
21..30    25036/1%    673838/51%
31..40    16113/1%    689951/52%
41..50    19753/1%    709704/54%
51..60    14563/1%    724267/55%
61..70    34093/2%    758360/58%
71..80    17450/1%    775810/59%
81..90    31339/2%    807149/61%
91..99    60368/4%    867517/66%
100    437548/33%    1305065/100%

i686-linux cc1plus built with the patch:
cov%    samples    cumul
0.0    377352/28%    377352/28%
0..10    16077/1%    393429/30%
11..20    15390/1%    408819/31%
21..30    31790/2%    440609/33%
31..40    23889/1%    464498/35%
41..50    29267/2%    493765/37%
51..60    22902/1%    516667/39%
61..70    45629/3%    562296/43%
71..80    29511/2%    591807/45%
81..90    50536/3%    642343/49%
91..99    93584/7%    735927/56%
100    569138/43%    1305065/100%

.debug_info/.debug_loc sizes in bytes:
x86_64-linux cc1plus without patch .debug_info 75411710, .debug_loc 75421077
x86_64-linux cc1plus with    patch .debug_info 78498790, .debug_loc 90530117
  i686-linux cc1plus without patch .debug_info 59921183, .debug_loc 37823166
  i686-linux cc1plus with    patch .debug_info 63009554, .debug_loc 59535100


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug debug/63623] Lots of functions get -fvar-tracking silently turned off unnecessarily
  2014-10-23  7:01 [Bug debug/63623] New: Lots of functions get -fvar-tracking silently turned off unnecessarily jakub at gcc dot gnu.org
  2014-10-23  7:12 ` [Bug debug/63623] " jakub at gcc dot gnu.org
  2014-10-23  8:24 ` jakub at gcc dot gnu.org
@ 2014-10-23 23:08 ` jakub at gcc dot gnu.org
  2015-06-12 14:07 ` matz at gcc dot gnu.org
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-10-23 23:08 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63623

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Thu Oct 23 21:58:41 2014
New Revision: 216600

URL: https://gcc.gnu.org/viewcvs?rev=216600&root=gcc&view=rev
Log:
    PR debug/63623
    * var-tracking.c (stack_adjust_offset_pre_post_cb): New function.
    (stack_adjust_offset_pre_post): Use it through for_each_inc_dec,
    instead of only handling autoinc in dest if it is a MEM.
    (vt_stack_adjustments): Fix up formatting.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/var-tracking.c


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug debug/63623] Lots of functions get -fvar-tracking silently turned off unnecessarily
  2014-10-23  7:01 [Bug debug/63623] New: Lots of functions get -fvar-tracking silently turned off unnecessarily jakub at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2014-10-23 23:08 ` jakub at gcc dot gnu.org
@ 2015-06-12 14:07 ` matz at gcc dot gnu.org
  2015-06-12 14:14 ` matz at gcc dot gnu.org
  2015-06-13 18:52 ` jakub at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: matz at gcc dot gnu.org @ 2015-06-12 14:07 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63623

--- Comment #4 from Michael Matz <matz at gcc dot gnu.org> ---
Author: matz
Date: Fri Jun 12 14:06:41 2015
New Revision: 224434

URL: https://gcc.gnu.org/viewcvs?rev=224434&root=gcc&view=rev
Log:
        Backported from mainline
        2014-10-23  Jakub Jelinek  <jakub@redhat.com>

        PR debug/63623
        * var-tracking.c (stack_adjust_offset_pre_post_cb): New function.
        (stack_adjust_offset_pre_post): Use it through for_each_inc_dec,
        instead of only handling autoinc in dest if it is a MEM.
        (vt_stack_adjustments): Fix up formatting.

Modified:
    branches/gcc-4_8-branch/gcc/ChangeLog
    branches/gcc-4_8-branch/gcc/var-tracking.c


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug debug/63623] Lots of functions get -fvar-tracking silently turned off unnecessarily
  2014-10-23  7:01 [Bug debug/63623] New: Lots of functions get -fvar-tracking silently turned off unnecessarily jakub at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2015-06-12 14:07 ` matz at gcc dot gnu.org
@ 2015-06-12 14:14 ` matz at gcc dot gnu.org
  2015-06-13 18:52 ` jakub at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: matz at gcc dot gnu.org @ 2015-06-12 14:14 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63623

--- Comment #5 from Michael Matz <matz at gcc dot gnu.org> ---
Author: matz
Date: Fri Jun 12 14:13:33 2015
New Revision: 224435

URL: https://gcc.gnu.org/viewcvs?rev=224435&root=gcc&view=rev
Log:
        Backported from mainline
        2014-10-23  Jakub Jelinek  <jakub@redhat.com>

        PR debug/63623
        * var-tracking.c (stack_adjust_offset_pre_post_cb): New function.
        (stack_adjust_offset_pre_post): Use it through for_each_inc_dec,
        instead of only handling autoinc in dest if it is a MEM.

Modified:
    branches/gcc-4_9-branch/gcc/ChangeLog
    branches/gcc-4_9-branch/gcc/var-tracking.c


^ permalink raw reply	[flat|nested] 7+ messages in thread

* [Bug debug/63623] Lots of functions get -fvar-tracking silently turned off unnecessarily
  2014-10-23  7:01 [Bug debug/63623] New: Lots of functions get -fvar-tracking silently turned off unnecessarily jakub at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2015-06-12 14:14 ` matz at gcc dot gnu.org
@ 2015-06-13 18:52 ` jakub at gcc dot gnu.org
  5 siblings, 0 replies; 7+ messages in thread
From: jakub at gcc dot gnu.org @ 2015-06-13 18:52 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63623

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Fixed.


^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-06-13 18:52 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-10-23  7:01 [Bug debug/63623] New: Lots of functions get -fvar-tracking silently turned off unnecessarily jakub at gcc dot gnu.org
2014-10-23  7:12 ` [Bug debug/63623] " jakub at gcc dot gnu.org
2014-10-23  8:24 ` jakub at gcc dot gnu.org
2014-10-23 23:08 ` jakub at gcc dot gnu.org
2015-06-12 14:07 ` matz at gcc dot gnu.org
2015-06-12 14:14 ` matz at gcc dot gnu.org
2015-06-13 18:52 ` jakub at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).