Details
Diff Detail
- Repository
- rL LLVM
Event Timeline
Is there a more general dead code elimination strategy that could be used here? It seems like we always want to eliminate writes to EXEC that have no users.
Needs MIR test
lib/Target/AMDGPU/SIOptimizeExecMaskingPreRA.cpp | ||
---|---|---|
114 ↗ | (On Diff #110605) | SmallSet? |
120 ↗ | (On Diff #110605) | succ_empty |
141–143 ↗ | (On Diff #110605) | hasOrderedMemoryRef |
164 ↗ | (On Diff #110605) | Braces |
166 ↗ | (On Diff #110605) | It's seems overly aggressive to be trying to prune other blocks here. Should these types of instructions be sunk or blocks merged earlier? |
Addressed review comments. Mir test pending.
lib/Target/AMDGPU/SIOptimizeExecMaskingPreRA.cpp | ||
---|---|---|
114 ↗ | (On Diff #110605) | SmallSet does not provide a way to iterate over members in the set. |
166 ↗ | (On Diff #110605) | It does not mean they can be sunk. Two predecessors may have different tailing instructions, but all can be dead given the path to s_endpgm. Also some instructions are eliminated from preceding blocks by the very same pass which would then allow to merge blocks, but only after this pass finished. |