================ @@ -108,6 +138,25 @@ void GPUToSPIRVPass::runOnOperation() { if (failed(applyFullConversion(gpuModule, *target, std::move(patterns)))) return signalPassFailure(); } + + // For OpenCL, the gpu.func op in the original gpu.module op needs to be ---------------- silee2 wrote:
Keeping the original gpu.func causes legality check error later in the gpu compile pipeline. If target attr is set for a gpu.module, gpu-to-llvm pass doesn't lower gpu.launch_func Instead, it is replaced with another gpu.launch_func that has lowered argument types (llvm ptrs). If a gpu.func remains as an input to gpu-to-llvm pass, there is an argument mismatch between the new gpu.launch_func and the gpu.func. And a error is fired. The reason for putting a dummy func.func here is to work around that check. For func types other than gpu.func, argument types are not checked against gpu.launch_func. But a func.func is still need as there will be a symbol check. https://github.com/llvm/llvm-project/pull/69941 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits