[llvm-commits] [poolalloc] r126889 - /poolalloc/trunk/lib/DSA/DataStructure.cpp
Arushi Aggarwal
aggarwa4 at illinois.edu
Wed Mar 2 14:36:54 PST 2011
Author: aggarwa4
Date: Wed Mar 2 16:36:54 2011
New Revision: 126889
URL: http://llvm.org/viewvc/llvm-project?rev=126889&view=rev
Log:
When merging call sites, either the caller or
callee might have extra params. Handle each case
appropriately. See comments in code.
Modified:
poolalloc/trunk/lib/DSA/DataStructure.cpp
Modified: poolalloc/trunk/lib/DSA/DataStructure.cpp
URL: http://llvm.org/viewvc/llvm-project/poolalloc/trunk/lib/DSA/DataStructure.cpp?rev=126889&r1=126888&r2=126889&view=diff
==============================================================================
--- poolalloc/trunk/lib/DSA/DataStructure.cpp (original)
+++ poolalloc/trunk/lib/DSA/DataStructure.cpp Wed Mar 2 16:36:54 2011
@@ -983,8 +983,22 @@
for (unsigned a = 0; a != MinArgs; ++a)
merge(DestCS.getPtrArg(a), SrcCS.getPtrArg(a));
- for (unsigned a = MinArgs, e = SrcCS.getNumPtrArgs(); a != e; ++a)
- DestCS.addPtrArg(getClonedNH(SrcCS.getPtrArg(a)));
+ for (unsigned a = MinArgs, e = SrcCS.getNumPtrArgs(); a != e; ++a) {
+ // If a call site passes more params, ignore the extra params.
+ // If the called function is varargs, merge the extra params, with
+ // the varargs node.
+ if(DestCS.getVAVal() != NULL) {
+ merge(DestCS.getVAVal(), SrcCS.getPtrArg(a));
+ }
+ }
+
+ for (unsigned a = MinArgs, e = DestCS.getNumPtrArgs(); a!=e; ++a) {
+ // If a call site passes less explicit params, than the function needs
+ // But passes params through a varargs node, merge those in.
+ if(SrcCS.getVAVal() != NULL) {
+ merge(DestCS.getPtrArg(a), SrcCS.getVAVal());
+ }
+ }
}
DSCallSite ReachabilityCloner::cloneCallSite(const DSCallSite& SrcCS) {
More information about the llvm-commits
mailing list