Append clang system include path for offloading tool chains.

Summary:
This patch adds clang system include path when offloading tool chains, e.g. CUDA, are used in the current compilation.

This fixes an issue detected by @rsmith in response to r275645.

Reviewers: rsmith, tra

Subscribers: rsmith, cfe-commits

Differential Revision: https://reviews.llvm.org/D22490

llvm-svn: 275931
This commit is contained in:
Samuel Antao 2016-07-19 00:01:12 +00:00
parent dab51bbd48
commit b101838244
1 changed files with 19 additions and 1 deletions

View File

@ -314,6 +314,24 @@ static void addExtraOffloadCXXStdlibIncludeArgs(Compilation &C,
// TODO: Add support for other programming models here.
}
/// Add the C include args of other offloading toolchains. If this is a host
/// job, the device toolchains are added. If this is a device job, the host
/// toolchains will be added.
static void addExtraOffloadClangSystemIncludeArgs(Compilation &C,
const JobAction &JA,
const ArgList &Args,
ArgStringList &CmdArgs) {
if (JA.isHostOffloading(Action::OFK_Cuda))
C.getSingleOffloadToolChain<Action::OFK_Cuda>()->AddClangSystemIncludeArgs(
Args, CmdArgs);
else if (JA.isDeviceOffloading(Action::OFK_Cuda))
C.getSingleOffloadToolChain<Action::OFK_Host>()->AddClangSystemIncludeArgs(
Args, CmdArgs);
// TODO: Add support for other programming models here.
}
/// Add the include args that are specific of each offloading programming model.
static void addExtraOffloadSpecificIncludeArgs(Compilation &C,
const JobAction &JA,
@ -612,7 +630,7 @@ void Clang::AddPreprocessingOptions(Compilation &C, const JobAction &JA,
// Add system include arguments for all targets but IAMCU.
if (!IsIAMCU) {
getToolChain().AddClangSystemIncludeArgs(Args, CmdArgs);
addExtraOffloadCXXStdlibIncludeArgs(C, JA, Args, CmdArgs);
addExtraOffloadClangSystemIncludeArgs(C, JA, Args, CmdArgs);
} else {
// For IAMCU add special include arguments.
getToolChain().AddIAMCUIncludeArgs(Args, CmdArgs);