]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/CodeGenCXX/windows-itanium-type-info.cpp
Vendor import of clang trunk r290819:
[FreeBSD/FreeBSD.git] / test / CodeGenCXX / windows-itanium-type-info.cpp
1 // RUN: %clang_cc1 -triple i686-windows-itanium -fdeclspec -fcxx-exceptions -emit-llvm %s -o - | FileCheck %s
2 // RUN: %clang_cc1 -triple i686-windows-itanium -fdeclspec -fcxx-exceptions -fno-rtti -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-EH-IMPORT
3
4 namespace __cxxabiv1 {
5 class __declspec(dllexport) __fundamental_type_info {
6 public:
7   virtual ~__fundamental_type_info();
8 };
9
10 __fundamental_type_info::~__fundamental_type_info() {}
11 }
12
13 struct __declspec(dllimport) base {
14   virtual void method();
15 };
16 struct __declspec(dllexport) derived : base {
17   virtual ~derived();
18 };
19 derived::~derived() {
20   method();
21 }
22
23 void f() {
24   throw base();
25 }
26
27 // CHECK-DAG: @_ZTIi = dllexport constant
28 // CHECK-DAG: @_ZTSi = dllexport constant
29
30 // CHECK-DAG: @_ZTI7derived = dllexport constant
31 // CHECK-DAG: @_ZTS7derived = dllexport constant
32 // CHECK-DAG: @_ZTV7derived = dllexport unnamed_addr constant
33
34 // CHECK-DAG: @_ZTI4base = external dllimport constant
35 // CHECK-DAG: @_ZTS4base = external dllimport constant
36 // CHECK-NOT: @_ZTV4base = external dllimport constant
37
38 // CHECK-EH-IMPORT: @_ZTS4base = linkonce_odr constant
39 // CHECK-EH-IMPORT: @_ZTI4base = linkonce_odr constant
40