llvm-project
33035782 - [MLIR][GPU] Reject nested symbol references in gpu-kernel-outlining (#188994)

Commit
8 days ago
[MLIR][GPU] Reject nested symbol references in gpu-kernel-outlining (#188994) Nested symbol references (e.g. `@module::@func`) inside a `gpu.launch` body cannot be resolved after the body is outlined into a new `gpu.module`. Previously, `createKernelModule` used `getLeafReference()` to look up each symbol use, which silently skipped nested references when the leaf name could not be found in the parent symbol table. This left unresolvable cross-module references in the outlined kernel. This patch detects nested symbol references whose root exists in the parent symbol table — meaning the reference was valid before outlining but will become dangling after it — and emits a diagnostic error. Phantom references whose root does not exist in the parent are left as-is, preserving existing behavior for unregistered-op attributes (regression test from #185357). The existing `@nested_launch` test was inadvertently testing this broken behavior (silently producing invalid IR with a dangling `@nested_launch_kernel::@nested_launch_kernel` reference inside the outlined outer kernel module); it is updated to expect the new error. Fixes #187942 Assisted-by: Claude Code
Author
Parents
Loading