[cfe-dev] Target-Triple changes in assembly; Who is wrong?

Reid Kleckner via cfe-dev cfe-dev at lists.llvm.org
Tue Feb 13 10:37:15 PST 2018


Without the context of the code being compiled, it's impossible to say if
LLVM is right or not. It's worth mentioning though that there is no
__thiscall convention on x64. That's a 32-bit-only thing.

If I had to guess, I'd say this is some struct return ABI detail that's
going wrong.

On Mon, Feb 12, 2018 at 10:32 PM, via cfe-dev <cfe-dev at lists.llvm.org>
wrote:

> Hello Clang-People,
>
> I try to understand the system behind the target triple of clang - but I
> don't get it. I used clang to compile the same code with two different
> targets:
> *--target=x86_64-pc-windows-msvc* and *--target=x86_64-pc-windows-elf*.
>
> I let the dragon compile my code and wished for assembly output. The
> dragon did fine but the output confused me.
>
> When I looked into the functions I discovered strange difference. For
> example:
> *msvc* target generated:
> movq        %rdx, %rax
>
> but in *elf* the same line is:
> movq        %rcx, %rax
>
> Why is there (and in other places) such difference? The target is still
> windows, but the elf code is breaking the windows __thiscall calling
> convention. I expected that both output are compatible to windows.
>
> Is the dragon wrong, or is it me?
>
> Kind regards
> Björn
>
> Als GmbH eingetragen im Handelsregister Bad Homburg v.d.H. HRB 9816,
> USt.ID-Nr. DE 114 165 789
> Geschäftsführer: Dr. Hiroshi Nakamura, Dr. Robert Plank, Markus Bode,
> Heiko Lampert, Hiroshi Kawamura, Takashi Nagano, Takeshi Fukushima.
>
>
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20180213/d8a4d53a/attachment.html>


More information about the cfe-dev mailing list