From 7737bd9f9fb5d9cfd5717f36791036fa08d57b95 Mon Sep 17 00:00:00 2001 From: Reid Kleckner Date: Wed, 21 Oct 2015 22:01:02 +0000 Subject: [Driver] Alias -fvisibility=internal to -fvisibility=hidden The ELF symbol visibilities are: - internal: Not visibile across DSOs, cannot pass address across DSOs - hidden: Not visibile across DSOs, can be called indirectly - default: Usually visible across DSOs, possibly interposable - protected: Visible across DSOs, not interposable LLVM only supports the latter 3 visibilities. Internal visibility is in theory useful, as it allows you to assume that the caller is maintaining a PIC register for you in %ebx, or in some other pre-arranged location. As far as LLVM is concerned, this isn't worth the trouble. Using hidden visibility is always correct, so we can just do that. Resolves PR9183. llvm-svn: 250954 --- clang/lib/Frontend/CompilerInvocation.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'clang/lib/Frontend/CompilerInvocation.cpp') diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index 6e234112..7cece2b 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -1296,7 +1296,7 @@ static Visibility parseVisibility(Arg *arg, ArgList &args, StringRef value = arg->getValue(); if (value == "default") { return DefaultVisibility; - } else if (value == "hidden") { + } else if (value == "hidden" || value == "internal") { return HiddenVisibility; } else if (value == "protected") { // FIXME: diagnose if target does not support protected visibility -- cgit v1.1