From 1fb1a044e5cedc0ebda23ae0566565c336f9ceb5 Mon Sep 17 00:00:00 2001 From: David Majnemer Date: Fri, 7 Nov 2014 07:26:38 +0000 Subject: CodeGen, Itanium: Properly dllimport RTTI data We would blindly assume that RTTI data should have the same linkage as the vtable because we didn't think the RTTI data was external. This oversight stemmed because we didn't take dllimport into account. This fixes PR21512. llvm-svn: 221511 --- clang/test/CodeGenCXX/dllimport-rtti.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'clang/test/CodeGenCXX/dllimport-rtti.cpp') diff --git a/clang/test/CodeGenCXX/dllimport-rtti.cpp b/clang/test/CodeGenCXX/dllimport-rtti.cpp index 7ed7dadfe40..b5a5d543d6e 100644 --- a/clang/test/CodeGenCXX/dllimport-rtti.cpp +++ b/clang/test/CodeGenCXX/dllimport-rtti.cpp @@ -1,13 +1,17 @@ -// RUN: %clang_cc1 -triple i686-windows-msvc -emit-llvm -std=c++1y -O1 -disable-llvm-optzns -o - %s | FileCheck %s +// RUN: %clang_cc1 -triple i686-windows-msvc -emit-llvm -std=c++1y -O1 -disable-llvm-optzns -o - %s | FileCheck %s --check-prefix=MSVC +// RUN: %clang_cc1 -triple i686-windows-gnu -emit-llvm -std=c++1y -O1 -disable-llvm-optzns -o - %s | FileCheck %s --check-prefix=GNU struct __declspec(dllimport) S { - virtual void f(); + virtual void f() {} } s; -// CHECK-DAG: @"\01??_7S@@6B@" = available_externally dllimport -// CHECK-DAG: @"\01??_R0?AUS@@@8" = linkonce_odr -// CHECK-DAG: @"\01??_R1A@?0A@EA@S@@8" = linkonce_odr -// CHECK-DAG: @"\01??_R2S@@8" = linkonce_odr -// CHECK-DAG: @"\01??_R3S@@8" = linkonce_odr +// MSVC-DAG: @"\01??_7S@@6B@" = available_externally dllimport +// MSVC-DAG: @"\01??_R0?AUS@@@8" = linkonce_odr +// MSVC-DAG: @"\01??_R1A@?0A@EA@S@@8" = linkonce_odr +// MSVC-DAG: @"\01??_R2S@@8" = linkonce_odr +// MSVC-DAG: @"\01??_R3S@@8" = linkonce_odr + +// GNU-DAG: @_ZTV1S = available_externally dllimport +// GNU-DAG: @_ZTI1S = external dllimport struct U : S { } u; -- cgit v1.2.3