On 7/17/23 15:14, Aldy Hernandez wrote: > Instead of reading the known zero bits in IPA, read the value/mask > pair which is available. > > There is a slight change of behavior here. I have removed the check > for SSA_NAME, as the ranger can calculate the range and value/mask for > INTEGER_CST. This simplifies the code a bit, since there's no special > casing when setting the jfunc bits. The default range for VR is > undefined, so I think it's safe just to check for undefined_p(). Final round of tests revealed a regression for which I've adjusted the testcase. It turns out g++.dg/ipa/pure-const-3.C fails because IPA can now pick up value/mask from any pass that has an integrated ranger. The test was previously disabling evrp and CCP, but now VRP[12], jump threading, and DOM can make value/mask adjustments visible to IPA so they must be disabled as well. We've run into these scenarios multiple times in the past-- any improvements to the ranger pipeline causes everyone to get smarter, making changes visible earlier in the pipeline. Aldy