Produce direct calls instead of alias to linkonce_odr functions
Reid Kleckner
rnk at google.com
Mon Nov 4 16:41:54 PST 2013
On Mon, Nov 4, 2013 at 2:48 PM, Rafael EspĂndola <rafael.espindola at gmail.com
> wrote:
> On 4 November 2013 14:37, Reid Kleckner <rnk at google.com> wrote:
> > How do you deal with the case where not all references to the aliased
> entity
> > have been generated yet? For example:
> >
> > Emit call to derived ctor
> > Emit derived ctor
> > RAUW derived ctor with base ctor
> > Emit call to derived ctor, create new declaration for it
> >
> > I attempted this before, and this is the issue I hit.
>
> This only happens for inline destructors (they are the ones that are
> linkonce_odr) and they are only output once at the end of the file via
> EmitDeferred. Were you trying to avoid aliases in more cases maybe?
>
Why doesn't this apply to inline constructors? They are linkonce_odr.
EmitDeferred has a fixpoint loop, though, so it could cause more calls to
the replaced alias to be emitted.
I feel like this needs some defense against some other part of CodeGen
mangling the name for the entity you are replacing and attempting to
GetOrCreate it from the module.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131104/681bded4/attachment.html>
More information about the cfe-commits
mailing list