diff options
author | David Majnemer <david.majnemer@gmail.com> | 2016-02-10 17:40:47 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2016-02-10 17:40:47 +0000 |
commit | 1b2d0b4637a9b808aee88ba7a8b99fe446ed4c07 (patch) | |
tree | a9c04af507b8c2c9c1934a3a30be2c61c43b16be /clang/test/CodeGenCXX/dllimport-rtti.cpp | |
parent | 932b4cbf5d4b629c2796aeb9460b988a555a85e0 (diff) | |
download | bcm5719-llvm-1b2d0b4637a9b808aee88ba7a8b99fe446ed4c07.tar.gz bcm5719-llvm-1b2d0b4637a9b808aee88ba7a8b99fe446ed4c07.zip |
[MS ABI] Never reference dllimport'd vtables
Referencing a dllimported vtable is impossible in a constexpr
constructor. It would be friendlier to C++ programmers if we
synthesized a copy of the vftable which referenced imported virtual
functions. This would let us initialize the object in a way which
preserves both the intent to import functionality from another DLL while
also making constexpr work.
Differential Revision: http://reviews.llvm.org/D17061
llvm-svn: 260388
Diffstat (limited to 'clang/test/CodeGenCXX/dllimport-rtti.cpp')
-rw-r--r-- | clang/test/CodeGenCXX/dllimport-rtti.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/clang/test/CodeGenCXX/dllimport-rtti.cpp b/clang/test/CodeGenCXX/dllimport-rtti.cpp index 071ce278a5b..4baee50fcff 100644 --- a/clang/test/CodeGenCXX/dllimport-rtti.cpp +++ b/clang/test/CodeGenCXX/dllimport-rtti.cpp @@ -4,7 +4,8 @@ struct __declspec(dllimport) S { virtual void f() {} } s; -// MSVC-DAG: @"\01??_7S@@6B@" = available_externally dllimport +// MSVC: [[VF_S:.*]] = private unnamed_addr constant [2 x i8*] +// MSVC-DAG: @"\01??_SS@@6B@" = unnamed_addr alias i8*, getelementptr inbounds ([2 x i8*], [2 x i8*]* [[VF_S]], i32 0, i32 1) // 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 |