From 8bfa613b873c03457b69692ba53779b46cc362eb Mon Sep 17 00:00:00 2001 From: Joshua Cranmer Date: Mon, 16 Mar 2020 16:01:56 -0400 Subject: [PATCH] [SYCL] Emit textual IR when -S -fsycl-device-only is used. Signed-off-by: Joshua Cranmer --- clang/lib/Driver/Driver.cpp | 4 +++- clang/test/Driver/sycl.c | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 512b92010f1d3..d3f33d87d4f0b 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -4750,9 +4750,11 @@ Action *Driver::ConstructPhaseAction( return C.MakeAction(Input, Output); } if (Args.hasArg(options::OPT_fsycl_device_only)) { + types::ID OutputType = + Args.hasArg(options::OPT_S) ? types::TY_LLVM_IR : types::TY_LLVM_BC; if (Args.hasFlag(options::OPT_fsycl_use_bitcode, options::OPT_fno_sycl_use_bitcode, true)) - return C.MakeAction(Input, types::TY_LLVM_BC); + return C.MakeAction(Input, OutputType); // Use of -fsycl-device-only creates a bitcode file, we need to translate // that to a SPIR-V file with -fno-sycl-use-bitcode auto *BackendAction = diff --git a/clang/test/Driver/sycl.c b/clang/test/Driver/sycl.c index 31ae4a2216a9b..5d2f9e691fbce 100644 --- a/clang/test/Driver/sycl.c +++ b/clang/test/Driver/sycl.c @@ -11,6 +11,7 @@ // RUN: %clang -### -fsycl-device-only -c %s 2>&1 | FileCheck %s --check-prefix=DEFAULT // RUN: %clang -### -fsycl-device-only %s 2>&1 | FileCheck %s --check-prefix=DEFAULT +// RUN: %clang -### -fsycl-device-only -S %s 2>&1 | FileCheck %s --check-prefix=TEXTUAL // RUN: %clang -### -fsycl-device-only -fsycl %s 2>&1 | FileCheck %s --check-prefix=DEFAULT // RUN: %clang -### -fsycl-device-only -fno-sycl-use-bitcode -c %s 2>&1 | FileCheck %s --check-prefix=NO-BITCODE // RUN: %clang -### -target spir64-unknown-linux-sycldevice -c -emit-llvm %s 2>&1 | FileCheck %s --check-prefix=TARGET @@ -27,6 +28,7 @@ // NO-BITCODE: "{{.*}}llvm-spirv"{{.*}} "-spirv-max-version=1.1"{{.*}} "-spirv-ext=+all" // TARGET: "-triple" "spir64-unknown-linux-sycldevice"{{.*}} "-fsycl-is-device"{{.*}} "-emit-llvm-bc" // COMBINED: "-triple" "spir64-unknown-{{.*}}-sycldevice"{{.*}} "-fsycl-is-device"{{.*}} "-emit-llvm-bc" +// TEXTUAL: "-triple" "spir64-unknown-{{.*}}-sycldevice{{.*}}" "-fsycl-is-device"{{.*}} "-emit-llvm" /// Verify -fsycl-device-only phases // RUN: %clang -### -ccc-print-phases -fsycl-device-only %s 2>&1 | FileCheck %s --check-prefix=DEFAULT-PHASES