Author: bader Date: Mon Feb 25 03:48:48 2019 New Revision: 354773 URL: http://llvm.org/viewvc/llvm-project?rev=354773&view=rev Log: [SYCL] Add clang front-end option to enable SYCL device compilation flow.
Patch by Mariya Podchishchaeva <mariya.podchishcha...@intel.com> Added: cfe/trunk/test/Preprocessor/sycl-macro.cpp (with props) Modified: cfe/trunk/include/clang/Basic/LangOptions.def cfe/trunk/include/clang/Driver/CC1Options.td cfe/trunk/lib/Frontend/CompilerInvocation.cpp cfe/trunk/lib/Frontend/InitPreprocessor.cpp Modified: cfe/trunk/include/clang/Basic/LangOptions.def URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/LangOptions.def?rev=354773&r1=354772&r2=354773&view=diff ============================================================================== --- cfe/trunk/include/clang/Basic/LangOptions.def (original) +++ cfe/trunk/include/clang/Basic/LangOptions.def Mon Feb 25 03:48:48 2019 @@ -217,6 +217,8 @@ LANGOPT(CUDAHostDeviceConstexpr, 1, 1, " LANGOPT(CUDADeviceApproxTranscendentals, 1, 0, "using approximate transcendental functions") LANGOPT(GPURelocatableDeviceCode, 1, 0, "generate relocatable device code") +LANGOPT(SYCLIsDevice , 1, 0, "Generate code for SYCL device") + LANGOPT(SizedDeallocation , 1, 0, "sized deallocation") LANGOPT(AlignedAllocation , 1, 0, "aligned allocation") LANGOPT(AlignedAllocationUnavailable, 1, 0, "aligned allocation functions are unavailable") Modified: cfe/trunk/include/clang/Driver/CC1Options.td URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Driver/CC1Options.td?rev=354773&r1=354772&r2=354773&view=diff ============================================================================== --- cfe/trunk/include/clang/Driver/CC1Options.td (original) +++ cfe/trunk/include/clang/Driver/CC1Options.td Mon Feb 25 03:48:48 2019 @@ -836,8 +836,14 @@ def fopenmp_is_device : Flag<["-"], "fop def fopenmp_host_ir_file_path : Separate<["-"], "fopenmp-host-ir-file-path">, HelpText<"Path to the IR file produced by the frontend for the host.">; -} // let Flags = [CC1Option] +//===----------------------------------------------------------------------===// +// SYCL Options +//===----------------------------------------------------------------------===// +def fsycl_is_device : Flag<["-"], "fsycl-is-device">, + HelpText<"Generate code for SYCL device.">; + +} // let Flags = [CC1Option] //===----------------------------------------------------------------------===// // cc1as-only Options Modified: cfe/trunk/lib/Frontend/CompilerInvocation.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInvocation.cpp?rev=354773&r1=354772&r2=354773&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/CompilerInvocation.cpp (original) +++ cfe/trunk/lib/Frontend/CompilerInvocation.cpp Mon Feb 25 03:48:48 2019 @@ -2879,6 +2879,8 @@ static void ParseLangArgs(LangOptions &O << Opts.OMPHostIRFile; } + Opts.SYCLIsDevice = Args.hasArg(options::OPT_fsycl_is_device); + // Set CUDA mode for OpenMP target NVPTX if specified in options Opts.OpenMPCUDAMode = Opts.OpenMPIsDevice && T.isNVPTX() && Args.hasArg(options::OPT_fopenmp_cuda_mode); Modified: cfe/trunk/lib/Frontend/InitPreprocessor.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/InitPreprocessor.cpp?rev=354773&r1=354772&r2=354773&view=diff ============================================================================== --- cfe/trunk/lib/Frontend/InitPreprocessor.cpp (original) +++ cfe/trunk/lib/Frontend/InitPreprocessor.cpp Mon Feb 25 03:48:48 2019 @@ -1057,6 +1057,12 @@ static void InitializePredefinedMacros(c Builder.defineMacro("__CLANG_CUDA_APPROX_TRANSCENDENTALS__"); } + // Define a macro indicating that the source file is being compiled with a + // SYCL device compiler which doesn't produce host binary. + if (LangOpts.SYCLIsDevice) { + Builder.defineMacro("__SYCL_DEVICE_ONLY__", "1"); + } + // OpenCL definitions. if (LangOpts.OpenCL) { #define OPENCLEXT(Ext) \ Added: cfe/trunk/test/Preprocessor/sycl-macro.cpp URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Preprocessor/sycl-macro.cpp?rev=354773&view=auto ============================================================================== --- cfe/trunk/test/Preprocessor/sycl-macro.cpp (added) +++ cfe/trunk/test/Preprocessor/sycl-macro.cpp Mon Feb 25 03:48:48 2019 @@ -0,0 +1,5 @@ +// RUN: %clang_cc1 %s -E -dM | FileCheck %s +// RUN: %clang_cc1 %s -fsycl-is-device -E -dM | FileCheck --check-prefix=CHECK-SYCL %s + +// CHECK-NOT:#define __SYCL_DEVICE_ONLY__ 1 +// CHECK-SYCL:#define __SYCL_DEVICE_ONLY__ 1 Propchange: cfe/trunk/test/Preprocessor/sycl-macro.cpp ------------------------------------------------------------------------------ svn:eol-style = native Propchange: cfe/trunk/test/Preprocessor/sycl-macro.cpp ------------------------------------------------------------------------------ svn:keywords = Author Date Id Rev URL Propchange: cfe/trunk/test/Preprocessor/sycl-macro.cpp ------------------------------------------------------------------------------ svn:mime-type = text/plain _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits