r365499 - [OpenCL][Sema] Fix builtin rewriting

Reid Kleckner via cfe-commits cfe-commits at lists.llvm.org
Wed Jul 10 14:23:55 PDT 2019


NP, I forgot to follow up mentioning that I tweaked the test to fix the
failure in https://reviews.llvm.org/rC365557. It would be good to
eventually mangle whatever OpenCL thing is being mangled here in the MS
ABI, but that can be future work.

On Wed, Jul 10, 2019 at 2:45 AM Marco Antognini <Marco.Antognini at arm.com>
wrote:

> Hello Reid,
>
> Thanks for reporting it. I filed a bug to fix that (
> http://llvm.org/PR42560). However, I'm not sure I'll have time this week
> to look at it, especially given that we have no Windows builder around
> here. If you are critically blocked by this, could you check that adding
> '// UNSUPPORTED: system-windows' properly disables the test? And if so,
> feel free to commit for now.
>
> Marco
> ------------------------------
> *From:* Reid Kleckner <rnk at google.com>
> *Sent:* 09 July 2019 21:47
> *To:* Marco Antognini
> *Cc:* cfe-commits
> *Subject:* Re: r365499 - [OpenCL][Sema] Fix builtin rewriting
>
> 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
>
> IMPORTANT NOTICE: The contents of this email and any attachments are
> confidential and may also be privileged. If you are not the intended
> recipient, please notify the sender immediately and do not disclose the
> contents to any other person, use it for any purpose, or store or copy the
> information in any medium. Thank you.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20190710/10eaf2ac/attachment-0001.html>


More information about the cfe-commits mailing list