[clang] 5024d3a - Revert "[Clang] Add the ability to map DLL storage class to visibility"

Ben Dunbobbin via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 2 09:34:05 PST 2020


Author: Ben Dunbobbin
Date: 2020-11-02T17:33:54Z
New Revision: 5024d3aa1855d4c17c7e875048d5ad20b8b2d8ce

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

LOG: Revert "[Clang] Add the ability to map DLL storage class to visibility"

This reverts commit 415f7ee8836944942d8beb70e982e95a312866a7.

The added tests were failing on the build bots!

Added: 
    

Modified: 
    clang/include/clang/Basic/LangOptions.def
    clang/include/clang/Driver/Options.td
    clang/lib/CodeGen/CodeGenModule.cpp
    clang/lib/Driver/ToolChains/Clang.cpp
    clang/lib/Driver/ToolChains/PS4CPU.cpp
    clang/lib/Frontend/CompilerInvocation.cpp

Removed: 
    clang/test/CodeGenCXX/visibility-dllstorageclass.cpp
    clang/test/Driver/ps4-visibility-dllstorageclass.c
    clang/test/Driver/visibility-dllstorageclass.c


################################################################################
diff  --git a/clang/include/clang/Basic/LangOptions.def b/clang/include/clang/Basic/LangOptions.def
index 1d203f8489eb..d711d66784a4 100644
--- a/clang/include/clang/Basic/LangOptions.def
+++ b/clang/include/clang/Basic/LangOptions.def
@@ -307,16 +307,6 @@ ENUM_LANGOPT(TypeVisibilityMode, Visibility, 3, DefaultVisibility,
              "default visibility for types [-ftype-visibility]")
 LANGOPT(SetVisibilityForExternDecls, 1, 0,
         "apply global symbol visibility to external declarations without an explicit visibility")
-LANGOPT(VisibilityFromDLLStorageClass, 1, 0,
-        "set the visiblity of globals from their DLL storage class [-fvisibility-from-dllstorageclass]")
-ENUM_LANGOPT(DLLExportVisibility, Visibility, 3, DefaultVisibility,
-             "visibility for functions and variables with dllexport annotations [-fvisibility-from-dllstorageclass]")
-ENUM_LANGOPT(NoDLLStorageClassVisibility, Visibility, 3, HiddenVisibility,
-             "visibility for functions and variables without an explicit DLL storage class [-fvisibility-from-dllstorageclass]")
-ENUM_LANGOPT(ExternDeclDLLImportVisibility, Visibility, 3, DefaultVisibility,
-             "visibility for external declarations with dllimport annotations [-fvisibility-from-dllstorageclass]")
-ENUM_LANGOPT(ExternDeclNoDLLStorageClassVisibility, Visibility, 3, HiddenVisibility,
-             "visibility for external declarations without an explicit DLL storage class [-fvisibility-from-dllstorageclass]")
 BENIGN_LANGOPT(SemanticInterposition        , 1, 0, "semantic interposition")
 BENIGN_LANGOPT(ExplicitNoSemanticInterposition, 1, 0, "explicitly no semantic interposition")
 ENUM_LANGOPT(StackProtector, StackProtectorMode, 2, SSPOff,

diff  --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td
index 33cfa72c0888..057c2606c69d 100644
--- a/clang/include/clang/Driver/Options.td
+++ b/clang/include/clang/Driver/Options.td
@@ -1973,15 +1973,6 @@ def fno_var_tracking : Flag<["-"], "fno-var-tracking">, Group<clang_ignored_f_Gr
 def fverbose_asm : Flag<["-"], "fverbose-asm">, Group<f_Group>,
   HelpText<"Generate verbose assembly output">;
 def dA : Flag<["-"], "dA">, Alias<fverbose_asm>;
-defm visibility_from_dllstorageclass : OptInFFlag<"visibility-from-dllstorageclass", "Set the visiblity of symbols in the generated code from their DLL storage class">;
-def fvisibility_dllexport_EQ : Joined<["-"], "fvisibility-dllexport=">, Group<f_Group>, Flags<[CC1Option]>,
-  HelpText<"The visibility for dllexport defintions [-fvisibility-from-dllstorageclass]">, Values<"hidden,protected,default">;
-def fvisibility_nodllstorageclass_EQ : Joined<["-"], "fvisibility-nodllstorageclass=">, Group<f_Group>, Flags<[CC1Option]>,
-  HelpText<"The visibility for defintiions without an explicit DLL export class [-fvisibility-from-dllstorageclass]">, Values<"hidden,protected,default">;
-def fvisibility_externs_dllimport_EQ : Joined<["-"], "fvisibility-externs-dllimport=">, Group<f_Group>, Flags<[CC1Option]>,
-  HelpText<"The visibility for dllimport external declarations [-fvisibility-from-dllstorageclass]">, Values<"hidden,protected,default">;
-def fvisibility_externs_nodllstorageclass_EQ : Joined<["-"], "fvisibility-externs-nodllstorageclass=">, Group<f_Group>, Flags<[CC1Option]>,
-  HelpText<"The visibility for external declarations without an explicit DLL dllstorageclass [-fvisibility-from-dllstorageclass]">, Values<"hidden,protected,default">;
 def fvisibility_EQ : Joined<["-"], "fvisibility=">, Group<f_Group>,
   HelpText<"Set the default symbol visibility for all global declarations">, Values<"hidden,default">;
 def fvisibility_inlines_hidden : Flag<["-"], "fvisibility-inlines-hidden">, Group<f_Group>,

diff  --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp
index 9512b350d9fd..66a3c57b9112 100644
--- a/clang/lib/CodeGen/CodeGenModule.cpp
+++ b/clang/lib/CodeGen/CodeGenModule.cpp
@@ -401,41 +401,6 @@ void InstrProfStats::reportDiagnostics(DiagnosticsEngine &Diags,
   }
 }
 
-static void setVisibilityFromDLLStorageClass(const clang::LangOptions &LO,
-                                             llvm::Module &M) {
-  if (!LO.VisibilityFromDLLStorageClass)
-    return;
-
-  llvm::GlobalValue::VisibilityTypes DLLExportVisibility =
-      CodeGenModule::GetLLVMVisibility(LO.getDLLExportVisibility());
-  llvm::GlobalValue::VisibilityTypes NoDLLStorageClassVisibility =
-      CodeGenModule::GetLLVMVisibility(LO.getNoDLLStorageClassVisibility());
-  llvm::GlobalValue::VisibilityTypes ExternDeclDLLImportVisibility =
-      CodeGenModule::GetLLVMVisibility(LO.getExternDeclDLLImportVisibility());
-  llvm::GlobalValue::VisibilityTypes ExternDeclNoDLLStorageClassVisibility =
-      CodeGenModule::GetLLVMVisibility(
-          LO.getExternDeclNoDLLStorageClassVisibility());
-
-  for (llvm::GlobalValue &GV : M.global_values()) {
-    if (GV.hasAppendingLinkage() || GV.hasLocalLinkage())
-      return;
-
-    if (GV.isDeclarationForLinker()) {
-      GV.setVisibility(GV.getDLLStorageClass() ==
-                               llvm::GlobalValue::DLLImportStorageClass
-                           ? ExternDeclDLLImportVisibility
-                           : ExternDeclNoDLLStorageClassVisibility);
-    } else {
-      GV.setVisibility(GV.getDLLStorageClass() ==
-                               llvm::GlobalValue::DLLExportStorageClass
-                           ? DLLExportVisibility
-                           : NoDLLStorageClassVisibility);
-    }
-
-    GV.setDLLStorageClass(llvm::GlobalValue::DefaultStorageClass);
-  }
-}
-
 void CodeGenModule::Release() {
   EmitDeferred();
   EmitVTablesOpportunistically();
@@ -723,12 +688,6 @@ void CodeGenModule::Release() {
   getTargetCodeGenInfo().emitTargetMetadata(*this, MangledDeclNames);
 
   EmitBackendOptionsMetadata(getCodeGenOpts());
-
-  // Set visibility from DLL export class
-  // We do this at the end of LLVM IR generation; after any operation
-  // that might affect the DLL storage class or the visibility, and
-  // before anything that might act on these.
-  setVisibilityFromDLLStorageClass(LangOpts, getModule());
 }
 
 void CodeGenModule::EmitOpenCLMetadata() {

diff  --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp
index 011e7dfe21c2..53d270917ed3 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -5317,21 +5317,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
     }
   }
 
-  if (!RawTriple.isPS4())
-    if (const Arg *A =
-            Args.getLastArg(options::OPT_fvisibility_from_dllstorageclass,
-                            options::OPT_fno_visibility_from_dllstorageclass)) {
-      if (A->getOption().matches(
-              options::OPT_fvisibility_from_dllstorageclass)) {
-        CmdArgs.push_back("-fvisibility-from-dllstorageclass");
-        Args.AddLastArg(CmdArgs, options::OPT_fvisibility_dllexport_EQ);
-        Args.AddLastArg(CmdArgs, options::OPT_fvisibility_nodllstorageclass_EQ);
-        Args.AddLastArg(CmdArgs, options::OPT_fvisibility_externs_dllimport_EQ);
-        Args.AddLastArg(CmdArgs,
-                        options::OPT_fvisibility_externs_nodllstorageclass_EQ);
-      }
-    }
-
   if (const Arg *A = Args.getLastArg(options::OPT_mignore_xcoff_visibility)) {
     if (Triple.isOSAIX())
       CmdArgs.push_back("-mignore-xcoff-visibility");

diff  --git a/clang/lib/Driver/ToolChains/PS4CPU.cpp b/clang/lib/Driver/ToolChains/PS4CPU.cpp
index 383b0c50d410..fab1b2ac62df 100644
--- a/clang/lib/Driver/ToolChains/PS4CPU.cpp
+++ b/clang/lib/Driver/ToolChains/PS4CPU.cpp
@@ -239,8 +239,9 @@ SanitizerMask toolchains::PS4CPU::getSupportedSanitizers() const {
 }
 
 void toolchains::PS4CPU::addClangTargetOptions(
-    const ArgList &DriverArgs, ArgStringList &CC1Args,
-    Action::OffloadKind DeviceOffloadingKind) const {
+      const ArgList &DriverArgs,
+      ArgStringList &CC1Args,
+      Action::OffloadKind DeviceOffloadingKind) const {
   // PS4 does not use init arrays.
   if (DriverArgs.hasArg(options::OPT_fuse_init_array)) {
     Arg *A = DriverArgs.getLastArg(options::OPT_fuse_init_array);
@@ -249,36 +250,4 @@ void toolchains::PS4CPU::addClangTargetOptions(
   }
 
   CC1Args.push_back("-fno-use-init-array");
-
-  const Arg *A =
-      DriverArgs.getLastArg(options::OPT_fvisibility_from_dllstorageclass,
-                            options::OPT_fno_visibility_from_dllstorageclass);
-  if (!A ||
-      A->getOption().matches(options::OPT_fvisibility_from_dllstorageclass)) {
-    CC1Args.push_back("-fvisibility-from-dllstorageclass");
-
-    if (DriverArgs.hasArg(options::OPT_fvisibility_dllexport_EQ))
-      DriverArgs.AddLastArg(CC1Args, options::OPT_fvisibility_dllexport_EQ);
-    else
-      CC1Args.push_back("-fvisibility-dllexport=protected");
-
-    if (DriverArgs.hasArg(options::OPT_fvisibility_nodllstorageclass_EQ))
-      DriverArgs.AddLastArg(CC1Args,
-                            options::OPT_fvisibility_nodllstorageclass_EQ);
-    else
-      CC1Args.push_back("-fvisibility-nodllstorageclass=hidden");
-
-    if (DriverArgs.hasArg(options::OPT_fvisibility_externs_dllimport_EQ))
-      DriverArgs.AddLastArg(CC1Args,
-                            options::OPT_fvisibility_externs_dllimport_EQ);
-    else
-      CC1Args.push_back("-fvisibility-externs-dllimport=default");
-
-    if (DriverArgs.hasArg(
-            options::OPT_fvisibility_externs_nodllstorageclass_EQ))
-      DriverArgs.AddLastArg(
-          CC1Args, options::OPT_fvisibility_externs_nodllstorageclass_EQ);
-    else
-      CC1Args.push_back("-fvisibility-externs-nodllstorageclass=default");
-  }
 }

diff  --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp
index 7b8554c0fe49..3c0ba31527f7 100644
--- a/clang/lib/Frontend/CompilerInvocation.cpp
+++ b/clang/lib/Frontend/CompilerInvocation.cpp
@@ -2814,38 +2814,6 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
   if (Args.hasArg(OPT_fapply_global_visibility_to_externs))
     Opts.SetVisibilityForExternDecls = 1;
 
-  if (Args.hasArg(OPT_fvisibility_from_dllstorageclass)) {
-    Opts.VisibilityFromDLLStorageClass = 1;
-
-    // Translate dllexport defintions to default visibility, by default.
-    if (Arg *O = Args.getLastArg(OPT_fvisibility_dllexport_EQ))
-      Opts.setDLLExportVisibility(parseVisibility(O, Args, Diags));
-    else
-      Opts.setDLLExportVisibility(DefaultVisibility);
-
-    // Translate defintions without an explict DLL storage class to hidden
-    // visibility, by default.
-    if (Arg *O = Args.getLastArg(OPT_fvisibility_nodllstorageclass_EQ))
-      Opts.setNoDLLStorageClassVisibility(parseVisibility(O, Args, Diags));
-    else
-      Opts.setNoDLLStorageClassVisibility(HiddenVisibility);
-
-    // Translate dllimport external declarations to default visibility, by
-    // default.
-    if (Arg *O = Args.getLastArg(OPT_fvisibility_externs_dllimport_EQ))
-      Opts.setExternDeclDLLImportVisibility(parseVisibility(O, Args, Diags));
-    else
-      Opts.setExternDeclDLLImportVisibility(DefaultVisibility);
-
-    // Translate external declarations without an explicit DLL storage class
-    // to hidden visibility, by default.
-    if (Arg *O = Args.getLastArg(OPT_fvisibility_externs_nodllstorageclass_EQ))
-      Opts.setExternDeclNoDLLStorageClassVisibility(
-          parseVisibility(O, Args, Diags));
-    else
-      Opts.setExternDeclNoDLLStorageClassVisibility(HiddenVisibility);
-  }
-
   if (Args.hasArg(OPT_ftrapv)) {
     Opts.setSignedOverflowBehavior(LangOptions::SOB_Trapping);
     // Set the handler, if one is specified.

diff  --git a/clang/test/CodeGenCXX/visibility-dllstorageclass.cpp b/clang/test/CodeGenCXX/visibility-dllstorageclass.cpp
deleted file mode 100644
index f090ccb3b099..000000000000
--- a/clang/test/CodeGenCXX/visibility-dllstorageclass.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-// REQUIRES: x86-registered-target
-
-// Test that -fvisibility-from-dllstorageclass maps DLL storage class to visibility
-// and that it overrides the effect of visibility options and annotations.
-
-// RUN: %clang_cc1 -triple x86_64-unknown-windows-itanium -fdeclspec \
-// RUN:     -fvisibility hidden \
-// RUN:     -fvisibility-from-dllstorageclass \
-// RUN:     -x c++ %s -S -emit-llvm -o - | \
-// RUN:   FileCheck %s --check-prefixes=DEFAULT
-
-// RUN: %clang_cc1 -triple x86_64-unknown-windows-itanium -fdeclspec \
-// RUN:     -fvisibility hidden \
-// RUN:     -fvisibility-from-dllstorageclass \
-// RUN:     -fvisibility-dllexport=hidden \
-// RUN:     -fvisibility-nodllstorageclass=protected \
-// RUN:     -fvisibility-externs-dllimport=hidden \
-// RUN:     -fvisibility-externs-nodllstorageclass=protected \
-// RUN:     -x c++  %s -S -emit-llvm -o - | \
-// RUN:   FileCheck %s --check-prefixes=EXPLICIT
-
-// Function
-void f() {}
-void __declspec(dllexport) exported_f() {}
-// DEFAULT-DAG: define hidden void @_Z1fv()
-// DEFAULT-DAG: define dso_local  void @_Z10exported_fv()
-// EXPLICIT-DAG: define protected void @_Z1fv()
-// EXPLICIT-DAG: define hidden void @_Z10exported_fv()
-
-// Variable
-int d = 123;
-__declspec(dllexport) int exported_d = 123;
-// DEFAULT-DAG: @d = hidden global
-// DEFAULT-DAG: @exported_d = dso_local global
-// EXPLICIT-DAG: @d = protected global
-// EXPLICIT-DAG: @exported_d = hidden global
-
-// Alias
-extern "C" void aliased() {}
-void a() __attribute__((alias("aliased")));
-void __declspec(dllexport) a_exported() __attribute__((alias("aliased")));
-// DEFAULT-DAG: @_Z1av = hidden alias
-// DEFAULT-DAG: @_Z10a_exportedv = dso_local alias
-// EXPLICIT-DAG: @_Z1av = protected alias
-// EXPLICIT-DAG: @_Z10a_exportedv = hidden alias
-
-// Declaration
-extern void e();
-extern void __declspec(dllimport) imported_e();
-void use_declarations(){e(); imported_e();}
-// DEFAULT-DAG: declare hidden void @_Z1ev()
-// DEFAULT-DAG: declare void @_Z10imported_ev()
-// EXPLICIT-DAG: declare protected void @_Z1ev()
-// EXPLICIT-DAG: declare hidden void @_Z10imported_ev()
-
-// Show that -fvisibility-from-dllstorageclass overrides the effect of visibility annotations.
-
-struct __attribute__((type_visibility("protected"))) t {
-  virtual void foo();
-};
-void t::foo() {}
-// DEFAULT-DAG: @_ZTV1t = hidden unnamed_addr constant
-
-int v __attribute__ ((__visibility__ ("protected"))) = 123;
-// DEFAULT-DAG: @v = hidden global
-
-#pragma GCC visibility push(protected)
-int p = 345;
-#pragma GCC visibility pop
-// DEFAULT-DAG: @p = hidden global

diff  --git a/clang/test/Driver/ps4-visibility-dllstorageclass.c b/clang/test/Driver/ps4-visibility-dllstorageclass.c
deleted file mode 100644
index 412024d4e5a9..000000000000
--- a/clang/test/Driver/ps4-visibility-dllstorageclass.c
+++ /dev/null
@@ -1,128 +0,0 @@
-// Check behaviour of -fvisibility-from-dllstorageclass options for PS4
-
-// RUN: %clang -### -target x86_64-scei-ps4 %s -Werror -o - 2>&1 | \
-// RUN:   FileCheck %s -check-prefixes=DEFAULTS,DEFAULTS1 \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass
-
-// RUN: %clang -### -target x86_64-scei-ps4 \
-// RUN:     -fno-visibility-from-dllstorageclass \
-// RUN:     -fvisibility-from-dllstorageclass \
-// RUN:     -Werror \
-// RUN:     %s -o - 2>&1 | \
-// RUN:   FileCheck %s -check-prefixes=DEFAULTS,DEFAULTS2 \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass
-
-// DEFAULTS:      "-fvisibility-from-dllstorageclass"
-// DEFAULTS-SAME: "-fvisibility-dllexport=protected"
-// DEFAULTS-SAME: "-fvisibility-nodllstorageclass=hidden"
-// DEFAULTS-SAME: "-fvisibility-externs-dllimport=default"
-// DEFAULTS-SAME: "-fvisibility-externs-nodllstorageclass=default"
-
-// RUN: %clang -### -target x86_64-scei-ps4 \
-// RUN:     -fvisibility-from-dllstorageclass \
-// RUN:     -fvisibility-dllexport=hidden \
-// RUN:     -fvisibility-nodllstorageclass=protected \
-// RUN:     -fvisibility-externs-dllimport=hidden \
-// RUN:     -fvisibility-externs-nodllstorageclass=protected \
-// RUN:     -fno-visibility-from-dllstorageclass \
-// RUN:     %s -o - 2>&1 | \
-// RUN:   FileCheck %s -check-prefix=UNUSED \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass \
-// RUN:     --implicit-check-not=warning:
-
-// UNUSED:      clang: warning: argument unused during compilation: '-fvisibility-dllexport=hidden'
-// UNUSED-NEXT: clang: warning: argument unused during compilation: '-fvisibility-nodllstorageclass=protected'
-// UNUSED-NEXT: clang: warning: argument unused during compilation: '-fvisibility-externs-dllimport=hidden'
-// UNUSED-NEXT: clang: warning: argument unused during compilation: '-fvisibility-externs-nodllstorageclass=protected'
-
-// RUN: %clang -### -target x86_64-scei-ps4 \
-// RUN:     -fvisibility-nodllstorageclass=protected \
-// RUN:     -fvisibility-externs-dllimport=hidden \
-// RUN:     -Werror \
-// RUN:     %s -o - 2>&1 | \
-// RUN:   FileCheck %s -check-prefix=SOME \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass
-
-// SOME1:      "-fvisibility-from-dllstorageclass"
-// SOME1-SAME: "-fvisibility-dllexport=protected"
-// SOME1-SAME: "-fvisibility-nodllstorageclass=protected"
-// SOME1-SAME: "-fvisibility-externs-dllimport=hidden"
-// SOME1-SAME: "-fvisibility-externs-nodllstorageclass=default"
-
-// RUN: %clang -### -target x86_64-scei-ps4 \
-// RUN:     -fvisibility-from-dllstorageclass \
-// RUN:     -fvisibility-nodllstorageclass=protected \
-// RUN:     -fvisibility-externs-dllimport=hidden \
-// RUN:     -Werror \
-// RUN:     %s -o - 2>&1 | \
-// RUN:   FileCheck %s -check-prefix=SOME \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass
-
-// SOME:      "-fvisibility-from-dllstorageclass"
-// SOME-SAME: "-fvisibility-dllexport=protected"
-// SOME-SAME: "-fvisibility-nodllstorageclass=protected"
-// SOME-SAME: "-fvisibility-externs-dllimport=hidden"
-// SOME-SAME: "-fvisibility-externs-nodllstorageclass=default"
-
-// RUN: %clang -### -target x86_64-scei-ps4 \
-// RUN:     -fvisibility-dllexport=default \
-// RUN:     -fvisibility-dllexport=hidden \
-// RUN:     -fvisibility-nodllstorageclass=default \
-// RUN:     -fvisibility-nodllstorageclass=protected \
-// RUN:     -fvisibility-externs-dllimport=default \
-// RUN:     -fvisibility-externs-dllimport=hidden \
-// RUN:     -fvisibility-externs-nodllstorageclass=default \
-// RUN:     -fvisibility-externs-nodllstorageclass=protected \
-// RUN:     -Werror \
-// RUN:     %s -o - 2>&1 | \
-// RUN:   FileCheck %s -check-prefix=ALL \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass
-
-// RUN: %clang -### -target x86_64-scei-ps4 \
-// RUN:     -fvisibility-from-dllstorageclass \
-// RUN:     -fvisibility-dllexport=default \
-// RUN:     -fvisibility-dllexport=hidden \
-// RUN:     -fvisibility-nodllstorageclass=default \
-// RUN:     -fvisibility-nodllstorageclass=protected \
-// RUN:     -fvisibility-externs-dllimport=default \
-// RUN:     -fvisibility-externs-dllimport=hidden \
-// RUN:     -fvisibility-externs-nodllstorageclass=default \
-// RUN:     -fvisibility-externs-nodllstorageclass=protected \
-// RUN:     -Werror \
-// RUN:     %s -o - 2>&1 | \
-// RUN:   FileCheck %s -check-prefix=ALL \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass
-
-// ALL:      "-fvisibility-from-dllstorageclass"
-// ALL-SAME: "-fvisibility-dllexport=hidden"
-// ALL-SAME: "-fvisibility-nodllstorageclass=protected"
-// ALL-SAME: "-fvisibility-externs-dllimport=hidden"
-// ALL-SAME: "-fvisibility-externs-nodllstorageclass=protected"

diff  --git a/clang/test/Driver/visibility-dllstorageclass.c b/clang/test/Driver/visibility-dllstorageclass.c
deleted file mode 100644
index 1ad2e5452f23..000000000000
--- a/clang/test/Driver/visibility-dllstorageclass.c
+++ /dev/null
@@ -1,87 +0,0 @@
-// Check behaviour of -fvisibility-from-dllstorageclass options
-
-// RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \
-// RUN:     -Werror -S -### %s 2>&1 | \
-// RUN:   FileCheck %s \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass
-
-// RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \
-// RUN:     -fvisibility-from-dllstorageclass \
-// RUN:     -fno-visibility-from-dllstorageclass \
-// RUN:     -Werror -S -### %s 2>&1 | \
-// RUN:   FileCheck %s \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass
-
-// RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \
-// RUN:     -fno-visibility-from-dllstorageclass \
-// RUN:     -fvisibility-from-dllstorageclass \
-// RUN:     -Werror -S -### %s 2>&1 | \
-// RUN:   FileCheck %s --check-prefix=SET \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass
-
-// RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \
-// RUN:     -fvisibility-dllexport=hidden \
-// RUN:     -fvisibility-nodllstorageclass=protected \
-// RUN:     -fvisibility-externs-dllimport=hidden \
-// RUN:     -fvisibility-externs-nodllstorageclass=protected \
-// RUN:     -S -### %s 2>&1 | \
-// RUN:   FileCheck %s --check-prefixes=UNUSED \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass \
-// RUN:     --implicit-check-not=error: \
-// RUN:     --implicit-check-not=warning:
-
-// RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \
-// RUN:     -fno-visibility-from-dllstorageclass \
-// RUN:     -fvisibility-dllexport=hidden \
-// RUN:     -fvisibility-nodllstorageclass=protected \
-// RUN:     -fvisibility-externs-dllimport=hidden \
-// RUN:     -fvisibility-externs-nodllstorageclass=protected \
-// RUN:     -S -### %s 2>&1 | \
-// RUN:   FileCheck %s --check-prefixes=UNUSED \
-// RUN:     --implicit-check-not=-fvisibility-from-dllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-dllexport \
-// RUN:     --implicit-check-not=-fvisibility-nodllstorageclass \
-// RUN:     --implicit-check-not=-fvisibility-externs-dllimport \
-// RUN:     --implicit-check-not=-fvisibility-externs-nodllstorageclass \
-// RUN:     --implicit-check-not=error: \
-// RUN:     --implicit-check-not=warning:
-
-// UNUSED:      clang: warning: argument unused during compilation: '-fvisibility-dllexport=hidden'
-// UNUSED-NEXT: clang: warning: argument unused during compilation: '-fvisibility-nodllstorageclass=protected'
-// UNUSED-NEXT: clang: warning: argument unused during compilation: '-fvisibility-externs-dllimport=hidden'
-// UNUSED-NEXT: clang: warning: argument unused during compilation: '-fvisibility-externs-nodllstorageclass=protected'
-
-// RUN: %clang -target x86_64-unknown-windows-itanium -fdeclspec \
-// RUN:     -fvisibility-from-dllstorageclass \
-// RUN:     -fvisibility-dllexport=default \
-// RUN:     -fvisibility-dllexport=hidden \
-// RUN:     -fvisibility-nodllstorageclass=default \
-// RUN:     -fvisibility-nodllstorageclass=protected \
-// RUN:     -fvisibility-externs-dllimport=default \
-// RUN:     -fvisibility-externs-dllimport=hidden \
-// RUN:     -fvisibility-externs-nodllstorageclass=default \
-// RUN:     -fvisibility-externs-nodllstorageclass=protected \
-// RUN:     -Werror -S -### %s 2>&1 | \
-// RUN:   FileCheck %s --check-prefixes=SET,ALL
-
-// SET:      "-fvisibility-from-dllstorageclass"
-// ALL-SAME: "-fvisibility-dllexport=hidden"
-// ALL-SAME: "-fvisibility-nodllstorageclass=protected"
-// ALL-SAME: "-fvisibility-externs-dllimport=hidden"
-// ALL-SAME: "-fvisibility-externs-nodllstorageclass=protected"


        


More information about the cfe-commits mailing list