summaryrefslogtreecommitdiff
path: root/clang/test/CodeGen/construction-vtable-visibility.cpp
diff options
context:
space:
mode:
authorPetr Hosek <phosek@chromium.org>2019-02-11 20:13:42 +0000
committerPetr Hosek <phosek@chromium.org>2019-02-11 20:13:42 +0000
commit7c8952197b86790b31731d34d559281840916e1f (patch)
treeb4f08c91a66608be3fa1cc7199dbac1f6d6ce3fa /clang/test/CodeGen/construction-vtable-visibility.cpp
parentb31180d0de2d32851b54ab0f00718eea366b1af2 (diff)
[CodeGen] Set construction vtable visibility after creating initializer
We must only set the construction vtable visibility after we create the vtable initializer, otherwise the global value will be treated as declaration rather than definition and the visibility won't be set. Differential Revision: https://reviews.llvm.org/D58010 llvm-svn: 353742
Diffstat (limited to 'clang/test/CodeGen/construction-vtable-visibility.cpp')
-rw-r--r--clang/test/CodeGen/construction-vtable-visibility.cpp16
1 files changed, 16 insertions, 0 deletions
diff --git a/clang/test/CodeGen/construction-vtable-visibility.cpp b/clang/test/CodeGen/construction-vtable-visibility.cpp
new file mode 100644
index 000000000000..127e1b190559
--- /dev/null
+++ b/clang/test/CodeGen/construction-vtable-visibility.cpp
@@ -0,0 +1,16 @@
+// RUN: %clang_cc1 -triple x86_64-linux-unknown -fvisibility hidden -emit-llvm %s -o - | FileCheck %s
+
+struct Base {};
+
+class Parent1 : virtual public Base {};
+
+class Parent2 : virtual public Base {};
+
+class Child : public Parent1, public Parent2 {};
+
+void test() {
+ Child x;
+}
+
+// CHECK: @_ZTC5Child0_7Parent1 = linkonce_odr hidden unnamed_addr constant
+// CHECK: @_ZTC5Child8_7Parent2 = linkonce_odr hidden unnamed_addr constant