blob: 91e747ae1c15ffa290400b97d9963711f844eb99 [file] [log] [blame]
Chandler Carruth93786da2016-12-23 00:23:01 +00001// RUN: %clang_cc1 -triple i686-windows-msvc -emit-llvm -std=c++1y -fms-extensions -O1 -disable-llvm-passes -o - %s | FileCheck %s --check-prefix=MSVC
2// RUN: %clang_cc1 -triple i686-windows-gnu -emit-llvm -std=c++1y -fms-extensions -O1 -disable-llvm-passes -o - %s | FileCheck %s --check-prefix=GNU
David Majnemer93de4b12014-07-03 05:51:27 +00003
4struct __declspec(dllimport) S {
David Majnemer1fb1a042014-11-07 07:26:38 +00005 virtual void f() {}
David Majnemer93de4b12014-07-03 05:51:27 +00006} s;
Peter Collingbourne2849c4e2016-12-13 20:40:39 +00007// MSVC: [[VF_S:.*]] = private unnamed_addr constant { [2 x i8*] }
8// MSVC-DAG: @"\01??_SS@@6B@" = unnamed_addr alias i8*, getelementptr inbounds ({ [2 x i8*] }, { [2 x i8*] }* [[VF_S]], i32 0, i32 0, i32 1)
David Majnemer1fb1a042014-11-07 07:26:38 +00009// MSVC-DAG: @"\01??_R0?AUS@@@8" = linkonce_odr
10// MSVC-DAG: @"\01??_R1A@?0A@EA@S@@8" = linkonce_odr
11// MSVC-DAG: @"\01??_R2S@@8" = linkonce_odr
12// MSVC-DAG: @"\01??_R3S@@8" = linkonce_odr
13
14// GNU-DAG: @_ZTV1S = available_externally dllimport
15// GNU-DAG: @_ZTI1S = external dllimport
David Majnemer93de4b12014-07-03 05:51:27 +000016
17struct U : S {
18} u;
David Majnemerbe9022c2015-08-06 20:56:55 +000019
20struct __declspec(dllimport) V {
21 virtual void f();
22} v;
23// GNU-DAG: @_ZTV1V = available_externally dllimport
24// GNU-DAG: @_ZTS1V = linkonce_odr
25// GNU-DAG: @_ZTI1V = linkonce_odr
Reid Klecknerc2e3ba42015-08-10 19:39:01 +000026
27struct W {
28 __declspec(dllimport) virtual void f();
29 virtual void g();
30} w;
31// GNU-DAG: @_ZTV1W = linkonce_odr
32// GNU-DAG: @_ZTS1W = linkonce_odr
33// GNU-DAG: @_ZTI1W = linkonce_odr