Author: Fangrui Song
Date: 2023-11-12T21:29:03-08:00
New Revision: abeffc9fd6b0cd8f6f25f854e97cd73310c8a7e5

URL: 
https://github.com/llvm/llvm-project/commit/abeffc9fd6b0cd8f6f25f854e97cd73310c8a7e5
DIFF: 
https://github.com/llvm/llvm-project/commit/abeffc9fd6b0cd8f6f25f854e97cd73310c8a7e5.diff

LOG: [test] Test #pragma GCC visibility interaction with explicit instantiations

Added: 
    

Modified: 
    clang/test/CodeGenCXX/visibility.cpp

Removed: 
    


################################################################################
diff  --git a/clang/test/CodeGenCXX/visibility.cpp 
b/clang/test/CodeGenCXX/visibility.cpp
index 903db66a137afb9..b017bc8b52d5a5d 100644
--- a/clang/test/CodeGenCXX/visibility.cpp
+++ b/clang/test/CodeGenCXX/visibility.cpp
@@ -1007,8 +1007,8 @@ namespace test51 {
   // a default symbol.
 
   struct HIDDEN foo {};
-  DEFAULT foo da, db, dc, dd;
-  HIDDEN foo ha, hb, hc, hd;
+  DEFAULT foo da, db, dc, dd, de, df;
+  HIDDEN foo ha, hb, hc, hd, he, hf;
   template<foo *z>
   void DEFAULT zed() {
   }
@@ -1036,14 +1036,26 @@ namespace test51 {
   // CHECK-LABEL: define weak_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2hcEEEEEvv(
   // CHECK-HIDDEN-LABEL: define weak_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2hcEEEEEvv(
 
+#pragma GCC visibility push(hidden)
+  template void zed<&dd>();
+  template void zed<&hd>();
+  template void DEFAULT zed<&he>();
+#pragma GCC visibility pop
+  // CHECK-LABEL: define weak_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2ddEEEEEvv(
+  // CHECK-LABEL: define weak_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2hdEEEEEvv(
+  // CHECK-LABEL: define weak_odr void @_ZN6test513zedIXadL_ZNS_2heEEEEEvv(
+  // CHECK-HIDDEN-LABEL: define weak_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2ddEEEEEvv(
+  // CHECK-HIDDEN-LABEL: define weak_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2hdEEEEEvv(
+  // CHECK-HIDDEN-LABEL: define weak_odr void 
@_ZN6test513zedIXadL_ZNS_2heEEEEEvv(
+
   void use() {
-    zed<&dd>();
-    zed<&hd>();
+    zed<&df>();
+    zed<&hf>();
   }
-  // CHECK-LABEL: define linkonce_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2ddEEEEEvv(
-  // CHECK-LABEL: define linkonce_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2hdEEEEEvv(
-  // CHECK-HIDDEN-LABEL: define linkonce_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2ddEEEEEvv(
-  // CHECK-HIDDEN-LABEL: define linkonce_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2hdEEEEEvv(
+  // CHECK-LABEL: define linkonce_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2dfEEEEEvv(
+  // CHECK-LABEL: define linkonce_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2hfEEEEEvv(
+  // CHECK-HIDDEN-LABEL: define linkonce_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2dfEEEEEvv(
+  // CHECK-HIDDEN-LABEL: define linkonce_odr hidden void 
@_ZN6test513zedIXadL_ZNS_2hfEEEEEvv(
 }
 
 namespace test52 {


        
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to