[llvm-branch-commits] [cfe-branch] r245388 - Merge r244488 to the 3.7 release branch

Reid Kleckner via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Aug 18 16:18:57 PDT 2015


Author: rnk
Date: Tue Aug 18 18:18:57 2015
New Revision: 245388

URL: http://llvm.org/viewvc/llvm-project?rev=245388&view=rev
Log:
Merge r244488 to the 3.7 release branch

It avoids doing key function optimizations when the key function is
dllimported.

Fixed PR24409.


Modified:
    cfe/branches/release_37/   (props changed)
    cfe/branches/release_37/lib/AST/RecordLayoutBuilder.cpp
    cfe/branches/release_37/test/CodeGenCXX/dllimport-rtti.cpp

Propchange: cfe/branches/release_37/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Aug 18 18:18:57 2015
@@ -1,4 +1,4 @@
 /cfe/branches/type-system-rewrite:134693-134817
-/cfe/trunk:242244,242285,242293,242297,242313,242382,242422,242499,242574,242600,242660,242662,242667,242678,242766,242854,242905,242973,243018,243048,243085,243098,243101,243105,243133,243144,243153,243196,243206,243277,243280,243285,243289,243343,243417,243463,243538,243594,243642-243644,243851,243945-243950,243964,244000,244193,244266,244468,244502,244719,244794,245041,245259
+/cfe/trunk:242244,242285,242293,242297,242313,242382,242422,242499,242574,242600,242660,242662,242667,242678,242766,242854,242905,242973,243018,243048,243085,243098,243101,243105,243133,243144,243153,243196,243206,243277,243280,243285,243289,243343,243417,243463,243538,243594,243642-243644,243851,243945-243950,243964,244000,244193,244266,244468,244488,244502,244719,244794,245041,245259
 /cfe/trunk/test:170344
 /cfe/trunk/test/SemaTemplate:126920

Modified: cfe/branches/release_37/lib/AST/RecordLayoutBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_37/lib/AST/RecordLayoutBuilder.cpp?rev=245388&r1=245387&r2=245388&view=diff
==============================================================================
--- cfe/branches/release_37/lib/AST/RecordLayoutBuilder.cpp (original)
+++ cfe/branches/release_37/lib/AST/RecordLayoutBuilder.cpp Tue Aug 18 18:18:57 2015
@@ -2014,6 +2014,12 @@ static const CXXMethodDecl *computeKeyFu
         continue;
     }
 
+    // If the key function is dllimport but the class isn't, then the class has
+    // no key function. The DLL that exports the key function won't export the
+    // vtable in this case.
+    if (MD->hasAttr<DLLImportAttr>() && !RD->hasAttr<DLLImportAttr>())
+      return nullptr;
+
     // We found it.
     return MD;
   }

Modified: cfe/branches/release_37/test/CodeGenCXX/dllimport-rtti.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_37/test/CodeGenCXX/dllimport-rtti.cpp?rev=245388&r1=245387&r2=245388&view=diff
==============================================================================
--- cfe/branches/release_37/test/CodeGenCXX/dllimport-rtti.cpp (original)
+++ cfe/branches/release_37/test/CodeGenCXX/dllimport-rtti.cpp Tue Aug 18 18:18:57 2015
@@ -20,3 +20,11 @@ struct __declspec(dllimport) V {
   virtual void f();
 } v;
 // GNU-DAG: @_ZTV1V = external dllimport
+
+struct W {
+  __declspec(dllimport) virtual void f();
+  virtual void g();
+} w;
+// GNU-DAG: @_ZTV1W = linkonce_odr
+// GNU-DAG: @_ZTS1W = linkonce_odr
+// GNU-DAG: @_ZTI1W = linkonce_odr




More information about the llvm-branch-commits mailing list