dotnet/roslyn
Compiler should optimize common boolean return patterns
Ouverte
#34 726 ouverte le 3 avr. 2019
Area-CompilersCode Gen Qualityhelp wanted
Métriques du dépôt
- Stars
- (20 414 étoiles)
- Métriques de merge PR
- (Merge moyen 6j 17h) (256 PRs mergées en 30 j)
Description
Version Used: Rosyln master branch from 2nd April 2019
Steps to Reproduce: [Sharplab Demo]
- Have this code:
public bool Proper(object o) { return o is object; } - Also, have this unoptimized version
public bool ShouldBeOptimized(object o) { if (o is object) { return true; } return false; }
Expected Behavior:
Identical IL output, as they are semantically identical. This wouldn't be an issue but it does affect JIT output seemingly (JIT64 desktop, tested on Sharplab above) - it switches a setcc ; movzx pattern to a full branch, which is not ideal
Actual Behavior: IL generation has an additional branch and changes the generated JIT
It is a very minor issue but was recommended to create an issue for it