Author: mstorsjo Date: Fri Apr 26 12:31:51 2019 New Revision: 359345 URL: http://llvm.org/viewvc/llvm-project?rev=359345&view=rev Log: [MinGW] Always emit local typeinfo
This makes sure that code built with headers for a statically linked libc++ also works when linking to the DLL version, when the DLL hasn't been built with --export-all-symbols. This matches what GCC for MinGW does for this test case. Differential Revision: https://reviews.llvm.org/D61177 Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp cfe/trunk/test/CodeGenCXX/vtable-key-function-ios.cpp Modified: cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp?rev=359345&r1=359344&r2=359345&view=diff ============================================================================== --- cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp (original) +++ cfe/trunk/lib/CodeGen/ItaniumCXXABI.cpp Fri Apr 26 12:31:51 2019 @@ -2959,7 +2959,7 @@ static bool ShouldUseExternalRTTIDescrip bool IsDLLImport = RD->hasAttr<DLLImportAttr>(); // Don't import the RTTI but emit it locally. - if (CGM.getTriple().isWindowsGNUEnvironment() && IsDLLImport) + if (CGM.getTriple().isWindowsGNUEnvironment()) return false; if (CGM.getVTables().isVTableExternal(RD)) Modified: cfe/trunk/test/CodeGenCXX/vtable-key-function-ios.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/vtable-key-function-ios.cpp?rev=359345&r1=359344&r2=359345&view=diff ============================================================================== --- cfe/trunk/test/CodeGenCXX/vtable-key-function-ios.cpp (original) +++ cfe/trunk/test/CodeGenCXX/vtable-key-function-ios.cpp Fri Apr 26 12:31:51 2019 @@ -1,7 +1,7 @@ -// RUN: %clang_cc1 %s -triple=armv7-apple-darwin -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 %s -triple=armv7-apple-darwin -emit-llvm -o - | FileCheck -check-prefixes=CHECK,CHECK-UNIX %s // RUN: %clang_cc1 %s -triple=armv7-apple-darwin -emit-llvm -o - | FileCheck -check-prefix=CHECK-LATE %s -// RUN: %clang_cc1 %s -triple=x86_64-pc-windows-gnu -emit-llvm -o - | FileCheck %s +// RUN: %clang_cc1 %s -triple=x86_64-pc-windows-gnu -emit-llvm -o - | FileCheck -check-prefixes=CHECK,CHECK-MINGW %s // RUN: %clang_cc1 %s -triple=x86_64-pc-windows-gnu -emit-llvm -o - | FileCheck -check-prefix=CHECK-LATE %s // The 'a' variants ask for the vtable first. @@ -29,7 +29,8 @@ struct Test0a { // V-table should be defined externally. Test0a::Test0a() { use(typeid(Test0a)); } // CHECK: @_ZTV6Test0a = external {{(dso_local )?}}unnamed_addr constant -// CHECK: @_ZTI6Test0a = external {{(dso_local )?}}constant +// CHECK-UNIX: @_ZTI6Test0a = external {{(dso_local )?}}constant +// CHECK-MINGW: @_ZTI6Test0a = linkonce_odr {{(dso_local )?}}constant // This is not a key function. void Test0a::foo() {} @@ -48,7 +49,8 @@ void Test0b::foo() {} // V-table should be defined externally. Test0b::Test0b() { use(typeid(Test0b)); } // CHECK: @_ZTV6Test0b = external {{(dso_local )?}}unnamed_addr constant -// CHECK: @_ZTI6Test0b = external {{(dso_local )?}}constant +// CHECK-UNIX: @_ZTI6Test0b = external {{(dso_local )?}}constant +// CHECK-MINGW: @_ZTI6Test0b = linkonce_odr {{(dso_local )?}}constant /*** Test1a ******************************************************************/ _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits