llvm
d125cab1 - [InstCombine] Support multi-use values in cast elimination transforms (#165877)

Commit
136 days ago
[InstCombine] Support multi-use values in cast elimination transforms (#165877) `canEvaluateTruncated` and `canEvaluateSExtd` previously rejected multi-use values to avoid duplication. This was overly conservative, if all users of a multi-use value are part of the transform, we can evaluate it in a different type without duplication. This change tracks visited values and defers decisions on multi-use values until we verify all their users were visited. `EvaluateInDifferentType` now memoizes multi-use values to avoid creating duplicates. Applied to truncation and sext. Zext unchanged due to its dual-return nature.
Parents
Loading