aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/Driver/Tools.cpp
diff options
context:
space:
mode:
authorDan Gohman <dan433584@gmail.com>2016-01-07 01:00:21 +0000
committerDan Gohman <dan433584@gmail.com>2016-01-07 01:00:21 +0000
commite3d71e14d756d78f9e2538f2e530aa7c051541cd (patch)
tree48890fc1914107f86fc19e121551acc756e17f3d /clang/lib/Driver/Tools.cpp
parenta5b804be6113c23bbfd4629c2548a75d353a5a62 (diff)
downloadllvm-e3d71e14d756d78f9e2538f2e530aa7c051541cd.zip
llvm-e3d71e14d756d78f9e2538f2e530aa7c051541cd.tar.gz
llvm-e3d71e14d756d78f9e2538f2e530aa7c051541cd.tar.bz2
[WebAssembly] Enable -fvisibility=hidden by default.
This, along with many things in the WebAssembly target, is experimental. Feedback is welcome. llvm-svn: 257006
Diffstat (limited to 'clang/lib/Driver/Tools.cpp')
-rw-r--r--clang/lib/Driver/Tools.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/clang/lib/Driver/Tools.cpp b/clang/lib/Driver/Tools.cpp
index 1584991..49d45ae 100644
--- a/clang/lib/Driver/Tools.cpp
+++ b/clang/lib/Driver/Tools.cpp
@@ -2069,6 +2069,16 @@ void Clang::AddHexagonTargetArgs(const ArgList &Args,
CmdArgs.push_back("-machine-sink-split=0");
}
+void Clang::AddWebAssemblyTargetArgs(const ArgList &Args,
+ ArgStringList &CmdArgs) const {
+ // Default to "hidden" visibility.
+ if (!Args.hasArg(options::OPT_fvisibility_EQ,
+ options::OPT_fvisibility_ms_compat)) {
+ CmdArgs.push_back("-fvisibility");
+ CmdArgs.push_back("hidden");
+ }
+}
+
// Decode AArch64 features from string like +[no]featureA+[no]featureB+...
static bool DecodeAArch64Features(const Driver &D, StringRef text,
std::vector<const char *> &Features) {
@@ -4015,6 +4025,11 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
case llvm::Triple::hexagon:
AddHexagonTargetArgs(Args, CmdArgs);
break;
+
+ case llvm::Triple::wasm32:
+ case llvm::Triple::wasm64:
+ AddWebAssemblyTargetArgs(Args, CmdArgs);
+ break;
}
// The 'g' groups options involve a somewhat intricate sequence of decisions