On Sun, Sep 06, 2020 at 10:54:25PM +0100, Ramsay Jones wrote: > > > > diff --git a/validation/optim/and-shl-or-and0.c b/validation/optim/and-shl-or-and0.c > > new file mode 100644 > > index 000000000000..298dcb434fc7 > > --- /dev/null > > +++ b/validation/optim/and-shl-or-and0.c > > @@ -0,0 +1,15 @@ > > +// => (b << 12) & 0xfff00000 > > +unsigned and_shl_or_and0(unsigned a, unsigned b) > > +{ > > + return (((a & 0xfff00000) | b) << 12) & 0xfff00000; > > +} > > + > > +/* > > + * check-name: and-shl-or-and0 > > + * check-command: test-linearize -Wno-decl $file > > + * > > + * check-output-ignore > > + * check-output-excludes: or\\. > > + * check-output-excludes: lsr\\. > > Hmm, this still doesn't sit right - have you discovered the > reason for this? Sorry, I don't understand what I can add. Such expressions are simplified into something where the OR and the LSR are absent. This is what is checked by the test. -- Luc