Don't emit strong vtable definitions for imported classes with key functions (PR21355)
authorHans Wennborg <hans@hanshq.net>
Thu, 23 Oct 2014 22:40:46 +0000 (22:40 +0000)
committerHans Wennborg <hans@hanshq.net>
Thu, 23 Oct 2014 22:40:46 +0000 (22:40 +0000)
commitec53c299320e6d38c40b28b70de31e594e755f23
tree51fc9f6dec163b64ed5d6262925aea0b0af2e45e
parente05afd4d1e8a19d3a460c8143a983d272a026c15
Don't emit strong vtable definitions for imported classes with key functions (PR21355)

Clang would previously assert on the following code when targeting MinGW:

  struct __declspec(dllimport) S {
      virtual ~S();
  };
  S::~S() {}

Because ~S is a key function and the class is dllimport, we would try to emit a
strong definition of the vtable, with dllimport - which is a conflict. We
should not emit strong vtable definitions for imported classes.

Differential Revision: http://reviews.llvm.org/D5944

llvm-svn: 220532
clang/lib/CodeGen/CGVTables.cpp
clang/test/CodeGenCXX/dllimport.cpp