Skip to content

Commit 8bfa613

Browse files
[SYCL] Emit textual IR when -S -fsycl-device-only is used.
Signed-off-by: Joshua Cranmer <[email protected]>
1 parent dc729a7 commit 8bfa613

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

clang/lib/Driver/Driver.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4750,9 +4750,11 @@ Action *Driver::ConstructPhaseAction(
47504750
return C.MakeAction<BackendJobAction>(Input, Output);
47514751
}
47524752
if (Args.hasArg(options::OPT_fsycl_device_only)) {
4753+
types::ID OutputType =
4754+
Args.hasArg(options::OPT_S) ? types::TY_LLVM_IR : types::TY_LLVM_BC;
47534755
if (Args.hasFlag(options::OPT_fsycl_use_bitcode,
47544756
options::OPT_fno_sycl_use_bitcode, true))
4755-
return C.MakeAction<BackendJobAction>(Input, types::TY_LLVM_BC);
4757+
return C.MakeAction<BackendJobAction>(Input, OutputType);
47564758
// Use of -fsycl-device-only creates a bitcode file, we need to translate
47574759
// that to a SPIR-V file with -fno-sycl-use-bitcode
47584760
auto *BackendAction =

clang/test/Driver/sycl.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
// RUN: %clang -### -fsycl-device-only -c %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
1313
// RUN: %clang -### -fsycl-device-only %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
14+
// RUN: %clang -### -fsycl-device-only -S %s 2>&1 | FileCheck %s --check-prefix=TEXTUAL
1415
// RUN: %clang -### -fsycl-device-only -fsycl %s 2>&1 | FileCheck %s --check-prefix=DEFAULT
1516
// RUN: %clang -### -fsycl-device-only -fno-sycl-use-bitcode -c %s 2>&1 | FileCheck %s --check-prefix=NO-BITCODE
1617
// RUN: %clang -### -target spir64-unknown-linux-sycldevice -c -emit-llvm %s 2>&1 | FileCheck %s --check-prefix=TARGET
@@ -27,6 +28,7 @@
2728
// NO-BITCODE: "{{.*}}llvm-spirv"{{.*}} "-spirv-max-version=1.1"{{.*}} "-spirv-ext=+all"
2829
// TARGET: "-triple" "spir64-unknown-linux-sycldevice"{{.*}} "-fsycl-is-device"{{.*}} "-emit-llvm-bc"
2930
// COMBINED: "-triple" "spir64-unknown-{{.*}}-sycldevice"{{.*}} "-fsycl-is-device"{{.*}} "-emit-llvm-bc"
31+
// TEXTUAL: "-triple" "spir64-unknown-{{.*}}-sycldevice{{.*}}" "-fsycl-is-device"{{.*}} "-emit-llvm"
3032

3133
/// Verify -fsycl-device-only phases
3234
// RUN: %clang -### -ccc-print-phases -fsycl-device-only %s 2>&1 | FileCheck %s --check-prefix=DEFAULT-PHASES

0 commit comments

Comments
 (0)