r204978 - Use the new Windows environment for target detection
Reid Kleckner
rnk at google.com
Tue May 13 13:06:19 PDT 2014
This fell out of my inbox...
On Mon, Mar 31, 2014 at 1:19 AM, Yaron Keren <yaron.keren at gmail.com> wrote:
> OK, I followed the code path and indeed dwarf exceptions are disabled due
> to the wrong X86MCAsmInfo being selected.
> Corrections to restore pre-r204978 functionality for X86MCTargetDesc
> committed in r205170.
>
> Back to TargetInfo.cpp:6204. Tracing the code
>
> bool IsWin32FloatStructABI = Triple.isWindowsMSVCEnvironment();
> [pre r204977 the code was = (Triple.getOS() == llvm::Triple::Win32) ]
>
> shows that IsWin32*FloatStruct*ABI is used to set IsWin32*Struct*ABI
> in X86_32ABIInfo constructor in TargetInfo.cpp:582.
>
> The different descriptions in names, FloatStruct vs. Struct may indicate a
> problem as IsWin32StructABI applies to several conditions more than just
> passing floats around.
>
IMO we should rename IsWin32FloatStructABI to IsWin32StructABI. Or
refactor the code altogether to split out the different OS variants of
x86_32. Or sink the OS down into X86_32ABIInfo. Anything would be better,
really.
I have plans to change the C++ ABI layering here. I want the ABIInfo
subclasses delegate out to CGCXXABI, which can optionally dictate how
return values and parameters are passed. If the C++ ABI doesn't say
anything, we fall back to the C ABI rules covered by ABIInfo subclasses.
That should simplify the code a bit.
> Moreover, isn't MinGW is C ABI compatible with Visual C++? If so,
> shouldn't this test apply to MinGW as well?
>
MinGW isn't C ABI compatible with MSVC when passing or returning structs by
value.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140513/3a009ac3/attachment.html>
More information about the cfe-commits
mailing list