On 7/31/23 18:47, Martin Jambor wrote: > Hello, > > On Tue, Jul 18 2023, Aldy Hernandez wrote: >> 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. > > So can this be then converted into a new testcase that would test that > we can now derive something we could not in the past? Good idea. This is what I'm testing. I'm basically testing for "Propagated bits" in the ipa-cp pass which is where we are able to propagate more things. I will commit if it succeeds. Thanks. Aldy