Currently, dmd often uses the pattern: if (e.isAddExp()) ... isAddExp(), when inlined, becomes code like: if (e.op == TOK.add ? cast(AddExp)this : null) ... This doesn't get optimized to: if (e.op == TOK.add) It should be, in order to make using isAddExp() cost free.
@WalterBright created dlang/dmd pull request #12860 "fix Issue 22115 - Optimize if (s.a == 3 ? s : null) to if (s.a == 3)" fixing this issue: - fix Issue 22115 - Optimize if (s.a == 3 ? s : null) to if (s.a == 3) https://github.com/dlang/dmd/pull/12860
dlang/dmd pull request #12860 "fix Issue 22115 - Optimize if (s.a == 3 ? s : null) to if (s.a == 3)" was merged into master: - 60e35e43b097b91b47369fcce863822b4b0bcff8 by Walter Bright: fix Issue 22115 - Optimize if (s.a == 3 ? s : null) to if (s.a == 3) https://github.com/dlang/dmd/pull/12860