From 22ee737ae78aaf1c71f55a19618ab3f39305c57a Mon Sep 17 00:00:00 2001 From: Samuel Antao Date: Tue, 19 Jul 2016 00:01:12 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@275931 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Driver/Tools.cpp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/lib/Driver/Tools.cpp b/lib/Driver/Tools.cpp index 5bea22d771..1c9527d67c 100644 --- a/lib/Driver/Tools.cpp +++ b/lib/Driver/Tools.cpp @@ -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()->AddClangSystemIncludeArgs( + Args, CmdArgs); + else if (JA.isDeviceOffloading(Action::OFK_Cuda)) + C.getSingleOffloadToolChain()->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); -- 2.40.0