ConstantRange::makeGuaranteedNoWrapRegion() knows how to deal with mul
since rL335646, there is exhaustive test coverage.
This is already used by CVP's processOverflowIntrinsic(),
and by SCEV's StrengthenNoWrapFlags()
That being said, currently, this doesn't help much in the end:
statistic | old | new | delta | percentage |
correlated-value-propagation.NumMulNSW | 4 | 275 | 271 | 6775.00% |
correlated-value-propagation.NumMulNUW | 4 | 1323 | 1319 | 32975.00% |
correlated-value-propagation.NumMulNW | 8 | 1598 | 1590 | 19875.00% |
correlated-value-propagation.NumNSW | 5715 | 5986 | 271 | 4.74% |
correlated-value-propagation.NumNUW | 9193 | 10512 | 1319 | 14.35% |
correlated-value-propagation.NumNW | 14908 | 16498 | 1590 | 10.67% |
instcount.NumAddInst | 275871 | 275869 | -2 | 0.00% |
instcount.NumBrInst | 708234 | 708232 | -2 | 0.00% |
instcount.NumMulInst | 43812 | 43810 | -2 | 0.00% |
instcount.NumPHIInst | 316786 | 316784 | -2 | 0.00% |
instcount.NumTruncInst | 62165 | 62167 | 2 | 0.00% |
instcount.NumUDivInst | 2528 | 2526 | -2 | -0.08% |
instcount.TotalBlocks | 842995 | 842993 | -2 | 0.00% |
instcount.TotalInsts | 7376486 | 7376478 | -8 | 0.00% |
(^ test-suite plain, tests still pass)
Do we want this for consistency?