From eb899b63e63605f45d1c66b1280f1be94f3ce221 Mon Sep 17 00:00:00 2001 From: Ron Lieberman Date: Mon, 25 Nov 2019 20:21:31 -0600 Subject: [PATCH] Add incldue path of AOMP/include for fortran offload to find mod files --- clang/lib/Driver/ToolChains/HIP.cpp | 41 +++++++++++++++++++++++++++++ clang/lib/Driver/ToolChains/HIP.h | 3 +++ 2 files changed, 44 insertions(+) diff --git a/clang/lib/Driver/ToolChains/HIP.cpp b/clang/lib/Driver/ToolChains/HIP.cpp index 68e7d1b59099f3..d29bfde536c2be 100644 --- a/clang/lib/Driver/ToolChains/HIP.cpp +++ b/clang/lib/Driver/ToolChains/HIP.cpp @@ -575,6 +575,47 @@ void HIPToolChain::AddClangSystemIncludeArgs(const ArgList &DriverArgs, CC1Args.push_back(DriverArgs.MakeArgString(P)); } +/// Convert path list to Fortran frontend argument +static void AddFlangSysIncludeArg(const ArgList &DriverArgs, + ArgStringList &Flang1args, + ToolChain::path_list IncludePathList) { + std::string ArgValue; // Path argument value + + // Make up argument value consisting of paths separated by colons + bool first = true; + for (auto P : IncludePathList) { + if (first) { + first = false; + } else { + ArgValue += ":"; + } + ArgValue += P; + } + + // Add the argument + Flang1args.push_back("-stdinc"); + Flang1args.push_back(DriverArgs.MakeArgString(ArgValue)); +} + +/// Currently only adding include dir from install directory +void HIPToolChain::AddFlangSystemIncludeArgs(const ArgList &DriverArgs, + ArgStringList &Flang1args) const { + path_list IncludePathList; + const Driver &D = getDriver(); + + if (DriverArgs.hasArg(options::OPT_nostdinc)) + return; + + { + SmallString<128> P(D.InstalledDir); + llvm::sys::path::append(P, "../include"); + IncludePathList.push_back(P.str()); + } + + AddFlangSysIncludeArg(DriverArgs, Flang1args, IncludePathList); + return; +} + void HIPToolChain::AddClangCXXStdlibIncludeArgs(const ArgList &Args, ArgStringList &CC1Args) const { HostTC.AddClangCXXStdlibIncludeArgs(Args, CC1Args); diff --git a/clang/lib/Driver/ToolChains/HIP.h b/clang/lib/Driver/ToolChains/HIP.h index fbfdfd3c53da50..a99d3c2d0569de 100644 --- a/clang/lib/Driver/ToolChains/HIP.h +++ b/clang/lib/Driver/ToolChains/HIP.h @@ -112,6 +112,9 @@ class LLVM_LIBRARY_VISIBILITY HIPToolChain : public ToolChain { void AddClangCXXStdlibIncludeArgs( const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CC1Args) const override; + void + AddFlangSystemIncludeArgs(const llvm::opt::ArgList &DriverArgs, + llvm::opt::ArgStringList &FlangArgs) const override; void AddIAMCUIncludeArgs(const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args) const override;