Commit
5030f482a369b992d9e17da43a91f59ed5f6c76e
by James YouRefactor Binary Identity Simplification Macro
This commit cleans up the BINARY_IDENTITY_OP and
BIANRY_IDENTITY_OR_ZERO macros and replaces them
with inline equivalents by implementing a struct to replace template
instantions of the functions tryAndSimplifyBinaryOp*.
This change limits the number of template instantiations
potential call sites have to create as well as abstracts
some captured variables inside the struct to minimize
the number of arguments passed to actual calls.
A closure is emulated by the struct.
Through escape analysis, scalar replacement and inlining,
the overhead of creating this struct should be minimal
on -O3
Related: #7166
Signed-off-by: James You <james.you@protonmail.com>
(commit: 5030f48)