Changes in directory llvm/lib/Analysis/DataStructure:
Local.cpp updated: 1.135 -> 1.136 --- Log message: Added a command line option that allows the user to specify a list of functions that allocate memory. --- Diffs of the changes: (+19 -0) Local.cpp | 19 +++++++++++++++++++ 1 files changed, 19 insertions(+) Index: llvm/lib/Analysis/DataStructure/Local.cpp diff -u llvm/lib/Analysis/DataStructure/Local.cpp:1.135 llvm/lib/Analysis/DataStructure/Local.cpp:1.136 --- llvm/lib/Analysis/DataStructure/Local.cpp:1.135 Tue Dec 6 12:04:30 2005 +++ llvm/lib/Analysis/DataStructure/Local.cpp Mon Dec 19 11:38:39 2005 @@ -39,6 +39,12 @@ TrackIntegersAsPointers("dsa-track-integers", cl::Hidden, cl::desc("If this is set, track integers as potential pointers")); +static cl::list<std::string> +AllocList("alloc-list", + cl::value_desc("list"), + cl::desc("List of functions that allocate memory from the heap"), + cl::CommaSeparated); + namespace llvm { namespace DS { // isPointerType - Return true if this type is big enough to hold a pointer. @@ -548,6 +554,19 @@ N->setModifiedMarker(); return; default: + // Determine if the called function is one of the specified heap + // allocation functions + for (cl::list<std::string>::iterator AllocFunc = AllocList.begin(), + LastAllocFunc = AllocList.end(); + AllocFunc != LastAllocFunc; + ++AllocFunc) { + if (F->getName() == *(AllocFunc)) { + setDestTo(*CS.getInstruction(), + createNode()->setHeapNodeMarker()->setModifiedMarker()); + return; + } + } + if (F->getName() == "calloc" || F->getName() == "posix_memalign" || F->getName() == "memalign" || F->getName() == "valloc") { setDestTo(*CS.getInstruction(), _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits