[PATCH] D20776: [CFLAA] Teach cfl-aa to understand heap memory allocation
George Burgess IV via llvm-commits
llvm-commits at lists.llvm.org
Sun May 29 17:03:27 PDT 2016
george.burgess.iv added a comment.
Tests would be appreciated here, too, please. :)
Comment at: lib/Analysis/CFLAliasAnalysis.cpp:387
@@ +386,3 @@
+ // on the heap. Those kinds of functions do not introduce any aliases.
+ if (isAllocLikeFn(&Inst, &TLI) || isFreeCall(&Inst, &TLI))
This looks a bit sketchy, because `isAllocLikeFn` returns true for `strdup`/`strndup`, both of which copy arbitrary bits from a source to a destination. It also looks like BasicAA (line 766) opts to be conservative with `strdup`/`strndup`.
That said, given how we currently handle external function calls + conversions of pointers to ints (and back), I'm not sure if allowing strdup here can break anything that has a reasonable chance of success in the first place.
...So, I'm really tempted to say "please do the same thing as BasicAA here and add a TODO that we'll address when external values/other CFLAA features are in, so this doesn't come back to subtly bite us in the future."
More information about the llvm-commits