Date: Friday, July 9, 2021 @ 19:33:52 Author: foutrelis Revision: 976310
upgpkg: lib32-clang 12.0.1-1: new upstream release Modified: lib32-clang/trunk/PKGBUILD Deleted: lib32-clang/trunk/opencl-respect-calling-convention-for-builtin.patch -----------------------------------------------------+ PKGBUILD | 11 - opencl-respect-calling-convention-for-builtin.patch | 107 ------------------ 2 files changed, 3 insertions(+), 115 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2021-07-09 19:28:21 UTC (rev 976309) +++ PKGBUILD 2021-07-09 19:33:52 UTC (rev 976310) @@ -2,7 +2,7 @@ # Contributor: Jan "heftig" Steffens <[email protected]> pkgname=lib32-clang -pkgver=12.0.0 +pkgver=12.0.1 pkgrel=1 pkgdesc="C language family frontend for LLVM (32-bit)" arch=('x86_64') @@ -13,14 +13,12 @@ _source_base=https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver source=($_source_base/clang-$pkgver.src.tar.xz{,.sig} $_source_base/llvm-$pkgver.src.tar.xz{,.sig} - opencl-respect-calling-convention-for-builtin.patch clang-link-with-Bsymbolic-functions.patch enable-SSP-and-PIE-by-default.patch) -sha256sums=('e26e452e91d4542da3ebbf404f024d3e1cbf103f4cd110c26bf0a19621cca9ed' +sha256sums=('6e912133bcf56e9cfe6a346fa7e5c52c2cde3e4e48b7a6cc6fcc7c75047da45f' 'SKIP' - '49dc47c8697a1a0abd4ee51629a696d7bfe803662f2a7252a3b16fc75f3a8b50' + '7d9a8405f557cefc5a21bf5672af73903b64749d9bc3a50322239f56f34ffddf' 'SKIP' - '859d34dac43999edfc4c33e1cbb6e7458921fa9f16a93514701c1a9706665d24' '5bc0b47c70990bb8dd0cf4138a8ab9e15cf6b008b7c0cf2c7aac3736b559e0e6' 'a877fa5cf1c1cca3bd55f9a36cf8c1bdd061ff398aeace90fe3cbd9e82550da3') validpgpkeys+=('B6C8F98282B944E3B0D5C2530FC3042E345AD05D') # Hans Wennborg <[email protected]> @@ -53,9 +51,6 @@ mkdir build patch -Np2 -i ../enable-SSP-and-PIE-by-default.patch - # Some fixes from the release/12.x branch - patch -Np2 -i ../opencl-respect-calling-convention-for-builtin.patch - # https://bugs.archlinux.org/task/70697 patch -Np2 -i ../clang-link-with-Bsymbolic-functions.patch } Deleted: opencl-respect-calling-convention-for-builtin.patch =================================================================== --- opencl-respect-calling-convention-for-builtin.patch 2021-07-09 19:28:21 UTC (rev 976309) +++ opencl-respect-calling-convention-for-builtin.patch 2021-07-09 19:33:52 UTC (rev 976310) @@ -1,107 +0,0 @@ -From e0fe1c58acfa0bde36afde8354cb31fc1e0b75e2 Mon Sep 17 00:00:00 2001 -From: Luke Drummond <[email protected]> -Date: Wed, 10 Mar 2021 18:14:42 +0000 -Subject: [PATCH] [OpenCL] Respect calling convention for builtin - -`__translate_sampler_initializer` has a calling convention of -`spir_func`, but clang generated calls to it using the default CC. - -Instruction Combining was lowering these mismatching calling conventions -to `store i1* undef` which itself was subsequently lowered to a trap -instruction by simplifyCFG resulting in runtime `SIGILL` - -There are arguably two bugs here: but whether there's any wisdom in -converting an obviously invalid call into a runtime crash over aborting -with a sensible error message will require further discussion. So for -now it's enough to set the right calling convention on the runtime -helper. - -Reviewed By: svenh, bader - -Differential Revision: https://reviews.llvm.org/D98411 - -(cherry picked from commit fcfd3fda71905d7c48f75a531c2265ad3b9876ea) ---- - clang/lib/CodeGen/CodeGenModule.cpp | 12 +++++++----- - clang/test/CodeGenOpenCL/sampler.cl | 12 ++++++------ - 2 files changed, 13 insertions(+), 11 deletions(-) - -diff --git a/clang/lib/CodeGen/CodeGenModule.cpp b/clang/lib/CodeGen/CodeGenModule.cpp -index 31afbc6b4262..9c9bd4e374af 100644 ---- a/clang/lib/CodeGen/CodeGenModule.cpp -+++ b/clang/lib/CodeGen/CodeGenModule.cpp -@@ -6215,15 +6215,17 @@ llvm::SanitizerStatReport &CodeGenModule::getSanStats() { - - return *SanStats; - } -+ - llvm::Value * - CodeGenModule::createOpenCLIntToSamplerConversion(const Expr *E, - CodeGenFunction &CGF) { - llvm::Constant *C = ConstantEmitter(CGF).emitAbstract(E, E->getType()); -- auto SamplerT = getOpenCLRuntime().getSamplerType(E->getType().getTypePtr()); -- auto FTy = llvm::FunctionType::get(SamplerT, {C->getType()}, false); -- return CGF.Builder.CreateCall(CreateRuntimeFunction(FTy, -- "__translate_sampler_initializer"), -- {C}); -+ auto *SamplerT = getOpenCLRuntime().getSamplerType(E->getType().getTypePtr()); -+ auto *FTy = llvm::FunctionType::get(SamplerT, {C->getType()}, false); -+ auto *Call = CGF.Builder.CreateCall( -+ CreateRuntimeFunction(FTy, "__translate_sampler_initializer"), {C}); -+ Call->setCallingConv(Call->getCalledFunction()->getCallingConv()); -+ return Call; - } - - CharUnits CodeGenModule::getNaturalPointeeTypeAlignment( -diff --git a/clang/test/CodeGenOpenCL/sampler.cl b/clang/test/CodeGenOpenCL/sampler.cl -index e6bda49f51c8..5ad8d0dbbf37 100644 ---- a/clang/test/CodeGenOpenCL/sampler.cl -+++ b/clang/test/CodeGenOpenCL/sampler.cl -@@ -39,7 +39,7 @@ kernel void foo(sampler_t smp_par) { - // Case 2b - sampler_t smp = CLK_ADDRESS_CLAMP_TO_EDGE | CLK_NORMALIZED_COORDS_TRUE | CLK_FILTER_NEAREST; - // CHECK: [[smp_ptr:%[A-Za-z0-9_\.]+]] = alloca %opencl.sampler_t addrspace(2)* -- // CHECK: [[SAMP:%[0-9]+]] = call %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 19) -+ // CHECK: [[SAMP:%[0-9]+]] = call spir_func %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 19) - // CHECK: store %opencl.sampler_t addrspace(2)* [[SAMP]], %opencl.sampler_t addrspace(2)** [[smp_ptr]] - - // Case 1b -@@ -56,12 +56,12 @@ kernel void foo(sampler_t smp_par) { - - // Case 1a/2a - fnc4smp(glb_smp); -- // CHECK: [[SAMP:%[0-9]+]] = call %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 35) -+ // CHECK: [[SAMP:%[0-9]+]] = call spir_func %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 35) - // CHECK: call spir_func void [[FUNCNAME]](%opencl.sampler_t addrspace(2)* [[SAMP]]) - - // Case 1a/2c - fnc4smp(glb_smp_const); -- // CHECK: [[SAMP:%[0-9]+]] = call %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 35) -+ // CHECK: [[SAMP:%[0-9]+]] = call spir_func %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 35) - // CHECK: call spir_func void [[FUNCNAME]](%opencl.sampler_t addrspace(2)* [[SAMP]]) - - // Case 1c -@@ -70,12 +70,12 @@ kernel void foo(sampler_t smp_par) { - // CHECK: call spir_func void [[FUNCNAME]](%opencl.sampler_t addrspace(2)* [[SAMP]]) - - fnc4smp(5); -- // CHECK: [[SAMP:%[0-9]+]] = call %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 5) -+ // CHECK: [[SAMP:%[0-9]+]] = call spir_func %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 5) - // CHECK: call spir_func void [[FUNCNAME]](%opencl.sampler_t addrspace(2)* [[SAMP]]) - - const sampler_t const_smp = CLK_ADDRESS_CLAMP_TO_EDGE | CLK_NORMALIZED_COORDS_TRUE | CLK_FILTER_LINEAR; - fnc4smp(const_smp); -- // CHECK: [[CONST_SAMP:%[0-9]+]] = call %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 35) -+ // CHECK: [[CONST_SAMP:%[0-9]+]] = call spir_func %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 35) - // CHECK: store %opencl.sampler_t addrspace(2)* [[CONST_SAMP]], %opencl.sampler_t addrspace(2)** [[CONST_SMP_PTR:%[a-zA-Z0-9]+]] - fnc4smp(const_smp); - // CHECK: [[SAMP:%[0-9]+]] = load %opencl.sampler_t addrspace(2)*, %opencl.sampler_t addrspace(2)** [[CONST_SMP_PTR]] -@@ -83,7 +83,7 @@ kernel void foo(sampler_t smp_par) { - - constant sampler_t constant_smp = CLK_ADDRESS_CLAMP_TO_EDGE | CLK_NORMALIZED_COORDS_TRUE | CLK_FILTER_LINEAR; - fnc4smp(constant_smp); -- // CHECK: [[SAMP:%[0-9]+]] = call %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 35) -+ // CHECK: [[SAMP:%[0-9]+]] = call spir_func %opencl.sampler_t addrspace(2)* @__translate_sampler_initializer(i32 35) - // CHECK: call spir_func void [[FUNCNAME]](%opencl.sampler_t addrspace(2)* [[SAMP]]) - - // TODO: enable sampler initialization with non-constant integer.
