On Wed, Aug 9, 2017 at 3:38 PM, Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> wrote: > This is especially usefull when simplifying code > accessing bitfields. > > Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@xxxxxxxxx> > --- > simplify.c | 29 ++++++++++++++++++++++++++++- > validation/bitfield-size.c | 4 +--- > 2 files changed, 29 insertions(+), 4 deletions(-) > > diff --git a/simplify.c b/simplify.c > index 40d4f0068..e8bf1c171 100644 > --- a/simplify.c > +++ b/simplify.c > @@ -411,6 +411,32 @@ static int simplify_asr(struct instruction *insn, pseudo_t pseudo, long long val > return 0; > } > > +static int simplify_lsr(struct instruction *insn, pseudo_t pseudo, long long value) > +{ > + struct instruction *def; > + unsigned long long mask; > + > + if (!value) > + return replace_with_pseudo(insn, pseudo); > + switch (def_opcode(insn->src1)) { > + case OP_AND: > + // replace (A & M) >> S > + // by (A >> S) & (M >> S) A little bit suggestion base on my previous reading and question ask on this. When I first read the comment without reading the code, then I would wondering why (A>>S) & (M>>S) is simpler. The following code actually explain the constant mask very well. So the comment best understand if the code was read. Adding some comment on M is constant will help a lot in the comment. Not a reason to object the patch of course. Just suggestions. Chris -- To unsubscribe from this list: send the line "unsubscribe linux-sparse" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html