Skip to content

Commit 4eab55e

Browse files
authored
[SYCL] Add experimental flag to enable front-end optimizations (#1376)
NOTE: This flag is not exposed to the driver and not intended for users. It's added to make experiments and identify issues with optimizations. Signed-off-by: Alexey Bader <alexey.bader@intel.com>
1 parent b51bb87 commit 4eab55e

File tree

4 files changed

+7
-6
lines changed

4 files changed

+7
-6
lines changed

clang/include/clang/Driver/CC1Options.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -919,6 +919,8 @@ def fsycl_std_layout_kernel_params: Flag<["-"], "fsycl-std-layout-kernel-params"
919919
def fsycl_allow_func_ptr : Flag<["-"], "fsycl-allow-func-ptr">,
920920
HelpText<"Allow function pointers in SYCL device.">;
921921
def fno_sycl_allow_func_ptr : Flag<["-"], "fno-sycl-allow-func-ptr">;
922+
def fsycl_enable_optimizations: Flag<["-"], "fsycl-enable-optimizations">,
923+
HelpText<"Experimental flag enabling standard optimization in the front-end.">;
922924

923925
} // let Flags = [CC1Option]
924926

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4109,10 +4109,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
41094109
}
41104110
}
41114111

4112-
if (Triple.isSPIR()) {
4113-
CmdArgs.push_back("-disable-llvm-passes");
4114-
}
4115-
41164112
if (Args.hasFlag(options::OPT_fsycl_allow_func_ptr,
41174113
options::OPT_fno_sycl_allow_func_ptr, false)) {
41184114
CmdArgs.push_back("-fsycl-allow-func-ptr");

clang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -780,7 +780,10 @@ static bool ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, InputKind IK,
780780
Args.getLastArg(OPT_emit_llvm_uselists, OPT_no_emit_llvm_uselists))
781781
Opts.EmitLLVMUseLists = A->getOption().getID() == OPT_emit_llvm_uselists;
782782

783-
Opts.DisableLLVMPasses = Args.hasArg(OPT_disable_llvm_passes);
783+
Opts.DisableLLVMPasses =
784+
Args.hasArg(OPT_disable_llvm_passes) ||
785+
(Args.hasArg(OPT_fsycl_is_device) && Triple.isSPIR() &&
786+
!Args.hasArg(OPT_fsycl_enable_optimizations));
784787
Opts.DisableLifetimeMarkers = Args.hasArg(OPT_disable_lifetimemarkers);
785788

786789
const llvm::Triple::ArchType DebugEntryValueArchs[] = {

clang/test/CodeGenSYCL/inline_asm.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %clang_cc1 -fsycl -fsycl-is-device -triple spir64-unknown-unknown-sycldevice -emit-llvm -x c++ %s -o - | FileCheck %s
1+
// RUN: %clang_cc1 -fsycl -fsycl-is-device -fsycl-enable-optimizations -triple spir64-unknown-unknown-sycldevice -emit-llvm -x c++ %s -o - | FileCheck %s
22

33
class kernel;
44

0 commit comments

Comments
 (0)