[LLVMdev] Switching to the new MingW ABI

Hans Wennborg hans at chromium.org
Tue Dec 10 11:58:39 PST 2013


On Mon, Dec 9, 2013 at 5:18 PM, Rafael EspĂ­ndola
<rafael.espindola at gmail.com> wrote:
> Mingw switched abis with the release of gcc 4.7
> (http://gcc.gnu.org/gcc-4.7/changes.html). The main change is that now
> mingw (like msvc) given thiscall calling convention to methods by
> default.
>
> I think the last bug blocking us to support the new abi has just been
> fixed. The question now is how to switch.

I'm still seeing some test failures. For example,
CXX/class.access/p6.cpp fails if I apply your patch and run with
-triple i686-pc-mingw32:

$ "D:/src/llvm/build.release/bin/./clang.EXE" "-cc1" -triple
i686-pc-mingw32 "-internal-isystem"
"D:\src\llvm\build.release\bin\..\lib\clang\3.4\include"
"-fsyntax-only" "-verify"
"D:\src\llvm\tools\clang\test\CXX\class.access\p6.cpp"
error: 'error' diagnostics expected but not seen:
  File D:\src\llvm\tools\clang\test\CXX\class.access\p6.cpp Line 180:
'operator void *(class test8::A::*)(void) const' is a private member
of 'test8::A'
error: 'error' diagnostics seen but not expected:
  File D:\src\llvm\tools\clang\test\CXX\class.access\p6.cpp Line 180:
'operator void *(class test8::A::*)(void) __attribute__((thiscall))
const' is a private member of 'test8::A'
2 errors generated.

There are a handful other tests failing in the same way.

It would be nice if we could make the TypePrinter not print the
calling convention if it's the default one for the ABI, but
TypePrinter doesn't have a lot of context.. no Sema, no ASTContext :/

 - Hans




More information about the llvm-dev mailing list