Author: Alexey Bader Date: 2020-02-06T08:42:31+03:00 New Revision: 863d9752105f390b31b3d08d1980d2888c15b034
URL: https://github.com/llvm/llvm-project/commit/863d9752105f390b31b3d08d1980d2888c15b034 DIFF: https://github.com/llvm/llvm-project/commit/863d9752105f390b31b3d08d1980d2888c15b034.diff LOG: [SYCL][Driver] Add clang driver option to enable SYCL compilation mode Summary: As a first step this implementation enables compilation of the offload code. Reviewers: ABataev Subscribers: ebevhan, Anastasia, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D74048 Added: clang/test/Driver/sycl.c Modified: clang/include/clang/Driver/Options.td clang/lib/Driver/ToolChains/Clang.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td index 2c925d018da7..2dea0ac2ba5c 100644 --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -124,6 +124,9 @@ def pedantic_Group : OptionGroup<"<pedantic group>">, Group<f_Group>, def opencl_Group : OptionGroup<"<opencl group>">, Group<f_Group>, DocName<"OpenCL flags">; +def sycl_Group : OptionGroup<"<SYCL group>">, Group<f_Group>, + DocName<"SYCL flags">; + def m_Group : OptionGroup<"<m group>">, Group<CompileOnly_Group>, DocName<"Target-dependent compilation options">; @@ -3407,6 +3410,11 @@ defm stack_arrays : BooleanFFlag<"stack-arrays">, Group<gfortran_Group>; defm underscoring : BooleanFFlag<"underscoring">, Group<gfortran_Group>; defm whole_file : BooleanFFlag<"whole-file">, Group<gfortran_Group>; +// C++ SYCL options +def fsycl : Flag<["-"], "fsycl">, Group<sycl_Group>, + HelpText<"Enable SYCL kernels compilation for device">; +def fno_sycl : Flag<["-"], "fno-sycl">, Group<sycl_Group>, + HelpText<"Disable SYCL kernels compilation for device">; include "CC1Options.td" diff --git a/clang/lib/Driver/ToolChains/Clang.cpp b/clang/lib/Driver/ToolChains/Clang.cpp index ccdfbe8c604f..0bed933185f6 100644 --- a/clang/lib/Driver/ToolChains/Clang.cpp +++ b/clang/lib/Driver/ToolChains/Clang.cpp @@ -4023,6 +4023,9 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA, CmdArgs.push_back(Args.MakeArgString(NormalizedTriple)); } + if (Args.hasFlag(options::OPT_fsycl, options::OPT_fno_sycl, false)) + CmdArgs.push_back("-fsycl-is-device"); + if (IsOpenMPDevice) { // We have to pass the triple of the host if compiling for an OpenMP device. std::string NormalizedTriple = diff --git a/clang/test/Driver/sycl.c b/clang/test/Driver/sycl.c new file mode 100644 index 000000000000..6c4b291f387b --- /dev/null +++ b/clang/test/Driver/sycl.c @@ -0,0 +1,10 @@ +// RUN: %clang -### -fsycl -c %s 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang -### -fsycl %s 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clang -### -fno-sycl -fsycl %s 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clangxx -### -fsycl %s 2>&1 | FileCheck %s --check-prefix=ENABLED +// RUN: %clangxx -### -fno-sycl %s 2>&1 | FileCheck %s --check-prefix=DISABLED +// RUN: %clangxx -### -fsycl -fno-sycl %s 2>&1 | FileCheck %s --check-prefix=DISABLED +// RUN: %clangxx -### %s 2>&1 | FileCheck %s --check-prefix=DISABLED + +// ENABLED: "-cc1"{{.*}} "-fsycl-is-device" +// DISABLED-NOT: "-fsycl-is-device" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits