https://github.com/shiltian created https://github.com/llvm/llvm-project/pull/131017
When compiling an OpenCL program directly with `clang` using `--save-temps`, an error may occur if the program contains OpenCL builtins: ``` test.cl:3:21: error: use of undeclared identifier 'get_global_id' 3 | unsigned int id = get_global_id(0); | ^ ``` This happens because the driver does not add `-fdeclare-opencl-builtins` when the input type is `TY_PP_CL`. This PR fixes the issue. >From 7af967a100829c5ae1c08a6bc59316e56fa78b30 Mon Sep 17 00:00:00 2001 From: Shilei Tian <i...@tianshilei.me> Date: Wed, 12 Mar 2025 15:29:51 -0400 Subject: [PATCH] [Clang][OpenCL] Fix Missing `-fdeclare-opencl-builtins` When Using `--save-temps` When compiling an OpenCL program directly with `clang` using `--save-temps`, an error may occur if the program contains OpenCL builtins: ``` test.cl:3:21: error: use of undeclared identifier 'get_global_id' 3 | unsigned int id = get_global_id(0); | ^ ``` This happens because the driver does not add `-fdeclare-opencl-builtins` when the input type is `TY_PP_CL`. This PR fixes the issue. --- clang/lib/Driver/Types.cpp | 12 +++++++++++- clang/test/Driver/opencl-aot-compilation.cl | 4 ++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 clang/test/Driver/opencl-aot-compilation.cl diff --git a/clang/lib/Driver/Types.cpp b/clang/lib/Driver/Types.cpp index eaca74a7b5529..08866e89ea447 100644 --- a/clang/lib/Driver/Types.cpp +++ b/clang/lib/Driver/Types.cpp @@ -226,7 +226,17 @@ bool types::isObjC(ID Id) { } } -bool types::isOpenCL(ID Id) { return Id == TY_CL || Id == TY_CLCXX; } +bool types::isOpenCL(ID Id) { + switch (Id) { + default: + return false; + case TY_PP_CL: + case TY_PP_CLCXX: + case TY_CL: + case TY_CLCXX: + return true; + } +} bool types::isCXX(ID Id) { switch (Id) { diff --git a/clang/test/Driver/opencl-aot-compilation.cl b/clang/test/Driver/opencl-aot-compilation.cl new file mode 100644 index 0000000000000..eba658619b7f8 --- /dev/null +++ b/clang/test/Driver/opencl-aot-compilation.cl @@ -0,0 +1,4 @@ +// RUN: %clang -x cl %s --save-temps -### 2>&1 | FileCheck %s + +// CHECK: "-fdeclare-opencl-builtins" {{.*}} "[[SRC:.+]].cli" "-x" "cl" "{{.*}}[[SRC]].cl" +// CHECK-NEXT: "-fdeclare-opencl-builtins" {{.*}} "-x" "cl-cpp-output" "[[SRC]].cli" _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits