r365499 - [OpenCL][Sema] Fix builtin rewriting
Reid Kleckner via cfe-commits
cfe-commits at lists.llvm.org
Tue Jul 9 13:47:36 PDT 2019
FYI, your test seems to fail on Windows:
FAIL: Clang :: CodeGenOpenCL/pipe_builtin.cl (4679 of 15176)
******************** TEST 'Clang :: CodeGenOpenCL/pipe_builtin.cl' FAILED
********************
Script:
--
: 'RUN: at line 1';
c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\clang.exe -cc1
-internal-isystem
c:\b\slave\clang-x64-windows-msvc\build\build\stage1\lib\clang\9.0.0\include
-nostdsysteminc -emit-llvm -cl-ext=+cl_khr_subgroups -O0 -cl-std=c++ -o -
C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\CodeGenOpenCL\
pipe_builtin.cl |
c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\filecheck.exe
C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\CodeGenOpenCL\
pipe_builtin.cl
--
Exit Code: 2
Command Output (stdout):
--
$ ":" "RUN: at line 1"
$ "c:\b\slave\clang-x64-windows-msvc\build\build\stage1\bin\clang.exe"
"-cc1" "-internal-isystem"
"c:\b\slave\clang-x64-windows-msvc\build\build\stage1\lib\clang\9.0.0\include"
"-nostdsysteminc" "-emit-llvm" "-cl-ext=+cl_khr_subgroups" "-O0"
"-cl-std=c++" "-o" "-"
"C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\CodeGenOpenCL\
pipe_builtin.cl"
# command stderr:
C:\b\slave\clang-x64-windows-msvc\build\llvm.src\tools\clang\test\CodeGenOpenCL\pipe_builtin.cl:9:1:
error: cannot mangle this OpenCL pipe type yet
void test1(read_only pipe int p, global int *ptr) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
On Tue, Jul 9, 2019 at 8:04 AM Marco Antognini via cfe-commits <
cfe-commits at lists.llvm.org> wrote:
> Author: mantognini
> Date: Tue Jul 9 08:04:23 2019
> New Revision: 365499
>
> URL: http://llvm.org/viewvc/llvm-project?rev=365499&view=rev
> Log:
> [OpenCL][Sema] Fix builtin rewriting
>
> This patch ensures built-in functions are rewritten using the proper
> parent declaration.
>
> Existing tests are modified to run in C++ mode to ensure the
> functionality works also with C++ for OpenCL while not increasing the
> testing runtime.
>
> Modified:
> cfe/trunk/include/clang/Basic/Builtins.def
> cfe/trunk/lib/Sema/SemaExpr.cpp
> cfe/trunk/test/CodeGenOpenCL/builtins.cl
> cfe/trunk/test/CodeGenOpenCL/pipe_builtin.cl
> cfe/trunk/test/CodeGenOpenCL/to_addr_builtin.cl
>
> Modified: cfe/trunk/include/clang/Basic/Builtins.def
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Builtins.def?rev=365499&r1=365498&r2=365499&view=diff
>
> ==============================================================================
> --- cfe/trunk/include/clang/Basic/Builtins.def (original)
> +++ cfe/trunk/include/clang/Basic/Builtins.def Tue Jul 9 08:04:23 2019
> @@ -1478,6 +1478,7 @@ BUILTIN(__builtin_coro_begin, "v*v*", "n
> BUILTIN(__builtin_coro_end, "bv*Ib", "n")
> BUILTIN(__builtin_coro_suspend, "cIb", "n")
> BUILTIN(__builtin_coro_param, "bv*v*", "n")
> +
> // OpenCL v2.0 s6.13.16, s9.17.3.5 - Pipe functions.
> // We need the generic prototype, since the packet type could be anything.
> LANGBUILTIN(read_pipe, "i.", "tn", OCLC20_LANG)
> @@ -1513,6 +1514,8 @@ LANGBUILTIN(get_kernel_max_sub_group_siz
> LANGBUILTIN(get_kernel_sub_group_count_for_ndrange, "Ui.", "tn",
> OCLC20_LANG)
>
> // OpenCL v2.0 s6.13.9 - Address space qualifier functions.
> +// FIXME: Pointer parameters of OpenCL builtins should have their address
> space
> +// requirement defined.
> LANGBUILTIN(to_global, "v*v*", "tn", OCLC20_LANG)
> LANGBUILTIN(to_local, "v*v*", "tn", OCLC20_LANG)
> LANGBUILTIN(to_private, "v*v*", "tn", OCLC20_LANG)
>
> Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=365499&r1=365498&r2=365499&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaExpr.cpp Tue Jul 9 08:04:23 2019
> @@ -5360,7 +5360,7 @@ static bool checkArgsForPlaceholders(Sem
> /// FunctionDecl is returned.
> /// TODO: Handle pointer return types.
> static FunctionDecl *rewriteBuiltinFunctionDecl(Sema *Sema, ASTContext
> &Context,
> - const FunctionDecl *FDecl,
> + FunctionDecl *FDecl,
> MultiExprArg ArgExprs) {
>
> QualType DeclType = FDecl->getType();
> @@ -5408,7 +5408,7 @@ static FunctionDecl *rewriteBuiltinFunct
> FunctionProtoType::ExtProtoInfo EPI;
> QualType OverloadTy = Context.getFunctionType(FT->getReturnType(),
> OverloadParams, EPI);
> - DeclContext *Parent = Context.getTranslationUnitDecl();
> + DeclContext *Parent = FDecl->getParent();
> FunctionDecl *OverloadDecl = FunctionDecl::Create(Context, Parent,
> FDecl->getLocation(),
> FDecl->getLocation(),
>
> Modified: cfe/trunk/test/CodeGenOpenCL/builtins.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCL/builtins.cl?rev=365499&r1=365498&r2=365499&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenOpenCL/builtins.cl (original)
> +++ cfe/trunk/test/CodeGenOpenCL/builtins.cl Tue Jul 9 08:04:23 2019
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 %s -finclude-default-header -cl-std=CL2.0 -O0
> -emit-llvm -o - -triple "spir-unknown-unknown" | FileCheck %s
> +// RUN: %clang_cc1 %s -finclude-default-header -cl-std=c++ -fblocks -O0
> -emit-llvm -o - -triple "spir-unknown-unknown" | FileCheck %s
>
> void testBranchingOnEnqueueKernel(queue_t default_queue, unsigned flags,
> ndrange_t ndrange) {
> // Ensure `enqueue_kernel` can be branched upon.
>
> Modified: cfe/trunk/test/CodeGenOpenCL/pipe_builtin.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCL/pipe_builtin.cl?rev=365499&r1=365498&r2=365499&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenOpenCL/pipe_builtin.cl (original)
> +++ cfe/trunk/test/CodeGenOpenCL/pipe_builtin.cl Tue Jul 9 08:04:23 2019
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 -emit-llvm -cl-ext=+cl_khr_subgroups -O0 -cl-std=CL2.0
> -o - %s | FileCheck %s
> +// RUN: %clang_cc1 -emit-llvm -cl-ext=+cl_khr_subgroups -O0 -cl-std=c++
> -o - %s | FileCheck %s
>
> // CHECK-DAG: %opencl.pipe_ro_t = type opaque
> // CHECK-DAG: %opencl.pipe_wo_t = type opaque
>
> Modified: cfe/trunk/test/CodeGenOpenCL/to_addr_builtin.cl
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenOpenCL/to_addr_builtin.cl?rev=365499&r1=365498&r2=365499&view=diff
>
> ==============================================================================
> --- cfe/trunk/test/CodeGenOpenCL/to_addr_builtin.cl (original)
> +++ cfe/trunk/test/CodeGenOpenCL/to_addr_builtin.cl Tue Jul 9 08:04:23
> 2019
> @@ -1,4 +1,4 @@
> -// RUN: %clang_cc1 -triple spir-unknown-unknown -emit-llvm -O0
> -cl-std=CL2.0 -o - %s | FileCheck %s
> +// RUN: %clang_cc1 -triple spir-unknown-unknown -emit-llvm -O0
> -cl-std=c++ -o - %s | FileCheck %s
>
> // CHECK: %[[A:.*]] = type { float, float, float }
> typedef struct {
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190709/8f9b771d/attachment.html>
More information about the cfe-commits
mailing list