> Hm. In fold-const.c we try to make sure to produce the same result > as the target would for constant-folding shifts. Thus, Paolo, I think > what fold-const.c does is what we should assume for > !SHIFT_COUNT_TRUNCATED. No?
Unfortunately it is not so simple. fold-const.c is actually wrong, as witnessed by this program static inline int f (int s) { return 2 << s; } int main () { printf ("%d\n", f(33)); } which prints 4 at -O0 and 0 at -O2 on i686-pc-linux-gnu. This might mean either that it is easier than I thought (i.e. that all the subtleties of the targets could be ignored), but I want to play it safe and actually take the opportunity to fix the above problem (my current patch does fix it). Paolo