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 @@ -813,7 +813,9 @@ ArgStringList &CmdArgs) { // Enable -frtlib-add-rpath by default for the case of VE. const bool IsVE = TC.getTriple().isVE(); - bool DefaultValue = IsVE; + const bool IsOpenMP = (TC.getDriver().getOpenMPRuntime(Args) + != Driver::OMPRT_Unknown); + bool DefaultValue = IsVE || IsOpenMP ; if (!Args.hasFlag(options::OPT_frtlib_add_rpath, options::OPT_fno_rtlib_add_rpath, DefaultValue)) return; @@ -822,6 +824,16 @@ if (TC.getVFS().exists(CandidateRPath)) { CmdArgs.push_back("-rpath"); CmdArgs.push_back(Args.MakeArgString(CandidateRPath)); + } else { + if (IsOpenMP) { + SmallString<256> TopLibPath = + llvm::sys::path::parent_path(TC.getDriver().Dir); + llvm::sys::path::append(TopLibPath, "lib"); + if (TC.getVFS().exists(TopLibPath)) { + CmdArgs.push_back("-rpath"); + CmdArgs.push_back(Args.MakeArgString(TopLibPath)); + } + } } }