diff --git a/clang/lib/Driver/ToolChains/CommonArgs.cpp b/clang/lib/Driver/ToolChains/CommonArgs.cpp --- a/clang/lib/Driver/ToolChains/CommonArgs.cpp +++ b/clang/lib/Driver/ToolChains/CommonArgs.cpp @@ -791,6 +791,13 @@ /*IsLTO=*/true, PluginOptPrefix); } +static bool isSystemPath(const StringRef &path) { + return llvm::StringSwitch(path) + .Case("/usr/lib", true) + .Case("/usr/lib64", true) + .Default(false); +} + void tools::addOpenMPRuntimeSpecificRPath(const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) { @@ -802,6 +809,11 @@ SmallString<256> DefaultLibPath = llvm::sys::path::parent_path(TC.getDriver().Dir); llvm::sys::path::append(DefaultLibPath, CLANG_INSTALL_LIBDIR_BASENAME); + + // If clang is installed to a 'system path' there is no reason to add rpath. + if (isSystemPath(DefaultLibPath)) + return; + CmdArgs.push_back("-rpath"); CmdArgs.push_back(Args.MakeArgString(DefaultLibPath)); }