Clean up handling of visibility.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69027 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp
index 31515a9..91b87f2 100644
--- a/tools/clang-cc/clang-cc.cpp
+++ b/tools/clang-cc/clang-cc.cpp
@@ -812,36 +812,23 @@
Options.setGCMode(LangOptions::HybridGC);
}
-static llvm::cl::opt<std::string>
+static llvm::cl::opt<LangOptions::VisibilityMode>
SymbolVisibility("fvisibility",
- llvm::cl::desc("Set the default visibility to the specific option"));
-
-void InitializeSymbolVisibility(LangOptions &Options) {
- if (SymbolVisibility.empty())
- return;
- std::string Visibility = SymbolVisibility;
- const char *vkind = Visibility.c_str();
- if (!strcmp(vkind, "default"))
- Options.setVisibilityMode(LangOptions::DefaultVisibility);
- else if (!strcmp(vkind, "protected"))
- Options.setVisibilityMode(LangOptions::ProtectedVisibility);
- else if (!strcmp(vkind, "hidden"))
- Options.setVisibilityMode(LangOptions::HiddenVisibility);
- else if (!strcmp(vkind, "internal"))
- Options.setVisibilityMode(LangOptions::InternalVisibility);
- else
- fprintf(stderr,
- "-fvisibility only valid for default|protected|hidden|internal\n");
-}
+ llvm::cl::desc("Set the default symbol visibility:"),
+ llvm::cl::init(LangOptions::Default),
+ llvm::cl::values(clEnumValN(LangOptions::Default, "default",
+ "Use default symbol visibility"),
+ clEnumValN(LangOptions::Hidden, "hidden",
+ "Use hidden symbol visibility"),
+ clEnumValN(LangOptions::Protected,"protected",
+ "Use protected symbol visibility"),
+ clEnumValEnd));
static llvm::cl::opt<bool>
OverflowChecking("ftrapv",
llvm::cl::desc("Trap on integer overflow"),
llvm::cl::init(false));
-void InitializeOverflowChecking(LangOptions &Options) {
- Options.OverflowChecking = OverflowChecking;
-}
//===----------------------------------------------------------------------===//
// Target Triple Processing.
//===----------------------------------------------------------------------===//
@@ -2299,8 +2286,8 @@
LangKind LK = GetLanguage(InFile);
InitializeLangOptions(LangInfo, LK);
InitializeGCMode(LangInfo);
- InitializeSymbolVisibility(LangInfo);
- InitializeOverflowChecking(LangInfo);
+ LangInfo.setVisibilityMode(SymbolVisibility);
+ LangInfo.OverflowChecking = OverflowChecking;
InitializeLanguageStandard(LangInfo, LK, Target.get());
// Process the -I options and set them in the HeaderInfo.