> That doesn't sound like the right place to me. We want the same code to > be generated whether users write && and || directly or write corresponding > sequences of if conditions. In general we want to move away from > optimizing complicated expressions in fold-const, towards having GIMPLE > passes that detect the relevant patterns however they were written (and > without needing to combine GIMPLE back into trees for passing through the > old folder).
I'm not convinced that it's an "either or". Certainly the optimization needs to be in one of the GIMPLE passes for exactly the reason you give. Theoretically, fold-const need do nothing, but I think that's only in "theory". Giving later-pass optimizers better code when possible at least speeds up the process and at best produces better generated code. Obviously, one can't do everything everywhere, but I wouldn't reject doing something earlier just because it's also done later.