[Bug c++/14639] [3.4/3.5 Regression] [unit-at-a-time] Incorrect emission of unused compiler-generated destructor at -O2
mark at codesourcery dot com
gcc-bugzilla@gcc.gnu.org
Mon Mar 22 15:32:00 GMT 2004
------- Additional Comments From mark at codesourcery dot com 2004-03-22 15:31 -------
Subject: Re: New: Incorrect emission of unused compiler-generated
destructor at -O2
> So when the function itself gets marked as necesary we automatically
> emit the thunk when the mark_used_thunk has been called, right?
Yes. Whenever a function is emittted, so are all of its associated thunks.
> I guess we need two thinks - we need to manage that once we discover
> thunk to be necesary we need to mark the function it is refering to and
> we need to emit thunks iff they are really reachable (not just used,
> right)?
Yes.
> It would be ideal if the thunk was behaving like ordinary function, but
> for some reason it is not. Is there way to recognize thunk in C++
> independent way?
No. But, you could always change things so that was possible, I
suppose. Thunks cannot be represented as ordinary functions until we
have multiple entry points, and we don't yet have that.
> I guess we will need kind of hooks - tell cgraph code that given decl is
> thunk and thunk is like function but not quite as it has no body and
> reffers to other function and it is not necesay to assemble it as it
> gets assembled magically with the function body.
Yes.
> Hmm, perhaps I am getting overzelaous here (hope so). I am not quite
> sure how emit_p works. When the emit_p is set? If it is at function
> expansion time, it is too late - we need to be finished this in advance.
emit_p is set from emit_associated_thunks, which is called for a
function's thunks right before the function itself is sent to
tree_rest_of_compilation.
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=14639
More information about the Gcc-bugs
mailing list