public inbox for gcc-prs@sourceware.org
help / color / mirror / Atom feed
* debug/8094: bad dwarf for inlined constructors
@ 2002-09-30  5:36 tom.horsley
  0 siblings, 0 replies; 3+ messages in thread
From: tom.horsley @ 2002-09-30  5:36 UTC (permalink / raw)
  To: gcc-gnats


>Number:         8094
>Category:       debug
>Synopsis:       bad dwarf for inlined constructors
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Sep 30 05:36:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     tom.horsley@ccur.com
>Release:        gcc-3.2
>Organization:
>Environment:
redhat linux null beta release
>Description:
Apparently for some kind of multiple inheritance "optimization" g++ generates two separate copies of a constructor even when there is only one in the source and no inline was specified.

It creates debug info for both these constructors as though they were inlined, with two concrete instances and one abstract instance.

The concrete DIEs are all supposed to have DW_AT_abstract_origin attributes, pointing to the corresponding DIE in the abstract instance.

The dwarf generated by gcc 3.2 is missing the abstract
origin information for some DIEs in the concrete instance.
Specifically DW_TAG_lexical_block DIEs never seem to have
any abstract origin specified.
>How-To-Repeat:
I'm not sure when g++ decides to duplicate constructors like this, but if you can get it to do that, simply make the constructor big an complex enough to have inner lexical blocks, and you will see they never have abstract origin info.

P.S. Why it duplicates the entire constructor (which can be arbitrarily gigantic) instead of simply providing some little wrappers to do the vtable work is probably a subject for a different bug report :-).
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:


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

* Re: debug/8094: bad dwarf for inlined constructors
@ 2003-02-23 21:26 neroden
  0 siblings, 0 replies; 3+ messages in thread
From: neroden @ 2003-02-23 21:26 UTC (permalink / raw)
  To: dberlin, gcc-bugs, gcc-prs, tom.horsley

Synopsis: bad dwarf for inlined constructors

State-Changed-From-To: feedback->closed
State-Changed-By: neroden
State-Changed-When: Sun Feb 23 21:26:27 2003
State-Changed-Why:
    No feedback > 3 mo

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8094


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

* Re: debug/8094: bad dwarf for inlined constructors
@ 2002-10-17 14:33 dberlin
  0 siblings, 0 replies; 3+ messages in thread
From: dberlin @ 2002-10-17 14:33 UTC (permalink / raw)
  To: dberlin, gcc-bugs, gcc-prs, nobody, tom.horsley

Synopsis: bad dwarf for inlined constructors

Responsible-Changed-From-To: unassigned->dberlin
Responsible-Changed-By: dberlin
Responsible-Changed-When: Thu Oct 17 14:33:23 2002
Responsible-Changed-Why:
    me
State-Changed-From-To: open->feedback
State-Changed-By: dberlin
State-Changed-When: Thu Oct 17 14:33:23 2002
State-Changed-Why:
    Need a test case, for both problems, in order to debug.
    Also, when you say "two separate copies of a constructor", do they have the same mangled name?
    I suspect one is the in-charge constructor, and one is the not-in charge constructor, and they actually have different names.

http://gcc.gnu.org/cgi-bin/gnatsweb.pl?cmd=view%20audit-trail&database=gcc&pr=8094


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

end of thread, other threads:[~2003-02-23 21:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2002-09-30  5:36 debug/8094: bad dwarf for inlined constructors tom.horsley
2002-10-17 14:33 dberlin
2003-02-23 21:26 neroden

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).