On Sun, Aug 26, 2018 at 10:00:46PM -0400, Julia Lawall wrote: > > > On Sun, 26 Aug 2018, Al Viro wrote: > > > On Sun, Aug 26, 2018 at 03:26:54PM -0700, Joe Perches wrote: > > > On Sun, 2018-08-26 at 22:24 +0100, Al Viro wrote: > > > > On Sun, Aug 26, 2018 at 11:57:57AM -0700, Joe Perches wrote: > > > > > > > > > > That, BTW, is why I hate the use of sizeof(*p) in kmalloc, etc. > > > > > > arguments. typeof is even worse in that respect. > > > > > > > > > > True. Semantic searches via tools like coccinelle could help here > > > > > but those searches are quite a bit slower than straightforward greps. > > > > > > > > Those searches are .config-sensitive as well, which can be much more > > > > unpleasant than being slow... > > > > > > Are they? Julia? > > > > They work pretty much on preprocessor output level; if something it ifdef'ed > > out on given config, it won't be seen... > > Coccinelle doesn't care what is ifdef'd out. It only misses the things it > can't parse. Very strange ifdefs could indeed cause that, but it should > be a minor problem.
OK, but... what does it do when it sees two definitions of a structure in different branches of #if/#else/#endif? I think I'm confused about what it can and cannot do; to restate the original problem: * we need to find all places where instances of given type are created. Assume it never is a member of struct/union/array and no static or auto duration instances exist - everything is dynamically allocated somewhere. Can coccinelle do that and if it can, what are the limitations?