[Patch] Mangle C __stdcall and __fastcall in clang
Reid Kleckner
rnk at google.com
Tue Oct 15 18:13:53 PDT 2013
On Tue, Oct 15, 2013 at 5:57 PM, Rafael EspĂndola <
rafael.espindola at gmail.com> wrote:
> > Oh, I see, mingw does the opposite. :( I was hoping it would be the
> same,
> > but I guess it makes sense because we don't mangle calling conventions
> under
> > Itanium. We might want actually want to add a mangling, seeing as you
> can
> > overload based on CC in clang.
>
> Well, we have to follow what gcc does on mingw.
True.
> > I think John would tell you to sink this logic into the MangleContext
> > subclasses.
>
> That would require exposing getStdOrFastCallMangling to the
> subclasses. I doesn't look worth it.
I don't feel strongly.
> > + // Variadic functions do not receive @0 suffix.
> > + const FunctionDecl *FD = cast<FunctionDecl>(D);
> > + const FunctionType *FT = FD->getType()->castAs<FunctionType>();
> > + const FunctionProtoType *Proto = dyn_cast<FunctionProtoType>(FT);
> > + if (Proto && Proto->isVariadic())
> > + return;
> > + if (!Proto) {
> > + Out << '0';
> > + return;
> > + }
> >
> > Can this be tested? I thought we removed fastcall and cdecl from
> variadic
> > functions, and I have no idea what happens for K&R functions.
>
> True. I started working on the patch while they were still allowed and
> forgot to simplify it after that. The new attached patch uses an
> assert.
>
Looks good.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20131015/afe44071/attachment.html>
More information about the cfe-commits
mailing list