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