Issue |
129856
|
Summary |
Dead calls with convergence token uses are not deleted
|
Labels |
backend:AMDGPU,
missed-optimization
|
Assignees |
|
Reporter |
arsenm
|
Calls with convergencectrl bundles appear to never be deleted when unused:
```
; RUN: opt -S -mtriple=amdgcn-amd-amdhsa -O3 %s
; The calls should be deleted
define void @dead_readfirstlane_convergencetoken(<2 x i32> %src) convergent {
%t = call token @llvm.experimental.convergence.entry()
%vec = call <2 x i32> @llvm.amdgcn.readfirstlane.v2i32(<2 x i32> %src) [ "convergencectrl"(token %t) ]
ret void
}
```
In this example, every pass is a no-op. I would expect instcombine or any of the DCE passes to erase the entry token and readfirstlane call
_______________________________________________
llvm-bugs mailing list
llvm-bugs@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs