Re: [Cocci] keeping cast affects match?
On Wed, 17 Feb 2016, Wolfram Sang wrote: > > The isomorphism that allows ignoring a cast only works when the type > > metavariable is used only once. You uare using it twice. The fact that > > you wanted to add it indicates that you really want it to be there. > > Aha, I understand. Thank you for the explanation! > > > I think that everything should be fine if you just move the (T) out of the > > removed and added code. > > Much better! I still fall for thinking too much in terms of 'lines' > instead of 'tokens'. Prompt and proper response (again) much > appreciated. Thank you a ton! It's worth thinking twice if you find yourself removing something to add it back. Sometimes it's just more convenient, or even useful, because Coccinelle is pretty good now at inserting newlines in the right place for long argument lists, but when it is at one end or another of the pattern like this, it can be better to just pull the common part out into the context. julia ___ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci
Re: [Cocci] keeping cast affects match?
> The isomorphism that allows ignoring a cast only works when the type > metavariable is used only once. You uare using it twice. The fact that > you wanted to add it indicates that you really want it to be there. Aha, I understand. Thank you for the explanation! > I think that everything should be fine if you just move the (T) out of the > removed and added code. Much better! I still fall for thinking too much in terms of 'lines' instead of 'tokens'. Prompt and proper response (again) much appreciated. Thank you a ton! Wolfram signature.asc Description: PGP signature ___ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci
[Cocci] keeping cast affects match?
Hi, using Coccinelle v1.04 from Debian: $ spatch -version spatch version 1.0.4 with Python support and with PCRE support The following semantic patch produces a match with current linux-next: @@ expression table, dev; type T; @@ - (T)of_match_device(table, dev)->data + of_device_get_match_data(dev) $ spatch -sp_file minimal.cocci drivers/gpu/drm/rcar-du/ ... HANDLING: drivers/gpu/drm/rcar-du/rcar_du_drv.c diff = diff -u -p a/rcar_du_drv.c b/rcar_du_drv.c --- a/rcar_du_drv.c +++ b/rcar_du_drv.c @@ -183,7 +183,7 @@ static int rcar_du_load(struct drm_devic init_waitqueue_head(>commit.wait); rcdu->dev = >dev; - rcdu->info = of_match_device(rcar_du_of_table, rcdu->dev)->data; + rcdu->info = of_device_get_match_data(rcdu->dev); rcdu->ddev = dev; dev->dev_private = rcdu; However, the match goes away when I want to keep a potential cast (T) which I need in other places: @@ expression table, dev; type T; @@ - (T)of_match_device(table, dev)->data + (T)of_device_get_match_data(dev) I wonder why adding (T) to "+" affects the matching. Is this a bug or do I miss something? Thanks, Wolfram signature.asc Description: PGP signature ___ Cocci mailing list Cocci@systeme.lip6.fr https://systeme.lip6.fr/mailman/listinfo/cocci