SimplifyDemandedUseBits for Add/Sub already recursed down LHS and RHS for simplifying bits. If that didn't provide any simplifications we fall back to calling computeKnownBits which will recurse again. Instead just take the known bits for LHS and RHS we already have and call into a new function in ValueTracking that can calculate the known bits given the LHS/RHS bits.
Diff Detail
Event Timeline
lib/Analysis/ValueTracking.cpp | ||
---|---|---|
309 | Can we call these params RHSKnownZero and RHSKnownOne at this point? | |
lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp | ||
551 | "commute" confused me here. "compute"? |
lib/Analysis/ValueTracking.cpp | ||
---|---|---|
309 | They don't contain the RHS known bits at the start of the call so it could be misleading. We're only passing it in because computeKnownBits preallocated them and we want to reuse that. | |
lib/Transforms/InstCombine/InstCombineSimplifyDemanded.cpp | ||
551 | Typo. Maybe I've spent too much time commuting instructions in the backend. |
Can we call these params RHSKnownZero and RHSKnownOne at this point?